@lobehub/editor 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/es/editor-kernel/react/useLexicalNodeSelection.d.ts +1 -1
  2. package/es/editor-kernel/react/useLexicalNodeSelection.js +22 -1
  3. package/es/index.d.ts +1 -0
  4. package/es/index.js +1 -0
  5. package/es/locale/index.d.ts +10 -0
  6. package/es/locale/index.js +10 -0
  7. package/es/plugins/codemirror-block/command/index.d.ts +9 -0
  8. package/es/plugins/codemirror-block/command/index.js +46 -0
  9. package/es/plugins/codemirror-block/index.d.ts +2 -0
  10. package/es/plugins/codemirror-block/index.js +2 -0
  11. package/es/plugins/codemirror-block/lib/index.d.ts +58 -0
  12. package/es/plugins/codemirror-block/lib/index.js +40 -0
  13. package/es/plugins/codemirror-block/lib/mode.d.ts +25 -0
  14. package/es/plugins/codemirror-block/lib/mode.js +416 -0
  15. package/es/plugins/codemirror-block/node/CodeMirrorNode.d.ts +46 -0
  16. package/es/plugins/codemirror-block/node/CodeMirrorNode.js +343 -0
  17. package/es/plugins/codemirror-block/plugin/index.d.ts +8 -0
  18. package/es/plugins/codemirror-block/plugin/index.js +113 -0
  19. package/es/plugins/codemirror-block/react/CodemirrorNode.d.ts +10 -0
  20. package/es/plugins/codemirror-block/react/CodemirrorNode.js +323 -0
  21. package/es/plugins/codemirror-block/react/ReactCodemirrorNode.d.ts +4 -0
  22. package/es/plugins/codemirror-block/react/ReactCodemirrorNode.js +34 -0
  23. package/es/plugins/codemirror-block/react/components/CopyButton.d.ts +5 -0
  24. package/es/plugins/codemirror-block/react/components/CopyButton.js +35 -0
  25. package/es/plugins/codemirror-block/react/components/LanguageSelect.d.ts +8 -0
  26. package/es/plugins/codemirror-block/react/components/LanguageSelect.js +77 -0
  27. package/es/plugins/codemirror-block/react/components/MoreOptions.d.ts +16 -0
  28. package/es/plugins/codemirror-block/react/components/MoreOptions.js +79 -0
  29. package/es/plugins/codemirror-block/react/components/Toolbar.d.ts +16 -0
  30. package/es/plugins/codemirror-block/react/components/Toolbar.js +56 -0
  31. package/es/plugins/codemirror-block/react/components/style.d.ts +3 -0
  32. package/es/plugins/codemirror-block/react/components/style.js +9 -0
  33. package/es/plugins/codemirror-block/react/index.d.ts +1 -0
  34. package/es/plugins/codemirror-block/react/index.js +1 -0
  35. package/es/plugins/codemirror-block/react/style.d.ts +1 -0
  36. package/es/plugins/codemirror-block/react/style.js +8 -0
  37. package/es/plugins/codemirror-block/react/theme.d.ts +133 -0
  38. package/es/plugins/codemirror-block/react/theme.js +158 -0
  39. package/es/plugins/codemirror-block/react/type.d.ts +3 -0
  40. package/es/plugins/codemirror-block/react/type.js +1 -0
  41. package/package.json +4 -2
