@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.
- package/CodeHighlighterPrism.d.ts +17 -0
- package/LexicalCodePrism.dev.js +26 -0
- package/LexicalCodePrism.dev.mjs +28 -3
- package/LexicalCodePrism.js.flow +8 -1
- package/LexicalCodePrism.mjs +1 -0
- package/LexicalCodePrism.node.mjs +1 -0
- package/LexicalCodePrism.prod.js +1 -1
- package/LexicalCodePrism.prod.mjs +1 -1
- package/index.d.ts +1 -1
- package/package.json +4 -3
|
@@ -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 {};
|
package/LexicalCodePrism.dev.js
CHANGED
|
@@ -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;
|
package/LexicalCodePrism.dev.mjs
CHANGED
|
@@ -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 {
|
|
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 };
|
package/LexicalCodePrism.js.flow
CHANGED
|
@@ -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>;
|
package/LexicalCodePrism.mjs
CHANGED
|
@@ -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;
|
package/LexicalCodePrism.prod.js
CHANGED
|
@@ -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": {
|