@olddevs/ui 4.4.0 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/editor/RichTextEditor.d.ts +11 -4
  3. package/dist/editor/RichTextEditor.d.ts.map +1 -1
  4. package/dist/editor/RichTextEditor.js +90 -60
  5. package/dist/editor/RichTextEditor.js.map +1 -1
  6. package/dist/editor/RichTextView.d.ts +2 -1
  7. package/dist/editor/RichTextView.d.ts.map +1 -1
  8. package/dist/editor/RichTextView.js.map +1 -1
  9. package/dist/editor/core/containers.d.ts +2 -6
  10. package/dist/editor/core/containers.d.ts.map +1 -1
  11. package/dist/editor/core/containers.js +2 -1
  12. package/dist/editor/core/containers.js.map +1 -1
  13. package/dist/editor/core/customTool.d.ts +8 -2
  14. package/dist/editor/core/customTool.d.ts.map +1 -1
  15. package/dist/editor/core/customTool.js.map +1 -1
  16. package/dist/editor/core/customToolEngine.d.ts +9 -1
  17. package/dist/editor/core/customToolEngine.d.ts.map +1 -1
  18. package/dist/editor/core/customToolEngine.js +12 -0
  19. package/dist/editor/core/customToolEngine.js.map +1 -1
  20. package/dist/editor/core/extensions.d.ts.map +1 -1
  21. package/dist/editor/core/extensions.js +1 -1
  22. package/dist/editor/core/extensions.js.map +1 -1
  23. package/dist/editor/core/handle.d.ts +18 -1
  24. package/dist/editor/core/handle.d.ts.map +1 -1
  25. package/dist/editor/core/handle.js +2 -1
  26. package/dist/editor/core/handle.js.map +1 -1
  27. package/dist/editor/core/handleWatchers.d.ts +30 -0
  28. package/dist/editor/core/handleWatchers.d.ts.map +1 -1
  29. package/dist/editor/core/handleWatchers.js +15 -0
  30. package/dist/editor/core/handleWatchers.js.map +1 -1
  31. package/dist/editor/core/nodeNames.d.ts +7 -0
  32. package/dist/editor/core/nodeNames.d.ts.map +1 -0
  33. package/dist/editor/core/nodeNames.js +2 -0
  34. package/dist/editor/core/nodeNames.js.map +1 -0
  35. package/dist/editor/core/schema.d.ts.map +1 -1
  36. package/dist/editor/core/schema.js +4 -2
  37. package/dist/editor/core/schema.js.map +1 -1
  38. package/dist/editor/core/toolCommands.d.ts +78 -0
  39. package/dist/editor/core/toolCommands.d.ts.map +1 -0
  40. package/dist/editor/core/toolCommands.js +2 -0
  41. package/dist/editor/core/toolCommands.js.map +1 -0
  42. package/dist/editor/core/toolDefinition.d.ts +139 -0
  43. package/dist/editor/core/toolDefinition.d.ts.map +1 -0
  44. package/dist/editor/core/toolDefinition.js +28 -0
  45. package/dist/editor/core/toolDefinition.js.map +1 -0
  46. package/dist/editor/core/toolDescriptor.d.ts +71 -2
  47. package/dist/editor/core/toolDescriptor.d.ts.map +1 -1
  48. package/dist/editor/core/toolDescriptor.js +6 -2
  49. package/dist/editor/core/toolDescriptor.js.map +1 -1
  50. package/dist/editor/core/toolOptions.d.ts +157 -0
  51. package/dist/editor/core/toolOptions.d.ts.map +1 -0
  52. package/dist/editor/core/toolOptions.js +21 -0
  53. package/dist/editor/core/toolOptions.js.map +1 -0
  54. package/dist/editor/core/toolState.d.ts +46 -0
  55. package/dist/editor/core/toolState.d.ts.map +1 -0
  56. package/dist/editor/core/toolState.js +2 -0
  57. package/dist/editor/core/toolState.js.map +1 -0
  58. package/dist/editor/core/tools.d.ts +3 -1
  59. package/dist/editor/core/tools.d.ts.map +1 -1
  60. package/dist/editor/core/tools.js.map +1 -1
  61. package/dist/editor/core/viewIsland.d.ts.map +1 -1
  62. package/dist/editor/core/viewIsland.js +2 -1
  63. package/dist/editor/core/viewIsland.js.map +1 -1
  64. package/dist/editor/features/builtins.d.ts +9 -4
  65. package/dist/editor/features/builtins.d.ts.map +1 -1
  66. package/dist/editor/features/builtins.js +36 -7
  67. package/dist/editor/features/builtins.js.map +1 -1
  68. package/dist/editor/features/search/SearchPanel.d.ts.map +1 -1
  69. package/dist/editor/features/search/SearchPanel.js +26 -12
  70. package/dist/editor/features/search/SearchPanel.js.map +1 -1
  71. package/dist/editor/features/search/revealMatch.d.ts +16 -0
  72. package/dist/editor/features/search/revealMatch.d.ts.map +1 -1
  73. package/dist/editor/features/search/revealMatch.js +22 -0
  74. package/dist/editor/features/search/revealMatch.js.map +1 -1
  75. package/dist/editor/features/search/searchPlugin.d.ts +8 -3
  76. package/dist/editor/features/search/searchPlugin.d.ts.map +1 -1
  77. package/dist/editor/features/search/searchPlugin.js +17 -6
  78. package/dist/editor/features/search/searchPlugin.js.map +1 -1
  79. package/dist/editor/features/search/searchSnapshot.d.ts +14 -0
  80. package/dist/editor/features/search/searchSnapshot.d.ts.map +1 -0
  81. package/dist/editor/features/search/searchSnapshot.js +17 -0
  82. package/dist/editor/features/search/searchSnapshot.js.map +1 -0
  83. package/dist/editor/features/search/searchTool.d.ts +3 -0
  84. package/dist/editor/features/search/searchTool.d.ts.map +1 -1
  85. package/dist/editor/features/search/searchTool.js +30 -1
  86. package/dist/editor/features/search/searchTool.js.map +1 -1
  87. package/dist/editor/features/toc/RichTextToc.d.ts +29 -1
  88. package/dist/editor/features/toc/RichTextToc.d.ts.map +1 -1
  89. package/dist/editor/features/toc/RichTextToc.js +64 -12
  90. package/dist/editor/features/toc/RichTextToc.js.map +1 -1
  91. package/dist/editor/features/toc/documentHeadings.d.ts +30 -0
  92. package/dist/editor/features/toc/documentHeadings.d.ts.map +1 -0
  93. package/dist/editor/features/toc/documentHeadings.js +20 -0
  94. package/dist/editor/features/toc/documentHeadings.js.map +1 -0
  95. package/dist/editor/features/toc/headings.d.ts +6 -2
  96. package/dist/editor/features/toc/headings.d.ts.map +1 -1
  97. package/dist/editor/features/toc/headings.js +4 -2
  98. package/dist/editor/features/toc/headings.js.map +1 -1
  99. package/dist/editor/features/toc/tocSnapshot.d.ts +10 -0
  100. package/dist/editor/features/toc/tocSnapshot.d.ts.map +1 -0
  101. package/dist/editor/features/toc/tocSnapshot.js +8 -0
  102. package/dist/editor/features/toc/tocSnapshot.js.map +1 -0
  103. package/dist/editor/features/toc/tocTool.d.ts +6 -0
  104. package/dist/editor/features/toc/tocTool.d.ts.map +1 -0
  105. package/dist/editor/features/toc/tocTool.js +21 -0
  106. package/dist/editor/features/toc/tocTool.js.map +1 -0
  107. package/dist/editor/hooks/useRichTextToolState.d.ts +43 -0
  108. package/dist/editor/hooks/useRichTextToolState.d.ts.map +1 -0
  109. package/dist/editor/hooks/useRichTextToolState.js +77 -0
  110. package/dist/editor/hooks/useRichTextToolState.js.map +1 -0
  111. package/dist/editor/index.d.ts +8 -0
  112. package/dist/editor/index.d.ts.map +1 -1
  113. package/dist/editor/index.js +3 -0
  114. package/dist/editor/index.js.map +1 -1
  115. package/docs/api/editor-extension.en.md +223 -23
  116. package/docs/api/editor-extension.md +224 -22
  117. package/docs/api/migration-notes.en.md +36 -1
  118. package/docs/api/migration-notes.md +35 -0
  119. package/docs/components/content/rich-text-toc.en.md +13 -11
  120. package/docs/components/content/rich-text-toc.md +12 -10
  121. package/docs/components/index.en.md +2 -2
  122. package/docs/components/index.md +1 -1
  123. package/docs/components/inputs/rich-text-editor.en.md +227 -11
  124. package/docs/components/inputs/rich-text-editor.md +228 -10
  125. package/docs/getting-started.en.md +7 -7
  126. package/docs/getting-started.md +6 -6
  127. package/docs/glossary.en.md +52 -48
  128. package/docs/glossary.md +51 -47
  129. package/package.json +1 -1
  130. package/src/editor/RichTextEditor.tsx +94 -39
  131. package/src/editor/RichTextView.tsx +2 -1
  132. package/src/editor/core/containers.ts +8 -6
  133. package/src/editor/core/customTool.ts +8 -2
  134. package/src/editor/core/customToolEngine.ts +20 -1
  135. package/src/editor/core/extensions.ts +2 -1
  136. package/src/editor/core/handle.ts +25 -1
  137. package/src/editor/core/handleWatchers.ts +45 -0
  138. package/src/editor/core/nodeNames.ts +7 -0
  139. package/src/editor/core/schema.ts +5 -2
  140. package/src/editor/core/toolCommands.ts +85 -0
  141. package/src/editor/core/toolDefinition.ts +208 -0
  142. package/src/editor/core/toolDescriptor.ts +94 -3
  143. package/src/editor/core/toolOptions.ts +211 -0
  144. package/src/editor/core/toolState.ts +56 -0
  145. package/src/editor/core/tools.ts +3 -1
  146. package/src/editor/core/viewIsland.ts +5 -4
  147. package/src/editor/features/builtins.ts +72 -13
  148. package/src/editor/features/search/SearchPanel.tsx +38 -14
  149. package/src/editor/features/search/revealMatch.ts +45 -0
  150. package/src/editor/features/search/searchPlugin.ts +40 -11
  151. package/src/editor/features/search/searchSnapshot.ts +29 -0
  152. package/src/editor/features/search/searchTool.ts +51 -1
  153. package/src/editor/features/toc/RichTextToc.tsx +122 -13
  154. package/src/editor/features/toc/documentHeadings.ts +59 -0
  155. package/src/editor/features/toc/headings.ts +10 -3
  156. package/src/editor/features/toc/tocSnapshot.ts +24 -0
  157. package/src/editor/features/toc/tocTool.ts +41 -0
  158. package/src/editor/hooks/useRichTextToolState.ts +153 -0
  159. package/src/editor/index.ts +19 -0
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { searchState } from "./searchPlugin.js";
3
+ export function searchSnapshot(editor, open) {
4
+ const state = searchState(editor.state);
5
+ if (!state)
6
+ return null;
7
+ const { matchCase, wholeWord, regex } = state.options;
8
+ return {
9
+ open,
10
+ query: state.query,
11
+ flags: { matchCase, wholeWord, regex },
12
+ total: state.total,
13
+ current: state.current,
14
+ error: state.error ?? null,
15
+ };
16
+ }
17
+ //# sourceMappingURL=searchSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchSnapshot.js","sourceRoot":"","sources":["../../../../src/editor/features/search/searchSnapshot.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAIb,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYhD,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,IAAa;IAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IACtD,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE;QACtC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;KAC3B,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ToolDescriptor } from "../../core/toolDescriptor.js";
2
+ import type { SearchToolOptions } from "../../core/toolOptions.js";
2
3
  /**
3
4
  * Поиск и замена на описании Инструмента. Часть для движка —
4
5
  * плагин состояния и подсветки с сочетаниями `Mod+F` и `Mod+Alt+F`; панель
@@ -9,5 +10,7 @@ import type { ToolDescriptor } from "../../core/toolDescriptor.js";
9
10
  */
