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