superdoc 2.29.0-next.3 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/dist/chunks/{FindReplaceSurface-BKVHzhQ4.es.js → FindReplaceSurface-B_5ggdWg.es.js} +1 -1
  2. package/dist/chunks/{FindReplaceSurface-BNDrJ6VS.cjs → FindReplaceSurface-fVHxPXtn.cjs} +1 -1
  3. package/dist/chunks/{PasswordPromptSurface-6mF6Azda.es.js → PasswordPromptSurface-CZqhDQQ1.es.js} +1 -1
  4. package/dist/chunks/{PasswordPromptSurface-BNkaztaP.cjs → PasswordPromptSurface-x8GNmMJT.cjs} +1 -1
  5. package/dist/chunks/{PdfViewer-D4lVeOJu.es.js → PdfViewer-CW09MNrB.es.js} +70 -105
  6. package/dist/chunks/{PdfViewer-boENOZdF.cjs → PdfViewer-CkrAHpC-.cjs} +74 -109
  7. package/dist/chunks/{_plugin-vue_export-helper-6MBoygIY.cjs → _plugin-vue_export-helper-BkbCxNeT.cjs} +31 -7
  8. package/dist/chunks/{_plugin-vue_export-helper-CsJQtMvr.es.js → _plugin-vue_export-helper-DRPRMkeA.es.js} +20 -8
  9. package/dist/chunks/{constants-DpXuDx_g.cjs → constants-BeeNZoQp.cjs} +1 -1
  10. package/dist/chunks/{constants-B6VBlmKp.es.js → constants-BvNs_ybI.es.js} +1 -1
  11. package/dist/chunks/{create-super-doc-ui-BFt8agAI.es.js → create-super-doc-ui-Dc8dQAMc.es.js} +89 -137
  12. package/dist/chunks/{create-super-doc-ui-BAGOnYGM.cjs → create-super-doc-ui-L60GhVAX.cjs} +211 -259
  13. package/dist/collaboration-upgrade-engine.cjs +1 -1
  14. package/dist/collaboration-upgrade-engine.es.js +1 -1
  15. package/dist/document-api/src/capabilities/html-markdown-support.d.ts +4 -6
  16. package/dist/document-api/src/comments/comments.d.ts +2 -0
  17. package/dist/document-api/src/contract/command-catalog.d.ts +1 -1
  18. package/dist/document-api/src/contract/operation-definitions.d.ts +2 -2
  19. package/dist/document-api/src/contract/operation-registry.d.ts +10 -9
  20. package/dist/document-api/src/index.d.ts +8 -7
  21. package/dist/document-api/src/insert/insert.d.ts +2 -2
  22. package/dist/document-api/src/replace/replace.d.ts +3 -2
  23. package/dist/document-api/src/types/address.d.ts +3 -0
  24. package/dist/document-api/src/types/temporary-mutation.d.ts +5 -1
  25. package/dist/document-api/src/write/write.d.ts +12 -6
  26. package/dist/public/ui-react.cjs +1 -1
  27. package/dist/public/ui-react.es.js +1 -1
  28. package/dist/public/ui-vue.cjs +1 -1
  29. package/dist/public/ui-vue.es.js +1 -1
  30. package/dist/public/ui.cjs +1 -1
  31. package/dist/public/ui.es.js +1 -1
  32. package/dist/style.css +1 -1
  33. package/dist/style.layered.css +1 -1
  34. package/dist/superdoc/src/SuperDoc.vue.d.ts +132 -58
  35. package/dist/superdoc/src/components/CommentsLayer/CommentDialog.vue.d.ts +28 -13
  36. package/dist/superdoc/src/components/CommentsLayer/collect-removed-comment-ids.d.ts +11 -1
  37. package/dist/superdoc/src/components/CommentsLayer/collect-tracked-change-thread.d.ts +19 -2
  38. package/dist/superdoc/src/components/CommentsLayer/comment-urls.d.ts +1 -1
  39. package/dist/superdoc/src/components/CommentsLayer/commentsList/super-comments-list.d.ts +23 -20
  40. package/dist/superdoc/src/components/CommentsLayer/floating-comment-positioning.d.ts +24 -23
  41. package/dist/superdoc/src/components/CommentsLayer/helpers.d.ts +1 -4
  42. package/dist/superdoc/src/components/CommentsLayer/tracked-change-threading.d.ts +16 -2
  43. package/dist/superdoc/src/components/CommentsLayer/use-comment.d.ts +28 -13
  44. package/dist/superdoc/src/components/PdfViewer/PdfViewer.vue.d.ts +132 -45
  45. package/dist/superdoc/src/components/PdfViewer/PdfViewerDocument.vue.d.ts +62 -16
  46. package/dist/superdoc/src/components/PdfViewer/PdfViewerPage.vue.d.ts +77 -17
  47. package/dist/superdoc/src/components/PdfViewer/pdf-viewer-types.d.ts +45 -0
  48. package/dist/superdoc/src/components/Whiteboard/WhiteboardLayer.vue.d.ts +80 -16
  49. package/dist/superdoc/src/components/Whiteboard/WhiteboardPage.vue.d.ts +48 -13
  50. package/dist/superdoc/src/components/Whiteboard/use-whiteboard.d.ts +30 -15
  51. package/dist/superdoc/src/components/Whiteboard/whiteboard-types.d.ts +13 -0
  52. package/dist/superdoc/src/components/surfaces/focusable-selector.d.ts +1 -5
  53. package/dist/superdoc/src/components/surfaces/watermark-surface-runtime.d.ts +7 -7
  54. package/dist/superdoc/src/composables/find-shortcut-owner.d.ts +16 -9
  55. package/dist/superdoc/src/composables/replace-continuation.d.ts +11 -15
  56. package/dist/superdoc/src/composables/use-comment-small-screen.d.ts +11 -7
  57. package/dist/superdoc/src/composables/use-compact-comment-popover.d.ts +44 -18
  58. package/dist/superdoc/src/composables/use-document.d.ts +1210 -30
  59. package/dist/superdoc/src/composables/use-field.d.ts +88 -25
  60. package/dist/superdoc/src/composables/use-find-replace.d.ts +13 -3
  61. package/dist/superdoc/src/composables/use-password-prompt.d.ts +23 -24
  62. package/dist/superdoc/src/composables/use-viewport-fit.d.ts +62 -26
  63. package/dist/superdoc/src/composables/useUiFontFamily.d.ts +3 -11
  64. package/dist/superdoc/src/core/SuperDoc.d.ts +4 -4
  65. package/dist/superdoc/src/core/collaboration/collaboration-comments.d.ts +9 -4
  66. package/dist/superdoc/src/core/collaboration/helpers.d.ts +20 -3
  67. package/dist/superdoc/src/core/collaboration/permissions.d.ts +15 -10
  68. package/dist/superdoc/src/core/collaboration/resolve-v2-collaboration-target.d.ts +4 -3
  69. package/dist/superdoc/src/core/collaboration/v2-awareness-bridge.d.ts +2 -1
  70. package/dist/superdoc/src/core/config/merge-comments-config.d.ts +1 -5
  71. package/dist/superdoc/src/core/config/merge-defined.d.ts +3 -8
  72. package/dist/superdoc/src/core/config/normalize-hyperlinks-config.d.ts +7 -12
  73. package/dist/superdoc/src/core/config/normalize-surfaces-config.d.ts +9 -12
  74. package/dist/superdoc/src/core/config/normalize-ui-config.d.ts +1 -12
  75. package/dist/superdoc/src/core/create-app.d.ts +13 -24
  76. package/dist/superdoc/src/core/editor-runtime/conformance/fake-v2-runtime.d.ts +2 -1
  77. package/dist/superdoc/src/core/editor-runtime/editor-runtime-registry.d.ts +2 -1
  78. package/dist/superdoc/src/core/editor-runtime/index.d.ts +1 -1
  79. package/dist/superdoc/src/core/editor-runtime/types.d.ts +2 -1
  80. package/dist/superdoc/src/core/editor-runtime/v2/v2-session-shortcut-routes.d.ts +1 -1
  81. package/dist/superdoc/src/core/helpers/export.d.ts +3 -2
  82. package/dist/superdoc/src/core/helpers/file.d.ts +8 -45
  83. package/dist/superdoc/src/core/helpers/normalize-track-changes-config.d.ts +6 -60
  84. package/dist/superdoc/src/core/pdf/helpers/constants.d.ts +2 -2
  85. package/dist/superdoc/src/core/pdf/helpers/floor.d.ts +1 -1
  86. package/dist/superdoc/src/core/pdf/helpers/range.d.ts +1 -1
  87. package/dist/superdoc/src/core/pdf/helpers/read-file.d.ts +1 -1
  88. package/dist/superdoc/src/core/pdf/pdf-adapter.d.ts +28 -61
  89. package/dist/superdoc/src/core/superdoc-ui-owner.d.ts +1 -1
  90. package/dist/superdoc/src/core/surface-manager.d.ts +21 -83
  91. package/dist/superdoc/src/core/types/index.d.ts +41 -23
  92. package/dist/superdoc/src/core/v2-integration/browser-peer-runtime.d.ts +5 -3
  93. package/dist/superdoc/src/core/v2-integration/cdn-engine-loader.d.ts +3 -13
  94. package/dist/superdoc/src/core/v2-integration/internal-vue-runtime.d.ts +64 -59
  95. package/dist/superdoc/src/core/v2-integration/v2-integration.d.ts +10 -10
  96. package/dist/superdoc/src/core/whiteboard/Whiteboard.d.ts +22 -208
  97. package/dist/superdoc/src/core/whiteboard/WhiteboardPage.d.ts +163 -189
  98. package/dist/superdoc/src/core/whiteboard/helpers/createTextarea.d.ts +14 -1
  99. package/dist/superdoc/src/core/whiteboard/helpers/flattenPoints.d.ts +1 -1
  100. package/dist/superdoc/src/core/whiteboard/helpers/getRandomId.d.ts +1 -1
  101. package/dist/superdoc/src/helpers/comment-focus.d.ts +21 -4
  102. package/dist/superdoc/src/helpers/deprecation.d.ts +5 -11
  103. package/dist/superdoc/src/helpers/interaction-trace.d.ts +7 -24
  104. package/dist/superdoc/src/helpers/mark-raw-component.d.ts +1 -0
  105. package/dist/superdoc/src/helpers/object-guards.d.ts +2 -5
  106. package/dist/superdoc/src/helpers/selection-source.d.ts +1 -1
  107. package/dist/superdoc/src/helpers/use-selection.d.ts +35 -15
  108. package/dist/superdoc/src/helpers/v2-author-required-rejection.d.ts +8 -11
  109. package/dist/superdoc/src/helpers/v2-bulk-decision-event.d.ts +9 -7
  110. package/dist/superdoc/src/helpers/v2-keyboard-edit-rejection.d.ts +8 -7
  111. package/dist/superdoc/src/helpers/v2-mutation-exception.d.ts +12 -8
  112. package/dist/superdoc/src/helpers/v2-review-target.d.ts +11 -1
  113. package/dist/superdoc/src/helpers/v2-selection-sync.d.ts +40 -14
  114. package/dist/superdoc/src/helpers/v2-typing-mutation-event.d.ts +14 -5
  115. package/dist/superdoc/src/icons.d.ts +11 -19
  116. package/dist/superdoc/src/internal/diagnostics/diagnostic-dedupe.d.ts +6 -15
  117. package/dist/superdoc/src/internal/diagnostics/translate-diagnostic.d.ts +6 -4
  118. package/dist/superdoc/src/internal/toolbar/built-in/AIWriter.vue.d.ts +2 -2
  119. package/dist/superdoc/src/internal/toolbar/built-in/ButtonGroup.vue.d.ts +4 -24
  120. package/dist/superdoc/src/internal/toolbar/built-in/FontFamilyCombobox.vue.d.ts +34 -0
  121. package/dist/superdoc/src/internal/toolbar/built-in/FontSizeCombobox.vue.d.ts +34 -0
  122. package/dist/superdoc/src/internal/toolbar/built-in/LinkInput.vue.d.ts +1 -1
  123. package/dist/superdoc/src/internal/toolbar/built-in/PageNumberMenu.vue.d.ts +25 -15
  124. package/dist/superdoc/src/internal/toolbar/built-in/Toolbar.vue.d.ts +9 -3
  125. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarComboBox.vue.d.ts +12 -14
  126. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarDropdown.vue.d.ts +1 -11
  127. package/dist/superdoc/src/internal/toolbar/built-in/color-dropdown-helpers.d.ts +9 -19
  128. package/dist/superdoc/src/internal/toolbar/built-in/constants.d.ts +14 -45
  129. package/dist/superdoc/src/internal/toolbar/built-in/default-items.d.ts +34 -17
  130. package/dist/superdoc/src/internal/toolbar/built-in/font-options.d.ts +15 -1
  131. package/dist/superdoc/src/internal/toolbar/built-in/font-typeahead.d.ts +37 -7
  132. package/dist/superdoc/src/internal/toolbar/built-in/format-negation.d.ts +10 -4
  133. package/dist/superdoc/src/internal/toolbar/built-in/general.d.ts +12 -1
  134. package/dist/superdoc/src/internal/toolbar/built-in/helpers.d.ts +9 -4
  135. package/dist/superdoc/src/internal/toolbar/built-in/list-style-buttons.d.ts +2 -2
  136. package/dist/superdoc/src/internal/toolbar/built-in/page-number-feedback.d.ts +4 -5
  137. package/dist/superdoc/src/internal/toolbar/built-in/scroll-helpers.d.ts +3 -4
  138. package/dist/superdoc/src/internal/toolbar/built-in/toolbar-focus-helpers.d.ts +10 -2
  139. package/dist/superdoc/src/internal/toolbar/built-in/toolbarIcons.d.ts +78 -145
  140. package/dist/superdoc/src/internal/toolbar/built-in/toolbarTexts.d.ts +61 -61
  141. package/dist/superdoc/src/internal/toolbar/built-in/url-safety.d.ts +11 -3
  142. package/dist/superdoc/src/internal/toolbar/built-in/use-toolbar-item.d.ts +110 -48
  143. package/dist/superdoc/src/internal/toolbar/built-in-toolbar.d.ts +11 -30
  144. package/dist/superdoc/src/internal/toolbar/compatibility-catalog.d.ts +4 -3
  145. package/dist/superdoc/src/internal/toolbar/image-upload.d.ts +29 -39
  146. package/dist/superdoc/src/internal/toolbar/toolbar-item-aliases.d.ts +1 -1
  147. package/dist/superdoc/src/public/browser-document-api.d.ts +5 -4
  148. package/dist/superdoc/src/public/index.d.cts +26 -0
  149. package/dist/superdoc/src/public/index.d.ts +13 -0
  150. package/dist/superdoc/src/public/ui/commands.d.ts +14 -13
  151. package/dist/superdoc/src/public/ui/create-super-doc-ui.d.ts +1 -1
  152. package/dist/superdoc/src/public/ui/entity-at.d.ts +2 -1
  153. package/dist/superdoc/src/public/ui/format-painter-helpers.d.ts +2 -8
  154. package/dist/superdoc/src/public/ui/style-match-patch.d.ts +2 -2
  155. package/dist/superdoc/src/public/ui/types.d.ts +1 -1
  156. package/dist/superdoc/src/stores/comments-store.d.ts +231 -105
  157. package/dist/superdoc/src/stores/helpers/comment-document-scope.d.ts +22 -0
  158. package/dist/superdoc/src/stores/helpers/comment-grouping.d.ts +30 -0
  159. package/dist/superdoc/src/stores/helpers/comment-identity.d.ts +40 -0
  160. package/dist/superdoc/src/stores/helpers/floating-comment-instances.d.ts +48 -13
  161. package/dist/superdoc/src/stores/helpers/pending-selection-snapshot.d.ts +17 -0
  162. package/dist/superdoc/src/stores/helpers/tracked-change-compaction.d.ts +16 -0
  163. package/dist/superdoc/src/stores/helpers/tracked-change-decision.d.ts +45 -0
  164. package/dist/superdoc/src/stores/helpers/tracked-change-identity.d.ts +19 -0
  165. package/dist/superdoc/src/stores/helpers/tracked-change-row-values.d.ts +0 -4
  166. package/dist/superdoc/src/stores/helpers/tracked-change-thread-index.d.ts +21 -24
  167. package/dist/superdoc/src/stores/superdoc-store.d.ts +694 -316
  168. package/dist/superdoc.cjs +1804 -2782
  169. package/dist/superdoc.es.js +1720 -2699
  170. package/dist-cdn/style.layered.css +1 -1
  171. package/dist-cdn/superdoc.min.css +1 -1
  172. package/dist-cdn/superdoc.min.js +42 -42
  173. package/package.json +3 -2
  174. package/dist/superdoc/src/internal/toolbar/index.d.ts +0 -10
  175. package/dist/superdoc/src/main.d.ts +0 -1
