@lexical/code-prism 0.43.0 → 0.43.1-nightly.20260413.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.
@@ -20,4 +20,21 @@ export interface Tokenizer {
20
20
  }
21
21
  export declare const PrismTokenizer: Tokenizer;
22
22
  export declare function registerCodeHighlighting(editor: LexicalEditor, tokenizer?: Tokenizer): () => void;
23
+ export interface CodePrismConfig {
24
+ /**
25
+ * When true, the Prism code highlighter is not registered on the editor.
26
+ * This signal can be flipped at runtime to enable or disable the
27
+ * highlighter, for example to switch between the Prism and Shiki
28
+ * highlighters without rebuilding the editor.
29
+ */
30
+ disabled: boolean;
31
+ tokenizer: Tokenizer;
32
+ }
33
+ /**
34
+ * Add code highlighting support for code blocks with Prism.
35
+ *
36
+ * {@link CodeExtension} is a dependency, so the required `CodeNode` and
37
+ * `CodeHighlightNode` nodes are registered automatically.
38
+ */
39
+ export declare const CodePrismExtension: import("lexical").LexicalExtension<CodePrismConfig, "@lexical/code-prism", import("@lexical/extension").NamedSignalsOutput<CodePrismConfig>, unknown>;
23
40
  export {};
@@ -9,6 +9,7 @@
9
9
  'use strict';
10
10
 
11
11
  var codeCore = require('@lexical/code-core');
12
+ var extension = require('@lexical/extension');
12
13
  var lexical = require('lexical');
13
14
  require('prismjs');
14
15
  require('prismjs/components/prism-clike');
@@ -920,6 +921,30 @@ function registerCodeHighlighting(editor, tokenizer) {
920
921
  }, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.MOVE_TO_START, event => $handleMoveTo(lexical.MOVE_TO_START, event), lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.MOVE_TO_END, event => $handleMoveTo(lexical.MOVE_TO_END, event), lexical.COMMAND_PRIORITY_LOW));
921
922
  return lexical.mergeRegister(...registrations);
922
923
  }
924
+ /**
925
+ * Add code highlighting support for code blocks with Prism.
926
+ *
927
+ * {@link CodeExtension} is a dependency, so the required `CodeNode` and
928
+ * `CodeHighlightNode` nodes are registered automatically.
929
+ */
930
+ const CodePrismExtension = lexical.defineExtension({
931
+ build: (editor, config) => extension.namedSignals(config),
932
+ config: lexical.safeCast({
933
+ disabled: false,
934
+ tokenizer: PrismTokenizer
935
+ }),
936
+ dependencies: [codeCore.CodeExtension],
937
+ name: '@lexical/code-prism',
938
+ register: (editor, config, state) => {
939
+ const stores = state.getOutput();
940
+ return extension.effect(() => {
941
+ if (stores.disabled.value) {
942
+ return;
943
+ }
944
+ return registerCodeHighlighting(editor, stores.tokenizer.value);
945
+ });
946
+ }
947
+ });
923
948
 
924
949
  /**
925
950
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -931,6 +956,7 @@ function registerCodeHighlighting(editor, tokenizer) {
931
956
 
932
957
  exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP = CODE_LANGUAGE_FRIENDLY_NAME_MAP;
933
958
  exports.CODE_LANGUAGE_MAP = CODE_LANGUAGE_MAP;
959
+ exports.CodePrismExtension = CodePrismExtension;
934
960
  exports.PrismTokenizer = PrismTokenizer;
935
961
  exports.getCodeLanguageOptions = getCodeLanguageOptions;
936
962
  exports.getCodeLanguages = getCodeLanguages;
@@ -6,8 +6,9 @@
6
6
  *
7
7
  */
8
8
 
9
- import { $createCodeHighlightNode, DEFAULT_CODE_LANGUAGE, $isCodeNode, $isCodeHighlightNode, $getFirstCodeNodeOfLine, $getLastCodeNodeOfLine, $getCodeLineDirection, $getStartOfCodeInLine, $getEndOfCodeInLine, CodeNode, CodeHighlightNode } from '@lexical/code-core';
10
- import { $createLineBreakNode, $createTabNode, $createTextNode, $isLineBreakNode, $onUpdate, $getNodeByKey, $getSelection, $isRangeSelection, $isTextNode, $isTabNode, $createPoint, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND, INSERT_TAB_COMMAND, $setSelectionFromCaretRange, $getCaretRangeInDirection, $getCaretRange, $getTextPointCaret, $normalizeCaret, $getSiblingCaret, KEY_ARROW_UP_COMMAND, MOVE_TO_START, TextNode, KEY_TAB_COMMAND, COMMAND_PRIORITY_LOW, $insertNodes, $getRoot, KEY_ARROW_DOWN_COMMAND, MOVE_TO_END, mergeRegister } from 'lexical';
9
+ import { $createCodeHighlightNode, DEFAULT_CODE_LANGUAGE, $isCodeNode, $isCodeHighlightNode, $getFirstCodeNodeOfLine, $getLastCodeNodeOfLine, $getCodeLineDirection, $getStartOfCodeInLine, $getEndOfCodeInLine, CodeNode, CodeHighlightNode, CodeExtension } from '@lexical/code-core';
10
+ import { effect, namedSignals } from '@lexical/extension';
11
+ import { $createLineBreakNode, $createTabNode, $createTextNode, $isLineBreakNode, $onUpdate, $getNodeByKey, $getSelection, $isRangeSelection, $isTextNode, $isTabNode, $createPoint, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND, INSERT_TAB_COMMAND, $setSelectionFromCaretRange, $getCaretRangeInDirection, $getCaretRange, $getTextPointCaret, $normalizeCaret, $getSiblingCaret, KEY_ARROW_UP_COMMAND, MOVE_TO_START, TextNode, KEY_TAB_COMMAND, COMMAND_PRIORITY_LOW, $insertNodes, $getRoot, KEY_ARROW_DOWN_COMMAND, MOVE_TO_END, mergeRegister, defineExtension, safeCast } from 'lexical';
11
12
  import 'prismjs';
12
13
  import 'prismjs/components/prism-clike.js';
13
14
  import 'prismjs/components/prism-javascript.js';
@@ -918,6 +919,30 @@ function registerCodeHighlighting(editor, tokenizer) {
918
919
  }, COMMAND_PRIORITY_LOW), editor.registerCommand(MOVE_TO_START, event => $handleMoveTo(MOVE_TO_START, event), COMMAND_PRIORITY_LOW), editor.registerCommand(MOVE_TO_END, event => $handleMoveTo(MOVE_TO_END, event), COMMAND_PRIORITY_LOW));
919
920
  return mergeRegister(...registrations);
920
921
  }
922
+ /**
923
+ * Add code highlighting support for code blocks with Prism.
924
+ *
925
+ * {@link CodeExtension} is a dependency, so the required `CodeNode` and
926
+ * `CodeHighlightNode` nodes are registered automatically.
927
+ */
928
+ const CodePrismExtension = defineExtension({
929
+ build: (editor, config) => namedSignals(config),
930
+ config: safeCast({
931
+ disabled: false,
932
+ tokenizer: PrismTokenizer
933
+ }),
934
+ dependencies: [CodeExtension],
935
+ name: '@lexical/code-prism',
936
+ register: (editor, config, state) => {
937
+ const stores = state.getOutput();
938
+ return effect(() => {
939
+ if (stores.disabled.value) {
940
+ return;
941
+ }
942
+ return registerCodeHighlighting(editor, stores.tokenizer.value);
943
+ });
944
+ }
945
+ });
921
946
 
922
947
  /**
923
948
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -927,4 +952,4 @@ function registerCodeHighlighting(editor, tokenizer) {
927
952
  *
928
953
  */
929
954
 
930
- export { CODE_LANGUAGE_FRIENDLY_NAME_MAP, CODE_LANGUAGE_MAP, PrismTokenizer, getCodeLanguageOptions, getCodeLanguages, getCodeThemeOptions, getLanguageFriendlyName, isCodeLanguageLoaded, loadCodeLanguage, normalizeCodeLanguage, registerCodeHighlighting };
955
+ export { CODE_LANGUAGE_FRIENDLY_NAME_MAP, CODE_LANGUAGE_MAP, CodePrismExtension, PrismTokenizer, getCodeLanguageOptions, getCodeLanguages, getCodeThemeOptions, getLanguageFriendlyName, isCodeLanguageLoaded, loadCodeLanguage, normalizeCodeLanguage, registerCodeHighlighting };
@@ -11,7 +11,8 @@
11
11
  * LexicalCodePrism
12
12
  */
13
13
 
14
- import type {LexicalEditor} from 'lexical';
14
+ import type {LexicalEditor, LexicalExtension} from 'lexical';
15
+ import type {NamedSignalsOutput} from '@lexical/extension';
15
16
 
16
17
  type TokenContent = string | Token | (string | Token)[];
