@lexical/react 0.1.10 → 0.1.13
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/DEPRECATED_useLexical.dev.js +3 -7
- package/DEPRECATED_useLexical.prod.js +1 -1
- package/DEPRECATED_useLexicalAutoFormatter.dev.js +83 -37
- package/DEPRECATED_useLexicalAutoFormatter.prod.js +20 -19
- package/DEPRECATED_useLexicalCharacterLimit.dev.js +20 -17
- package/DEPRECATED_useLexicalCharacterLimit.prod.js +8 -8
- package/DEPRECATED_useLexicalList.dev.js +6 -0
- package/DEPRECATED_useLexicalList.prod.js +1 -1
- package/DEPRECATED_useLexicalPlainText.dev.js +84 -75
- package/DEPRECATED_useLexicalPlainText.prod.js +15 -15
- package/DEPRECATED_useLexicalRichText.dev.js +96 -438
- package/DEPRECATED_useLexicalRichText.prod.js +17 -26
- package/LexicalAutoFormatterPlugin.d.ts +9 -0
- package/LexicalAutoFormatterPlugin.dev.js +83 -37
- package/LexicalAutoFormatterPlugin.js.flow +10 -0
- package/LexicalAutoFormatterPlugin.prod.js +21 -20
- package/LexicalAutoLinkPlugin.d.ts +20 -0
- package/LexicalAutoLinkPlugin.js.flow +23 -0
- package/LexicalCharacterLimitPlugin.d.ts +11 -0
- package/LexicalCharacterLimitPlugin.dev.js +20 -17
- package/LexicalCharacterLimitPlugin.js.flow +12 -0
- package/LexicalCharacterLimitPlugin.prod.js +9 -8
- package/LexicalClearEditorPlugin.d.ts +14 -0
- package/LexicalClearEditorPlugin.dev.js +73 -0
- package/LexicalClearEditorPlugin.js +9 -0
- package/LexicalClearEditorPlugin.js.flow +14 -0
- package/LexicalClearEditorPlugin.prod.js +8 -0
- package/LexicalCollaborationPlugin.d.ts +49 -0
- package/LexicalCollaborationPlugin.dev.js +21 -13
- package/LexicalCollaborationPlugin.js.flow +55 -0
- package/LexicalCollaborationPlugin.prod.js +7 -7
- package/LexicalComposer.d.ts +22 -0
- package/LexicalComposer.dev.js +32 -3
- package/LexicalComposer.js.flow +24 -0
- package/LexicalComposer.prod.js +3 -2
- package/LexicalComposerContext.d.ts +24 -0
- package/LexicalComposerContext.js.flow +27 -0
- package/LexicalContentEditable.d.ts +32 -0
- package/LexicalContentEditable.dev.js +35 -8
- package/LexicalContentEditable.js.flow +35 -0
- package/LexicalContentEditable.prod.js +3 -3
- package/LexicalHashtagPlugin.d.ts +9 -0
- package/LexicalHashtagPlugin.js.flow +10 -0
- package/LexicalHistoryPlugin.d.ts +29 -0
- package/LexicalHistoryPlugin.js.flow +34 -0
- package/LexicalHorizontalRuleNode.d.ts +23 -0
- package/LexicalHorizontalRuleNode.js.flow +25 -0
- package/LexicalLinkPlugin.d.ts +9 -0
- package/LexicalLinkPlugin.js.flow +10 -0
- package/LexicalListPlugin.d.ts +9 -0
- package/LexicalListPlugin.dev.js +6 -0
- package/LexicalListPlugin.js.flow +10 -0
- package/LexicalListPlugin.prod.js +2 -2
- package/LexicalNestedComposer.d.ts +17 -0
- package/LexicalNestedComposer.dev.js +21 -11
- package/LexicalNestedComposer.js.flow +18 -0
- package/LexicalNestedComposer.prod.js +3 -2
- package/LexicalOnChangePlugin.d.ts +12 -0
- package/LexicalOnChangePlugin.js.flow +14 -0
- package/LexicalPlainTextPlugin.d.ts +15 -0
- package/LexicalPlainTextPlugin.dev.js +73 -84
- package/LexicalPlainTextPlugin.js.flow +18 -0
- package/LexicalPlainTextPlugin.prod.js +12 -12
- package/LexicalRichTextPlugin.d.ts +15 -0
- package/LexicalRichTextPlugin.dev.js +85 -447
- package/LexicalRichTextPlugin.js.flow +18 -0
- package/LexicalRichTextPlugin.prod.js +13 -22
- package/LexicalTablePlugin.d.ts +9 -0
- package/LexicalTablePlugin.dev.js +22 -0
- package/LexicalTablePlugin.js.flow +10 -0
- package/LexicalTablePlugin.prod.js +4 -3
- package/LexicalTreeView.d.ts +17 -0
- package/LexicalTreeView.js.flow +19 -0
- package/README.md +0 -1
- package/package.json +9 -5
- package/useLexicalDecoratorMap.d.ts +14 -0
- package/useLexicalDecoratorMap.js.flow +16 -0
- package/useLexicalIsTextContentEmpty.d.ts +13 -0
- package/useLexicalIsTextContentEmpty.js.flow +15 -0
- package/useLexicalNodeSelection.d.ts +12 -0
- package/useLexicalNodeSelection.js.flow +14 -0
- package/withSubscriptions.d.ts +12 -0
- package/withSubscriptions.js.flow +13 -0
- package/LexicalBootstrapPlugin.dev.js +0 -122
- package/LexicalBootstrapPlugin.js +0 -9
- package/LexicalBootstrapPlugin.prod.js +0 -8
|
@@ -35,13 +35,9 @@ function useLexicalEditor(editor) {
|
|
|
35
35
|
*
|
|
36
36
|
*/
|
|
37
37
|
function useLexical(editorConfig) {
|
|
38
|
-
const editor = react.useMemo(() =>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return lexical.createEditor(editorConfig);
|
|
44
|
-
}, [editorConfig]);
|
|
38
|
+
const editor = react.useMemo(() => lexical.createEditor(editorConfig), // Init
|
|
39
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
40
|
+
[]);
|
|
45
41
|
const [rootElementRef, showPlaceholder] = useLexicalEditor(editor);
|
|
46
42
|
return [editor, rootElementRef, showPlaceholder];
|
|
47
43
|
}
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
var d=require("lexical"),e=require("react"),f=require("@lexical/react/DEPRECATED_useLexicalCanShowPlaceholder");function g(a){const b=f(a);return[e.useCallback(c=>{a.setRootElement(c)},[a]),b]}module.exports=function(a){const b=e.useMemo(()=>d.createEditor(a),[
|
|
7
|
+
var d=require("lexical"),e=require("react"),f=require("@lexical/react/DEPRECATED_useLexicalCanShowPlaceholder");function g(a){const b=f(a);return[e.useCallback(c=>{a.setRootElement(c)},[a]),b]}module.exports=function(a){const b=e.useMemo(()=>d.createEditor(a),[]),[c,h]=g(b);return[b,c,h]};
|
|
@@ -132,31 +132,31 @@ const paragraphStartBase = { ...autoFormatBase,
|
|
|
132
132
|
};
|
|
133
133
|
const markdownHeader1 = { ...paragraphStartBase,
|
|
134
134
|
nodeTransformationKind: 'paragraphH1',
|
|
135
|
-
regEx:
|
|
135
|
+
regEx: /^(?:# )/
|
|
136
136
|
};
|
|
137
137
|
const markdownHeader2 = { ...paragraphStartBase,
|
|
138
138
|
nodeTransformationKind: 'paragraphH2',
|
|
139
|
-
regEx:
|
|
139
|
+
regEx: /^(?:## )/
|
|
140
140
|
};
|
|
141
141
|
const markdownHeader3 = { ...paragraphStartBase,
|
|
142
142
|
nodeTransformationKind: 'paragraphH2',
|
|
143
|
-
regEx:
|
|
143
|
+
regEx: /^(?:### )/
|
|
144
144
|
};
|
|
145
145
|
const markdownBlockQuote = { ...paragraphStartBase,
|
|
146
146
|
nodeTransformationKind: 'paragraphBlockQuote',
|
|
147
|
-
regEx:
|
|
147
|
+
regEx: /^(?:> )/
|
|
148
148
|
};
|
|
149
149
|
const markdownUnorderedListDash = { ...paragraphStartBase,
|
|
150
150
|
nodeTransformationKind: 'paragraphUnorderedList',
|
|
151
|
-
regEx:
|
|
151
|
+
regEx: /^(?:- )/
|
|
152
152
|
};
|
|
153
153
|
const markdownUnorderedListAsterisk = { ...paragraphStartBase,
|
|
154
154
|
nodeTransformationKind: 'paragraphUnorderedList',
|
|
155
|
-
regEx:
|
|
155
|
+
regEx: /^(?:\* )/
|
|
156
156
|
};
|
|
157
157
|
const markdownCodeBlock = { ...paragraphStartBase,
|
|
158
158
|
nodeTransformationKind: 'paragraphCodeBlock',
|
|
159
|
-
regEx:
|
|
159
|
+
regEx: /^(```)([a-z]*)( )/
|
|
160
160
|
};
|
|
161
161
|
const markdownOrderedList = { ...paragraphStartBase,
|
|
162
162
|
nodeTransformationKind: 'paragraphOrderedList',
|
|
@@ -164,20 +164,39 @@ const markdownOrderedList = { ...paragraphStartBase,
|
|
|
164
164
|
};
|
|
165
165
|
const markdownHorizontalRule = { ...paragraphStartBase,
|
|
166
166
|
nodeTransformationKind: 'horizontalRule',
|
|
167
|
-
regEx:
|
|
167
|
+
regEx: /^(?:\*\*\* )/
|
|
168
168
|
};
|
|
169
169
|
const markdownHorizontalRuleUsingDashes = { ...paragraphStartBase,
|
|
170
170
|
nodeTransformationKind: 'horizontalRule',
|
|
171
|
-
regEx:
|
|
171
|
+
regEx: /^(?:--- )/
|
|
172
|
+
};
|
|
173
|
+
const markdownItalic = { ...autoFormatBase,
|
|
174
|
+
nodeTransformationKind: 'italic',
|
|
175
|
+
regEx: /(\*)(\s*\b)([^\*]*)(\b\s*)(\*\s)$/
|
|
172
176
|
};
|
|
173
177
|
const markdownBold = { ...autoFormatBase,
|
|
174
|
-
nodeTransformationKind: '
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
178
|
+
nodeTransformationKind: 'bold',
|
|
179
|
+
regEx: /(\*\*)(\s*\b)([^\*\*]*)(\b\s*)(\*\*\s)$/
|
|
180
|
+
};
|
|
181
|
+
const markdownBoldWithUnderlines = { ...autoFormatBase,
|
|
182
|
+
nodeTransformationKind: 'bold',
|
|
183
|
+
regEx: /(__)(\s*)([^__]*)(\s*)(__\s)$/
|
|
184
|
+
};
|
|
185
|
+
const markdownBoldItalic = { ...autoFormatBase,
|
|
186
|
+
nodeTransformationKind: 'bold_italic',
|
|
187
|
+
regEx: /(\*\*\*)(\s*\b)([^\*\*\*]*)(\b\s*)(\*\*\*\s)$/
|
|
188
|
+
}; // Markdown does not support underline, but we can allow folks to use
|
|
189
|
+
// the HTML tags for underline.
|
|
190
|
+
|
|
191
|
+
const fakeMarkdownUnderline = { ...autoFormatBase,
|
|
192
|
+
nodeTransformationKind: 'underline',
|
|
193
|
+
regEx: /(\<u\>)(\s*\b)([^\<]*)(\b\s*)(\<\/u\>\s)$/
|
|
179
194
|
};
|
|
180
|
-
const
|
|
195
|
+
const markdownStrikethrough = { ...autoFormatBase,
|
|
196
|
+
nodeTransformationKind: 'strikethrough',
|
|
197
|
+
regEx: /(~~)(\s*\b)([^~~]*)(\b\s*)(~~\s)$/
|
|
198
|
+
};
|
|
199
|
+
const allAutoFormatCriteriaForTextNodes = [markdownBoldItalic, markdownItalic, markdownBold, markdownBoldWithUnderlines, fakeMarkdownUnderline, markdownStrikethrough];
|
|
181
200
|
const allAutoFormatCriteria = [markdownHeader1, markdownHeader2, markdownHeader3, markdownBlockQuote, markdownUnorderedListDash, markdownUnorderedListAsterisk, markdownOrderedList, markdownCodeBlock, markdownHorizontalRule, markdownHorizontalRuleUsingDashes, ...allAutoFormatCriteriaForTextNodes];
|
|
182
201
|
function getAllAutoFormatCriteriaForTextNodes() {
|
|
183
202
|
return allAutoFormatCriteriaForTextNodes;
|
|
@@ -258,17 +277,14 @@ function getMatchResultContextForText(autoFormatCriteria, scanningContext) {
|
|
|
258
277
|
// Lazy calculate the text to search.
|
|
259
278
|
scanningContext.joinedText = $joinTextNodesInElementNode(parentNode, SEPARATOR_BETWEEN_TEXT_AND_NON_TEXT_NODES, scanningContext.textNodeWithOffset);
|
|
260
279
|
}
|
|
261
|
-
|
|
262
|
-
return getMatchResultContextWithRegEx(scanningContext.joinedText, false, true, autoFormatCriteria.regEx);
|
|
263
280
|
} else {
|
|
264
281
|
{
|
|
265
282
|
throw Error(`Expected node ${parentNode.__key} to to be a ElementNode.`);
|
|
266
283
|
}
|
|
267
284
|
}
|
|
268
|
-
}
|
|
269
|
-
|
|
285
|
+
}
|
|
270
286
|
|
|
271
|
-
return
|
|
287
|
+
return getMatchResultContextWithRegEx(scanningContext.joinedText, false, true, autoFormatCriteria.regEx);
|
|
272
288
|
}
|
|
273
289
|
|
|
274
290
|
function getMatchResultContextForCriteria(autoFormatCriteria, scanningContext) {
|
|
@@ -342,6 +358,11 @@ function getNewNodeForCriteria(scanningContext, element) {
|
|
|
342
358
|
newNode = lexical.$createParagraphNode();
|
|
343
359
|
} else {
|
|
344
360
|
newNode = CodeNode.$createCodeNode();
|
|
361
|
+
const codingLanguage = matchResultContext.regExCaptureGroups.length >= 3 ? matchResultContext.regExCaptureGroups[2].text : null;
|
|
362
|
+
|
|
363
|
+
if (codingLanguage != null && codingLanguage.length > 0) {
|
|
364
|
+
newNode.setLanguage(codingLanguage);
|
|
365
|
+
}
|
|
345
366
|
}
|
|
346
367
|
|
|
347
368
|
newNode.append(...children);
|
|
@@ -390,28 +411,50 @@ function transformTextNodeForParagraphs(scanningContext) {
|
|
|
390
411
|
}
|
|
391
412
|
}
|
|
392
413
|
|
|
414
|
+
function getTextFormatType(nodeTransformationKind) {
|
|
415
|
+
switch (nodeTransformationKind) {
|
|
416
|
+
case 'italic':
|
|
417
|
+
case 'bold':
|
|
418
|
+
case 'underline':
|
|
419
|
+
case 'strikethrough':
|
|
420
|
+
return [nodeTransformationKind];
|
|
421
|
+
|
|
422
|
+
case 'bold_italic':
|
|
423
|
+
{
|
|
424
|
+
return ['bold', 'italic'];
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
|
|
393
431
|
function transformTextNodeForText(scanningContext) {
|
|
394
432
|
const autoFormatCriteria = scanningContext.autoFormatCriteria;
|
|
395
433
|
const matchResultContext = scanningContext.matchResultContext;
|
|
396
434
|
|
|
397
435
|
if (autoFormatCriteria.nodeTransformationKind != null) {
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
break;
|
|
406
|
-
}
|
|
436
|
+
if (matchResultContext.regExCaptureGroups.length !== 6) {
|
|
437
|
+
// For BIUS and other formatts which have a pattern + text + pattern,
|
|
438
|
+
// the expected reg ex pattern should have 6 groups.
|
|
439
|
+
// If it does not, then break and fail silently.
|
|
440
|
+
// e2e tests validate the regEx pattern.
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
407
443
|
|
|
408
|
-
|
|
444
|
+
const formatting = getTextFormatType(autoFormatCriteria.nodeTransformationKind);
|
|
409
445
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
446
|
+
if (formatting != null) {
|
|
447
|
+
const captureGroupsToDelete = [1, 5];
|
|
448
|
+
const formatCaptureGroup = 3;
|
|
449
|
+
matchResultContext.regExCaptureGroups = getCaptureGroupsByResolvingAllDetails(scanningContext);
|
|
450
|
+
|
|
451
|
+
if (captureGroupsToDelete.length > 0) {
|
|
452
|
+
// Remove unwanted text in reg ex pattern.
|
|
453
|
+
removeTextInCaptureGroups(captureGroupsToDelete, matchResultContext);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
formatTextInCaptureGroupIndex(formatting, formatCaptureGroup, matchResultContext);
|
|
457
|
+
makeCollapsedSelectionAtOffsetInJoinedText(matchResultContext.offsetInJoinedTextForCollapsedSelection, matchResultContext.offsetInJoinedTextForCollapsedSelection + 1, scanningContext.textNodeWithOffset.node.getParentOrThrow());
|
|
415
458
|
}
|
|
416
459
|
}
|
|
417
460
|
} // Some Capture Group Details were left lazily unresolved as their calculation
|
|
@@ -515,7 +558,7 @@ function shiftCaptureGroupOffsets(delta, applyAtOrAfterOffset, node, startingCap
|
|
|
515
558
|
}
|
|
516
559
|
}
|
|
517
560
|
|
|
518
|
-
function formatTextInCaptureGroupIndex(
|
|
561
|
+
function formatTextInCaptureGroupIndex(formatTypes, captureGroupIndex, matchResultContext) {
|
|
519
562
|
const regExCaptureGroups = matchResultContext.regExCaptureGroups;
|
|
520
563
|
const regExCaptureGroupsCount = regExCaptureGroups.length;
|
|
521
564
|
|
|
@@ -535,7 +578,10 @@ function formatTextInCaptureGroupIndex(formatType, captureGroupIndex, matchResul
|
|
|
535
578
|
const currentSelection = lexical.$getSelection();
|
|
536
579
|
|
|
537
580
|
if (lexical.$isRangeSelection(currentSelection)) {
|
|
538
|
-
|
|
581
|
+
for (let i = 0; i < formatTypes.length; i++) {
|
|
582
|
+
currentSelection.formatText(formatTypes[i]);
|
|
583
|
+
}
|
|
584
|
+
|
|
539
585
|
const finalSelection = lexical.$createRangeSelection();
|
|
540
586
|
finalSelection.anchor.set(focusTextNodeWithOffset.node.getKey(), focusTextNodeWithOffset.offset + 1, 'text');
|
|
541
587
|
finalSelection.focus.set(focusTextNodeWithOffset.node.getKey(), focusTextNodeWithOffset.offset + 1, 'text');
|
|
@@ -4,23 +4,24 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
var
|
|
8
|
-
function
|
|
9
|
-
const
|
|
10
|
-
regEx:/(
|
|
11
|
-
|
|
12
|
-
function J(g,f,a,
|
|
13
|
-
function K(g,f){g.
|
|
14
|
-
|
|
15
|
-
a.append(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"text"),
|
|
20
|
-
|
|
21
|
-
M
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
function
|
|
7
|
+
var k=require("@lexical/list"),q=require("lexical"),r=require("lexical/CodeNode"),t=require("react"),u=require("@lexical/react/LexicalHorizontalRuleNode"),x=require("lexical/HeadingNode"),y=require("lexical/QuoteNode");function C(g){throw Error(`Minified Lexical error #${g}; see codes.json for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}
|
|
8
|
+
function D(g,f,a,c){g=g.getChildren();const b=g.length;let d=0,e=!1;for(let p=0;p<b&&!(d>f);++p){const m=g[p],n=q.$isTextNode(m);var h=n?m.getTextContent().length:c;h=d+h;if((!1===e&&d===a||0===d&&d===a||d<a&&a<=h)&&q.$isTextNode(m))return{node:m,offset:a-d};d=h;e=n}return null}
|
|
9
|
+
const E={nodeTransformationKind:null,regEx:/(?:)/,requiresParagraphStart:!1},F={...E,requiresParagraphStart:!0},H=[{...E,nodeTransformationKind:"bold_italic",regEx:/(\*\*\*)(\s*\b)([^\*\*\*]*)(\b\s*)(\*\*\*\s)$/},{...E,nodeTransformationKind:"italic",regEx:/(\*)(\s*\b)([^\*]*)(\b\s*)(\*\s)$/},{...E,nodeTransformationKind:"bold",regEx:/(\*\*)(\s*\b)([^\*\*]*)(\b\s*)(\*\*\s)$/},{...E,nodeTransformationKind:"bold",regEx:/(__)(\s*)([^__]*)(\s*)(__\s)$/},{...E,nodeTransformationKind:"underline",regEx:/(<u>)(\s*\b)([^<]*)(\b\s*)(<\/u>\s)$/},
|
|
10
|
+
{...E,nodeTransformationKind:"strikethrough",regEx:/(~~)(\s*\b)([^~~]*)(\b\s*)(~~\s)$/}],I=[{...F,nodeTransformationKind:"paragraphH1",regEx:/^(?:# )/},{...F,nodeTransformationKind:"paragraphH2",regEx:/^(?:## )/},{...F,nodeTransformationKind:"paragraphH2",regEx:/^(?:### )/},{...F,nodeTransformationKind:"paragraphBlockQuote",regEx:/^(?:> )/},{...F,nodeTransformationKind:"paragraphUnorderedList",regEx:/^(?:- )/},{...F,nodeTransformationKind:"paragraphUnorderedList",regEx:/^(?:\* )/},{...F,nodeTransformationKind:"paragraphOrderedList",
|
|
11
|
+
regEx:/^(\d+)\.\s/},{...F,nodeTransformationKind:"paragraphCodeBlock",regEx:/^(```)([a-z]*)( )/},{...F,nodeTransformationKind:"horizontalRule",regEx:/^(?:\*\*\* )/},{...F,nodeTransformationKind:"horizontalRule",regEx:/^(?:--- )/},...H];
|
|
12
|
+
function J(g,f,a,c){const b={offsetInJoinedTextForCollapsedSelection:0,regExCaptureGroups:[]};c=g.match(c);if(null!==c&&0<c.length&&(!1===f||0===c.index)&&(!1===a||c.index+c[0].length===g.length)){b.offsetInJoinedTextForCollapsedSelection=g.length;g=c.length;f=c.index;for(a=0;a<g;a++){const d=c[a];b.regExCaptureGroups.push({anchorTextNodeWithOffset:null,focusTextNodeWithOffset:null,offsetInParent:f,text:d,textLength:d.length-(a+1===g?1:0)});0<a&&(f+=d.length)}return b}return null}
|
|
13
|
+
function K(g,f,a,c,b){b.offsetInJoinedTextForCollapsedSelection+=g;0<b.offsetInJoinedTextForCollapsedSelection||C(67);b=b.regExCaptureGroups;const d=b.length;for(c+=1;c<d;c++){const e=b[c];null!=e.anchorTextNodeWithOffset&&e.anchorTextNodeWithOffset.offset>=f&&e.anchorTextNodeWithOffset.node.is(a)&&(e.anchorTextNodeWithOffset.offset+=g);null!=e.focusTextNodeWithOffset&&e.focusTextNodeWithOffset.offset>=f&&e.focusTextNodeWithOffset.node.is(a)&&(e.focusTextNodeWithOffset.offset+=g)}}
|
|
14
|
+
function L(g,f){g.update(()=>{if(f.autoFormatCriteria.requiresParagraphStart){var a=f.textNodeWithOffset,c=a.node.getParentOrThrow();a=a.node.spliceText(0,f.matchResultContext.regExCaptureGroups[0].text.length,"",!0);""===a.getTextContent()&&(a.selectPrevious(),a.remove());var b=c;a=null;var d=b.getChildren(),e=f.autoFormatCriteria,h=f.matchResultContext;if(null!=e.nodeTransformationKind)switch(e.nodeTransformationKind){case "paragraphH1":a=x.$createHeadingNode("h1");a.append(...d);break;case "paragraphH2":a=
|
|
15
|
+
x.$createHeadingNode("h2");a.append(...d);break;case "paragraphH3":a=x.$createHeadingNode("h3");a.append(...d);break;case "paragraphBlockQuote":a=y.$createQuoteNode();a.append(...d);break;case "paragraphUnorderedList":a=k.$createListNode("ul");b=k.$createListItemNode();b.append(...d);a.append(b);break;case "paragraphOrderedList":a=parseInt(1<h.regExCaptureGroups.length?h.regExCaptureGroups[h.regExCaptureGroups.length-1].text:"1",10);a=k.$createListNode("ol",a);b=k.$createListItemNode();b.append(...d);
|
|
16
|
+
a.append(b);break;case "paragraphCodeBlock":null!=f.triggerState&&f.triggerState.isCodeBlock?a=q.$createParagraphNode():(a=r.$createCodeNode(),b=3<=h.regExCaptureGroups.length?h.regExCaptureGroups[2].text:null,null!=b&&0<b.length&&a.setLanguage(b));a.append(...d);break;case "horizontalRule":d=u.$createHorizontalRuleNode(),b.insertBefore(d)}null!==a&&c.replace(a)}else if(a=f.autoFormatCriteria,c=f.matchResultContext,null!=a.nodeTransformationKind&&6===c.regExCaptureGroups.length){a:{a=a.nodeTransformationKind;
|
|
17
|
+
switch(a){case "italic":case "bold":case "underline":case "strikethrough":a=[a];break a;case "bold_italic":a=["bold","italic"];break a}a=null}if(null!=a){d=[1,5];b=f.autoFormatCriteria;e=f.matchResultContext.regExCaptureGroups;h=e.length;var p=f.textNodeWithOffset.node.getParentOrThrow();null==f.joinedText&&C(62);var m=f.joinedText.length;for(var n=1;n<h;n++){var l=e[n];l.anchorTextNodeWithOffset=D(p,m,l.offsetInParent,1);l.focusTextNodeWithOffset=D(p,m,l.offsetInParent+l.textLength,1);0>l.textLength&&
|
|
18
|
+
C(63,b.nodeTransformationKind)}c.regExCaptureGroups=e;if(0<d.length)for(b=c.regExCaptureGroups,e=b.length,h=d.length-1;0<=h;h--)h<e&&(p=d[h],l=b[p],n=l.anchorTextNodeWithOffset,m=l.focusTextNodeWithOffset,null!=n&&null!=m&&0<l.textLength&&(l=q.$createRangeSelection(),l.anchor.set(n.node.getKey(),n.offset,"text"),l.focus.set(m.node.getKey(),m.offset,"text"),q.$setSelection(l),l=q.$getSelection(),q.$isRangeSelection(l)&&(l.removeText(),n.node.getKey()===m.node.getKey()?(l=m.offset-n.offset,0<l||C(64),
|
|
19
|
+
K(-l,m.offset,n.node,p,c)):(n=m.offset,0<n&&K(-n,n,m.node,p,c)))));d=c.regExCaptureGroups;3<d.length||C(65);e=d[3];b=e.anchorTextNodeWithOffset;d=e.focusTextNodeWithOffset;if(null!=b&&null!=d&&0<e.textLength&&(e=q.$createRangeSelection(),e.anchor.set(b.node.getKey(),b.offset,"text"),e.focus.set(d.node.getKey(),d.offset,"text"),q.$setSelection(e),b=q.$getSelection(),q.$isRangeSelection(b))){for(e=0;e<a.length;e++)b.formatText(a[e]);a=q.$createRangeSelection();a.anchor.set(d.node.getKey(),d.offset+
|
|
20
|
+
1,"text");a.focus.set(d.node.getKey(),d.offset+1,"text");q.$setSelection(a)}a=f.textNodeWithOffset.node.getParentOrThrow();c=D(a,c.offsetInJoinedTextForCollapsedSelection+1,c.offsetInJoinedTextForCollapsedSelection,1);null!=c&&(a=q.$createRangeSelection(),a.anchor.set(c.node.getKey(),c.offset,"text"),a.focus.set(c.node.getKey(),c.offset,"text"),q.$setSelection(a))}}},{tag:"history-push"})}
|
|
21
|
+
function M(g,f){let a=null;g.read(()=>{var c=q.$getSelection();if(q.$isRangeSelection(c)){var b=c.anchor.getNode();c=q.$isTextNode(b)?{node:b,offset:c.anchor.offset}:null}else c=null;if(null!==c){c={autoFormatCriteria:{nodeTransformationKind:"noTransformation",regEx:/(?:)/,requiresParagraphStart:null},joinedText:null,matchResultContext:{offsetInJoinedTextForCollapsedSelection:0,regExCaptureGroups:[]},textNodeWithOffset:c,triggerState:f};a:{b=!1===f.isParentAListItemNode?I:H;const n=c.triggerState,
|
|
22
|
+
l=b.length;for(let z=0;z<l;z++){const A=b[z];if(null!=n&&!1===n.isCodeBlock||"paragraphCodeBlock"===A.nodeTransformationKind){var d=A,e=c;if(null!==d.requiresParagraphStart&&!0===d.requiresParagraphStart)null===e.textNodeWithOffset.node.getPreviousSibling()?(e=e.textNodeWithOffset.node.getTextContent(),d=J(e,!0,!1,d.regEx)):d=null;else{if(null==e.joinedText){var h=e.textNodeWithOffset.node.getParentOrThrow();if(q.$isElementNode(h)){if(null==e.joinedText){var p=e,m=e.textNodeWithOffset;let w="";h=
|
|
23
|
+
h.getChildren();const N=h.length;for(let B=0;B<N;++B){const v=h[B];if(q.$isTextNode(v)){const G=v.getTextContent();if(v.is(m.node)){m.offset>G.length&&C(50,v.__key);w+=v.getTextContent().substr(0,m.offset);break}else w+=G}else w+="\u0004"}p.joinedText=w}}else C(52,h.__key)}d=J(e.joinedText,!1,!0,d.regEx)}if(null!=d){b={autoFormatCriteria:A,matchResultContext:d};break a}}}b={autoFormatCriteria:null,matchResultContext:null}}null!==b.autoFormatCriteria&&null!==b.matchResultContext&&(a=c,a.autoFormatCriteria=
|
|
24
|
+
b.autoFormatCriteria,a.matchResultContext=b.matchResultContext)}});return a}
|
|
25
|
+
function O(g){let f=null;g.read(()=>{const a=q.$getSelection();if(q.$isRangeSelection(a)&&a.isCollapsed()){var c=a.anchor.getNode(),b=c.getParent(),d=null!==b&&k.$isListItemNode(b);f={anchorOffset:a.anchor.offset,hasParentNode:null!==b,isCodeBlock:r.$isCodeNode(c),isParentAListItemNode:d,isSelectionCollapsed:a.isCollapsed(),isSimpleText:q.$isTextNode(c)&&c.isSimpleText(),nodeKey:c.getKey(),textContent:c.getTextContent()}}});return f}
|
|
26
|
+
function P(g){t.useEffect(()=>{let f=null;return g.addListener("update",({tags:a})=>{if(!1===a.has("historic")){var c=g.getEditorState();a=O(c);if(null==a)c=null;else{var b=a,d=f;if(null==b||null==d)c=null;else{var e=b.textContent.length,h=b.anchorOffset-1;c=!1===(!0===b.hasParentNode&&b.isSimpleText&&b.isSelectionCollapsed&&b.nodeKey===d.nodeKey&&b.anchorOffset!==d.anchorOffset&&0<=h&&h+1<=e&&" "===b.textContent.substr(h,1)&&b.textContent!==d.textContent)?null:M(c,b)}}null!=c&&L(g,c);f=a}else f=
|
|
26
27
|
null})},[g])}module.exports=function(g){P(g)};
|
|
@@ -19,11 +19,15 @@ var react = require('react');
|
|
|
19
19
|
*
|
|
20
20
|
*
|
|
21
21
|
*/
|
|
22
|
-
function $
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
function $dfs(startingNode, endingNode) {
|
|
23
|
+
const nodes = [];
|
|
24
|
+
const start = (startingNode || lexical.$getRoot()).getLatest();
|
|
25
|
+
const end = endingNode || (lexical.$isElementNode(start) ? start.getLastDescendant() : start);
|
|
26
|
+
let node = start;
|
|
27
|
+
|
|
28
|
+
while (node !== null && !node.is(end)) {
|
|
29
|
+
nodes.push(node);
|
|
25
30
|
|
|
26
|
-
while (node !== null) {
|
|
27
31
|
if (lexical.$isElementNode(node) && node.getChildrenSize() > 0) {
|
|
28
32
|
node = node.getFirstChild();
|
|
29
33
|
} else {
|
|
@@ -40,11 +44,13 @@ function $dfs__DEPRECATED(startingNode, nextNode) {
|
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
46
|
}
|
|
47
|
+
}
|
|
43
48
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
49
|
+
if (node !== null && node.is(end)) {
|
|
50
|
+
nodes.push(node);
|
|
47
51
|
}
|
|
52
|
+
|
|
53
|
+
return nodes;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
/**
|
|
@@ -158,10 +164,13 @@ function findOffset(text, maxCharacters, strlen) {
|
|
|
158
164
|
}
|
|
159
165
|
|
|
160
166
|
function $wrapOverflowedNodes(offset) {
|
|
161
|
-
const
|
|
167
|
+
const dfsNodes = $dfs();
|
|
168
|
+
const dfsNodesLength = dfsNodes.length;
|
|
162
169
|
let accumulatedLength = 0;
|
|
163
|
-
|
|
164
|
-
|
|
170
|
+
|
|
171
|
+
for (let i = 0; i < dfsNodesLength; i += 1) {
|
|
172
|
+
const node = dfsNodes[i];
|
|
173
|
+
|
|
165
174
|
if (OverflowNode.$isOverflowNode(node)) {
|
|
166
175
|
const previousLength = accumulatedLength;
|
|
167
176
|
const nextLength = accumulatedLength + node.getTextContentSize();
|
|
@@ -182,8 +191,6 @@ function $wrapOverflowedNodes(offset) {
|
|
|
182
191
|
parent.select();
|
|
183
192
|
}
|
|
184
193
|
}
|
|
185
|
-
|
|
186
|
-
return previousNode;
|
|
187
194
|
} else if (previousLength < offset) {
|
|
188
195
|
const descendant = node.getFirstDescendant();
|
|
189
196
|
const descendantLength = descendant !== null ? descendant.getTextContentSize() : 0;
|
|
@@ -195,7 +202,6 @@ function $wrapOverflowedNodes(offset) {
|
|
|
195
202
|
|
|
196
203
|
if (firstDescendantIsSimpleText || firstDescendantDoesNotOverflow) {
|
|
197
204
|
$unwrapNode(node);
|
|
198
|
-
return previousNode;
|
|
199
205
|
}
|
|
200
206
|
}
|
|
201
207
|
} else if (lexical.$isLeafNode(node)) {
|
|
@@ -221,10 +227,7 @@ function $wrapOverflowedNodes(offset) {
|
|
|
221
227
|
mergePrevious(overflowNode);
|
|
222
228
|
}
|
|
223
229
|
}
|
|
224
|
-
|
|
225
|
-
previousNode = node;
|
|
226
|
-
return node;
|
|
227
|
-
});
|
|
230
|
+
}
|
|
228
231
|
}
|
|
229
232
|
|
|
230
233
|
function $wrapNode(node) {
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
var
|
|
8
|
-
function
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
var h=require("lexical"),t=require("@lexical/react/withSubscriptions"),y=require("lexical/OverflowNode"),z=require("react");function A(){return h.$getRoot().getTextContent()}function B(a,e,g){var f=Intl.Segmenter;let n=0;var c=0;if("function"===typeof f){a=(new f).segment(a);for(var {segment:k}of a){c+=g(k);if(c>e)break;n+=k.length}}else for(k=Array.from(a),a=k.length,f=0;f<a;f++){const p=k[f];c+=g(p);if(c>e)break;n+=p.length}return n}
|
|
8
|
+
function C(a){const e=y.$createOverflowNode();a.insertBefore(e);e.append(a);return e}function D(a){const e=a.getChildren(),g=e.length;for(let f=0;f<g;f++)a.insertBefore(e[f]);a.remove();return 0<g?e[g-1]:null}
|
|
9
|
+
function E(a){const e=a.getPreviousSibling();if(y.$isOverflowNode(e)){var g=a.getFirstChild(),f=e.getChildren(),n=f.length;if(null===g)a.append(...f);else for(var c=0;c<n;c++)g.insertBefore(f[c]);c=h.$getSelection();if(h.$isRangeSelection(c)){g=c.anchor;f=g.getNode();c=c.focus;const k=g.getNode();f.is(e)?g.set(a.getKey(),g.offset,"element"):f.is(a)&&g.set(a.getKey(),n+g.offset,"element");k.is(e)?c.set(a.getKey(),c.offset,"element"):k.is(a)&&c.set(a.getKey(),n+c.offset,"element")}e.remove()}}
|
|
10
|
+
exports.mergePrevious=E;
|
|
11
|
+
exports.useCharacterLimit=function(a,e,g=Object.freeze({})){const {strlen:f=c=>c.length,remainingCharacters:n=()=>{}}=g;z.useEffect(()=>{if(!a.hasNodes([y.OverflowNode]))throw Error("Minified Lexical error #58; see codes.json for the full message or use the non-minified dev environment for full errors and additional helpful warnings.");},[a]);z.useEffect(()=>{let c=a.getEditorState().read(A),k=0;return t(a.addListener("textcontent",p=>{c=p}),a.addListener("update",({dirtyLeaves:p})=>{var u=a.isComposing();
|
|
12
|
+
p=0<p.size;if(!u&&p){u=f(c);p=u>e||null!==k&&k>e;n(e-u);if(null===k||p){const r=B(c,e,f);a.update(()=>{const v=[];for(var d=h.$getRoot().getLatest(),w=h.$isElementNode(d)?d.getLastDescendant():d;null!==d&&!d.is(w);)if(v.push(d),h.$isElementNode(d)&&0<d.getChildrenSize())d=d.getFirstChild();else for(var q=null;null===q&&null!==d;)q=d.getNextSibling(),d=null===q?d.getParent():q;null!==d&&d.is(w)&&v.push(d);w=v.length;d=0;for(q=0;q<w;q+=1){var b=v[q];if(y.$isOverflowNode(b)){var m=d;if(d+b.getTextContentSize()<=
|
|
13
|
+
r){var l=b.getParent();m=b.getPreviousSibling();var x=b.getNextSibling();D(b);b=h.$getSelection();!h.$isRangeSelection(b)||b.anchor.getNode().isAttached()&&b.focus.getNode().isAttached()||(h.$isTextNode(m)?m.select():h.$isTextNode(x)?x.select():null!==l&&l.select())}else m<r&&(l=b.getFirstDescendant(),x=null!==l?l.getTextContentSize():0,m+=x,l=h.$isTextNode(l)&&l.isSimpleText(),m=m<=r,(l||m)&&D(b))}else h.$isLeafNode(b)&&(m=d,d+=b.getTextContentSize(),d>r&&!y.$isOverflowNode(b.getParent())&&(l=h.$getSelection(),
|
|
14
|
+
m<r&&h.$isTextNode(b)&&b.isSimpleText()?([,b]=b.splitText(r-m),b=C(b)):b=C(b),null!==l&&h.$setSelection(l),E(b)))}},{tag:"history-merge"})}k=u}}))},[a,e,n,f])};
|
|
@@ -42,6 +42,12 @@ function useList(editor) {
|
|
|
42
42
|
} else if (type === 'removeList') {
|
|
43
43
|
list.removeList(editor);
|
|
44
44
|
return true;
|
|
45
|
+
} else if (type === 'insertParagraph') {
|
|
46
|
+
const hasHandledInsertParagraph = list.$handleListInsertParagraph();
|
|
47
|
+
|
|
48
|
+
if (hasHandledInsertParagraph) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
return false;
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
var b=require("@lexical/list"),d=require("react");function e(a){d.useEffect(()=>a.addListener("command",c=>{if("indentContent"===c){if(b.indentList())return!0}else if("outdentContent"===c){if(b.outdentList())return!0}else{if("insertOrderedList"===c)return b.insertList(a,"ol"),!0;if("insertUnorderedList"===c)return b.insertList(a,"ul"),!0;if("removeList"===c)return b.removeList(a),!0}return!1},1),[a])}module.exports=function(a){e(a)};
|
|
7
|
+
var b=require("@lexical/list"),d=require("react");function e(a){d.useEffect(()=>a.addListener("command",c=>{if("indentContent"===c){if(b.indentList())return!0}else if("outdentContent"===c){if(b.outdentList())return!0}else{if("insertOrderedList"===c)return b.insertList(a,"ol"),!0;if("insertUnorderedList"===c)return b.insertList(a,"ul"),!0;if("removeList"===c)return b.removeList(a),!0;if("insertParagraph"===c&&b.$handleListInsertParagraph())return!0}return!1},1),[a])}module.exports=function(a){e(a)};
|