@lexical/react 0.7.8 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/DEPRECATED_useLexical.dev.js +3 -4
  2. package/DEPRECATED_useLexicalCanShowPlaceholder.dev.js +1 -3
  3. package/DEPRECATED_useLexicalCharacterLimit.dev.js +7 -39
  4. package/DEPRECATED_useLexicalEditor.dev.js +1 -3
  5. package/DEPRECATED_useLexicalPlainText.dev.js +4 -1
  6. package/DEPRECATED_useLexicalRichText.dev.js +4 -1
  7. package/LexicalAutoEmbedPlugin.dev.js +0 -11
  8. package/LexicalAutoFocusPlugin.dev.js +0 -1
  9. package/LexicalAutoLinkPlugin.dev.js +7 -50
  10. package/LexicalBlockWithAlignableContents.d.ts +1 -1
  11. package/LexicalBlockWithAlignableContents.dev.js +0 -11
  12. package/LexicalCharacterLimitPlugin.dev.js +7 -46
  13. package/LexicalCheckListPlugin.dev.js +10 -48
  14. package/LexicalClearEditorPlugin.dev.js +1 -1
  15. package/LexicalCollaborationContext.dev.js +0 -3
  16. package/LexicalCollaborationPlugin.dev.js +11 -36
  17. package/LexicalCollaborationPlugin.prod.js +9 -9
  18. package/LexicalComposer.dev.js +6 -10
  19. package/LexicalComposerContext.dev.js +0 -6
  20. package/LexicalContentEditable.d.ts +16 -25
  21. package/LexicalContentEditable.dev.js +10 -14
  22. package/LexicalContentEditable.js.flow +15 -20
  23. package/LexicalContentEditable.prod.js +3 -3
  24. package/LexicalDecoratorBlockNode.dev.js +0 -5
  25. package/LexicalHashtagPlugin.dev.js +73 -43
  26. package/LexicalHorizontalRuleNode.dev.js +0 -22
  27. package/LexicalHorizontalRulePlugin.dev.js +0 -4
  28. package/LexicalLinkPlugin.dev.js +4 -10
  29. package/LexicalListPlugin.dev.js +1 -9
  30. package/LexicalListPlugin.prod.js +2 -2
  31. package/LexicalMarkdownShortcutPlugin.dev.js +2 -2
  32. package/LexicalNestedComposer.dev.js +8 -11
  33. package/LexicalNestedComposer.prod.js +3 -3
  34. package/LexicalNodeEventPlugin.dev.js +5 -3
  35. package/LexicalOnChangePlugin.dev.js +1 -1
  36. package/LexicalPlainTextPlugin.dev.js +8 -12
  37. package/LexicalRichTextPlugin.dev.js +8 -12
  38. package/LexicalTabIndentationPlugin.dev.js +1 -3
  39. package/LexicalTableOfContents__EXPERIMENTAL.dev.js +5 -33
  40. package/LexicalTablePlugin.dev.js +5 -19
  41. package/LexicalTreeView.dev.js +13 -62
  42. package/LexicalTreeView.prod.js +13 -13
  43. package/LexicalTypeaheadMenuPlugin.dev.js +7 -96
  44. package/package.json +19 -19
  45. package/shared/useYjsCollaboration.d.ts +1 -1
  46. package/useLexicalEditable.dev.js +1 -5
  47. package/useLexicalIsTextContentEmpty.dev.js +1 -0
  48. package/useLexicalNodeSelection.dev.js +0 -7
  49. package/useLexicalSubscription.dev.js +1 -3
@@ -18,64 +18,97 @@ var react = require('react');
18
18
  * LICENSE file in the root directory of this source tree.
19
19
  *
20
20
  */