17
18
  export interface Token {
@@ -29,6 +30,12 @@ declare export function registerCodeHighlighting(
29
30
  tokenizer?: Tokenizer,
30
31
  ): () => void;
31
32
 
33
+ export type CodePrismConfig = {
34
+ disabled: boolean,
35
+ tokenizer: Tokenizer,
36
+ };
37
+ declare export var CodePrismExtension: LexicalExtension<CodePrismConfig, "@lexical/code-prism", NamedSignalsOutput<CodePrismConfig>, void>;
38
+
32
39
  declare export function normalizeCodeLanguage(lang: string): string;
33
40
 
34
41
  declare export var getCodeLanguages: () => Array<string>;
@@ -11,6 +11,7 @@ import * as modProd from './LexicalCodePrism.prod.mjs';
11
11
  const mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;
12
12
  export const CODE_LANGUAGE_FRIENDLY_NAME_MAP = mod.CODE_LANGUAGE_FRIENDLY_NAME_MAP;
13
13
  export const CODE_LANGUAGE_MAP = mod.CODE_LANGUAGE_MAP;
14
+ export const CodePrismExtension = mod.CodePrismExtension;
14
15
  export const PrismTokenizer = mod.PrismTokenizer;
15
16
  export const getCodeLanguageOptions = mod.getCodeLanguageOptions;
16
17
  export const getCodeLanguages = mod.getCodeLanguages;
@@ -9,6 +9,7 @@
9
9
  const mod = await (process.env.NODE_ENV !== 'production' ? import('./LexicalCodePrism.dev.mjs') : import('./LexicalCodePrism.prod.mjs'));
10
10
  export const CODE_LANGUAGE_FRIENDLY_NAME_MAP = mod.CODE_LANGUAGE_FRIENDLY_NAME_MAP;
11
11
  export const CODE_LANGUAGE_MAP = mod.CODE_LANGUAGE_MAP;
12
+ export const CodePrismExtension = mod.CodePrismExtension;
12
13
  export const PrismTokenizer = mod.PrismTokenizer;
13
14
  export const getCodeLanguageOptions = mod.getCodeLanguageOptions;
14
15
  export const getCodeLanguages = mod.getCodeLanguages;
@@ -6,4 +6,4 @@
6
6
  *
7
7
  */
8
8
 
9
- "use strict";var e=require("@lexical/code-core"),t=require("lexical");function n(e,...t){const n=new URL("https://lexical.dev/docs/error"),o=new URLSearchParams;o.append("code",e);for(const e of t)o.append("v",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}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-powershell"),require("prismjs/components/prism-python"),require("prismjs/components/prism-rust"),require("prismjs/components/prism-swift"),require("prismjs/components/prism-typescript"),require("prismjs/components/prism-java"),require("prismjs/components/prism-cpp"),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach(function(n){var o=t[n],i=[];/^\w+$/.test(n)||i.push(/\w+/.exec(n)[0]),"diff"===n&&i.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+o+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:i,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(Prism);const o=globalThis.Prism||window.Prism,i={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",powershell:"PowerShell",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 s(e){return r[e]||e}function a(e){const t=function(e){const t=/^diff-([\w-]+)/i.exec(e);return t?t[1]:null}(e),n=t||e;try{return!!n&&o.languages.hasOwnProperty(n)}catch(e){return!1}}async function g(e,t,n){}function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}function d(e,t){const n=/^diff-([\w-]+)/i.exec(t),i=e.getTextContent();let r=o.tokenize(i,o.languages[n?"diff":t]);return n&&(r=function(e,t){const n=t,i=o.languages[n],r={tokens:e},s=o.languages.diff.PREFIXES;for(const e of r.tokens){if("string"==typeof e||!(e.type in s)||!Array.isArray(e.content))continue;const t=e.type;let n=0;const r=()=>(n++,new o.Token("prefix",s[t],t.replace(/^(\w+).*/,"$1"))),a=e.content.filter(e=>"string"==typeof e||"prefix"!==e.type),g=e.content.length-a.length,d=o.tokenize(c(a),i);d.unshift(r());const l=/\r\n|\n/g,u=e=>{const t=[];l.lastIndex=0;let o,i=0;for(;n<g&&(o=l.exec(e));){const n=o.index+o[0].length;t.push(e.slice(i,n)),i=n,t.push(r())}if(0!==t.length)return i<e.length&&t.push(e.slice(i)),t},f=e=>{for(let t=0;t<e.length&&n<g;t++){const n=e[t];if("string"==typeof n){const o=u(n);o&&(e.splice(t,1,...o),t+=o.length-1)}else if("string"==typeof n.content){const e=u(n.content);e&&(n.content=e)}else Array.isArray(n.content)?f(n.content):f([n.content])}};f(d),n<g&&d.push(r()),e.content=d}return r.tokens}(r,n[1])),l(r)}function l(n,o){const i=[];for(const r of n)if("string"==typeof r){const n=r.split(/(\n|\t)/),s=n.length;for(let r=0;r<s;r++){const s=n[r];"\n"===s||"\r\n"===s?i.push(t.$createLineBreakNode()):"\t"===s?i.push(t.$createTabNode()):s.length>0&&i.push(e.$createCodeHighlightNode(s,o))}}else{const{content:e,alias:t}=r;"string"==typeof e?i.push(...l([e],"prefix"===r.type&&"string"==typeof t?t:r.type)):Array.isArray(e)&&i.push(...l(e,"unchanged"===r.type?void 0:r.type))}return i}const u={$tokenize(e,t){return d(e,t||this.defaultLanguage)},defaultLanguage:e.DEFAULT_CODE_LANGUAGE,tokenize(e,t){return o.tokenize(e,o.languages[t||""]||o.languages[this.defaultLanguage])}};function f(n,o,i,r){const s=r.getParent();e.$isCodeNode(s)?N(n,o,i,s):e.$isCodeHighlightNode(r)&&r.replace(t.$createTextNode(r.__text))}function p(e,n){const o=n.getElementByKey(e.getKey());if(null===o)return;const i=e.getChildren(),r=i.length;if(r===o.__cachedChildrenLength)return;o.__cachedChildrenLength=r;let s="1",a=1;for(let e=0;e<r;e++)t.$isLineBreakNode(i[e])&&(s+="\n"+ ++a);o.setAttribute("data-gutter",s)}function N(n,o,i,r){const{nodesCurrentlyHighlighting:s}=i,c=r.getKey();void 0===r.getLanguage()&&r.setLanguage(o.defaultLanguage);const d=r.getLanguage()||o.defaultLanguage;if(!a(d))return r.getIsSyntaxHighlightSupported()&&r.setIsSyntaxHighlightSupported(!1),void g();r.getIsSyntaxHighlightSupported()||r.setIsSyntaxHighlightSupported(!0),s.has(c)||(s.add(c),i.didTransform||(i.didTransform=!0,t.$onUpdate(()=>{i.didTransform=!1,s.clear()})),function(n,o){const i=t.$getNodeByKey(n);if(!e.$isCodeNode(i)||!i.isAttached())return;const r=t.$getSelection();if(!t.$isRangeSelection(r))return void o();const s=r.anchor,a=s.offset,g="element"===s.type&&t.$isLineBreakNode(i.getChildAtIndex(s.offset-1));let c=0;if(!g){const e=s.getNode();c=a+e.getPreviousSiblings().reduce((e,t)=>e+t.getTextContentSize(),0)}if(!o())return;if(g)return void s.getNode().select(a,a);i.getChildren().some(e=>{const n=t.$isTextNode(e);if(n||t.$isLineBreakNode(e)){const t=e.getTextContentSize();if(n&&t>=c)return e.select(c,c),!0;c-=t}return!1})}(c,()=>{const n=t.$getNodeByKey(c);if(!e.$isCodeNode(n)||!n.isAttached())return!1;const i=n.getLanguage()||o.defaultLanguage,s=o.$tokenize(n,i),a=function(e,t){let n=0;for(;n<e.length&&h(e[n],t[n]);)n++;const o=e.length,i=t.length,r=Math.min(o,i)-n;let s=0;for(;s<r;)if(s++,!h(e[o-s],t[i-s])){s--;break}const a=n,g=o-s,c=t.slice(n,i-s);return{from:a,nodesForReplacement:c,to:g}}(n.getChildren(),s),{from:g,to:d,nodesForReplacement:l}=a;return!(g===d&&!l.length)&&(r.splice(g,d-g,l),!0)}))}function h(n,o){return e.$isCodeHighlightNode(n)&&e.$isCodeHighlightNode(o)&&n.__text===o.__text&&n.__highlightType===o.__highlightType||t.$isTabNode(n)&&t.$isTabNode(o)||t.$isLineBreakNode(n)&&t.$isLineBreakNode(o)}function C(n){if(!t.$isRangeSelection(n))return!1;const o=n.anchor.getNode(),i=e.$isCodeNode(o)?o:o.getParent(),r=n.focus.getNode(),s=e.$isCodeNode(r)?r:r.getParent();return e.$isCodeNode(i)&&i.is(s)}function m(o){const i=o.getNodes(),r=[];if(1===i.length&&e.$isCodeNode(i[0]))return r;let s=[];for(let o=0;o<i.length;o++){const a=i[o];e.$isCodeHighlightNode(a)||t.$isTabNode(a)||t.$isLineBreakNode(a)||n(169),t.$isLineBreakNode(a)?s.length>0&&(r.push(s),s=[]):s.push(a)}if(s.length>0){const e=o.isBackward()?o.anchor:o.focus,n=t.$createPoint(s[0].getKey(),0,"text");e.is(n)||r.push(s)}return r}function T(n){const o=t.$getSelection();if(!t.$isRangeSelection(o)||!C(o))return!1;const i=m(o),r=i.length;if(0===r&&o.isCollapsed())return n===t.INDENT_CONTENT_COMMAND&&o.insertNodes([t.$createTabNode()]),!0;if(0===r&&n===t.INDENT_CONTENT_COMMAND&&"\n"===o.getTextContent()){const e=t.$createTabNode(),n=t.$createLineBreakNode(),i=o.isBackward()?"previous":"next";return o.insertNodes([e,n]),t.$setSelectionFromCaretRange(t.$getCaretRangeInDirection(t.$getCaretRange(t.$getTextPointCaret(e,"next",0),t.$normalizeCaret(t.$getSiblingCaret(n,"next"))),i)),!0}for(let s=0;s<r;s++){const r=i[s];if(r.length>0){let i=r[0];if(0===s&&(i=e.$getFirstCodeNodeOfLine(i)),n===t.INDENT_CONTENT_COMMAND){const e=t.$createTabNode();if(i.insertBefore(e),0===s){const n=o.isBackward()?"focus":"anchor",r=t.$createPoint(i.getKey(),0,"text");o[n].is(r)&&o[n].set(e.getKey(),0,"text")}}else t.$isTabNode(i)&&i.remove()}}return!0}function $(n,o){const i=t.$getSelection();if(!t.$isRangeSelection(i))return!1;const{anchor:r,focus:s}=i,a=r.offset,g=s.offset,c=r.getNode(),d=s.getNode(),l=n===t.KEY_ARROW_UP_COMMAND;if(!C(i)||!e.$isCodeHighlightNode(c)&&!t.$isTabNode(c)||!e.$isCodeHighlightNode(d)&&!t.$isTabNode(d))return!1;if(!o.altKey){if(i.isCollapsed()){const e=c.getParentOrThrow();if(l&&0===a&&null===c.getPreviousSibling()){if(null===e.getPreviousSibling())return e.selectPrevious(),o.preventDefault(),!0}else if(!l&&a===c.getTextContentSize()&&null===c.getNextSibling()){if(null===e.getNextSibling())return e.selectNext(),o.preventDefault(),!0}}return!1}let u,f;if(c.isBefore(d)?(u=e.$getFirstCodeNodeOfLine(c),f=e.$getLastCodeNodeOfLine(d)):(u=e.$getFirstCodeNodeOfLine(d),f=e.$getLastCodeNodeOfLine(c)),null==u||null==f)return!1;const p=u.getNodesBetween(f);for(let n=0;n<p.length;n++){const o=p[n];if(!e.$isCodeHighlightNode(o)&&!t.$isTabNode(o)&&!t.$isLineBreakNode(o))return!1}o.preventDefault(),o.stopPropagation();const N=l?u.getPreviousSibling():f.getNextSibling();if(!t.$isLineBreakNode(N))return!0;const h=l?N.getPreviousSibling():N.getNextSibling();if(null==h)return!0;const m=e.$isCodeHighlightNode(h)||t.$isTabNode(h)||t.$isLineBreakNode(h)?l?e.$getFirstCodeNodeOfLine(h):e.$getLastCodeNodeOfLine(h):null;let T=null!=m?m:h;return N.remove(),p.forEach(e=>e.remove()),n===t.KEY_ARROW_UP_COMMAND?(p.forEach(e=>T.insertBefore(e)),T.insertBefore(N)):(T.insertAfter(N),T=N,p.forEach(e=>{T.insertAfter(e),T=e})),i.setTextNodeRange(c,a,d,g),!0}function O(n,o){const i=t.$getSelection();if(!t.$isRangeSelection(i))return!1;const{anchor:r,focus:s}=i,a=r.getNode(),g=s.getNode(),c=n===t.MOVE_TO_START;if(!C(i)||!e.$isCodeHighlightNode(a)&&!t.$isTabNode(a)||!e.$isCodeHighlightNode(g)&&!t.$isTabNode(g))return!1;const d=g;if("rtl"===e.$getCodeLineDirection(d)?!c:c){const n=e.$getStartOfCodeInLine(d,s.offset);if(null!==n){const{node:e,offset:o}=n;t.$isLineBreakNode(e)?e.selectNext(0,0):i.setTextNodeRange(e,o,e,o)}else d.getParentOrThrow().selectStart()}else{e.$getEndOfCodeInLine(d).select()}return o.preventDefault(),o.stopPropagation(),!0}exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP=i,exports.CODE_LANGUAGE_MAP=r,exports.PrismTokenizer=u,exports.getCodeLanguageOptions=function(){const e=[];for(const[t,n]of Object.entries(i))e.push([t,n]);return e},exports.getCodeLanguages=()=>Object.keys(o.languages).filter(e=>"function"!=typeof o.languages[e]).sort(),exports.getCodeThemeOptions=function(){return[]},exports.getLanguageFriendlyName=function(e){const t=s(e);return i[t]||t},exports.isCodeLanguageLoaded=a,exports.loadCodeLanguage=g,exports.normalizeCodeLanguage=s,exports.registerCodeHighlighting=function(o,i){if(!o.hasNodes([e.CodeNode,e.CodeHighlightNode]))throw new Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");null==i&&(i=u);const r=[];!0!==o._headless&&r.push(o.registerMutationListener(e.CodeNode,e=>{o.getEditorState().read(()=>{for(const[n,i]of e)if("destroyed"!==i){const e=t.$getNodeByKey(n);null!==e&&p(e,o)}})},{skipInitialization:!1}));const s={didTransform:!1,nodesCurrentlyHighlighting:new Set};return r.push(o.registerNodeTransform(e.CodeNode,N.bind(null,o,i,s)),o.registerNodeTransform(t.TextNode,f.bind(null,o,i,s)),o.registerNodeTransform(e.CodeHighlightNode,f.bind(null,o,i,s)),o.registerCommand(t.KEY_TAB_COMMAND,i=>{const r=function(o){const i=t.$getSelection();if(!t.$isRangeSelection(i)||!C(i))return null;const r=o?t.OUTDENT_CONTENT_COMMAND:t.INDENT_CONTENT_COMMAND,s=o?t.OUTDENT_CONTENT_COMMAND:t.INSERT_TAB_COMMAND,a=i.anchor,g=i.focus;if(a.is(g))return s;const c=m(i);if(1!==c.length)return r;const d=c[0];let l,u;0===d.length&&n(285),i.isBackward()?(l=g,u=a):(l=a,u=g);const f=e.$getFirstCodeNodeOfLine(d[0]),p=e.$getLastCodeNodeOfLine(d[0]),N=t.$createPoint(f.getKey(),0,"text"),h=t.$createPoint(p.getKey(),p.getTextContentSize(),"text");return l.isBefore(N)||h.isBefore(u)?r:N.isBefore(l)||u.isBefore(h)?s:r}(i.shiftKey);return null!==r&&(i.preventDefault(),o.dispatchCommand(r,void 0),!0)},t.COMMAND_PRIORITY_LOW),o.registerCommand(t.INSERT_TAB_COMMAND,()=>!!C(t.$getSelection())&&(t.$insertNodes([t.$createTabNode()]),!0),t.COMMAND_PRIORITY_LOW),o.registerCommand(t.INDENT_CONTENT_COMMAND,e=>T(t.INDENT_CONTENT_COMMAND),t.COMMAND_PRIORITY_LOW),o.registerCommand(t.OUTDENT_CONTENT_COMMAND,e=>T(t.OUTDENT_CONTENT_COMMAND),t.COMMAND_PRIORITY_LOW),o.registerCommand(t.KEY_ARROW_UP_COMMAND,e=>{const n=t.$getSelection();if(!t.$isRangeSelection(n)||!C(n))return!1;const o=t.$getRoot().getFirstDescendant(),{anchor:i}=n,r=i.getNode();return(!o||!r||o.getKey()!==r.getKey())&&$(t.KEY_ARROW_UP_COMMAND,e)},t.COMMAND_PRIORITY_LOW),o.registerCommand(t.KEY_ARROW_DOWN_COMMAND,e=>{const n=t.$getSelection();if(!t.$isRangeSelection(n)||!C(n))return!1;const o=t.$getRoot().getLastDescendant(),{anchor:i}=n,r=i.getNode();return(!o||!r||o.getKey()!==r.getKey())&&$(t.KEY_ARROW_DOWN_COMMAND,e)},t.COMMAND_PRIORITY_LOW),o.registerCommand(t.MOVE_TO_START,e=>O(t.MOVE_TO_START,e),t.COMMAND_PRIORITY_LOW),o.registerCommand(t.MOVE_TO_END,e=>O(t.MOVE_TO_END,e),t.COMMAND_PRIORITY_LOW)),t.mergeRegister(...r)};
9
+ "use strict";var e=require("@lexical/code-core"),t=require("@lexical/extension"),n=require("lexical");function o(e,...t){const n=new URL("https://lexical.dev/docs/error"),o=new URLSearchParams;o.append("code",e);for(const e of t)o.append("v",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}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-powershell"),require("prismjs/components/prism-python"),require("prismjs/components/prism-rust"),require("prismjs/components/prism-swift"),require("prismjs/components/prism-typescript"),require("prismjs/components/prism-java"),require("prismjs/components/prism-cpp"),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach(function(n){var o=t[n],i=[];/^\w+$/.test(n)||i.push(/\w+/.exec(n)[0]),"diff"===n&&i.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+o+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:i,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(Prism);const i=globalThis.Prism||window.Prism,r={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",powershell:"PowerShell",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript",xml:"XML"},s={cpp:"cpp",java:"java",javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain",ts:"typescript"};function a(e){return s[e]||e}function g(e){const t=function(e){const t=/^diff-([\w-]+)/i.exec(e);return t?t[1]:null}(e),n=t||e;try{return!!n&&i.languages.hasOwnProperty(n)}catch(e){return!1}}async function c(e,t,n){}function d(e){return"string"==typeof e?e:Array.isArray(e)?e.map(d).join(""):d(e.content)}function l(e,t){const n=/^diff-([\w-]+)/i.exec(t),o=e.getTextContent();let r=i.tokenize(o,i.languages[n?"diff":t]);return n&&(r=function(e,t){const n=t,o=i.languages[n],r={tokens:e},s=i.languages.diff.PREFIXES;for(const e of r.tokens){if("string"==typeof e||!(e.type in s)||!Array.isArray(e.content))continue;const t=e.type;let n=0;const r=()=>(n++,new i.Token("prefix",s[t],t.replace(/^(\w+).*/,"$1"))),a=e.content.filter(e=>"string"==typeof e||"prefix"!==e.type),g=e.content.length-a.length,c=i.tokenize(d(a),o);c.unshift(r());const l=/\r\n|\n/g,u=e=>{const t=[];l.lastIndex=0;let o,i=0;for(;n<g&&(o=l.exec(e));){const n=o.index+o[0].length;t.push(e.slice(i,n)),i=n,t.push(r())}if(0!==t.length)return i<e.length&&t.push(e.slice(i)),t},f=e=>{for(let t=0;t<e.length&&n<g;t++){const n=e[t];if("string"==typeof n){const o=u(n);o&&(e.splice(t,1,...o),t+=o.length-1)}else if("string"==typeof n.content){const e=u(n.content);e&&(n.content=e)}else Array.isArray(n.content)?f(n.content):f([n.content])}};f(c),n<g&&c.push(r()),e.content=c}return r.tokens}(r,n[1])),u(r)}function u(t,o){const i=[];for(const r of t)if("string"==typeof r){const t=r.split(/(\n|\t)/),s=t.length;for(let r=0;r<s;r++){const s=t[r];"\n"===s||"\r\n"===s?i.push(n.$createLineBreakNode()):"\t"===s?i.push(n.$createTabNode()):s.length>0&&i.push(e.$createCodeHighlightNode(s,o))}}else{const{content:e,alias:t}=r;"string"==typeof e?i.push(...u([e],"prefix"===r.type&&"string"==typeof t?t:r.type)):Array.isArray(e)&&i.push(...u(e,"unchanged"===r.type?void 0:r.type))}return i}const f={$tokenize(e,t){return l(e,t||this.defaultLanguage)},defaultLanguage:e.DEFAULT_CODE_LANGUAGE,tokenize(e,t){return i.tokenize(e,i.languages[t||""]||i.languages[this.defaultLanguage])}};function p(t,o,i,r){const s=r.getParent();e.$isCodeNode(s)?h(t,o,i,s):e.$isCodeHighlightNode(r)&&r.replace(n.$createTextNode(r.__text))}function N(e,t){const o=t.getElementByKey(e.getKey());if(null===o)return;const i=e.getChildren(),r=i.length;if(r===o.__cachedChildrenLength)return;o.__cachedChildrenLength=r;let s="1",a=1;for(let e=0;e<r;e++)n.$isLineBreakNode(i[e])&&(s+="\n"+ ++a);o.setAttribute("data-gutter",s)}function h(t,o,i,r){const{nodesCurrentlyHighlighting:s}=i,a=r.getKey();void 0===r.getLanguage()&&r.setLanguage(o.defaultLanguage);const d=r.getLanguage()||o.defaultLanguage;if(!g(d))return r.getIsSyntaxHighlightSupported()&&r.setIsSyntaxHighlightSupported(!1),void c();r.getIsSyntaxHighlightSupported()||r.setIsSyntaxHighlightSupported(!0),s.has(a)||(s.add(a),i.didTransform||(i.didTransform=!0,n.$onUpdate(()=>{i.didTransform=!1,s.clear()})),function(t,o){const i=n.$getNodeByKey(t);if(!e.$isCodeNode(i)||!i.isAttached())return;const r=n.$getSelection();if(!n.$isRangeSelection(r))return void o();const s=r.anchor,a=s.offset,g="element"===s.type&&n.$isLineBreakNode(i.getChildAtIndex(s.offset-1));let c=0;if(!g){const e=s.getNode();c=a+e.getPreviousSiblings().reduce((e,t)=>e+t.getTextContentSize(),0)}if(!o())return;if(g)return void s.getNode().select(a,a);i.getChildren().some(e=>{const t=n.$isTextNode(e);if(t||n.$isLineBreakNode(e)){const n=e.getTextContentSize();if(t&&n>=c)return e.select(c,c),!0;c-=n}return!1})}(a,()=>{const t=n.$getNodeByKey(a);if(!e.$isCodeNode(t)||!t.isAttached())return!1;const i=t.getLanguage()||o.defaultLanguage,s=o.$tokenize(t,i),g=function(e,t){let n=0;for(;n<e.length&&C(e[n],t[n]);)n++;const o=e.length,i=t.length,r=Math.min(o,i)-n;let s=0;for(;s<r;)if(s++,!C(e[o-s],t[i-s])){s--;break}const a=n,g=o-s,c=t.slice(n,i-s);return{from:a,nodesForReplacement:c,to:g}}(t.getChildren(),s),{from:c,to:d,nodesForReplacement:l}=g;return!(c===d&&!l.length)&&(r.splice(c,d-c,l),!0)}))}function C(t,o){return e.$isCodeHighlightNode(t)&&e.$isCodeHighlightNode(o)&&t.__text===o.__text&&t.__highlightType===o.__highlightType||n.$isTabNode(t)&&n.$isTabNode(o)||n.$isLineBreakNode(t)&&n.$isLineBreakNode(o)}function m(t){if(!n.$isRangeSelection(t))return!1;const o=t.anchor.getNode(),i=e.$isCodeNode(o)?o:o.getParent(),r=t.focus.getNode(),s=e.$isCodeNode(r)?r:r.getParent();return e.$isCodeNode(i)&&i.is(s)}function T(t){const i=t.getNodes(),r=[];if(1===i.length&&e.$isCodeNode(i[0]))return r;let s=[];for(let t=0;t<i.length;t++){const a=i[t];e.$isCodeHighlightNode(a)||n.$isTabNode(a)||n.$isLineBreakNode(a)||o(169),n.$isLineBreakNode(a)?s.length>0&&(r.push(s),s=[]):s.push(a)}if(s.length>0){const e=t.isBackward()?t.anchor:t.focus,o=n.$createPoint(s[0].getKey(),0,"text");e.is(o)||r.push(s)}return r}function $(t){const o=n.$getSelection();if(!n.$isRangeSelection(o)||!m(o))return!1;const i=T(o),r=i.length;if(0===r&&o.isCollapsed())return t===n.INDENT_CONTENT_COMMAND&&o.insertNodes([n.$createTabNode()]),!0;if(0===r&&t===n.INDENT_CONTENT_COMMAND&&"\n"===o.getTextContent()){const e=n.$createTabNode(),t=n.$createLineBreakNode(),i=o.isBackward()?"previous":"next";return o.insertNodes([e,t]),n.$setSelectionFromCaretRange(n.$getCaretRangeInDirection(n.$getCaretRange(n.$getTextPointCaret(e,"next",0),n.$normalizeCaret(n.$getSiblingCaret(t,"next"))),i)),!0}for(let s=0;s<r;s++){const r=i[s];if(r.length>0){let i=r[0];if(0===s&&(i=e.$getFirstCodeNodeOfLine(i)),t===n.INDENT_CONTENT_COMMAND){const e=n.$createTabNode();if(i.insertBefore(e),0===s){const t=o.isBackward()?"focus":"anchor",r=n.$createPoint(i.getKey(),0,"text");o[t].is(r)&&o[t].set(e.getKey(),0,"text")}}else n.$isTabNode(i)&&i.remove()}}return!0}function O(t,o){const i=n.$getSelection();if(!n.$isRangeSelection(i))return!1;const{anchor:r,focus:s}=i,a=r.offset,g=s.offset,c=r.getNode(),d=s.getNode(),l=t===n.KEY_ARROW_UP_COMMAND;if(!m(i)||!e.$isCodeHighlightNode(c)&&!n.$isTabNode(c)||!e.$isCodeHighlightNode(d)&&!n.$isTabNode(d))return!1;if(!o.altKey){if(i.isCollapsed()){const e=c.getParentOrThrow();if(l&&0===a&&null===c.getPreviousSibling()){if(null===e.getPreviousSibling())return e.selectPrevious(),o.preventDefault(),!0}else if(!l&&a===c.getTextContentSize()&&null===c.getNextSibling()){if(null===e.getNextSibling())return e.selectNext(),o.preventDefault(),!0}}return!1}let u,f;if(c.isBefore(d)?(u=e.$getFirstCodeNodeOfLine(c),f=e.$getLastCodeNodeOfLine(d)):(u=e.$getFirstCodeNodeOfLine(d),f=e.$getLastCodeNodeOfLine(c)),null==u||null==f)return!1;const p=u.getNodesBetween(f);for(let t=0;t<p.length;t++){const o=p[t];if(!e.$isCodeHighlightNode(o)&&!n.$isTabNode(o)&&!n.$isLineBreakNode(o))return!1}o.preventDefault(),o.stopPropagation();const N=l?u.getPreviousSibling():f.getNextSibling();if(!n.$isLineBreakNode(N))return!0;const h=l?N.getPreviousSibling():N.getNextSibling();if(null==h)return!0;const C=e.$isCodeHighlightNode(h)||n.$isTabNode(h)||n.$isLineBreakNode(h)?l?e.$getFirstCodeNodeOfLine(h):e.$getLastCodeNodeOfLine(h):null;let T=null!=C?C:h;return N.remove(),p.forEach(e=>e.remove()),t===n.KEY_ARROW_UP_COMMAND?(p.forEach(e=>T.insertBefore(e)),T.insertBefore(N)):(T.insertAfter(N),T=N,p.forEach(e=>{T.insertAfter(e),T=e})),i.setTextNodeRange(c,a,d,g),!0}function _(t,o){const i=n.$getSelection();if(!n.$isRangeSelection(i))return!1;const{anchor:r,focus:s}=i,a=r.getNode(),g=s.getNode(),c=t===n.MOVE_TO_START;if(!m(i)||!e.$isCodeHighlightNode(a)&&!n.$isTabNode(a)||!e.$isCodeHighlightNode(g)&&!n.$isTabNode(g))return!1;const d=g;if("rtl"===e.$getCodeLineDirection(d)?!c:c){const t=e.$getStartOfCodeInLine(d,s.offset);if(null!==t){const{node:e,offset:o}=t;n.$isLineBreakNode(e)?e.selectNext(0,0):i.setTextNodeRange(e,o,e,o)}else d.getParentOrThrow().selectStart()}else{e.$getEndOfCodeInLine(d).select()}return o.preventDefault(),o.stopPropagation(),!0}function x(t,i){if(!t.hasNodes([e.CodeNode,e.CodeHighlightNode]))throw new Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");null==i&&(i=f);const r=[];!0!==t._headless&&r.push(t.registerMutationListener(e.CodeNode,e=>{t.getEditorState().read(()=>{for(const[o,i]of e)if("destroyed"!==i){const e=n.$getNodeByKey(o);null!==e&&N(e,t)}})},{skipInitialization:!1}));const s={didTransform:!1,nodesCurrentlyHighlighting:new Set};return r.push(t.registerNodeTransform(e.CodeNode,h.bind(null,t,i,s)),t.registerNodeTransform(n.TextNode,p.bind(null,t,i,s)),t.registerNodeTransform(e.CodeHighlightNode,p.bind(null,t,i,s)),t.registerCommand(n.KEY_TAB_COMMAND,i=>{const r=function(t){const i=n.$getSelection();if(!n.$isRangeSelection(i)||!m(i))return null;const r=t?n.OUTDENT_CONTENT_COMMAND:n.INDENT_CONTENT_COMMAND,s=t?n.OUTDENT_CONTENT_COMMAND:n.INSERT_TAB_COMMAND,a=i.anchor,g=i.focus;if(a.is(g))return s;const c=T(i);if(1!==c.length)return r;const d=c[0];let l,u;0===d.length&&o(285),i.isBackward()?(l=g,u=a):(l=a,u=g);const f=e.$getFirstCodeNodeOfLine(d[0]),p=e.$getLastCodeNodeOfLine(d[0]),N=n.$createPoint(f.getKey(),0,"text"),h=n.$createPoint(p.getKey(),p.getTextContentSize(),"text");return l.isBefore(N)||h.isBefore(u)?r:N.isBefore(l)||u.isBefore(h)?s:r}(i.shiftKey);return null!==r&&(i.preventDefault(),t.dispatchCommand(r,void 0),!0)},n.COMMAND_PRIORITY_LOW),t.registerCommand(n.INSERT_TAB_COMMAND,()=>!!m(n.$getSelection())&&(n.$insertNodes([n.$createTabNode()]),!0),n.COMMAND_PRIORITY_LOW),t.registerCommand(n.INDENT_CONTENT_COMMAND,e=>$(n.INDENT_CONTENT_COMMAND),n.COMMAND_PRIORITY_LOW),t.registerCommand(n.OUTDENT_CONTENT_COMMAND,e=>$(n.OUTDENT_CONTENT_COMMAND),n.COMMAND_PRIORITY_LOW),t.registerCommand(n.KEY_ARROW_UP_COMMAND,e=>{const t=n.$getSelection();if(!n.$isRangeSelection(t)||!m(t))return!1;const o=n.$getRoot().getFirstDescendant(),{anchor:i}=t,r=i.getNode();return(!o||!r||o.getKey()!==r.getKey())&&O(n.KEY_ARROW_UP_COMMAND,e)},n.COMMAND_PRIORITY_LOW),t.registerCommand(n.KEY_ARROW_DOWN_COMMAND,e=>{const t=n.$getSelection();if(!n.$isRangeSelection(t)||!m(t))return!1;const o=n.$getRoot().getLastDescendant(),{anchor:i}=t,r=i.getNode();return(!o||!r||o.getKey()!==r.getKey())&&O(n.KEY_ARROW_DOWN_COMMAND,e)},n.COMMAND_PRIORITY_LOW),t.registerCommand(n.MOVE_TO_START,e=>_(n.MOVE_TO_START,e),n.COMMAND_PRIORITY_LOW),t.registerCommand(n.MOVE_TO_END,e=>_(n.MOVE_TO_END,e),n.COMMAND_PRIORITY_LOW)),n.mergeRegister(...r)}const y=n.defineExtension({build:(e,n)=>t.namedSignals(n),config:n.safeCast({disabled:!1,tokenizer:f}),dependencies:[e.CodeExtension],name:"@lexical/code-prism",register:(e,n,o)=>{const i=o.getOutput();return t.effect(()=>{if(!i.disabled.value)return x(e,i.tokenizer.value)})}});exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP=r,exports.CODE_LANGUAGE_MAP=s,exports.CodePrismExtension=y,exports.PrismTokenizer=f,exports.getCodeLanguageOptions=function(){const e=[];for(const[t,n]of Object.entries(r))e.push([t,n]);return e},exports.getCodeLanguages=()=>Object.keys(i.languages).filter(e=>"function"!=typeof i.languages[e]).sort(),exports.getCodeThemeOptions=function(){return[]},exports.getLanguageFriendlyName=function(e){const t=a(e);return r[t]||t},exports.isCodeLanguageLoaded=g,exports.loadCodeLanguage=c,exports.normalizeCodeLanguage=a,exports.registerCodeHighlighting=x;
@@ -6,4 +6,4 @@
6
6
  *
7
7
  */
8
8
 
9
- import{$createCodeHighlightNode as e,DEFAULT_CODE_LANGUAGE as t,$isCodeNode as n,$isCodeHighlightNode as r,$getFirstCodeNodeOfLine as o,$getLastCodeNodeOfLine as s,$getCodeLineDirection as i,$getStartOfCodeInLine as c,$getEndOfCodeInLine as l,CodeNode as a,CodeHighlightNode as f}from"@lexical/code-core";import{$createLineBreakNode as g,$createTabNode as u,$createTextNode as p,$isLineBreakNode as d,$onUpdate as m,$getNodeByKey as h,$getSelection as y,$isRangeSelection as x,$isTextNode as j,$isTabNode as v,$createPoint as S,INDENT_CONTENT_COMMAND as w,OUTDENT_CONTENT_COMMAND as C,INSERT_TAB_COMMAND as N,$setSelectionFromCaretRange as k,$getCaretRangeInDirection as P,$getCaretRange as b,$getTextPointCaret as T,$normalizeCaret as L,$getSiblingCaret as _,KEY_ARROW_UP_COMMAND as A,MOVE_TO_START as B,TextNode as K,KEY_TAB_COMMAND as E,COMMAND_PRIORITY_LOW as z,$insertNodes as R,$getRoot as H,KEY_ARROW_DOWN_COMMAND as I,MOVE_TO_END as $,mergeRegister as O}from"lexical";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-powershell.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";function D(e,...t){const n=new URL("https://lexical.dev/docs/error"),r=new URLSearchParams;r.append("code",e);for(const e of t)r.append("v",e);throw n.search=r.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach(function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(Prism);const M=globalThis.Prism||window.Prism,F={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",powershell:"PowerShell",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript",xml:"XML"},X={cpp:"cpp",java:"java",javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain",ts:"typescript"};function q(e){return X[e]||e}function J(e){const t=q(e);return F[t]||t}const U=()=>Object.keys(M.languages).filter(e=>"function"!=typeof M.languages[e]).sort();function Q(){const e=[];for(const[t,n]of Object.entries(F))e.push([t,n]);return e}function G(){return[]}function V(e){const t=function(e){const t=/^diff-([\w-]+)/i.exec(e);return t?t[1]:null}(e),n=t||e;try{return!!n&&M.languages.hasOwnProperty(n)}catch(e){return!1}}async function W(e,t,n){}function Y(e){return"string"==typeof e?e:Array.isArray(e)?e.map(Y).join(""):Y(e.content)}function Z(e,t){const n=/^diff-([\w-]+)/i.exec(t),r=e.getTextContent();let o=M.tokenize(r,M.languages[n?"diff":t]);return n&&(o=function(e,t){const n=t,r=M.languages[n],o={tokens:e},s=M.languages.diff.PREFIXES;for(const e of o.tokens){if("string"==typeof e||!(e.type in s)||!Array.isArray(e.content))continue;const t=e.type;let n=0;const o=()=>(n++,new M.Token("prefix",s[t],t.replace(/^(\w+).*/,"$1"))),i=e.content.filter(e=>"string"==typeof e||"prefix"!==e.type),c=e.content.length-i.length,l=M.tokenize(Y(i),r);l.unshift(o());const a=/\r\n|\n/g,f=e=>{const t=[];a.lastIndex=0;let r,s=0;for(;n<c&&(r=a.exec(e));){const n=r.index+r[0].length;t.push(e.slice(s,n)),s=n,t.push(o())}if(0!==t.length)return s<e.length&&t.push(e.slice(s)),t},g=e=>{for(let t=0;t<e.length&&n<c;t++){const n=e[t];if("string"==typeof n){const r=f(n);r&&(e.splice(t,1,...r),t+=r.length-1)}else if("string"==typeof n.content){const e=f(n.content);e&&(n.content=e)}else Array.isArray(n.content)?g(n.content):g([n.content])}};g(l),n<c&&l.push(o()),e.content=l}return o.tokens}(o,n[1])),ee(o)}function ee(t,n){const r=[];for(const o of t)if("string"==typeof o){const t=o.split(/(\n|\t)/),s=t.length;for(let o=0;o<s;o++){const s=t[o];"\n"===s||"\r\n"===s?r.push(g()):"\t"===s?r.push(u()):s.length>0&&r.push(e(s,n))}}else{const{content:e,alias:t}=o;"string"==typeof e?r.push(...ee([e],"prefix"===o.type&&"string"==typeof t?t:o.type)):Array.isArray(e)&&r.push(...ee(e,"unchanged"===o.type?void 0:o.type))}return r}const te={$tokenize(e,t){return Z(e,t||this.defaultLanguage)},defaultLanguage:t,tokenize(e,t){return M.tokenize(e,M.languages[t||""]||M.languages[this.defaultLanguage])}};function ne(e,t,o,s){const i=s.getParent();n(i)?oe(e,t,o,i):r(s)&&s.replace(p(s.__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 s="1",i=1;for(let e=0;e<o;e++)d(r[e])&&(s+="\n"+ ++i);n.setAttribute("data-gutter",s)}function oe(e,t,r,o){const{nodesCurrentlyHighlighting:s}=r,i=o.getKey();void 0===o.getLanguage()&&o.setLanguage(t.defaultLanguage);const c=o.getLanguage()||t.defaultLanguage;if(!V(c))return o.getIsSyntaxHighlightSupported()&&o.setIsSyntaxHighlightSupported(!1),void W();o.getIsSyntaxHighlightSupported()||o.setIsSyntaxHighlightSupported(!0),s.has(i)||(s.add(i),r.didTransform||(r.didTransform=!0,m(()=>{r.didTransform=!1,s.clear()})),function(e,t){const r=h(e);if(!n(r)||!r.isAttached())return;const o=y();if(!x(o))return void t();const s=o.anchor,i=s.offset,c="element"===s.type&&d(r.getChildAtIndex(s.offset-1));let l=0;if(!c){const e=s.getNode();l=i+e.getPreviousSiblings().reduce((e,t)=>e+t.getTextContentSize(),0)}if(!t())return;if(c)return void s.getNode().select(i,i);r.getChildren().some(e=>{const t=j(e);if(t||d(e)){const n=e.getTextContentSize();if(t&&n>=l)return e.select(l,l),!0;l-=n}return!1})}(i,()=>{const e=h(i);if(!n(e)||!e.isAttached())return!1;const r=e.getLanguage()||t.defaultLanguage,s=t.$tokenize(e,r),c=function(e,t){let n=0;for(;n<e.length&&se(e[n],t[n]);)n++;const r=e.length,o=t.length,s=Math.min(r,o)-n;let i=0;for(;i<s;)if(i++,!se(e[r-i],t[o-i])){i--;break}const c=n,l=r-i,a=t.slice(n,o-i);return{from:c,nodesForReplacement:a,to:l}}(e.getChildren(),s),{from:l,to:a,nodesForReplacement:f}=c;return!(l===a&&!f.length)&&(o.splice(l,a-l,f),!0)}))}function se(e,t){return r(e)&&r(t)&&e.__text===t.__text&&e.__highlightType===t.__highlightType||v(e)&&v(t)||d(e)&&d(t)}function ie(e){if(!x(e))return!1;const t=e.anchor.getNode(),r=n(t)?t:t.getParent(),o=e.focus.getNode(),s=n(o)?o:o.getParent();return n(r)&&r.is(s)}function ce(e){const t=e.getNodes(),o=[];if(1===t.length&&n(t[0]))return o;let s=[];for(let e=0;e<t.length;e++){const n=t[e];r(n)||v(n)||d(n)||D(169),d(n)?s.length>0&&(o.push(s),s=[]):s.push(n)}if(s.length>0){const t=e.isBackward()?e.anchor:e.focus,n=S(s[0].getKey(),0,"text");t.is(n)||o.push(s)}return o}function le(e){const t=y();if(!x(t)||!ie(t))return!1;const n=ce(t),r=n.length;if(0===r&&t.isCollapsed())return e===w&&t.insertNodes([u()]),!0;if(0===r&&e===w&&"\n"===t.getTextContent()){const e=u(),n=g(),r=t.isBackward()?"previous":"next";return t.insertNodes([e,n]),k(P(b(T(e,"next",0),L(_(n,"next"))),r)),!0}for(let s=0;s<r;s++){const r=n[s];if(r.length>0){let n=r[0];if(0===s&&(n=o(n)),e===w){const e=u();if(n.insertBefore(e),0===s){const r=t.isBackward()?"focus":"anchor",o=S(n.getKey(),0,"text");t[r].is(o)&&t[r].set(e.getKey(),0,"text")}}else v(n)&&n.remove()}}return!0}function ae(e,t){const n=y();if(!x(n))return!1;const{anchor:i,focus:c}=n,l=i.offset,a=c.offset,f=i.getNode(),g=c.getNode(),u=e===A;if(!ie(n)||!r(f)&&!v(f)||!r(g)&&!v(g))return!1;if(!t.altKey){if(n.isCollapsed()){const e=f.getParentOrThrow();if(u&&0===l&&null===f.getPreviousSibling()){if(null===e.getPreviousSibling())return e.selectPrevious(),t.preventDefault(),!0}else if(!u&&l===f.getTextContentSize()&&null===f.getNextSibling()){if(null===e.getNextSibling())return e.selectNext(),t.preventDefault(),!0}}return!1}let p,m;if(f.isBefore(g)?(p=o(f),m=s(g)):(p=o(g),m=s(f)),null==p||null==m)return!1;const h=p.getNodesBetween(m);for(let e=0;e<h.length;e++){const t=h[e];if(!r(t)&&!v(t)&&!d(t))return!1}t.preventDefault(),t.stopPropagation();const j=u?p.getPreviousSibling():m.getNextSibling();if(!d(j))return!0;const S=u?j.getPreviousSibling():j.getNextSibling();if(null==S)return!0;const w=r(S)||v(S)||d(S)?u?o(S):s(S):null;let C=null!=w?w:S;return j.remove(),h.forEach(e=>e.remove()),e===A?(h.forEach(e=>C.insertBefore(e)),C.insertBefore(j)):(C.insertAfter(j),C=j,h.forEach(e=>{C.insertAfter(e),C=e})),n.setTextNodeRange(f,l,g,a),!0}function fe(e,t){const n=y();if(!x(n))return!1;const{anchor:o,focus:s}=n,a=o.getNode(),f=s.getNode(),g=e===B;if(!ie(n)||!r(a)&&!v(a)||!r(f)&&!v(f))return!1;const u=f;if("rtl"===i(u)?!g:g){const e=c(u,s.offset);if(null!==e){const{node:t,offset:r}=e;d(t)?t.selectNext(0,0):n.setTextNodeRange(t,r,t,r)}else u.getParentOrThrow().selectStart()}else{l(u).select()}return t.preventDefault(),t.stopPropagation(),!0}function ge(e,t){if(!e.hasNodes([a,f]))throw new Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");null==t&&(t=te);const n=[];!0!==e._headless&&n.push(e.registerMutationListener(a,t=>{e.getEditorState().read(()=>{for(const[n,r]of t)if("destroyed"!==r){const t=h(n);null!==t&&re(t,e)}})},{skipInitialization:!1}));const r={didTransform:!1,nodesCurrentlyHighlighting:new Set};return n.push(e.registerNodeTransform(a,oe.bind(null,e,t,r)),e.registerNodeTransform(K,ne.bind(null,e,t,r)),e.registerNodeTransform(f,ne.bind(null,e,t,r)),e.registerCommand(E,t=>{const n=function(e){const t=y();if(!x(t)||!ie(t))return null;const n=e?C:w,r=e?C:N,i=t.anchor,c=t.focus;if(i.is(c))return r;const l=ce(t);if(1!==l.length)return n;const a=l[0];let f,g;0===a.length&&D(285),t.isBackward()?(f=c,g=i):(f=i,g=c);const u=o(a[0]),p=s(a[0]),d=S(u.getKey(),0,"text"),m=S(p.getKey(),p.getTextContentSize(),"text");return f.isBefore(d)||m.isBefore(g)?n:d.isBefore(f)||g.isBefore(m)?r:n}(t.shiftKey);return null!==n&&(t.preventDefault(),e.dispatchCommand(n,void 0),!0)},z),e.registerCommand(N,()=>!!ie(y())&&(R([u()]),!0),z),e.registerCommand(w,e=>le(w),z),e.registerCommand(C,e=>le(C),z),e.registerCommand(A,e=>{const t=y();if(!x(t)||!ie(t))return!1;const n=H().getFirstDescendant(),{anchor:r}=t,o=r.getNode();return(!n||!o||n.getKey()!==o.getKey())&&ae(A,e)},z),e.registerCommand(I,e=>{const t=y();if(!x(t)||!ie(t))return!1;const n=H().getLastDescendant(),{anchor:r}=t,o=r.getNode();return(!n||!o||n.getKey()!==o.getKey())&&ae(I,e)},z),e.registerCommand(B,e=>fe(B,e),z),e.registerCommand($,e=>fe($,e),z)),O(...n)}export{F as CODE_LANGUAGE_FRIENDLY_NAME_MAP,X as CODE_LANGUAGE_MAP,te as PrismTokenizer,Q as getCodeLanguageOptions,U as getCodeLanguages,G as getCodeThemeOptions,J as getLanguageFriendlyName,V as isCodeLanguageLoaded,W as loadCodeLanguage,q as normalizeCodeLanguage,ge as registerCodeHighlighting};
9
+ import{$createCodeHighlightNode as e,DEFAULT_CODE_LANGUAGE as t,$isCodeNode as n,$isCodeHighlightNode as r,$getFirstCodeNodeOfLine as o,$getLastCodeNodeOfLine as s,$getCodeLineDirection as i,$getStartOfCodeInLine as c,$getEndOfCodeInLine as l,CodeNode as a,CodeHighlightNode as f,CodeExtension as u}from"@lexical/code-core";import{effect as g,namedSignals as p}from"@lexical/extension";import{$createLineBreakNode as d,$createTabNode as m,$createTextNode as h,$isLineBreakNode as y,$onUpdate as x,$getNodeByKey as j,$getSelection as v,$isRangeSelection as S,$isTextNode as w,$isTabNode as C,$createPoint as k,INDENT_CONTENT_COMMAND as N,OUTDENT_CONTENT_COMMAND as b,INSERT_TAB_COMMAND as P,$setSelectionFromCaretRange as T,$getCaretRangeInDirection as L,$getCaretRange as _,$getTextPointCaret as A,$normalizeCaret as B,$getSiblingCaret as K,KEY_ARROW_UP_COMMAND as z,MOVE_TO_START as E,TextNode as R,KEY_TAB_COMMAND as H,COMMAND_PRIORITY_LOW as I,$insertNodes as O,$getRoot as $,KEY_ARROW_DOWN_COMMAND as D,MOVE_TO_END as M,mergeRegister as F,defineExtension as X,safeCast as q}from"lexical";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-powershell.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";function J(e,...t){const n=new URL("https://lexical.dev/docs/error"),r=new URLSearchParams;r.append("code",e);for(const e of t)r.append("v",e);throw n.search=r.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach(function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(Prism);const U=globalThis.Prism||window.Prism,Q={c:"C",clike:"C-like",cpp:"C++",css:"CSS",html:"HTML",java:"Java",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",powershell:"PowerShell",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",typescript:"TypeScript",xml:"XML"},G={cpp:"cpp",java:"java",javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain",ts:"typescript"};function V(e){return G[e]||e}function W(e){const t=V(e);return Q[t]||t}const Y=()=>Object.keys(U.languages).filter(e=>"function"!=typeof U.languages[e]).sort();function Z(){const e=[];for(const[t,n]of Object.entries(Q))e.push([t,n]);return e}function ee(){return[]}function te(e){const t=function(e){const t=/^diff-([\w-]+)/i.exec(e);return t?t[1]:null}(e),n=t||e;try{return!!n&&U.languages.hasOwnProperty(n)}catch(e){return!1}}async function ne(e,t,n){}function re(e){return"string"==typeof e?e:Array.isArray(e)?e.map(re).join(""):re(e.content)}function oe(e,t){const n=/^diff-([\w-]+)/i.exec(t),r=e.getTextContent();let o=U.tokenize(r,U.languages[n?"diff":t]);return n&&(o=function(e,t){const n=t,r=U.languages[n],o={tokens:e},s=U.languages.diff.PREFIXES;for(const e of o.tokens){if("string"==typeof e||!(e.type in s)||!Array.isArray(e.content))continue;const t=e.type;let n=0;const o=()=>(n++,new U.Token("prefix",s[t],t.replace(/^(\w+).*/,"$1"))),i=e.content.filter(e=>"string"==typeof e||"prefix"!==e.type),c=e.content.length-i.length,l=U.tokenize(re(i),r);l.unshift(o());const a=/\r\n|\n/g,f=e=>{const t=[];a.lastIndex=0;let r,s=0;for(;n<c&&(r=a.exec(e));){const n=r.index+r[0].length;t.push(e.slice(s,n)),s=n,t.push(o())}if(0!==t.length)return s<e.length&&t.push(e.slice(s)),t},u=e=>{for(let t=0;t<e.length&&n<c;t++){const n=e[t];if("string"==typeof n){const r=f(n);r&&(e.splice(t,1,...r),t+=r.length-1)}else if("string"==typeof n.content){const e=f(n.content);e&&(n.content=e)}else Array.isArray(n.content)?u(n.content):u([n.content])}};u(l),n<c&&l.push(o()),e.content=l}return o.tokens}(o,n[1])),se(o)}function se(t,n){const r=[];for(const o of t)if("string"==typeof o){const t=o.split(/(\n|\t)/),s=t.length;for(let o=0;o<s;o++){const s=t[o];"\n"===s||"\r\n"===s?r.push(d()):"\t"===s?r.push(m()):s.length>0&&r.push(e(s,n))}}else{const{content:e,alias:t}=o;"string"==typeof e?r.push(...se([e],"prefix"===o.type&&"string"==typeof t?t:o.type)):Array.isArray(e)&&r.push(...se(e,"unchanged"===o.type?void 0:o.type))}return r}const ie={$tokenize(e,t){return oe(e,t||this.defaultLanguage)},defaultLanguage:t,tokenize(e,t){return U.tokenize(e,U.languages[t||""]||U.languages[this.defaultLanguage])}};function ce(e,t,o,s){const i=s.getParent();n(i)?ae(e,t,o,i):r(s)&&s.replace(h(s.__text))}function le(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 s="1",i=1;for(let e=0;e<o;e++)y(r[e])&&(s+="\n"+ ++i);n.setAttribute("data-gutter",s)}function ae(e,t,r,o){const{nodesCurrentlyHighlighting:s}=r,i=o.getKey();void 0===o.getLanguage()&&o.setLanguage(t.defaultLanguage);const c=o.getLanguage()||t.defaultLanguage;if(!te(c))return o.getIsSyntaxHighlightSupported()&&o.setIsSyntaxHighlightSupported(!1),void ne();o.getIsSyntaxHighlightSupported()||o.setIsSyntaxHighlightSupported(!0),s.has(i)||(s.add(i),r.didTransform||(r.didTransform=!0,x(()=>{r.didTransform=!1,s.clear()})),function(e,t){const r=j(e);if(!n(r)||!r.isAttached())return;const o=v();if(!S(o))return void t();const s=o.anchor,i=s.offset,c="element"===s.type&&y(r.getChildAtIndex(s.offset-1));let l=0;if(!c){const e=s.getNode();l=i+e.getPreviousSiblings().reduce((e,t)=>e+t.getTextContentSize(),0)}if(!t())return;if(c)return void s.getNode().select(i,i);r.getChildren().some(e=>{const t=w(e);if(t||y(e)){const n=e.getTextContentSize();if(t&&n>=l)return e.select(l,l),!0;l-=n}return!1})}(i,()=>{const e=j(i);if(!n(e)||!e.isAttached())return!1;const r=e.getLanguage()||t.defaultLanguage,s=t.$tokenize(e,r),c=function(e,t){let n=0;for(;n<e.length&&fe(e[n],t[n]);)n++;const r=e.length,o=t.length,s=Math.min(r,o)-n;let i=0;for(;i<s;)if(i++,!fe(e[r-i],t[o-i])){i--;break}const c=n,l=r-i,a=t.slice(n,o-i);return{from:c,nodesForReplacement:a,to:l}}(e.getChildren(),s),{from:l,to:a,nodesForReplacement:f}=c;return!(l===a&&!f.length)&&(o.splice(l,a-l,f),!0)}))}function fe(e,t){return r(e)&&r(t)&&e.__text===t.__text&&e.__highlightType===t.__highlightType||C(e)&&C(t)||y(e)&&y(t)}function ue(e){if(!S(e))return!1;const t=e.anchor.getNode(),r=n(t)?t:t.getParent(),o=e.focus.getNode(),s=n(o)?o:o.getParent();return n(r)&&r.is(s)}function ge(e){const t=e.getNodes(),o=[];if(1===t.length&&n(t[0]))return o;let s=[];for(let e=0;e<t.length;e++){const n=t[e];r(n)||C(n)||y(n)||J(169),y(n)?s.length>0&&(o.push(s),s=[]):s.push(n)}if(s.length>0){const t=e.isBackward()?e.anchor:e.focus,n=k(s[0].getKey(),0,"text");t.is(n)||o.push(s)}return o}function pe(e){const t=v();if(!S(t)||!ue(t))return!1;const n=ge(t),r=n.length;if(0===r&&t.isCollapsed())return e===N&&t.insertNodes([m()]),!0;if(0===r&&e===N&&"\n"===t.getTextContent()){const e=m(),n=d(),r=t.isBackward()?"previous":"next";return t.insertNodes([e,n]),T(L(_(A(e,"next",0),B(K(n,"next"))),r)),!0}for(let s=0;s<r;s++){const r=n[s];if(r.length>0){let n=r[0];if(0===s&&(n=o(n)),e===N){const e=m();if(n.insertBefore(e),0===s){const r=t.isBackward()?"focus":"anchor",o=k(n.getKey(),0,"text");t[r].is(o)&&t[r].set(e.getKey(),0,"text")}}else C(n)&&n.remove()}}return!0}function de(e,t){const n=v();if(!S(n))return!1;const{anchor:i,focus:c}=n,l=i.offset,a=c.offset,f=i.getNode(),u=c.getNode(),g=e===z;if(!ue(n)||!r(f)&&!C(f)||!r(u)&&!C(u))return!1;if(!t.altKey){if(n.isCollapsed()){const e=f.getParentOrThrow();if(g&&0===l&&null===f.getPreviousSibling()){if(null===e.getPreviousSibling())return e.selectPrevious(),t.preventDefault(),!0}else if(!g&&l===f.getTextContentSize()&&null===f.getNextSibling()){if(null===e.getNextSibling())return e.selectNext(),t.preventDefault(),!0}}return!1}let p,d;if(f.isBefore(u)?(p=o(f),d=s(u)):(p=o(u),d=s(f)),null==p||null==d)return!1;const m=p.getNodesBetween(d);for(let e=0;e<m.length;e++){const t=m[e];if(!r(t)&&!C(t)&&!y(t))return!1}t.preventDefault(),t.stopPropagation();const h=g?p.getPreviousSibling():d.getNextSibling();if(!y(h))return!0;const x=g?h.getPreviousSibling():h.getNextSibling();if(null==x)return!0;const j=r(x)||C(x)||y(x)?g?o(x):s(x):null;let w=null!=j?j:x;return h.remove(),m.forEach(e=>e.remove()),e===z?(m.forEach(e=>w.insertBefore(e)),w.insertBefore(h)):(w.insertAfter(h),w=h,m.forEach(e=>{w.insertAfter(e),w=e})),n.setTextNodeRange(f,l,u,a),!0}function me(e,t){const n=v();if(!S(n))return!1;const{anchor:o,focus:s}=n,a=o.getNode(),f=s.getNode(),u=e===E;if(!ue(n)||!r(a)&&!C(a)||!r(f)&&!C(f))return!1;const g=f;if("rtl"===i(g)?!u:u){const e=c(g,s.offset);if(null!==e){const{node:t,offset:r}=e;y(t)?t.selectNext(0,0):n.setTextNodeRange(t,r,t,r)}else g.getParentOrThrow().selectStart()}else{l(g).select()}return t.preventDefault(),t.stopPropagation(),!0}function he(e,t){if(!e.hasNodes([a,f]))throw new Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");null==t&&(t=ie);const n=[];!0!==e._headless&&n.push(e.registerMutationListener(a,t=>{e.getEditorState().read(()=>{for(const[n,r]of t)if("destroyed"!==r){const t=j(n);null!==t&&le(t,e)}})},{skipInitialization:!1}));const r={didTransform:!1,nodesCurrentlyHighlighting:new Set};return n.push(e.registerNodeTransform(a,ae.bind(null,e,t,r)),e.registerNodeTransform(R,ce.bind(null,e,t,r)),e.registerNodeTransform(f,ce.bind(null,e,t,r)),e.registerCommand(H,t=>{const n=function(e){const t=v();if(!S(t)||!ue(t))return null;const n=e?b:N,r=e?b:P,i=t.anchor,c=t.focus;if(i.is(c))return r;const l=ge(t);if(1!==l.length)return n;const a=l[0];let f,u;0===a.length&&J(285),t.isBackward()?(f=c,u=i):(f=i,u=c);const g=o(a[0]),p=s(a[0]),d=k(g.getKey(),0,"text"),m=k(p.getKey(),p.getTextContentSize(),"text");return f.isBefore(d)||m.isBefore(u)?n:d.isBefore(f)||u.isBefore(m)?r:n}(t.shiftKey);return null!==n&&(t.preventDefault(),e.dispatchCommand(n,void 0),!0)},I),e.registerCommand(P,()=>!!ue(v())&&(O([m()]),!0),I),e.registerCommand(N,e=>pe(N),I),e.registerCommand(b,e=>pe(b),I),e.registerCommand(z,e=>{const t=v();if(!S(t)||!ue(t))return!1;const n=$().getFirstDescendant(),{anchor:r}=t,o=r.getNode();return(!n||!o||n.getKey()!==o.getKey())&&de(z,e)},I),e.registerCommand(D,e=>{const t=v();if(!S(t)||!ue(t))return!1;const n=$().getLastDescendant(),{anchor:r}=t,o=r.getNode();return(!n||!o||n.getKey()!==o.getKey())&&de(D,e)},I),e.registerCommand(E,e=>me(E,e),I),e.registerCommand(M,e=>me(M,e),I)),F(...n)}const ye=X({build:(e,t)=>p(t),config:q({disabled:!1,tokenizer:ie}),dependencies:[u],name:"@lexical/code-prism",register:(e,t,n)=>{const r=n.getOutput();return g(()=>{if(!r.disabled.value)return he(e,r.tokenizer.value)})}});export{Q as CODE_LANGUAGE_FRIENDLY_NAME_MAP,G as CODE_LANGUAGE_MAP,ye as CodePrismExtension,ie as PrismTokenizer,Z as getCodeLanguageOptions,Y as getCodeLanguages,ee as getCodeThemeOptions,W as getLanguageFriendlyName,te as isCodeLanguageLoaded,ne as loadCodeLanguage,V as normalizeCodeLanguage,he as registerCodeHighlighting};
package/index.d.ts CHANGED
@@ -5,5 +5,5 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- export { PrismTokenizer, registerCodeHighlighting, type Tokenizer, } from './CodeHighlighterPrism';
8
+ export { type CodePrismConfig, CodePrismExtension, PrismTokenizer, registerCodeHighlighting, type Tokenizer, } from './CodeHighlighterPrism';
9
9
  export { CODE_LANGUAGE_FRIENDLY_NAME_MAP, CODE_LANGUAGE_MAP, getCodeLanguageOptions, getCodeLanguages, getCodeThemeOptions, getLanguageFriendlyName, isCodeLanguageLoaded, loadCodeLanguage, normalizeCodeLanguage, } from './FacadePrism';
package/package.json CHANGED
@@ -8,12 +8,13 @@
8
8
  "code"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.43.0",
11
+ "version": "0.43.1-nightly.20260413.0",
12
12
  "main": "LexicalCodePrism.js",
13
13
  "types": "index.d.ts",
14
14
  "dependencies": {
15
- "@lexical/code-core": "0.43.0",
16
- "lexical": "0.43.0",
15
+ "@lexical/code-core": "0.43.1-nightly.20260413.0",
16
+ "@lexical/extension": "0.43.1-nightly.20260413.0",
17
+ "lexical": "0.43.1-nightly.20260413.0",
17
18
  "prismjs": "^1.30.0"
18
19
  },
19
20
  "repository": {