@lofcz/platejs-list 52.0.11 → 52.3.6

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,4 +1,5 @@
1
- import { Editor, EditorAboveOptions, ElementEntryOf, ElementOf, ElementOrTextOf, NodeEntry as NodeEntry$1, OverrideEditor, Path, PluginConfig, SlateEditor, TElement, TLocation, TNode } from "platejs";
1
+ import * as platejs1 from "platejs";
2
+ import { Editor, EditorAboveOptions, ElementEntryOf, ElementOf, ElementOrTextOf, NodeEntry, OverrideEditor, Path, PluginConfig, SlateEditor, TElement, TLocation, TNode } from "platejs";
2
3
 
3
4
  //#region src/lib/queries/getSiblingList.d.ts
4
5
  type GetSiblingListOptions<N extends ElementOf<E>, E extends Editor = Editor> = {
@@ -6,8 +7,8 @@ type GetSiblingListOptions<N extends ElementOf<E>, E extends Editor = Editor> =
6
7
  breakOnListRestart?: boolean;
7
8
  breakOnLowerIndent?: boolean;
8
9
  breakQuery?: (siblingNode: TNode, currentNode: TNode) => boolean | undefined;
9
- getNextEntry?: (entry: NodeEntry$1<ElementOrTextOf<E>>) => NodeEntry$1<N> | undefined;
10
- getPreviousEntry?: (entry: NodeEntry$1<ElementOrTextOf<E>>) => NodeEntry$1<N> | undefined;
10
+ getNextEntry?: (entry: NodeEntry<ElementOrTextOf<E>>) => NodeEntry<N> | undefined;
11
+ getPreviousEntry?: (entry: NodeEntry<ElementOrTextOf<E>>) => NodeEntry<N> | undefined;
11
12
  /** Query to break lookup */
12
13
  eqIndent?: boolean;
13
14
  /** Query to validate lookup. If false, check the next sibling. */
@@ -26,7 +27,7 @@ declare const getSiblingList: <N extends ElementOf<E>, E extends Editor = Editor
26
27
  getNextEntry,
27
28
  getPreviousEntry,
28
29
  query
29
- }: GetSiblingListOptions<N, E>) => NodeEntry$1<N> | undefined;
30
+ }: GetSiblingListOptions<N, E>) => NodeEntry<N> | undefined;
30
31
  //#endregion
31
32
  //#region src/lib/types.d.ts
32
33
  declare const ListStyleType: {
@@ -109,7 +110,7 @@ type BaseListConfig = PluginConfig<'list', {
109
110
  /** Map html element to list style type. */
110
111
  getListStyleType?: (element: HTMLElement) => ListStyleType;
111
112
  }>;
112
- declare const BaseListPlugin: any;
113
+ declare const BaseListPlugin: platejs1.SlatePlugin<BaseListConfig>;
113
114
  //#endregion
114
115
  //#region src/lib/withList.d.ts
115
116
  declare const withList: OverrideEditor<BaseListConfig>;
@@ -119,17 +120,17 @@ declare const withNormalizeList: OverrideEditor<BaseListConfig>;
119
120
  //#endregion
120
121
  //#region src/lib/normalizers/normalizeListNotIndented.d.ts
121
122
  /** Unset listStyle, listStart if KEYS.indent is not defined. */
122
- declare const normalizeListNotIndented: (editor: Editor, [node, path]: NodeEntry$1) => true | undefined;
123
+ declare const normalizeListNotIndented: (editor: Editor, [node, path]: NodeEntry) => true | undefined;
123
124
  //#endregion
124
125
  //#region src/lib/normalizers/normalizeListStart.d.ts
125
- declare const getListExpectedListStart: (entry: NodeEntry$1, prevEntry?: NodeEntry$1) => number;
126
- declare const normalizeListStart: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>, options?: Partial<GetSiblingListOptions<N, E>>) => any;
126
+ declare const getListExpectedListStart: (entry: NodeEntry, prevEntry?: NodeEntry) => number;
127
+ declare const normalizeListStart: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>, options?: Partial<GetSiblingListOptions<N, E>>) => boolean;
127
128
  //#endregion
128
129
  //#region src/lib/normalizers/withInsertBreakList.d.ts
129
130
  declare const withInsertBreakList: OverrideEditor<BaseListConfig>;
130
131
  //#endregion
131
132
  //#region src/lib/queries/areEqListStyleType.d.ts
132
- declare const areEqListStyleType: (_editor: Editor, entries: NodeEntry$1[], {
133
+ declare const areEqListStyleType: (_editor: Editor, entries: NodeEntry[], {
133
134
  listStyleType
134
135
  }: {
135
136
  listStyleType?: string;
@@ -144,17 +145,17 @@ declare const areEqListStyleType: (_editor: Editor, entries: NodeEntry$1[], {
144
145
  * @returns Array of block entries with list items expanded to include their
145
146
  * children
146
147
  */
147
- declare const expandListItemsWithChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entries: ElementEntryOf<E>[]) => NodeEntry$1<N>[];
148
+ declare const expandListItemsWithChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entries: ElementEntryOf<E>[]) => NodeEntry<N>[];
148
149
  //#endregion
149
150
  //#region src/lib/queries/getListAbove.d.ts
150
- declare const getListAbove: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, options?: Omit<EditorAboveOptions, "match">) => NodeEntry$1<N> | undefined;
151
+ declare const getListAbove: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, options?: Omit<EditorAboveOptions, "match">) => NodeEntry<N> | undefined;
151
152
  //#endregion
152
153
  //#region src/lib/queries/getListChildren.d.ts
153
154
  /**
154
155
  * Get all list items that are children of the current list item (have bigger
155
156
  * indent). Stops when encountering an item with equal or lower indent.
156
157
  */
157
- declare const getListChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>) => NodeEntry$1<N>[];
158
+ declare const getListChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>) => NodeEntry<N>[];
158
159
  //#endregion
159
160
  //#region src/lib/queries/getListSiblings.d.ts
160
161
  interface GetListSiblingsOptions<N extends ElementOf<E>, E extends Editor = Editor> extends Partial<GetSiblingListOptions<N, E>> {
@@ -171,11 +172,11 @@ declare const getListSiblings: <N extends ElementOf<E>, E extends Editor = Edito
171
172
  //#endregion
172
173
  //#region src/lib/queries/getNextList.d.ts
173
174
  /** Get the next indent list. */
174
- declare const getNextList: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>, options?: Partial<GetSiblingListOptions<N, E>>) => NodeEntry$1<N> | undefined;
175
+ declare const getNextList: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>, options?: Partial<GetSiblingListOptions<N, E>>) => NodeEntry<N> | undefined;
175
176
  //#endregion
176
177
  //#region src/lib/queries/getPreviousList.d.ts
177
178
  /** Get the previous indent list node. */
178
- declare const getPreviousList: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>, options?: Partial<GetSiblingListOptions<N, E>>) => NodeEntry$1<N> | undefined;
179
+ declare const getPreviousList: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>, options?: Partial<GetSiblingListOptions<N, E>>) => NodeEntry<N> | undefined;
179
180
  //#endregion
180
181
  //#region src/lib/queries/getSiblingListStyleType.d.ts
181
182
  /**
@@ -187,7 +188,7 @@ declare const getSiblingListStyleType: <E extends SlateEditor>(editor: E, {
187
188
  indent,
188
189
  ...options
189
190
  }: {
190
- entry: NodeEntry$1<TElement>;
191
+ entry: NodeEntry<TElement>;
191
192
  indent: number;
192
193
  } & GetListSiblingsOptions<ElementOf<E>, E>) => ListStyleType;
193
194
  //#endregion
@@ -195,10 +196,10 @@ declare const getSiblingListStyleType: <E extends SlateEditor>(editor: E, {
195
196
  declare function isOrderedList(element: TElement): boolean;
196
197
  //#endregion
197
198
  //#region src/lib/queries/someList.d.ts
198
- declare const someList: (editor: SlateEditor, type: string[] | string) => any;
199
+ declare const someList: (editor: SlateEditor, type: string[] | string) => boolean;
199
200
  //#endregion
200
201
  //#region src/lib/queries/someTodoList.d.ts
201
- declare const someTodoList: (editor: SlateEditor) => any;
202
+ declare const someTodoList: (editor: SlateEditor) => boolean;
202
203
  //#endregion
203
204
  //#region src/lib/transforms/indentList.d.ts
204
205
  type ListOptions = {
@@ -246,7 +247,7 @@ declare const setIndentTodoNode: (editor: Editor, {
246
247
  * Set indent list to the given entries. Add indent if listStyleType was not
247
248
  * defined.
248
249
  */