21
-
22
21
  function getHashtagRegexStringChars() {
23
22
  // Latin accented characters
24
23
  // Excludes 0xd7 from the range
25
24
  // (the multiplication sign, confusable with "x").
26
25
  // Also excludes 0xf7, the division sign
27
- const latinAccents = '\xc0-\xd6' + '\xd8-\xf6' + '\xf8-\xff' + '\u0100-\u024f' + '\u0253-\u0254' + '\u0256-\u0257' + '\u0259' + '\u025b' + '\u0263' + '\u0268' + '\u026f' + '\u0272' + '\u0289' + '\u028b' + '\u02bb' + '\u0300-\u036f' + '\u1e00-\u1eff'; // Cyrillic (Russian, Ukrainian, etc.)
28
-
29
- const nonLatinChars = '\u0400-\u04ff' + // Cyrillic
30
- '\u0500-\u0527' + // Cyrillic Supplement
31
- '\u2de0-\u2dff' + // Cyrillic Extended A
32
- '\ua640-\ua69f' + // Cyrillic Extended B
33
- '\u0591-\u05bf' + // Hebrew
34
- '\u05c1-\u05c2' + '\u05c4-\u05c5' + '\u05c7' + '\u05d0-\u05ea' + '\u05f0-\u05f4' + '\ufb12-\ufb28' + // Hebrew Presentation Forms
35
- '\ufb2a-\ufb36' + '\ufb38-\ufb3c' + '\ufb3e' + '\ufb40-\ufb41' + '\ufb43-\ufb44' + '\ufb46-\ufb4f' + '\u0610-\u061a' + // Arabic
36
- '\u0620-\u065f' + '\u066e-\u06d3' + '\u06d5-\u06dc' + '\u06de-\u06e8' + '\u06ea-\u06ef' + '\u06fa-\u06fc' + '\u06ff' + '\u0750-\u077f' + // Arabic Supplement
37
- '\u08a0' + // Arabic Extended A
38
- '\u08a2-\u08ac' + '\u08e4-\u08fe' + '\ufb50-\ufbb1' + // Arabic Pres. Forms A
39
- '\ufbd3-\ufd3d' + '\ufd50-\ufd8f' + '\ufd92-\ufdc7' + '\ufdf0-\ufdfb' + '\ufe70-\ufe74' + // Arabic Pres. Forms B
40
- '\ufe76-\ufefc' + '\u200c-\u200c' + // Zero-Width Non-Joiner
41
- '\u0e01-\u0e3a' + // Thai
42
- '\u0e40-\u0e4e' + // Hangul (Korean)
43
- '\u1100-\u11ff' + // Hangul Jamo
44
- '\u3130-\u3185' + // Hangul Compatibility Jamo
45
- '\uA960-\uA97F' + // Hangul Jamo Extended-A
46
- '\uAC00-\uD7AF' + // Hangul Syllables
47
- '\uD7B0-\uD7FF' + // Hangul Jamo Extended-B
26
+ const latinAccents = '\xc0-\xd6' + '\xd8-\xf6' + '\xf8-\xff' + '\u0100-\u024f' + '\u0253-\u0254' + '\u0256-\u0257' + '\u0259' + '\u025b' + '\u0263' + '\u0268' + '\u026f' + '\u0272' + '\u0289' + '\u028b' + '\u02bb' + '\u0300-\u036f' + '\u1e00-\u1eff';
27
+
28
+ // Cyrillic (Russian, Ukrainian, etc.)
29
+ const nonLatinChars = '\u0400-\u04ff' +
30
+ // Cyrillic
31
+ '\u0500-\u0527' +
32
+ // Cyrillic Supplement
33
+ '\u2de0-\u2dff' +
34
+ // Cyrillic Extended A
35
+ '\ua640-\ua69f' +
36
+ // Cyrillic Extended B
37
+ '\u0591-\u05bf' +
38
+ // Hebrew
39
+ '\u05c1-\u05c2' + '\u05c4-\u05c5' + '\u05c7' + '\u05d0-\u05ea' + '\u05f0-\u05f4' + '\ufb12-\ufb28' +
40
+ // Hebrew Presentation Forms
41
+ '\ufb2a-\ufb36' + '\ufb38-\ufb3c' + '\ufb3e' + '\ufb40-\ufb41' + '\ufb43-\ufb44' + '\ufb46-\ufb4f' + '\u0610-\u061a' +
42
+ // Arabic
43
+ '\u0620-\u065f' + '\u066e-\u06d3' + '\u06d5-\u06dc' + '\u06de-\u06e8' + '\u06ea-\u06ef' + '\u06fa-\u06fc' + '\u06ff' + '\u0750-\u077f' +
44
+ // Arabic Supplement
45
+ '\u08a0' +
46
+ // Arabic Extended A
47
+ '\u08a2-\u08ac' + '\u08e4-\u08fe' + '\ufb50-\ufbb1' +
48
+ // Arabic Pres. Forms A
49
+ '\ufbd3-\ufd3d' + '\ufd50-\ufd8f' + '\ufd92-\ufdc7' + '\ufdf0-\ufdfb' + '\ufe70-\ufe74' +
50
+ // Arabic Pres. Forms B
51
+ '\ufe76-\ufefc' + '\u200c-\u200c' +
52
+ // Zero-Width Non-Joiner
53
+ '\u0e01-\u0e3a' +
54
+ // Thai
55
+ '\u0e40-\u0e4e' +
56
+ // Hangul (Korean)
57
+ '\u1100-\u11ff' +
58
+ // Hangul Jamo
59
+ '\u3130-\u3185' +
60
+ // Hangul Compatibility Jamo
61
+ '\uA960-\uA97F' +
62
+ // Hangul Jamo Extended-A
63
+ '\uAC00-\uD7AF' +
64
+ // Hangul Syllables
65
+ '\uD7B0-\uD7FF' +
66
+ // Hangul Jamo Extended-B
48
67
  '\uFFA1-\uFFDC'; // Half-width Hangul
49
68
 
50
69
  const charCode = String.fromCharCode;
51
- const cjkChars = '\u30A1-\u30FA\u30FC-\u30FE' + // Katakana (full-width)
52
- '\uFF66-\uFF9F' + // Katakana (half-width)
53
- '\uFF10-\uFF19\uFF21-\uFF3A' + '\uFF41-\uFF5A' + // Latin (full-width)
54
- '\u3041-\u3096\u3099-\u309E' + // Hiragana
55
- '\u3400-\u4DBF' + // Kanji (CJK Extension A)
56
- '\u4E00-\u9FFF' + // Kanji (Unified)
70
+ const cjkChars = '\u30A1-\u30FA\u30FC-\u30FE' +
71
+ // Katakana (full-width)
72
+ '\uFF66-\uFF9F' +
73
+ // Katakana (half-width)
74
+ '\uFF10-\uFF19\uFF21-\uFF3A' + '\uFF41-\uFF5A' +
75
+ // Latin (full-width)
76
+ '\u3041-\u3096\u3099-\u309E' +
77
+ // Hiragana
78
+ '\u3400-\u4DBF' +
79
+ // Kanji (CJK Extension A)
80
+ '\u4E00-\u9FFF' +
81
+ // Kanji (Unified)
57
82
  // Disabled as it breaks the Regex.
58
83
  // charCode(0x20000) + '-' + charCode(0x2A6DF) + // Kanji (CJK Extension B)
59
- charCode(0x2a700) + '-' + charCode(0x2b73f) + // Kanji (CJK Extension C)
60
- charCode(0x2b740) + '-' + charCode(0x2b81f) + // Kanji (CJK Extension D)
84
+ charCode(0x2a700) + '-' + charCode(0x2b73f) +
85
+ // Kanji (CJK Extension C)
86
+ charCode(0x2b740) + '-' + charCode(0x2b81f) +
87
+ // Kanji (CJK Extension D)
61
88
  charCode(0x2f800) + '-' + charCode(0x2fa1f) + '\u3003\u3005\u303B'; // Kanji (CJK supplement)
62
89
 
63
- const otherChars = latinAccents + nonLatinChars + cjkChars; // equivalent of \p{L}
90
+ const otherChars = latinAccents + nonLatinChars + cjkChars;
91
+ // equivalent of \p{L}
92
+
93
+ const unicodeLetters = '\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6' + '\u00F8-\u0241\u0250-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EE\u037A\u0386' + '\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03F5\u03F7-\u0481' + '\u048A-\u04CE\u04D0-\u04F9\u0500-\u050F\u0531-\u0556\u0559\u0561-\u0587' + '\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0640-\u064A\u066E-\u066F' + '\u0671-\u06D3\u06D5\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710' + '\u0712-\u072F\u074D-\u076D\u0780-\u07A5\u07B1\u0904-\u0939\u093D\u0950' + '\u0958-\u0961\u097D\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0' + '\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1' + '\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33' + '\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D' + '\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD' + '\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30' + '\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83' + '\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F' + '\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10' + '\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60-\u0C61\u0C85-\u0C8C' + '\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE' + '\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39' + '\u0D60-\u0D61\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6' + '\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E46\u0E81-\u0E82\u0E84\u0E87-\u0E88' + '\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7' + '\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6' + '\u0EDC-\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6A\u0F88-\u0F8B\u1000-\u1021' + '\u1023-\u1027\u1029-\u102A\u1050-\u1055\u10A0-\u10C5\u10D0-\u10FA\u10FC' + '\u1100-\u1159\u115F-\u11A2\u11A8-\u11F9\u1200-\u1248\u124A-\u124D' + '\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0' + '\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310' + '\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C' + '\u166F-\u1676\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711' + '\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7' + '\u17DC\u1820-\u1877\u1880-\u18A8\u1900-\u191C\u1950-\u196D\u1970-\u1974' + '\u1980-\u19A9\u19C1-\u19C7\u1A00-\u1A16\u1D00-\u1DBF\u1E00-\u1E9B' + '\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D' + '\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC' + '\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC' + '\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107' + '\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D' + '\u212F-\u2131\u2133-\u2139\u213C-\u213F\u2145-\u2149\u2C00-\u2C2E' + '\u2C30-\u2C5E\u2C80-\u2CE4\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96' + '\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6' + '\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3006\u3031-\u3035' + '\u303B-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF' + '\u3105-\u312C\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5' + '\u4E00-\u9FBB\uA000-\uA48C\uA800-\uA801\uA803-\uA805\uA807-\uA80A' + '\uA80C-\uA822\uAC00-\uD7A3\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9' + '\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C' + '\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F' + '\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A' + '\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7' + '\uFFDA-\uFFDC';
64
94
 
65
- const unicodeLetters = '\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6' + '\u00F8-\u0241\u0250-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EE\u037A\u0386' + '\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03F5\u03F7-\u0481' + '\u048A-\u04CE\u04D0-\u04F9\u0500-\u050F\u0531-\u0556\u0559\u0561-\u0587' + '\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0640-\u064A\u066E-\u066F' + '\u0671-\u06D3\u06D5\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710' + '\u0712-\u072F\u074D-\u076D\u0780-\u07A5\u07B1\u0904-\u0939\u093D\u0950' + '\u0958-\u0961\u097D\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0' + '\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1' + '\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33' + '\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D' + '\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD' + '\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30' + '\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83' + '\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F' + '\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10' + '\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60-\u0C61\u0C85-\u0C8C' + '\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE' + '\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39' + '\u0D60-\u0D61\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6' + '\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E46\u0E81-\u0E82\u0E84\u0E87-\u0E88' + '\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7' + '\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6' + '\u0EDC-\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6A\u0F88-\u0F8B\u1000-\u1021' + '\u1023-\u1027\u1029-\u102A\u1050-\u1055\u10A0-\u10C5\u10D0-\u10FA\u10FC' + '\u1100-\u1159\u115F-\u11A2\u11A8-\u11F9\u1200-\u1248\u124A-\u124D' + '\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0' + '\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310' + '\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C' + '\u166F-\u1676\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711' + '\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7' + '\u17DC\u1820-\u1877\u1880-\u18A8\u1900-\u191C\u1950-\u196D\u1970-\u1974' + '\u1980-\u19A9\u19C1-\u19C7\u1A00-\u1A16\u1D00-\u1DBF\u1E00-\u1E9B' + '\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D' + '\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC' + '\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC' + '\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107' + '\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D' + '\u212F-\u2131\u2133-\u2139\u213C-\u213F\u2145-\u2149\u2C00-\u2C2E' + '\u2C30-\u2C5E\u2C80-\u2CE4\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96' + '\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6' + '\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3006\u3031-\u3035' + '\u303B-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF' + '\u3105-\u312C\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5' + '\u4E00-\u9FBB\uA000-\uA48C\uA800-\uA801\uA803-\uA805\uA807-\uA80A' + '\uA80C-\uA822\uAC00-\uD7A3\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9' + '\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C' + '\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F' + '\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A' + '\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7' + '\uFFDA-\uFFDC'; // equivalent of \p{Mn}\p{Mc}
95
+ // equivalent of \p{Mn}\p{Mc}
96
+ const unicodeAccents = '\u0300-\u036F\u0483-\u0486\u0591-\u05B9\u05BB-\u05BD\u05BF' + '\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u0615\u064B-\u065E\u0670' + '\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A' + '\u07A6-\u07B0\u0901-\u0903\u093C\u093E-\u094D\u0951-\u0954\u0962-\u0963' + '\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7' + '\u09E2-\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D' + '\u0A70-\u0A71\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD' + '\u0AE2-\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D' + '\u0B56-\u0B57\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7' + '\u0C01-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56' + '\u0C82-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6' + '\u0D02-\u0D03\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D82-\u0D83' + '\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2-\u0DF3\u0E31\u0E34-\u0E3A' + '\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19' + '\u0F35\u0F37\u0F39\u0F3E-\u0F3F\u0F71-\u0F84\u0F86-\u0F87\u0F90-\u0F97' + '\u0F99-\u0FBC\u0FC6\u102C-\u1032\u1036-\u1039\u1056-\u1059\u135F' + '\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B6-\u17D3\u17DD' + '\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8-\u19C9' + '\u1A17-\u1A1B\u1DC0-\u1DC3\u20D0-\u20DC\u20E1\u20E5-\u20EB\u302A-\u302F' + '\u3099-\u309A\uA802\uA806\uA80B\uA823-\uA827\uFB1E\uFE00-\uFE0F' + '\uFE20-\uFE23';
66
97
 
67
- const unicodeAccents = '\u0300-\u036F\u0483-\u0486\u0591-\u05B9\u05BB-\u05BD\u05BF' + '\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u0615\u064B-\u065E\u0670' + '\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A' + '\u07A6-\u07B0\u0901-\u0903\u093C\u093E-\u094D\u0951-\u0954\u0962-\u0963' + '\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7' + '\u09E2-\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D' + '\u0A70-\u0A71\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD' + '\u0AE2-\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D' + '\u0B56-\u0B57\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7' + '\u0C01-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56' + '\u0C82-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6' + '\u0D02-\u0D03\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D82-\u0D83' + '\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2-\u0DF3\u0E31\u0E34-\u0E3A' + '\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19' + '\u0F35\u0F37\u0F39\u0F3E-\u0F3F\u0F71-\u0F84\u0F86-\u0F87\u0F90-\u0F97' + '\u0F99-\u0FBC\u0FC6\u102C-\u1032\u1036-\u1039\u1056-\u1059\u135F' + '\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B6-\u17D3\u17DD' + '\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8-\u19C9' + '\u1A17-\u1A1B\u1DC0-\u1DC3\u20D0-\u20DC\u20E1\u20E5-\u20EB\u302A-\u302F' + '\u3099-\u309A\uA802\uA806\uA80B\uA823-\uA827\uFB1E\uFE00-\uFE0F' + '\uFE20-\uFE23'; // equivalent of \p{Dn}
98
+ // equivalent of \p{Dn}
99
+ const unicodeDigits = '\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u0966-\u096F\u09E6-\u09EF' + '\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F' + '\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29' + '\u1040-\u1049\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9' + '\uFF10-\uFF19';
68
100
 
69
- const unicodeDigits = '\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u0966-\u096F\u09E6-\u09EF' + '\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F' + '\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29' + '\u1040-\u1049\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9' + '\uFF10-\uFF19'; // An alpha char is a unicode chars including unicode marks or
101
+ // An alpha char is a unicode chars including unicode marks or
70
102
  // letter or char in otherChars range
103
+ const alpha = unicodeLetters + unicodeAccents + otherChars;
71
104
 
72
- const alpha = unicodeLetters + unicodeAccents + otherChars; // A numeric character is any with the number digit property, or
105
+ // A numeric character is any with the number digit property, or
73
106
  // underscore. These characters can be included in hashtags, but a hashtag
74
107
  // cannot have only these characters.
108
+ const numeric = unicodeDigits + '_';
75
109
 
76
- const numeric = unicodeDigits + '_'; // Alphanumeric char is any alpha char or a unicode char with decimal
110
+ // Alphanumeric char is any alpha char or a unicode char with decimal
77
111
  // number property \p{Nd}
78
-
79
112
  const alphanumeric = alpha + numeric;
80
113
  const hashChars = '#\\uFF03'; // normal '#' or full-width '#'
81
114
 
@@ -85,7 +118,6 @@ function getHashtagRegexStringChars() {
85
118
  hashChars
86
119
  };
87
120
  }
