@lofcz/platejs-list 52.0.11 → 53.0.2

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,34 @@ 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>;
114
+ //#endregion
115
+ //#region src/lib/BulletedListRules.d.ts
116
+ declare const BulletedListRules: {
117
+ markdown: (options?: {
118
+ variant?: "*" | "-" | undefined;
119
+ enabled?: ((context: platejs1.SelectionInputRuleContext<SlateEditor> | platejs1.InsertTextInputRuleContext<SlateEditor> | platejs1.InsertBreakInputRuleContext<SlateEditor> | platejs1.InsertDataInputRuleContext<SlateEditor>) => boolean) | undefined;
120
+ priority?: number | undefined;
121
+ } | undefined) => platejs1.AnyInputRule<unknown>;
122
+ };
123
+ //#endregion
124
+ //#region src/lib/OrderedListRules.d.ts
125
+ declare const OrderedListRules: {
126
+ markdown: (options?: {
127
+ variant?: "." | ")" | undefined;
128
+ enabled?: ((context: platejs1.SelectionInputRuleContext<SlateEditor> | platejs1.InsertTextInputRuleContext<SlateEditor> | platejs1.InsertBreakInputRuleContext<SlateEditor> | platejs1.InsertDataInputRuleContext<SlateEditor>) => boolean) | undefined;
129
+ priority?: number | undefined;
130
+ } | undefined) => platejs1.AnyInputRule<unknown>;
131
+ };
132
+ //#endregion
133
+ //#region src/lib/TaskListRules.d.ts
134
+ declare const TaskListRules: {
135
+ markdown: (options?: {
136
+ checked?: boolean | undefined;
137
+ enabled?: ((context: platejs1.SelectionInputRuleContext<SlateEditor> | platejs1.InsertTextInputRuleContext<SlateEditor> | platejs1.InsertBreakInputRuleContext<SlateEditor> | platejs1.InsertDataInputRuleContext<SlateEditor>) => boolean) | undefined;
138
+ priority?: number | undefined;
139
+ } | undefined) => platejs1.AnyInputRule<unknown>;
140
+ };
113
141
  //#endregion
114
142
  //#region src/lib/withList.d.ts
115
143
  declare const withList: OverrideEditor<BaseListConfig>;
@@ -119,17 +147,17 @@ declare const withNormalizeList: OverrideEditor<BaseListConfig>;
119
147
  //#endregion
120
148
  //#region src/lib/normalizers/normalizeListNotIndented.d.ts
121
149
  /** Unset listStyle, listStart if KEYS.indent is not defined. */
122
- declare const normalizeListNotIndented: (editor: Editor, [node, path]: NodeEntry$1) => true | undefined;
150
+ declare const normalizeListNotIndented: (editor: Editor, [node, path]: NodeEntry) => true | undefined;
123
151
  //#endregion
124
152
  //#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;
153
+ declare const getListExpectedListStart: (entry: NodeEntry, prevEntry?: NodeEntry) => number;
154
+ declare const normalizeListStart: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>, options?: Partial<GetSiblingListOptions<N, E>>) => boolean;
127
155
  //#endregion
128
156
  //#region src/lib/normalizers/withInsertBreakList.d.ts
129
157
  declare const withInsertBreakList: OverrideEditor<BaseListConfig>;
130
158
  //#endregion
131
159
  //#region src/lib/queries/areEqListStyleType.d.ts
