@lexical/code 0.14.3 → 0.14.4

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.
@@ -6,6 +6,7 @@
6
6
  *
7
7
  */
8
8
  import type { EditorConfig, LexicalNode, LineBreakNode, NodeKey, SerializedTextNode, Spread, TabNode } from 'lexical';
9
+ import './CodeHighlighterPrism';
9
10
  import { ElementNode, TextNode } from 'lexical';
10
11
  export declare const DEFAULT_CODE_LANGUAGE = "javascript";
11
12
  type SerializedCodeHighlightNode = Spread<{
@@ -6,6 +6,7 @@
6
6
  *
7
7
  */
8
8
  import type { LexicalEditor, LineBreakNode } from 'lexical';
9
+ import './CodeHighlighterPrism';
9
10
  import { TabNode } from 'lexical';
10
11
  import { CodeHighlightNode } from './CodeHighlightNode';
11
12
  type TokenContent = string | Token | (string | Token)[];
@@ -5,6 +5,18 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- import * as Prism from 'prismjs';
9
- export declare const reifyPrismLanguages: () => unknown;
10
- export { Prism };
8
+ import 'prismjs';
9
+ import 'prismjs/components/prism-clike';
10
+ import 'prismjs/components/prism-javascript';
11
+ import 'prismjs/components/prism-markup';
12
+ import 'prismjs/components/prism-markdown';
13
+ import 'prismjs/components/prism-c';
14
+ import 'prismjs/components/prism-css';
15
+ import 'prismjs/components/prism-objectivec';
16
+ import 'prismjs/components/prism-sql';
17
+ import 'prismjs/components/prism-python';
18
+ import 'prismjs/components/prism-rust';
19
+ import 'prismjs/components/prism-swift';
20
+ import 'prismjs/components/prism-typescript';
21
+ import 'prismjs/components/prism-java';
22
+ import 'prismjs/components/prism-cpp';
package/CodeNode.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import type { CodeHighlightNode } from '@lexical/code';
9
9
  import type { DOMConversionMap, DOMExportOutput, EditorConfig, LexicalEditor, LexicalNode, NodeKey, ParagraphNode, RangeSelection, SerializedElementNode, Spread, TabNode } from 'lexical';
10
+ import './CodeHighlighterPrism';
10
11
  import { ElementNode } from 'lexical';
11
12
  export type SerializedCodeNode = Spread<{
12
13
  language: string | null | undefined;
@@ -6,23 +6,23 @@
6
6
  */
7
7
  'use strict';
8
8
 
9
+ require('prismjs');
10
+ require('prismjs/components/prism-clike');
11
+ require('prismjs/components/prism-javascript');
12
+ require('prismjs/components/prism-markup');
13
+ require('prismjs/components/prism-markdown');
14
+ require('prismjs/components/prism-c');
15
+ require('prismjs/components/prism-css');
16
+ require('prismjs/components/prism-objectivec');
17
+ require('prismjs/components/prism-sql');
18
+ require('prismjs/components/prism-python');
19
+ require('prismjs/components/prism-rust');
20
+ require('prismjs/components/prism-swift');
21
+ require('prismjs/components/prism-typescript');
22
+ require('prismjs/components/prism-java');
23
+ require('prismjs/components/prism-cpp');
9
24
  var utils = require('@lexical/utils');
10
25
  var lexical = require('lexical');
11
- var Prism = require('prismjs');
12
- var prism_clike = require('prismjs/components/prism-clike');
13
- var prism_javascript = require('prismjs/components/prism-javascript');
14
- var prism_markup = require('prismjs/components/prism-markup');
15
- var prism_markdown = require('prismjs/components/prism-markdown');
16
- var prism_c = require('prismjs/components/prism-c');
17
- var prism_css = require('prismjs/components/prism-css');
18
- var prism_objectivec = require('prismjs/components/prism-objectivec');
19
- var prism_sql = require('prismjs/components/prism-sql');
20
- var prism_python = require('prismjs/components/prism-python');
21
- var prism_rust = require('prismjs/components/prism-rust');
22
- var prism_swift = require('prismjs/components/prism-swift');
23
- var prism_typescript = require('prismjs/components/prism-typescript');
24
- var prism_java = require('prismjs/components/prism-java');
25
- var prism_cpp = require('prismjs/components/prism-cpp');
26
26
 
27
27
  /**
28
28
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -32,11 +32,23 @@ var prism_cpp = require('prismjs/components/prism-cpp');
32
32
  *
33
33
  */
34
34
 
35
- // Avoid tree-shaking
36
- const reifyPrismLanguages = () => ({
37
- Prism,
38
- languages: [prism_clike, prism_javascript, prism_markup, prism_markdown, prism_c, prism_css, prism_objectivec, prism_sql, prism_python, prism_rust, prism_swift, prism_typescript, prism_java, prism_cpp]
39
- });
35
+ /**
36
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
37
+ *
38
+ * This source code is licensed under the MIT license found in the
39
+ * LICENSE file in the root directory of this source tree.
40
+ *
41
+ */
42
+
43
+ // invariant(condition, message) will refine types based on "condition", and
44
+ // if "condition" is false will throw an error. This function is special-cased
45
+ // in flow itself, so we can't name it anything else.
46
+ function invariant(cond, message, ...args) {
47
+ if (cond) {
48
+ return;
49
+ }
50
+ throw new Error('Internal Lexical error: invariant() is meant to be replaced at compile ' + 'time. There is no runtime version. Error: ' + message);
51
+ }
40
52
 
41
53
  /**
42
54
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -47,7 +59,7 @@ const reifyPrismLanguages = () => ({
47
59
  */
48
60
  const mapToPrismLanguage = language => {
49
61
  // eslint-disable-next-line no-prototype-builtins
50
- return language != null && Prism.languages.hasOwnProperty(language) ? language : undefined;
62
+ return language != null && window.Prism.languages.hasOwnProperty(language) ? language : undefined;
51
63
  };
52
64
  function hasChildDOMNodeTag(node, tagName) {
53
65
  for (const child of node.childNodes) {
@@ -403,10 +415,10 @@ function getLanguageFriendlyName(lang) {
403
415
  return CODE_LANGUAGE_FRIENDLY_NAME_MAP[_lang] || _lang;
404
416
  }
405
417
  const getDefaultCodeLanguage = () => DEFAULT_CODE_LANGUAGE;
406
- const getCodeLanguages = () => Object.keys(Prism.languages).filter(
418
+ const getCodeLanguages = () => Object.keys(window.Prism.languages).filter(
407
419
  // Prism has several language helpers mixed into languages object
408
420
  // so filtering them out here to get langs list
409
- language => typeof Prism.languages[language] !== 'function').sort();
421
+ language => typeof window.Prism.languages[language] !== 'function').sort();
410
422
 
411
423
  /** @noInheritDoc */
412
424
  class CodeHighlightNode extends lexical.TextNode {
@@ -515,7 +527,7 @@ function getLastCodeNodeOfLine(anchor) {
515
527
  const PrismTokenizer = {
516
528
  defaultLanguage: DEFAULT_CODE_LANGUAGE,
517
529
  tokenize(code, language) {
518
- return Prism.tokenize(code, Prism.languages[language || ''] || Prism.languages[this.defaultLanguage]);
530
+ return window.Prism.tokenize(code, window.Prism.languages[language || ''] || window.Prism.languages[this.defaultLanguage]);
519
531
  }
520
532
  };
521
533
  function getStartOfCodeInLine(anchor, offset) {
@@ -1093,7 +1105,6 @@ function handleMoveTo(type, event) {
1093
1105
  return true;
1094
1106
  }
1095
1107
  function registerCodeHighlighting(editor, tokenizer) {
1096
- reifyPrismLanguages();
1097
1108
  if (!editor.hasNodes([CodeNode, CodeHighlightNode])) {
1098
1109
  throw new Error('CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor');
1099
1110
  }
@@ -1129,6 +1140,14 @@ function registerCodeHighlighting(editor, tokenizer) {
1129
1140
  }, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.INDENT_CONTENT_COMMAND, payload => handleMultilineIndent(lexical.INDENT_CONTENT_COMMAND), lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.OUTDENT_CONTENT_COMMAND, payload => handleMultilineIndent(lexical.OUTDENT_CONTENT_COMMAND), lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.KEY_ARROW_UP_COMMAND, payload => handleShiftLines(lexical.KEY_ARROW_UP_COMMAND, payload), lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.KEY_ARROW_DOWN_COMMAND, payload => handleShiftLines(lexical.KEY_ARROW_DOWN_COMMAND, payload), lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.MOVE_TO_END, payload => handleMoveTo(lexical.MOVE_TO_END, payload), lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.MOVE_TO_START, payload => handleMoveTo(lexical.MOVE_TO_START, payload), lexical.COMMAND_PRIORITY_LOW));
1130
1141
  }
1131
1142
 
1143
+ /**
1144
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
1145
+ *
1146
+ * This source code is licensed under the MIT license found in the
1147
+ * LICENSE file in the root directory of this source tree.
1148
+ *
1149
+ */
1150
+
1132
1151
  exports.$createCodeHighlightNode = $createCodeHighlightNode;
1133
1152
  exports.$createCodeNode = $createCodeNode;
1134
1153
  exports.$isCodeHighlightNode = $isCodeHighlightNode;
@@ -4,23 +4,23 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { addClassNamesToElement, isHTMLElement, removeClassNamesFromElement, mergeRegister } from '@lexical/utils';
8
- import { ElementNode, $applyNodeReplacement, $createParagraphNode, $isTextNode, $isTabNode, $createTabNode, $createLineBreakNode, TextNode, $isLineBreakNode, $getNodeByKey, KEY_TAB_COMMAND, COMMAND_PRIORITY_LOW, INSERT_TAB_COMMAND, $getSelection, $insertNodes, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ARROW_DOWN_COMMAND, MOVE_TO_END, MOVE_TO_START, $createTextNode, $isRangeSelection } from 'lexical';
9
- import * as Prism from 'prismjs';
10
- import * as prism_clike from 'prismjs/components/prism-clike.js';
11
- import * as prism_javascript from 'prismjs/components/prism-javascript.js';
12
- import * as prism_markup from 'prismjs/components/prism-markup.js';
13
- import * as prism_markdown from 'prismjs/components/prism-markdown.js';
14
- import * as prism_c from 'prismjs/components/prism-c.js';
15
- import * as prism_css from 'prismjs/components/prism-css.js';
16
- import * as prism_objectivec from 'prismjs/components/prism-objectivec.js';
17
- import * as prism_sql from 'prismjs/components/prism-sql.js';
18
- import * as prism_python from 'prismjs/components/prism-python.js';
19
- import * as prism_rust from 'prismjs/components/prism-rust.js';
20
- import * as prism_swift from 'prismjs/components/prism-swift.js';
21
- import * as prism_typescript from 'prismjs/components/prism-typescript.js';
22
- import * as prism_java from 'prismjs/components/prism-java.js';
23
- import * as prism_cpp from 'prismjs/components/prism-cpp.js';
7
+ import 'prismjs';
8
+ import 'prismjs/components/prism-clike.js';
9
+ import 'prismjs/components/prism-javascript.js';
10
+ import 'prismjs/components/prism-markup.js';
11
+ import 'prismjs/components/prism-markdown.js';
12
+ import 'prismjs/components/prism-c.js';
13
+ import 'prismjs/components/prism-css.js';
14
+ import 'prismjs/components/prism-objectivec.js';
15
+ import 'prismjs/components/prism-sql.js';
16
+ import 'prismjs/components/prism-python.js';
17
+ import 'prismjs/components/prism-rust.js';
18
+ import 'prismjs/components/prism-swift.js';
19
+ import 'prismjs/components/prism-typescript.js';
20
+ import 'prismjs/components/prism-java.js';
21
+ import 'prismjs/components/prism-cpp.js';
22
+ import { isHTMLElement, addClassNamesToElement, removeClassNamesFromElement, mergeRegister } from '@lexical/utils';
23
+ import { ElementNode, $applyNodeReplacement, $createParagraphNode, $isTextNode, $isTabNode, $createTabNode, $createLineBreakNode, TextNode, $isLineBreakNode, $createTextNode, $getNodeByKey, $getSelection, $isRangeSelection, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND, INSERT_TAB_COMMAND, KEY_ARROW_UP_COMMAND, MOVE_TO_START, KEY_TAB_COMMAND, COMMAND_PRIORITY_LOW, $insertNodes, KEY_ARROW_DOWN_COMMAND, MOVE_TO_END } from 'lexical';
24
24
 
25
25
  /**
26
26
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -30,11 +30,23 @@ import * as prism_cpp from 'prismjs/components/prism-cpp.js';
30
30
  *
31
31
  */
32
32
 
33
- // Avoid tree-shaking
34
- const reifyPrismLanguages = () => ({
35
- Prism,
36
- languages: [prism_clike, prism_javascript, prism_markup, prism_markdown, prism_c, prism_css, prism_objectivec, prism_sql, prism_python, prism_rust, prism_swift, prism_typescript, prism_java, prism_cpp]
37
- });
33
+ /**
34
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
35
+ *
36
+ * This source code is licensed under the MIT license found in the
37
+ * LICENSE file in the root directory of this source tree.
38
+ *
39
+ */
40
+
41
+ // invariant(condition, message) will refine types based on "condition", and
42
+ // if "condition" is false will throw an error. This function is special-cased
43
+ // in flow itself, so we can't name it anything else.
44
+ function invariant(cond, message, ...args) {
45
+ if (cond) {
46
+ return;
47
+ }
48
+ throw new Error('Internal Lexical error: invariant() is meant to be replaced at compile ' + 'time. There is no runtime version. Error: ' + message);
49
+ }
38
50
 
39
51
  /**
40
52
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -45,7 +57,7 @@ const reifyPrismLanguages = () => ({
45
57
  */
46
58
  const mapToPrismLanguage = language => {
47
59
  // eslint-disable-next-line no-prototype-builtins
48
- return language != null && Prism.languages.hasOwnProperty(language) ? language : undefined;
60
+ return language != null && window.Prism.languages.hasOwnProperty(language) ? language : undefined;
49
61
  };
50
62
  function hasChildDOMNodeTag(node, tagName) {
51
63
  for (const child of node.childNodes) {
@@ -401,10 +413,10 @@ function getLanguageFriendlyName(lang) {
401
413
  return CODE_LANGUAGE_FRIENDLY_NAME_MAP[_lang] || _lang;
402
414
  }
403
415
  const getDefaultCodeLanguage = () => DEFAULT_CODE_LANGUAGE;
404
- const getCodeLanguages = () => Object.keys(Prism.languages).filter(
416
+ const getCodeLanguages = () => Object.keys(window.Prism.languages).filter(
405
417
  // Prism has several language helpers mixed into languages object
406
418
  // so filtering them out here to get langs list
407
- language => typeof Prism.languages[language] !== 'function').sort();
419
+ language => typeof window.Prism.languages[language] !== 'function').sort();
408
420
 
409
421
  /** @noInheritDoc */
410
422
  class CodeHighlightNode extends TextNode {
@@ -513,7 +525,7 @@ function getLastCodeNodeOfLine(anchor) {
513
525
  const PrismTokenizer = {
514
526
  defaultLanguage: DEFAULT_CODE_LANGUAGE,
515
527
  tokenize(code, language) {
516
- return Prism.tokenize(code, Prism.languages[language || ''] || Prism.languages[this.defaultLanguage]);
528
+ return window.Prism.tokenize(code, window.Prism.languages[language || ''] || window.Prism.languages[this.defaultLanguage]);
517
529
  }
518
530
  };
519
531
  function getStartOfCodeInLine(anchor, offset) {
@@ -1091,7 +1103,6 @@ function handleMoveTo(type, event) {
1091
1103
  return true;
1092
1104
  }
1093
1105
  function registerCodeHighlighting(editor, tokenizer) {
1094
- reifyPrismLanguages();
1095
1106
  if (!editor.hasNodes([CodeNode, CodeHighlightNode])) {
1096
1107
  throw new Error('CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor');
1097
1108
  }
@@ -1127,4 +1138,12 @@ function registerCodeHighlighting(editor, tokenizer) {
1127
1138
  }, COMMAND_PRIORITY_LOW), editor.registerCommand(INDENT_CONTENT_COMMAND, payload => handleMultilineIndent(INDENT_CONTENT_COMMAND), COMMAND_PRIORITY_LOW), editor.registerCommand(OUTDENT_CONTENT_COMMAND, payload => handleMultilineIndent(OUTDENT_CONTENT_COMMAND), COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_UP_COMMAND, payload => handleShiftLines(KEY_ARROW_UP_COMMAND, payload), COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_DOWN_COMMAND, payload => handleShiftLines(KEY_ARROW_DOWN_COMMAND, payload), COMMAND_PRIORITY_LOW), editor.registerCommand(MOVE_TO_END, payload => handleMoveTo(MOVE_TO_END, payload), COMMAND_PRIORITY_LOW), editor.registerCommand(MOVE_TO_START, payload => handleMoveTo(MOVE_TO_START, payload), COMMAND_PRIORITY_LOW));
1128
1139
  }
1129
1140
 
1141
+ /**
1142
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
1143
+ *
1144
+ * This source code is licensed under the MIT license found in the
1145
+ * LICENSE file in the root directory of this source tree.
1146
+ *
1147
+ */
1148
+
1130
1149
  export { $createCodeHighlightNode, $createCodeNode, $isCodeHighlightNode, $isCodeNode, CODE_LANGUAGE_FRIENDLY_NAME_MAP, CODE_LANGUAGE_MAP, CodeHighlightNode, CodeNode, DEFAULT_CODE_LANGUAGE, PrismTokenizer, getCodeLanguages, getDefaultCodeLanguage, getEndOfCodeInLine, getFirstCodeNodeOfLine, getLanguageFriendlyName, getLastCodeNodeOfLine, getStartOfCodeInLine, normalizeCodeLang, registerCodeHighlighting };
@@ -4,39 +4,39 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- 'use strict';var d=require("@lexical/utils"),m=require("lexical"),q=require("prismjs");require("prismjs/components/prism-clike");require("prismjs/components/prism-javascript");require("prismjs/components/prism-markup");require("prismjs/components/prism-markdown");require("prismjs/components/prism-c");require("prismjs/components/prism-css");require("prismjs/components/prism-objectivec");require("prismjs/components/prism-sql");require("prismjs/components/prism-python");require("prismjs/components/prism-rust");
8
- require("prismjs/components/prism-swift");require("prismjs/components/prism-typescript");require("prismjs/components/prism-java");require("prismjs/components/prism-cpp");let v=a=>null!=a&&q.languages.hasOwnProperty(a)?a:void 0;function w(a,b){for(let c of a.childNodes){if(d.isHTMLElement(c)&&c.tagName===b)return!0;w(c,b)}return!1}
9
- class y extends m.ElementNode{static getType(){return"code"}static clone(a){return new y(a.__language,a.__key)}constructor(a,b){super(b);this.__language=v(a)}createDOM(a){let b=document.createElement("code");d.addClassNamesToElement(b,a.theme.code);b.setAttribute("spellcheck","false");(a=this.getLanguage())&&b.setAttribute("data-highlight-language",a);return b}updateDOM(a,b){let c=this.__language;a=a.__language;c?c!==a&&b.setAttribute("data-highlight-language",c):a&&b.removeAttribute("data-highlight-language");
10
- return!1}exportDOM(a){let b=document.createElement("pre");d.addClassNamesToElement(b,a._config.theme.code);b.setAttribute("spellcheck","false");(a=this.getLanguage())&&b.setAttribute("data-highlight-language",a);return{element:b}}static importDOM(){return{code:a=>null!=a.textContent&&(/\r?\n/.test(a.textContent)||w(a,"BR"))?{conversion:z,priority:1}:null,div:()=>({conversion:aa,priority:1}),pre:()=>({conversion:z,priority:0}),table:a=>A(a)?{conversion:ba,priority:3}:null,td:a=>{let b=a.closest("table");
11
- return a.classList.contains("js-file-line")?{conversion:ca,priority:3}:b&&A(b)?{conversion:B,priority:3}:null},tr:a=>(a=a.closest("table"))&&A(a)?{conversion:B,priority:3}:null}}static importJSON(a){let b=C(a.language);b.setFormat(a.format);b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{...super.exportJSON(),language:this.getLanguage(),type:"code",version:1}}insertNewAfter(a,b=!0){var c=this.getChildren(),e=c.length;if(2<=e&&"\n"===c[e-1].getTextContent()&&"\n"===c[e-
12
- 2].getTextContent()&&a.isCollapsed()&&a.anchor.key===this.__key&&a.anchor.offset===e)return c[e-1].remove(),c[e-2].remove(),a=m.$createParagraphNode(),this.insertAfter(a,b),a;let {anchor:f,focus:g}=a;b=(f.isBefore(g)?f:g).getNode();if(m.$isTextNode(b)){e=D(b);for(c=[];;)if(m.$isTabNode(e))c.push(m.$createTabNode()),e=e.getNextSibling();else if(E(e)){for(var h=0,k=e.getTextContent(),l=e.getTextContentSize();h<l&&" "===k[h];)h++;0!==h&&c.push(F(" ".repeat(h)));if(h!==l)break;e=e.getNextSibling()}else break;
13
- e=b.splitText(f.offset)[0];h=0===f.offset?0:1;h=e.getIndexWithinParent()+h;k=b.getParentOrThrow();l=[m.$createLineBreakNode(),...c];k.splice(h,0,l);(c=c[c.length-1])?c.select():0===f.offset?e.selectPrevious():e.getNextSibling().selectNext(0,0)}G(b)&&({offset:a}=a.anchor,b.splice(a,0,[m.$createLineBreakNode()]),b.select(a+1,a+1));return null}canIndent(){return!1}collapseAtStart(){let a=m.$createParagraphNode();this.getChildren().forEach(b=>a.append(b));this.replace(a);return!0}setLanguage(a){this.getWritable().__language=
14
- v(a)}getLanguage(){return this.getLatest().__language}}function C(a){return m.$applyNodeReplacement(new y(a))}function G(a){return a instanceof y}function z(a){let b;d.isHTMLElement(a)&&(b=a.getAttribute("data-highlight-language"));return{node:C(b)}}function aa(a){let b=null!==a.style.fontFamily.match("monospace");return b||da(a)?{after:c=>{let e=a.parentNode;null!=e&&a!==e.lastChild&&c.push(m.$createLineBreakNode());return c},node:b?C():null}:{node:null}}function ba(){return{node:C()}}
15
- function B(){return{node:null}}function ca(a){return{after:b=>{a.parentNode&&a.parentNode.nextSibling&&b.push(m.$createLineBreakNode());return b},node:null}}function da(a){for(a=a.parentElement;null!==a;){if(null!==a.style.fontFamily.match("monospace"))return!0;a=a.parentElement}return!1}function A(a){return a.classList.contains("js-file-line-container")}
16
- let H={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript",xml:"XML"},I={cpp:"cpp",java:"java",javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain",ts:"typescript"};function K(a){return I[a]||a}
17
- class L extends m.TextNode{constructor(a,b,c){super(a,c);this.__highlightType=b}static getType(){return"code-highlight"}static clone(a){return new L(a.__text,a.__highlightType||void 0,a.__key)}getHighlightType(){return this.getLatest().__highlightType}canHaveFormat(){return!1}createDOM(a){let b=super.createDOM(a);a=M(a.theme,this.__highlightType);d.addClassNamesToElement(b,a);return b}updateDOM(a,b,c){let e=super.updateDOM(a,b,c);a=M(c.theme,a.__highlightType);c=M(c.theme,this.__highlightType);a!==
18
- c&&(a&&d.removeClassNamesFromElement(b,a),c&&d.addClassNamesToElement(b,c));return e}static importJSON(a){let b=F(a.text,a.highlightType);b.setFormat(a.format);b.setDetail(a.detail);b.setMode(a.mode);b.setStyle(a.style);return b}exportJSON(){return{...super.exportJSON(),highlightType:this.getHighlightType(),type:"code-highlight",version:1}}setFormat(){return this}isParentRequired(){return!0}createParentElementNode(){return C()}}function M(a,b){return b&&a&&a.codeHighlight&&a.codeHighlight[b]}
19
- function F(a,b){return m.$applyNodeReplacement(new L(a,b))}function E(a){return a instanceof L}function D(a){let b=a;for(;E(a)||m.$isTabNode(a);)b=a,a=a.getPreviousSibling();return b}function N(a){let b=a;for(;E(a)||m.$isTabNode(a);)b=a,a=a.getNextSibling();return b}let O={defaultLanguage:"javascript",tokenize(a,b){return q.tokenize(a,q.languages[b||""]||q.languages[this.defaultLanguage])}};
20
- function P(a,b){let c=null;var e=null,f=a;let g=b,h=a.getTextContent();for(;;){if(0===g){f=f.getPreviousSibling();if(null===f)break;if(!(E(f)||m.$isTabNode(f)||m.$isLineBreakNode(f)))throw Error("Expected a valid Code Node: CodeHighlightNode, TabNode, LineBreakNode");if(m.$isLineBreakNode(f)){c={node:f,offset:1};break}g=Math.max(0,f.getTextContentSize()-1);h=f.getTextContent()}else g--;let k=h[g];E(f)&&" "!==k&&(e={node:f,offset:g})}if(null!==e)return e;e=null;b<a.getTextContentSize()?E(a)&&(e=a.getTextContent()[b]):
21
- (f=a.getNextSibling(),E(f)&&(e=f.getTextContent()[0]));if(null!==e&&" "!==e)return c;a:for(e=a,f=a.getTextContent(),a=a.getTextContentSize();;){if(!E(e)||b===a){e=e.getNextSibling();if(null===e||m.$isLineBreakNode(e)){a=null;break a}E(e)&&(b=0,f=e.getTextContent(),a=e.getTextContentSize())}if(E(e)){if(" "!==f[b]){a={node:e,offset:b};break a}b++}}return null!==a?a:c}function Q(a){a=N(a);if(m.$isLineBreakNode(a))throw Error("Unexpected lineBreakNode in getEndOfCodeInLine");return a}
22
- function R(a,b,c){let e=a.getParent();G(e)?S(e,b,c):E(a)&&a.replace(m.$createTextNode(a.__text))}let T=new Set;
23
- function S(a,b,c){let e=a.getKey();T.has(e)||(T.add(e),void 0===a.getLanguage()&&a.setLanguage(c.defaultLanguage),b.update(()=>{ea(e,()=>{var f=m.$getNodeByKey(e);if(!G(f)||!f.isAttached())return!1;var g=f.getTextContent();g=c.tokenize(g,f.getLanguage()||c.defaultLanguage);g=U(g);var h=f.getChildren();for(f=0;f<h.length&&V(h[f],g[f]);)f++;var k=h.length;let l=g.length,r=Math.min(k,l)-f,n=0;for(;n<r;)if(n++,!V(h[k-n],g[l-n])){n--;break}h=f;k-=n;g=g.slice(f,l-n);let {from:p,to:x,nodesForReplacement:u}=
24
- {from:h,nodesForReplacement:g,to:k};return p!==x||u.length?(a.splice(p,x-p,u),!0):!1})},{onUpdate:()=>{T.delete(e)},skipTransforms:!0}))}
25
- function U(a,b){let c=[];for(let e of a)if("string"===typeof e){a=e.split(/(\n|\t)/);let f=a.length;for(let g=0;g<f;g++){let h=a[g];"\n"===h||"\r\n"===h?c.push(m.$createLineBreakNode()):"\t"===h?c.push(m.$createTabNode()):0<h.length&&c.push(F(h,b))}}else({content:a}=e),"string"===typeof a?c.push(...U([a],e.type)):Array.isArray(a)&&c.push(...U(a,e.type));return c}
26
- function ea(a,b){a=m.$getNodeByKey(a);if(G(a)&&a.isAttached()){var c=m.$getSelection();if(m.$isRangeSelection(c)){c=c.anchor;var e=c.offset,f="element"===c.type&&m.$isLineBreakNode(a.getChildAtIndex(c.offset-1)),g=0;if(!f){let h=c.getNode();g=e+h.getPreviousSiblings().reduce((k,l)=>k+l.getTextContentSize(),0)}b()&&(f?c.getNode().select(e,e):a.getChildren().some(h=>{let k=m.$isTextNode(h);if(k||m.$isLineBreakNode(h)){let l=h.getTextContentSize();if(k&&l>=g)return h.select(g,g),!0;g-=l}return!1}))}else b()}}
27
- function V(a,b){return E(a)&&E(b)&&a.__text===b.__text&&a.__highlightType===b.__highlightType||m.$isTabNode(a)&&m.$isTabNode(b)||m.$isLineBreakNode(a)&&m.$isLineBreakNode(b)}function W(a){if(!m.$isRangeSelection(a))return!1;var b=a.anchor.getNode();a=a.focus.getNode();if(b.is(a)&&G(b))return!0;b=b.getParent();return G(b)&&b.is(a.getParent())}
28
- function X(a){a=a.getNodes();let b=[[]];if(1===a.length&&G(a[0]))return b;let c=b[0];for(let e=0;e<a.length;e++){let f=a[e];if(!(E(f)||m.$isTabNode(f)||m.$isLineBreakNode(f)))throw Error("Expected selection to be inside CodeBlock and consisting of CodeHighlightNode, TabNode and LineBreakNode");m.$isLineBreakNode(f)?0!==e&&0<c.length&&(c=[],b.push(c)):c.push(f)}return b}
29
- function fa(a){var b=m.$getSelection();if(!m.$isRangeSelection(b)||!W(b))return null;let c=a?m.OUTDENT_CONTENT_COMMAND:m.INDENT_CONTENT_COMMAND;a=a?m.OUTDENT_CONTENT_COMMAND:m.INSERT_TAB_COMMAND;if(1<X(b).length)return c;var e=b.getNodes()[0];if(!(G(e)||E(e)||m.$isTabNode(e)||m.$isLineBreakNode(e)))throw Error("Expected selection firstNode to be CodeHighlightNode or TabNode");if(G(e))return c;let f=D(e);e=N(e);var g=b.anchor;let h=b.focus;h.isBefore(g)?b=h:(b=g,g=h);return null!==f&&null!==e&&b.key===
7
+ 'use strict';require("prismjs");require("prismjs/components/prism-clike");require("prismjs/components/prism-javascript");require("prismjs/components/prism-markup");require("prismjs/components/prism-markdown");require("prismjs/components/prism-c");require("prismjs/components/prism-css");require("prismjs/components/prism-objectivec");require("prismjs/components/prism-sql");require("prismjs/components/prism-python");require("prismjs/components/prism-rust");require("prismjs/components/prism-swift");require("prismjs/components/prism-typescript");
8
+ require("prismjs/components/prism-java");require("prismjs/components/prism-cpp");var d=require("@lexical/utils"),m=require("lexical");let q=a=>null!=a&&window.Prism.languages.hasOwnProperty(a)?a:void 0;function v(a,b){for(let c of a.childNodes){if(d.isHTMLElement(c)&&c.tagName===b)return!0;v(c,b)}return!1}
9
+ class w extends m.ElementNode{static getType(){return"code"}static clone(a){return new w(a.__language,a.__key)}constructor(a,b){super(b);this.__language=q(a)}createDOM(a){let b=document.createElement("code");d.addClassNamesToElement(b,a.theme.code);b.setAttribute("spellcheck","false");(a=this.getLanguage())&&b.setAttribute("data-highlight-language",a);return b}updateDOM(a,b){let c=this.__language;a=a.__language;c?c!==a&&b.setAttribute("data-highlight-language",c):a&&b.removeAttribute("data-highlight-language");
10
+ return!1}exportDOM(a){let b=document.createElement("pre");d.addClassNamesToElement(b,a._config.theme.code);b.setAttribute("spellcheck","false");(a=this.getLanguage())&&b.setAttribute("data-highlight-language",a);return{element:b}}static importDOM(){return{code:a=>null!=a.textContent&&(/\r?\n/.test(a.textContent)||v(a,"BR"))?{conversion:y,priority:1}:null,div:()=>({conversion:aa,priority:1}),pre:()=>({conversion:y,priority:0}),table:a=>z(a)?{conversion:ba,priority:3}:null,td:a=>{let b=a.closest("table");
11
+ return a.classList.contains("js-file-line")?{conversion:ca,priority:3}:b&&z(b)?{conversion:A,priority:3}:null},tr:a=>(a=a.closest("table"))&&z(a)?{conversion:A,priority:3}:null}}static importJSON(a){let b=B(a.language);b.setFormat(a.format);b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{...super.exportJSON(),language:this.getLanguage(),type:"code",version:1}}insertNewAfter(a,b=!0){var c=this.getChildren(),e=c.length;if(2<=e&&"\n"===c[e-1].getTextContent()&&"\n"===c[e-
12
+ 2].getTextContent()&&a.isCollapsed()&&a.anchor.key===this.__key&&a.anchor.offset===e)return c[e-1].remove(),c[e-2].remove(),a=m.$createParagraphNode(),this.insertAfter(a,b),a;let {anchor:f,focus:g}=a;b=(f.isBefore(g)?f:g).getNode();if(m.$isTextNode(b)){e=C(b);for(c=[];;)if(m.$isTabNode(e))c.push(m.$createTabNode()),e=e.getNextSibling();else if(D(e)){for(var h=0,k=e.getTextContent(),l=e.getTextContentSize();h<l&&" "===k[h];)h++;0!==h&&c.push(E(" ".repeat(h)));if(h!==l)break;e=e.getNextSibling()}else break;
13
+ e=b.splitText(f.offset)[0];h=0===f.offset?0:1;h=e.getIndexWithinParent()+h;k=b.getParentOrThrow();l=[m.$createLineBreakNode(),...c];k.splice(h,0,l);(c=c[c.length-1])?c.select():0===f.offset?e.selectPrevious():e.getNextSibling().selectNext(0,0)}F(b)&&({offset:a}=a.anchor,b.splice(a,0,[m.$createLineBreakNode()]),b.select(a+1,a+1));return null}canIndent(){return!1}collapseAtStart(){let a=m.$createParagraphNode();this.getChildren().forEach(b=>a.append(b));this.replace(a);return!0}setLanguage(a){this.getWritable().__language=
14
+ q(a)}getLanguage(){return this.getLatest().__language}}function B(a){return m.$applyNodeReplacement(new w(a))}function F(a){return a instanceof w}function y(a){let b;d.isHTMLElement(a)&&(b=a.getAttribute("data-highlight-language"));return{node:B(b)}}function aa(a){let b=null!==a.style.fontFamily.match("monospace");return b||da(a)?{after:c=>{let e=a.parentNode;null!=e&&a!==e.lastChild&&c.push(m.$createLineBreakNode());return c},node:b?B():null}:{node:null}}function ba(){return{node:B()}}
15
+ function A(){return{node:null}}function ca(a){return{after:b=>{a.parentNode&&a.parentNode.nextSibling&&b.push(m.$createLineBreakNode());return b},node:null}}function da(a){for(a=a.parentElement;null!==a;){if(null!==a.style.fontFamily.match("monospace"))return!0;a=a.parentElement}return!1}function z(a){return a.classList.contains("js-file-line-container")}
16
+ let G={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript",xml:"XML"},H={cpp:"cpp",java:"java",javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain",ts:"typescript"};function J(a){return H[a]||a}
17
+ class K extends m.TextNode{constructor(a,b,c){super(a,c);this.__highlightType=b}static getType(){return"code-highlight"}static clone(a){return new K(a.__text,a.__highlightType||void 0,a.__key)}getHighlightType(){return this.getLatest().__highlightType}canHaveFormat(){return!1}createDOM(a){let b=super.createDOM(a);a=L(a.theme,this.__highlightType);d.addClassNamesToElement(b,a);return b}updateDOM(a,b,c){let e=super.updateDOM(a,b,c);a=L(c.theme,a.__highlightType);c=L(c.theme,this.__highlightType);a!==
18
+ c&&(a&&d.removeClassNamesFromElement(b,a),c&&d.addClassNamesToElement(b,c));return e}static importJSON(a){let b=E(a.text,a.highlightType);b.setFormat(a.format);b.setDetail(a.detail);b.setMode(a.mode);b.setStyle(a.style);return b}exportJSON(){return{...super.exportJSON(),highlightType:this.getHighlightType(),type:"code-highlight",version:1}}setFormat(){return this}isParentRequired(){return!0}createParentElementNode(){return B()}}function L(a,b){return b&&a&&a.codeHighlight&&a.codeHighlight[b]}
19
+ function E(a,b){return m.$applyNodeReplacement(new K(a,b))}function D(a){return a instanceof K}function C(a){let b=a;for(;D(a)||m.$isTabNode(a);)b=a,a=a.getPreviousSibling();return b}function M(a){let b=a;for(;D(a)||m.$isTabNode(a);)b=a,a=a.getNextSibling();return b}let N={defaultLanguage:"javascript",tokenize(a,b){return window.Prism.tokenize(a,window.Prism.languages[b||""]||window.Prism.languages[this.defaultLanguage])}};
20
+ function O(a,b){let c=null;var e=null,f=a;let g=b,h=a.getTextContent();for(;;){if(0===g){f=f.getPreviousSibling();if(null===f)break;if(!(D(f)||m.$isTabNode(f)||m.$isLineBreakNode(f)))throw Error("Expected a valid Code Node: CodeHighlightNode, TabNode, LineBreakNode");if(m.$isLineBreakNode(f)){c={node:f,offset:1};break}g=Math.max(0,f.getTextContentSize()-1);h=f.getTextContent()}else g--;let k=h[g];D(f)&&" "!==k&&(e={node:f,offset:g})}if(null!==e)return e;e=null;b<a.getTextContentSize()?D(a)&&(e=a.getTextContent()[b]):
21
+ (f=a.getNextSibling(),D(f)&&(e=f.getTextContent()[0]));if(null!==e&&" "!==e)return c;a:for(e=a,f=a.getTextContent(),a=a.getTextContentSize();;){if(!D(e)||b===a){e=e.getNextSibling();if(null===e||m.$isLineBreakNode(e)){a=null;break a}D(e)&&(b=0,f=e.getTextContent(),a=e.getTextContentSize())}if(D(e)){if(" "!==f[b]){a={node:e,offset:b};break a}b++}}return null!==a?a:c}function P(a){a=M(a);if(m.$isLineBreakNode(a))throw Error("Unexpected lineBreakNode in getEndOfCodeInLine");return a}
22
+ function Q(a,b,c){let e=a.getParent();F(e)?R(e,b,c):D(a)&&a.replace(m.$createTextNode(a.__text))}let S=new Set;
23
+ function R(a,b,c){let e=a.getKey();S.has(e)||(S.add(e),void 0===a.getLanguage()&&a.setLanguage(c.defaultLanguage),b.update(()=>{ea(e,()=>{var f=m.$getNodeByKey(e);if(!F(f)||!f.isAttached())return!1;var g=f.getTextContent();g=c.tokenize(g,f.getLanguage()||c.defaultLanguage);g=T(g);var h=f.getChildren();for(f=0;f<h.length&&U(h[f],g[f]);)f++;var k=h.length;let l=g.length,r=Math.min(k,l)-f,n=0;for(;n<r;)if(n++,!U(h[k-n],g[l-n])){n--;break}h=f;k-=n;g=g.slice(f,l-n);let {from:p,to:x,nodesForReplacement:u}=
24
+ {from:h,nodesForReplacement:g,to:k};return p!==x||u.length?(a.splice(p,x-p,u),!0):!1})},{onUpdate:()=>{S.delete(e)},skipTransforms:!0}))}
25
+ function T(a,b){let c=[];for(let e of a)if("string"===typeof e){a=e.split(/(\n|\t)/);let f=a.length;for(let g=0;g<f;g++){let h=a[g];"\n"===h||"\r\n"===h?c.push(m.$createLineBreakNode()):"\t"===h?c.push(m.$createTabNode()):0<h.length&&c.push(E(h,b))}}else({content:a}=e),"string"===typeof a?c.push(...T([a],e.type)):Array.isArray(a)&&c.push(...T(a,e.type));return c}
26
+ function ea(a,b){a=m.$getNodeByKey(a);if(F(a)&&a.isAttached()){var c=m.$getSelection();if(m.$isRangeSelection(c)){c=c.anchor;var e=c.offset,f="element"===c.type&&m.$isLineBreakNode(a.getChildAtIndex(c.offset-1)),g=0;if(!f){let h=c.getNode();g=e+h.getPreviousSiblings().reduce((k,l)=>k+l.getTextContentSize(),0)}b()&&(f?c.getNode().select(e,e):a.getChildren().some(h=>{let k=m.$isTextNode(h);if(k||m.$isLineBreakNode(h)){let l=h.getTextContentSize();if(k&&l>=g)return h.select(g,g),!0;g-=l}return!1}))}else b()}}
27
+ function U(a,b){return D(a)&&D(b)&&a.__text===b.__text&&a.__highlightType===b.__highlightType||m.$isTabNode(a)&&m.$isTabNode(b)||m.$isLineBreakNode(a)&&m.$isLineBreakNode(b)}function V(a){if(!m.$isRangeSelection(a))return!1;var b=a.anchor.getNode();a=a.focus.getNode();if(b.is(a)&&F(b))return!0;b=b.getParent();return F(b)&&b.is(a.getParent())}
28
+ function W(a){a=a.getNodes();let b=[[]];if(1===a.length&&F(a[0]))return b;let c=b[0];for(let e=0;e<a.length;e++){let f=a[e];if(!(D(f)||m.$isTabNode(f)||m.$isLineBreakNode(f)))throw Error("Expected selection to be inside CodeBlock and consisting of CodeHighlightNode, TabNode and LineBreakNode");m.$isLineBreakNode(f)?0!==e&&0<c.length&&(c=[],b.push(c)):c.push(f)}return b}
29
+ function fa(a){var b=m.$getSelection();if(!m.$isRangeSelection(b)||!V(b))return null;let c=a?m.OUTDENT_CONTENT_COMMAND:m.INDENT_CONTENT_COMMAND;a=a?m.OUTDENT_CONTENT_COMMAND:m.INSERT_TAB_COMMAND;if(1<W(b).length)return c;var e=b.getNodes()[0];if(!(F(e)||D(e)||m.$isTabNode(e)||m.$isLineBreakNode(e)))throw Error("Expected selection firstNode to be CodeHighlightNode or TabNode");if(F(e))return c;let f=C(e);e=M(e);var g=b.anchor;let h=b.focus;h.isBefore(g)?b=h:(b=g,g=h);return null!==f&&null!==e&&b.key===
30
30
  f.getKey()&&0===b.offset&&g.key===e.getKey()&&g.offset===e.getTextContentSize()?c:a}
31
- function Y(a){var b=m.$getSelection();if(!m.$isRangeSelection(b)||!W(b))return!1;var c=X(b);let e=c.length;if(1<c.length){for(b=0;b<e;b++){var f=c[b];0<f.length&&(f=f[0],0===b&&(f=D(f)),null!==f&&(a===m.INDENT_CONTENT_COMMAND?f.insertBefore(m.$createTabNode()):m.$isTabNode(f)&&f.remove()))}return!0}c=b.getNodes()[0];if(!(G(c)||E(c)||m.$isTabNode(c)||m.$isLineBreakNode(c)))throw Error("Expected selection firstNode to be CodeHighlightNode or CodeTabNode");if(G(c))return a===m.INDENT_CONTENT_COMMAND&&
32
- b.insertNodes([m.$createTabNode()]),!0;c=D(c);if(null===c)throw Error("Expected getFirstCodeNodeOfLine to return a valid Code Node");a===m.INDENT_CONTENT_COMMAND?m.$isLineBreakNode(c)?c.insertAfter(m.$createTabNode()):c.insertBefore(m.$createTabNode()):m.$isTabNode(c)&&c.remove();return!0}
33
- function Z(a,b){let c=m.$getSelection();if(!m.$isRangeSelection(c))return!1;let {anchor:e,focus:f}=c,g=e.offset,h=f.offset,k=e.getNode(),l=f.getNode();var r=a===m.KEY_ARROW_UP_COMMAND;if(!W(c)||!E(k)&&!m.$isTabNode(k)||!E(l)&&!m.$isTabNode(l))return!1;if(!b.altKey){if(c.isCollapsed())if(a=k.getParentOrThrow(),r&&0===g&&null===k.getPreviousSibling()){if(null===a.getPreviousSibling())return a.selectPrevious(),b.preventDefault(),!0}else if(!r&&g===k.getTextContentSize()&&null===k.getNextSibling()&&null===
34
- a.getNextSibling())return a.selectNext(),b.preventDefault(),!0;return!1}let n;if(k.isBefore(l)){var p=D(k);n=N(l)}else p=D(l),n=N(k);if(null==p||null==n)return!1;let x=p.getNodesBetween(n);for(let t=0;t<x.length;t++){let J=x[t];if(!E(J)&&!m.$isTabNode(J)&&!m.$isLineBreakNode(J))return!1}b.preventDefault();b.stopPropagation();b=r?p.getPreviousSibling():n.getNextSibling();if(!m.$isLineBreakNode(b))return!0;p=r?b.getPreviousSibling():b.getNextSibling();if(null==p)return!0;r=E(p)||m.$isTabNode(p)||m.$isLineBreakNode(p)?
35
- r?D(p):N(p):null;let u=null!=r?r:p;b.remove();x.forEach(t=>t.remove());a===m.KEY_ARROW_UP_COMMAND?(x.forEach(t=>u.insertBefore(t)),u.insertBefore(b)):(u.insertAfter(b),u=b,x.forEach(t=>{u.insertAfter(t);u=t}));c.setTextNodeRange(k,g,l,h);return!0}
36
- function ha(a,b){let c=m.$getSelection();if(!m.$isRangeSelection(c))return!1;let {anchor:e,focus:f}=c;var g=e.getNode();let h=f.getNode();a=a===m.MOVE_TO_START;if(!E(g)&&!m.$isTabNode(g)||!E(h)&&!m.$isTabNode(h))return!1;if(a)if(g=P(h,f.offset),null!==g){let {node:k,offset:l}=g;m.$isLineBreakNode(k)?k.selectNext(0,0):c.setTextNodeRange(k,l,k,l)}else h.getParentOrThrow().selectStart();else Q(h).select();b.preventDefault();b.stopPropagation();return!0}exports.$createCodeHighlightNode=F;
37
- exports.$createCodeNode=C;exports.$isCodeHighlightNode=E;exports.$isCodeNode=G;exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP=H;exports.CODE_LANGUAGE_MAP=I;exports.CodeHighlightNode=L;exports.CodeNode=y;exports.DEFAULT_CODE_LANGUAGE="javascript";exports.PrismTokenizer=O;exports.getCodeLanguages=()=>Object.keys(q.languages).filter(a=>"function"!==typeof q.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getEndOfCodeInLine=Q;exports.getFirstCodeNodeOfLine=D;
38
- exports.getLanguageFriendlyName=function(a){a=K(a);return H[a]||a};exports.getLastCodeNodeOfLine=N;exports.getStartOfCodeInLine=P;exports.normalizeCodeLang=K;
39
- exports.registerCodeHighlighting=function(a,b){if(!a.hasNodes([y,L]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");null==b&&(b=O);return d.mergeRegister(a.registerMutationListener(y,c=>{a.update(()=>{for(let [g,h]of c)if("destroyed"!==h){var e=m.$getNodeByKey(g);if(null!==e)a:{var f=e;e=a.getElementByKey(f.getKey());if(null===e)break a;f=f.getChildren();let k=f.length;if(k===e.__cachedChildrenLength)break a;e.__cachedChildrenLength=k;let l="1",r=1;for(let n=
40
- 0;n<k;n++)m.$isLineBreakNode(f[n])&&(l+="\n"+ ++r);e.setAttribute("data-gutter",l)}}})}),a.registerNodeTransform(y,c=>S(c,a,b)),a.registerNodeTransform(m.TextNode,c=>R(c,a,b)),a.registerNodeTransform(L,c=>R(c,a,b)),a.registerCommand(m.KEY_TAB_COMMAND,c=>{let e=fa(c.shiftKey);if(null===e)return!1;c.preventDefault();a.dispatchCommand(e,void 0);return!0},m.COMMAND_PRIORITY_LOW),a.registerCommand(m.INSERT_TAB_COMMAND,()=>{let c=m.$getSelection();if(!W(c))return!1;m.$insertNodes([m.$createTabNode()]);
41
- return!0},m.COMMAND_PRIORITY_LOW),a.registerCommand(m.INDENT_CONTENT_COMMAND,()=>Y(m.INDENT_CONTENT_COMMAND),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.OUTDENT_CONTENT_COMMAND,()=>Y(m.OUTDENT_CONTENT_COMMAND),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.KEY_ARROW_UP_COMMAND,c=>Z(m.KEY_ARROW_UP_COMMAND,c),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.KEY_ARROW_DOWN_COMMAND,c=>Z(m.KEY_ARROW_DOWN_COMMAND,c),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.MOVE_TO_END,c=>ha(m.MOVE_TO_END,c),m.COMMAND_PRIORITY_LOW),
42
- a.registerCommand(m.MOVE_TO_START,c=>ha(m.MOVE_TO_START,c),m.COMMAND_PRIORITY_LOW))}
31
+ function X(a){var b=m.$getSelection();if(!m.$isRangeSelection(b)||!V(b))return!1;var c=W(b);let e=c.length;if(1<c.length){for(b=0;b<e;b++){var f=c[b];0<f.length&&(f=f[0],0===b&&(f=C(f)),null!==f&&(a===m.INDENT_CONTENT_COMMAND?f.insertBefore(m.$createTabNode()):m.$isTabNode(f)&&f.remove()))}return!0}c=b.getNodes()[0];if(!(F(c)||D(c)||m.$isTabNode(c)||m.$isLineBreakNode(c)))throw Error("Expected selection firstNode to be CodeHighlightNode or CodeTabNode");if(F(c))return a===m.INDENT_CONTENT_COMMAND&&
32
+ b.insertNodes([m.$createTabNode()]),!0;c=C(c);if(null===c)throw Error("Expected getFirstCodeNodeOfLine to return a valid Code Node");a===m.INDENT_CONTENT_COMMAND?m.$isLineBreakNode(c)?c.insertAfter(m.$createTabNode()):c.insertBefore(m.$createTabNode()):m.$isTabNode(c)&&c.remove();return!0}
33
+ function Y(a,b){let c=m.$getSelection();if(!m.$isRangeSelection(c))return!1;let {anchor:e,focus:f}=c,g=e.offset,h=f.offset,k=e.getNode(),l=f.getNode();var r=a===m.KEY_ARROW_UP_COMMAND;if(!V(c)||!D(k)&&!m.$isTabNode(k)||!D(l)&&!m.$isTabNode(l))return!1;if(!b.altKey){if(c.isCollapsed())if(a=k.getParentOrThrow(),r&&0===g&&null===k.getPreviousSibling()){if(null===a.getPreviousSibling())return a.selectPrevious(),b.preventDefault(),!0}else if(!r&&g===k.getTextContentSize()&&null===k.getNextSibling()&&null===
34
+ a.getNextSibling())return a.selectNext(),b.preventDefault(),!0;return!1}let n;if(k.isBefore(l)){var p=C(k);n=M(l)}else p=C(l),n=M(k);if(null==p||null==n)return!1;let x=p.getNodesBetween(n);for(let t=0;t<x.length;t++){let I=x[t];if(!D(I)&&!m.$isTabNode(I)&&!m.$isLineBreakNode(I))return!1}b.preventDefault();b.stopPropagation();b=r?p.getPreviousSibling():n.getNextSibling();if(!m.$isLineBreakNode(b))return!0;p=r?b.getPreviousSibling():b.getNextSibling();if(null==p)return!0;r=D(p)||m.$isTabNode(p)||m.$isLineBreakNode(p)?
35
+ r?C(p):M(p):null;let u=null!=r?r:p;b.remove();x.forEach(t=>t.remove());a===m.KEY_ARROW_UP_COMMAND?(x.forEach(t=>u.insertBefore(t)),u.insertBefore(b)):(u.insertAfter(b),u=b,x.forEach(t=>{u.insertAfter(t);u=t}));c.setTextNodeRange(k,g,l,h);return!0}
36
+ function Z(a,b){let c=m.$getSelection();if(!m.$isRangeSelection(c))return!1;let {anchor:e,focus:f}=c;var g=e.getNode();let h=f.getNode();a=a===m.MOVE_TO_START;if(!D(g)&&!m.$isTabNode(g)||!D(h)&&!m.$isTabNode(h))return!1;if(a)if(g=O(h,f.offset),null!==g){let {node:k,offset:l}=g;m.$isLineBreakNode(k)?k.selectNext(0,0):c.setTextNodeRange(k,l,k,l)}else h.getParentOrThrow().selectStart();else P(h).select();b.preventDefault();b.stopPropagation();return!0}exports.$createCodeHighlightNode=E;
37
+ exports.$createCodeNode=B;exports.$isCodeHighlightNode=D;exports.$isCodeNode=F;exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP=G;exports.CODE_LANGUAGE_MAP=H;exports.CodeHighlightNode=K;exports.CodeNode=w;exports.DEFAULT_CODE_LANGUAGE="javascript";exports.PrismTokenizer=N;exports.getCodeLanguages=()=>Object.keys(window.Prism.languages).filter(a=>"function"!==typeof window.Prism.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getEndOfCodeInLine=P;
38
+ exports.getFirstCodeNodeOfLine=C;exports.getLanguageFriendlyName=function(a){a=J(a);return G[a]||a};exports.getLastCodeNodeOfLine=M;exports.getStartOfCodeInLine=O;exports.normalizeCodeLang=J;
39
+ exports.registerCodeHighlighting=function(a,b){if(!a.hasNodes([w,K]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");null==b&&(b=N);return d.mergeRegister(a.registerMutationListener(w,c=>{a.update(()=>{for(let [g,h]of c)if("destroyed"!==h){var e=m.$getNodeByKey(g);if(null!==e)a:{var f=e;e=a.getElementByKey(f.getKey());if(null===e)break a;f=f.getChildren();let k=f.length;if(k===e.__cachedChildrenLength)break a;e.__cachedChildrenLength=k;let l="1",r=1;for(let n=
40
+ 0;n<k;n++)m.$isLineBreakNode(f[n])&&(l+="\n"+ ++r);e.setAttribute("data-gutter",l)}}})}),a.registerNodeTransform(w,c=>R(c,a,b)),a.registerNodeTransform(m.TextNode,c=>Q(c,a,b)),a.registerNodeTransform(K,c=>Q(c,a,b)),a.registerCommand(m.KEY_TAB_COMMAND,c=>{let e=fa(c.shiftKey);if(null===e)return!1;c.preventDefault();a.dispatchCommand(e,void 0);return!0},m.COMMAND_PRIORITY_LOW),a.registerCommand(m.INSERT_TAB_COMMAND,()=>{let c=m.$getSelection();if(!V(c))return!1;m.$insertNodes([m.$createTabNode()]);
41
+ return!0},m.COMMAND_PRIORITY_LOW),a.registerCommand(m.INDENT_CONTENT_COMMAND,()=>X(m.INDENT_CONTENT_COMMAND),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.OUTDENT_CONTENT_COMMAND,()=>X(m.OUTDENT_CONTENT_COMMAND),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.KEY_ARROW_UP_COMMAND,c=>Y(m.KEY_ARROW_UP_COMMAND,c),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.KEY_ARROW_DOWN_COMMAND,c=>Y(m.KEY_ARROW_DOWN_COMMAND,c),m.COMMAND_PRIORITY_LOW),a.registerCommand(m.MOVE_TO_END,c=>Z(m.MOVE_TO_END,c),m.COMMAND_PRIORITY_LOW),
42
+ a.registerCommand(m.MOVE_TO_START,c=>Z(m.MOVE_TO_START,c),m.COMMAND_PRIORITY_LOW))}
@@ -4,4 +4,4 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import{addClassNamesToElement as e,isHTMLElement as t,removeClassNamesFromElement as n,mergeRegister as r}from"@lexical/utils";import{ElementNode as o,$applyNodeReplacement as i,$createParagraphNode as s,$isTextNode as l,$isTabNode as c,$createTabNode as u,$createLineBreakNode as a,TextNode as g,$isLineBreakNode as f,$getNodeByKey as p,KEY_TAB_COMMAND as h,COMMAND_PRIORITY_LOW as d,INSERT_TAB_COMMAND as m,$getSelection as x,$insertNodes as N,INDENT_CONTENT_COMMAND as y,OUTDENT_CONTENT_COMMAND as C,KEY_ARROW_UP_COMMAND as v,KEY_ARROW_DOWN_COMMAND as T,MOVE_TO_END as _,MOVE_TO_START as b,$createTextNode as j,$isRangeSelection as S}from"lexical";import*as k from"prismjs";import*as w from"prismjs/components/prism-clike.js";import*as L from"prismjs/components/prism-javascript.js";import*as P from"prismjs/components/prism-markup.js";import*as E from"prismjs/components/prism-markdown.js";import*as O from"prismjs/components/prism-c.js";import*as A from"prismjs/components/prism-css.js";import*as D from"prismjs/components/prism-objectivec.js";import*as M from"prismjs/components/prism-sql.js";import*as B from"prismjs/components/prism-python.js";import*as z from"prismjs/components/prism-rust.js";import*as H from"prismjs/components/prism-swift.js";import*as F from"prismjs/components/prism-typescript.js";import*as J from"prismjs/components/prism-java.js";import*as K from"prismjs/components/prism-cpp.js";const R=e=>null!=e&&k.languages.hasOwnProperty(e)?e:void 0;function I(e,n){for(const r of e.childNodes){if(t(r)&&r.tagName===n)return!0;I(r,n)}return!1}const q="data-highlight-language";class U extends o{static getType(){return"code"}static clone(e){return new U(e.__language,e.__key)}constructor(e,t){super(t),this.__language=R(e)}createDOM(t){const n=document.createElement("code");e(n,t.theme.code),n.setAttribute("spellcheck","false");const r=this.getLanguage();return r&&n.setAttribute(q,r),n}updateDOM(e,t,n){const r=this.__language,o=e.__language;return r?r!==o&&t.setAttribute(q,r):o&&t.removeAttribute(q),!1}exportDOM(t){const n=document.createElement("pre");e(n,t._config.theme.code),n.setAttribute("spellcheck","false");const r=this.getLanguage();return r&&n.setAttribute(q,r),{element:n}}static importDOM(){return{code:e=>null!=e.textContent&&(/\r?\n/.test(e.textContent)||I(e,"BR"))?{conversion:X,priority:1}:null,div:e=>({conversion:G,priority:1}),pre:e=>({conversion:X,priority:0}),table:e=>ee(e)?{conversion:V,priority:3}:null,td:e=>{const t=e,n=t.closest("table");return t.classList.contains("js-file-line")?{conversion:Z,priority:3}:n&&ee(n)?{conversion:Y,priority:3}:null},tr:e=>{const t=e.closest("table");return t&&ee(t)?{conversion:Y,priority:3}:null}}}static importJSON(e){const t=W(e.language);return t.setFormat(e.format),t.setIndent(e.indent),t.setDirection(e.direction),t}exportJSON(){return{...super.exportJSON(),language:this.getLanguage(),type:"code",version:1}}insertNewAfter(e,t=!0){const n=this.getChildren(),r=n.length;if(r>=2&&"\n"===n[r-1].getTextContent()&&"\n"===n[r-2].getTextContent()&&e.isCollapsed()&&e.anchor.key===this.__key&&e.anchor.offset===r){n[r-1].remove(),n[r-2].remove();const e=s();return this.insertAfter(e,t),e}const{anchor:o,focus:i}=e,g=(o.isBefore(i)?o:i).getNode();if(l(g)){let e=fe(g);const t=[];for(;;)if(c(e))t.push(u()),e=e.getNextSibling();else{if(!ge(e))break;{let n=0;const r=e.getTextContent(),o=e.getTextContentSize();for(;n<o&&" "===r[n];)n++;if(0!==n&&t.push(ae(" ".repeat(n))),n!==o)break;e=e.getNextSibling()}}const n=g.splitText(o.offset)[0],r=0===o.offset?0:1,i=n.getIndexWithinParent()+r,s=g.getParentOrThrow(),l=[a(),...t];s.splice(i,0,l);const f=t[t.length-1];f?f.select():0===o.offset?n.selectPrevious():n.getNextSibling().selectNext(0,0)}if(Q(g)){const{offset:t}=e.anchor;g.splice(t,0,[a()]),g.select(t+1,t+1)}return null}canIndent(){return!1}collapseAtStart(){const e=s();return this.getChildren().forEach((t=>e.append(t))),this.replace(e),!0}setLanguage(e){this.getWritable().__language=R(e)}getLanguage(){return this.getLatest().__language}}function W(e){return i(new U(e))}function Q(e){return e instanceof U}function X(e){let n;return t(e)&&(n=e.getAttribute(q)),{node:W(n)}}function G(e){const t=e,n=$(t);return n||function(e){let t=e.parentElement;for(;null!==t;){if($(t))return!0;t=t.parentElement}return!1}(t)?{after:t=>{const n=e.parentNode;return null!=n&&e!==n.lastChild&&t.push(a()),t},node:n?W():null}:{node:null}}function V(){return{node:W()}}function Y(){return{node:null}}function Z(e){const t=e;return{after:e=>(t.parentNode&&t.parentNode.nextSibling&&e.push(a()),e),node:null}}function $(e){return null!==e.style.fontFamily.match("monospace")}function ee(e){return e.classList.contains("js-file-line-container")}const te="javascript",ne={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript",xml:"XML"},re={cpp:"cpp",java:"java",javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain",ts:"typescript"};function oe(e){return re[e]||e}function ie(e){const t=oe(e);return ne[t]||t}const se=()=>te,le=()=>Object.keys(k.languages).filter((e=>"function"!=typeof k.languages[e])).sort();class ce extends g{constructor(e,t,n){super(e,n),this.__highlightType=t}static getType(){return"code-highlight"}static clone(e){return new ce(e.__text,e.__highlightType||void 0,e.__key)}getHighlightType(){return this.getLatest().__highlightType}canHaveFormat(){return!1}createDOM(t){const n=super.createDOM(t),r=ue(t.theme,this.__highlightType);return e(n,r),n}updateDOM(t,r,o){const i=super.updateDOM(t,r,o),s=ue(o.theme,t.__highlightType),l=ue(o.theme,this.__highlightType);return s!==l&&(s&&n(r,s),l&&e(r,l)),i}static importJSON(e){const t=ae(e.text,e.highlightType);return t.setFormat(e.format),t.setDetail(e.detail),t.setMode(e.mode),t.setStyle(e.style),t}exportJSON(){return{...super.exportJSON(),highlightType:this.getHighlightType(),type:"code-highlight",version:1}}setFormat(e){return this}isParentRequired(){return!0}createParentElementNode(){return W()}}function ue(e,t){return t&&e&&e.codeHighlight&&e.codeHighlight[t]}function ae(e,t){return i(new ce(e,t))}function ge(e){return e instanceof ce}function fe(e){let t=e,n=e;for(;ge(n)||c(n);)t=n,n=n.getPreviousSibling();return t}function pe(e){let t=e,n=e;for(;ge(n)||c(n);)t=n,n=n.getNextSibling();return t}const he={defaultLanguage:te,tokenize(e,t){return k.tokenize(e,k.languages[t||""]||k.languages[this.defaultLanguage])}};function de(e,t){let n=null,r=null,o=e,i=t,s=e.getTextContent();for(;;){if(0===i){if(o=o.getPreviousSibling(),null===o)break;if(!(ge(o)||c(o)||f(o)))throw Error("Expected a valid Code Node: CodeHighlightNode, TabNode, LineBreakNode");if(f(o)){n={node:o,offset:1};break}i=Math.max(0,o.getTextContentSize()-1),s=o.getTextContent()}else i--;const e=s[i];ge(o)&&" "!==e&&(r={node:o,offset:i})}if(null!==r)return r;let l=null;if(t<e.getTextContentSize())ge(e)&&(l=e.getTextContent()[t]);else{const t=e.getNextSibling();ge(t)&&(l=t.getTextContent()[0])}if(null!==l&&" "!==l)return n;{const r=function(e,t){let n=e,r=t,o=e.getTextContent(),i=e.getTextContentSize();for(;;){if(!ge(n)||r===i){if(n=n.getNextSibling(),null===n||f(n))return null;ge(n)&&(r=0,o=n.getTextContent(),i=n.getTextContentSize())}if(ge(n)){if(" "!==o[r])return{node:n,offset:r};r++}}}(e,t);return null!==r?r:n}}function me(e){const t=pe(e);if(f(t))throw Error("Unexpected lineBreakNode in getEndOfCodeInLine");return t}function xe(e,t,n){const r=e.getParent();Q(r)?Ce(r,t,n):ge(e)&&e.replace(j(e.__text))}function Ne(e,t){const n=t.getElementByKey(e.getKey());if(null===n)return;const r=e.getChildren(),o=r.length;if(o===n.__cachedChildrenLength)return;n.__cachedChildrenLength=o;let i="1",s=1;for(let e=0;e<o;e++)f(r[e])&&(i+="\n"+ ++s);n.setAttribute("data-gutter",i)}const ye=new Set;function Ce(e,t,n){const r=e.getKey();ye.has(r)||(ye.add(r),void 0===e.getLanguage()&&e.setLanguage(n.defaultLanguage),t.update((()=>{!function(e,t){const n=p(e);if(!Q(n)||!n.isAttached())return;const r=x();if(!S(r))return void t();const o=r.anchor,i=o.offset,s="element"===o.type&&f(n.getChildAtIndex(o.offset-1));let c=0;if(!s){const e=o.getNode();c=i+e.getPreviousSiblings().reduce(((e,t)=>e+t.getTextContentSize()),0)}if(!t())return;if(s)return void o.getNode().select(i,i);n.getChildren().some((e=>{const t=l(e);if(t||f(e)){const n=e.getTextContentSize();if(t&&n>=c)return e.select(c,c),!0;c-=n}return!1}))}(r,(()=>{const t=p(r);if(!Q(t)||!t.isAttached())return!1;const o=t.getTextContent(),i=ve(n.tokenize(o,t.getLanguage()||n.defaultLanguage)),s=function(e,t){let n=0;for(;n<e.length&&Te(e[n],t[n]);)n++;const r=e.length,o=t.length,i=Math.min(r,o)-n;let s=0;for(;s<i;)if(s++,!Te(e[r-s],t[o-s])){s--;break}const l=n,c=r-s,u=t.slice(n,o-s);return{from:l,nodesForReplacement:u,to:c}}(t.getChildren(),i),{from:l,to:c,nodesForReplacement:u}=s;return!(l===c&&!u.length)&&(e.splice(l,c-l,u),!0)}))}),{onUpdate:()=>{ye.delete(r)},skipTransforms:!0}))}function ve(e,t){const n=[];for(const r of e)if("string"==typeof r){const e=r.split(/(\n|\t)/),o=e.length;for(let r=0;r<o;r++){const o=e[r];"\n"===o||"\r\n"===o?n.push(a()):"\t"===o?n.push(u()):o.length>0&&n.push(ae(o,t))}}else{const{content:e}=r;"string"==typeof e?n.push(...ve([e],r.type)):Array.isArray(e)&&n.push(...ve(e,r.type))}return n}function Te(e,t){return ge(e)&&ge(t)&&e.__text===t.__text&&e.__highlightType===t.__highlightType||c(e)&&c(t)||f(e)&&f(t)}function _e(e){if(!S(e))return!1;const t=e.anchor.getNode(),n=e.focus.getNode();if(t.is(n)&&Q(t))return!0;const r=t.getParent();return Q(r)&&r.is(n.getParent())}function be(e){const t=e.getNodes(),n=[[]];if(1===t.length&&Q(t[0]))return n;let r=n[0];for(let e=0;e<t.length;e++){const o=t[e];if(!(ge(o)||c(o)||f(o)))throw Error("Expected selection to be inside CodeBlock and consisting of CodeHighlightNode, TabNode and LineBreakNode");f(o)?0!==e&&r.length>0&&(r=[],n.push(r)):r.push(o)}return n}function je(e){const t=x();if(!S(t)||!_e(t))return!1;const n=be(t),r=n.length;if(n.length>1){for(let t=0;t<r;t++){const r=n[t];if(r.length>0){let n=r[0];0===t&&(n=fe(n)),null!==n&&(e===y?n.insertBefore(u()):c(n)&&n.remove())}}return!0}const o=t.getNodes()[0];if(!(Q(o)||ge(o)||c(o)||f(o)))throw Error("Expected selection firstNode to be CodeHighlightNode or CodeTabNode");if(Q(o))return e===y&&t.insertNodes([u()]),!0;const i=fe(o);if(null===i)throw Error("Expected getFirstCodeNodeOfLine to return a valid Code Node");return e===y?f(i)?i.insertAfter(u()):i.insertBefore(u()):c(i)&&i.remove(),!0}function Se(e,t){const n=x();if(!S(n))return!1;const{anchor:r,focus:o}=n,i=r.offset,s=o.offset,l=r.getNode(),u=o.getNode(),a=e===v;if(!_e(n)||!ge(l)&&!c(l)||!ge(u)&&!c(u))return!1;if(!t.altKey){if(n.isCollapsed()){const e=l.getParentOrThrow();if(a&&0===i&&null===l.getPreviousSibling()){if(null===e.getPreviousSibling())return e.selectPrevious(),t.preventDefault(),!0}else if(!a&&i===l.getTextContentSize()&&null===l.getNextSibling()){if(null===e.getNextSibling())return e.selectNext(),t.preventDefault(),!0}}return!1}let g,p;if(l.isBefore(u)?(g=fe(l),p=pe(u)):(g=fe(u),p=pe(l)),null==g||null==p)return!1;const h=g.getNodesBetween(p);for(let e=0;e<h.length;e++){const t=h[e];if(!ge(t)&&!c(t)&&!f(t))return!1}t.preventDefault(),t.stopPropagation();const d=a?g.getPreviousSibling():p.getNextSibling();if(!f(d))return!0;const m=a?d.getPreviousSibling():d.getNextSibling();if(null==m)return!0;const N=ge(m)||c(m)||f(m)?a?fe(m):pe(m):null;let y=null!=N?N:m;return d.remove(),h.forEach((e=>e.remove())),e===v?(h.forEach((e=>y.insertBefore(e))),y.insertBefore(d)):(y.insertAfter(d),y=d,h.forEach((e=>{y.insertAfter(e),y=e}))),n.setTextNodeRange(l,i,u,s),!0}function ke(e,t){const n=x();if(!S(n))return!1;const{anchor:r,focus:o}=n,i=r.getNode(),s=o.getNode(),l=e===b;if(!ge(i)&&!c(i)||!ge(s)&&!c(s))return!1;if(l){const e=de(s,o.offset);if(null!==e){const{node:t,offset:r}=e;f(t)?t.selectNext(0,0):n.setTextNodeRange(t,r,t,r)}else s.getParentOrThrow().selectStart()}else{me(s).select()}return t.preventDefault(),t.stopPropagation(),!0}function we(e,t){if(!e.hasNodes([U,ce]))throw new Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return null==t&&(t=he),r(e.registerMutationListener(U,(t=>{e.update((()=>{for(const[n,r]of t)if("destroyed"!==r){const t=p(n);null!==t&&Ne(t,e)}}))})),e.registerNodeTransform(U,(n=>Ce(n,e,t))),e.registerNodeTransform(g,(n=>xe(n,e,t))),e.registerNodeTransform(ce,(n=>xe(n,e,t))),e.registerCommand(h,(t=>{const n=function(e){const t=x();if(!S(t)||!_e(t))return null;const n=e?C:y,r=e?C:m;if(be(t).length>1)return n;const o=t.getNodes()[0];if(!(Q(o)||ge(o)||c(o)||f(o)))throw Error("Expected selection firstNode to be CodeHighlightNode or TabNode");if(Q(o))return n;const i=fe(o),s=pe(o),l=t.anchor,u=t.focus;let a,g;return u.isBefore(l)?(a=u,g=l):(a=l,g=u),null!==i&&null!==s&&a.key===i.getKey()&&0===a.offset&&g.key===s.getKey()&&g.offset===s.getTextContentSize()?n:r}(t.shiftKey);return null!==n&&(t.preventDefault(),e.dispatchCommand(n,void 0),!0)}),d),e.registerCommand(m,(()=>!!_e(x())&&(N([u()]),!0)),d),e.registerCommand(y,(e=>je(y)),d),e.registerCommand(C,(e=>je(C)),d),e.registerCommand(v,(e=>Se(v,e)),d),e.registerCommand(T,(e=>Se(T,e)),d),e.registerCommand(_,(e=>ke(_,e)),d),e.registerCommand(b,(e=>ke(b,e)),d))}export{ae as $createCodeHighlightNode,W as $createCodeNode,ge as $isCodeHighlightNode,Q as $isCodeNode,ne as CODE_LANGUAGE_FRIENDLY_NAME_MAP,re as CODE_LANGUAGE_MAP,ce as CodeHighlightNode,U as CodeNode,te as DEFAULT_CODE_LANGUAGE,he as PrismTokenizer,le as getCodeLanguages,se as getDefaultCodeLanguage,me as getEndOfCodeInLine,fe as getFirstCodeNodeOfLine,ie as getLanguageFriendlyName,pe as getLastCodeNodeOfLine,de as getStartOfCodeInLine,oe as normalizeCodeLang,we as registerCodeHighlighting};
7
+ import"prismjs";import"prismjs/components/prism-clike.js";import"prismjs/components/prism-javascript.js";import"prismjs/components/prism-markup.js";import"prismjs/components/prism-markdown.js";import"prismjs/components/prism-c.js";import"prismjs/components/prism-css.js";import"prismjs/components/prism-objectivec.js";import"prismjs/components/prism-sql.js";import"prismjs/components/prism-python.js";import"prismjs/components/prism-rust.js";import"prismjs/components/prism-swift.js";import"prismjs/components/prism-typescript.js";import"prismjs/components/prism-java.js";import"prismjs/components/prism-cpp.js";import{isHTMLElement as e,addClassNamesToElement as t,removeClassNamesFromElement as n,mergeRegister as r}from"@lexical/utils";import{ElementNode as o,$applyNodeReplacement as i,$createParagraphNode as s,$isTextNode as l,$isTabNode as c,$createTabNode as u,$createLineBreakNode as g,TextNode as a,$isLineBreakNode as f,$createTextNode as p,$getNodeByKey as d,$getSelection as h,$isRangeSelection as m,INDENT_CONTENT_COMMAND as x,OUTDENT_CONTENT_COMMAND as N,INSERT_TAB_COMMAND as y,KEY_ARROW_UP_COMMAND as C,MOVE_TO_START as v,KEY_TAB_COMMAND as T,COMMAND_PRIORITY_LOW as _,$insertNodes as b,KEY_ARROW_DOWN_COMMAND as j,MOVE_TO_END as S}from"lexical";const w=e=>null!=e&&window.Prism.languages.hasOwnProperty(e)?e:void 0;function k(t,n){for(const r of t.childNodes){if(e(r)&&r.tagName===n)return!0;k(r,n)}return!1}const P="data-highlight-language";class L extends o{static getType(){return"code"}static clone(e){return new L(e.__language,e.__key)}constructor(e,t){super(t),this.__language=w(e)}createDOM(e){const n=document.createElement("code");t(n,e.theme.code),n.setAttribute("spellcheck","false");const r=this.getLanguage();return r&&n.setAttribute(P,r),n}updateDOM(e,t,n){const r=this.__language,o=e.__language;return r?r!==o&&t.setAttribute(P,r):o&&t.removeAttribute(P),!1}exportDOM(e){const n=document.createElement("pre");t(n,e._config.theme.code),n.setAttribute("spellcheck","false");const r=this.getLanguage();return r&&n.setAttribute(P,r),{element:n}}static importDOM(){return{code:e=>null!=e.textContent&&(/\r?\n/.test(e.textContent)||k(e,"BR"))?{conversion:A,priority:1}:null,div:e=>({conversion:D,priority:1}),pre:e=>({conversion:A,priority:0}),table:e=>F(e)?{conversion:M,priority:3}:null,td:e=>{const t=e,n=t.closest("table");return t.classList.contains("js-file-line")?{conversion:z,priority:3}:n&&F(n)?{conversion:B,priority:3}:null},tr:e=>{const t=e.closest("table");return t&&F(t)?{conversion:B,priority:3}:null}}}static importJSON(e){const t=E(e.language);return t.setFormat(e.format),t.setIndent(e.indent),t.setDirection(e.direction),t}exportJSON(){return{...super.exportJSON(),language:this.getLanguage(),type:"code",version:1}}insertNewAfter(e,t=!0){const n=this.getChildren(),r=n.length;if(r>=2&&"\n"===n[r-1].getTextContent()&&"\n"===n[r-2].getTextContent()&&e.isCollapsed()&&e.anchor.key===this.__key&&e.anchor.offset===r){n[r-1].remove(),n[r-2].remove();const e=s();return this.insertAfter(e,t),e}const{anchor:o,focus:i}=e,a=(o.isBefore(i)?o:i).getNode();if(l(a)){let e=Y(a);const t=[];for(;;)if(c(e))t.push(u()),e=e.getNextSibling();else{if(!V(e))break;{let n=0;const r=e.getTextContent(),o=e.getTextContentSize();for(;n<o&&" "===r[n];)n++;if(0!==n&&t.push(G(" ".repeat(n))),n!==o)break;e=e.getNextSibling()}}const n=a.splitText(o.offset)[0],r=0===o.offset?0:1,i=n.getIndexWithinParent()+r,s=a.getParentOrThrow(),l=[g(),...t];s.splice(i,0,l);const f=t[t.length-1];f?f.select():0===o.offset?n.selectPrevious():n.getNextSibling().selectNext(0,0)}if(O(a)){const{offset:t}=e.anchor;a.splice(t,0,[g()]),a.select(t+1,t+1)}return null}canIndent(){return!1}collapseAtStart(){const e=s();return this.getChildren().forEach((t=>e.append(t))),this.replace(e),!0}setLanguage(e){this.getWritable().__language=w(e)}getLanguage(){return this.getLatest().__language}}function E(e){return i(new L(e))}function O(e){return e instanceof L}function A(t){let n;return e(t)&&(n=t.getAttribute(P)),{node:E(n)}}function D(e){const t=e,n=H(t);return n||function(e){let t=e.parentElement;for(;null!==t;){if(H(t))return!0;t=t.parentElement}return!1}(t)?{after:t=>{const n=e.parentNode;return null!=n&&e!==n.lastChild&&t.push(g()),t},node:n?E():null}:{node:null}}function M(){return{node:E()}}function B(){return{node:null}}function z(e){const t=e;return{after:e=>(t.parentNode&&t.parentNode.nextSibling&&e.push(g()),e),node:null}}function H(e){return null!==e.style.fontFamily.match("monospace")}function F(e){return e.classList.contains("js-file-line-container")}const J="javascript",K={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript",xml:"XML"},R={cpp:"cpp",java:"java",javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain",ts:"typescript"};function I(e){return R[e]||e}function q(e){const t=I(e);return K[t]||t}const U=()=>J,W=()=>Object.keys(window.Prism.languages).filter((e=>"function"!=typeof window.Prism.languages[e])).sort();class Q extends a{constructor(e,t,n){super(e,n),this.__highlightType=t}static getType(){return"code-highlight"}static clone(e){return new Q(e.__text,e.__highlightType||void 0,e.__key)}getHighlightType(){return this.getLatest().__highlightType}canHaveFormat(){return!1}createDOM(e){const n=super.createDOM(e),r=X(e.theme,this.__highlightType);return t(n,r),n}updateDOM(e,r,o){const i=super.updateDOM(e,r,o),s=X(o.theme,e.__highlightType),l=X(o.theme,this.__highlightType);return s!==l&&(s&&n(r,s),l&&t(r,l)),i}static importJSON(e){const t=G(e.text,e.highlightType);return t.setFormat(e.format),t.setDetail(e.detail),t.setMode(e.mode),t.setStyle(e.style),t}exportJSON(){return{...super.exportJSON(),highlightType:this.getHighlightType(),type:"code-highlight",version:1}}setFormat(e){return this}isParentRequired(){return!0}createParentElementNode(){return E()}}function X(e,t){return t&&e&&e.codeHighlight&&e.codeHighlight[t]}function G(e,t){return i(new Q(e,t))}function V(e){return e instanceof Q}function Y(e){let t=e,n=e;for(;V(n)||c(n);)t=n,n=n.getPreviousSibling();return t}function Z(e){let t=e,n=e;for(;V(n)||c(n);)t=n,n=n.getNextSibling();return t}const $={defaultLanguage:J,tokenize(e,t){return window.Prism.tokenize(e,window.Prism.languages[t||""]||window.Prism.languages[this.defaultLanguage])}};function ee(e,t){let n=null,r=null,o=e,i=t,s=e.getTextContent();for(;;){if(0===i){if(o=o.getPreviousSibling(),null===o)break;if(!(V(o)||c(o)||f(o)))throw Error("Expected a valid Code Node: CodeHighlightNode, TabNode, LineBreakNode");if(f(o)){n={node:o,offset:1};break}i=Math.max(0,o.getTextContentSize()-1),s=o.getTextContent()}else i--;const e=s[i];V(o)&&" "!==e&&(r={node:o,offset:i})}if(null!==r)return r;let l=null;if(t<e.getTextContentSize())V(e)&&(l=e.getTextContent()[t]);else{const t=e.getNextSibling();V(t)&&(l=t.getTextContent()[0])}if(null!==l&&" "!==l)return n;{const r=function(e,t){let n=e,r=t,o=e.getTextContent(),i=e.getTextContentSize();for(;;){if(!V(n)||r===i){if(n=n.getNextSibling(),null===n||f(n))return null;V(n)&&(r=0,o=n.getTextContent(),i=n.getTextContentSize())}if(V(n)){if(" "!==o[r])return{node:n,offset:r};r++}}}(e,t);return null!==r?r:n}}function te(e){const t=Z(e);if(f(t))throw Error("Unexpected lineBreakNode in getEndOfCodeInLine");return t}function ne(e,t,n){const r=e.getParent();O(r)?ie(r,t,n):V(e)&&e.replace(p(e.__text))}function re(e,t){const n=t.getElementByKey(e.getKey());if(null===n)return;const r=e.getChildren(),o=r.length;if(o===n.__cachedChildrenLength)return;n.__cachedChildrenLength=o;let i="1",s=1;for(let e=0;e<o;e++)f(r[e])&&(i+="\n"+ ++s);n.setAttribute("data-gutter",i)}const oe=new Set;function ie(e,t,n){const r=e.getKey();oe.has(r)||(oe.add(r),void 0===e.getLanguage()&&e.setLanguage(n.defaultLanguage),t.update((()=>{!function(e,t){const n=d(e);if(!O(n)||!n.isAttached())return;const r=h();if(!m(r))return void t();const o=r.anchor,i=o.offset,s="element"===o.type&&f(n.getChildAtIndex(o.offset-1));let c=0;if(!s){const e=o.getNode();c=i+e.getPreviousSiblings().reduce(((e,t)=>e+t.getTextContentSize()),0)}if(!t())return;if(s)return void o.getNode().select(i,i);n.getChildren().some((e=>{const t=l(e);if(t||f(e)){const n=e.getTextContentSize();if(t&&n>=c)return e.select(c,c),!0;c-=n}return!1}))}(r,(()=>{const t=d(r);if(!O(t)||!t.isAttached())return!1;const o=t.getTextContent(),i=se(n.tokenize(o,t.getLanguage()||n.defaultLanguage)),s=function(e,t){let n=0;for(;n<e.length&&le(e[n],t[n]);)n++;const r=e.length,o=t.length,i=Math.min(r,o)-n;let s=0;for(;s<i;)if(s++,!le(e[r-s],t[o-s])){s--;break}const l=n,c=r-s,u=t.slice(n,o-s);return{from:l,nodesForReplacement:u,to:c}}(t.getChildren(),i),{from:l,to:c,nodesForReplacement:u}=s;return!(l===c&&!u.length)&&(e.splice(l,c-l,u),!0)}))}),{onUpdate:()=>{oe.delete(r)},skipTransforms:!0}))}function se(e,t){const n=[];for(const r of e)if("string"==typeof r){const e=r.split(/(\n|\t)/),o=e.length;for(let r=0;r<o;r++){const o=e[r];"\n"===o||"\r\n"===o?n.push(g()):"\t"===o?n.push(u()):o.length>0&&n.push(G(o,t))}}else{const{content:e}=r;"string"==typeof e?n.push(...se([e],r.type)):Array.isArray(e)&&n.push(...se(e,r.type))}return n}function le(e,t){return V(e)&&V(t)&&e.__text===t.__text&&e.__highlightType===t.__highlightType||c(e)&&c(t)||f(e)&&f(t)}function ce(e){if(!m(e))return!1;const t=e.anchor.getNode(),n=e.focus.getNode();if(t.is(n)&&O(t))return!0;const r=t.getParent();return O(r)&&r.is(n.getParent())}function ue(e){const t=e.getNodes(),n=[[]];if(1===t.length&&O(t[0]))return n;let r=n[0];for(let e=0;e<t.length;e++){const o=t[e];if(!(V(o)||c(o)||f(o)))throw Error("Expected selection to be inside CodeBlock and consisting of CodeHighlightNode, TabNode and LineBreakNode");f(o)?0!==e&&r.length>0&&(r=[],n.push(r)):r.push(o)}return n}function ge(e){const t=h();if(!m(t)||!ce(t))return!1;const n=ue(t),r=n.length;if(n.length>1){for(let t=0;t<r;t++){const r=n[t];if(r.length>0){let n=r[0];0===t&&(n=Y(n)),null!==n&&(e===x?n.insertBefore(u()):c(n)&&n.remove())}}return!0}const o=t.getNodes()[0];if(!(O(o)||V(o)||c(o)||f(o)))throw Error("Expected selection firstNode to be CodeHighlightNode or CodeTabNode");if(O(o))return e===x&&t.insertNodes([u()]),!0;const i=Y(o);if(null===i)throw Error("Expected getFirstCodeNodeOfLine to return a valid Code Node");return e===x?f(i)?i.insertAfter(u()):i.insertBefore(u()):c(i)&&i.remove(),!0}function ae(e,t){const n=h();if(!m(n))return!1;const{anchor:r,focus:o}=n,i=r.offset,s=o.offset,l=r.getNode(),u=o.getNode(),g=e===C;if(!ce(n)||!V(l)&&!c(l)||!V(u)&&!c(u))return!1;if(!t.altKey){if(n.isCollapsed()){const e=l.getParentOrThrow();if(g&&0===i&&null===l.getPreviousSibling()){if(null===e.getPreviousSibling())return e.selectPrevious(),t.preventDefault(),!0}else if(!g&&i===l.getTextContentSize()&&null===l.getNextSibling()){if(null===e.getNextSibling())return e.selectNext(),t.preventDefault(),!0}}return!1}let a,p;if(l.isBefore(u)?(a=Y(l),p=Z(u)):(a=Y(u),p=Z(l)),null==a||null==p)return!1;const d=a.getNodesBetween(p);for(let e=0;e<d.length;e++){const t=d[e];if(!V(t)&&!c(t)&&!f(t))return!1}t.preventDefault(),t.stopPropagation();const x=g?a.getPreviousSibling():p.getNextSibling();if(!f(x))return!0;const N=g?x.getPreviousSibling():x.getNextSibling();if(null==N)return!0;const y=V(N)||c(N)||f(N)?g?Y(N):Z(N):null;let v=null!=y?y:N;return x.remove(),d.forEach((e=>e.remove())),e===C?(d.forEach((e=>v.insertBefore(e))),v.insertBefore(x)):(v.insertAfter(x),v=x,d.forEach((e=>{v.insertAfter(e),v=e}))),n.setTextNodeRange(l,i,u,s),!0}function fe(e,t){const n=h();if(!m(n))return!1;const{anchor:r,focus:o}=n,i=r.getNode(),s=o.getNode(),l=e===v;if(!V(i)&&!c(i)||!V(s)&&!c(s))return!1;if(l){const e=ee(s,o.offset);if(null!==e){const{node:t,offset:r}=e;f(t)?t.selectNext(0,0):n.setTextNodeRange(t,r,t,r)}else s.getParentOrThrow().selectStart()}else{te(s).select()}return t.preventDefault(),t.stopPropagation(),!0}function pe(e,t){if(!e.hasNodes([L,Q]))throw new Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return null==t&&(t=$),r(e.registerMutationListener(L,(t=>{e.update((()=>{for(const[n,r]of t)if("destroyed"!==r){const t=d(n);null!==t&&re(t,e)}}))})),e.registerNodeTransform(L,(n=>ie(n,e,t))),e.registerNodeTransform(a,(n=>ne(n,e,t))),e.registerNodeTransform(Q,(n=>ne(n,e,t))),e.registerCommand(T,(t=>{const n=function(e){const t=h();if(!m(t)||!ce(t))return null;const n=e?N:x,r=e?N:y;if(ue(t).length>1)return n;const o=t.getNodes()[0];if(!(O(o)||V(o)||c(o)||f(o)))throw Error("Expected selection firstNode to be CodeHighlightNode or TabNode");if(O(o))return n;const i=Y(o),s=Z(o),l=t.anchor,u=t.focus;let g,a;return u.isBefore(l)?(g=u,a=l):(g=l,a=u),null!==i&&null!==s&&g.key===i.getKey()&&0===g.offset&&a.key===s.getKey()&&a.offset===s.getTextContentSize()?n:r}(t.shiftKey);return null!==n&&(t.preventDefault(),e.dispatchCommand(n,void 0),!0)}),_),e.registerCommand(y,(()=>!!ce(h())&&(b([u()]),!0)),_),e.registerCommand(x,(e=>ge(x)),_),e.registerCommand(N,(e=>ge(N)),_),e.registerCommand(C,(e=>ae(C,e)),_),e.registerCommand(j,(e=>ae(j,e)),_),e.registerCommand(S,(e=>fe(S,e)),_),e.registerCommand(v,(e=>fe(v,e)),_))}export{G as $createCodeHighlightNode,E as $createCodeNode,V as $isCodeHighlightNode,O as $isCodeNode,K as CODE_LANGUAGE_FRIENDLY_NAME_MAP,R as CODE_LANGUAGE_MAP,Q as CodeHighlightNode,L as CodeNode,J as DEFAULT_CODE_LANGUAGE,$ as PrismTokenizer,W as getCodeLanguages,U as getDefaultCodeLanguage,te as getEndOfCodeInLine,Y as getFirstCodeNodeOfLine,q as getLanguageFriendlyName,Z as getLastCodeNodeOfLine,ee as getStartOfCodeInLine,I as normalizeCodeLang,pe as registerCodeHighlighting};
package/index.d.ts CHANGED
@@ -1,11 +1,9 @@
1
- /** @module @lexical/code */
2
1
  /**
3
2
  * Copyright (c) Meta Platforms, Inc. and affiliates.
4
3
  *
5
4
  * This source code is licensed under the MIT license found in the
6
5
  * LICENSE file in the root directory of this source tree.
7
6
  *
8
- *
9
7
  */