88
-
89
121
  function getHashtagRegexString() {
90
122
  const {
91
123
  alpha,
@@ -95,13 +127,13 @@ function getHashtagRegexString() {
95
127
  const hashtagAlpha = '[' + alpha + ']';
96
128
  const hashtagAlphanumeric = '[' + alphanumeric + ']';
97
129
  const hashtagBoundary = '^|$|[^&/' + alphanumeric + ']';
98
- const hashCharList = '[' + hashChars + ']'; // A hashtag contains characters, numbers and underscores,
99
- // but not all numbers.
130
+ const hashCharList = '[' + hashChars + ']';
100
131
 
132
+ // A hashtag contains characters, numbers and underscores,
133
+ // but not all numbers.
101
134
  const hashtag = '(' + hashtagBoundary + ')(' + hashCharList + ')(' + hashtagAlphanumeric + '*' + hashtagAlpha + hashtagAlphanumeric + '*)';
102
135
  return hashtag;
103
136
  }
104
-
105
137
  const REGEX = new RegExp(getHashtagRegexString(), 'i');
106
138
  function HashtagPlugin() {
107
139
  const [editor] = LexicalComposerContext.useLexicalComposerContext();
@@ -115,11 +147,9 @@ function HashtagPlugin() {
115
147
  }, []);
116
148
  const getHashtagMatch = react.useCallback(text => {
117
149
  const matchArr = REGEX.exec(text);
118
-
119
150
  if (matchArr === null) {
120
151
  return null;
121
152
  }
122
-
123
153
  const hashtagLength = matchArr[3].length + 1;
124
154
  const startOffset = matchArr.index + matchArr[1].length;
125
155
  const endOffset = startOffset + hashtagLength;
@@ -20,7 +20,6 @@ var React = require('react');
20
20
  *
21
21
  */
22
22
  const INSERT_HORIZONTAL_RULE_COMMAND = lexical.createCommand('INSERT_HORIZONTAL_RULE_COMMAND');
23
-
24
23
  function HorizontalRuleComponent({
25
24
  nodeKey
26
25
  }) {
@@ -31,55 +30,44 @@ function HorizontalRuleComponent({
31
30
  const event = payload;
32
31
  event.preventDefault();
33
32
  const node = lexical.$getNodeByKey(nodeKey);
34
-
35
33
  if ($isHorizontalRuleNode(node)) {
36
34
  node.remove();
37
35
  }
38
-
39
36
  setSelected(false);
40
37
  }
41
-
42
38
  return false;
43
39
  }, [isSelected, nodeKey, setSelected]);
44
40
  React.useEffect(() => {
45
41
  return utils.mergeRegister(editor.registerCommand(lexical.CLICK_COMMAND, event => {
46
42
  const hrElem = editor.getElementByKey(nodeKey);
47
-
48
43
  if (event.target === hrElem) {
49
44
  if (!event.shiftKey) {
50
45
  clearSelection();
51
46
  }
52
-
53
47
  setSelected(!isSelected);
54
48
  return true;
55
49
  }
56
-
57
50
  return false;
58
51
  }, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.KEY_DELETE_COMMAND, onDelete, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.KEY_BACKSPACE_COMMAND, onDelete, lexical.COMMAND_PRIORITY_LOW));
59
52
  }, [clearSelection, editor, isSelected, nodeKey, onDelete, setSelected]);
60
53
  React.useEffect(() => {
61
54
  const hrElem = editor.getElementByKey(nodeKey);
62
-
63
55
  if (hrElem !== null) {
64
56
  hrElem.className = isSelected ? 'selected' : '';
65
57
  }
66
58
  }, [editor, isSelected, nodeKey]);
67
59
  return null;
68
60
  }
69
-
70
61
  class HorizontalRuleNode extends lexical.DecoratorNode {
71
62
  static getType() {
72
63
  return 'horizontalrule';
73
64
  }
74
-
75
65
  static clone(node) {
76
66
  return new HorizontalRuleNode(node.__key);
77
67
  }
78
-
79
68
  static importJSON(serializedNode) {
80
69
  return $createHorizontalRuleNode();
81
70
  }
82
-
83
71
  static importDOM() {
84
72
  return {
85
73
  hr: () => ({
@@ -88,50 +76,40 @@ class HorizontalRuleNode extends lexical.DecoratorNode {
88
76
  })
89
77
  };
90
78
  }
91
-
92
79
  exportJSON() {
93
80
  return {
94
81
  type: 'horizontalrule',
95
82
  version: 1
96
83
  };
97
84
  }
98
-
99
85
  exportDOM() {
100
86
  return {
101
87
  element: document.createElement('hr')
102
88
  };
103
89
  }
104
-
105
90
  createDOM() {
106
91
  return document.createElement('hr');
107
92
  }
108
-
109
93
  getTextContent() {
110
94
  return '\n';
111
95
  }
112
-
113
96
  isInline() {
114
97
  return false;
115
98
  }
116
-
117
99
  updateDOM() {
118
100
  return false;
119
101
  }
120
-
121
102
  decorate() {
122
103
  return /*#__PURE__*/React.createElement(HorizontalRuleComponent, {
123
104
  nodeKey: this.__key
124
105
  });
125
106
  }
126
-
127
107
  }
128
-
129
108
  function convertHorizontalRuleElement() {
130
109
  return {
131
110
  node: $createHorizontalRuleNode()
132
111
  };
133
112
  }
134
-
135
113
  function $createHorizontalRuleNode() {
136
114
  return lexical.$applyNodeReplacement(new HorizontalRuleNode());
137
115
  }
@@ -24,18 +24,14 @@ function HorizontalRulePlugin() {
24
24
  react.useEffect(() => {
25
25
  return editor.registerCommand(LexicalHorizontalRuleNode.INSERT_HORIZONTAL_RULE_COMMAND, type => {
26
26
  const selection = lexical.$getSelection();
27
-
28
27
  if (!lexical.$isRangeSelection(selection)) {
29
28
  return false;
30
29
  }
31
-
32
30
  const focusNode = selection.focus.getNode();
33
-
34
31
  if (focusNode !== null) {
35
32
  const horizontalRuleNode = LexicalHorizontalRuleNode.$createHorizontalRuleNode();
36
33
  utils.$insertNodeToNearestRoot(horizontalRuleNode);
37
34
  }
38
-
39
35
  return true;
40
36
  }, lexical.COMMAND_PRIORITY_EDITOR);
41
37
  }, [editor]);
@@ -27,7 +27,6 @@ function LinkPlugin({
27
27
  if (!editor.hasNodes([link.LinkNode])) {
28
28
  throw new Error('LinkPlugin: LinkNode not registered on editor');
29
29
  }
30
-
31
30
  return utils.mergeRegister(editor.registerCommand(link.TOGGLE_LINK_COMMAND, payload => {
32
31
  if (payload === null) {
33
32
  link.toggleLink(payload);
@@ -37,7 +36,6 @@ function LinkPlugin({
37
36
  link.toggleLink(payload);
38
37
  return true;
39
38
  }
40
-
41
39
  return false;
42
40
  } else {
43
41
  const {
@@ -53,26 +51,22 @@ function LinkPlugin({
53
51
  }
54
52
  }, lexical.COMMAND_PRIORITY_LOW), validateUrl !== undefined ? editor.registerCommand(lexical.PASTE_COMMAND, event => {
55
53
  const selection = lexical.$getSelection();
56
-
57
54
  if (!lexical.$isRangeSelection(selection) || selection.isCollapsed() || !(event instanceof ClipboardEvent) || event.clipboardData == null) {
58
55
  return false;
59
56
  }
60
-
61
57
  const clipboardText = event.clipboardData.getData('text');
62
-
63
58
  if (!validateUrl(clipboardText)) {
64
59
  return false;
65
- } // If we select nodes that are elements then avoid applying the link.
66
-
67
-
60
+ }
61
+ // If we select nodes that are elements then avoid applying the link.
68
62
  if (!selection.getNodes().some(node => lexical.$isElementNode(node))) {
69
63
  editor.dispatchCommand(link.TOGGLE_LINK_COMMAND, clipboardText);
70
64
  event.preventDefault();
71
65
  return true;
72
66
  }
73
-
74
67
  return false;
75
- }, lexical.COMMAND_PRIORITY_LOW) : () => {// Don't paste arbritrary text as a link when there's no validate function
68
+ }, lexical.COMMAND_PRIORITY_LOW) : () => {
69
+ // Don't paste arbritrary text as a link when there's no validate function
76
70
  });
77
71
  }, [editor, validateUrl]);
78
72
  return null;
@@ -21,13 +21,7 @@ var lexical = require('lexical');
21
21
  */
22
22
  function useList(editor) {
23
23
  react.useEffect(() => {
24
- return utils.mergeRegister(editor.registerCommand(lexical.INDENT_CONTENT_COMMAND, () => {
25
- list.indentList();
26
- return false;
27
- }, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.OUTDENT_CONTENT_COMMAND, () => {
28
- list.outdentList();
29
- return false;
30
- }, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(list.INSERT_ORDERED_LIST_COMMAND, () => {
24
+ return utils.mergeRegister(editor.registerCommand(list.INSERT_ORDERED_LIST_COMMAND, () => {
31
25
  list.insertList(editor, 'number');
32
26
  return true;
33
27
  }, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(list.INSERT_UNORDERED_LIST_COMMAND, () => {
@@ -38,11 +32,9 @@ function useList(editor) {
38
32
  return true;
39
33
  }, lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(lexical.INSERT_PARAGRAPH_COMMAND, () => {
40
34
  const hasHandledInsertParagraph = list.$handleListInsertParagraph();
41
-
42
35
  if (hasHandledInsertParagraph) {
43
36
  return true;
44
37
  }
45
-
46
38
  return false;
47
39
  }, lexical.COMMAND_PRIORITY_LOW));
48
40
  }, [editor]);
@@ -5,5 +5,5 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  'use strict';var b=require("@lexical/list"),c=require("@lexical/react/LexicalComposerContext"),d=require("react"),e=require("@lexical/utils"),f=require("lexical");
8
- function g(a){d.useEffect(()=>e.mergeRegister(a.registerCommand(f.INDENT_CONTENT_COMMAND,()=>{b.indentList();return!1},f.COMMAND_PRIORITY_LOW),a.registerCommand(f.OUTDENT_CONTENT_COMMAND,()=>{b.outdentList();return!1},f.COMMAND_PRIORITY_LOW),a.registerCommand(b.INSERT_ORDERED_LIST_COMMAND,()=>{b.insertList(a,"number");return!0},f.COMMAND_PRIORITY_LOW),a.registerCommand(b.INSERT_UNORDERED_LIST_COMMAND,()=>{b.insertList(a,"bullet");return!0},f.COMMAND_PRIORITY_LOW),a.registerCommand(b.REMOVE_LIST_COMMAND,
9
- ()=>{b.removeList(a);return!0},f.COMMAND_PRIORITY_LOW),a.registerCommand(f.INSERT_PARAGRAPH_COMMAND,()=>b.$handleListInsertParagraph()?!0:!1,f.COMMAND_PRIORITY_LOW)),[a])}exports.ListPlugin=function(){let [a]=c.useLexicalComposerContext();d.useEffect(()=>{if(!a.hasNodes([b.ListNode,b.ListItemNode]))throw Error("ListPlugin: ListNode and/or ListItemNode not registered on editor");},[a]);g(a);return null}
8
+ function g(a){d.useEffect(()=>e.mergeRegister(a.registerCommand(b.INSERT_ORDERED_LIST_COMMAND,()=>{b.insertList(a,"number");return!0},f.COMMAND_PRIORITY_LOW),a.registerCommand(b.INSERT_UNORDERED_LIST_COMMAND,()=>{b.insertList(a,"bullet");return!0},f.COMMAND_PRIORITY_LOW),a.registerCommand(b.REMOVE_LIST_COMMAND,()=>{b.removeList(a);return!0},f.COMMAND_PRIORITY_LOW),a.registerCommand(f.INSERT_PARAGRAPH_COMMAND,()=>b.$handleListInsertParagraph()?!0:!1,f.COMMAND_PRIORITY_LOW)),[a])}
9
+ exports.ListPlugin=function(){let [a]=c.useLexicalComposerContext();d.useEffect(()=>{if(!a.hasNodes([b.ListNode,b.ListItemNode]))throw Error("ListPlugin: ListNode and/or ListItemNode not registered on editor");},[a]);g(a);return null}
@@ -25,14 +25,14 @@ const HR = {
25
25
  },
26
26
  regExp: /^(---|\*\*\*|___)\s?$/,
27
27
  replace: (parentNode, _1, _2, isImport) => {
28
- const line = LexicalHorizontalRuleNode.$createHorizontalRuleNode(); // TODO: Get rid of isImport flag
28
+ const line = LexicalHorizontalRuleNode.$createHorizontalRuleNode();
29
29
 
30
+ // TODO: Get rid of isImport flag
30
31
  if (isImport || parentNode.getNextSibling() != null) {
31
32
  parentNode.replace(line);
32
33
  } else {
33
34
  parentNode.insertBefore(line);
34
35
  }
35
-
36
36
  line.selectNext();
37
37
  },
38
38
  type: 'element'
@@ -26,54 +26,50 @@ function LexicalNestedComposer({
26
26
  }) {
27
27
  const wasCollabPreviouslyReadyRef = React.useRef(false);
28
28
  const parentContext = React.useContext(LexicalComposerContext.LexicalComposerContext);
29
-
30
29
  if (parentContext == null) {
31
30
  {
32
31
  throw Error(`Unexpected parent context null on a nested composer`);
33
32
  }
34
33
  }
35
-
36
34
  const [parentEditor, {
37
35
  getTheme: getParentTheme
38
36
  }] = parentContext;
39
37
  const composerContext = React.useMemo(() => {
40
38
  const composerTheme = initialTheme || getParentTheme() || undefined;
41
39
  const context = LexicalComposerContext.createLexicalComposerContext(parentContext, composerTheme);
42
-
43
40
  if (composerTheme !== undefined) {
44
41
  initialEditor._config.theme = composerTheme;
45
42
  }
46
-
47
43
  initialEditor._parentEditor = parentEditor;
48
-
49
44
  if (!initialNodes) {
50
45
  const parentNodes = initialEditor._nodes = new Map(parentEditor._nodes);
51
-
52
46
  for (const [type, entry] of parentNodes) {
53
47
  initialEditor._nodes.set(type, {
54
48
  klass: entry.klass,
55
49
  replace: entry.replace,
50
+ replaceWithKlass: entry.replaceWithKlass,
56
51
  transforms: new Set()
57
52
  });
58
53
  }
59
54
  } else {
60
55
  for (const klass of initialNodes) {
61
56
  const type = klass.getType();
62
-
63
57
  initialEditor._nodes.set(type, {
64
58
  klass,
65
59
  replace: null,
60
+ replaceWithKlass: null,
66
61
  transforms: new Set()
67
62
  });
68
63
  }
69
64
  }
70
-
71
65
  initialEditor._config.namespace = parentEditor._config.namespace;
72
66
  return [initialEditor, context];
73
- }, // We only do this for init
67
+ },
68
+ // We only do this for init
74
69
  // eslint-disable-next-line react-hooks/exhaustive-deps
75
- []); // If collaboration is enabled, make sure we don't render the children until the collaboration subdocument is ready.
70
+ []);
76
71
 
72
+ // If collaboration is enabled, make sure we don't render the children until the collaboration subdocument is ready.
77
73
  const {
78
74
  isCollabActive,
79
75
  yjsDocMap
@@ -83,8 +79,9 @@ function LexicalNestedComposer({
83
79
  if (isCollabReady) {
84
80
  wasCollabPreviouslyReadyRef.current = true;
85
81
  }
86
- }, [isCollabReady]); // Update `isEditable` state of nested editor in response to the same change on parent editor.
82
+ }, [isCollabReady]);
87
83
 
84
+ // Update `isEditable` state of nested editor in response to the same change on parent editor.
88
85
  React.useEffect(() => {
89
86
  return parentEditor.registerEditableListener(editable => {
90
87
  initialEditor.setEditable(editable);
@@ -5,6 +5,6 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  'use strict';var c=require("@lexical/react/LexicalCollaborationContext"),f=require("@lexical/react/LexicalComposerContext"),n=require("react");
8
- exports.LexicalNestedComposer=function({initialEditor:a,children:p,initialNodes:k,initialTheme:q,skipCollabChecks:r}){let l=n.useRef(!1),g=n.useContext(f.LexicalComposerContext);if(null==g)throw Error("Minified Lexical error #9; visit https://lexical.dev/docs/error?code=9 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.");let [d,{getTheme:t}]=g,w=n.useMemo(()=>{var b=q||t()||void 0;const u=f.createLexicalComposerContext(g,b);void 0!==b&&
9
- (a._config.theme=b);a._parentEditor=d;if(k)for(var e of k)b=e.getType(),a._nodes.set(b,{klass:e,replace:null,transforms:new Set});else{e=a._nodes=new Map(d._nodes);for(const [v,m]of e)a._nodes.set(v,{klass:m.klass,replace:m.replace,transforms:new Set})}a._config.namespace=d._config.namespace;return[a,u]},[]),{isCollabActive:x,yjsDocMap:y}=c.useCollaborationContext(),h=r||l.current||y.has(a.getKey());n.useEffect(()=>{h&&(l.current=!0)},[h]);n.useEffect(()=>d.registerEditableListener(b=>{a.setEditable(b)}),
10
- [a,d]);return n.createElement(f.LexicalComposerContext.Provider,{value:w},!x||h?p:null)}
8
+ exports.LexicalNestedComposer=function({initialEditor:a,children:p,initialNodes:l,initialTheme:q,skipCollabChecks:r}){let m=n.useRef(!1),g=n.useContext(f.LexicalComposerContext);if(null==g)throw Error("Minified Lexical error #9; visit https://lexical.dev/docs/error?code=9 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.");let [d,{getTheme:t}]=g,w=n.useMemo(()=>{var b=q||t()||void 0;const u=f.createLexicalComposerContext(g,b);void 0!==b&&
9
+ (a._config.theme=b);a._parentEditor=d;if(l)for(var e of l)b=e.getType(),a._nodes.set(b,{klass:e,replace:null,replaceWithKlass:null,transforms:new Set});else{e=a._nodes=new Map(d._nodes);for(const [v,h]of e)a._nodes.set(v,{klass:h.klass,replace:h.replace,replaceWithKlass:h.replaceWithKlass,transforms:new Set})}a._config.namespace=d._config.namespace;return[a,u]},[]),{isCollabActive:x,yjsDocMap:y}=c.useCollaborationContext(),k=r||m.current||y.has(a.getKey());n.useEffect(()=>{k&&(m.current=!0)},[k]);
10
+ n.useEffect(()=>d.registerEditableListener(b=>{a.setEditable(b)}),[a,d]);return n.createElement(f.LexicalComposerContext.Provider,{value:w},!x||k?p:null)}
@@ -16,6 +16,7 @@ var react = require('react');
16
16
  * LICENSE file in the root directory of this source tree.
17
17
  *
18
18
  */
19
+
19
20
  const CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';
20
21
 
21
22
  /**
@@ -49,8 +50,8 @@ function NodeEventPlugin({
49
50
  editor.getEditorState().read(() => {
50
51
  for (const [key, mutation] of mutations) {
51
52
  const element = editor.getElementByKey(key);
52
-
53
- if ( // Updated might be a move, so that might mean a new DOM element
53
+ if (
54
+ // Updated might be a move, so that might mean a new DOM element
54
55
  // is created. In this case, we need to add and event listener too.
55
56
  (mutation === 'created' || mutation === 'updated') && element !== null && !registedElements.has(element)) {
56
57
  registedElements.add(element);
@@ -60,7 +61,8 @@ function NodeEventPlugin({
60
61
  }
61
62
  }
62
63
  });
63
- }); // wW intentionally don't respect changes to eventType.
64
+ });
65
+ // wW intentionally don't respect changes to eventType.
64
66
  // eslint-disable-next-line react-hooks/exhaustive-deps
65
67
  }, [editor, nodeType]);
66
68
  return null;
@@ -16,6 +16,7 @@ var react = require('react');
16
16
  * LICENSE file in the root directory of this source tree.
17
17
  *
18
18
  */
19
+
19
20
  const CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';
20
21
 
21
22
  /**
@@ -53,7 +54,6 @@ function OnChangePlugin({
53
54
  if (ignoreSelectionChange && dirtyElements.size === 0 && dirtyLeaves.size === 0 || ignoreHistoryMergeTagChange && tags.has('history-merge') || prevEditorState.isEmpty()) {
54
55
  return;
55
56
  }
56
-
57
57
  onChange(editorState, editor);
58
58
  });
59
59
  }