132
- declare const areEqListStyleType: (_editor: Editor, entries: NodeEntry$1[], {
160
+ declare const areEqListStyleType: (_editor: Editor, entries: NodeEntry[], {
133
161
  listStyleType
134
162
  }: {
135
163
  listStyleType?: string;
@@ -144,17 +172,17 @@ declare const areEqListStyleType: (_editor: Editor, entries: NodeEntry$1[], {
144
172
  * @returns Array of block entries with list items expanded to include their
145
173
  * children
146
174
  */
147
- declare const expandListItemsWithChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entries: ElementEntryOf<E>[]) => NodeEntry$1<N>[];
175
+ declare const expandListItemsWithChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entries: ElementEntryOf<E>[]) => NodeEntry<N>[];
148
176
  //#endregion
149
177
  //#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;
178
+ declare const getListAbove: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, options?: Omit<EditorAboveOptions, "match">) => NodeEntry<N> | undefined;
151
179
  //#endregion
152
180
  //#region src/lib/queries/getListChildren.d.ts
153
181
  /**
154
182
  * Get all list items that are children of the current list item (have bigger
155
183
  * indent). Stops when encountering an item with equal or lower indent.
156
184
  */
157
- declare const getListChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>) => NodeEntry$1<N>[];
185
+ declare const getListChildren: <N extends ElementOf<E>, E extends Editor = Editor>(editor: E, entry: ElementEntryOf<E>) => NodeEntry<N>[];
158
186
  //#endregion
159
187
  //#region src/lib/queries/getListSiblings.d.ts
160
188
  interface GetListSiblingsOptions<N extends ElementOf<E>, E extends Editor = Editor> extends Partial<GetSiblingListOptions<N, E>> {
@@ -171,11 +199,11 @@ declare const getListSiblings: <N extends ElementOf<E>, E extends Editor = Edito
171
199
  //#endregion
172
200
  //#region src/lib/queries/getNextList.d.ts
173
201
  /** 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;
202
+ 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
203
  //#endregion
176
204
  //#region src/lib/queries/getPreviousList.d.ts
177
205
  /** 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;
206
+ 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
207
  //#endregion
180
208
  //#region src/lib/queries/getSiblingListStyleType.d.ts
181
209
  /**
@@ -187,7 +215,7 @@ declare const getSiblingListStyleType: <E extends SlateEditor>(editor: E, {
187
215
  indent,
188
216
  ...options
189
217
  }: {
190
- entry: NodeEntry$1<TElement>;
218
+ entry: NodeEntry<TElement>;
191
219
  indent: number;
192
220
  } & GetListSiblingsOptions<ElementOf<E>, E>) => ListStyleType;
193
221
  //#endregion
@@ -195,10 +223,10 @@ declare const getSiblingListStyleType: <E extends SlateEditor>(editor: E, {
195
223
  declare function isOrderedList(element: TElement): boolean;
196
224
  //#endregion
197
225
  //#region src/lib/queries/someList.d.ts
198
- declare const someList: (editor: SlateEditor, type: string[] | string) => any;
226
+ declare const someList: (editor: SlateEditor, type: string[] | string) => boolean;
199
227
  //#endregion
200
228
  //#region src/lib/queries/someTodoList.d.ts
201
- declare const someTodoList: (editor: SlateEditor) => any;
229
+ declare const someTodoList: (editor: SlateEditor) => boolean;
202
230
  //#endregion
203
231
  //#region src/lib/transforms/indentList.d.ts
204
232
  type ListOptions = {
@@ -246,7 +274,7 @@ declare const setIndentTodoNode: (editor: Editor, {
246
274
  * Set indent list to the given entries. Add indent if listStyleType was not
247
275
  * defined.
248
276
  */
249
- declare const setListNodes: (editor: Editor, entries: NodeEntry$1[], {
277
+ declare const setListNodes: (editor: Editor, entries: NodeEntry[], {
250
278
  listStyleType
251
279
  }: {
252
280
  listStyleType?: string;
@@ -267,23 +295,22 @@ declare const setListSiblingNodes: <N extends ElementOf<E>, E extends Editor = E
267
295
  declare const toggleList: <N extends ElementOf<E>, E extends SlateEditor = SlateEditor>(editor: E, options: ListOptions, getSiblingListOptions?: GetSiblingListOptions<N, E>) => void;
268
296
  //#endregion
269
297
  //#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;
298
+ declare const toggleListByPath: (editor: SlateEditor, [node, path]: NodeEntry, listStyleType: string) => void;
299
+ declare const toggleListByPathUnSet: (editor: SlateEditor, [, path]: NodeEntry) => void;
272
300
  //#endregion
273
301
  //#region src/lib/transforms/toggleListSet.d.ts
274
302
  /** Set indent list if not set. */
275
- declare const toggleListSet: (editor: Editor, [node, _path]: NodeEntry$1, {
303
+ declare const toggleListSet: (editor: Editor, [node, _path]: NodeEntry, {
276
304
  listStyleType,
277
305
  ...options
278
306
  }: ListOptions) => true | undefined;
279
307
  //#endregion
280
308
  //#region src/lib/transforms/toggleListUnset.d.ts
281
309
  /** Unset list style type if already set. */
282
- declare const toggleListUnset: (editor: Editor, [node, path]: NodeEntry$1, {
310
+ declare const toggleListUnset: (editor: Editor, [node, path]: NodeEntry, {
283
311
  listStyleType
284
312
  }: {
285
313
  listStyleType?: string;
286
314
  }) => true | undefined;
287
315
  //#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
316
+ export { withNormalizeList as A, getSiblingList as B, getListAbove as C, getListExpectedListStart as D, withInsertBreakList as E, BaseListConfig as F, BaseListPlugin as I, ListStyleType as L, TaskListRules as M, OrderedListRules as N, normalizeListStart as O, BulletedListRules as P, ULIST_STYLE_TYPES as R, 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, GetSiblingListOptions as z };
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";
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
+ import { A as withNormalizeList, B as getSiblingList, C as getListAbove, D as getListExpectedListStart, E as withInsertBreakList, F as BaseListConfig, I as BaseListPlugin, L as ListStyleType, M as TaskListRules, N as OrderedListRules, O as normalizeListStart, P as BulletedListRules, R as ULIST_STYLE_TYPES, 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, z as GetSiblingListOptions } from "./index-DaxjrSb0";
2
+ export { BaseListConfig, BaseListPlugin, BulletedListRules, GetListSiblingsOptions, GetSiblingListOptions, ListOptions, ListStyleType, OrderedListRules, TaskListRules, 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 };
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { A as getListChildren, C as getSiblingListStyleType, D as getSiblingList, E as getNextList, M as ListStyleType, N as ULIST_STYLE_TYPES, O as getListAbove, S as isOrderedList, T as getPreviousList, _ as getListExpectedListStart, a as toggleListByPathUnSet, b as someTodoList, c as toggleListSet, d as setIndentTodoNode, f as setListNode, g as withInsertBreakList, h as indentTodo, i as toggleListByPath, j as areEqListStyleType, k as expandListItemsWithChildren, l as setListSiblingNodes, m as indentList, n as withList, o as toggleList, p as outdentList, r as withNormalizeList, s as toggleListUnset, t as BaseListPlugin, u as setListNodes, v as normalizeListStart, w as getListSiblings, x as someList, y as normalizeListNotIndented } from "./src-Dvsp2AeZ.js";
1
+ import { A as getSiblingList, C as someTodoList, D as getListSiblings, E as getSiblingListStyleType, F as ListStyleType, I as ULIST_STYLE_TYPES, M as expandListItemsWithChildren, N as getListChildren, O as getPreviousList, P as areEqListStyleType, S as normalizeListNotIndented, T as isOrderedList, _ as indentList, a as withList, b as getListExpectedListStart, c as toggleListByPathUnSet, d as toggleListSet, f as setListSiblingNodes, g as outdentList, h as setListNode, i as BaseListPlugin, j as getListAbove, k as getNextList, l as toggleList, m as setIndentTodoNode, n as OrderedListRules, o as withNormalizeList, p as setListNodes, r as BulletedListRules, s as toggleListByPath, t as TaskListRules, u as toggleListUnset, v as indentTodo, w as someList, x as normalizeListStart, y as withInsertBreakList } from "./src-B6T8hhDs.js";
2
2
 
3
- export { BaseListPlugin, 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 };
3
+ export { BaseListPlugin, BulletedListRules, ListStyleType, OrderedListRules, TaskListRules, 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 { F as BaseListConfig, L as ListStyleType, z as GetSiblingListOptions } from "../index-DaxjrSb0";
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 };
@@ -1,4 +1,4 @@
1
- import { M as ListStyleType, b as someTodoList, o as toggleList, t as BaseListPlugin, x as someList } from "../src-Dvsp2AeZ.js";
1
+ import { C as someTodoList, F as ListStyleType, i as BaseListPlugin, l as toggleList, w as someList } from "../src-B6T8hhDs.js";
2
2
  import { c } from "react-compiler-runtime";
3
3
  import { toPlatePlugin, useEditorRef, useEditorSelector, useReadOnly } from "platejs/react";
4
4
 
@@ -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 };
@@ -1,6 +1,6 @@
1
1
  import { c } from "react-compiler-runtime";
2
2
  import React from "react";
3
- import { KEYS, NodeApi, PathApi, createTSlatePlugin, getInjectMatch, isDefined, isHtmlBlockElement, postCleanHtml, traverseHtmlElements } from "platejs";
3
+ import { KEYS, NodeApi, PathApi, createRuleFactory, createTSlatePlugin, getInjectMatch, isDefined, isHtmlBlockElement, postCleanHtml, traverseHtmlElements } from "platejs";
4
4
  import { setIndent } from "@platejs/indent";
5
5
 
6
6
  //#region src/lib/types.ts
@@ -311,7 +311,18 @@ const normalizeListStart = (editor, entry, options) => editor.tf.withoutNormaliz
311
311
  const listStyleType = node[KEYS.listType];
312
312
  const listStart = node[KEYS.listStart];
313
313
  if (!listStyleType) return;
314
- const expectedListStart = getListExpectedListStart(entry, getPreviousList(editor, entry, options));
314
+ if (ULIST_STYLE_TYPES.includes(listStyleType)) {
315
+ if (isDefined(listStart)) {
316
+ editor.tf.unsetNodes(KEYS.listStart, { at: path });
317
+ return true;
318
+ }
319
+ return;
320
+ }
321
+ const expectedListStart = getListExpectedListStart(entry, getPreviousList(editor, entry, {
322
+ breakOnEqIndentNeqListStyleType: false,
323
+ query: (nextNode, curNode) => nextNode[KEYS.listType] === curNode[KEYS.listType],
324
+ ...options
325
+ }));
315
326
  if (isDefined(listStart) && expectedListStart === 1) {
316
327
  editor.tf.unsetNodes(KEYS.listStart, { at: path });
317
328
  return true;
@@ -799,5 +810,61 @@ function List(props) {
799
810
  }
800
811
 
801
812
  //#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
813
+ //#region src/lib/BulletedListRules.ts
814
+ const isListInputBlocked$2 = (editor) => editor.api.some({ match: { type: [editor.getType(KEYS.codeBlock)] } });
815
+ const BulletedListRules = { markdown: createRuleFactory({
816
+ type: "blockStart",
817
+ variant: "-",
818
+ enabled: ({ editor }) => !isListInputBlocked$2(editor),
819
+ trigger: " ",
820
+ match: ({ variant }) => variant,
821
+ apply: ({ editor }, match) => {
822
+ editor.tf.delete({ at: match.range });
823
+ toggleList(editor, { listStyleType: KEYS.ul });
824
+ return true;
825
+ }
826
+ }) };
827
+
828
+ //#endregion
829
+ //#region src/lib/OrderedListRules.ts
830
+ const isListInputBlocked$1 = (editor) => editor.api.some({ match: { type: [editor.getType(KEYS.codeBlock)] } });
831
+ const getOrderedListPattern = (variant) => /* @__PURE__ */ new RegExp(`^(\\d+)${variant === ")" ? "\\)" : "\\."}$`);
832
+ const OrderedListRules = { markdown: createRuleFactory({
833
+ type: "blockStart",
834
+ variant: ".",
835
+ enabled: ({ editor }) => !isListInputBlocked$1(editor),
836
+ trigger: " ",
837
+ match: ({ variant }) => getOrderedListPattern(variant),
838
+ resolveMatch: ({ match }) => ({ start: Number(match[1]) }),
839
+ apply: ({ editor }, match) => {
840
+ editor.tf.delete({ at: match.range });
841
+ toggleList(editor, {
842
+ listRestartPolite: match.start || 1,
843
+ listStyleType: KEYS.ol
844
+ });
845
+ return true;
846
+ }
847
+ }) };
848
+
849
+ //#endregion
850
+ //#region src/lib/TaskListRules.ts
851
+ const isListInputBlocked = (editor) => editor.api.some({ match: { type: [editor.getType(KEYS.codeBlock)] } });
852
+ const TaskListRules = { markdown: createRuleFactory({
853
+ type: "blockStart",
854
+ checked: false,
855
+ enabled: ({ editor }) => !isListInputBlocked(editor),
856
+ trigger: " ",
857
+ match: ({ checked }) => checked ? "[x]" : "[]",
858
+ apply: ({ editor, checked }, match) => {
859
+ editor.tf.delete({ at: match.range });
860
+ toggleList(editor, { listStyleType: KEYS.listTodo });
861
+ editor.tf.setNodes({
862
+ checked,
863
+ listStyleType: KEYS.listTodo
864
+ });
865
+ return true;
866
+ }
867
+ }) };
868
+
869
+ //#endregion
870
+ export { getSiblingList as A, someTodoList as C, getListSiblings as D, getSiblingListStyleType as E, ListStyleType as F, ULIST_STYLE_TYPES as I, expandListItemsWithChildren as M, getListChildren as N, getPreviousList as O, areEqListStyleType as P, normalizeListNotIndented as S, isOrderedList as T, indentList as _, withList as a, getListExpectedListStart as b, toggleListByPathUnSet as c, toggleListSet as d, setListSiblingNodes as f, outdentList as g, setListNode as h, BaseListPlugin as i, getListAbove as j, getNextList as k, toggleList as l, setIndentTodoNode as m, OrderedListRules as n, withNormalizeList as o, setListNodes as p, BulletedListRules as r, toggleListByPath as s, TaskListRules as t, toggleListUnset as u, indentTodo as v, someList as w, normalizeListStart as x, withInsertBreakList 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": "53.0.2",
4
4
  "description": "List plugin for Plate",
5
5
  "keywords": [
6
6
  "plate",
@@ -32,13 +32,14 @@
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@53.0.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@plate/scripts": "1.0.0"
38
+ "@plate/scripts": "1.0.0",
39
+ "platejs": "npm:@lofcz/platejs@53.0.0"
39
40
  },
40
41
  "peerDependencies": {
41
- "platejs": ">=52.0.11",
42
+ "platejs": ">=53.0.0",
42
43
  "react": ">=18.0.0",
43
44
  "react-dom": ">=18.0.0"
44
45
  },
@@ -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":"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"}