@lexical/markdown 0.3.8 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,6 +20,7 @@ var link = require('@lexical/link');
20
20
  * LICENSE file in the root directory of this source tree.
21
21
  *
22
22
  */
23
+
23
24
  function indexBy(list, callback) {
24
25
  const index = {};
25
26
 
@@ -553,7 +554,7 @@ function runTextMatchTransformers(anchorNode, anchorOffset, transformersByTrigge
553
554
  [, replaceNode] = anchorNode.splitText(startIndex, endIndex);
554
555
  }
555
556
 
556
- replaceNode.selectNext();
557
+ replaceNode.selectNext(0, 0);
557
558
  transformer.replace(replaceNode, match);
558
559
  return true;
559
560
  }
@@ -23,6 +23,6 @@ c(d,b):b},importRegExp:/(?:\[([^[]+)\])(?:\(([^(]+)\))/,regExp:/(?:\[([^[]+)\])(
23
23
  exports.BOLD_ITALIC_UNDERSCORE=ma;exports.BOLD_STAR=na;exports.BOLD_UNDERSCORE=pa;exports.CHECK_LIST=ia;exports.CODE=X;exports.ELEMENT_TRANSFORMERS=ua;exports.HEADING=V;exports.INLINE_CODE=ka;exports.ITALIC_STAR=ra;exports.ITALIC_UNDERSCORE=sa;exports.LINK=ta;exports.ORDERED_LIST=ja;exports.QUOTE=W;exports.STRIKETHROUGH=qa;exports.TEXT_FORMAT_TRANSFORMERS=va;exports.TEXT_MATCH_TRANSFORMERS=wa;exports.TRANSFORMERS=Z;exports.UNORDERED_LIST=Y;
24
24
  exports.registerMarkdownShortcuts=function(a,b=Z){let c=I(b),d=H(c.textFormat,({tag:f})=>f[f.length-1]),e=H(c.textMatch,({trigger:f})=>f);return a.registerUpdateListener(({tags:f,dirtyLeaves:k,editorState:p,prevEditorState:r})=>{if(!f.has("historic")){var n=p.read(h.$getSelection);f=r.read(h.$getSelection);if(h.$isRangeSelection(f)&&h.$isRangeSelection(n)&&n.isCollapsed()){r=n.anchor.key;var t=n.anchor.offset,q=p._nodeMap.get(r);h.$isTextNode(q)&&k.has(r)&&(1===t||t===f.anchor.offset+1)&&a.update(()=>
25
25
  {if(!q.hasFormat("code")){var l=q.getParent();if(null!==l&&!y.$isCodeNode(l)){var w=n.anchor.offset;b:{var g=c.element,m=l.getParent();if(h.$isRootNode(m)&&l.getFirstChild()===q&&(m=q.getTextContent()," "===m[w-1]))for(let {regExp:B,replace:C}of g)if((g=m.match(B))&&g[0].length===w){m=q.getNextSiblings();let [D,oa]=q.splitText(w);D.remove();m=oa?[oa,...m]:m;C(l,m,g,!1);l=!0;break b}l=!1}if(!l){b:{g=q.getTextContent();l=e[g[w-1]];if(null!=l){w<g.length&&(g=g.slice(0,w));for(x of l)if(l=g.match(x.regExp),
26
- null!==l){g=l.index||0;m=g+l[0].length;var v=void 0;0===g?[v]=q.splitText(m):[,v]=q.splitText(g,m);v.selectNext();x.replace(v,l);var x=!0;break b}}x=!1}if(!x)b:{m=q.getTextContent();--w;var u=m[w];if(x=d[u])for(let B of x){var {tag:A}=B;x=A.length;let C=w-x+1;if(!(1<x&&!R(m,C,A,0,x)||" "===m[C-1])&&(v=m[w+1],!1!==B.intraword||!v||J.test(v))){l=v=q;g=Q(m,C,A);for(var z=l;0>g&&(z=z.getPreviousSibling())&&!h.$isLineBreakNode(z);)h.$isTextNode(z)&&(g=z.getTextContent(),l=z,g=Q(g,g.length,A));if(!(0>g||
27
- l===v&&g+x===C||(A=l.getTextContent(),0<g&&A[g-1]===u||(z=A[g-1],!1===B.intraword&&z&&!J.test(z))))){m=v.getTextContent();m=m.slice(0,C)+m.slice(w+1);v.setTextContent(m);m=l===v?m:A;l.setTextContent(m.slice(0,g)+m.slice(g+x));m=h.$getSelection();u=h.$createRangeSelection();h.$setSelection(u);w=w-x*(l===v?2:1)+1;u.anchor.set(l.__key,g,"text");u.focus.set(v.__key,w,"text");for(let D of B.format)u.hasFormat(D)||u.formatText(D);u.anchor.set(u.focus.key,u.focus.offset,u.focus.type);for(let D of B.format)u.hasFormat(D)&&
26
+ null!==l){g=l.index||0;m=g+l[0].length;var v=void 0;0===g?[v]=q.splitText(m):[,v]=q.splitText(g,m);v.selectNext(0,0);x.replace(v,l);var x=!0;break b}}x=!1}if(!x)b:{m=q.getTextContent();--w;var u=m[w];if(x=d[u])for(let B of x){var {tag:A}=B;x=A.length;let C=w-x+1;if(!(1<x&&!R(m,C,A,0,x)||" "===m[C-1])&&(v=m[w+1],!1!==B.intraword||!v||J.test(v))){l=v=q;g=Q(m,C,A);for(var z=l;0>g&&(z=z.getPreviousSibling())&&!h.$isLineBreakNode(z);)h.$isTextNode(z)&&(g=z.getTextContent(),l=z,g=Q(g,g.length,A));if(!(0>
27
+ g||l===v&&g+x===C||(A=l.getTextContent(),0<g&&A[g-1]===u||(z=A[g-1],!1===B.intraword&&z&&!J.test(z))))){m=v.getTextContent();m=m.slice(0,C)+m.slice(w+1);v.setTextContent(m);m=l===v?m:A;l.setTextContent(m.slice(0,g)+m.slice(g+x));m=h.$getSelection();u=h.$createRangeSelection();h.$setSelection(u);w=w-x*(l===v?2:1)+1;u.anchor.set(l.__key,g,"text");u.focus.set(v.__key,w,"text");for(let D of B.format)u.hasFormat(D)||u.formatText(D);u.anchor.set(u.focus.key,u.focus.offset,u.focus.type);for(let D of B.format)u.hasFormat(D)&&
28
28
  u.toggleFormat(D);h.$isRangeSelection(m)&&(u.format=m.format);break b}}}}}}}})}}})}
File without changes
File without changes
package/index.d.ts CHANGED
@@ -5,9 +5,9 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- import type { ElementTransformer, TextFormatTransformer, TextMatchTransformer, Transformer } from './v2/MarkdownTransformers';
9
- import { registerMarkdownShortcuts } from './v2/MarkdownShortcuts';
10
- import { BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, CHECK_LIST, CODE, HEADING, INLINE_CODE, ITALIC_STAR, ITALIC_UNDERSCORE, LINK, ORDERED_LIST, QUOTE, STRIKETHROUGH, UNORDERED_LIST } from './v2/MarkdownTransformers';
8
+ import type { ElementTransformer, TextFormatTransformer, TextMatchTransformer, Transformer } from './MarkdownTransformers';
9
+ import { registerMarkdownShortcuts } from './MarkdownShortcuts';
10
+ import { BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, CHECK_LIST, CODE, HEADING, INLINE_CODE, ITALIC_STAR, ITALIC_UNDERSCORE, LINK, ORDERED_LIST, QUOTE, STRIKETHROUGH, UNORDERED_LIST } from './MarkdownTransformers';
11
11
  declare const ELEMENT_TRANSFORMERS: Array<ElementTransformer>;
12
12
  declare const TEXT_FORMAT_TRANSFORMERS: Array<TextFormatTransformer>;
13
13
  declare const TEXT_MATCH_TRANSFORMERS: Array<TextMatchTransformer>;
package/package.json CHANGED
@@ -8,18 +8,18 @@
8
8
  "markdown"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.3.8",
11
+ "version": "0.3.11",
12
12
  "main": "LexicalMarkdown.js",
13
13
  "peerDependencies": {
14
- "lexical": "0.3.8"
14
+ "lexical": "0.3.11"
15
15
  },
16
16
  "dependencies": {
17
- "@lexical/utils": "0.3.8",
18
- "@lexical/code": "0.3.8",
19
- "@lexical/text": "0.3.8",
20
- "@lexical/rich-text": "0.3.8",
21
- "@lexical/list": "0.3.8",
22
- "@lexical/link": "0.3.8"
17
+ "@lexical/utils": "0.3.11",
18
+ "@lexical/code": "0.3.11",
19
+ "@lexical/text": "0.3.11",
20
+ "@lexical/rich-text": "0.3.11",
21
+ "@lexical/list": "0.3.11",
22
+ "@lexical/link": "0.3.11"
23
23
  },
24
24
  "repository": {
25
25
  "type": "git",
package/utils.d.ts CHANGED
@@ -5,32 +5,11 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- import type { TextNodeWithOffset } from '@lexical/text';
9
- import type { DecoratorNode, ElementNode, LexicalEditor, LexicalNode, NodeKey, TextFormatType } from 'lexical';
10
- export declare type AutoFormatTriggerState = Readonly<{
11
- anchorOffset: number;
12
- hasParentNode: boolean;
13
- isCodeBlock: boolean;
14
- isParentAListItemNode: boolean;
15
- isSelectionCollapsed: boolean;
16
- isSimpleText: boolean;
17
- nodeKey: NodeKey;
18
- textContent: string;
19
- }>;
20
- export declare type MarkdownFormatKind = 'noTransformation' | 'paragraphH1' | 'paragraphH2' | 'paragraphH3' | 'paragraphH4' | 'paragraphH5' | 'paragraphH6' | 'paragraphBlockQuote' | 'paragraphUnorderedList' | 'paragraphOrderedList' | 'paragraphCodeBlock' | 'horizontalRule' | 'bold' | 'code' | 'italic' | 'underline' | 'strikethrough' | 'italic_bold' | 'strikethrough_italic' | 'strikethrough_bold' | 'strikethrough_italic_bold' | 'link';
21
- export declare type ScanningContext = {
22
- currentElementNode: null | ElementNode;
23
- editor: LexicalEditor;
24
- isAutoFormatting: boolean;
25
- isWithinCodeBlock: boolean;
26
- joinedText: string | null | undefined;
27
- markdownCriteria: MarkdownCriteria;
28
- patternMatchResults: PatternMatchResults;
29
- textNodeWithOffset: TextNodeWithOffset | null | undefined;
30
- triggerState: AutoFormatTriggerState | null | undefined;
31
- };
32
- export declare type MarkdownCriteria = Readonly<{
33
- export?: (node: LexicalNode, traverseChildren: (node: ElementNode) => string) => string | null;
8
+ import type { ElementTransformer, TextFormatTransformer, TextMatchTransformer, Transformer } from '@lexical/markdown';
9
+ import type { ElementNode, LexicalNode, TextFormatType } from 'lexical';
10
+ declare type MarkdownFormatKind = 'noTransformation' | 'paragraphH1' | 'paragraphH2' | 'paragraphH3' | 'paragraphH4' | 'paragraphH5' | 'paragraphH6' | 'paragraphBlockQuote' | 'paragraphUnorderedList' | 'paragraphOrderedList' | 'paragraphCodeBlock' | 'horizontalRule' | 'bold' | 'code' | 'italic' | 'underline' | 'strikethrough' | 'italic_bold' | 'strikethrough_italic' | 'strikethrough_bold' | 'strikethrough_italic_bold' | 'link';
11
+ declare type MarkdownCriteria = Readonly<{
12
+ export?: (node: LexicalNode, traverseChildren: (elementNode: ElementNode) => string) => string | null;
34
13
  exportFormat?: TextFormatType;
35
14
  exportTag?: string;
36
15
  exportTagClose?: string;
@@ -39,36 +18,14 @@ export declare type MarkdownCriteria = Readonly<{
39
18
  regExForAutoFormatting: RegExp;
40
19
  requiresParagraphStart: boolean | null | undefined;
41
20
  }>;
42
- declare type CaptureGroupDetail = {
43
- offsetInParent: number;
44
- text: string;
45
- };
46
- export declare type PatternMatchResults = {
47
- regExCaptureGroups: Array<CaptureGroupDetail>;
48
- };
49
- export declare type MarkdownCriteriaWithPatternMatchResults = {
50
- markdownCriteria: null | MarkdownCriteria;
51
- patternMatchResults: null | PatternMatchResults;
52
- };
53
- export declare type MarkdownCriteriaArray = Array<MarkdownCriteria>;
54
- export declare type AutoFormatTriggerKind = 'space_trigger' | 'codeBlock_trigger';
55
- export declare type AutoFormatTrigger = {
56
- triggerKind: AutoFormatTriggerKind;
57
- triggerString: string;
58
- };
59
- export declare const triggers: Array<AutoFormatTrigger>;
60
- export declare const allMarkdownCriteria: MarkdownCriteriaArray;
61
- export declare function getAllTriggers(): Array<AutoFormatTrigger>;
21
+ declare type MarkdownCriteriaArray = Array<MarkdownCriteria>;
62
22
  export declare function getAllMarkdownCriteriaForParagraphs(): MarkdownCriteriaArray;
63
23
  export declare function getAllMarkdownCriteriaForTextNodes(): MarkdownCriteriaArray;
64
- export declare function getAllMarkdownCriteria(): MarkdownCriteriaArray;
65
- export declare function getInitialScanningContext(editor: LexicalEditor, isAutoFormatting: boolean, textNodeWithOffset: null | TextNodeWithOffset, triggerState: null | AutoFormatTriggerState): ScanningContext;
66
- export declare function resetScanningContext(scanningContext: ScanningContext): ScanningContext;
67
- export declare function getCodeBlockCriteria(): MarkdownCriteria;
68
- export declare function getPatternMatchResultsForCriteria(markdownCriteria: MarkdownCriteria, scanningContext: ScanningContext, parentElementNode: ElementNode): null | PatternMatchResults;
69
- export declare function getPatternMatchResultsForCodeBlock(scanningContext: ScanningContext, text: string): null | PatternMatchResults;
70
- export declare function hasPatternMatchResults(scanningContext: ScanningContext): boolean;
71
- export declare function getTextNodeWithOffsetOrThrow(scanningContext: ScanningContext): TextNodeWithOffset;
72
- export declare function transformTextNodeForMarkdownCriteria<T>(scanningContext: ScanningContext, elementNode: ElementNode, createHorizontalRuleNode: null | (() => DecoratorNode<T>)): void;
73
- export declare function getParentElementNodeOrThrow(scanningContext: ScanningContext): ElementNode;
24
+ export declare function indexBy<T>(list: Array<T>, callback: (arg0: T) => string): Readonly<Record<string, Array<T>>>;
25
+ export declare function transformersByType(transformers: Array<Transformer>): Readonly<{
26
+ element: Array<ElementTransformer>;
27
+ textFormat: Array<TextFormatTransformer>;
28
+ textMatch: Array<TextMatchTransformer>;
29
+ }>;
30
+ export declare const PUNCTUATION_OR_SPACE: RegExp;
74
31
  export {};
@@ -1,12 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
- import type { AutoFormatTriggerState, ScanningContext } from './utils';
9
- import type { DecoratorNode, EditorState, LexicalEditor } from 'lexical';
10
- export declare function updateAutoFormatting<T>(editor: LexicalEditor, scanningContext: ScanningContext, createHorizontalRuleNode: () => DecoratorNode<T>): void;
11
- export declare function getTriggerState(editorState: EditorState): null | AutoFormatTriggerState;
12
- export declare function findScanningContext(editor: LexicalEditor, currentTriggerState: null | AutoFormatTriggerState, priorTriggerState: null | AutoFormatTriggerState): null | ScanningContext;
@@ -1,10 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
- import type { DecoratorNode, LexicalEditor, RootNode } from 'lexical';
9
- export declare function convertStringToLexical(text: string, editor: LexicalEditor): null | RootNode;
10
- export declare function convertMarkdownForElementNodes<T>(editor: LexicalEditor, createHorizontalRuleNode: null | (() => DecoratorNode<T>)): void;
package/v2/utils.d.ts DELETED
@@ -1,15 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
- import type { ElementTransformer, TextFormatTransformer, TextMatchTransformer, Transformer } from '@lexical/markdown';
9
- export declare function indexBy<T>(list: Array<T>, callback: (arg0: T) => string): Readonly<Record<string, Array<T>>>;
10
- export declare function transformersByType(transformers: Array<Transformer>): Readonly<{
11
- element: Array<ElementTransformer>;
12
- textFormat: Array<TextFormatTransformer>;
13
- textMatch: Array<TextMatchTransformer>;
14
- }>;
15
- export declare const PUNCTUATION_OR_SPACE: RegExp;