10
11
  /** Сочетание кнопки «Поиск»: строка справочника и подсказка кнопки — из одной записи. */
11
12
  export declare const SEARCH_KEYS: readonly ["mod", "F"];
13
+ /** Стартовые флажки панели: все выключены. */
14
+ export declare const SEARCH_DEFAULTS: SearchToolOptions;
12
15
  export declare const SEARCH_TOOL: ToolDescriptor;
13
16
  //# sourceMappingURL=searchTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchTool.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/search/searchTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;GAOG;AACH,yFAAyF;AACzF,eAAO,MAAM,WAAW,uBAAwB,CAAC;AAEjD,eAAO,MAAM,WAAW,EAAE,cAazB,CAAC"}
1
+ {"version":3,"file":"searchTool.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/search/searchTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE;;;;;;;GAOG;AACH,yFAAyF;AACzF,eAAO,MAAM,WAAW,uBAAwB,CAAC;AAEjD,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,iBAI7B,CAAC;AAiBF,eAAO,MAAM,WAAW,EAAE,cAsCzB,CAAC"}
@@ -1,9 +1,38 @@
1
1
  "use client";
2
2
  import { SearchExtension } from "./searchPlugin.js";
3
3
  export const SEARCH_KEYS = ["mod", "F"];
4
+ export const SEARCH_DEFAULTS = {
5
+ matchCase: false,
6
+ wholeWord: false,
7
+ regex: false,
8
+ };
9
+ const isFlag = (value) => typeof value === "boolean";
10
+ const reveal = (editor, done) => {
11
+ if (done)
12
+ void import("./revealMatch.js").then((module) => module.scheduleRevealMatch(editor));
13
+ return done;
14
+ };
4
15
  export const SEARCH_TOOL = {
5
16
  name: "search",
6
- engine: (context) => [SearchExtension.configure({ open: context.openSearch ?? (() => false) })],
17
+ defaults: SEARCH_DEFAULTS,
18
+ checks: { matchCase: isFlag, wholeWord: isFlag, regex: isFlag },
19
+ commands: ({ editor, bridge }) => ({
20
+ open: (options) => bridge.openSearch(options?.replace === true, options?.query),
21
+ close: bridge.closeSearch,
22
+ setQuery: (query, flags) => !bridge.sourceOpen() &&
23
+ editor.commands.setSearch(query, flags) &&
24
+ (reveal(editor, query !== ""), true),
25
+ next: () => reveal(editor, editor.commands.searchStep(1)),
26
+ previous: () => reveal(editor, editor.commands.searchStep(-1)),
27
+ replace: (text) => editor.commands.replaceMatch(text),
28
+ replaceAll: (text) => editor.commands.replaceAllMatches(text),
29
+ }),
30
+ engine: (context, options) => [
31
+ SearchExtension.configure({
32
+ open: context.openSearch ?? (() => false),
33
+ flags: options,
34
+ }),
35
+ ],
7
36
  shortcuts: [
8
37
  { id: "search", group: "search", tool: "search", keys: SEARCH_KEYS, label: (m) => m.search },
9
38
  {
@@ -1 +1 @@
1
- {"version":3,"file":"searchTool.js","sourceRoot":"","sources":["../../../../src/editor/features/search/searchTool.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWpD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,GAAG,CAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/F,SAAS,EAAE;QACT,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;QAC5F;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;YACzB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;SAC9B;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"searchTool.js","sourceRoot":"","sources":["../../../../src/editor/features/search/searchTool.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAMb,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWpD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,GAAG,CAAU,CAAC;AAGjD,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC;AAU9D,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,IAAa,EAAE,EAAE;IAC/C,IAAI,IAAI;QAAE,KAAK,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/F,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAO/D,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAsB,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;QAC/E,KAAK,EAAE,MAAM,CAAC,WAAW;QACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACzB,CAAC,MAAM,CAAC,UAAU,EAAE;YACpB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;YACvC,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;QACtC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QACrD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC;KAC9D,CAAC;IACF,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5B,eAAe,CAAC,SAAS,CAAC;YACxB,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YACzC,KAAK,EAAE,OAA4B;SACpC,CAAC;KACH;IACD,SAAS,EAAE;QACT,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;QAC5F;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;YACzB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;SAC9B;KACF;CACF,CAAC"}
@@ -1,4 +1,5 @@
1
- import { type HTMLAttributes, type RefObject } from "react";
1
+ import type { Editor } from "@tiptap/core";
2
+ import { type HTMLAttributes, type MutableRefObject, type RefObject } from "react";
2
3
  import type { RichTextEditorHandle } from "../../RichTextEditor.js";
3
4
  export interface RichTextTocProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
4
5
  /**
@@ -28,6 +29,13 @@ export interface RichTextTocProps extends Omit<HTMLAttributes<HTMLDivElement>, "
28
29
  * По умолчанию 240px.
29
30
  */
30
31
  listWidth?: number | string;
32
+ /**
33
+ * Уровни заголовков, которые попадают в Оглавление: подмножество 1–4. Заголовка
34
+ * другого уровня нет ни в полосе, ни в списке, а отступ пунктов считается от
35
+ * самого крупного из оставшихся. Читается при каждой сборке списка, поэтому
36
+ * смена набора уровней пересобирает его. По умолчанию все четыре.
37
+ */
38
+ levels?: readonly (1 | 2 | 3 | 4)[];
31
39
  }
32
40
  /**
33
41
  * Оглавление Документа: полоса штрихов, по одному на заголовок, штрих текущего
@@ -58,6 +66,26 @@ export interface TocCoreProps extends RichTextTocProps {
58
66
  * уровня, а не полоса выше текста.
59
67
  */
60
68
  alignToFirstHeading?: boolean;
69
+ /**
70
+ * Текущий раздел сменился (в том числе при первом показе): Редактор кладёт
71
+ * индекс в Состояние Инструмента `toc`. Индекс считается по списку, который
72
+ * видит `TocCore`; пока заголовков меньше двух, он остаётся прежним.
73
+ */
74
+ onCurrentChange?: (index: number) => void;
75
+ /**
76
+ * Движок Редактора. Нужен команде `jumpTo` (`jumpRef`): индекс команды — это
77
+ * индекс заголовка в снимке Состояния `toc`, а снимок читает Документ движка
78
+ * на каждой транзакции. Список ядра пересобирается из DOM с задержкой
79
+ * (`REBUILD_DELAY`), и сразу после правки индексы двух списков расходились бы.
80
+ * Без движка `jumpTo` считает по списку ядра.
81
+ */
82
+ editor?: Editor;
83
+ /**
84
+ * Куда ядро кладёт переход к заголовку по индексу снимка Состояния (команда
85
+ * `jumpTo` Инструмента): ведёт себя как клик по пункту. Пока ядро смонтировано,
86
+ * там функция, после — `null`. Нет заголовка с таким индексом — `false`.
87
+ */
88
+ jumpRef?: MutableRefObject<((index: number) => boolean) | null>;
61
89
  }
62
90
  export declare const TocCore: import("react").ForwardRefExoticComponent<TocCoreProps & import("react").RefAttributes<HTMLDivElement>>;
63
91
  //# sourceMappingURL=RichTextToc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextToc.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/toc/RichTextToc.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAIpE,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxF;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AA4OD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,6GAIvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAChC,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IACjD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,OAAO,yGAmYlB,CAAC"}
1
+ {"version":3,"file":"RichTextToc.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/toc/RichTextToc.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAML,KAAK,cAAc,EAEnB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAKpE,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxF;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;CACrC;AA0PD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,6GAIvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAChC,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IACjD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;CACjE;AAED,eAAO,MAAM,OAAO,yGAoclB,CAAC"}
@@ -5,6 +5,7 @@ import { HoverCard, HoverCardContent, HoverCardTrigger, } from "../../../compone
5
5
  import { useMessages } from "../../../i18n/useMessages.js";
6
6
  import { cn } from "../../../lib/cn.js";
7
7
  import { watchHandleEditor } from "../../core/handleWatchers.js";
8
+ import { tocDocumentHeadings } from "./documentHeadings.js";
8
9
  import { collectHeadings, documentRoot } from "./headings.js";
9
10
  import { stickyOffset } from "./stickyOffset.js";
10
11
  const STROKE_WIDTH = ["w-3.5", "w-3", "w-2.5", "w-2"];
@@ -14,6 +15,7 @@ const strokeWidth = (depth) => STROKE_WIDTH[Math.min(depth, STROKE_WIDTH.length
14
15
  const itemIndent = (depth) => ITEM_INDENT[Math.min(depth, ITEM_INDENT.length - 1)];
15
16
  const OPEN_DELAY = 200;
16
17
  const CLOSE_DELAY = 300;
18
+ const ALL_LEVELS = [1, 2, 3, 4];
17
19
  const REBUILD_DELAY = 150;
18
20
  const STRIP_GAP = 6;
19
21
  const STRIP_CELL = 3;
@@ -62,11 +64,18 @@ function jumpTo(heading, offset, focusHeading) {
62
64
  }
63
65
  flash(heading);
64
66
  const behavior = prefersReducedMotion() ? "auto" : "smooth";
67
+ const scroller = scrollParent(heading);
65
68
  if (offset === null) {
66
- heading.scrollIntoView({ behavior, block: "start" });
69
+ if (!scroller) {
70
+ heading.scrollIntoView({ behavior, block: "start" });
71
+ return;
72
+ }
73
+ const margin = parseFloat(getComputedStyle(heading).scrollMarginTop) || 0;
74
+ const edge = scroller.getBoundingClientRect().top;
75
+ const top = heading.getBoundingClientRect().top;
76
+ scroller.scrollTo({ top: scroller.scrollTop + top - edge - margin, behavior });
67
77
  return;
68
78
  }
69
- const scroller = scrollParent(heading);
70
79
  const top = heading.getBoundingClientRect().top;
71
80
  if (scroller) {
72
81
  const edge = scroller.getBoundingClientRect().top;
@@ -134,11 +143,12 @@ function fitsBeside(strip, target) {
134
143
  export const RichTextToc = forwardRef(function RichTextToc(props, ref) {
135
144
  return _jsx(TocCore, { ref: ref, ...props });
136
145
  });
137
- export const TocCore = forwardRef(function TocCore({ target, offsetVar = "--topbar-h", listWidth = 240, stickyTop, focusHeading, alignToFirstHeading = false, className, style, ...rest }, ref) {
138
- const latest = useRef({ stickyTop, focusHeading, offsetVar });
146
+ export const TocCore = forwardRef(function TocCore({ target, offsetVar = "--topbar-h", listWidth = 240, levels, stickyTop, focusHeading, alignToFirstHeading = false, onCurrentChange, editor, jumpRef, className, style, ...rest }, ref) {
147
+ const latest = useRef({ stickyTop, focusHeading, offsetVar, levels, onCurrentChange, editor });
139
148
  useEffect(() => {
140
- latest.current = { stickyTop, focusHeading, offsetVar };
149
+ latest.current = { stickyTop, focusHeading, offsetVar, levels, onCurrentChange, editor };
141
150
  });
151
+ const levelsKey = levels ? levels.join(",") : "";
142
152
  const offsetNow = useCallback(() => {
143
153
  const own = latest.current;
144
154
  return own.stickyTop ? own.stickyTop() : stickyOffset(own.offsetVar);
@@ -148,6 +158,9 @@ export const TocCore = forwardRef(function TocCore({ target, offsetVar = "--topb
148
158
  const [headings, setHeadings] = useState([]);
149
159
  const [gap, setGap] = useState(STRIP_GAP);
150
160
  const [current, setCurrent] = useState(0);
161
+ useEffect(() => {
162
+ latest.current.onCurrentChange?.(current);
163
+ }, [current]);
151
164
  const [open, setOpen] = useState(false);
152
165
  const [fits, setFits] = useState(true);
153
166
  const stripRef = useRef(null);
@@ -165,7 +178,7 @@ export const TocCore = forwardRef(function TocCore({ target, offsetVar = "--topb
165
178
  return;
166
179
  }
167
180
  const read = () => {
168
- const next = collectHeadings(element);
181
+ const next = collectHeadings(element, latest.current.levels);
169
182
  setHeadings((prev) => (sameHeadings(prev, next) ? prev : next));
170
183
  };
171
184
  read();
@@ -183,7 +196,7 @@ export const TocCore = forwardRef(function TocCore({ target, offsetVar = "--topb
183
196
  clearTimeout(timer);
184
197
  observer.disconnect();
185
198
  };
186
- }, [element]);
199
+ }, [element, levelsKey]);
187
200
  useEffect(() => {
188
201
  if (headings.length < 2)
189
202
  return;
@@ -211,20 +224,60 @@ export const TocCore = forwardRef(function TocCore({ target, offsetVar = "--topb
211
224
  lock.settled = true;
212
225
  }, PIN_SETTLE);
213
226
  };
214
- const pin = (index) => {
227
+ const pin = (index, heading) => {
215
228
  if (pinned.current)
216
229
  window.clearTimeout(pinned.current.timer);
217
- pinned.current = { index, settled: false, timer: 0 };
230
+ pinned.current = { heading, settled: false, timer: 0 };
218
231
  settle(pinned.current);
219
232
  setCurrent(index);
220
233
  };
234
+ const go = (index) => {
235
+ const heading = headings[index];
236
+ if (!heading?.element.isConnected)
237
+ return false;
238
+ pin(index, heading.element);
239
+ jumpTo(heading.element, offsetNow(), latest.current.focusHeading);
240
+ return true;
241
+ };
242
+ const goToSnapshotIndex = (index) => {
243
+ const { editor: engine, levels: shown } = latest.current;
244
+ if (!engine)
245
+ return go(index);
246
+ if (engine.isDestroyed)
247
+ return false;
248
+ const found = tocDocumentHeadings(engine, { levels: shown ?? ALL_LEVELS })[index];
249
+ const node = found && engine.view.nodeDOM(found.pos);
250
+ if (!(node instanceof HTMLElement) || !node.isConnected || !element)
251
+ return false;
252
+ const fresh = collectHeadings(element, shown);
253
+ setHeadings((prev) => (sameHeadings(prev, fresh) ? prev : fresh));
254
+ const listed = fresh.findIndex((heading) => heading.element === node);
255
+ if (listed >= 0)
256
+ pin(listed, node);
257
+ jumpTo(node, offsetNow(), latest.current.focusHeading);
258
+ return true;
259
+ };
260
+ const goRef = useRef(goToSnapshotIndex);
261
+ useEffect(() => {
262
+ goRef.current = goToSnapshotIndex;
263
+ });
264
+ useEffect(() => {
265
+ if (!jumpRef)
266
+ return;
267
+ jumpRef.current = (index) => goRef.current(index);
268
+ return () => {
269
+ jumpRef.current = null;
270
+ };
271
+ }, [jumpRef]);
221
272
  useEffect(() => {
222
273
  if (headings.length < 2)
223
274
  return;
224
275
  let frame = 0;
225
276
  const update = () => {
226
277
  frame = 0;
227
- setCurrent(currentIndex(headings, offsetNow()));
278
+ const lock = pinned.current;
279
+ const held = lock && !lock.settled ? headings.findIndex((h) => h.element === lock.heading) : -1;
280
+ setCurrent(held >= 0 ? held : currentIndex(headings, offsetNow()));
228
281
  };
229
282
  const schedule = (event) => {
230
283
  const scrolled = event?.target;
@@ -360,8 +413,7 @@ export const TocCore = forwardRef(function TocCore({ target, offsetVar = "--topb
360
413
  if (stripRef.current?.contains(event.target))
361
414
  event.preventDefault();
362
415
  }, children: _jsx("nav", { ref: listRef, "aria-label": label, onKeyDown: onListKeyDown, children: _jsx("ul", { children: headings.map((heading, index) => (_jsx("li", { children: _jsxs("button", { type: "button", "data-depth": heading.depth, "aria-current": index === current ? "location" : undefined, className: cn("hover:bg-bg-2 focus-visible:bg-bg-2 flex w-full cursor-pointer items-center gap-2.5 rounded-sm py-0.5 pr-2 pl-1.5 text-left text-[13px] leading-[18px] outline-none", index === current ? "bg-bg-2 text-fg-0" : "text-fg-2 hover:text-fg-0"), onClick: (event) => {
363
- pin(index);
364
- jumpTo(heading.element, offsetNow(), latest.current.focusHeading);
416
+ go(index);
365
417
  const item = event.currentTarget;
366
418
  if (event.detail > 0 && document.activeElement === item)
367
419
  item.blur();
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextToc.js","sourceRoot":"","sources":["../../../../src/editor/features/toc/RichTextToc.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,EACT,MAAM,EACN,QAAQ,GAIT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAmB,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAoCjD,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AAK/D,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAEtD,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAElE,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9F,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAQ3F,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,WAAW,GAAG,GAAG,CAAC;AAGxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAM1B,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,YAAY,GAAG,EAAE,CAAC;AAGxB,MAAM,UAAU,GAAG,GAAG,CAAC;AAGvB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,SAAS,oBAAoB;IAC3B,OAAO,CACL,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;QACvC,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAC9D,CAAC;AACJ,CAAC;AAGD,SAAS,YAAY,CAAC,IAAiB;IACrC,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5E,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QACjF,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YACzF,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,MAAM,cAAc,GAAG,IAAI,CAAC;AAa5B,SAAS,UAAU,CAAC,IAAiB,EAAE,KAAa;IAClD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC;AACzE,CAAC;AAED,SAAS,KAAK,CAAC,OAAoB;IACjC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO;IAClD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC;IACpF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,sBAAsB,MAAM,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC;IAGxF,OAAO,CAAC,OAAO,CACb;QACE,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;QAChF,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,KAAK,EAAE;KAC5F,EAID,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAC1E,CAAC;AACJ,CAAC;AAUD,SAAS,MAAM,CACb,OAAoB,EACpB,MAAqB,EACrB,YAAgD;IAWhD,IAAI,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAE9B,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC;IAEf,MAAM,QAAQ,GAAmB,oBAAoB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE5E,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAQD,SAAS,YAAY,CAAC,QAAsB,EAAE,MAAqB;IACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAE9B,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,GAAG,CAAC;QACzE,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAEvF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QACxD,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC;YAAE,OAAO,GAAG,KAAK,CAAC;IAC9D,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAGD,SAAS,WAAW,CAAC,IAA6B,EAAE,GAAuB;IACzE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAC5C,IAAI,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;QAAE,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;SACvE,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;QAAE,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC/F,CAAC;AAOD,SAAS,aAAa,CAAC,MAA4D;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAGD,SAAS,YAAY,CAAC,CAAe,EAAE,CAAe;IACpD,OAAO,CACL,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QACrB,CAAC,CAAC,KAAK,CACL,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjB,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAE,CAAC,OAAO;YACrC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAE,CAAC,IAAI;YAC/B,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAE,CAAC,KAAK,CACpC,CACF,CAAC;AACJ,CAAC;AASD,SAAS,QAAQ,CAAC,KAAa,EAAE,MAAqB;IACpD,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,IAAI,GACR,MAAM,CAAC,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,aAAa,GAAG,KAAK,GAAG,UAAU,CAAC;IAC7F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAOD,SAAS,UAAU,CAAC,KAAkB,EAAE,MAAmB;IACzD,MAAM,GAAG,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAC1D,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;AACjD,CAAC;AAWD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACnC,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG;IAC7B,OAAO,KAAC,OAAO,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAAC;AAC1C,CAAC,CACF,CAAC;AAuBF,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAA+B,SAAS,OAAO,CAC9E,EACE,MAAM,EACN,SAAS,GAAG,YAAY,EACxB,SAAS,GAAG,GAAG,EACf,SAAS,EACT,YAAY,EACZ,mBAAmB,GAAG,KAAK,EAC3B,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EACD,GAAG;IAIH,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAIjC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,OAAO,EAAE,CAAC;QACV,OAAO,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAOb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,IAAI,KAAgD,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACzC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YACtC,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAGd,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC;QACF,MAAM,EAAE,CAAC;QACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,IAAI,KAAK;gBAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAU5C,MAAM,MAAM,GAAG,MAAM,CAA4D,IAAI,CAAC,CAAC;IAEvF,MAAM,MAAM,GAAG,CAAC,IAAyC,EAAE,EAAE;QAC3D,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,EAAE;QAC5B,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC;IAIF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,KAAK,GAAG,CAAC,CAAC;YACV,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;YAIjC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAM,CAAC;YAC/B,IAAI,QAAQ,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5E,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;YAC5B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAE1B,MAAM,CAAC,IAAI,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC;QACF,MAAM,EAAE,CAAC;QACT,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,IAAI,KAAK;gBAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACvC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAGrC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAKtE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CAAC;QACF,OAAO,EAAE,CAAC;QACV,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7F,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,IAAI,KAAK;gBAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/C,QAAQ,EAAE,UAAU,EAAE,CAAC;QACzB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAK/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,EAAE,aAAa,CAAC;QACnC,IAAI,CAAC,mBAAmB,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;YAAE,OAAO;QAClE,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,GAAG,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC;YAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,aAAa,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;YAC9F,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC;QACF,OAAO,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5F,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACtC,CAAC,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,IAAwB,EAAE,EAAE;QAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAoB,QAAQ,CAAC,CAAC;QAIjE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO;QACjC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;IAElC,MAAM,cAAc,GAAG,CAAC,KAAuC,EAAE,EAAE;QACjE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;YAAE,OAAO;QACvD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAE3B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAoB,QAAQ,CAAC,CAAC;YAC3E,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QACD,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAiC,EAAE,EAAE;QAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAoB,QAAQ,CAAC,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAkC,CAAC,CAAC;QACzE,MAAM,IAAI,GACR,KAAK,CAAC,GAAG,KAAK,WAAW;YACvB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS;gBACvB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM;oBACpB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK;wBACnB,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;wBAClB,CAAC,CAAC,IAAI,CAAC;QACjB,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO;QAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,CACL,cACE,GAAG,EAAE,GAAG,iBACK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAClC,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,WAAW,EAAE,SAAS,CAAC,EAC7D,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,KAC9D,IAAI,YAER,MAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,aAC1F,KAAC,gBAAgB,IAAC,OAAO,kBACvB,iBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,QAAQ,gBACD,KAAK,mBACF,IAAI,EACnB,OAAO,EAAE,GAAG,EAAE;4BAEZ,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gCACvB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;gCAC3B,OAAO;4BACT,CAAC;4BAOD,IAAI,CAAC,IAAI;gCAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;4BACtC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC,EACD,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EACtB,SAAS,EAAC,sIAAsI,YAK/I,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,eAAkB,SAAS,EAAC,+BAA+B,YACzD,kCACkB,EAAE,gBACN,OAAO,CAAC,KAAK,kBACX,KAAK,KAAK,OAAO,IAAI,SAAS,EAC5C,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,KAAK,KAAK,OAAO;oCACf,CAAC,CAAC,cAAc;oCAChB,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACpD,GACD,IAXO,KAAK,CAYT,CACR,CAAC,GACK,GACQ,EACnB,KAAC,gBAAgB,IACf,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,SAAS,EAAC,iEAAiE,EAC3E,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAC3B,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAChD,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;wBAIxB,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;4BAAE,KAAK,CAAC,cAAc,EAAE,CAAC;oBACtE,CAAC,EACD,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;wBAI9B,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;4BAAE,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC/E,CAAC,YAED,cAAK,GAAG,EAAE,OAAO,gBAAc,KAAK,EAAE,SAAS,EAAE,aAAa,YAC5D,uBACG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,uBACE,kBACE,IAAI,EAAC,QAAQ,gBACD,OAAO,CAAC,KAAK,kBACX,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACxD,SAAS,EAAE,EAAE,CACX,qKAAqK,EACrK,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,2BAA2B,CACtE,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;wCACjB,GAAG,CAAC,KAAK,CAAC,CAAC;wCACX,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;wCAQlE,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC;wCACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI;4CAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oCACvE,CAAC,aAGD,oCAAkB,SAAS,EAAC,gCAAgC,YAC1D,eACE,SAAS,EAAE,EAAE,CACX,cAAc,EACd,KAAK,KAAK,OAAO;oDACf,CAAC,CAAC,cAAc;oDAChB,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACpD,GACD,GACG,EACP,eACE,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAC5D,KAAK,EAAE,OAAO,CAAC,IAAI,YAElB,OAAO,CAAC,IAAI,GACR,IACA,IAxCF,KAAK,CAyCT,CACN,CAAC,GACC,GACD,GACW,IACT,GACR,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"RichTextToc.js","sourceRoot":"","sources":["../../../../src/editor/features/toc/RichTextToc.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import type { TocLevel, TocToolOptions } from "../../core/toolOptions.js";
3
+ /** Заголовок Документа с позицией: по ней команда `jumpTo` находит DOM-узел. */
4
+ export interface TocDocumentHeading {
5
+ level: TocLevel;
6
+ text: string;
7
+ /** Позиция узла заголовка в Документе (для `editor.view.nodeDOM`). */
8
+ pos: number;
9
+ }
10
+ /**
11
+ * Заголовки Оглавления по Документу движка, а не по DOM: ядро Оглавления
12
+ * (`TocCore`) — ленивый чанк, и пока он не пришёл (или нарисован HTML-режим),
13
+ * узлов для обхода нет, а данные экран просит с первого кадра. Это единственный
14
+ * обход, по которому считаются индексы: и снимок Состояния `toc`, и команда
15
+ * `jumpTo` берут заголовок отсюда, поэтому индекс из снимка ведёт к тому же
16
+ * заголовку сразу после правки, не дожидаясь, пока ядро пересоберёт свой список
17
+ * из DOM (`REBUILD_DELAY`).
18
+ *
19
+ * ТЕ ЖЕ ПРАВИЛА, ЧТО У `collectHeadings` (`headings.ts`), иначе индексы разойдутся
20
+ * с пунктами списка: заголовок на верхнем уровне или внутри Обёрток (колонки
21
+ * Раскладки, свои Блоки, цитаты и списки — нет), уровень из `levels`, текст без
22
+ * крайних пробелов не пуст. Текст — тот же, что у `textContent` DOM: мягкий
23
+ * перенос в него не входит, а Текст атома — входит.
24
+ *
25
+ * Обход по верхнему уровню и Обёрткам, а не по всему Документу: стоимость — число
26
+ * Блоков верхнего уровня, она не растёт от вложенности и заметна не будет даже
27
+ * на каждой транзакции.
28
+ */
29
+ export declare function tocDocumentHeadings(editor: Editor, { levels }: Pick<TocToolOptions, "levels">): TocDocumentHeading[];
30
+ //# sourceMappingURL=documentHeadings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentHeadings.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/toc/documentHeadings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAO1E,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,GACzC,kBAAkB,EAAE,CAkBtB"}
@@ -0,0 +1,20 @@
1
+ import { WRAPPER_NODE } from "../../core/nodeNames.js";
2
+ export function tocDocumentHeadings(editor, { levels }) {
3
+ const headings = [];
4
+ const visit = (parent, start) => parent.forEach((node, offset) => {
5
+ const pos = start + offset;
6
+ if (node.type.name === WRAPPER_NODE)
7
+ return visit(node, pos + 1);
8
+ if (node.type.name !== "heading")
9
+ return;
10
+ const level = node.attrs.level;
11
+ const text = node
12
+ .textBetween(0, node.content.size, "", (leaf) => leaf.type.name === "hardBreak" ? "" : leaf.textContent)
13
+ .trim();
14
+ if (text && levels.includes(level))
15
+ headings.push({ level, text, pos });
16
+ });
17
+ visit(editor.state.doc, 0);
18
+ return headings;
19
+ }
20
+ //# sourceMappingURL=documentHeadings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentHeadings.js","sourceRoot":"","sources":["../../../../src/editor/features/toc/documentHeadings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAmCvD,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,EAAE,MAAM,EAAkC;IAE1C,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAiB,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI;aACd,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CACvD;aACA,IAAI,EAAE,CAAC;QACV,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IACL,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -26,6 +26,10 @@ export interface TocHeading {
26
26
  * Документ лежит глубже, в узле движка — Панель и строка статуса снаружи него.
27
27
  */
28
28
  export declare function documentRoot(target: HTMLElement): HTMLElement;
29
- /** Заголовки Документа в порядке чтения. */
30
- export declare function collectHeadings(target: HTMLElement): TocHeading[];
29
+ /**
30
+ * Заголовки Документа в порядке чтения. `only` — какие уровни (1–4) берутся:
31
+ * остальные не попадают в список, и глубина (`depth`) считается от самого
32
+ * крупного из оставшихся. Нет — все.
33
+ */
34
+ export declare function collectHeadings(target: HTMLElement, only?: readonly number[]): TocHeading[];
31
35
  //# sourceMappingURL=headings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"headings.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/toc/headings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8BAA8B;AAC9B,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,OAAO,EAAE,WAAW,CAAC;IACrB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAcD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE7D;AAUD,4CAA4C;AAC5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,EAAE,CAejE"}
1
+ {"version":3,"file":"headings.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/toc/headings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8BAA8B;AAC9B,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,OAAO,EAAE,WAAW,CAAC;IACrB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAcD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE7D;AAUD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,EAAE,CAkB3F"}
@@ -10,9 +10,11 @@ function isStructural(heading, root) {
10
10
  }
11
11
  return true;
12
12
  }
13
- export function collectHeadings(target) {
13
+ export function collectHeadings(target, only) {
14
14
  const root = documentRoot(target);
15
- const found = [...root.querySelectorAll(HEADING)].filter((heading) => isStructural(heading, root) && heading.textContent?.trim());
15
+ const found = [...root.querySelectorAll(HEADING)].filter((heading) => isStructural(heading, root) &&
16
+ heading.textContent?.trim() &&
17
+ (!only || only.includes(Number(heading.tagName[1]))));
16
18
  const levels = found.map((heading) => Number(heading.tagName[1]));
17
19
  const top = Math.min(...levels);
18
20
  return found.map((element, index) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"headings.js","sourceRoot":"","sources":["../../../../src/editor/features/toc/headings.ts"],"names":[],"mappings":"AAyBA,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAUjC,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAM5C,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,OAAO,MAAM,CAAC,aAAa,CAAc,cAAc,CAAC,IAAI,MAAM,CAAC;AACrE,CAAC;AAGD,SAAS,YAAY,CAAC,OAAgB,EAAE,IAAiB;IACvD,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAGlC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAc,OAAO,CAAC,CAAC,CAAC,MAAM,CACnE,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CACxE,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,OAAO;QACP,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAE;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAE,GAAG,GAAG;KAC5B,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"headings.js","sourceRoot":"","sources":["../../../../src/editor/features/toc/headings.ts"],"names":[],"mappings":"AAyBA,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAUjC,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAM5C,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,OAAO,MAAM,CAAC,aAAa,CAAc,cAAc,CAAC,IAAI,MAAM,CAAC;AACrE,CAAC;AAGD,SAAS,YAAY,CAAC,OAAgB,EAAE,IAAiB;IACvD,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,MAAM,UAAU,eAAe,CAAC,MAAmB,EAAE,IAAwB;IAC3E,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAGlC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAc,OAAO,CAAC,CAAC,CAAC,MAAM,CACnE,CAAC,OAAO,EAAE,EAAE,CACV,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;QAC3B,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE;QAC3B,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvD,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,OAAO;QACP,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAE;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAE,GAAG,GAAG;KAC5B,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import type { TocToolOptions } from "../../core/toolOptions.js";
3
+ import type { TocToolState } from "../../core/toolState.js";
4
+ /**
5
+ * Снимок Состояния `toc` для `useRichTextToolState`: заголовки из
6
+ * `tocDocumentHeadings` без позиций (они в контракт не входят) и текущий раздел.
7
+ * `at` — индекс текущего раздела, который сообщило ядро Оглавления.
8
+ */
9
+ export declare function tocSnapshot(editor: Editor, options: Pick<TocToolOptions, "levels">, at: number | undefined): TocToolState;
10
+ //# sourceMappingURL=tocSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tocSnapshot.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/toc/tocSnapshot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5E;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EACvC,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,YAAY,CAOd"}
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { tocDocumentHeadings } from "./documentHeadings.js";
3
+ export function tocSnapshot(editor, options, at) {
4
+ const headings = tocDocumentHeadings(editor, options).map(({ level, text }, index) => ({ level, text, index }));
5
+ const current = headings.length ? Math.min(Math.max(at ?? 0, 0), headings.length - 1) : -1;
6
+ return { headings, current };
7
+ }
8
+ //# sourceMappingURL=tocSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tocSnapshot.js","sourceRoot":"","sources":["../../../../src/editor/features/toc/tocSnapshot.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAKb,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAO5D,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,OAAuC,EACvC,EAAsB;IAEtB,MAAM,QAAQ,GAAqB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CACzE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CACrD,CAAC;IAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ToolDescriptor } from "../../core/toolDescriptor.js";
2
+ import type { TocToolOptions } from "../../core/toolOptions.js";
3
+ /** Умолчания Опций: переменная `TopBar` (ADR-0016), все четыре уровня, список в 240 пикселей. */
4
+ export declare const TOC_DEFAULTS: TocToolOptions;
5
+ export declare const TOC_TOOL: ToolDescriptor;
6
+ //# sourceMappingURL=tocTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tocTool.d.ts","sourceRoot":"","sources":["../../../../src/editor/features/toc/tocTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAY,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAa1E,iGAAiG;AACjG,eAAO,MAAM,YAAY,EAAE,cAI1B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,cAgBtB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ const TOC_LEVELS = [1, 2, 3, 4];
3
+ export const TOC_DEFAULTS = {
4
+ offsetVar: "--topbar-h",
5
+ levels: TOC_LEVELS,
6
+ listWidth: 240,
7
+ };
8
+ export const TOC_TOOL = {
9
+ name: "toc",
10
+ defaults: TOC_DEFAULTS,
11
+ checks: {
12
+ offsetVar: (value) => typeof value === "string" && /^--[\w-]+$/.test(value),
13
+ levels: (value) => Array.isArray(value) &&
14
+ value.length > 0 &&
15
+ value.every((level) => TOC_LEVELS.includes(level)),
16
+ listWidth: (value) => (typeof value === "number" && Number.isFinite(value) && value > 0) ||
17
+ (typeof value === "string" && value.trim() !== ""),
18
+ },
19
+ commands: ({ bridge }) => ({ jumpTo: bridge.jumpToc }),
20
+ };
21
+ //# sourceMappingURL=tocTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tocTool.js","sourceRoot":"","sources":["../../../../src/editor/features/toc/tocTool.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAeb,MAAM,UAAU,GAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAGrD,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,GAAG;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE;QAEN,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3E,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAE,UAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5E,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YAClE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;KACrD;IAED,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAmB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;CACxE,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type RefObject } from "react";
2
+ import type { RichTextTools } from "../core/toolOptions.js";
3
+ import type { RichTextEditorHandle } from "../RichTextEditor.js";
4
+ /**
5
+ * Состояние Инструмента по имени: тип из карты `RichTextTools`. Имя, которого в
6
+ * карте нет, — `unknown`: типизация добровольна, и Инструмент без записи в карте
7
+ * не ломает сборку.
8
+ */
9
+ export type RichTextToolState<Name extends string> = Name extends keyof RichTextTools ? RichTextTools[Name] extends {
10
+ state: infer State;
11
+ } ? State : unknown : unknown;
12
+ /**
13
+ * Состояние встроенного Инструмента для своего экрана: «3 из 12» в Строке
14
+ * статуса из Поиска, внешняя навигация из заголовков Оглавления. Имя —
15
+ * Инструмент из набора `tools`, а тип снимка выводится из карты
16
+ * `RichTextTools`: `search` отдаёт `SearchToolState`, `toc` — `TocToolState`.
17
+ *
18
+ * ПЕРЕРИСОВКА — ТОЛЬКО ПРИ СМЕНЕ СНИМКА. Снимок пересчитывается на каждую
19
+ * транзакцию движка и на сигналы кита, которых в движке нет: открытие и закрытие
20
+ * панели Поиска, смена текущего раздела Оглавления при прокрутке. Экран
21
+ * перерисовывается, когда результат стал другим (простые данные — примитивы,
22
+ * массивы, простые объекты — сравниваются по значению, как у
23
+ * `useRichTextEditorState`; `Date`, `Map`, `Set` и экземпляры классов — по
24
+ * ссылке), поэтому набор текста, не меняющий снимок, его не трогает. Срез из `selector` сравнивается так же: `(state) => state.total`
25
+ * подписывает экран на одно число.
26
+ *
27
+ * `null` — до монтажа и в первом рендере экрана, на сервере, а также когда
28
+ * Инструмента нет в наборе `tools`: пресеты `toc` не включают, его включают
29
+ * именем или записью `tool("toc")`. Селектор при `null` не вызывается. Один и
30
+ * тот же `ref` отдаётся в `RichTextEditor`.
31
+ *
32
+ * Снимок — данные без DOM-узлов и позиций ProseMirror; изменять его не нужно.
33
+ * Хук в стартовый граф `RichTextEditor` не входит: его цена — только у экрана,
34
+ * который его импортировал.
35
+ *
36
+ * @example
37
+ * const ref = useRef<RichTextEditorHandle>(null);
38
+ * const total = useRichTextToolState(ref, "search", (state) => state.total);
39
+ * const headings = useRichTextToolState(ref, "toc", (state) => state.headings);
40
+ */
41
+ export declare function useRichTextToolState<Name extends string>(ref: RefObject<RichTextEditorHandle | null>, name: Name): RichTextToolState<Name> | null;
42
+ export declare function useRichTextToolState<Name extends string, Slice>(ref: RefObject<RichTextEditorHandle | null>, name: Name, selector: (state: RichTextToolState<Name>) => Slice): Slice | null;
43
+ //# sourceMappingURL=useRichTextToolState.d.ts.map