source: node_modules/react-syntax-highlighter/dist/esm/async-syntax-highlighter.js@ 65b6638

main
Last change on this file since 65b6638 was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 7.1 KB
Line 
1import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2import _extends from "@babel/runtime/helpers/extends";
3import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4import _createClass from "@babel/runtime/helpers/createClass";
5import _inherits from "@babel/runtime/helpers/inherits";
6import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8import _defineProperty from "@babel/runtime/helpers/defineProperty";
9import _regeneratorRuntime from "@babel/runtime/regenerator";
10
11function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
12
13function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
14
15import React from 'react';
16import highlight from './highlight';
17export default (function (options) {
18 var loader = options.loader,
19 isLanguageRegistered = options.isLanguageRegistered,
20 registerLanguage = options.registerLanguage,
21 languageLoaders = options.languageLoaders,
22 noAsyncLoadingLanguages = options.noAsyncLoadingLanguages;
23
24 var ReactAsyncHighlighter = /*#__PURE__*/function (_React$PureComponent) {
25 _inherits(ReactAsyncHighlighter, _React$PureComponent);
26
27 var _super = _createSuper(ReactAsyncHighlighter);
28
29 function ReactAsyncHighlighter() {
30 _classCallCheck(this, ReactAsyncHighlighter);
31
32 return _super.apply(this, arguments);
33 }
34
35 _createClass(ReactAsyncHighlighter, [{
36 key: "componentDidUpdate",
37 value: function componentDidUpdate() {
38 if (!ReactAsyncHighlighter.isRegistered(this.props.language) && languageLoaders) {
39 this.loadLanguage();
40 }
41 }
42 }, {
43 key: "componentDidMount",
44 value: function componentDidMount() {
45 var _this = this;
46
47 if (!ReactAsyncHighlighter.astGeneratorPromise) {
48 ReactAsyncHighlighter.loadAstGenerator();
49 }
50
51 if (!ReactAsyncHighlighter.astGenerator) {
52 ReactAsyncHighlighter.astGeneratorPromise.then(function () {
53 _this.forceUpdate();
54 });
55 }
56
57 if (!ReactAsyncHighlighter.isRegistered(this.props.language) && languageLoaders) {
58 this.loadLanguage();
59 }
60 }
61 }, {
62 key: "loadLanguage",
63 value: function loadLanguage() {
64 var _this2 = this;
65
66 var language = this.props.language;
67
68 if (language === 'text') {
69 return;
70 }
71
72 ReactAsyncHighlighter.loadLanguage(language).then(function () {
73 return _this2.forceUpdate();
74 })["catch"](function () {});
75 }
76 }, {
77 key: "normalizeLanguage",
78 value: function normalizeLanguage(language) {
79 return ReactAsyncHighlighter.isSupportedLanguage(language) ? language : 'text';
80 }
81 }, {
82 key: "render",
83 value: function render() {
84 return /*#__PURE__*/React.createElement(ReactAsyncHighlighter.highlightInstance, _extends({}, this.props, {
85 language: this.normalizeLanguage(this.props.language),
86 astGenerator: ReactAsyncHighlighter.astGenerator
87 }));
88 }
89 }], [{
90 key: "preload",
91 value: function preload() {
92 return ReactAsyncHighlighter.loadAstGenerator();
93 }
94 }, {
95 key: "loadLanguage",
96 value: function () {
97 var _loadLanguage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(language) {
98 var languageLoader;
99 return _regeneratorRuntime.wrap(function _callee$(_context) {
100 while (1) {
101 switch (_context.prev = _context.next) {
102 case 0:
103 languageLoader = languageLoaders[language];
104
105 if (!(typeof languageLoader === 'function')) {
106 _context.next = 5;
107 break;
108 }
109
110 return _context.abrupt("return", languageLoader(ReactAsyncHighlighter.registerLanguage));
111
112 case 5:
113 throw new Error("Language ".concat(language, " not supported"));
114
115 case 6:
116 case "end":
117 return _context.stop();
118 }
119 }
120 }, _callee);
121 }));
122
123 function loadLanguage(_x) {
124 return _loadLanguage.apply(this, arguments);
125 }
126
127 return loadLanguage;
128 }()
129 }, {
130 key: "isSupportedLanguage",
131 value: function isSupportedLanguage(language) {
132 return ReactAsyncHighlighter.isRegistered(language) || typeof languageLoaders[language] === 'function';
133 }
134 }, {
135 key: "loadAstGenerator",
136 value: function loadAstGenerator() {
137 ReactAsyncHighlighter.astGeneratorPromise = loader().then(function (astGenerator) {
138 ReactAsyncHighlighter.astGenerator = astGenerator;
139
140 if (registerLanguage) {
141 ReactAsyncHighlighter.languages.forEach(function (language, name) {
142 return registerLanguage(astGenerator, name, language);
143 });
144 }
145 });
146 return ReactAsyncHighlighter.astGeneratorPromise;
147 }
148 }]);
149
150 return ReactAsyncHighlighter;
151 }(React.PureComponent);
152
153 _defineProperty(ReactAsyncHighlighter, "astGenerator", null);
154
155 _defineProperty(ReactAsyncHighlighter, "highlightInstance", highlight(null, {}));
156
157 _defineProperty(ReactAsyncHighlighter, "astGeneratorPromise", null);
158
159 _defineProperty(ReactAsyncHighlighter, "languages", new Map());
160
161 _defineProperty(ReactAsyncHighlighter, "supportedLanguages", options.supportedLanguages || Object.keys(languageLoaders || {}));
162
163 _defineProperty(ReactAsyncHighlighter, "isRegistered", function (language) {
164 if (noAsyncLoadingLanguages) {
165 return true;
166 }
167
168 if (!registerLanguage) {
169 throw new Error("Current syntax highlighter doesn't support registration of languages");
170 }
171
172 if (!ReactAsyncHighlighter.astGenerator) {
173 // Ast generator not available yet, but language will be registered once it is.
174 return ReactAsyncHighlighter.languages.has(language);
175 }
176
177 return isLanguageRegistered(ReactAsyncHighlighter.astGenerator, language);
178 });
179
180 _defineProperty(ReactAsyncHighlighter, "registerLanguage", function (name, language) {
181 if (!registerLanguage) {
182 throw new Error("Current syntax highlighter doesn't support registration of languages");
183 }
184
185 if (ReactAsyncHighlighter.astGenerator) {
186 return registerLanguage(ReactAsyncHighlighter.astGenerator, name, language);
187 } else {
188 ReactAsyncHighlighter.languages.set(name, language);
189 }
190 });
191
192 return ReactAsyncHighlighter;
193});
Note: See TracBrowser for help on using the repository browser.