@etrepum/lexical-builder-markdown 0.0.37-nightly.20260317.0 → 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownExport.d.ts","sourceRoot":"","sources":["../src/MarkdownExport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,SAAS,CAAC;AAWjB,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE9E;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,EAAE,sBAAsB,EAAE,EAAE,0BAA0B,GACrD,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,MAAM,CAsChC"}
1
+ {"version":3,"file":"MarkdownExport.d.ts","sourceRoot":"","sources":["../src/MarkdownExport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,SAAS,CAAC;AAWjB,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE9E;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,EAAE,sBAAsB,EAAE,EAAE,0BAA0B,GACrD,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,MAAM,CAsChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownImport.d.ts","sourceRoot":"","sources":["../src/MarkdownImport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAYjB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB,MAAM,SAAS,CAAC;AASjB;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,0BAA0B,GACzC,CACD,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,0BAA0B,KACjC,WAAW,EAAE,CA0DjB"}
1
+ {"version":3,"file":"MarkdownImport.d.ts","sourceRoot":"","sources":["../src/MarkdownImport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAYjB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB,MAAM,SAAS,CAAC;AASjB;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,0BAA0B,GACzC,CACD,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,0BAA0B,KACjC,WAAW,EAAE,CA0DjB"}
@@ -1,10 +1,8 @@
1
1
  import { LexicalEditor } from 'lexical';
2
- import { DisabledToggleOutput } from '@etrepum/lexical-builder';
3
2
  import { TransformersByType } from './types';
4
3
  export declare function registerMarkdownShortcuts(editor: LexicalEditor, byType: TransformersByType): () => void;
5
4
  export interface MarkdownShortcutsConfig {
6
5
  disabled: boolean;
7
6
  }
8
- export type MarkdownShortcutsOutput = DisabledToggleOutput;
9
- export declare const MarkdownShortcutsExtension: import('@etrepum/lexical-builder').LexicalExtension<MarkdownShortcutsConfig, "@etrepum/lexical-builder-markdown/MarkdownShortcuts", DisabledToggleOutput, unknown>;
7
+ export declare const MarkdownShortcutsExtension: import('lexical').LexicalExtension<MarkdownShortcutsConfig, "@etrepum/lexical-builder-markdown/MarkdownShortcuts", import('@lexical/extension').NamedSignalsOutput<MarkdownShortcutsConfig>, unknown>;
10
8
  //# sourceMappingURL=MarkdownShortcutsExtension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownShortcutsExtension.d.ts","sourceRoot":"","sources":["../src/MarkdownShortcutsExtension.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAEL,KAAK,aAAa,EAUnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,KAAK,oBAAoB,EAG1B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA0SlD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,GACzB,MAAM,IAAI,CAkGZ;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AACD,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAE3D,eAAO,MAAM,0BAA0B,oKAmBrC,CAAC"}
1
+ {"version":3,"file":"MarkdownShortcutsExtension.d.ts","sourceRoot":"","sources":["../src/MarkdownShortcutsExtension.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAEL,KAAK,aAAa,EAYnB,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA0SlD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,GACzB,MAAM,IAAI,CAkGZ;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,0BAA0B,uMAiBrC,CAAC"}
@@ -10,5 +10,5 @@ export interface MarkdownTransformersOutput {
10
10
  readonly $markdownImport: ReturnType<typeof createMarkdownImport>;
11
11
  readonly $markdownExport: ReturnType<typeof createMarkdownExport>;
12
12
  }
13
- export declare const MarkdownTransformersExtension: import('@etrepum/lexical-builder').LexicalExtension<MarkdownTransformersConfig, "@etrepum/lexical-builder-markdown/MarkdownTransformers", MarkdownTransformersOutput, MarkdownTransformersOutput>;
13
+ export declare const MarkdownTransformersExtension: import('lexical').LexicalExtension<MarkdownTransformersConfig, "@etrepum/lexical-builder-markdown/MarkdownTransformers", MarkdownTransformersOutput, MarkdownTransformersOutput>;
14
14
  //# sourceMappingURL=MarkdownTransformersExtension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownTransformersExtension.d.ts","sourceRoot":"","sources":["../src/MarkdownTransformersExtension.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GAAG;KACnE,CAAC,IAAI,MAAM,kBAAkB,IAAI,GAAG,CAAC,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC;CAC7E,CAAC;AAeF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;IAClE,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;CACnE;AAED,eAAO,MAAM,6BAA6B,mMA2DxC,CAAC"}
1
+ {"version":3,"file":"MarkdownTransformersExtension.d.ts","sourceRoot":"","sources":["../src/MarkdownTransformersExtension.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GAAG;KACnE,CAAC,IAAI,MAAM,kBAAkB,IAAI,GAAG,CAAC,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC;CAC7E,CAAC;AAeF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;IAClE,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;CACnE;AAED,eAAO,MAAM,6BAA6B,kLA2DxC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,6 @@
7
7
  */
8
8
  export { type MarkdownTransformerOptions, type TransformersByType, type Filter, type KebabToCamel, } from './types';
9
9
  export { type MarkdownTransformersConfig, type MarkdownTransformersOutput, MarkdownTransformersExtension, } from './MarkdownTransformersExtension';
10
- export { type MarkdownShortcutsConfig, type MarkdownShortcutsOutput, MarkdownShortcutsExtension, } from './MarkdownShortcutsExtension';
10
+ export { type MarkdownShortcutsConfig, MarkdownShortcutsExtension, } from './MarkdownShortcutsExtension';
11
11
  export declare const PACKAGE_VERSION: string;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,eAAO,MAAM,eAAe,EAAE,MAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,KAAK,uBAAuB,EAC5B,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,eAAO,MAAM,eAAe,EAAE,MAAwC,CAAC"}
package/dist/index.js CHANGED
@@ -1,214 +1,213 @@
1
- import { defineExtension as G, RichTextExtension as se, declarePeerDependency as ie, safeCast as H, getKnownTypesAndNodes as ce, provideOutput as q, disabledToggle as le } from "@etrepum/lexical-builder";
2
- import { ELEMENT_TRANSFORMERS as ae, TEXT_FORMAT_TRANSFORMERS as fe, TEXT_MATCH_TRANSFORMERS as ue, MULTILINE_ELEMENT_TRANSFORMERS as ge, UNORDERED_LIST as de, CHECK_LIST as pe } from "@lexical/markdown";
3
- import { $getSelection as S, $setSelection as Q, $isParagraphNode as V, $isTextNode as x, $createParagraphNode as Y, $isElementNode as N, $createTextNode as J, $createLineBreakNode as me, $isRootOrShadowRoot as Z, $getRoot as he, $isDecoratorNode as ee, $isLineBreakNode as te, $isRangeSelection as k, $createRangeSelection as xe } from "lexical";
4
- import { $createCodeNode as Te, $isCodeNode as Ee } from "@lexical/code";
5
- import { $isListNode as O, $isListItemNode as Se } from "@lexical/list";
6
- import { $isQuoteNode as Ne } from "@lexical/rich-text";
7
- import { $findMatchingParent as Ce, IS_SAFARI as A, IS_IOS as B, IS_APPLE_WEBKIT as y } from "@lexical/utils";
8
- function D(e, t) {
1
+ import { $getSelection as S, $setSelection as G, $isParagraphNode as H, $isTextNode as x, $createParagraphNode as q, $isElementNode as N, $createTextNode as Q, $createLineBreakNode as re, $isRootOrShadowRoot as V, $getRoot as se, $isDecoratorNode as Y, $isLineBreakNode as J, defineExtension as Z, safeCast as ee, declarePeerDependency as ie, $isRangeSelection as k, $createRangeSelection as ce } from "lexical";
2
+ import { $isQuoteNode as le, RichTextExtension as ae } from "@lexical/rich-text";
3
+ import { getKnownTypesAndNodes as fe, effect as ue, namedSignals as ge } from "@lexical/extension";
4
+ import { UNORDERED_LIST as de, CHECK_LIST as me, MULTILINE_ELEMENT_TRANSFORMERS as pe, TEXT_MATCH_TRANSFORMERS as he, TEXT_FORMAT_TRANSFORMERS as xe, ELEMENT_TRANSFORMERS as Te } from "@lexical/markdown";
5
+ import { $createCodeNode as Ee, $isCodeNode as Se } from "@lexical/code";
6
+ import { $isListNode as O, $isListItemNode as Ne } from "@lexical/list";
7
+ import { IS_SAFARI as A, IS_IOS as B, IS_APPLE_WEBKIT as y, $findMatchingParent as Ce } from "@lexical/utils";
8
+ function D(e, n) {
9
9
  const o = {};
10
10
  for (const r of e) {
11
- const c = t(r), n = o[c];
12
- n ? n.push(r) : o[c] = [r];
11
+ const i = n(r), t = o[i];
12
+ t ? t.push(r) : o[i] = [r];
13
13
  }
14
14
  return o;
15
15
  }
16
16
  const $ = /[!-/:-@[-`{-~\s]/, $e = /^\s{0,3}$/;
17
17
  function F(e) {
18
- if (!V(e))
18
+ if (!H(e))
19
19
  return !1;
20
- const t = e.getFirstChild();
21
- return t == null || e.getChildrenSize() === 1 && x(t) && $e.test(t.getTextContent());
20
+ const n = e.getFirstChild();
21
+ return n == null || e.getChildrenSize() === 1 && x(n) && $e.test(n.getTextContent());
22
22
  }
23
23
  function we(e) {
24
24
  return function(...o) {
25
- const r = S(), c = r ? r.clone() : null, n = e(...o), i = S(), s = c && c.is(r) && !Object.isFrozen(r) ? r : c;
26
- return i !== s && Q(s), n;
25
+ const r = S(), i = r ? r.clone() : null, t = e(...o), c = S(), s = i && i.is(r) && !Object.isFrozen(r) ? r : i;
26
+ return c !== s && G(s), t;
27
27
  };
28
28
  }
29
- function T(e, t, ...o) {
29
+ function T(e, n, ...o) {
30
30
  if (!e)
31
31
  throw new Error(
32
- o.reduce((r, c) => r.replace("%s", String(c)), t || "")
32
+ o.reduce((r, i) => r.replace("%s", String(i)), n || "")
33
33
  );
34
34
  }
35
35
  const K = /^[ \t]*```(\w{1,10})?\s?$/;
36
- function Re(e, t) {
36
+ function Re(e, n) {
37
37
  const o = Fe(
38
38
  e.textFormat
39
39
  );
40
- return function(c, { shouldPreserveNewlines: n } = t) {
41
- const i = c.split(`
42
- `), s = i.length, a = Y();
40
+ return function(i, { shouldPreserveNewlines: t } = n) {
41
+ const c = i.split(`
42
+ `), s = c.length, l = q();
43
43
  for (let f = 0; f < s; f++) {
44
- const u = i[f], [d, g] = _e(i, f, a);
45
- if (d != null) {
46
- f = g;
44
+ const p = c[f], [g, u] = _e(c, f, l);
45
+ if (g != null) {
46
+ f = u;
47
47
  continue;
48
48
  }
49
49
  Me(
50
- u,
51
- a,
50
+ p,
51
+ l,
52
52
  e.element,
53
53
  o,
54
54
  e.textMatch
55
55
  );
56
56
  }
57
- const l = [];
58
- for (let f = a.getFirstChild(); f; f = f.getNextSibling())
57
+ const a = [];
58
+ for (let f = l.getFirstChild(); f; f = f.getNextSibling())
59
59
  T(
60
60
  N(f),
61
61
  "markdownImport: Expected child of type %s to be an ElementNode",
62
62
  f.getType()
63
- ), (n || !F(f)) && l.push(f);
64
- return a.clear(), l;
63
+ ), (t || !F(f)) && a.push(f);
64
+ return l.clear(), a;
65
65
  };
66
66
  }
67
- function Me(e, t, o, r, c) {
68
- const n = e.trim(), i = J(n), s = Y();
69
- s.append(i), t.append(s);
70
- for (const { regExp: a, replace: l } of o) {
71
- const f = e.match(a);
67
+ function Me(e, n, o, r, i) {
68
+ const t = e.trim(), c = Q(t), s = q();
69
+ s.append(c), n.append(s);
70
+ for (const { regExp: l, replace: a } of o) {
71
+ const f = e.match(l);
72
72
  if (f) {
73
- i.setTextContent(e.slice(f[0].length)), l(s, [i], f, !0);
73
+ c.setTextContent(e.slice(f[0].length)), a(s, [c], f, !0);
74
74
  break;
75
75
  }
76
76
  }
77
77
  if (C(
78
- i,
78
+ c,
79
79
  r,
80
- c
81
- ), s.isAttached() && n.length > 0) {
82
- const a = s.getPreviousSibling();
83
- if (V(a) || Ne(a) || O(a)) {
84
- let l = a;
85
- if (O(a)) {
86
- const f = a.getLastDescendant();
87
- f == null ? l = null : l = Ce(f, Se);
80
+ i
81
+ ), s.isAttached() && t.length > 0) {
82
+ const l = s.getPreviousSibling();
83
+ if (H(l) || le(l) || O(l)) {
84
+ let a = l;
85
+ if (O(l)) {
86
+ const f = l.getLastDescendant();
87
+ f == null ? a = null : a = Ce(f, Ne);
88
88
  }
89
- l != null && l.getTextContentSize() > 0 && (l.splice(l.getChildrenSize(), 0, [
90
- me(),
89
+ a != null && a.getTextContentSize() > 0 && (a.splice(a.getChildrenSize(), 0, [
90
+ re(),
91
91
  ...s.getChildren()
92
92
  ]), s.remove());
93
93
  }
94
94
  }
95
95
  }
96
- function _e(e, t, o) {
97
- const r = K.exec(e[t]);
96
+ function _e(e, n, o) {
97
+ const r = K.exec(e[n]);
98
98
  if (r) {
99
- let c = t;
100
- const n = e.length;
101
- for (; ++c < n; )
102
- if (K.exec(e[c])) {
103
- const s = Te(r[1]), a = J(
104
- e.slice(t + 1, c).join(`
99
+ let i = n;
100
+ const t = e.length;
101
+ for (; ++i < t; )
102
+ if (K.exec(e[i])) {
103
+ const s = Ee(r[1]), l = Q(
104
+ e.slice(n + 1, i).join(`
105
105
  `)
106
106
  );
107
- return s.append(a), o.append(s), [s, c];
107
+ return s.append(l), o.append(s), [s, i];
108
108
  }
109
109
  }
110
- return [null, t];
110
+ return [null, n];
111
111
  }
112
- function C(e, t, o) {
113
- const r = e.getTextContent(), c = ke(r, t);
114
- if (!c) {
115
- ne(e, o);
112
+ function C(e, n, o) {
113
+ const r = e.getTextContent(), i = ke(r, n);
114
+ if (!i) {
115
+ te(e, o);
116
116
  return;
117
117
  }
118
118
  T(
119
- c[1] !== void 0 && c[2] !== void 0,
119
+ i[1] !== void 0 && i[2] !== void 0,
120
120
  "importTextMatchTransformers: expecting match with two groups"
121
121
  );
122
- let n, i, s;
123
- if (c[0] === r)
124
- n = e;
122
+ let t, c, s;
123
+ if (i[0] === r)
124
+ t = e;
125
125
  else {
126
- const l = c.index || 0, f = l + c[0].length;
127
- l === 0 ? [n, i] = e.splitText(f) : [s, n, i] = e.splitText(
128
- l,
126
+ const a = i.index || 0, f = a + i[0].length;
127
+ a === 0 ? [t, c] = e.splitText(f) : [s, t, c] = e.splitText(
128
+ a,
129
129
  f
130
130
  );
131
131
  }
132
132
  T(
133
- n !== void 0,
133
+ t !== void 0,
134
134
  "importTextMatchTransformers: currentNode must be defined"
135
- ), n.setTextContent(c[2]);
136
- const a = t.transformersByTag[c[1]];
137
- if (a)
138
- for (const l of a.format)
139
- n.hasFormat(l) || n.toggleFormat(l);
140
- n.hasFormat("code") || C(
141
- n,
135
+ ), t.setTextContent(i[2]);
136
+ const l = n.transformersByTag[i[1]];
137
+ if (l)
138
+ for (const a of l.format)
139
+ t.hasFormat(a) || t.toggleFormat(a);
140
+ t.hasFormat("code") || C(
142
141
  t,
142
+ n,
143
143
  o
144
144
  ), s && C(
145
145
  s,
146
- t,
146
+ n,
147
147
  o
148
- ), i && C(
149
- i,
150
- t,
148
+ ), c && C(
149
+ c,
150
+ n,
151
151
  o
152
152
  );
153
153
  }
154
- function ne(e, t) {
155
- var r;
154
+ function te(e, n) {
156
155
  let o = e;
157
156
  e: for (; o; ) {
158
- const c = o.getTextContent();
159
- for (const n of t) {
160
- const i = n.importRegExp && c.match(n.importRegExp);
161
- if (!i)
157
+ const r = o.getTextContent();
158
+ for (const i of n) {
159
+ const t = i.importRegExp && r.match(i.importRegExp);
160
+ if (!t)
162
161
  continue;
163
- const s = i.index || 0, a = s + i[0].length;
164
- let l, f;
165
- if (s === 0) {
166
- const u = o.splitText(a);
162
+ const c = t.index || 0, s = c + t[0].length;
163
+ let l, a;
164
+ if (c === 0) {
165
+ const f = o.splitText(s);
167
166
  T(
168
- u[0] !== void 0,
167
+ f[0] !== void 0,
169
168
  "importTextMatchTransformers: splitText expected at least one node"
170
- ), [l, o] = u;
169
+ ), [l, o] = f;
171
170
  } else {
172
- const u = o.splitText(s, a);
171
+ const f = o.splitText(c, s);
173
172
  T(
174
- u[1] !== void 0,
173
+ f[1] !== void 0,
175
174
  "importTextMatchTransformers: splitText expected at least two nodes"
176
- ), [, l, f] = u, f && ne(f, t);
175
+ ), [, l, a] = f, a && te(a, n);
177
176
  }
178
- (r = n.replace) == null || r.call(n, l, i);
177
+ i.replace?.(l, t);
179
178
  continue e;
180
179
  }
181
180
  break;
182
181
  }
183
182
  }
184
- function ke(e, t) {
185
- const o = e.match(t.openTagsRegExp);
183
+ function ke(e, n) {
184
+ const o = e.match(n.openTagsRegExp);
186
185
  if (o == null)
187
186
  return null;
188
187
  for (const r of o) {
189
- const c = r.replace(/^\s/, ""), n = t.fullMatchRegExpByTag[c];
190
- if (n == null)
188
+ const i = r.replace(/^\s/, ""), t = n.fullMatchRegExpByTag[i];
189
+ if (t == null)
191
190
  continue;
192
- const i = e.match(n), s = t.transformersByTag[c];
193
- if (i != null && s != null) {
191
+ const c = e.match(t), s = n.transformersByTag[i];
192
+ if (c != null && s != null) {
194
193
  if (s.intraword !== !1)
195
- return i;
196
- const { index: a = 0 } = i, l = e[a - 1], f = e[a + i[0].length];
197
- if ((!l || $.test(l)) && (!f || $.test(f)))
198
- return i;
194
+ return c;
195
+ const { index: l = 0 } = c, a = e[l - 1], f = e[l + c[0].length];
196
+ if ((!a || $.test(a)) && (!f || $.test(f)))
197
+ return c;
199
198
  }
200
199
  }
201
200
  return null;
202
201
  }
203
202
  function Fe(e) {
204
- const t = {}, o = {}, r = [], c = "(?<![\\\\])";
205
- for (const n of e) {
206
- const { tag: i } = n;
207
- t[i] = n;
208
- const s = i.replace(/(\*|\^|\+)/g, "\\$1");
209
- r.push(s), A || B || y ? o[i] = new RegExp(
203
+ const n = {}, o = {}, r = [], i = "(?<![\\\\])";
204
+ for (const t of e) {
205
+ const { tag: c } = t;
206
+ n[c] = t;
207
+ const s = c.replace(/(\*|\^|\+)/g, "\\$1");
208
+ r.push(s), A || B || y ? o[c] = new RegExp(
210
209
  `(${s})(?![${s}\\s])(.*?[^${s}\\s])${s}(?!${s})`
211
- ) : o[i] = new RegExp(
210
+ ) : o[c] = new RegExp(
212
211
  `(?<![\\\\${s}])(${s})((\\\\${s})?.*?[^${s}\\s](\\\\${s})?)((?<!\\\\)|(?<=\\\\\\\\))(${s})(?![\\\\${s}])`
213
212
  );
214
213
  }
@@ -217,109 +216,107 @@ function Fe(e) {
217
216
  fullMatchRegExpByTag: o,
218
217
  // Reg exp to find opening tags
219
218
  openTagsRegExp: new RegExp(
220
- `${A || B || y ? "" : c}(${r.join("|")})`,
219
+ `${A || B || y ? "" : i}(${r.join("|")})`,
221
220
  "g"
222
221
  ),
223
- transformersByTag: t
222
+ transformersByTag: n
224
223
  };
225
224
  }
226
- function ve(e, { shouldPreserveNewlines: t }) {
227
- const o = !t, r = e.textFormat.filter(
228
- (c) => c.format.length === 1
225
+ function ve(e, { shouldPreserveNewlines: n }) {
226
+ const o = !n, r = e.textFormat.filter(
227
+ (i) => i.format.length === 1
229
228
  );
230
- return function(n = he()) {
231
- const i = [], s = Z(n) ? n.getChildren() : [n];
232
- for (let a = 0; a < s.length; a++) {
233
- const l = s[a], f = Ie(
234
- l,
229
+ return function(t = se()) {
230
+ const c = [], s = V(t) ? t.getChildren() : [t];
231
+ for (let l = 0; l < s.length; l++) {
232
+ const a = s[l], f = Ie(
233
+ a,
235
234
  e.element,
236
235
  r,
237
236
  e.textMatch
238
237
  );
239
- f != null && i.push(
238
+ f != null && c.push(
240
239
  // separate consecutive group of texts with a line break: eg. ["hello", "world"] -> ["hello", "\nworld"]
241
- o && a > 0 && !F(l) && !F(s[a - 1]) ? `
240
+ o && l > 0 && !F(a) && !F(s[l - 1]) ? `
242
241
  `.concat(f) : f
243
242
  );
244
243
  }
245
- return i.join(`
244
+ return c.join(`
246
245
  `);
247
246
  };
248
247
  }
249
- function Ie(e, t, o, r) {
250
- for (const c of t) {
251
- const n = c.export(
248
+ function Ie(e, n, o, r) {
249
+ for (const i of n) {
250
+ const t = i.export(
252
251
  e,
253
- (i) => w(i, o, r)
252
+ (c) => w(c, o, r)
254
253
  );
255
- if (n != null)
256
- return n;
254
+ if (t != null)
255
+ return t;
257
256
  }
258
- return N(e) ? w(e, o, r) : ee(e) ? e.getTextContent() : null;
257
+ return N(e) ? w(e, o, r) : Y(e) ? e.getTextContent() : null;
259
258
  }
260
- function w(e, t, o) {
261
- var n;
262
- const r = [], c = e.getChildren();
263
- e: for (const i of c) {
264
- for (const s of o) {
265
- const a = (n = s.export) == null ? void 0 : n.call(
266
- s,
267
- i,
259
+ function w(e, n, o) {
260
+ const r = [], i = e.getChildren();
261
+ e: for (const t of i) {
262
+ for (const c of o) {
263
+ const s = c.export?.(
264
+ t,
268
265
  (l) => w(
269
266
  l,
270
- t,
267
+ n,
271
268
  o
272
269
  ),
273
- (l, f) => j(l, f, t)
270
+ (l, a) => j(l, a, n)
274
271
  );
275
- if (a != null) {
276
- r.push(a);
272
+ if (s != null) {
273
+ r.push(s);
277
274
  continue e;
278
275
  }
279
276
  }
280
- te(i) ? r.push(`
281
- `) : x(i) ? r.push(
282
- j(i, i.getTextContent(), t)
283
- ) : N(i) ? r.push(
284
- w(i, t, o)
285
- ) : ee(i) && r.push(i.getTextContent());
277
+ J(t) ? r.push(`
278
+ `) : x(t) ? r.push(
279
+ j(t, t.getTextContent(), n)
280
+ ) : N(t) ? r.push(
281
+ w(t, n, o)
282
+ ) : Y(t) && r.push(t.getTextContent());
286
283
  }
287
284
  return r.join("");
288
285
  }
289
- function j(e, t, o) {
290
- const r = t.trim();
291
- let c = r;
292
- const n = /* @__PURE__ */ new Set();
293
- for (const i of o) {
294
- const s = i.format[0], a = i.tag;
286
+ function j(e, n, o) {
287
+ const r = n.trim();
288
+ let i = r;
289
+ const t = /* @__PURE__ */ new Set();
290
+ for (const c of o) {
291
+ const s = c.format[0], l = c.tag;
295
292
  if (T(
296
293
  s !== void 0,
297
294
  "TextFormatTransformer for tag %s has empty format array",
298
- a
299
- ), M(e, s) && !n.has(s)) {
300
- n.add(s);
301
- const l = z(e, !0);
302
- M(l, s) || (c = a + c);
295
+ l
296
+ ), M(e, s) && !t.has(s)) {
297
+ t.add(s);
298
+ const a = z(e, !0);
299
+ M(a, s) || (i = l + i);
303
300
  const f = z(e, !1);
304
- M(f, s) || (c += a);
301
+ M(f, s) || (i += l);
305
302
  }
306
303
  }
307
- return t.replace(r, () => c);
304
+ return n.replace(r, () => i);
308
305
  }
309
- function z(e, t) {
310
- let o = t ? e.getPreviousSibling() : e.getNextSibling();
306
+ function z(e, n) {
307
+ let o = n ? e.getPreviousSibling() : e.getNextSibling();
311
308
  if (!o) {
312
309
  const r = e.getParentOrThrow();
313
- r.isInline() && (o = t ? r.getPreviousSibling() : r.getNextSibling());
310
+ r.isInline() && (o = n ? r.getPreviousSibling() : r.getNextSibling());
314
311
  }
315
312
  for (; o; ) {
316
313
  if (N(o)) {
317
314
  if (!o.isInline())
318
315
  break;
319
- const r = t ? o.getLastDescendant() : o.getFirstDescendant();
316
+ const r = n ? o.getLastDescendant() : o.getFirstDescendant();
320
317
  if (x(r))
321
318
  return r;
322
- o = t ? o.getPreviousSibling() : o.getNextSibling();
319
+ o = n ? o.getPreviousSibling() : o.getNextSibling();
323
320
  }
324
321
  if (x(o))
325
322
  return o;
@@ -328,148 +325,147 @@ function z(e, t) {
328
325
  }
329
326
  return null;
330
327
  }
331
- function M(e, t) {
332
- return x(e) && e.hasFormat(t);
328
+ function M(e, n) {
329
+ return x(e) && e.hasFormat(n);
333
330
  }
334
- function _({ nodes: e }, t) {
331
+ function _({ nodes: e }, n) {
335
332
  const o = e.has.bind(e);
336
- return t.filter((r) => r.dependencies.every(o));
333
+ return n.filter((r) => r.dependencies.every(o));
337
334
  }
338
- const U = "@etrepum/lexical-builder-list/CheckList", W = G({
335
+ const U = "@lexical/list/CheckList", W = Z({
339
336
  name: "@etrepum/lexical-builder-markdown/MarkdownTransformers",
340
- dependencies: [se],
337
+ dependencies: [ae],
341
338
  peerDependencies: [
342
339
  ie(U)
343
340
  ],
344
- config: H({
345
- elementTransformers: ae,
346
- textFormatTransformers: fe,
347
- textMatchTransformers: ue,
348
- multilineElementTransformers: ge,
341
+ config: ee({
342
+ elementTransformers: Te,
343
+ textFormatTransformers: xe,
344
+ textMatchTransformers: he,
345
+ multilineElementTransformers: pe,
349
346
  shouldPreserveNewlines: !1
350
347
  }),
351
348
  // For now we replace the transformer arrays with the default
352
349
  // shallowMergeConfig. I think ideally these should be additive
353
- init(e, t, o) {
354
- const r = ce(e), c = {
355
- shouldPreserveNewlines: t.shouldPreserveNewlines
356
- }, n = _(
350
+ init(e, n, o) {
351
+ const r = fe(e), i = {
352
+ shouldPreserveNewlines: n.shouldPreserveNewlines
353
+ }, t = _(
357
354
  r,
358
- t.elementTransformers
355
+ n.elementTransformers
359
356
  );
360
357
  if (o.getPeer(U)) {
361
- const l = n.indexOf(de);
362
- l >= 0 && n.splice(l, 0, pe);
358
+ const a = t.indexOf(de);
359
+ a >= 0 && t.splice(a, 0, me);
363
360
  }
364
- const i = {
361
+ const c = {
365
362
  // Only register transforms for nodes that are configured
366
- element: n,
367
- textMatch: _(r, t.textMatchTransformers),
363
+ element: t,
364
+ textMatch: _(r, n.textMatchTransformers),
368
365
  multilineElement: _(
369
366
  r,
370
- t.multilineElementTransformers
367
+ n.multilineElementTransformers
371
368
  ),
372
- textFormat: t.textFormatTransformers
369
+ textFormat: n.textFormatTransformers
373
370
  }, s = we(
374
- Re(i, c)
375
- ), a = ve(
376
- i,
377
- c
371
+ Re(c, i)
372
+ ), l = ve(
373
+ c,
374
+ i
378
375
  );
379
376
  return {
380
- transformerOptions: c,
381
- transformersByType: i,
382
- $markdownExport: a,
377
+ transformerOptions: i,
378
+ transformersByType: c,
379
+ $markdownExport: l,
383
380
  $markdownImport: s
384
381
  };
385
382
  },
386
- register: (e, t, o) => q(o.getInitResult())
383
+ build: (e, n, o) => o.getInitResult()
387
384
  });
388
- function be(e, t, o, r) {
389
- const c = e.getParent();
390
- if (!Z(c) || e.getFirstChild() !== t)
385
+ function Pe(e, n, o, r) {
386
+ const i = e.getParent();
387
+ if (!V(i) || e.getFirstChild() !== n)
391
388
  return !1;
392
- const n = t.getTextContent();
393
- if (n[o - 1] !== " ")
389
+ const t = n.getTextContent();
390
+ if (t[o - 1] !== " ")
394
391
  return !1;
395
- for (const { regExp: i, replace: s } of r) {
396
- const a = n.match(i);
397
- if (a && a[0].length === o) {
398
- const l = t.getNextSiblings(), [f, u] = t.splitText(o);
392
+ for (const { regExp: c, replace: s } of r) {
393
+ const l = t.match(c);
394
+ if (l && l[0].length === o) {
395
+ const a = n.getNextSiblings(), [f, p] = n.splitText(o);
399
396
  f.remove();
400
- const d = u ? [u, ...l] : l;
401
- return s(e, d, a, !1), !0;
397
+ const g = p ? [p, ...a] : a;
398
+ return s(e, g, l, !1), !0;
402
399
  }
403
400
  }
404
401
  return !1;
405
402
  }
406
- function Pe(e, t, o) {
407
- var i;
403
+ function be(e, n, o) {
408
404
  let r = e.getTextContent();
409
- const c = r[t - 1], n = o[c];
410
- if (n == null)
405
+ const i = r[n - 1], t = o[i];
406
+ if (t == null)
411
407
  return !1;
412
- t < r.length && (r = r.slice(0, t));
413
- for (const s of n) {
414
- const a = r.match(s.regExp);
415
- if (a === null)
408
+ n < r.length && (r = r.slice(0, n));
409
+ for (const c of t) {
410
+ const s = r.match(c.regExp);
411
+ if (s === null)
416
412
  continue;
417
- const l = a.index || 0, f = l + a[0].length;
418
- let u;
419
- return l === 0 ? u = e.splitText(f)[0] : u = e.splitText(l, f)[1], T(
420
- x(u),
413
+ const l = s.index || 0, a = l + s[0].length;
414
+ let f;
415
+ return l === 0 ? f = e.splitText(a)[0] : f = e.splitText(l, a)[1], T(
416
+ x(f),
421
417
  "MarkdownShortcuts: splitText(%s, %s)[%s] did not return the expected TextNode",
422
418
  String(l),
423
- String(f),
419
+ String(a),
424
420
  String(l === 0 ? 0 : 1)
425
- ), u.selectNext(0, 0), (i = s.replace) == null || i.call(s, u, a), !0;
421
+ ), f.selectNext(0, 0), c.replace?.(f, s), !0;
426
422
  }
427
423
  return !1;
428
424
  }
429
- function Le(e, t, o) {
430
- const r = e.getTextContent(), c = t - 1, n = r[c], i = o[n];
431
- if (!i)
425
+ function Le(e, n, o) {
426
+ const r = e.getTextContent(), i = n - 1, t = r[i], c = o[t];
427
+ if (!c)
432
428
  return !1;
433
- for (const s of i) {
434
- const { tag: a } = s, l = a.length, f = c - l + 1;
435
- if (l > 1 && !oe(r, f, a, 0, l) || r[f - 1] === " ")
429
+ for (const s of c) {
430
+ const { tag: l } = s, a = l.length, f = i - a + 1;
431
+ if (a > 1 && !ne(r, f, l, 0, a) || r[f - 1] === " ")
436
432
  continue;
437
- const u = r[c + 1];
438
- if (s.intraword === !1 && u && !$.test(u))
433
+ const p = r[i + 1];
434
+ if (s.intraword === !1 && p && !$.test(p))
439
435
  continue;
440
- const d = e;
441
- let g = d, p = X(
436
+ const g = e;
437
+ let u = g, d = X(
442
438
  r,
443
439
  f,
444
- a
445
- ), E = g;
446
- for (; p < 0 && (E = E.getPreviousSibling()) && !te(E); )
440
+ l
441
+ ), E = u;
442
+ for (; d < 0 && (E = E.getPreviousSibling()) && !J(E); )
447
443
  if (x(E)) {
448
444
  const h = E.getTextContent();
449
- g = E, p = X(
445
+ u = E, d = X(
450
446
  h,
451
447
  h.length,
452
- a
448
+ l
453
449
  );
454
450
  }
455
- if (p < 0 || g === d && p + l === f)
451
+ if (d < 0 || u === g && d + a === f)
456
452
  continue;
457
- const R = g.getTextContent();
458
- if (p > 0 && R[p - 1] === n)
453
+ const R = u.getTextContent();
454
+ if (d > 0 && R[d - 1] === t)
459
455
  continue;
460
- const v = R[p - 1];
456
+ const v = R[d - 1];
461
457
  if (s.intraword === !1 && v && !$.test(v))
462
458
  continue;
463
- const I = d.getTextContent(), b = I.slice(0, f) + I.slice(c + 1);
464
- d.setTextContent(b);
465
- const P = g === d ? b : R;
466
- g.setTextContent(
467
- P.slice(0, p) + P.slice(p + l)
459
+ const I = g.getTextContent(), P = I.slice(0, f) + I.slice(i + 1);
460
+ g.setTextContent(P);
461
+ const b = u === g ? P : R;
462
+ u.setTextContent(
463
+ b.slice(0, d) + b.slice(d + a)
468
464
  );
469
- const L = S(), m = xe();
470
- Q(m);
471
- const re = c - l * (g === d ? 2 : 1) + 1;
472
- m.anchor.set(g.__key, p, "text"), m.focus.set(d.__key, re, "text");
465
+ const L = S(), m = ce();
466
+ G(m);
467
+ const oe = i - a * (u === g ? 2 : 1) + 1;
468
+ m.anchor.set(u.__key, d, "text"), m.focus.set(g.__key, oe, "text");
473
469
  for (const h of s.format)
474
470
  m.hasFormat(h) || m.formatText(h);
475
471
  m.anchor.set(
@@ -483,82 +479,79 @@ function Le(e, t, o) {
483
479
  }
484
480
  return !1;
485
481
  }
486
- function X(e, t, o) {
482
+ function X(e, n, o) {
487
483
  const r = o.length;
488
- for (let c = t; c >= r; c--) {
489
- const n = c - r;
490
- if (oe(e, n, o, 0, r) && // Space after opening tag cancels transformation
491
- e[n + r] !== " ")
492
- return n;
484
+ for (let i = n; i >= r; i--) {
485
+ const t = i - r;
486
+ if (ne(e, t, o, 0, r) && // Space after opening tag cancels transformation
487
+ e[t + r] !== " ")
488
+ return t;
493
489
  }
494
490
  return -1;
495
491
  }
496
- function oe(e, t, o, r, c) {
497
- for (let n = 0; n < c; n++)
498
- if (e[t + n] !== o[r + n])
492
+ function ne(e, n, o, r, i) {
493
+ for (let t = 0; t < i; t++)
494
+ if (e[n + t] !== o[r + t])
499
495
  return !1;
500
496
  return !0;
501
497
  }
502
- function Oe(e, t) {
498
+ function Oe(e, n) {
503
499
  const o = D(
504
- t.textFormat,
505
- ({ tag: n }) => n[n.length - 1]
500
+ n.textFormat,
501
+ ({ tag: t }) => t[t.length - 1]
506
502
  ), r = D(
507
- t.textMatch.filter(
508
- (n) => !!n.trigger
503
+ n.textMatch.filter(
504
+ (t) => !!t.trigger
509
505
  ),
510
- ({ trigger: n }) => n
511
- ), c = (n, i, s) => {
512
- be(
513
- n,
514
- i,
506
+ ({ trigger: t }) => t
507
+ ), i = (t, c, s) => {
508
+ Pe(
509
+ t,
510
+ c,
515
511
  s,
516
- t.element
517
- ) || Pe(
518
- i,
512
+ n.element
513
+ ) || be(
514
+ c,
519
515
  s,
520
516
  r
521
517
  ) || Le(
522
- i,
518
+ c,
523
519
  s,
524
520
  o
525
521
  );
526
522
  };
527
523
  return e.registerUpdateListener(
528
- ({ tags: n, dirtyLeaves: i, editorState: s, prevEditorState: a }) => {
529
- if (n.has("collaboration") || n.has("historic") || e.isComposing())
524
+ ({ tags: t, dirtyLeaves: c, editorState: s, prevEditorState: l }) => {
525
+ if (t.has("collaboration") || t.has("historic") || e.isComposing())
530
526
  return;
531
- const l = s.read(S), f = a.read(S);
532
- if (!k(f) || !k(l) || !l.isCollapsed())
527
+ const a = s.read(S), f = l.read(S);
528
+ if (!k(f) || !k(a) || !a.isCollapsed())
533
529
  return;
534
- const u = l.anchor.key, d = l.anchor.offset, g = s._nodeMap.get(u);
535
- !x(g) || !i.has(u) || d !== 1 && d > f.anchor.offset + 1 || e.update(() => {
536
- if (g.hasFormat("code"))
530
+ const p = a.anchor.key, g = a.anchor.offset, u = s._nodeMap.get(p);
531
+ !x(u) || !c.has(p) || g !== 1 && g > f.anchor.offset + 1 || e.update(() => {
532
+ if (u.hasFormat("code"))
537
533
  return;
538
- const p = g.getParent();
539
- p === null || Ee(p) || c(p, g, l.anchor.offset);
534
+ const d = u.getParent();
535
+ d === null || Se(d) || i(d, u, a.anchor.offset);
540
536
  });
541
537
  }
542
538
  );
543
539
  }
544
- const Ue = G({
540
+ const Ue = Z({
545
541
  name: "@etrepum/lexical-builder-markdown/MarkdownShortcuts",
546
542
  dependencies: [W],
547
- config: H({
543
+ config: ee({
548
544
  disabled: !1
549
545
  }),
550
- register(e, t, o) {
551
- return q(
552
- ...le({
553
- disabled: t.disabled,
554
- register: () => Oe(
555
- e,
556
- o.getDependency(W).output.transformersByType
557
- )
558
- })
559
- );
560
- }
561
- }), We = "0.0.37-nightly.20260317.0";
546
+ build: (e, n) => ge(n),
547
+ register: (e, n, o) => ue(() => {
548
+ if (!o.getOutput().disabled.value)
549
+ return Oe(
550
+ e,
551
+ o.getDependency(W).output.transformersByType
552
+ );
553
+ })
554
+ }), We = "0.1.0";
562
555
  export {
563
556
  Ue as MarkdownShortcutsExtension,
564
557
  W as MarkdownTransformersExtension,
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "test": "vitest run",
17
17
  "test:watch": "vitest"
18
18
  },
19
- "version": "0.0.37-nightly.20260317.0",
19
+ "version": "0.1.0",
20
20
  "license": "MIT",
21
21
  "repository": {
22
22
  "type": "git",
@@ -27,32 +27,37 @@
27
27
  "url": "https://github.com/etrepum/lexical-builder/issues"
28
28
  },
29
29
  "homepage": "https://github.com/etrepum/lexical-builder",
30
- "dependencies": {
31
- "@etrepum/lexical-builder": "*",
32
- "@etrepum/lexical-builder-list": "*"
33
- },
30
+ "dependencies": {},
34
31
  "peerDependencies": {
35
- "@lexical/code": ">=0.33.1 || >=0.33.2-nightly.0",
36
- "@lexical/list": ">=0.33.1 || >=0.33.2-nightly.0",
37
- "@lexical/markdown": ">=0.33.1 || >=0.33.2-nightly.0",
38
- "@lexical/rich-text": ">=0.33.1 || >=0.33.2-nightly.0",
39
- "@lexical/utils": ">=0.33.1 || >=0.33.2-nightly.0",
40
- "lexical": ">=0.33.1 || >=0.33.2-nightly.0"
32
+ "@lexical/code": ">=0.41.1-nightly.20260317.0",
33
+ "@lexical/extension": ">=0.41.1-nightly.20260317.0",
34
+ "@lexical/list": ">=0.41.1-nightly.20260317.0",
35
+ "@lexical/markdown": ">=0.41.1-nightly.20260317.0",
36
+ "@lexical/rich-text": ">=0.41.1-nightly.20260317.0",
37
+ "@lexical/utils": ">=0.41.1-nightly.20260317.0",
38
+ "lexical": ">=0.41.1-nightly.20260317.0"
41
39
  },
42
40
  "sideEffects": false,
43
41
  "devDependencies": {
42
+ "@lexical/code": "0.41.1-nightly.20260317.0",
43
+ "@lexical/extension": "0.41.1-nightly.20260317.0",
44
+ "@lexical/list": "0.41.1-nightly.20260317.0",
45
+ "@lexical/markdown": "0.41.1-nightly.20260317.0",
46
+ "@lexical/rich-text": "0.41.1-nightly.20260317.0",
47
+ "@lexical/utils": "0.41.1-nightly.20260317.0",
44
48
  "@repo/eslint-config": "*",
45
49
  "@testing-library/dom": "^10.1.0",
46
50
  "@testing-library/jest-dom": "^6.4.5",
47
51
  "@testing-library/user-event": "^14.5.2",
48
- "eslint": "^8.57.0",
52
+ "eslint": "^10.0.3",
49
53
  "jsdom": "^24.1.0",
54
+ "lexical": "0.41.1-nightly.20260317.0",
50
55
  "tslib": "^2.6.2",
51
56
  "typescript": "^5.5.2",
52
- "vite": "^5.4.0",
53
- "vite-plugin-dts": "^4.0.2",
57
+ "vite": "^7.3.1",
58
+ "vite-plugin-dts": "^5.0.0-beta.6",
54
59
  "vite-plugin-package-version": "^1.1.0",
55
- "vitest": "^2.0.5"
60
+ "vitest": "^4.1.0"
56
61
  },
57
62
  "exports": {
58
63
  ".": {