@@ -0,0 +1,343 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
6
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
8
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
9
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
10
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
11
+ function _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
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
13
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
14
+ function _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; } }
15
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
16
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
18
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
22
+ /* eslint-disable @typescript-eslint/no-use-before-define */
23
+ import { addClassNamesToElement } from '@lexical/utils';
24
+ import { $applyNodeReplacement, DecoratorNode, isHTMLElement } from 'lexical';
25
+ import { getKernelFromEditor } from "../../../editor-kernel/utils";
26
+ var LANGUAGE_DATA_ATTRIBUTE = 'data-language';
27
+ var THEME_DATA_ATTRIBUTE = 'data-theme';
28
+ var DEFAULT_OPTIONS = {
29
+ indentWithTabs: false,
30
+ lineNumbers: false,
31
+ tabSize: 2
32
+ };
33
+ function hasChildDOMNodeTag(node, tagName) {
34
+ var _iterator = _createForOfIteratorHelper(node.childNodes),
35
+ _step;
36
+ try {
37
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
38
+ var child = _step.value;
39
+ if (isHTMLElement(child) && child.tagName === tagName) {
40
+ return true;
41
+ }
42
+ hasChildDOMNodeTag(child, tagName);
43
+ }
44
+ } catch (err) {
45
+ _iterator.e(err);
46
+ } finally {
47
+ _iterator.f();
48
+ }
49
+ return false;
50
+ }
51
+ function isGitHubCodeTable(table) {
52
+ return table.classList.contains('js-file-line-container');
53
+ }
54
+ function isGitHubCodeCell(cell) {
55
+ return cell.classList.contains('js-file-line');
56
+ }
57
+ export var CodeMirrorNode = /*#__PURE__*/function (_DecoratorNode) {
58
+ _inherits(CodeMirrorNode, _DecoratorNode);
59
+ var _super = _createSuper(CodeMirrorNode);
60
+ function CodeMirrorNode(lang, code, codeTheme, options, key) {
61
+ var _this;
62
+ _classCallCheck(this, CodeMirrorNode);
63
+ _this = _super.call(this, key);
64
+ _defineProperty(_assertThisInitialized(_this), "__lang", void 0);
65
+ _defineProperty(_assertThisInitialized(_this), "__code", void 0);
66
+ _defineProperty(_assertThisInitialized(_this), "__codeTheme", void 0);
67
+ _defineProperty(_assertThisInitialized(_this), "__options", void 0);
68
+ _this.__lang = lang;
69
+ _this.__code = code;
70
+ _this.__codeTheme = codeTheme;
71
+ _this.__options = options;
72
+ return _this;
73
+ }
74
+ _createClass(CodeMirrorNode, [{
75
+ key: "lang",
76
+ get: function get() {
77
+ return this.__lang;
78
+ }
79
+ }, {
80
+ key: "code",
81
+ get: function get() {
82
+ return this.__code;
83
+ }
84
+ }, {
85
+ key: "codeTheme",
86
+ get: function get() {
87
+ return this.__codeTheme;
88
+ }
89
+ }, {
90
+ key: "options",
91
+ get: function get() {
92
+ return this.__options;
93
+ }
94
+ }, {
95
+ key: "exportDOM",
96
+ value: function exportDOM(editor) {
97
+ var element = document.createElement('pre');
98
+ addClassNamesToElement(element, editor._config.theme.code);
99
+ element.setAttribute('spellcheck', 'false');
100
+ var language = this.__lang;
101
+ if (language) {
102
+ element.setAttribute(LANGUAGE_DATA_ATTRIBUTE, language);
103
+ }
104
+ var theme = this.__codeTheme;
105
+ if (theme) {
106
+ element.setAttribute(THEME_DATA_ATTRIBUTE, theme);
107
+ }
108
+ element.textContent = this.__code;
109
+ return {
110
+ element: element
111
+ };
112
+ }
113
+ }, {
114
+ key: "exportJSON",
115
+ value: function exportJSON() {
116
+ return _objectSpread(_objectSpread({}, _get(_getPrototypeOf(CodeMirrorNode.prototype), "exportJSON", this).call(this)), {}, {
117
+ code: this.code,
118
+ codeTheme: this.codeTheme,
119
+ language: this.lang,
120
+ options: this.options
121
+ });
122
+ }
123
+ }, {
124
+ key: "setLang",
125
+ value: function setLang(lang) {
126
+ var writer = this.getWritable();
127
+ writer.__lang = lang;
128
+ return this;
129
+ }
130
+ }, {
131
+ key: "setCode",
132
+ value: function setCode(code) {
133
+ var writer = this.getWritable();
134
+ writer.__code = code;
135
+ return this;
136
+ }
137
+ }, {
138
+ key: "setCodeTheme",
139
+ value: function setCodeTheme(codeTheme) {
140
+ var writer = this.getWritable();
141
+ writer.__codeTheme = codeTheme;
142
+ return this;
143
+ }
144
+ }, {
145
+ key: "setTabSize",
146
+ value: function setTabSize(tabSize) {
147
+ var writer = this.getWritable();
148
+ writer.__options.tabSize = tabSize;
149
+ return this;
150
+ }
151
+ }, {
152
+ key: "setIndentWithTabs",
153
+ value: function setIndentWithTabs(indentWithTabs) {
154
+ var writer = this.getWritable();
155
+ writer.__options.indentWithTabs = indentWithTabs;
156
+ return this;
157
+ }
158
+ }, {
159
+ key: "setLineNumbers",
160
+ value: function setLineNumbers(lineNumbers) {
161
+ var writer = this.getWritable();
162
+ writer.__options.lineNumbers = lineNumbers;
163
+ return this;
164
+ }
165
+ }, {
166
+ key: "createDOM",
167
+ value: function createDOM(config) {
168
+ var element = document.createElement('div');
169
+ addClassNamesToElement(element, config.theme.hr);
170
+ return element;
171
+ }
172
+ }, {
173
+ key: "getTextContent",
174
+ value: function getTextContent() {
175
+ return '\n';
176
+ }
177
+ }, {
178
+ key: "isInline",
179
+ value: function isInline() {
180
+ return false;
181
+ }
182
+ }, {
183
+ key: "updateDOM",
184
+ value: function updateDOM() {
185
+ return false;
186
+ }
187
+ }, {
188
+ key: "decorate",
189
+ value: function decorate(editor) {
190
+ var _getKernelFromEditor;
191
+ var decorator = (_getKernelFromEditor = getKernelFromEditor(editor)) === null || _getKernelFromEditor === void 0 ? void 0 : _getKernelFromEditor.getDecorator('codemirror');
192
+ if (!decorator) return null;
193
+
194
+ // Handle both function and object decorator types
195
+ if (typeof decorator === 'function') {
196
+ return decorator(this, editor);
197
+ } else {
198
+ return decorator.render(this, editor);
199
+ }
200
+ }
201
+ }], [{
202
+ key: "getType",
203
+ value: function getType() {
204
+ return 'code';
205
+ }
206
+ }, {
207
+ key: "clone",
208
+ value: function clone(node) {
209
+ return new CodeMirrorNode(node.__lang, node.__code, node.__codeTheme, node.__options, node.__key);
210
+ }
211
+ }, {
212
+ key: "importJSON",
213
+ value: function importJSON(serializedNode) {
214
+ var code = serializedNode.code;
215
+ if ('children' in serializedNode) {
216
+ var _serializedNode$child;
217
+ // @ts-expect-error not error
218
+ code = ((_serializedNode$child = serializedNode.children) === null || _serializedNode$child === void 0 ? void 0 : _serializedNode$child.map(function (child) {
219
+ return child.text;
220
+ }).join('')) || '';
221
+ }
222
+ return $createCodeMirrorNode(serializedNode.language, code, serializedNode.codeTheme, serializedNode.options).updateFromJSON(serializedNode);
223
+ }
224
+ }, {
225
+ key: "importDOM",
226
+ value: function importDOM() {
227
+ return {
228
+ // Typically <pre> is used for code blocks, and <code> for inline code styles
229
+ // but if it's a multi line <code> we'll create a block. Pass through to
230
+ // inline format handled by TextNode otherwise.
231
+ code: function code(node) {
232
+ var isMultiLine = node.textContent !== null && (/\r?\n/.test(node.textContent) || hasChildDOMNodeTag(node, 'BR'));
233
+ return isMultiLine ? {
234
+ conversion: $convertPreElement,
235
+ priority: 1
236
+ } : null;
237
+ },
238
+ div: function div() {
239
+ return {
240
+ conversion: $convertDivElement,
241
+ priority: 1
242
+ };
243
+ },
244
+ pre: function pre() {
245
+ return {
246
+ conversion: $convertPreElement,
247
+ priority: 0
248
+ };
249
+ },
250
+ table: function table(node) {
251
+ var table = node;
252
+ // domNode is a <table> since we matched it by nodeName
253
+ if (isGitHubCodeTable(table)) {
254
+ return {
255
+ conversion: $convertTableElement,
256
+ priority: 3
257
+ };
258
+ }
259
+ return null;
260
+ },
261
+ td: function td(node) {
262
+ // element is a <td> since we matched it by nodeName
263
+ var td = node;
264
+ var table = td.closest('table');
265
+ if (isGitHubCodeCell(td) || table && isGitHubCodeTable(table)) {
266
+ // Return a no-op if it's a table cell in a code table, but not a code line.
267
+ // Otherwise it'll fall back to the T
268
+ return {
269
+ conversion: convertCodeNoop,
270
+ priority: 3
271
+ };
272
+ }
273
+ return null;
274
+ },
275
+ tr: function tr(node) {
276
+ // element is a <tr> since we matched it by nodeName
277
+ var tr = node;
278
+ var table = tr.closest('table');
279
+ if (table && isGitHubCodeTable(table)) {
280
+ return {
281
+ conversion: convertCodeNoop,
282
+ priority: 3
283
+ };
284
+ }
285
+ return null;
286
+ }
287
+ };
288
+ }
289
+ }]);
290
+ return CodeMirrorNode;
291
+ }(DecoratorNode);
292
+ export function $createCodeMirrorNode(lang) {
293
+ var code = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
294
+ var codeTheme = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'default';
295
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_OPTIONS;
296
+ return $applyNodeReplacement(new CodeMirrorNode(lang, code, codeTheme, options));
297
+ }
298
+ function isCodeElement(div) {
299
+ return div.style.fontFamily.match('monospace') !== null;
300
+ }
301
+ function isCodeChildElement(node) {
302
+ var parent = node.parentElement;
303
+ while (parent !== null) {
304
+ if (isCodeElement(parent)) {
305
+ return true;
306
+ }
307
+ parent = parent.parentElement;
308
+ }
309
+ return false;
310
+ }
311
+ function $convertDivElement(domNode) {
312
+ // domNode is a <div> since we matched it by nodeName
313
+ var div = domNode;
314
+ var isCode = isCodeElement(div);
315
+ if (!isCode && !isCodeChildElement(div)) {
316
+ return {
317
+ node: null
318
+ };
319
+ }
320
+ return {
321
+ node: isCode ? $createCodeMirrorNode('plain', domNode.textContent || '', '') : null
322
+ };
323
+ }
324
+ function $convertTableElement() {
325
+ return {
326
+ node: $createCodeMirrorNode('plain', '', '')
327
+ };
328
+ }
329
+ function $convertPreElement(domNode) {
330
+ var language = domNode.getAttribute(LANGUAGE_DATA_ATTRIBUTE);
331
+ var codeTheme = domNode.getAttribute(THEME_DATA_ATTRIBUTE) || '';
332
+ return {
333
+ node: $createCodeMirrorNode(language || 'plain', domNode.textContent || '', codeTheme)
334
+ };
335
+ }
336
+ export function $isCodeMirrorNode(node) {
337
+ return node.getType() === CodeMirrorNode.getType();
338
+ }
339
+ function convertCodeNoop() {
340
+ return {
341
+ node: null
342
+ };
343
+ }
@@ -0,0 +1,8 @@
1
+ import { LexicalEditor } from 'lexical';
2
+ import { IEditorPluginConstructor } from "../../../types";
3
+ import { CodeMirrorNode } from '../node/CodeMirrorNode';
4
+ export interface CodemirrorPluginOptions {
5
+ decorator: (node: CodeMirrorNode, editor: LexicalEditor) => any;
6
+ theme?: string;
7
+ }
8
+ export declare const CodemirrorPlugin: IEditorPluginConstructor<CodemirrorPluginOptions>;
@@ -0,0 +1,113 @@
1
+ var _class;
2
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
5
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
6
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
7
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
8
+ function _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); }; }
9
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
10
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
11
+ function _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; } }
12
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
13
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
15
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
+ import { $createNodeSelection, $setSelection } from 'lexical';
17
+ import { INodeHelper } from "../../../editor-kernel/inode/helper";
18
+ import { KernelPlugin } from "../../../editor-kernel/plugin";
19
+ import { ILitexmlService } from "../../litexml/service/litexml-service";
20
+ import { IMarkdownShortCutService } from "../../markdown/service/shortcut";
21
+ import { registerCodeMirrorCommand } from "../command";
22
+ import { modeMatch } from "../lib/mode";
23
+ import { $createCodeMirrorNode, CodeMirrorNode } from "../node/CodeMirrorNode";
24
+
25
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
26
+
27
+ export var CodemirrorPlugin = (_class = /*#__PURE__*/function (_KernelPlugin) {
28
+ _inherits(CodemirrorPlugin, _KernelPlugin);
29
+ var _super = _createSuper(CodemirrorPlugin);
30
+ function CodemirrorPlugin(kernel, config) {
31
+ var _this;
32
+ _classCallCheck(this, CodemirrorPlugin);
33
+ _this = _super.call(this);
34
+ // Register the horizontal rule node
35
+ _this.kernel = kernel;
36
+ kernel.registerNodes([CodeMirrorNode]);
37
+ kernel.registerThemes({
38
+ hr: (config === null || config === void 0 ? void 0 : config.theme) || ''
39
+ });
40
+ _this.registerDecorator(kernel, 'codemirror', function (node, editor) {
41
+ return config !== null && config !== void 0 && config.decorator ? config.decorator(node, editor) : null;
42
+ });
43
+ return _this;
44
+ }
45
+ _createClass(CodemirrorPlugin, [{
46
+ key: "onInit",
47
+ value: function onInit(editor) {
48
+ this.register(registerCodeMirrorCommand(editor));
49
+ this.registerMarkdown();
50
+ this.registerLiteXml();
51
+ }
52
+ }, {
53
+ key: "registerLiteXml",
54
+ value: function registerLiteXml() {
55
+ var litexmlService = this.kernel.requireService(ILitexmlService);
56
+ if (!litexmlService) {
57
+ return;
58
+ }
59
+ litexmlService.registerXMLWriter(CodeMirrorNode.getType(), function (node, ctx) {
60
+ var codeMirrorNode = node;
61
+ var xmlNode = ctx.createXmlNode('code', {
62
+ lang: codeMirrorNode.lang || 'plain'
63
+ }, codeMirrorNode.code);
64
+ return xmlNode;
65
+ });
66
+ litexmlService.registerXMLReader('code', function (xmlElement, children) {
67
+ var text = children.map(function (v) {
68
+ return v.text || '';
69
+ }).join('');
70
+ var language = xmlElement.getAttribute('lang') || 'plain';
71
+ return INodeHelper.createTypeNode('code', {
72
+ code: text || xmlElement.textContent || '',
73
+ language: modeMatch(language),
74
+ version: 1
75
+ });
76
+ });
77
+ }
78
+ }, {
79
+ key: "registerMarkdown",
80
+ value: function registerMarkdown() {
81
+ var markdownService = this.kernel.requireService(IMarkdownShortCutService);
82
+ markdownService === null || markdownService === void 0 || markdownService.registerMarkdownShortCut({
83
+ regExp: /^(```|···)(.+)?$/,
84
+ replace: function replace(parentNode, _, match) {
85
+ var code = $createCodeMirrorNode(modeMatch(match[2]), '');
86
+ parentNode.replace(code);
87
+ var sel = $createNodeSelection();
88
+ sel.add(code.getKey());
89
+ $setSelection(sel);
90
+ },
91
+ trigger: 'enter',
92
+ type: 'element'
93
+ });
94
+ markdownService === null || markdownService === void 0 || markdownService.registerMarkdownWriter(CodeMirrorNode.getType(), function (ctx, node) {
95
+ if (node instanceof CodeMirrorNode) {
96
+ ctx.appendLine('```' + node.lang);
97
+ ctx.appendLine('\n');
98
+ ctx.appendLine(node.code);
99
+ ctx.appendLine('\n```\n');
100
+ }
101
+ });
102
+ markdownService === null || markdownService === void 0 || markdownService.registerMarkdownReader('code', function (node) {
103
+ var language = node.lang ? modeMatch(node.lang) : 'plain';
104
+ return INodeHelper.createTypeNode('code', {
105
+ code: node.value,
106
+ language: language,
107
+ version: 1
108
+ });
109
+ });
110
+ }
111
+ }]);
112
+ return CodemirrorPlugin;
113
+ }(KernelPlugin), _defineProperty(_class, "pluginName", 'CodemirrorPlugin'), _class);
@@ -0,0 +1,10 @@
1
+ import { LexicalEditor } from 'lexical';
2
+ import { type FC } from 'react';
3
+ import { CodeMirrorNode } from '../node/CodeMirrorNode';
4
+ interface ReactCodemirrorNodeProps {
5
+ className?: string;
6
+ editor: LexicalEditor;
7
+ node: CodeMirrorNode;
8
+ }
9
+ declare const ReactCodemirrorNode: FC<ReactCodemirrorNodeProps>;
10
+ export default ReactCodemirrorNode;