249
- declare const setListNodes: (editor: Editor, entries: NodeEntry$1[], {
250
+ declare const setListNodes: (editor: Editor, entries: NodeEntry[], {
250
251
  listStyleType
251
252
  }: {
252
253
  listStyleType?: string;
@@ -267,23 +268,22 @@ declare const setListSiblingNodes: <N extends ElementOf<E>, E extends Editor = E
267
268
  declare const toggleList: <N extends ElementOf<E>, E extends SlateEditor = SlateEditor>(editor: E, options: ListOptions, getSiblingListOptions?: GetSiblingListOptions<N, E>) => void;
268
269
  //#endregion
269
270
  //#region src/lib/transforms/toggleListByPath.d.ts
270
- declare const toggleListByPath: (editor: SlateEditor, [node, path]: NodeEntry$1, listStyleType: string) => void;
271
- declare const toggleListByPathUnSet: (editor: SlateEditor, [, path]: NodeEntry$1) => any;
271
+ declare const toggleListByPath: (editor: SlateEditor, [node, path]: NodeEntry, listStyleType: string) => void;
272
+ declare const toggleListByPathUnSet: (editor: SlateEditor, [, path]: NodeEntry) => void;
272
273
  //#endregion
273
274
  //#region src/lib/transforms/toggleListSet.d.ts
274
275
  /** Set indent list if not set. */
275
- declare const toggleListSet: (editor: Editor, [node, _path]: NodeEntry$1, {
276
+ declare const toggleListSet: (editor: Editor, [node, _path]: NodeEntry, {
276
277
  listStyleType,
277
278
  ...options
278
279
  }: ListOptions) => true | undefined;
279
280
  //#endregion
280
281
  //#region src/lib/transforms/toggleListUnset.d.ts
281
282
  /** Unset list style type if already set. */
282
- declare const toggleListUnset: (editor: Editor, [node, path]: NodeEntry$1, {
283
+ declare const toggleListUnset: (editor: Editor, [node, path]: NodeEntry, {
283
284
  listStyleType
284
285
  }: {
285
286
  listStyleType?: string;
286
287
  }) => true | undefined;
287
288
  //#endregion
288
- export { withNormalizeList as A, getListAbove as C, getListExpectedListStart as D, withInsertBreakList as E, ULIST_STYLE_TYPES as F, GetSiblingListOptions as I, getSiblingList as L, BaseListConfig as M, BaseListPlugin as N, normalizeListStart as O, ListStyleType as P, getListChildren as S, areEqListStyleType as T, getSiblingListStyleType as _, toggleList as a, GetListSiblingsOptions as b, setIndentTodoNode as c, ListOptions as d, indentList as f, isOrderedList as g, someList as h, toggleListByPathUnSet as i, withList as j, normalizeListNotIndented as k, setListNode as l, someTodoList as m, toggleListSet as n, setListSiblingNodes as o, indentTodo as p, toggleListByPath as r, setListNodes as s, toggleListUnset as t, outdentList as u, getPreviousList as v, expandListItemsWithChildren as w, getListSiblings as x, getNextList as y };
289
- //# sourceMappingURL=index-BnhNqFus.d.ts.map
289
+ export { withNormalizeList as A, getListAbove as C, getListExpectedListStart as D, withInsertBreakList as E, ULIST_STYLE_TYPES as F, GetSiblingListOptions as I, getSiblingList as L, BaseListConfig as M, BaseListPlugin as N, normalizeListStart as O, ListStyleType as P, getListChildren as S, areEqListStyleType as T, getSiblingListStyleType as _, toggleList as a, GetListSiblingsOptions as b, setIndentTodoNode as c, ListOptions as d, indentList as f, isOrderedList as g, someList as h, toggleListByPathUnSet as i, withList as j, normalizeListNotIndented as k, setListNode as l, someTodoList as m, toggleListSet as n, setListSiblingNodes as o, indentTodo as p, toggleListByPath as r, setListNodes as s, toggleListUnset as t, outdentList as u, getPreviousList as v, expandListItemsWithChildren as w, getListSiblings as x, getNextList as y };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as withNormalizeList, C as getListAbove, D as getListExpectedListStart, E as withInsertBreakList, F as ULIST_STYLE_TYPES, I as GetSiblingListOptions, L as getSiblingList, M as BaseListConfig, N as BaseListPlugin, O as normalizeListStart, P as ListStyleType, S as getListChildren, T as areEqListStyleType, _ as getSiblingListStyleType, a as toggleList, b as GetListSiblingsOptions, c as setIndentTodoNode, d as ListOptions, f as indentList, g as isOrderedList, h as someList, i as toggleListByPathUnSet, j as withList, k as normalizeListNotIndented, l as setListNode, m as someTodoList, n as toggleListSet, o as setListSiblingNodes, p as indentTodo, r as toggleListByPath, s as setListNodes, t as toggleListUnset, u as outdentList, v as getPreviousList, w as expandListItemsWithChildren, x as getListSiblings, y as getNextList } from "./index-BnhNqFus";
1
+ import { A as withNormalizeList, C as getListAbove, D as getListExpectedListStart, E as withInsertBreakList, F as ULIST_STYLE_TYPES, I as GetSiblingListOptions, L as getSiblingList, M as BaseListConfig, N as BaseListPlugin, O as normalizeListStart, P as ListStyleType, S as getListChildren, T as areEqListStyleType, _ as getSiblingListStyleType, a as toggleList, b as GetListSiblingsOptions, c as setIndentTodoNode, d as ListOptions, f as indentList, g as isOrderedList, h as someList, i as toggleListByPathUnSet, j as withList, k as normalizeListNotIndented, l as setListNode, m as someTodoList, n as toggleListSet, o as setListSiblingNodes, p as indentTodo, r as toggleListByPath, s as setListNodes, t as toggleListUnset, u as outdentList, v as getPreviousList, w as expandListItemsWithChildren, x as getListSiblings, y as getNextList } from "./index-Co0gJSmb";
2
2
  export { BaseListConfig, BaseListPlugin, GetListSiblingsOptions, GetSiblingListOptions, ListOptions, ListStyleType, ULIST_STYLE_TYPES, areEqListStyleType, expandListItemsWithChildren, getListAbove, getListChildren, getListExpectedListStart, getListSiblings, getNextList, getPreviousList, getSiblingList, getSiblingListStyleType, indentList, indentTodo, isOrderedList, normalizeListNotIndented, normalizeListStart, outdentList, setIndentTodoNode, setListNode, setListNodes, setListSiblingNodes, someList, someTodoList, toggleList, toggleListByPath, toggleListByPathUnSet, toggleListSet, toggleListUnset, withInsertBreakList, withList, withNormalizeList };
@@ -1,10 +1,15 @@
1
- import { M as BaseListConfig } from "../index-BnhNqFus";
1
+ import { I as GetSiblingListOptions, M as BaseListConfig, P as ListStyleType } from "../index-Co0gJSmb";
2
+ import * as platejs0 from "platejs";
2
3
  import { TElement } from "platejs";
4
+ import * as platejs_react0 from "platejs/react";
3
5
 
4
6
  //#region src/react/ListPlugin.d.ts
5
7
  type ListConfig = BaseListConfig;
6
8
  /** Enables support for indented lists with React-specific features. */
7
- declare const ListPlugin: any;
9
+ declare const ListPlugin: platejs_react0.PlatePlugin<platejs0.PluginConfig<"list", {
10
+ getSiblingListOptions?: GetSiblingListOptions<platejs0.TElement>;
11
+ getListStyleType?: (element: HTMLElement) => ListStyleType;
12
+ }, {}, {}, {}>>;
8
13
  //#endregion
9
14
  //#region src/react/hooks/useListToolbarButton.d.ts
10
15
  declare const useListToolbarButtonState: ({
@@ -13,14 +18,14 @@ declare const useListToolbarButtonState: ({
13
18
  nodeType?: string;
14
19
  }) => {
15
20
  nodeType: string;
16
- pressed: any;
21
+ pressed: boolean;
17
22
  };
18
23
  declare const useListToolbarButton: ({
19
24
  nodeType,
20
25
  pressed
21
26
  }: ReturnType<typeof useListToolbarButtonState>) => {
22
27
  props: {
23
- pressed: any;
28
+ pressed: boolean;
24
29
  onClick: () => void;
25
30
  onMouseDown: (e: React.MouseEvent<HTMLButtonElement>) => void;
26
31
  };
@@ -47,18 +52,17 @@ declare const useIndentTodoToolBarButtonState: ({
47
52
  nodeType?: string;
48
53
  }) => {
49
54
  nodeType: string;
50
- pressed: any;
55
+ pressed: boolean;
51
56
  };
52
57
  declare const useIndentTodoToolBarButton: ({
53
58
  nodeType,
54
59
  pressed
55
60
  }: ReturnType<typeof useIndentTodoToolBarButtonState>) => {
56
61
  props: {
57
- pressed: any;
62
+ pressed: boolean;
58
63
  onClick: () => void;
59
64
  onMouseDown: (e: React.MouseEvent<HTMLButtonElement>) => void;
60
65
  };
61
66
  };
62
67
  //#endregion
63
- export { ListConfig, ListPlugin, useIndentTodoToolBarButton, useIndentTodoToolBarButtonState, useListToolbarButton, useListToolbarButtonState, useTodoListElement, useTodoListElementState };
64
- //# sourceMappingURL=index.d.ts.map
68
+ export { ListConfig, ListPlugin, useIndentTodoToolBarButton, useIndentTodoToolBarButtonState, useListToolbarButton, useListToolbarButtonState, useTodoListElement, useTodoListElementState };
@@ -178,5 +178,4 @@ function _temp2(e) {
178
178
  }
179
179
 
180
180
  //#endregion
181
- export { ListPlugin, useIndentTodoToolBarButton, useIndentTodoToolBarButtonState, useListToolbarButton, useListToolbarButtonState, useTodoListElement, useTodoListElementState };
182
- //# sourceMappingURL=index.js.map
181
+ export { ListPlugin, useIndentTodoToolBarButton, useIndentTodoToolBarButtonState, useListToolbarButton, useListToolbarButtonState, useTodoListElement, useTodoListElementState };
@@ -799,5 +799,4 @@ function List(props) {
799
799
  }
800
800
 
801
801
  //#endregion
802
- export { getListChildren as A, getSiblingListStyleType as C, getSiblingList as D, getNextList as E, ListStyleType as M, ULIST_STYLE_TYPES as N, getListAbove as O, isOrderedList as S, getPreviousList as T, getListExpectedListStart as _, toggleListByPathUnSet as a, someTodoList as b, toggleListSet as c, setIndentTodoNode as d, setListNode as f, withInsertBreakList as g, indentTodo as h, toggleListByPath as i, areEqListStyleType as j, expandListItemsWithChildren as k, setListSiblingNodes as l, indentList as m, withList as n, toggleList as o, outdentList as p, withNormalizeList as r, toggleListUnset as s, BaseListPlugin as t, setListNodes as u, normalizeListStart as v, getListSiblings as w, someList as x, normalizeListNotIndented as y };
803
- //# sourceMappingURL=src-Dvsp2AeZ.js.map
802
+ export { getListChildren as A, getSiblingListStyleType as C, getSiblingList as D, getNextList as E, ListStyleType as M, ULIST_STYLE_TYPES as N, getListAbove as O, isOrderedList as S, getPreviousList as T, getListExpectedListStart as _, toggleListByPathUnSet as a, someTodoList as b, toggleListSet as c, setIndentTodoNode as d, setListNode as f, withInsertBreakList as g, indentTodo as h, toggleListByPath as i, areEqListStyleType as j, expandListItemsWithChildren as k, setListSiblingNodes as l, indentList as m, withList as n, toggleList as o, outdentList as p, withNormalizeList as r, toggleListUnset as s, BaseListPlugin as t, setListNodes as u, normalizeListStart as v, getListSiblings as w, someList as x, normalizeListNotIndented as y };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lofcz/platejs-list",
3
- "version": "52.0.11",
3
+ "version": "52.3.6",
4
4
  "description": "List plugin for Plate",
5
5
  "keywords": [
6
6
  "plate",
@@ -32,10 +32,11 @@
32
32
  "clsx": "^2.1.1",
33
33
  "lodash": "^4.17.23",
34
34
  "react-compiler-runtime": "^1.0.0",
35
- "@platejs/indent": "npm:@lofcz/platejs-indent@52.0.11"
35
+ "@platejs/indent": "npm:@lofcz/platejs-indent@52.3.6"
36
36
  },
37
37
  "devDependencies": {
38
- "@plate/scripts": "1.0.0"
38
+ "@plate/scripts": "1.0.0",
39
+ "platejs": "npm:@lofcz/platejs@52.3.6"
39
40
  },
40
41
  "peerDependencies": {
41
42
  "platejs": ">=52.0.11",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BnhNqFus.d.ts","names":[],"sources":["../src/lib/queries/getSiblingList.ts","../src/lib/types.ts","../src/lib/BaseListPlugin.tsx","../src/lib/withList.ts","../src/lib/withNormalizeList.ts","../src/lib/normalizers/normalizeListNotIndented.ts","../src/lib/normalizers/normalizeListStart.ts","../src/lib/normalizers/withInsertBreakList.ts","../src/lib/queries/areEqListStyleType.ts","../src/lib/queries/expandListItemsWithChildren.ts","../src/lib/queries/getListAbove.ts","../src/lib/queries/getListChildren.ts","../src/lib/queries/getListSiblings.ts","../src/lib/queries/getNextList.ts","../src/lib/queries/getPreviousList.ts","../src/lib/queries/getSiblingListStyleType.ts","../src/lib/queries/isOrderedList.ts","../src/lib/queries/someList.ts","../src/lib/queries/someTodoList.ts","../src/lib/transforms/indentList.ts","../src/lib/transforms/outdentList.ts","../src/lib/transforms/setListNode.ts","../src/lib/transforms/setListNodes.ts","../src/lib/transforms/setListSiblingNodes.ts","../src/lib/transforms/toggleList.ts","../src/lib/transforms/toggleListByPath.ts","../src/lib/transforms/toggleListSet.ts","../src/lib/transforms/toggleListUnset.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/react/ListPlugin.tsx","../../src/react/hooks/useListToolbarButton.ts","../../src/react/hooks/useTodoListElement.ts","../../src/react/hooks/useTodoListToolbarButton.ts"],"sourcesContent":[],"mappings":";;;;KAIY,UAAA,GAAa;;cAGZ;;;cCFA;;;;;;EDDD,OAAA,EAAA,GAAA;AAGZ,CAAA;cCca;;;GAGV,kBAAkB;;;IAnBR,OAAA,EAAA,GAAA,GAAA,IAAA;IAgBA,WAAA,EAAA,CAAA,CAAA,EAcU,KAAA,CAAM,UAK5B,CALuC,iBAKvC,CAAA,EAAA,GAAA,IAAA;EAnBoC,CAAA;CAAA;;;cCjBxB;;;WAGF;;AFHC,cEiBC,kBFjBY,EAAA,CAAA,KAAc,EEkB9B,UFlB8B,CAAA,OEkBZ,uBFlBY,CAAA,EAAA,GAAA;EAG1B,aAA0C,EAAA;;;;ECF1C,CAAA;AAgBb,CAAA;;;cEhBa;;;;;;EHDD,OAAA,EAAA,GAAA;AAGZ,CAAA;cGca;;;GAGV,kBAAkB;;;IFnBR,OAAA,EAAA,GAAA,GAAA,IAAA;IAgBA,WAAA,EAAA,CAAA,CAAA,EEcU,KAAA,CAAM,UFK5B,CELuC,iBFKvC,CAAA,EAAA,GAAA,IAAA;EAnBoC,CAAA;CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["toPlatePlugin","BaseListConfig","BaseListPlugin","ListConfig","ListPlugin","useEditorRef","useEditorSelector","ListStyleType","toggleList","someList","useListToolbarButtonState","t0","$","_c","t1","undefined","nodeType","t2","Disc","t3","t4","editor","pressed","t5","useListToolbarButton","listStyleType","props","onClick","onMouseDown","_temp","e","preventDefault","TElement","useEditorRef","useReadOnly","useTodoListElementState","t0","$","_c","element","editor","checked","readOnly","t1","useTodoListElement","state","ReturnType","checkboxProps","onCheckedChange","value","path","api","findPath","tf","setNodes","at","onMouseDown","e","preventDefault","useEditorRef","useEditorSelector","ListStyleType","toggleList","someTodoList","useIndentTodoToolBarButtonState","t0","$","_c","t1","undefined","nodeType","t2","Disc","t3","pressed","_temp","t4","useIndentTodoToolBarButton","editor","listStyleType","props","onClick","onMouseDown","_temp2","e","preventDefault"],"sources":["../../src/react/ListPlugin.tsx","../../src/react/hooks/useListToolbarButton.ts","../../src/react/hooks/useTodoListElement.ts","../../src/react/hooks/useTodoListToolbarButton.ts"],"sourcesContent":["import { toPlatePlugin } from 'platejs/react';\n\nimport { type BaseListConfig, BaseListPlugin } from '../lib';\n\nexport type ListConfig = BaseListConfig;\n\n/** Enables support for indented lists with React-specific features. */\nexport const ListPlugin = toPlatePlugin(BaseListPlugin);\n","import { useEditorRef, useEditorSelector } from 'platejs/react';\n\nimport { ListStyleType, toggleList } from '../../index';\nimport { someList } from '../../lib/queries/someList';\n\nexport const useListToolbarButtonState = ({\n nodeType = ListStyleType.Disc,\n}: {\n nodeType?: string;\n} = {}) => {\n const pressed = useEditorSelector(\n (editor) => someList(editor, nodeType),\n [nodeType]\n );\n\n return {\n nodeType,\n pressed,\n };\n};\n\nexport const useListToolbarButton = ({\n nodeType,\n pressed,\n}: ReturnType<typeof useListToolbarButtonState>) => {\n const editor = useEditorRef();\n\n return {\n props: {\n pressed,\n onClick: () => {\n toggleList(editor, {\n listStyleType: nodeType,\n });\n },\n onMouseDown: (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n },\n },\n };\n};\n","import type { TElement } from 'platejs';\n\nimport { useEditorRef, useReadOnly } from 'platejs/react';\n\nexport const useTodoListElementState = ({\n element,\n}: {\n element: TElement;\n}): any => {\n const editor = useEditorRef();\n const { checked } = element;\n const readOnly = useReadOnly();\n\n return {\n checked,\n editor,\n element,\n readOnly,\n };\n};\n\nexport const useTodoListElement = (\n state: ReturnType<typeof useTodoListElementState>\n) => {\n const { checked, editor, element, readOnly } = state;\n\n return {\n checkboxProps: {\n checked: !!checked,\n onCheckedChange: (value: boolean) => {\n if (readOnly) return;\n\n const path = editor.api.findPath(element);\n\n if (!path) return;\n\n editor.tf.setNodes({ checked: value }, { at: path });\n },\n onMouseDown: (e: any) => {\n e.preventDefault();\n },\n },\n };\n};\n","import { useEditorRef, useEditorSelector } from 'platejs/react';\n\nimport { ListStyleType, toggleList } from '../../index';\nimport { someTodoList } from '../../lib/queries/someTodoList';\n\nexport const useIndentTodoToolBarButtonState = ({\n nodeType = ListStyleType.Disc,\n}: {\n nodeType?: string;\n} = {}) => {\n const pressed = useEditorSelector(\n (editor) => someTodoList(editor),\n [nodeType]\n );\n\n return {\n nodeType,\n pressed,\n };\n};\n\nexport const useIndentTodoToolBarButton = ({\n nodeType,\n pressed,\n}: ReturnType<typeof useIndentTodoToolBarButtonState>) => {\n const editor = useEditorRef();\n\n return {\n props: {\n pressed,\n onClick: () => {\n toggleList(editor, {\n listStyleType: nodeType,\n });\n },\n onMouseDown: (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n },\n },\n };\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"src-Dvsp2AeZ.js","names":["ListStyleType","ArabicIndic","Armenian","Bengali","Cambodian","Circle","CjkDecimal","CjkEarthlyBranch","CjkHeavenlyStem","Decimal","DecimalLeadingZero","Devanagari","Disc","DisclosureClosed","DisclosureOpen","EthiopicNumeric","Georgian","Gujarati","Gurmukhi","Hebrew","Hiragana","HiraganaIroha","Inherit","Initial","JapaneseFormal","JapaneseInformal","Kannada","Katakana","KatakanaIroha","Khmer","KoreanHangulFormal","KoreanHanjaFormal","KoreanHanjaInformal","Lao","LowerAlpha","LowerArmenian","LowerGreek","LowerLatin","LowerRoman","Malayalam","Mongolian","Myanmar","None","Oriya","Persian","SimpChineseFormal","SimpChineseInformal","Square","Tamil","Telugu","Thai","Tibetan","TradChineseFormal","TradChineseInformal","UpperAlpha","UpperArmenian","UpperLatin","UpperRoman","const","ULIST_STYLE_TYPES","Editor","NodeEntry","KEYS","ListStyleType","areEqListStyleType","_editor","entries","listStyleType","Disc","eqListStyleType","entry","block","listTodo","Object","hasOwn","listChecked","listType","Editor","ElementEntryOf","ElementOf","NodeEntry","isDefined","KEYS","NodeApi","PathApi","getListChildren","E","editor","entry","N","children","node","path","parentIndent","indent","listType","currentPath","nextPath","next","nextNode","get","nextIndent","push","Editor","ElementEntryOf","ElementOf","NodeEntry","isDefined","KEYS","getListChildren","expandListItemsWithChildren","E","editor","entries","N","expandedEntries","processedIds","Set","forEach","entry","node","has","id","push","add","isListItem","listType","indent","children","childEntry","Editor","EditorAboveOptions","ElementOf","NodeEntry","isDefined","KEYS","getListAbove","E","editor","options","Omit","N","api","above","match","node","listType","Editor","ElementEntryOf","ElementOf","ElementOrTextOf","NodeEntry","TNode","isDefined","KEYS","GetSiblingListOptions","E","breakOnEqIndentNeqListStyleType","breakOnListRestart","breakOnLowerIndent","breakQuery","siblingNode","currentNode","getNextEntry","entry","N","getPreviousEntry","eqIndent","query","getSiblingList","_editor","node","path","getSiblingEntry","nextEntry","nextNode","nextPath","indent","nextIndent","listRestart","listType","valid","Editor","ElementEntryOf","ElementOf","NodeEntry","NodeApi","PathApi","GetSiblingListOptions","getSiblingList","getNextList","E","editor","entry","options","Partial","N","getNextEntry","currPath","nextPath","next","nextNode","get","getPreviousEntry","undefined","Editor","ElementEntryOf","ElementOf","NodeEntry","NodeApi","PathApi","GetSiblingListOptions","getSiblingList","getPreviousList","E","editor","entry","options","Partial","N","getPreviousEntry","currPath","prevPath","previous","prevNode","get","getNextEntry","undefined","Editor","ElementEntryOf","ElementOf","NodeEntry","TElement","KEYS","GetSiblingListOptions","getNextList","getPreviousList","GetListSiblingsOptions","E","Partial","N","current","next","previous","getListSiblings","editor","entry","options","siblings","node","listType","Object","hasOwn","listChecked","iterEntry","prevEntry","push","nextEntry","ElementOf","NodeEntry","SlateEditor","TElement","KEYS","ListStyleType","GetListSiblingsOptions","getListSiblings","getSiblingListStyleType","editor","E","entry","indent","options","siblingEntry","siblings","breakOnEqIndentNeqListStyleType","current","eqIndent","length","listType","TElement","ULIST_STYLE_TYPES","isOrderedList","element","listStyleType","includes","SlateEditor","KEYS","someList","editor","type","selection","api","some","match","n","isHasProperty","Object","hasOwn","listChecked","list","listType","Array","isArray","includes","SlateEditor","KEYS","someTodoList","editor","api","some","at","selection","match","n","list","listType","isHasProperty","Object","hasOwn","listChecked","type","listTodo","Editor","NodeEntry","isDefined","KEYS","normalizeListNotIndented","editor","node","path","indent","listType","listStart","tf","unsetNodes","at","Editor","ElementEntryOf","ElementOf","NodeEntry","isDefined","KEYS","GetSiblingListOptions","getPreviousList","getListExpectedListStart","entry","prevEntry","node","prevNode","restart","listRestart","restartPolite","listRestartPolite","prevListStart","listStart","normalizeListStart","E","editor","options","Partial","N","tf","withoutNormalizing","path","listStyleType","listType","expectedListStart","unsetNodes","at","setNodes","OverrideEditor","TElement","isDefined","KEYS","BaseListConfig","withInsertBreakList","editor","tf","insertBreak","transforms","nodeEntry","api","above","node","path","listType","listTodo","isExpanded","isEnd","selection","focus","withoutNormalizing","newEntry","setNodes","checked","at","SlateEditor","TLocation","setIndent","KEYS","ListStyleType","ListOptions","at","listRestart","listRestartPolite","listStyleType","indentList","editor","Disc","options","offset","setNodesProps","listType","indentTodo","listChecked","SlateEditor","setIndent","KEYS","ListOptions","outdentList","editor","options","offset","unsetNodesProps","listType","listChecked","Editor","Path","KEYS","ListStyleType","setListNode","editor","at","indent","listStyleType","Disc","newIndent","tf","setNodes","listType","setIndentTodoNode","listTodo","listChecked","Editor","NodeEntry","KEYS","ListStyleType","setIndentTodoNode","setListNode","setListNodes","editor","entries","listStyleType","Disc","tf","withoutNormalizing","forEach","entry","node","path","indent","listType","Object","hasOwn","listChecked","unsetNodes","at","Editor","ElementEntryOf","ElementOf","KEYS","GetSiblingListOptions","getListSiblings","ListStyleType","setIndentTodoNode","setListNode","setListSiblingNodes","E","editor","entry","getSiblingListOptions","listStyleType","Disc","N","tf","withoutNormalizing","siblings","forEach","node","path","listTodo","unsetNodes","listType","at","indent","listChecked","Editor","NodeEntry","KEYS","ListStyleType","ListOptions","indentList","indentTodo","toggleListSet","editor","node","_path","listStyleType","Disc","options","Object","hasOwn","listChecked","listType","Editor","NodeEntry","KEYS","ListStyleType","outdentList","toggleListUnset","editor","node","path","listStyleType","Disc","listTodo","Object","hasOwn","listChecked","tf","unsetNodes","at","listType","ElementEntryOf","ElementOf","SlateEditor","TElement","getInjectMatch","KEYS","ListOptions","BaseListPlugin","GetSiblingListOptions","getListAbove","getPreviousList","areEqListStyleType","setListNodes","setListSiblingNodes","toggleListSet","toggleListUnset","toggleList","E","editor","options","getSiblingListOptions","N","listRestart","listRestartPolite","listStyleType","setList","_getSiblingListOptions","getOptions","api","isCollapsed","entry","block","isExpanded","match","getPlugin","key","list","_entries","nodes","entries","eqListStyleType","tf","withoutNormalizing","forEach","node","path","indent","unsetNodes","listType","at","setNodes","listChecked","restartValue","isRestart","atStart","start","selection","isFirst","prop","NodeEntry","SlateEditor","KEYS","toggleListByPath","editor","node","path","listStyleType","tf","setNodes","indent","listChecked","listType","type","p","at","toggleListByPathUnSet","unsetNodes","OverrideEditor","TElement","BaseListConfig","normalizeListNotIndented","normalizeListStart","withNormalizeList","editor","getOptions","tf","normalizeNode","transforms","node","path","normalized","withoutNormalizing","getSiblingListOptions","NodeEntry","OverrideEditor","Path","TElement","TNode","KEYS","PathApi","BaseListConfig","withInsertBreakList","normalizeListStart","getNextList","getPreviousList","outdentList","ListStyleType","withNormalizeList","withList","ctx","editor","getOptions","tf","apply","resetBlock","transforms","options","api","block","listType","operation","getSiblingListOptions","type","listStyleType","node","includes","prevNodeEntry","path","breakOnEqIndentNeqListStyleType","eqIndent","prevListStyleType","LowerAlpha","LowerRoman","UpperAlpha","UpperRoman","properties","listRestart","listRestartPolite","affectedPaths","push","previous","newPath","next","isListItem","forEach","affectedPath","entry","normalized","breakOnLowerIndent","React","SlateRenderElementProps","PluginConfig","TElement","TListElement","createTSlatePlugin","isDefined","isHtmlBlockElement","KEYS","postCleanHtml","traverseHtmlElements","GetSiblingListOptions","ListStyleType","isOrderedList","withList","BaseListConfig","getSiblingListOptions","getListStyleType","element","HTMLElement","BaseListPlugin","key","list","inject","plugins","html","parser","transformData","data","document","DOMParser","parseFromString","body","lisWithNestedLists","li","Element","nestedLists","tagName","Array","from","children","forEach","child","push","length","nestedList","remove","parentNode","insertBefore","nextSibling","htmlElement","childNodes","liChildren","Node","nodeType","ELEMENT_NODE","childElement","replaceChildren","ariaLevel","getAttribute","dataset","indent","parent","parentElement","String","listStyleType","style","listParent","closest","parentListStyleType","innerHTML","targetPlugins","p","options","parsers","deserializer","isElement","rules","validNodeName","parse","editor","getOptions","dataIndent","Number","dataListStyleType","undefined","type","getType","render","belowNodes","props","break","empty","splitReset","delete","start","merge","removeEmpty","match","node","listType","overrideEditor","List","$","_c","listStart","t0","margin","padding","position","t1","t2"],"sources":["../src/lib/types.ts","../src/lib/queries/areEqListStyleType.ts","../src/lib/queries/getListChildren.ts","../src/lib/queries/expandListItemsWithChildren.ts","../src/lib/queries/getListAbove.ts","../src/lib/queries/getSiblingList.ts","../src/lib/queries/getNextList.ts","../src/lib/queries/getPreviousList.ts","../src/lib/queries/getListSiblings.ts","../src/lib/queries/getSiblingListStyleType.ts","../src/lib/queries/isOrderedList.ts","../src/lib/queries/someList.ts","../src/lib/queries/someTodoList.ts","../src/lib/normalizers/normalizeListNotIndented.ts","../src/lib/normalizers/normalizeListStart.ts","../src/lib/normalizers/withInsertBreakList.ts","../src/lib/transforms/indentList.ts","../src/lib/transforms/outdentList.ts","../src/lib/transforms/setListNode.ts","../src/lib/transforms/setListNodes.ts","../src/lib/transforms/setListSiblingNodes.ts","../src/lib/transforms/toggleListSet.ts","../src/lib/transforms/toggleListUnset.ts","../src/lib/transforms/toggleList.ts","../src/lib/transforms/toggleListByPath.ts","../src/lib/withNormalizeList.ts","../src/lib/withList.ts","../src/lib/BaseListPlugin.tsx"],"sourcesContent":["export const ListStyleType = {\n ArabicIndic: 'arabic-indic',\n Armenian: 'armenian',\n Bengali: 'bengali',\n Cambodian: 'cambodian',\n Circle: 'circle',\n CjkDecimal: 'cjk-decimal',\n CjkEarthlyBranch: 'cjk-earthly-branch',\n CjkHeavenlyStem: 'cjk-heavenly-stem',\n Decimal: 'decimal',\n DecimalLeadingZero: 'decimal-leading-zero',\n Devanagari: 'devanagari',\n Disc: 'disc',\n DisclosureClosed: 'disclosure-closed',\n DisclosureOpen: 'disclosure-open',\n EthiopicNumeric: 'ethiopic-numeric',\n Georgian: 'georgian',\n Gujarati: 'gujarati',\n Gurmukhi: 'gurmukhi',\n Hebrew: 'hebrew',\n Hiragana: 'hiragana',\n HiraganaIroha: 'hiragana-iroha',\n Inherit: 'inherit',\n Initial: 'initial',\n JapaneseFormal: 'japanese-formal',\n JapaneseInformal: 'japanese-informal',\n Kannada: 'kannada',\n Katakana: 'katakana',\n KatakanaIroha: 'katakana-iroha',\n Khmer: 'khmer',\n KoreanHangulFormal: 'korean-hangul-formal',\n KoreanHanjaFormal: 'korean-hanja-formal',\n KoreanHanjaInformal: 'korean-hanja-informal',\n Lao: 'lao',\n LowerAlpha: 'lower-alpha',\n LowerArmenian: 'lower-armenian',\n LowerGreek: 'lower-greek',\n LowerLatin: 'lower-latin',\n LowerRoman: 'lower-roman',\n Malayalam: 'malayalam',\n Mongolian: 'mongolian',\n Myanmar: 'myanmar',\n None: 'none',\n Oriya: 'oriya',\n Persian: 'persian',\n SimpChineseFormal: 'simp-chinese-formal',\n SimpChineseInformal: 'simp-chinese-informal',\n Square: 'square',\n Tamil: 'tamil',\n Telugu: 'telugu',\n Thai: 'thai',\n Tibetan: 'tibetan',\n TradChineseFormal: 'trad-chinese-formal',\n TradChineseInformal: 'trad-chinese-informal',\n UpperAlpha: 'upper-alpha',\n UpperArmenian: 'upper-armenian',\n UpperLatin: 'upper-latin',\n UpperRoman: 'upper-roman',\n} as const;\n\nexport type ListStyleType = (typeof ListStyleType)[keyof typeof ListStyleType];\n\nexport const ULIST_STYLE_TYPES = [\n ListStyleType.Disc,\n ListStyleType.Circle,\n ListStyleType.Square,\n ListStyleType.DisclosureOpen,\n ListStyleType.DisclosureClosed,\n] as const;\n","import type { Editor, NodeEntry } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport { ListStyleType } from '../types';\n\nexport const areEqListStyleType = (\n _editor: Editor,\n entries: NodeEntry[],\n {\n listStyleType = ListStyleType.Disc,\n }: {\n listStyleType?: string;\n }\n) => {\n let eqListStyleType = true;\n\n for (const entry of entries) {\n const [block] = entry;\n\n if (listStyleType === KEYS.listTodo) {\n if (!Object.hasOwn(block, KEYS.listChecked)) {\n eqListStyleType = false;\n\n break;\n }\n\n continue;\n }\n if (!block[KEYS.listType] || block[KEYS.listType] !== listStyleType) {\n eqListStyleType = false;\n\n break;\n }\n }\n\n return eqListStyleType;\n};\n","import type { Editor, ElementEntryOf, ElementOf, NodeEntry } from 'platejs';\n\nimport { isDefined, KEYS, NodeApi, PathApi } from 'platejs';\n\n/**\n * Get all list items that are children of the current list item (have bigger\n * indent). Stops when encountering an item with equal or lower indent.\n */\nexport const getListChildren = <\n N extends ElementOf<E>,\n E extends Editor = Editor,\n>(\n editor: E,\n entry: ElementEntryOf<E>\n): NodeEntry<N>[] => {\n const children: NodeEntry<N>[] = [];\n const [node, path] = entry;\n\n const parentIndent = (node as any)[KEYS.indent] as number;\n\n // If no indent or not a list item, return empty\n if (!isDefined(parentIndent) || !isDefined((node as any)[KEYS.listType])) {\n return children;\n }\n\n let currentPath = path;\n\n while (true) {\n const nextPath = PathApi.next(currentPath);\n if (!nextPath) break;\n\n const nextNode = NodeApi.get<N>(editor, nextPath);\n if (!nextNode) break;\n\n const nextIndent = (nextNode as any)[KEYS.indent] as number;\n\n // Stop if we hit a non-list item or item with equal/lower indent\n if (\n !isDefined(nextIndent) ||\n !isDefined((nextNode as any)[KEYS.listType])\n ) {\n break;\n }\n\n if (nextIndent <= parentIndent) {\n break;\n }\n\n // This is a child item (bigger indent)\n children.push([nextNode, nextPath]);\n currentPath = nextPath;\n }\n\n return children;\n};\n","import type { Editor, ElementEntryOf, ElementOf, NodeEntry } from 'platejs';\n\nimport { isDefined, KEYS } from 'platejs';\n\nimport { getListChildren } from './getListChildren';\n\n/**\n * Expands a list of blocks to include list item children. For each list item in\n * the input, adds all its children (items with bigger indent). Non-list blocks\n * are kept as-is. Requires id to be set on the blocks.\n *\n * @returns Array of block entries with list items expanded to include their\n * children\n */\nexport const expandListItemsWithChildren = <\n N extends ElementOf<E>,\n E extends Editor = Editor,\n>(\n editor: E,\n entries: ElementEntryOf<E>[]\n): NodeEntry<N>[] => {\n const expandedEntries: NodeEntry<N>[] = [];\n const processedIds = new Set<string>();\n\n entries.forEach((entry) => {\n const [node] = entry;\n\n // Skip if already processed\n if (processedIds.has(node.id as string)) return;\n\n expandedEntries.push(entry as NodeEntry<N>);\n processedIds.add(node.id as string);\n\n // Check if it's a list item\n const isListItem =\n isDefined((node as any)[KEYS.listType]) &&\n isDefined((node as any)[KEYS.indent]);\n\n if (isListItem) {\n // Get all children (items with bigger indent)\n const children = getListChildren<N, E>(editor, entry);\n\n // Add children that aren't already in the selection\n children.forEach((childEntry) => {\n if (!processedIds.has(childEntry[0].id as string)) {\n expandedEntries.push(childEntry);\n processedIds.add(childEntry[0].id as string);\n }\n });\n }\n });\n\n return expandedEntries;\n};\n","import {\n type Editor,\n type EditorAboveOptions,\n type ElementOf,\n type NodeEntry,\n isDefined,\n KEYS,\n} from 'platejs';\n\nexport const getListAbove = <N extends ElementOf<E>, E extends Editor = Editor>(\n editor: E,\n options?: Omit<EditorAboveOptions, 'match'>\n): NodeEntry<N> | undefined =>\n editor.api.above({\n ...options,\n match: (node) => isDefined(node[KEYS.listType]),\n });\n","import {\n type Editor,\n type ElementEntryOf,\n type ElementOf,\n type ElementOrTextOf,\n type NodeEntry,\n type TNode,\n isDefined,\n KEYS,\n} from 'platejs';\n\nexport type GetSiblingListOptions<\n N extends ElementOf<E>,\n E extends Editor = Editor,\n> = {\n breakOnEqIndentNeqListStyleType?: boolean;\n breakOnListRestart?: boolean;\n breakOnLowerIndent?: boolean;\n breakQuery?: (siblingNode: TNode, currentNode: TNode) => boolean | undefined;\n getNextEntry?: (\n entry: NodeEntry<ElementOrTextOf<E>>\n ) => NodeEntry<N> | undefined;\n getPreviousEntry?: (\n entry: NodeEntry<ElementOrTextOf<E>>\n ) => NodeEntry<N> | undefined;\n /** Query to break lookup */\n eqIndent?: boolean;\n /** Query to validate lookup. If false, check the next sibling. */\n query?: (siblingNode: TNode, currentNode: TNode) => boolean | undefined;\n};\n\n/**\n * Get the next sibling indent list node. Default query: the sibling node should\n * have the same listStyleType.\n */\nexport const getSiblingList = <\n N extends ElementOf<E>,\n E extends Editor = Editor,\n>(\n _editor: E,\n [node, path]: ElementEntryOf<E>,\n {\n breakOnEqIndentNeqListStyleType = true,\n breakOnListRestart = false,\n breakOnLowerIndent = true,\n breakQuery,\n eqIndent = true,\n getNextEntry,\n getPreviousEntry,\n query,\n }: GetSiblingListOptions<N, E>\n): NodeEntry<N> | undefined => {\n if (!getPreviousEntry && !getNextEntry) return;\n\n const getSiblingEntry = getNextEntry ?? getPreviousEntry!;\n\n let nextEntry = getSiblingEntry([node, path]);\n\n while (true) {\n if (!nextEntry) return;\n\n const [nextNode, nextPath] = nextEntry;\n\n const indent = (node as any)[KEYS.indent] as number;\n const nextIndent = (nextNode as any)[KEYS.indent] as number;\n\n if (breakQuery?.(nextNode, node)) return;\n if (!isDefined(nextIndent)) return;\n if (breakOnListRestart) {\n if (getPreviousEntry && (node as any)[KEYS.listRestart]) {\n return;\n }\n if (getNextEntry && (nextNode as any)[KEYS.listRestart]) {\n return;\n }\n }\n if (breakOnLowerIndent && nextIndent < indent) return;\n if (\n breakOnEqIndentNeqListStyleType &&\n nextIndent === indent &&\n (nextNode as any)[KEYS.listType] !== (node as any)[KEYS.listType]\n )\n return;\n\n let valid = !query || query(nextNode, node);\n\n if (valid) {\n valid = !eqIndent || nextIndent === indent;\n\n if (valid) return [nextNode, nextPath];\n }\n\n nextEntry = getSiblingEntry(nextEntry);\n }\n};\n","import {\n type Editor,\n type ElementEntryOf,\n type ElementOf,\n type NodeEntry,\n NodeApi,\n PathApi,\n} from 'platejs';\n\nimport { type GetSiblingListOptions, getSiblingList } from './getSiblingList';\n\n/** Get the next indent list. */\nexport const getNextList = <N extends ElementOf<E>, E extends Editor = Editor>(\n editor: E,\n entry: ElementEntryOf<E>,\n options?: Partial<GetSiblingListOptions<N, E>>\n): NodeEntry<N> | undefined =>\n getSiblingList(editor, entry, {\n getNextEntry: ([, currPath]) => {\n const nextPath = PathApi.next(currPath);\n const nextNode = NodeApi.get<N>(editor, nextPath);\n\n if (!nextNode) return;\n\n return [nextNode, nextPath];\n },\n ...options,\n getPreviousEntry: undefined,\n });\n","import {\n type Editor,\n type ElementEntryOf,\n type ElementOf,\n type NodeEntry,\n NodeApi,\n PathApi,\n} from 'platejs';\n\nimport { type GetSiblingListOptions, getSiblingList } from './getSiblingList';\n\n/** Get the previous indent list node. */\nexport const getPreviousList = <\n N extends ElementOf<E>,\n E extends Editor = Editor,\n>(\n editor: E,\n entry: ElementEntryOf<E>,\n options?: Partial<GetSiblingListOptions<N, E>>\n): NodeEntry<N> | undefined =>\n getSiblingList(editor, entry, {\n getPreviousEntry: ([, currPath]) => {\n const prevPath = PathApi.previous(currPath);\n\n if (!prevPath) return;\n\n const prevNode = NodeApi.get<N>(editor, prevPath);\n\n if (!prevNode) return;\n\n return [prevNode, prevPath];\n },\n ...options,\n getNextEntry: undefined,\n });\n","import type {\n Editor,\n ElementEntryOf,\n ElementOf,\n NodeEntry,\n TElement,\n} from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport type { GetSiblingListOptions } from './getSiblingList';\n\nimport { getNextList } from './getNextList';\nimport { getPreviousList } from './getPreviousList';\n\nexport interface GetListSiblingsOptions<\n N extends ElementOf<E>,\n E extends Editor = Editor,\n> extends Partial<GetSiblingListOptions<N, E>> {\n current?: boolean;\n next?: boolean;\n previous?: boolean;\n}\n\nexport const getListSiblings = <\n N extends ElementOf<E>,\n E extends Editor = Editor,\n>(\n editor: E,\n entry: ElementEntryOf<E>,\n {\n current = true,\n next = true,\n previous = true,\n ...options\n }: GetListSiblingsOptions<N, E> = {}\n) => {\n const siblings: NodeEntry[] = [];\n\n const node = entry[0] as TElement;\n\n if (!node[KEYS.listType] && !Object.hasOwn(node, KEYS.listChecked)) {\n return siblings;\n }\n\n let iterEntry = entry;\n\n if (previous) {\n while (true) {\n const prevEntry = getPreviousList<N, E>(editor, iterEntry, options);\n\n if (!prevEntry) break;\n\n siblings.push(prevEntry);\n\n iterEntry = prevEntry;\n }\n }\n if (current) {\n siblings.push(entry);\n }\n if (next) {\n iterEntry = entry;\n\n while (true) {\n const nextEntry = getNextList(editor, iterEntry, options);\n\n if (!nextEntry) break;\n\n siblings.push(nextEntry);\n\n iterEntry = nextEntry;\n }\n }\n\n return siblings;\n};\n","import type { ElementOf, NodeEntry, SlateEditor, TElement } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport type { ListStyleType } from '../types';\n\nimport { type GetListSiblingsOptions, getListSiblings } from './index';\n\n/**\n * Get the first sibling list style type at the given indent. If none, return\n * the entry list style type.\n */\nexport const getSiblingListStyleType = <E extends SlateEditor>(\n editor: E,\n {\n entry,\n indent,\n ...options\n }: {\n entry: NodeEntry<TElement>;\n indent: number;\n } & GetListSiblingsOptions<ElementOf<E>, E>\n) => {\n const siblingEntry: NodeEntry<TElement> = [{ ...entry[0], indent }, entry[1]];\n\n const siblings = getListSiblings(editor, siblingEntry as any, {\n breakOnEqIndentNeqListStyleType: false,\n current: false,\n eqIndent: true,\n ...options,\n });\n\n return (\n siblings.length > 0\n ? siblings[0][0][KEYS.listType]\n : entry[0][KEYS.listType]\n ) as ListStyleType;\n};\n","import type { TElement } from 'platejs';\n\nimport { ULIST_STYLE_TYPES } from '../types';\n\nexport function isOrderedList(element: TElement) {\n return (\n !!element.listStyleType &&\n !ULIST_STYLE_TYPES.includes(element.listStyleType as any)\n );\n}\n","import type { SlateEditor } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nexport const someList = (editor: SlateEditor, type: string[] | string) =>\n !!editor.selection &&\n editor.api.some({\n match: (n: any) => {\n const isHasProperty = Object.hasOwn(n, KEYS.listChecked);\n\n if (isHasProperty) {\n return false;\n }\n\n const list = n[KEYS.listType];\n\n return Array.isArray(type) ? type.includes(list) : list === type;\n },\n });\n","import type { SlateEditor } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nexport const someTodoList = (editor: SlateEditor) =>\n editor.api.some({\n at: editor.selection!,\n match: (n) => {\n const list = n[KEYS.listType];\n const isHasProperty = Object.hasOwn(n, KEYS.listChecked);\n\n return n.type === 'p' && isHasProperty && list === KEYS.listTodo;\n },\n });\n","import { type Editor, type NodeEntry, isDefined, KEYS } from 'platejs';\n\n/** Unset listStyle, listStart if KEYS.indent is not defined. */\nexport const normalizeListNotIndented = (\n editor: Editor,\n [node, path]: NodeEntry\n) => {\n if (\n !isDefined(node[KEYS.indent]) &&\n (node[KEYS.listType] || node[KEYS.listStart])\n ) {\n editor.tf.unsetNodes([KEYS.listType, KEYS.listStart], {\n at: path,\n });\n\n return true;\n }\n};\n","import {\n type Editor,\n type ElementEntryOf,\n type ElementOf,\n type NodeEntry,\n isDefined,\n KEYS,\n} from 'platejs';\n\nimport type { GetSiblingListOptions } from '../queries/getSiblingList';\n\nimport { getPreviousList } from '../queries/getPreviousList';\n\nexport const getListExpectedListStart = (\n entry: NodeEntry,\n prevEntry?: NodeEntry\n): number => {\n const [node] = entry;\n const [prevNode] = prevEntry ?? [null];\n\n const restart = (node[KEYS.listRestart] as number | null) ?? null;\n const restartPolite = (node[KEYS.listRestartPolite] as number | null) ?? null;\n\n if (restart) {\n return restart;\n }\n\n if (restartPolite && !prevNode) {\n return restartPolite;\n }\n\n if (prevNode) {\n const prevListStart = (prevNode[KEYS.listStart] as number) ?? 1;\n return prevListStart + 1;\n }\n\n return 1;\n};\n\nexport const normalizeListStart = <\n N extends ElementOf<E>,\n E extends Editor = Editor,\n>(\n editor: E,\n entry: ElementEntryOf<E>,\n options?: Partial<GetSiblingListOptions<N, E>>\n) =>\n editor.tf.withoutNormalizing(() => {\n const [node, path] = entry;\n const listStyleType = (node as any)[KEYS.listType];\n const listStart = node[KEYS.listStart] as number | undefined;\n\n if (!listStyleType) return;\n\n const prevEntry = getPreviousList(editor, entry, options);\n const expectedListStart = getListExpectedListStart(entry, prevEntry);\n\n if (isDefined(listStart) && expectedListStart === 1) {\n editor.tf.unsetNodes(KEYS.listStart, { at: path });\n\n return true;\n }\n\n if (listStart !== expectedListStart && expectedListStart > 1) {\n editor.tf.setNodes({ [KEYS.listStart]: expectedListStart }, { at: path });\n\n return true;\n }\n\n return false;\n });\n","import { type OverrideEditor, type TElement, isDefined, KEYS } from 'platejs';\n\nimport type { BaseListConfig } from '../BaseListPlugin';\n\nexport const withInsertBreakList: OverrideEditor<BaseListConfig> = ({\n editor,\n tf: { insertBreak },\n}) => ({\n transforms: {\n insertBreak() {\n const nodeEntry = editor.api.above();\n\n if (!nodeEntry) return insertBreak();\n\n const [node, path] = nodeEntry;\n\n if (\n !isDefined(node[KEYS.listType]) ||\n node[KEYS.listType] !== KEYS.listTodo ||\n editor.api.isExpanded() ||\n !editor.api.isEnd(editor.selection?.focus, path)\n ) {\n return insertBreak();\n }\n\n editor.tf.withoutNormalizing(() => {\n insertBreak();\n\n const newEntry = editor.api.above<TElement>();\n\n if (newEntry) {\n editor.tf.setNodes(\n {\n checked: false,\n },\n { at: newEntry[1] }\n );\n }\n });\n },\n },\n});\n","import type { SlateEditor, TLocation } from 'platejs';\n\nimport { setIndent } from '@platejs/indent';\nimport { KEYS } from 'platejs';\n\nimport { ListStyleType } from '../types';\n\nexport type ListOptions = {\n at?: TLocation;\n listRestart?: number;\n listRestartPolite?: number;\n listStyleType?: ListStyleType | string;\n};\n\n/** Increase the indentation of the selected blocks. */\nexport const indentList = (\n editor: SlateEditor,\n { listStyleType = ListStyleType.Disc, ...options }: ListOptions = {}\n) => {\n setIndent(editor, {\n offset: 1,\n setNodesProps: () => ({\n [KEYS.listType]: listStyleType,\n }),\n ...options,\n });\n};\n\nexport const indentTodo = (\n editor: SlateEditor,\n { listStyleType = ListStyleType.Disc, ...options }: ListOptions = {}\n) => {\n setIndent(editor, {\n offset: 1,\n setNodesProps: () => ({\n [KEYS.listChecked]: false,\n [KEYS.listType]: listStyleType,\n }),\n ...options,\n });\n};\n","import type { SlateEditor } from 'platejs';\n\nimport { setIndent } from '@platejs/indent';\nimport { KEYS } from 'platejs';\n\nimport type { ListOptions } from './indentList';\n\n/** Decrease the indentation of the selected blocks. */\nexport const outdentList = (editor: SlateEditor, options: ListOptions = {}) => {\n setIndent(editor, {\n offset: -1,\n unsetNodesProps: [KEYS.listType, KEYS.listChecked],\n ...options,\n });\n};\n","import type { Editor, Path } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport { ListStyleType } from '../types';\n\nexport const setListNode = (\n editor: Editor,\n {\n at,\n indent = 0,\n listStyleType = ListStyleType.Disc,\n }: {\n at: Path;\n indent?: number;\n listStyleType?: string;\n }\n) => {\n const newIndent = indent || indent + 1;\n\n editor.tf.setNodes(\n {\n [KEYS.indent]: newIndent,\n [KEYS.listType]: listStyleType,\n },\n { at }\n );\n};\n\nexport const setIndentTodoNode = (\n editor: Editor,\n {\n at,\n indent = 0,\n listStyleType = KEYS.listTodo,\n }: {\n at: Path;\n indent?: number;\n listStyleType?: string;\n }\n) => {\n const newIndent = indent || indent + 1;\n\n editor.tf.setNodes(\n {\n [KEYS.indent]: newIndent,\n [KEYS.listChecked]: false,\n [KEYS.listType]: listStyleType,\n },\n { at }\n );\n};\n","import type { Editor, NodeEntry } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport { ListStyleType } from '../types';\nimport { setIndentTodoNode, setListNode } from './setListNode';\n\n/**\n * Set indent list to the given entries. Add indent if listStyleType was not\n * defined.\n */\nexport const setListNodes = (\n editor: Editor,\n entries: NodeEntry[],\n {\n listStyleType = ListStyleType.Disc,\n }: {\n listStyleType?: string;\n }\n) => {\n editor.tf.withoutNormalizing(() => {\n entries.forEach((entry) => {\n const [node, path] = entry;\n\n let indent = (node[KEYS.indent] as number) ?? 0;\n indent =\n node[KEYS.listType] || Object.hasOwn(node, KEYS.listChecked)\n ? indent\n : indent + 1;\n\n if (listStyleType === 'todo') {\n editor.tf.unsetNodes(KEYS.listType, { at: path });\n setIndentTodoNode(editor, {\n at: path,\n indent,\n listStyleType,\n });\n\n return;\n }\n\n editor.tf.unsetNodes(KEYS.listChecked, { at: path });\n setListNode(editor, {\n at: path,\n indent,\n listStyleType,\n });\n });\n });\n};\n","import type { Editor, ElementEntryOf, ElementOf } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport type { GetSiblingListOptions } from '../queries/getSiblingList';\n\nimport { getListSiblings } from '../queries/getListSiblings';\nimport { ListStyleType } from '../types';\nimport { setIndentTodoNode, setListNode } from './setListNode';\n\n/** Set indent list to entry + siblings. */\nexport const setListSiblingNodes = <\n N extends ElementOf<E>,\n E extends Editor = Editor,\n>(\n editor: E,\n entry: ElementEntryOf<E>,\n {\n getSiblingListOptions,\n listStyleType = ListStyleType.Disc,\n }: {\n getSiblingListOptions?: GetSiblingListOptions<N, E>;\n listStyleType?: string;\n }\n) => {\n editor.tf.withoutNormalizing(() => {\n const siblings = getListSiblings(editor, entry, getSiblingListOptions);\n\n siblings.forEach(([node, path]) => {\n if (listStyleType === KEYS.listTodo) {\n editor.tf.unsetNodes(KEYS.listType, { at: path });\n setIndentTodoNode(editor, {\n at: path,\n indent: node[KEYS.indent] as number,\n listStyleType,\n });\n } else {\n editor.tf.unsetNodes(KEYS.listChecked, { at: path });\n setListNode(editor, {\n at: path,\n indent: node[KEYS.indent] as number,\n listStyleType,\n });\n }\n });\n });\n};\n","import type { Editor, NodeEntry } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport { ListStyleType } from '../types';\nimport { type ListOptions, indentList, indentTodo } from './indentList';\n\n/** Set indent list if not set. */\nexport const toggleListSet = (\n editor: Editor,\n [node, _path]: NodeEntry,\n { listStyleType = ListStyleType.Disc, ...options }: ListOptions\n) => {\n if (Object.hasOwn(node, KEYS.listChecked) || node[KEYS.listType]) return;\n if (listStyleType === 'todo') {\n indentTodo(editor as any, {\n listStyleType,\n ...options,\n });\n } else {\n indentList(editor as any, {\n listStyleType,\n ...options,\n });\n }\n\n return true;\n};\n","import type { Editor, NodeEntry } from 'platejs';\n\nimport { KEYS } from 'platejs';\n\nimport { ListStyleType } from '../types';\nimport { outdentList } from './outdentList';\n\n/** Unset list style type if already set. */\nexport const toggleListUnset = (\n editor: Editor,\n [node, path]: NodeEntry,\n {\n listStyleType = ListStyleType.Disc,\n }: {\n listStyleType?: string;\n }\n) => {\n if (\n listStyleType === KEYS.listTodo &&\n Object.hasOwn(node, KEYS.listChecked)\n ) {\n editor.tf.unsetNodes(KEYS.listChecked, { at: path });\n outdentList(editor as any, { listStyleType });\n\n return true;\n }\n if (listStyleType === node[KEYS.listType]) {\n editor.tf.unsetNodes([KEYS.listType], {\n at: path,\n });\n\n outdentList(editor as any, { listStyleType });\n\n return true;\n }\n};\n","import type { ElementEntryOf, ElementOf, SlateEditor, TElement } from 'platejs';\n\nimport { getInjectMatch, KEYS } from 'platejs';\n\nimport type { ListOptions } from './indentList';\n\nimport { BaseListPlugin } from '../BaseListPlugin';\nimport {\n type GetSiblingListOptions,\n getListAbove,\n getPreviousList,\n} from '../queries';\nimport { areEqListStyleType } from '../queries/areEqListStyleType';\nimport { setListNodes } from './setListNodes';\nimport { setListSiblingNodes } from './setListSiblingNodes';\nimport { toggleListSet } from './toggleListSet';\nimport { toggleListUnset } from './toggleListUnset';\n\n/** Toggle indent list. */\nexport const toggleList = <\n N extends ElementOf<E>,\n E extends SlateEditor = SlateEditor,\n>(\n editor: E,\n options: ListOptions,\n getSiblingListOptions?: GetSiblingListOptions<N, E>\n) => {\n const { listRestart, listRestartPolite, listStyleType } = options;\n\n /**\n * True - One or more blocks were converted to lists or changed such that they\n * remain lists.\n *\n * False - One or more list blocks were unset.\n *\n * Null - No action was taken.\n */\n const setList = ((): boolean | null => {\n const { getSiblingListOptions: _getSiblingListOptions } =\n editor.getOptions(BaseListPlugin);\n\n if (editor.api.isCollapsed()) {\n const entry = editor.api.block<TElement>();\n\n if (!entry) return null;\n if (toggleListSet(editor, entry, options)) {\n return true;\n }\n if (toggleListUnset(editor, entry, { listStyleType })) {\n return false;\n }\n\n setListSiblingNodes(editor, entry as ElementEntryOf<E>, {\n getSiblingListOptions: {\n ..._getSiblingListOptions,\n ...getSiblingListOptions,\n } as GetSiblingListOptions<ElementOf<E>, E>,\n listStyleType,\n });\n\n return true;\n }\n if (editor.api.isExpanded()) {\n const match = getInjectMatch(\n editor,\n editor.getPlugin({ key: KEYS.list })\n );\n const _entries = editor.api.nodes<TElement>({ block: true, match });\n const entries = [..._entries];\n\n const eqListStyleType = areEqListStyleType(editor, entries, {\n listStyleType,\n });\n\n if (eqListStyleType) {\n editor.tf.withoutNormalizing(() => {\n entries.forEach((entry) => {\n const [node, path] = entry;\n\n const indent = node[KEYS.indent] as number;\n\n editor.tf.unsetNodes(KEYS.listType, { at: path });\n\n if (indent > 1) {\n editor.tf.setNodes({ [KEYS.indent]: indent - 1 }, { at: path });\n } else {\n editor.tf.unsetNodes([KEYS.indent, KEYS.listChecked], {\n at: path,\n });\n }\n // setListNode(editor, {\n // listStyleType,\n // indent: node[KEYS.indent],\n // at: path,\n // });\n });\n });\n\n return false;\n }\n\n setListNodes(editor, entries, { listStyleType });\n return true;\n }\n\n return null;\n })();\n\n // Apply listRestart or listRestartPolite if applicable\n const restartValue = listRestart || listRestartPolite;\n const isRestart = !!listRestart;\n\n if (setList && restartValue) {\n const atStart = editor.api.start(editor.selection!);\n const entry = getListAbove(editor, { at: atStart });\n if (!entry) return;\n\n const isFirst = !getPreviousList(editor, entry);\n\n /**\n * Only apply listRestartPolite if this is the first item and restartValue >\n * 1.\n */\n if (!isRestart && (!isFirst || restartValue <= 0)) return;\n\n // If restartValue is 1, only apply listRestart if this is not the first\n if (isRestart && restartValue === 1 && isFirst) return;\n\n const prop = isRestart ? KEYS.listRestart : KEYS.listRestartPolite;\n\n editor.tf.setNodes({ [prop]: restartValue }, { at: entry[1] });\n }\n};\n","import { type NodeEntry, type SlateEditor, KEYS } from 'platejs';\n\nexport const toggleListByPath = (\n editor: SlateEditor,\n [node, path]: NodeEntry,\n listStyleType: string\n) => {\n editor.tf.setNodes(\n {\n [KEYS.indent]: node.indent ?? 1,\n // TODO: normalized if not todo remove this property.\n [KEYS.listChecked]: false,\n [KEYS.listType]: listStyleType,\n type: KEYS.p,\n },\n {\n at: path,\n }\n );\n};\n\nexport const toggleListByPathUnSet = (\n editor: SlateEditor,\n [, path]: NodeEntry\n) =>\n editor.tf.unsetNodes([KEYS.listType, KEYS.indent, KEYS.listChecked], {\n at: path,\n });\n","import type { OverrideEditor, TElement } from 'platejs';\n\nimport type { BaseListConfig } from './BaseListPlugin';\n\nimport { normalizeListNotIndented } from './normalizers/normalizeListNotIndented';\nimport { normalizeListStart } from './normalizers/normalizeListStart';\n\nexport const withNormalizeList: OverrideEditor<BaseListConfig> = ({\n editor,\n getOptions,\n tf: { normalizeNode },\n}) => ({\n transforms: {\n normalizeNode([node, path]) {\n const normalized = editor.tf.withoutNormalizing(() => {\n if (normalizeListNotIndented(editor, [node, path])) return true;\n if (\n normalizeListStart(\n editor,\n [node as TElement, path],\n getOptions().getSiblingListOptions\n )\n )\n return true;\n });\n\n if (normalized) return;\n\n return normalizeNode([node, path]);\n },\n },\n});\n","import {\n type NodeEntry,\n type OverrideEditor,\n type Path,\n type TElement,\n type TNode,\n KEYS,\n PathApi,\n} from 'platejs';\n\nimport type { BaseListConfig } from './BaseListPlugin';\n\nimport { withInsertBreakList } from './normalizers';\nimport { normalizeListStart } from './normalizers/normalizeListStart';\nimport { getNextList } from './queries/getNextList';\nimport { getPreviousList } from './queries/getPreviousList';\nimport { outdentList } from './transforms';\nimport { ListStyleType } from './types';\nimport { withNormalizeList } from './withNormalizeList';\n\nexport const withList: OverrideEditor<BaseListConfig> = (ctx) => {\n const {\n editor,\n getOptions,\n tf: { apply, resetBlock },\n } = ctx;\n\n return {\n transforms: {\n resetBlock(options) {\n if (editor.api.block(options)?.[0]?.[KEYS.listType]) {\n outdentList(editor);\n return;\n }\n\n return resetBlock(options);\n },\n ...withNormalizeList(ctx).transforms,\n // ...withDeleteBackwardList(ctx).transforms,\n ...withInsertBreakList(ctx).transforms,\n apply(operation) {\n const { getSiblingListOptions } = getOptions();\n\n /**\n * If there is a previous indent list, the inserted indent list style\n * type should be the same. Only for lower-roman and upper-roman as it\n * overlaps with lower-alpha and upper-alpha.\n */\n if (operation.type === 'insert_node') {\n const listStyleType = operation.node[KEYS.listType];\n\n if (\n listStyleType &&\n ['lower-roman', 'upper-roman'].includes(\n listStyleType as ListStyleType\n )\n ) {\n const prevNodeEntry = getPreviousList<TElement>(\n editor,\n [operation.node as TElement, operation.path],\n {\n breakOnEqIndentNeqListStyleType: false,\n eqIndent: false,\n ...getSiblingListOptions,\n }\n );\n\n if (prevNodeEntry) {\n const prevListStyleType = prevNodeEntry[0][KEYS.listType];\n\n if (\n prevListStyleType === ListStyleType.LowerAlpha &&\n listStyleType === ListStyleType.LowerRoman\n ) {\n operation.node[KEYS.listType] = ListStyleType.LowerAlpha;\n } else if (\n prevListStyleType === ListStyleType.UpperAlpha &&\n listStyleType === ListStyleType.UpperRoman\n ) {\n operation.node[KEYS.listType] = ListStyleType.UpperAlpha;\n }\n }\n }\n }\n\n /**\n * When inserting a line break, remove listRestart and listRestartPolite\n * from the new list item.\n */\n if (\n operation.type === 'split_node' &&\n (operation.properties as any)[KEYS.listType]\n ) {\n delete (operation.properties as any)[KEYS.listRestart];\n delete (operation.properties as any)[KEYS.listRestartPolite];\n\n // (operation.properties as any)[KEYS.listRestart] = undefined;\n // (operation.properties as any)[KEYS.listRestartPolite] = undefined;\n }\n\n apply(operation);\n\n // Normalize all list items affected by the operation\n const affectedPaths: Path[] = [];\n\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'set_node': {\n affectedPaths.push(operation.path);\n break;\n }\n case 'merge_node': {\n affectedPaths.push(PathApi.previous(operation.path)!);\n break;\n }\n case 'move_node': {\n affectedPaths.push(operation.path, operation.newPath);\n break;\n }\n case 'split_node': {\n affectedPaths.push(operation.path, PathApi.next(operation.path));\n break;\n }\n }\n\n const isListItem = (node: TNode) => KEYS.listType in node;\n\n affectedPaths.forEach((affectedPath) => {\n let entry = editor.api.node(affectedPath);\n if (!entry) return;\n\n /**\n * Even if the affected node isn't a list item, the subsequent node\n * might be, in which case we want to normalize that node instead.\n */\n if (!isListItem(entry[0])) {\n entry = editor.api.node(PathApi.next(affectedPath));\n }\n\n // Normalize the entire list from the affected node onwards\n while (entry && isListItem(entry[0])) {\n const normalized = normalizeListStart<TElement>(\n editor,\n entry as NodeEntry<TElement>,\n getSiblingListOptions\n );\n\n /**\n * Break early since the subsequent list items will already have\n * been normalized by the `apply` that modified the current node.\n */\n if (normalized) break;\n\n entry = getNextList<TElement>(\n editor,\n entry as NodeEntry<TElement>,\n {\n ...getSiblingListOptions,\n breakOnEqIndentNeqListStyleType: false,\n breakOnLowerIndent: false,\n eqIndent: false,\n }\n );\n }\n });\n },\n },\n };\n};\n","import React from 'react';\n\nimport type { SlateRenderElementProps } from 'platejs/static';\n\nimport {\n type PluginConfig,\n type TElement,\n type TListElement,\n createTSlatePlugin,\n isDefined,\n isHtmlBlockElement,\n KEYS,\n postCleanHtml,\n traverseHtmlElements,\n} from 'platejs';\n\nimport type { GetSiblingListOptions } from './queries/getSiblingList';\nimport type { ListStyleType } from './types';\n\nimport { isOrderedList } from './queries';\nimport { withList } from './withList';\n\n/**\n * All list items are normalized to have a listStart prop indicating their\n * position in the list (unless listStart would be 1, in which case it is\n * omitted).\n *\n * ListRestart causes listStart to restart from the given number, regardless of\n * any previous listStart.\n *\n * ListRestartPolite acts like listRestart, except it only takes effect for list\n * items at the start of a list. When not at the start of a list, this prop is\n * ignored, although it is not removed and may take effect in the future.\n */\n\nexport type BaseListConfig = PluginConfig<\n 'list',\n {\n getSiblingListOptions?: GetSiblingListOptions<TElement>;\n /** Map html element to list style type. */\n getListStyleType?: (element: HTMLElement) => ListStyleType;\n }\n>;\n\nexport const BaseListPlugin = createTSlatePlugin<BaseListConfig>({\n key: KEYS.list,\n inject: {\n plugins: {\n [KEYS.html]: {\n parser: {\n transformData: ({ data }) => {\n const document = new DOMParser().parseFromString(data, 'text/html');\n const { body } = document;\n\n // First pass: flatten nested UL/OL that are inside LI elements\n // We need to move them to be siblings of their parent LI\n const lisWithNestedLists: {\n li: Element;\n nestedLists: Element[];\n }[] = [];\n\n traverseHtmlElements(body, (element) => {\n if (element.tagName === 'LI') {\n const nestedLists: Element[] = [];\n // Find nested UL/OL elements\n Array.from(element.children).forEach((child) => {\n if (child.tagName === 'UL' || child.tagName === 'OL') {\n nestedLists.push(child);\n }\n });\n\n if (nestedLists.length > 0) {\n lisWithNestedLists.push({ li: element, nestedLists });\n }\n }\n return true;\n });\n\n // Move nested lists to be after their parent LI\n lisWithNestedLists.forEach(({ li, nestedLists }) => {\n nestedLists.forEach((nestedList) => {\n // Remove the nested list from inside the LI\n nestedList.remove();\n // Insert it after the LI in the parent container\n if (li.parentNode) {\n li.parentNode.insertBefore(nestedList, li.nextSibling);\n }\n });\n });\n\n // Second pass: process LI elements (now without nested lists inside them)\n traverseHtmlElements(body, (element) => {\n if (element.tagName === 'LI') {\n const htmlElement = element as HTMLElement;\n const { childNodes } = element;\n\n // Process li children and flatten block elements\n const liChildren: Node[] = [];\n\n childNodes.forEach((child) => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const childElement = child as Element;\n if (isHtmlBlockElement(childElement)) {\n // Replace block elements (e.g. p) with their children\n liChildren.push(...childElement.childNodes);\n return;\n }\n }\n liChildren.push(child);\n });\n\n element.replaceChildren(...liChildren);\n\n // Check for aria-level first (Google Docs uses this)\n const ariaLevel = element.getAttribute('aria-level');\n\n if (ariaLevel) {\n // aria-level takes precedence\n htmlElement.dataset.indent = ariaLevel;\n } else {\n // Calculate indent level based on nested UL/OL parents\n let indent = 0;\n let parent = element.parentElement;\n while (parent && parent !== body) {\n if (parent.tagName === 'UL' || parent.tagName === 'OL') {\n indent++;\n }\n parent = parent.parentElement;\n }\n\n // Set indent level as data attribute\n if (indent > 0) {\n htmlElement.dataset.indent = String(indent);\n }\n }\n\n // Set list style type from inline style or parent list type\n const listStyleType = htmlElement.style.listStyleType;\n if (listStyleType) {\n htmlElement.dataset.listStyleType = listStyleType;\n } else {\n // Fallback to parent list type\n const listParent = element.closest('ul, ol');\n if (listParent) {\n const parentListStyleType = (listParent as HTMLElement)\n .style.listStyleType;\n if (parentListStyleType) {\n htmlElement.dataset.listStyleType = parentListStyleType;\n } else if (listParent.tagName === 'UL') {\n htmlElement.dataset.listStyleType = 'disc';\n } else if (listParent.tagName === 'OL') {\n htmlElement.dataset.listStyleType = 'decimal';\n }\n }\n }\n\n return false;\n }\n\n return true;\n });\n\n return postCleanHtml(body.innerHTML);\n },\n },\n },\n },\n targetPlugins: [KEYS.p],\n },\n options: {\n getListStyleType: (element) => element.style.listStyleType as ListStyleType,\n },\n parsers: {\n html: {\n deserializer: {\n isElement: true,\n rules: [\n {\n validNodeName: 'LI',\n },\n ],\n parse: ({ editor, element, getOptions }) => {\n // Get indent from data-indent or aria-level (gdoc)\n const dataIndent = element.dataset.indent;\n const ariaLevel = element.getAttribute('aria-level');\n const indent = dataIndent ? Number(dataIndent) : Number(ariaLevel);\n\n // Get list style type from data attribute or use default\n const dataListStyleType = element.dataset.listStyleType;\n const listStyleType =\n dataListStyleType || getOptions().getListStyleType?.(element);\n\n return {\n indent: indent || undefined,\n listStyleType: listStyleType || undefined,\n type: editor.getType(KEYS.p),\n };\n },\n },\n },\n },\n render: {\n belowNodes: (props) => {\n if (!props.element.listStyleType) return;\n\n return (props) => <List {...(props as SlateRenderElementProps)} />;\n },\n },\n rules: {\n break: {\n empty: 'reset',\n splitReset: false,\n },\n delete: {\n start: 'reset',\n },\n merge: {\n removeEmpty: false,\n },\n match: ({ node }) => isDefined(node[KEYS.listType]),\n },\n}).overrideEditor(withList);\n\nfunction List(props: SlateRenderElementProps) {\n const { listStart, listStyleType } = props.element as TListElement;\n const List = isOrderedList(props.element) ? 'ol' : 'ul';\n\n return (\n <List\n style={{ listStyleType, margin: 0, padding: 0, position: 'relative' }}\n start={listStart}\n >\n <li>{props.children}</li>\n </List>\n );\n}\n"],"mappings":";;;;;;AAAA,MAAaA,gBAAgB;CAC3BC,aAAa;CACbC,UAAU;CACVC,SAAS;CACTC,WAAW;CACXC,QAAQ;CACRC,YAAY;CACZC,kBAAkB;CAClBC,iBAAiB;CACjBC,SAAS;CACTC,oBAAoB;CACpBC,YAAY;CACZC,MAAM;CACNC,kBAAkB;CAClBC,gBAAgB;CAChBC,iBAAiB;CACjBC,UAAU;CACVC,UAAU;CACVC,UAAU;CACVC,QAAQ;CACRC,UAAU;CACVC,eAAe;CACfC,SAAS;CACTC,SAAS;CACTC,gBAAgB;CAChBC,kBAAkB;CAClBC,SAAS;CACTC,UAAU;CACVC,eAAe;CACfC,OAAO;CACPC,oBAAoB;CACpBC,mBAAmB;CACnBC,qBAAqB;CACrBC,KAAK;CACLC,YAAY;CACZC,eAAe;CACfC,YAAY;CACZC,YAAY;CACZC,YAAY;CACZC,WAAW;CACXC,WAAW;CACXC,SAAS;CACTC,MAAM;CACNC,OAAO;CACPC,SAAS;CACTC,mBAAmB;CACnBC,qBAAqB;CACrBC,QAAQ;CACRC,OAAO;CACPC,QAAQ;CACRC,MAAM;CACNC,SAAS;CACTC,mBAAmB;CACnBC,qBAAqB;CACrBC,YAAY;CACZC,eAAe;CACfC,YAAY;CACZC,YAAY;CACb;AAID,MAAaE,oBAAoB;CAC/B3D,cAAcY;CACdZ,cAAcK;CACdL,cAAc+C;CACd/C,cAAcc;CACdd,cAAca;CACf;;;;AC9DD,MAAamD,sBACXC,SACAC,SACA,EACEC,gBAAgBJ,cAAcK,WAI7B;CACH,IAAIC,kBAAkB;AAEtB,MAAK,MAAMC,SAASJ,SAAS;EAC3B,MAAM,CAACK,SAASD;AAEhB,MAAIH,kBAAkBL,KAAKU,UAAU;AACnC,OAAI,CAACC,OAAOC,OAAOH,OAAOT,KAAKa,YAAY,EAAE;AAC3CN,sBAAkB;AAElB;;AAGF;;AAEF,MAAI,CAACE,MAAMT,KAAKc,aAAaL,MAAMT,KAAKc,cAAcT,eAAe;AACnEE,qBAAkB;AAElB;;;AAIJ,QAAOA;;;;;;;;;AC5BT,MAAagB,mBAIXE,QACAC,UACmB;CACnB,MAAME,WAA2B,EAAE;CACnC,MAAM,CAACC,MAAMC,QAAQJ;CAErB,MAAMK,eAAgBF,KAAaT,KAAKY;AAGxC,KAAI,CAACb,UAAUY,aAAa,IAAI,CAACZ,UAAWU,KAAaT,KAAKa,UAAU,CACtE,QAAOL;CAGT,IAAIM,cAAcJ;AAElB,QAAO,MAAM;EACX,MAAMK,WAAWb,QAAQc,KAAKF,YAAY;AAC1C,MAAI,CAACC,SAAU;EAEf,MAAME,WAAWhB,QAAQiB,IAAOb,QAAQU,SAAS;AACjD,MAAI,CAACE,SAAU;EAEf,MAAME,aAAcF,SAAiBjB,KAAKY;AAG1C,MACE,CAACb,UAAUoB,WAAW,IACtB,CAACpB,UAAWkB,SAAiBjB,KAAKa,UAAU,CAE5C;AAGF,MAAIM,cAAcR,aAChB;AAIFH,WAASY,KAAK,CAACH,UAAUF,SAAS,CAAC;AACnCD,gBAAcC;;AAGhB,QAAOP;;;;;;;;;;;;;ACvCT,MAAaoB,+BAIXE,QACAC,YACmB;CACnB,MAAME,kBAAkC,EAAE;CAC1C,MAAMC,+BAAe,IAAIC,KAAa;AAEtCJ,SAAQK,SAASC,UAAU;EACzB,MAAM,CAACC,QAAQD;AAGf,MAAIH,aAAaK,IAAID,KAAKE,GAAa,CAAE;AAEzCP,kBAAgBQ,KAAKJ,MAAsB;AAC3CH,eAAaQ,IAAIJ,KAAKE,GAAa;AAOnC,MAHEf,UAAWa,KAAaZ,KAAKkB,UAAU,IACvCnB,UAAWa,KAAaZ,KAAKmB,QAAQ,CAOrCC,CAHiBnB,gBAAsBG,QAAQO,MAAM,CAG5CD,SAASW,eAAe;AAC/B,OAAI,CAACb,aAAaK,IAAIQ,WAAW,GAAGP,GAAa,EAAE;AACjDP,oBAAgBQ,KAAKM,WAAW;AAChCb,iBAAaQ,IAAIK,WAAW,GAAGP,GAAa;;IAE9C;GAEJ;AAEF,QAAOP;;;;;AC3CT,MAAaqB,gBACXE,QACAC,YAEAD,OAAOI,IAAIC,MAAM;CACf,GAAGJ;CACHK,QAAQC,SAASX,UAAUW,KAAKV,KAAKW,UAAS;CAC/C,CAAC;;;;;;;;ACmBJ,MAAauB,kBAIXC,SACA,CAACC,MAAMC,OACP,EACEf,kCAAkC,MAClCC,qBAAqB,OACrBC,qBAAqB,MACrBC,YACAO,WAAW,MACXJ,cACAG,kBACAE,YAE2B;AAC7B,KAAI,CAACF,oBAAoB,CAACH,aAAc;CAExC,MAAMU,kBAAkBV,gBAAgBG;CAExC,IAAIQ,YAAYD,gBAAgB,CAACF,MAAMC,KAAK,CAAC;AAE7C,QAAO,MAAM;AACX,MAAI,CAACE,UAAW;EAEhB,MAAM,CAACC,UAAUC,YAAYF;EAE7B,MAAMG,SAAUN,KAAajB,KAAKuB;EAClC,MAAMC,aAAcH,SAAiBrB,KAAKuB;AAE1C,MAAIjB,aAAae,UAAUJ,KAAK,CAAE;AAClC,MAAI,CAAClB,UAAUyB,WAAW,CAAE;AAC5B,MAAIpB,oBAAoB;AACtB,OAAIQ,oBAAqBK,KAAajB,KAAKyB,aACzC;AAEF,OAAIhB,gBAAiBY,SAAiBrB,KAAKyB,aACzC;;AAGJ,MAAIpB,sBAAsBmB,aAAaD,OAAQ;AAC/C,MACEpB,mCACAqB,eAAeD,UACdF,SAAiBrB,KAAK0B,cAAeT,KAAajB,KAAK0B,UAExD;EAEF,IAAIC,QAAQ,CAACb,SAASA,MAAMO,UAAUJ,KAAK;AAE3C,MAAIU,OAAO;AACTA,WAAQ,CAACd,YAAYW,eAAeD;AAEpC,OAAII,MAAO,QAAO,CAACN,UAAUC,SAAS;;AAGxCF,cAAYD,gBAAgBC,UAAU;;;;;;;AChF1C,MAAagB,eACXE,QACAC,OACAC,YAEAL,eAAeG,QAAQC,OAAO;CAC5BI,eAAe,GAAGC,cAAc;EAC9B,MAAMC,WAAWZ,QAAQa,KAAKF,SAAS;EACvC,MAAMG,WAAWf,QAAQgB,IAAOV,QAAQO,SAAS;AAEjD,MAAI,CAACE,SAAU;AAEf,SAAO,CAACA,UAAUF,SAAS;;CAE7B,GAAGL;CACHS,kBAAkBC;CACnB,CAAC;;;;;AChBJ,MAAaS,mBAIXE,QACAC,OACAC,YAEAL,eAAeG,QAAQC,OAAO;CAC5BI,mBAAmB,GAAGC,cAAc;EAClC,MAAMC,WAAWZ,QAAQa,SAASF,SAAS;AAE3C,MAAI,CAACC,SAAU;EAEf,MAAME,WAAWf,QAAQgB,IAAOV,QAAQO,SAAS;AAEjD,MAAI,CAACE,SAAU;AAEf,SAAO,CAACA,UAAUF,SAAS;;CAE7B,GAAGL;CACHS,cAAcC;CACf,CAAC;;;;ACVJ,MAAaiB,mBAIXC,QACAC,OACA,EACEL,UAAU,MACVC,OAAO,MACPC,WAAW,MACX,GAAGI,YAC6B,EAAE,KACjC;CACH,MAAMC,WAAwB,EAAE;CAEhC,MAAMC,OAAOH,MAAM;AAEnB,KAAI,CAACG,KAAKhB,KAAKiB,aAAa,CAACC,OAAOC,OAAOH,MAAMhB,KAAKoB,YAAY,CAChE,QAAOL;CAGT,IAAIM,YAAYR;AAEhB,KAAIH,SACF,QAAO,MAAM;EACX,MAAMY,YAAYnB,gBAAsBS,QAAQS,WAAWP,QAAQ;AAEnE,MAAI,CAACQ,UAAW;AAEhBP,WAASQ,KAAKD,UAAU;AAExBD,cAAYC;;AAGhB,KAAId,QACFO,UAASQ,KAAKV,MAAM;AAEtB,KAAIJ,MAAM;AACRY,cAAYR;AAEZ,SAAO,MAAM;GACX,MAAMW,YAAYtB,YAAYU,QAAQS,WAAWP,QAAQ;AAEzD,OAAI,CAACU,UAAW;AAEhBT,YAASQ,KAAKC,UAAU;AAExBH,eAAYG;;;AAIhB,QAAOT;;;;;;;;;AC/DT,MAAakB,2BACXC,QACA,EACEE,OACAC,QACA,GAAGC,cAKF;CAGH,MAAME,WAAWR,gBAAgBE,QAFS,CAAC;EAAE,GAAGE,MAAM;EAAIC;EAAQ,EAAED,MAAM,GAAG,EAEf;EAC5DK,iCAAiC;EACjCC,SAAS;EACTC,UAAU;EACV,GAAGL;EACJ,CAAC;AAEF,QACEE,SAASI,SAAS,IACdJ,SAAS,GAAG,GAAGX,KAAKgB,YACpBT,MAAM,GAAGP,KAAKgB;;;;;AC/BtB,SAAgBG,cAAcC,SAAmB;AAC/C,QACE,CAAC,CAACA,QAAQC,iBACV,CAACH,kBAAkBI,SAASF,QAAQC,cAAqB;;;;;ACH7D,MAAaI,YAAYC,QAAqBC,SAC5C,CAAC,CAACD,OAAOE,aACTF,OAAOG,IAAIC,KAAK,EACdC,QAAQC,MAAW;AAGjB,KAFsBE,OAAOC,OAAOH,GAAGR,KAAKY,YAAY,CAGtD,QAAO;CAGT,MAAMC,OAAOL,EAAER,KAAKc;AAEpB,QAAOC,MAAMC,QAAQb,KAAK,GAAGA,KAAKc,SAASJ,KAAK,GAAGA,SAASV;GAE/D,CAAC;;;;ACdJ,MAAaiB,gBAAgBC,WAC3BA,OAAOC,IAAIC,KAAK;CACdC,IAAIH,OAAOI;CACXC,QAAQC,MAAM;EACZ,MAAMC,OAAOD,EAAER,KAAKU;EACpB,MAAMC,gBAAgBC,OAAOC,OAAOL,GAAGR,KAAKc,YAAY;AAExD,SAAON,EAAEO,SAAS,OAAOJ,iBAAiBF,SAAST,KAAKgB;;CAE3D,CAAC;;;;;ACVJ,MAAaK,4BACXC,QACA,CAACC,MAAMC,UACJ;AACH,KACE,CAACL,UAAUI,KAAKH,KAAKK,QAAQ,KAC5BF,KAAKH,KAAKM,aAAaH,KAAKH,KAAKO,aAClC;AACAL,SAAOM,GAAGC,WAAW,CAACT,KAAKM,UAAUN,KAAKO,UAAU,EAAE,EACpDG,IAAIN,MACL,CAAC;AAEF,SAAO;;;;;;ACFX,MAAae,4BACXC,OACAC,cACW;CACX,MAAM,CAACC,QAAQF;CACf,MAAM,CAACG,YAAYF,aAAa,CAAC,KAAK;CAEtC,MAAMG,UAAWF,KAAKN,KAAKS,gBAAkC;CAC7D,MAAMC,gBAAiBJ,KAAKN,KAAKW,sBAAwC;AAEzE,KAAIH,QACF,QAAOA;AAGT,KAAIE,iBAAiB,CAACH,SACpB,QAAOG;AAGT,KAAIH,SAEF,SADuBA,SAASP,KAAKa,cAAyB,KACvC;AAGzB,QAAO;;AAGT,MAAaC,sBAIXE,QACAZ,OACAa,YAEAD,OAAOI,GAAGC,yBAAyB;CACjC,MAAM,CAACf,MAAMgB,QAAQlB;CACrB,MAAMmB,gBAAiBjB,KAAaN,KAAKwB;CACzC,MAAMX,YAAYP,KAAKN,KAAKa;AAE5B,KAAI,CAACU,cAAe;CAGpB,MAAME,oBAAoBtB,yBAAyBC,OADjCF,gBAAgBc,QAAQZ,OAAOa,QAAQ,CACW;AAEpE,KAAIlB,UAAUc,UAAU,IAAIY,sBAAsB,GAAG;AACnDT,SAAOI,GAAGM,WAAW1B,KAAKa,WAAW,EAAEc,IAAIL,MAAM,CAAC;AAElD,SAAO;;AAGT,KAAIT,cAAcY,qBAAqBA,oBAAoB,GAAG;AAC5DT,SAAOI,GAAGQ,SAAS,GAAG5B,KAAKa,YAAYY,mBAAmB,EAAE,EAAEE,IAAIL,MAAM,CAAC;AAEzE,SAAO;;AAGT,QAAO;EACP;;;;AClEJ,MAAaY,uBAAuD,EAClEC,QACAC,IAAI,EAAEC,qBACD,EACLC,YAAY,EACVD,cAAc;CACZ,MAAME,YAAYJ,OAAOK,IAAIC,OAAO;AAEpC,KAAI,CAACF,UAAW,QAAOF,aAAa;CAEpC,MAAM,CAACK,MAAMC,QAAQJ;AAErB,KACE,CAACR,UAAUW,KAAKV,KAAKY,UAAU,IAC/BF,KAAKV,KAAKY,cAAcZ,KAAKa,YAC7BV,OAAOK,IAAIM,YAAY,IACvB,CAACX,OAAOK,IAAIO,MAAMZ,OAAOa,WAAWC,OAAON,KAAK,CAEhD,QAAON,aAAa;AAGtBF,QAAOC,GAAGc,yBAAyB;AACjCb,eAAa;EAEb,MAAMc,WAAWhB,OAAOK,IAAIC,OAAiB;AAE7C,MAAIU,SACFhB,QAAOC,GAAGgB,SACR,EACEC,SAAS,OACV,EACD,EAAEC,IAAIH,SAAS,IACjB,CAAC;GAEH;GAEN,EACD;;;;;AC1BD,MAAac,cACXC,QACA,EAAEF,gBAAgBL,cAAcQ,MAAM,GAAGC,YAAyB,EAAE,KACjE;AACHX,WAAUS,QAAQ;EAChBG,QAAQ;EACRC,sBAAsB,GACnBZ,KAAKa,WAAWP,eAClB;EACD,GAAGI;EACJ,CAAC;;AAGJ,MAAaI,cACXN,QACA,EAAEF,gBAAgBL,cAAcQ,MAAM,GAAGC,YAAyB,EAAE,KACjE;AACHX,WAAUS,QAAQ;EAChBG,QAAQ;EACRC,sBAAsB;IACnBZ,KAAKe,cAAc;IACnBf,KAAKa,WAAWP;GAClB;EACD,GAAGI;EACJ,CAAC;;;;;;AC/BJ,MAAaU,eAAeC,QAAqBC,UAAuB,EAAE,KAAK;AAC7EL,WAAUI,QAAQ;EAChBE,QAAQ;EACRC,iBAAiB,CAACN,KAAKO,UAAUP,KAAKQ,YAAY;EAClD,GAAGJ;EACJ,CAAC;;;;;ACPJ,MAAaS,eACXC,QACA,EACEC,IACAC,SAAS,GACTC,gBAAgBL,cAAcM,WAM7B;CACH,MAAMC,YAAYH,UAAUA,SAAS;AAErCF,QAAOM,GAAGC,SACR;GACGV,KAAKK,SAASG;GACdR,KAAKW,WAAWL;EAClB,EACD,EAAEF,IACJ,CAAC;;AAGH,MAAaQ,qBACXT,QACA,EACEC,IACAC,SAAS,GACTC,gBAAgBN,KAAKa,eAMpB;CACH,MAAML,YAAYH,UAAUA,SAAS;AAErCF,QAAOM,GAAGC,SACR;GACGV,KAAKK,SAASG;GACdR,KAAKc,cAAc;GACnBd,KAAKW,WAAWL;EAClB,EACD,EAAEF,IACJ,CAAC;;;;;;;;;ACvCH,MAAaiB,gBACXC,QACAC,SACA,EACEC,gBAAgBN,cAAcO,WAI7B;AACHH,QAAOI,GAAGC,yBAAyB;AACjCJ,UAAQK,SAASC,UAAU;GACzB,MAAM,CAACC,MAAMC,QAAQF;GAErB,IAAIG,SAAUF,KAAKb,KAAKe,WAAsB;AAC9CA,YACEF,KAAKb,KAAKgB,aAAaC,OAAOC,OAAOL,MAAMb,KAAKmB,YAAY,GACxDJ,SACAA,SAAS;AAEf,OAAIR,kBAAkB,QAAQ;AAC5BF,WAAOI,GAAGW,WAAWpB,KAAKgB,UAAU,EAAEK,IAAIP,MAAM,CAAC;AACjDZ,sBAAkBG,QAAQ;KACxBgB,IAAIP;KACJC;KACAR;KACD,CAAC;AAEF;;AAGFF,UAAOI,GAAGW,WAAWpB,KAAKmB,aAAa,EAAEE,IAAIP,MAAM,CAAC;AACpDX,eAAYE,QAAQ;IAClBgB,IAAIP;IACJC;IACAR;IACD,CAAC;IACF;GACF;;;;;;ACrCJ,MAAawB,uBAIXE,QACAC,OACA,EACEC,uBACAC,gBAAgBR,cAAcS,WAK7B;AACHJ,QAAOM,GAAGC,yBAAyB;AAGjCC,EAFiBd,gBAAgBM,QAAQC,OAAOC,sBAAsB,CAE7DO,SAAS,CAACC,MAAMC,UAAU;AACjC,OAAIR,kBAAkBX,KAAKoB,UAAU;AACnCZ,WAAOM,GAAGO,WAAWrB,KAAKsB,UAAU,EAAEC,IAAIJ,MAAM,CAAC;AACjDf,sBAAkBI,QAAQ;KACxBe,IAAIJ;KACJK,QAAQN,KAAKlB,KAAKwB;KAClBb;KACD,CAAC;UACG;AACLH,WAAOM,GAAGO,WAAWrB,KAAKyB,aAAa,EAAEF,IAAIJ,MAAM,CAAC;AACpDd,gBAAYG,QAAQ;KAClBe,IAAIJ;KACJK,QAAQN,KAAKlB,KAAKwB;KAClBb;KACD,CAAC;;IAEJ;GACF;;;;;;ACrCJ,MAAasB,iBACXC,QACA,CAACC,MAAMC,QACP,EAAEC,gBAAgBR,cAAcS,MAAM,GAAGC,cACtC;AACH,KAAIC,OAAOC,OAAON,MAAMP,KAAKc,YAAY,IAAIP,KAAKP,KAAKe,UAAW;AAClE,KAAIN,kBAAkB,OACpBL,YAAWE,QAAe;EACxBG;EACA,GAAGE;EACJ,CAAC;KAEFR,YAAWG,QAAe;EACxBG;EACA,GAAGE;EACJ,CAAC;AAGJ,QAAO;;;;;;AClBT,MAAaU,mBACXC,QACA,CAACC,MAAMC,OACP,EACEC,gBAAgBN,cAAcO,WAI7B;AACH,KACED,kBAAkBP,KAAKS,YACvBC,OAAOC,OAAON,MAAML,KAAKY,YAAY,EACrC;AACAR,SAAOS,GAAGC,WAAWd,KAAKY,aAAa,EAAEG,IAAIT,MAAM,CAAC;AACpDJ,cAAYE,QAAe,EAAEG,eAAe,CAAC;AAE7C,SAAO;;AAET,KAAIA,kBAAkBF,KAAKL,KAAKgB,WAAW;AACzCZ,SAAOS,GAAGC,WAAW,CAACd,KAAKgB,SAAS,EAAE,EACpCD,IAAIT,MACL,CAAC;AAEFJ,cAAYE,QAAe,EAAEG,eAAe,CAAC;AAE7C,SAAO;;;;;;;ACdX,MAAa0B,cAIXE,QACAC,SACAC,0BACG;CACH,MAAM,EAAEE,aAAaC,mBAAmBC,kBAAkBL;;;;;;;;;CAU1D,MAAMM,iBAAiC;EACrC,MAAM,EAAEL,uBAAuBM,2BAC7BR,OAAOS,WAAWpB,eAAe;AAEnC,MAAIW,OAAOU,IAAIC,aAAa,EAAE;GAC5B,MAAMC,QAAQZ,OAAOU,IAAIG,OAAiB;AAE1C,OAAI,CAACD,MAAO,QAAO;AACnB,OAAIhB,cAAcI,QAAQY,OAAOX,QAAQ,CACvC,QAAO;AAET,OAAIJ,gBAAgBG,QAAQY,OAAO,EAAEN,eAAe,CAAC,CACnD,QAAO;AAGTX,uBAAoBK,QAAQY,OAA4B;IACtDV,uBAAuB;KACrB,GAAGM;KACH,GAAGN;KACJ;IACDI;IACD,CAAC;AAEF,UAAO;;AAET,MAAIN,OAAOU,IAAII,YAAY,EAAE;GAC3B,MAAMC,QAAQ7B,eACZc,QACAA,OAAOgB,UAAU,EAAEC,KAAK9B,KAAK+B,MAAM,CACrC,CAAC;GAED,MAAMG,UAAU,CAAC,GADArB,OAAOU,IAAIU,MAAgB;IAAEP,OAAO;IAAME;IAAO,CAAC,CACtC;AAM7B,OAJwBtB,mBAAmBO,QAAQqB,SAAS,EAC1Df,eACD,CAAC,EAEmB;AACnBN,WAAOuB,GAAGC,yBAAyB;AACjCH,aAAQI,SAASb,UAAU;MACzB,MAAM,CAACc,MAAMC,QAAQf;MAErB,MAAMgB,SAASF,KAAKvC,KAAKyC;AAEzB5B,aAAOuB,GAAGM,WAAW1C,KAAK2C,UAAU,EAAEC,IAAIJ,MAAM,CAAC;AAEjD,UAAIC,SAAS,EACX5B,QAAOuB,GAAGS,SAAS,GAAG7C,KAAKyC,SAASA,SAAS,GAAG,EAAE,EAAEG,IAAIJ,MAAM,CAAC;UAE/D3B,QAAOuB,GAAGM,WAAW,CAAC1C,KAAKyC,QAAQzC,KAAK8C,YAAY,EAAE,EACpDF,IAAIJ,MACL,CAAC;OAOJ;MACF;AAEF,WAAO;;AAGTjC,gBAAaM,QAAQqB,SAAS,EAAEf,eAAe,CAAC;AAChD,UAAO;;AAGT,SAAO;KACL;CAGJ,MAAM4B,eAAe9B,eAAeC;CACpC,MAAM8B,YAAY,CAAC,CAAC/B;AAEpB,KAAIG,WAAW2B,cAAc;EAE3B,MAAMtB,QAAQrB,aAAaS,QAAQ,EAAE+B,IADrB/B,OAAOU,IAAI2B,MAAMrC,OAAOsC,UAAW,EACD,CAAC;AACnD,MAAI,CAAC1B,MAAO;EAEZ,MAAM2B,UAAU,CAAC/C,gBAAgBQ,QAAQY,MAAM;;;;;AAM/C,MAAI,CAACuB,cAAc,CAACI,WAAWL,gBAAgB,GAAI;AAGnD,MAAIC,aAAaD,iBAAiB,KAAKK,QAAS;EAEhD,MAAMC,OAAOL,YAAYhD,KAAKiB,cAAcjB,KAAKkB;AAEjDL,SAAOuB,GAAGS,SAAS,GAAGQ,OAAON,cAAc,EAAE,EAAEH,IAAInB,MAAM,IAAI,CAAC;;;;;;AChIlE,MAAagC,oBACXC,QACA,CAACC,MAAMC,OACPC,kBACG;AACHH,QAAOI,GAAGC,SACR;GACGP,KAAKQ,SAASL,KAAKK,UAAU;GAE7BR,KAAKS,cAAc;GACnBT,KAAKU,WAAWL;EACjBM,MAAMX,KAAKY;EACZ,EACD,EACEC,IAAIT,MAER,CAAC;;AAGH,MAAaU,yBACXZ,QACA,GAAGE,UAEHF,OAAOI,GAAGS,WAAW;CAACf,KAAKU;CAAUV,KAAKQ;CAAQR,KAAKS;CAAY,EAAE,EACnEI,IAAIT,MACL,CAAC;;;;ACpBJ,MAAaiB,qBAAqD,EAChEC,QACAC,YACAC,IAAI,EAAEC,uBACD,EACLC,YAAY,EACVD,cAAc,CAACE,MAAMC,OAAO;AAa1B,KAZmBN,OAAOE,GAAGM,yBAAyB;AACpD,MAAIX,yBAAyBG,QAAQ,CAACK,MAAMC,KAAK,CAAC,CAAE,QAAO;AAC3D,MACER,mBACEE,QACA,CAACK,MAAkBC,KAAK,EACxBL,YAAY,CAACQ,sBACd,CAED,QAAO;GACT,CAEc;AAEhB,QAAON,cAAc,CAACE,MAAMC,KAAK,CAAC;GAEtC,EACD;;;;ACXD,MAAamB,YAA4CC,QAAQ;CAC/D,MAAM,EACJC,QACAC,YACAC,IAAI,EAAEC,OAAOC,iBACXL;AAEJ,QAAO,EACLM,YAAY;EACVD,WAAWE,SAAS;AAClB,OAAIN,OAAOO,IAAIC,MAAMF,QAAQ,GAAG,KAAKlB,KAAKqB,WAAW;AACnDd,gBAAYK,OAAO;AACnB;;AAGF,UAAOI,WAAWE,QAAQ;;EAE5B,GAAGT,kBAAkBE,IAAI,CAACM;EAE1B,GAAGd,oBAAoBQ,IAAI,CAACM;EAC5BF,MAAMO,WAAW;GACf,MAAM,EAAEC,0BAA0BV,YAAY;;;;;;AAO9C,OAAIS,UAAUE,SAAS,eAAe;IACpC,MAAMC,gBAAgBH,UAAUI,KAAK1B,KAAKqB;AAE1C,QACEI,iBACA,CAAC,eAAe,cAAc,CAACE,SAC7BF,cACD,EACD;KACA,MAAMG,gBAAgBtB,gBACpBM,QACA,CAACU,UAAUI,MAAkBJ,UAAUO,KAAK,EAC5C;MACEC,iCAAiC;MACjCC,UAAU;MACV,GAAGR;MAEP,CAAC;AAED,SAAIK,eAAe;MACjB,MAAMI,oBAAoBJ,cAAc,GAAG5B,KAAKqB;AAEhD,UACEW,sBAAsBxB,cAAcyB,cACpCR,kBAAkBjB,cAAc0B,WAEhCZ,WAAUI,KAAK1B,KAAKqB,YAAYb,cAAcyB;eAE9CD,sBAAsBxB,cAAc2B,cACpCV,kBAAkBjB,cAAc4B,WAEhCd,WAAUI,KAAK1B,KAAKqB,YAAYb,cAAc2B;;;;;;;;AAUtD,OACEb,UAAUE,SAAS,gBAClBF,UAAUe,WAAmBrC,KAAKqB,WACnC;AACA,WAAQC,UAAUe,WAAmBrC,KAAKsC;AAC1C,WAAQhB,UAAUe,WAAmBrC,KAAKuC;;AAM5CxB,SAAMO,UAAU;GAGhB,MAAMkB,gBAAwB,EAAE;AAEhC,WAAQlB,UAAUE,MAAlB;IACE,KAAK;IACL,KAAK;IACL,KAAK;AACHgB,mBAAcC,KAAKnB,UAAUO,KAAK;AAClC;IAEF,KAAK;AACHW,mBAAcC,KAAKxC,QAAQyC,SAASpB,UAAUO,KAAK,CAAE;AACrD;IAEF,KAAK;AACHW,mBAAcC,KAAKnB,UAAUO,MAAMP,UAAUqB,QAAQ;AACrD;IAEF,KAAK;AACHH,mBAAcC,KAAKnB,UAAUO,MAAM5B,QAAQ2C,KAAKtB,UAAUO,KAAK,CAAC;AAChE;;GAIJ,MAAMgB,cAAcnB,SAAgB1B,KAAKqB,YAAYK;AAErDc,iBAAcM,SAASC,iBAAiB;IACtC,IAAIC,QAAQpC,OAAOO,IAAIO,KAAKqB,aAAa;AACzC,QAAI,CAACC,MAAO;;;;;AAMZ,QAAI,CAACH,WAAWG,MAAM,GAAG,CACvBA,SAAQpC,OAAOO,IAAIO,KAAKzB,QAAQ2C,KAAKG,aAAa,CAAC;AAIrD,WAAOC,SAASH,WAAWG,MAAM,GAAG,EAAE;;;;;AAWpC,SAVmB5C,mBACjBQ,QACAoC,OACAzB,sBACD,CAMe;AAEhByB,aAAQ3C,YACNO,QACAoC,OACA;MACE,GAAGzB;MACHO,iCAAiC;MACjCoB,oBAAoB;MACpBnB,UAAU;MAEd,CAAC;;KAEH;;EAEN,EACD;;;;;AC5HH,MAAawC,iBAAiBf,mBAAmC;CAC/DgB,KAAKb,KAAKc;CACVC,QAAQ;EACNC,SAAS,GACNhB,KAAKiB,OAAO,EACXC,QAAQ,EACNC,gBAAgB,EAAEC,WAAW;GAE3B,MAAM,EAAEI,SADS,IAAIF,WAAW,CAACC,gBAAgBH,MAAM,YAAY;GAKnE,MAAMK,qBAGA,EAAE;AAERvB,wBAAqBsB,OAAOd,YAAY;AACtC,QAAIA,QAAQmB,YAAY,MAAM;KAC5B,MAAMD,cAAyB,EAAE;AAEjCE,WAAMC,KAAKrB,QAAQsB,SAAS,CAACC,SAASC,UAAU;AAC9C,UAAIA,MAAML,YAAY,QAAQK,MAAML,YAAY,KAC9CD,aAAYO,KAAKD,MAAM;OAEzB;AAEF,SAAIN,YAAYQ,SAAS,EACvBX,oBAAmBU,KAAK;MAAET,IAAIhB;MAASkB;MAAa,CAAC;;AAGzD,WAAO;KACP;AAGFH,sBAAmBQ,SAAS,EAAEP,IAAIE,kBAAkB;AAClDA,gBAAYK,SAASI,eAAe;AAElCA,gBAAWC,QAAQ;AAEnB,SAAIZ,GAAGa,WACLb,IAAGa,WAAWC,aAAaH,YAAYX,GAAGe,YAAY;MAExD;KACF;AAGFvC,wBAAqBsB,OAAOd,YAAY;AACtC,QAAIA,QAAQmB,YAAY,MAAM;KAC5B,MAAMa,cAAchC;KACpB,MAAM,EAAEiC,eAAejC;KAGvB,MAAMkC,aAAqB,EAAE;AAE7BD,gBAAWV,SAASC,UAAU;AAC5B,UAAIA,MAAMY,aAAaD,KAAKE,cAAc;OACxC,MAAMC,eAAed;AACrB,WAAInC,mBAAmBiD,aAAa,EAAE;AAEpCJ,mBAAWT,KAAK,GAAGa,aAAaL,WAAW;AAC3C;;;AAGJC,iBAAWT,KAAKD,MAAM;OACtB;AAEFxB,aAAQuC,gBAAgB,GAAGL,WAAW;KAGtC,MAAMM,YAAYxC,QAAQyC,aAAa,aAAa;AAEpD,SAAID,UAEFR,aAAYU,QAAQC,SAASH;UACxB;MAEL,IAAIG,SAAS;MACb,IAAIC,SAAS5C,QAAQ6C;AACrB,aAAOD,UAAUA,WAAW9B,MAAM;AAChC,WAAI8B,OAAOzB,YAAY,QAAQyB,OAAOzB,YAAY,KAChDwB;AAEFC,gBAASA,OAAOC;;AAIlB,UAAIF,SAAS,EACXX,aAAYU,QAAQC,SAASG,OAAOH,OAAO;;KAK/C,MAAMI,gBAAgBf,YAAYgB,MAAMD;AACxC,SAAIA,cACFf,aAAYU,QAAQK,gBAAgBA;UAC/B;MAEL,MAAME,aAAajD,QAAQkD,QAAQ,SAAS;AAC5C,UAAID,YAAY;OACd,MAAME,sBAAuBF,WAC1BD,MAAMD;AACT,WAAII,oBACFnB,aAAYU,QAAQK,gBAAgBI;gBAC3BF,WAAW9B,YAAY,KAChCa,aAAYU,QAAQK,gBAAgB;gBAC3BE,WAAW9B,YAAY,KAChCa,aAAYU,QAAQK,gBAAgB;;;AAK1C,YAAO;;AAGT,WAAO;KACP;AAEF,UAAOxD,cAAcuB,KAAKsC,UAAU;KAExC,EACF,EACD;EACDC,eAAe,CAAC/D,KAAKgE,EAAC;EACvB;CACDC,SAAS,EACPxD,mBAAmBC,YAAYA,QAAQgD,MAAMD,eAC9C;CACDS,SAAS,EACPjD,MAAM,EACJkD,cAAc;EACZC,WAAW;EACXC,OAAO,CACL,EACEC,eAAe,MAChB,CACF;EACDC,QAAQ,EAAEC,QAAQ9D,SAAS+D,iBAAiB;GAE1C,MAAMC,aAAahE,QAAQ0C,QAAQC;GACnC,MAAMH,YAAYxC,QAAQyC,aAAa,aAAa;GACpD,MAAME,SAASqB,aAAaC,OAAOD,WAAW,GAAGC,OAAOzB,UAAU;GAIlE,MAAMO,gBADoB/C,QAAQ0C,QAAQK,iBAEnBgB,YAAY,CAAChE,mBAAmBC,QAAQ;AAE/D,UAAO;IACL2C,QAAQA,UAAUwB;IAClBpB,eAAeA,iBAAiBoB;IAChCC,MAAMN,OAAOO,QAAQ/E,KAAKgE,EAAC;IAC5B;;EAEL,EACF,EACD;CACDgB,QAAQ,EACNC,aAAaC,UAAU;AACrB,MAAI,CAACA,MAAMxE,QAAQ+C,cAAe;AAElC,UAAQyB,YAAU,oCAAC,MAAUA,QAAqC;IAErE;CACDb,OAAO;EACLc,OAAO;GACLC,OAAO;GACPC,YAAY;GACb;EACDC,QAAQ,EACNC,OAAO,SACR;EACDC,OAAO,EACLC,aAAa,OACd;EACDC,QAAQ,EAAEC,WAAW7F,UAAU6F,KAAK3F,KAAK4F,UAAS;EACpD;CACD,CAAC,CAACC,eAAevF,SAAS;AAE3B,SAAAwF,KAAAZ,OAAA;CAAA,MAAAa,IAAAC,EAAA,EAAA;CACE,MAAA,EAAAC,WAAAxC,kBAAqCyB,MAAKxE;CAC1C,MAAAoF,SAAazF,cAAc6E,MAAKxE,QAAuB,GAA1C,OAAA;CAA2C,IAAAwF;AAAA,KAAAH,EAAA,OAAAtC,eAAA;AAI7CyC,OAAA;GAAAzC;GAAA0C,QAAyB;GAACC,SAAW;GAACC,UAAY;GAAY;AAAAN,IAAA,KAAAtC;AAAAsC,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAAA,IAAAO;AAAA,KAAAP,EAAA,OAAAb,MAAAlD,UAAA;AAGrEsE,OAAA,oCAAA,YAAKpB,MAAKlD,SAAe;AAAA+D,IAAA,KAAAb,MAAAlD;AAAA+D,IAAA,KAAAO;OAAAA,MAAAP,EAAA;CAAA,IAAAQ;AAAA,KAAAR,EAAA,OAAAD,UAAAC,EAAA,OAAAE,aAAAF,EAAA,OAAAG,MAAAH,EAAA,OAAAO,IAAA;AAJ3BC,OAAA,oCAAC;GACQ,OAAAL;GACAD,OAAAA;KAEPK,GACK;AAAAP,IAAA,KAAAD;AAAAC,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAO;AAAAP,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;AAAA,QALPQ"}