@@ -1,61 +1,61 @@
1
- export namespace toolbarTexts {
2
- let bold: string;
3
- let fontFamily: string;
4
- let ai: string;
5
- let fontSize: string;
6
- let italic: string;
7
- let underline: string;
8
- let highlight: string;
9
- let strikethrough: string;
10
- let color: string;
11
- let search: string;
12
- let link: string;
13
- let image: string;
14
- let tableOfContents: string;
15
- let watermark: string;
16
- let pageNumber: string;
17
- let table: string;
18
- let tableActions: string;
19
- let addRowBefore: string;
20
- let addRowAfter: string;
21
- let addColumnBefore: string;
22
- let addColumnAfter: string;
23
- let deleteRow: string;
24
- let deleteColumn: string;
25
- let deleteTable: string;
26
- let removeBorders: string;
27
- let mergeCells: string;
28
- let splitCell: string;
29
- let fixTables: string;
30
- let textAlign: string;
31
- let bulletList: string;
32
- let numberedList: string;
33
- let indentLeft: string;
34
- let indentRight: string;
35
- let directionLtr: string;
36
- let directionRtl: string;
37
- let zoom: string;
38
- let measurementUnit: string;
39
- let undo: string;
40
- let redo: string;
41
- let trackChanges: string;
42
- let trackChangesAccept: string;
43
- let trackChangesReject: string;
44
- let trackChangesOriginal: string;
45
- let trackChangesFinal: string;
46
- let clearFormatting: string;
47
- let copyFormat: string;
48
- let lineHeight: string;
49
- let formatText: string;
50
- let ruler: string;
51
- let formattingMarks: string;
52
- let pageBreak: string;
53
- let documentEditingMode: string;
54
- let documentSuggestingMode: string;
55
- let documentViewingMode: string;
56
- let documentEditingModeDescription: string;
57
- let documentSuggestingModeDescription: string;
58
- let documentViewingModeDescription: string;
59
- let linkedStyles: string;
60
- let updateLinkedStyle: string;
61
- }
1
+ export declare const toolbarTexts: {
2
+ bold: string;
3
+ fontFamily: string;
4
+ ai: string;
5
+ fontSize: string;
6
+ italic: string;
7
+ underline: string;
8
+ highlight: string;
9
+ strikethrough: string;
10
+ color: string;
11
+ search: string;
12
+ link: string;
13
+ image: string;
14
+ tableOfContents: string;
15
+ watermark: string;
16
+ pageNumber: string;
17
+ table: string;
18
+ tableActions: string;
19
+ addRowBefore: string;
20
+ addRowAfter: string;
21
+ addColumnBefore: string;
22
+ addColumnAfter: string;
23
+ deleteRow: string;
24
+ deleteColumn: string;
25
+ deleteTable: string;
26
+ removeBorders: string;
27
+ mergeCells: string;
28
+ splitCell: string;
29
+ fixTables: string;
30
+ textAlign: string;
31
+ bulletList: string;
32
+ numberedList: string;
33
+ indentLeft: string;
34
+ indentRight: string;
35
+ directionLtr: string;
36
+ directionRtl: string;
37
+ zoom: string;
38
+ measurementUnit: string;
39
+ undo: string;
40
+ redo: string;
41
+ trackChanges: string;
42
+ trackChangesAccept: string;
43
+ trackChangesReject: string;
44
+ trackChangesOriginal: string;
45
+ trackChangesFinal: string;
46
+ clearFormatting: string;
47
+ copyFormat: string;
48
+ lineHeight: string;
49
+ formatText: string;
50
+ ruler: string;
51
+ formattingMarks: string;
52
+ pageBreak: string;
53
+ documentEditingMode: string;
54
+ documentSuggestingMode: string;
55
+ documentViewingMode: string;
56
+ documentEditingModeDescription: string;
57
+ documentSuggestingModeDescription: string;
58
+ documentViewingModeDescription: string;
59
+ linkedStyles: string;
60
+ updateLinkedStyle: string;
61
+ };
@@ -1,8 +1,16 @@
1
+ /**
2
+ * Minimal href sanitizer for the built-in link popover.
3
+ *
4
+ * The v1 toolbar used the shared `@superdoc/url-validation` package, which is not
5
+ * a resolvable runtime dependency of the published `superdoc` ES build. This
6
+ * keeps the same fail-closed posture (only known-safe schemes pass) without
7
+ * pulling in that package: dangerous schemes (`javascript:`, `data:`,
8
+ * `vbscript:`) return `null`, mirroring the v1 contract that callers treat a
9
+ * `null` result as an invalid URL.
10
+ */
1
11
  /**
2
12
  * Validate and normalize an href. Returns `{ href }` for safe values, or `null`.
3
- * @param {string} value
4
- * @returns {{ href: string }|null}
5
13
  */