10
8
  export { getEndOfCodeInLine, getStartOfCodeInLine, PrismTokenizer, registerCodeHighlighting, } from './CodeHighlighter';
11
9
  export { $createCodeHighlightNode, $isCodeHighlightNode, CODE_LANGUAGE_FRIENDLY_NAME_MAP, CODE_LANGUAGE_MAP, CodeHighlightNode, DEFAULT_CODE_LANGUAGE, getCodeLanguages, getDefaultCodeLanguage, getFirstCodeNodeOfLine, getLanguageFriendlyName, getLastCodeNodeOfLine, normalizeCodeLang, } from './CodeHighlightNode';
package/package.json CHANGED
@@ -8,12 +8,12 @@
8
8
  "code"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.14.3",
11
+ "version": "0.14.4",
12
12
  "main": "LexicalCode.js",
13
13
  "types": "index.d.ts",
14
14
  "dependencies": {
15
- "@lexical/utils": "0.14.3",
16
- "lexical": "0.14.3",
15
+ "@lexical/utils": "0.14.4",
16
+ "lexical": "0.14.4",
17
17
  "prismjs": "^1.27.0"
18
18
  },
19
19
  "repository": {
@@ -30,11 +30,15 @@
30
30
  ".": {
31
31
  "import": {
32
32
  "types": "./index.d.ts",
33
+ "development": "./LexicalCode.dev.mjs",
34
+ "production": "./LexicalCode.prod.mjs",
33
35
  "node": "./LexicalCode.node.mjs",
34
36
  "default": "./LexicalCode.mjs"
35
37
  },
36
38
  "require": {
37
39
  "types": "./index.d.ts",
40
+ "development": "./LexicalCode.dev.js",
41
+ "production": "./LexicalCode.prod.js",
38
42
  "default": "./LexicalCode.js"
39
43
  }
40
44
  }