6
- export function sanitizeHref(value: string): {
14
+ export declare function sanitizeHref(value: unknown): {
7
15
  href: string;
8
16
  } | null;
@@ -1,49 +1,111 @@
1
- export function useToolbarItem(options: any): {
2
- initiallyDisabled: boolean;
3
- unref: () => {};
4
- activate: (attrs?: {}, ...args: any[]) => void;
5
- deactivate: () => void;
6
- setDisabled: (state: any) => void;
7
- resetDisabled: () => void;
8
- onActivate: any;
9
- onDeactivate: any;
10
- id: import('vue').Ref<string, string>;
11
- name: import('vue').Ref<any, any>;
12
- type: any;
13
- command: any;
14
- noArgumentCommand: any;
15
- icon: import('vue').Ref<any, any>;
16
- tooltip: import('vue').Ref<any, any>;
17
- group: import('vue').Ref<any, any>;
18
- attributes: import('vue').Ref<any, any>;
19
- disabled: import('vue').Ref<any, any>;
20
- active: import('vue').Ref<boolean, boolean>;
21
- expand: import('vue').Ref<boolean, boolean>;
22
- nestedOptions: import('vue').Ref<never[], never[]>;
23
- style: import('vue').Ref<any, any>;
24
- isNarrow: import('vue').Ref<any, any>;
25
- isWide: import('vue').Ref<any, any>;
26
- layoutWidth: import('vue').Ref<any, any>;
27
- argument: import('vue').Ref<any, any>;
28
- parentItem: import('vue').Ref<null, null>;
29
- iconColor: import('vue').Ref<any, any>;
30
- hasCaret: import('vue').Ref<any, any>;
31
- splitButton: import('vue').Ref<boolean, boolean>;
32
- splitButtonCommand: any;
33
- dropdownStyles: import('vue').Ref<any, any>;
34
- tooltipVisible: import('vue').Ref<any, any>;
35
- tooltipTimeout: import('vue').Ref<any, any>;
36
- defaultLabel: import('vue').Ref<any, any>;
37
- label: import('vue').Ref<any, any>;
38
- hideLabel: import('vue').Ref<any, any>;
39
- inlineTextInputVisible: import('vue').Ref<any, any>;
40
- hasInlineTextInput: import('vue').Ref<any, any>;
41
- restoreEditorFocus: boolean;
42
- markName: import('vue').Ref<any, any>;
43
- labelAttr: import('vue').Ref<any, any>;
44
- childItem: import('vue').Ref<null, null>;
45
- allowWithoutEditor: import('vue').Ref<any, any>;
46
- dropdownValueKey: import('vue').Ref<any, any>;
47
- selectedValue: import('vue').Ref<any, any>;
48
- inputRef: import('vue').Ref<any, any>;
1
+ import { CSSProperties, Ref } from 'vue';
2
+ declare const TOOLBAR_ITEM_TYPES: readonly ["button", "options", "separator", "dropdown", "overflow"];
3
+ export type ToolbarItemType = (typeof TOOLBAR_ITEM_TYPES)[number];
4
+ export interface ToolbarItemOption {
5
+ key?: string | number;
6
+ label?: string;
7
+ type?: string;
8
+ disabled?: boolean;
9
+ class?: unknown;
10
+ props?: Record<string, unknown>;
11
+ icon?: string | object | ((option: ToolbarItemOption) => unknown);
12
+ render?: () => unknown;
13
+ [member: string]: unknown;
14
+ }
15
+ export type ToolbarItemAttributes = {
16
+ ariaLabel?: string;
17
+ className?: unknown;
18
+ [attribute: string]: unknown;
49
19
  };
20
+ export type ToolbarItemStyle = string | CSSProperties;
21
+ export type ToolbarActivationAttributes = Record<string, unknown>;
22
+ export interface UseToolbarItemOptions {
23
+ type: ToolbarItemType;
24
+ name: string;
25
+ command?: unknown;
26
+ noArgumentCommand?: string;
27
+ icon?: string;
28
+ group?: string;
29
+ allowWithoutEditor?: boolean;
30
+ attributes?: ToolbarItemAttributes;
31
+ disabled?: boolean;
32
+ style?: ToolbarItemStyle;
33
+ isNarrow?: boolean;
34
+ isWide?: boolean;
35
+ layoutWidth?: number;
36
+ suppressActiveHighlight?: boolean;
37
+ argument?: unknown;
38
+ iconColor?: string;
39
+ hasCaret?: boolean;
40
+ splitButton?: boolean;
41
+ splitButtonCommand?: unknown;
42
+ restoreEditorFocus?: boolean;
43
+ dropdownStyles?: unknown;
44
+ tooltip?: string;
45
+ tooltipVisible?: boolean;
46
+ tooltipTimeout?: number;
47
+ defaultLabel?: string;
48
+ label?: string;
49
+ hideLabel?: boolean;
50
+ inlineTextInputVisible?: boolean;
51
+ hasInlineTextInput?: boolean;
52
+ markName?: string;
53
+ labelAttr?: string;
54
+ selectedValue?: string | number | null;
55
+ dropdownValueKey?: string;
56
+ inputRef?: unknown;
57
+ options?: readonly ToolbarItemOption[];
58
+ onActivate?: (attributes: ToolbarActivationAttributes, isMultiple?: boolean) => unknown;
59
+ onDeactivate?: () => unknown;
60
+ }
61
+ export interface ToolbarItem {
62
+ type: ToolbarItemType;
63
+ id: Ref<string>;
64
+ name: Ref<string>;
65
+ command?: unknown;
66
+ noArgumentCommand?: string;
67
+ splitButtonCommand?: unknown;
68
+ group: Ref<string>;
69
+ attributes: Ref<ToolbarItemAttributes>;
70
+ disabled: Ref<boolean | undefined>;
71
+ active: Ref<boolean>;
72
+ expand: Ref<boolean>;
73
+ nestedOptions: Ref<ToolbarItemOption[]>;
74
+ label: Ref<string | undefined>;
75
+ defaultLabel: Ref<string | undefined>;
76
+ icon: Ref<string | undefined>;
77
+ selectedValue: Ref<string | number | null | undefined>;
78
+ hideLabel: Ref<boolean | undefined>;
79
+ iconColor: Ref<string | undefined>;
80
+ hasCaret: Ref<boolean | undefined>;
81
+ splitButton: Ref<boolean>;
82
+ inlineTextInputVisible: Ref<boolean | undefined>;
83
+ hasInlineTextInput: Ref<boolean | undefined>;
84
+ style: Ref<ToolbarItemStyle | undefined>;
85
+ isNarrow: Ref<boolean | undefined>;
86
+ isWide: Ref<boolean | undefined>;
87
+ layoutWidth: Ref<number | undefined>;
88
+ tooltip: Ref<string | undefined>;
89
+ tooltipVisible: Ref<boolean | undefined>;
90
+ tooltipTimeout: Ref<number | undefined>;
91
+ argument: Ref<unknown>;
92
+ restoreEditorFocus: boolean;
93
+ dropdownStyles: Ref<unknown>;
94
+ dropdownValueKey: Ref<string | undefined>;
95
+ allowWithoutEditor: Ref<boolean | undefined>;
96
+ markName: Ref<string | undefined>;
97
+ labelAttr: Ref<string | undefined>;
98
+ inputRef: Ref<unknown>;
99
+ childItem: unknown;
100
+ parentItem: unknown;
101
+ initiallyDisabled: boolean;
102
+ isCustomToolbarItem?: boolean;
103
+ activate(attributes?: ToolbarActivationAttributes, isMultiple?: boolean): void;
104
+ deactivate(): void;
105
+ setDisabled(state: boolean): void;
106
+ resetDisabled(): void;
107
+ onActivate(attributes: ToolbarActivationAttributes, isMultiple?: boolean): unknown;
108
+ onDeactivate(): unknown;
109
+ }
110
+ export declare const useToolbarItem: (options: UseToolbarItemOptions) => ToolbarItem;
111
+ export {};
@@ -1,31 +1,11 @@
1
1
  import { EventEmitter } from 'eventemitter3';
2
- import { App, ComponentPublicInstance, Ref } from 'vue';
2
+ import { App, ComponentPublicInstance } from 'vue';
3
3
  import { Editor, SuperDoc, ToolbarCustomButton, ToolbarFontOption } from '../../core/types/index.js';
4
- import { BorrowedSuperDocUI, CustomCommandRegistrationResult, StyleCatalogItem, ToolbarSnapshotSlice } from '../../public/ui/types.js';
4
+ import { BorrowedSuperDocUI, CustomCommandRegistrationResult, SelectionCapture, StyleCatalogItem, ToolbarSnapshotSlice } from '../../public/ui/types.js';
5
+ import { ToolbarItem, ToolbarItemOption } from './built-in/use-toolbar-item.js';
5
6
  import { HighContrastMode } from '../../composables/use-high-contrast-mode.js';
6
- interface ToolbarItem {
7
- type: string;
8
- name: Ref<string>;
9
- command?: unknown;
10
- group: Ref<string>;
11
- attributes: Ref<Record<string, unknown>>;
12
- disabled: Ref<boolean>;
13
- active: Ref<boolean>;
14
- expand: Ref<boolean>;
15
- nestedOptions: Ref<unknown[]>;
16
- label: Ref<unknown>;
17
- defaultLabel: Ref<unknown>;
18
- icon: Ref<unknown>;
19
- selectedValue: Ref<unknown>;
20
- allowWithoutEditor: Ref<boolean | undefined>;
21
- initiallyDisabled: boolean;
22
- isCustomToolbarItem?: boolean;
23
- activate(attributes?: Record<string, unknown>, ...args: unknown[]): void;
24
- deactivate(): void;
25
- setDisabled(state: boolean): void;
26
- resetDisabled(): void;
27
- onActivate(attributes?: Record<string, unknown>, ...args: unknown[]): unknown;
28
- }
7
+ export type { ToolbarItem, ToolbarItemOption };
8
+ export type ToolbarCommandItem = Pick<ToolbarItem, 'name'> & Partial<Pick<ToolbarItem, 'type' | 'command' | 'isCustomToolbarItem'>>;
29
9
  type CustomButtonPayload = {
30
10
  argument?: unknown;
31
11
  option?: unknown;
@@ -52,8 +32,9 @@ type BuiltInToolbarConfig = {
52
32
  showPageNumberButton: boolean;
53
33
  uiDisplayFallbackFont?: string;
54
34
  };
35
+ type ToolbarSuperDoc = Partial<Pick<SuperDoc, 'activeEditor' | 'config' | 'ui' | 'uiConfig' | 'fonts' | 'on' | 'off' | 'emit' | 'focus' | 'toggleRuler' | 'toggleFormattingMarks' | 'setShowFormattingMarks'>>;
55
36
  type BuiltInToolbarOptions = {
56
- superdoc?: SuperDoc | null;
37
+ superdoc?: ToolbarSuperDoc | null;
57
38
  editor?: Editor | null;
58
39
  selector?: string | HTMLElement | null;
59
40
  element?: string | HTMLElement | null;
@@ -75,9 +56,10 @@ export declare class BuiltInToolbar extends EventEmitter {
75
56
  config: BuiltInToolbarConfig;
76
57
  toolbarItems: ToolbarItem[];
77
58
  overflowItems: ToolbarItem[];
59
+ pendingSelectionCapture: SelectionCapture | null | undefined;
78
60
  isDev: boolean;
79
61
  role: string;
80
- superdoc: SuperDoc | null | undefined;
62
+ superdoc: ToolbarSuperDoc | null | undefined;
81
63
  toolbarContainer: HTMLElement | null;
82
64
  toolbar: ComponentPublicInstance | null;
83
65
  _detachFontsChanged: (() => void) | null;
@@ -85,7 +67,7 @@ export declare class BuiltInToolbar extends EventEmitter {
85
67
  app?: App | null;
86
68
  activeEditor: Editor | null;
87
69
  ui: BorrowedSuperDocUI | null;
88
- snapshot: ToolbarSnapshotSlice | null;
70
+ snapshot: Partial<Pick<ToolbarSnapshotSlice, 'commands' | 'copyFormatActive'>> | null;
89
71
  _unsubscribeController: (() => void) | null;
90
72
  _detachFormatPainterModeChange: (() => void) | null;
91
73
  _customCommandRegs: Map<string, CustomCommandRegistrationResult<CustomButtonPayload>>;
@@ -128,7 +110,7 @@ export declare class BuiltInToolbar extends EventEmitter {
128
110
  * Main toolbar command entry point used by the rendered components.
129
111
  */
130
112
  emitCommand({ item, argument, option }: {
131
- item: ToolbarItem;
113
+ item: ToolbarCommandItem;
132
114
  argument?: unknown;
133
115
  option?: unknown;
134
116
  }): void;
@@ -138,4 +120,3 @@ export declare class BuiltInToolbar extends EventEmitter {
138
120
  * Create the rendered built-in toolbar for a `SuperDoc` instance.
139
121
  */
140
122
  export declare function createBuiltInToolbar(config: BuiltInToolbarOptions): BuiltInToolbar;
141
- export {};
@@ -1,9 +1,9 @@
1
1
  /** Layout regions a built-in toolbar item can be placed in. */
2
- export type ToolbarGroup = 'left' | 'center' | 'right';
2
+ type ToolbarGroup = 'left' | 'center' | 'right';
3
3
  /** How a documented built-in toolbar item is (or is not) backed on V2. */
4
- export type ToolbarItemDisposition = 'controller-routed' | 'host-routed' | 'shell-owned' | 'unsupported' | 'unresolved';
4
+ type ToolbarItemDisposition = 'controller-routed' | 'host-routed' | 'shell-owned' | 'unsupported' | 'unresolved';
5
5
  /** One documented built-in toolbar item and how it maps onto V2. */
6
- export interface BuiltInToolbarItemEntry {
6
+ interface BuiltInToolbarItemEntry {
7
7
  /** Legacy built-in item name (the id v1 toolbars and the docs use). */
8
8
  readonly name: string;
9
9
  /**
@@ -73,3 +73,4 @@ export declare function resolveBuiltInItemCommandId(name: string): string | null
73
73
  * kept exported so a future renderer/build guard can reuse it.
74
74
  */
75
75
  export declare function assertCatalogAlignedWithController(): void;
76
+ export {};
@@ -1,10 +1,32 @@
1
+ /**
2
+ * Interactive image acquisition for the built-in toolbar (SD-3567).
3
+ *
4
+ * The toolbar image button routes through the shared controller command
5
+ * `image` → `create.image`, which requires a base64 PNG/JPEG data-URI `src`.
6
+ * This module owns the browser file picker and the File → data-URI
7
+ * conversion; the toolbar dispatches the resulting payload through the
8
+ * normal controller command path.
9
+ */
10
+ /** Accept filter for the picker: PNG and JPEG only (V1 parity; OOXML-native formats). */
11
+ export declare const IMAGE_PICKER_ACCEPT = ".png,.jpg,.jpeg,image/png,image/jpeg";
12
+ type NamedBlob = Blob & {
13
+ name?: string;
14
+ };
15
+ interface ImageFilePickerOptions {
16
+ ownerDocument?: Document;
17
+ onPick?: (file: File) => void | Promise<void>;
18
+ onError?: (error: unknown) => void;
19
+ }
20
+ interface ImageFilePicker {
21
+ input: HTMLInputElement;
22
+ open: () => void;
23
+ destroy: () => void;
24
+ }
1
25
  /**
2
26
  * Whether a picked/dropped file is an insertable image (PNG/JPEG). Falls back
3
27
  * to the file extension when the browser reports no MIME type.
4
- * @param {File | null | undefined} file
5
- * @returns {boolean}
6
28
  */
7
- export function isSupportedImageFile(file: File | null | undefined): boolean;
29
+ export declare function isSupportedImageFile(file: File | null | undefined): boolean;
8
30
  /**
9
31
  * Read a File/Blob into a base64 data URI.
10
32
  *
@@ -12,52 +34,20 @@ export function isSupportedImageFile(file: File | null | undefined): boolean;
12
34
  * accepts those by extension, but `readAsDataURL` would then produce an
13
35
  * `application/octet-stream` data URI that `create.image` rejects. Rewrite
14
36
  * the media type from the filename so extension-accepted files still insert.
15
- * @param {Blob & { name?: string }} file
16
- * @returns {Promise<string>}
17
37
  */
18
- export function fileToDataUri(file: Blob & {
19
- name?: string;
20
- }): Promise<string>;
38
+ export declare function fileToDataUri(file: NamedBlob): Promise<string>;
21
39
  /**
22
40
  * Resolve the `create.image` src for a picked file. Uses the consumer's
23
41
  * `handleImageUpload` callback when configured (V1 contract:
24
42
  * `(file: File) => Promise<string>`). A returned non-data URL is fetched and
25
43
  * embedded, because `create.image` requires an embedded base64 data URI.
26
- * @param {File} file
27
- * @param {((file: File) => Promise<string>) | null | undefined} handleImageUpload
28
- * @returns {Promise<string>}
29
44
  */
30
- export function resolveImageSrc(file: File, handleImageUpload: ((file: File) => Promise<string>) | null | undefined): Promise<string>;
45
+ export declare function resolveImageSrc(file: File, handleImageUpload: ((file: File) => Promise<string>) | null | undefined): Promise<string>;
31
46
  /**
32
47
  * Hidden `<input type=file>` picker bound to one toolbar instance. The input
33
48
  * stays attached (hidden) so automation and tests can drive it; `destroy()`
34
49
  * removes it. Picking a file calls `onPick(file)`; an unsupported type or a
35
50
  * failed pick routes through `onError(error)`.
36
- *
37
- * @param {{
38
- * ownerDocument?: Document,
39
- * onPick?: (file: File) => unknown,
40
- * onError?: (error: Error) => void,
41
- * }} options
42
- * @returns {{ input: HTMLInputElement, open: () => void, destroy: () => void }}
43
- */
44
- export function createImageFilePicker({ ownerDocument, onPick, onError }?: {
45
- ownerDocument?: Document;
46
- onPick?: (file: File) => unknown;
47
- onError?: (error: Error) => void;
48
- }): {
49
- input: HTMLInputElement;
50
- open: () => void;
51
- destroy: () => void;
52
- };
53
- /**
54
- * Interactive image acquisition for the built-in toolbar (SD-3567).
55
- *
56
- * The toolbar image button routes through the shared controller command
57
- * `image` → `create.image`, which requires a base64 PNG/JPEG data-URI `src`.
58
- * This module owns the browser file picker and the File → data-URI
59
- * conversion; the toolbar dispatches the resulting payload through the
60
- * normal controller command path.
61
51
  */
62
- /** Accept filter for the picker: PNG and JPEG only (V1 parity; OOXML-native formats). */
63
- export const IMAGE_PICKER_ACCEPT: ".png,.jpg,.jpeg,image/png,image/jpeg";
52
+ export declare function createImageFilePicker({ ownerDocument, onPick, onError, }?: ImageFilePickerOptions): ImageFilePicker;
53
+ export {};
@@ -1,5 +1,5 @@
1
1
  /** Canonical toolbar item ids mapped to the names retained by the built-in runtime. */
2
- export const TOOLBAR_ITEM_ALIASES: Readonly<{
2
+ export declare const TOOLBAR_ITEM_ALIASES: Readonly<{
3
3
  'font-family': "fontFamily";
4
4
  'font-size': "fontSize";
5
5
  strikethrough: "strike";
@@ -1,4 +1,4 @@
1
- import { DocumentApi, DynamicInvokeRequest, InvokeRequest, InvokeResult, OperationId, OperationCancellation, PlainTextInsertInput, TextReplaceInput, TrackedTextMutationOptions } from '../../../document-api/src/index.js';
1
+ import { DocumentApi, DynamicInvokeRequest, InsertInput, InvokeRequest, InvokeResult, OperationId, OperationCancellation, ReplaceInput, TrackedReplaceMutationOptions, TrackedRichContentMutationOptions } from '../../../document-api/src/index.js';
2
2
  type MaybePromise<T> = T | Promise<T>;
3
3
  type BrowserDocumentApiObject<T> = {
4
4
  [K in keyof T]: BrowserDocumentApiValue<T[K]>;
@@ -14,13 +14,14 @@ type BrowserDocumentApiValue<T> = T extends (...args: infer Args) => infer Retur
14
14
  export type BrowserDocumentApi = Omit<BrowserDocumentApiObject<DocumentApi>, 'invoke'> & {
15
15
  invoke<T extends OperationId>(request: InvokeRequest<T>): MaybePromise<Awaited<InvokeResult<T>>>;
16
16
  invoke(request: DynamicInvokeRequest): unknown;
17
- insert(input: PlainTextInsertInput, options: TrackedTextMutationOptions & OperationCancellation): MaybePromise<Awaited<ReturnType<DocumentApi['insert']>>>;
18
- replace(input: Exclude<TextReplaceInput, {
17
+ insert(input: InsertInput, options: TrackedRichContentMutationOptions & OperationCancellation): MaybePromise<Awaited<ReturnType<DocumentApi['insert']>>>;
18
+ replace(input: Exclude<ReplaceInput, {
19
19
  target: {
20
20
  kind: 'story';
21
21
  storyType: 'body';
22
22
  };
23
- }>, options: TrackedTextMutationOptions): MaybePromise<Awaited<ReturnType<DocumentApi['replace']>>>;
23
+ text: string;
24
+ }>, options: TrackedReplaceMutationOptions): MaybePromise<Awaited<ReturnType<DocumentApi['replace']>>>;
24
25
  };
25
26
  /**
26
27
  * Every operation optional, at any depth.
@@ -111,6 +111,19 @@ import type { PermissionRangeEditor as __Cjs_PermissionRangeEditor } from './ind
111
111
  import type { PermissionRangeEditorResolution as __Cjs_PermissionRangeEditorResolution } from './index.js' with { "resolution-mode": "import" };
112
112
  import type { PermissionResolver as __Cjs_PermissionResolver } from './index.js' with { "resolution-mode": "import" };
113
113
  import type { PermissionResolverParams as __Cjs_PermissionResolverParams } from './index.js' with { "resolution-mode": "import" };
114
+ import type { ProofingCapabilities as __Cjs_ProofingCapabilities } from './index.js' with { "resolution-mode": "import" };
115
+ import type { ProofingCheckRequest as __Cjs_ProofingCheckRequest } from './index.js' with { "resolution-mode": "import" };
116
+ import type { ProofingCheckResult as __Cjs_ProofingCheckResult } from './index.js' with { "resolution-mode": "import" };
117
+ import type { ProofingConfig as __Cjs_ProofingConfig } from './index.js' with { "resolution-mode": "import" };
118
+ import type { ProofingError as __Cjs_ProofingError } from './index.js' with { "resolution-mode": "import" };
119
+ import type { ProofingIssue as __Cjs_ProofingIssue } from './index.js' with { "resolution-mode": "import" };
120
+ import type { ProofingIssueKind as __Cjs_ProofingIssueKind } from './index.js' with { "resolution-mode": "import" };
121
+ import type { ProofingProvider as __Cjs_ProofingProvider } from './index.js' with { "resolution-mode": "import" };
122
+ import type { ProofingSegment as __Cjs_ProofingSegment } from './index.js' with { "resolution-mode": "import" };
123
+ import type { ProofingSegmentMetadata as __Cjs_ProofingSegmentMetadata } from './index.js' with { "resolution-mode": "import" };
124
+ import type { ProofingStatus as __Cjs_ProofingStatus } from './index.js' with { "resolution-mode": "import" };
125
+ import type { ProofingSuggestRequest as __Cjs_ProofingSuggestRequest } from './index.js' with { "resolution-mode": "import" };
126
+ import type { ProofingSuggestResult as __Cjs_ProofingSuggestResult } from './index.js' with { "resolution-mode": "import" };
114
127
  import type { ResolvedFindReplaceTexts as __Cjs_ResolvedFindReplaceTexts } from './index.js' with { "resolution-mode": "import" };
115
128
  import type { ResolvedPasswordPromptTexts as __Cjs_ResolvedPasswordPromptTexts } from './index.js' with { "resolution-mode": "import" };
116
129
  import type { ResolveRangeOutput as __Cjs_ResolveRangeOutput } from './index.js' with { "resolution-mode": "import" };
@@ -413,6 +426,19 @@ export type { __Cjs_PermissionRangeEditor as PermissionRangeEditor };
413
426
  export type { __Cjs_PermissionRangeEditorResolution as PermissionRangeEditorResolution };
414
427
  export type { __Cjs_PermissionResolver as PermissionResolver };
415
428
  export type { __Cjs_PermissionResolverParams as PermissionResolverParams };
429
+ export type { __Cjs_ProofingCapabilities as ProofingCapabilities };
430
+ export type { __Cjs_ProofingCheckRequest as ProofingCheckRequest };
431
+ export type { __Cjs_ProofingCheckResult as ProofingCheckResult };
432
+ export type { __Cjs_ProofingConfig as ProofingConfig };
433
+ export type { __Cjs_ProofingError as ProofingError };
434
+ export type { __Cjs_ProofingIssue as ProofingIssue };
435
+ export type { __Cjs_ProofingIssueKind as ProofingIssueKind };
436
+ export type { __Cjs_ProofingProvider as ProofingProvider };
437
+ export type { __Cjs_ProofingSegment as ProofingSegment };
438
+ export type { __Cjs_ProofingSegmentMetadata as ProofingSegmentMetadata };
439
+ export type { __Cjs_ProofingStatus as ProofingStatus };
440
+ export type { __Cjs_ProofingSuggestRequest as ProofingSuggestRequest };
441
+ export type { __Cjs_ProofingSuggestResult as ProofingSuggestResult };
416
442
  export type { __Cjs_ResolvedFindReplaceTexts as ResolvedFindReplaceTexts };
417
443
  export type { __Cjs_ResolvedPasswordPromptTexts as ResolvedPasswordPromptTexts };
418
444
  export declare const resolvePermissionRangeEditor: typeof import('./index.js', { with: { "resolution-mode": "import" } }).resolvePermissionRangeEditor;
@@ -65,6 +65,19 @@ export type { PasswordPromptRenderContext } from '../core/types/index.js';
65
65
  export type { PasswordPromptResolution } from '../core/types/index.js';
66
66
  export type { PermissionResolver } from '../core/types/index.js';
67
67
  export type { PermissionResolverParams } from '../core/types/index.js';
68
+ export type { ProofingCapabilities } from '../core/types/index.js';
69
+ export type { ProofingCheckRequest } from '../core/types/index.js';
70
+ export type { ProofingCheckResult } from '../core/types/index.js';
71
+ export type { ProofingConfig } from '../core/types/index.js';
72
+ export type { ProofingError } from '../core/types/index.js';
73
+ export type { ProofingIssue } from '../core/types/index.js';
74
+ export type { ProofingIssueKind } from '../core/types/index.js';
75
+ export type { ProofingProvider } from '../core/types/index.js';
76
+ export type { ProofingSegment } from '../core/types/index.js';
77
+ export type { ProofingSegmentMetadata } from '../core/types/index.js';
78
+ export type { ProofingStatus } from '../core/types/index.js';
79
+ export type { ProofingSuggestRequest } from '../core/types/index.js';
80
+ export type { ProofingSuggestResult } from '../core/types/index.js';
68
81
  export type { ResolvedFindReplaceTexts } from '../core/types/index.js';
69
82
  export type { ResolvedPasswordPromptTexts } from '../core/types/index.js';
70
83
  export type { ResolveRangeOutput } from '../../../document-api/src/index.js';