superdoc 2.27.0 → 2.28.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/chunks/{create-super-doc-ui-cHUUipYM.es.js → create-super-doc-ui-B29zw5qD.es.js} +155 -2
  2. package/dist/chunks/{create-super-doc-ui-DpVh2nQH.cjs → create-super-doc-ui-D1eOhAjv.cjs} +155 -2
  3. package/dist/collaboration-upgrade-engine.cjs +1 -1
  4. package/dist/collaboration-upgrade-engine.es.js +1 -1
  5. package/dist/document-api/src/contract/operation-definitions.d.ts +2 -2
  6. package/dist/document-api/src/index.d.ts +3 -3
  7. package/dist/document-api/src/styles/apply.d.ts +26 -2
  8. package/dist/document-api/src/styles/index.d.ts +3 -3
  9. package/dist/document-api/src/styles/schema.d.ts +3 -1
  10. package/dist/document-api/src/styles/validation.d.ts +10 -9
  11. package/dist/document-api/src/types/mutation-plan.types.d.ts +11 -4
  12. package/dist/document-api/src/types/temporary-mutation.d.ts +5 -1
  13. package/dist/layout-engine/contracts/src/index.d.ts +1 -1
  14. package/dist/layout-engine/contracts/src/run-helpers.d.ts +7 -0
  15. package/dist/layout-engine/painters/dom/src/page-content.d.ts +1 -0
  16. package/dist/layout-engine/painters/dom/src/review-markers.d.ts +3 -0
  17. package/dist/layout-engine/painters/dom/src/table/renderTableCell.d.ts +1 -0
  18. package/dist/public/ui-react.cjs +1 -1
  19. package/dist/public/ui-react.es.js +1 -1
  20. package/dist/public/ui-vue.cjs +1 -1
  21. package/dist/public/ui-vue.es.js +1 -1
  22. package/dist/public/ui.cjs +1 -1
  23. package/dist/public/ui.es.js +1 -1
  24. package/dist/style.css +1 -1
  25. package/dist/style.layered.css +1 -1
  26. package/dist/superdoc/src/internal/toolbar/built-in/LinkedStyle.vue.d.ts +3 -1
  27. package/dist/superdoc/src/internal/toolbar/built-in/toolbarTexts.d.ts +1 -0
  28. package/dist/superdoc/src/internal/toolbar/built-in-toolbar.d.ts +1 -0
  29. package/dist/superdoc/src/public/ui/style-match-patch.d.ts +7 -0
  30. package/dist/superdoc/src/public/ui/types.d.ts +5 -1
  31. package/dist/superdoc/src/public/ui.d.cts +4 -0
  32. package/dist/superdoc/src/public/ui.d.ts +1 -1
  33. package/dist/superdoc.cjs +120 -71
  34. package/dist/superdoc.es.js +117 -70
  35. package/dist-cdn/style.layered.css +1 -1
  36. package/dist-cdn/superdoc.min.css +1 -1
  37. package/dist-cdn/superdoc.min.js +38 -38
  38. package/package.json +2 -2
  39. package/dist/footnote-table-order.docx +0 -0
  40. package/dist/images/altText_add.svg +0 -3
  41. package/dist/images/altText_disclaimer.svg +0 -3
  42. package/dist/images/altText_done.svg +0 -3
  43. package/dist/images/altText_spinner.svg +0 -30
  44. package/dist/images/altText_warning.svg +0 -3
  45. package/dist/images/annotation-check.svg +0 -11
  46. package/dist/images/annotation-comment.svg +0 -16
  47. package/dist/images/annotation-help.svg +0 -26
  48. package/dist/images/annotation-insert.svg +0 -10
  49. package/dist/images/annotation-key.svg +0 -11
  50. package/dist/images/annotation-newparagraph.svg +0 -11
  51. package/dist/images/annotation-noicon.svg +0 -7
  52. package/dist/images/annotation-note.svg +0 -42
  53. package/dist/images/annotation-paperclip.svg +0 -6
  54. package/dist/images/annotation-paragraph.svg +0 -16
  55. package/dist/images/annotation-pushpin.svg +0 -7
  56. package/dist/images/checkmark.svg +0 -5
  57. package/dist/images/comment-actionsButton.svg +0 -3
  58. package/dist/images/comment-closeButton.svg +0 -3
  59. package/dist/images/comment-editButton.svg +0 -8
  60. package/dist/images/comment-popup-editButton.svg +0 -5
  61. package/dist/images/cursor-editorFreeHighlight.svg +0 -6
  62. package/dist/images/cursor-editorFreeText.svg +0 -3
  63. package/dist/images/cursor-editorInk.svg +0 -4
  64. package/dist/images/cursor-editorTextHighlight.svg +0 -8
  65. package/dist/images/editor-toolbar-delete.svg +0 -5
  66. package/dist/images/editor-toolbar-edit.svg +0 -3
  67. package/dist/images/findbarButton-next.svg +0 -3
  68. package/dist/images/findbarButton-previous.svg +0 -3
  69. package/dist/images/gv-toolbarButton-download.svg +0 -3
  70. package/dist/images/loading-icon.gif +0 -0
  71. package/dist/images/loading.svg +0 -1
  72. package/dist/images/messageBar_closingButton.svg +0 -3
  73. package/dist/images/messageBar_info.svg +0 -3
  74. package/dist/images/messageBar_warning.svg +0 -3
  75. package/dist/images/pages_closeButton.svg +0 -3
  76. package/dist/images/pages_selected.svg +0 -7
  77. package/dist/images/pages_viewArrow.svg +0 -3
  78. package/dist/images/pages_viewButton.svg +0 -3
  79. package/dist/images/secondaryToolbarButton-documentProperties.svg +0 -3
  80. package/dist/images/secondaryToolbarButton-firstPage.svg +0 -3
  81. package/dist/images/secondaryToolbarButton-handTool.svg +0 -3
  82. package/dist/images/secondaryToolbarButton-lastPage.svg +0 -3
  83. package/dist/images/secondaryToolbarButton-rotateCcw.svg +0 -3
  84. package/dist/images/secondaryToolbarButton-rotateCw.svg +0 -3
  85. package/dist/images/secondaryToolbarButton-scrollHorizontal.svg +0 -3
  86. package/dist/images/secondaryToolbarButton-scrollPage.svg +0 -3
  87. package/dist/images/secondaryToolbarButton-scrollVertical.svg +0 -3
  88. package/dist/images/secondaryToolbarButton-scrollWrapped.svg +0 -3
  89. package/dist/images/secondaryToolbarButton-selectTool.svg +0 -3
  90. package/dist/images/secondaryToolbarButton-spreadEven.svg +0 -3
  91. package/dist/images/secondaryToolbarButton-spreadNone.svg +0 -3
  92. package/dist/images/secondaryToolbarButton-spreadOdd.svg +0 -3
  93. package/dist/images/toolbarButton-bookmark.svg +0 -3
  94. package/dist/images/toolbarButton-currentOutlineItem.svg +0 -3
  95. package/dist/images/toolbarButton-download.svg +0 -4
  96. package/dist/images/toolbarButton-editorFreeText.svg +0 -5
  97. package/dist/images/toolbarButton-editorHighlight.svg +0 -6
  98. package/dist/images/toolbarButton-editorInk.svg +0 -4
  99. package/dist/images/toolbarButton-editorSignature.svg +0 -6
  100. package/dist/images/toolbarButton-editorStamp.svg +0 -8
  101. package/dist/images/toolbarButton-menuArrow.svg +0 -3
  102. package/dist/images/toolbarButton-openFile.svg +0 -3
  103. package/dist/images/toolbarButton-pageDown.svg +0 -3
  104. package/dist/images/toolbarButton-pageUp.svg +0 -3
  105. package/dist/images/toolbarButton-presentationMode.svg +0 -3
  106. package/dist/images/toolbarButton-print.svg +0 -3
  107. package/dist/images/toolbarButton-search.svg +0 -3
  108. package/dist/images/toolbarButton-secondaryToolbarToggle.svg +0 -3
  109. package/dist/images/toolbarButton-viewAttachments.svg +0 -3
  110. package/dist/images/toolbarButton-viewLayers.svg +0 -3
  111. package/dist/images/toolbarButton-viewOutline.svg +0 -3
  112. package/dist/images/toolbarButton-viewThumbnail.svg +0 -3
  113. package/dist/images/toolbarButton-viewsManagerToggle.svg +0 -3
  114. package/dist/images/toolbarButton-zoomIn.svg +0 -3
  115. package/dist/images/toolbarButton-zoomOut.svg +0 -3
  116. package/dist/images/treeitem-collapsed.svg +0 -1
  117. package/dist/images/treeitem-expanded.svg +0 -1
  118. package/dist-cdn/footnote-table-order.docx +0 -0
@@ -1,6 +1,6 @@
1
1
  import { i as __toESM$2 } from "./chunks/rolldown-runtime-0pSA04fp.es.js";
2
2
  import { t as blank_default } from "./chunks/blank-docx-DzQccOlW.es.js";
3
- import { _ as getWorkflowRecording, a as registerFirstPartyCommandMutation, c as getV2TrackedChangeMutationImpact, d as resolveImageSrc, g as createInteractionHistory, h as closeInteractionHistory, i as readFirstPartyPageNumbers, l as isPlainObject$1, m as DOM_CLASS_NAMES, n as executeFirstPartyCommandAsync, p as isSyntheticTrackedChangeCommentLaneItem, r as executeFirstPartyShortcutAsync, s as applyV2CommentInvalidationFromMutation, t as createSuperDocUI, u as createImageFilePicker, v as isWorkflowRecordingEnabled, y as recordInteraction } from "./chunks/create-super-doc-ui-cHUUipYM.es.js";
3
+ import { _ as getWorkflowRecording, a as registerFirstPartyCommandMutation, c as getV2TrackedChangeMutationImpact, d as resolveImageSrc, g as createInteractionHistory, h as closeInteractionHistory, i as readFirstPartyPageNumbers, l as isPlainObject$1, m as DOM_CLASS_NAMES, n as executeFirstPartyCommandAsync, p as isSyntheticTrackedChangeCommentLaneItem, r as executeFirstPartyShortcutAsync, s as applyV2CommentInvalidationFromMutation, t as createSuperDocUI, u as createImageFilePicker, v as isWorkflowRecordingEnabled, y as recordInteraction } from "./chunks/create-super-doc-ui-B29zw5qD.es.js";
4
4
  import { t as import_eventemitter3 } from "./chunks/eventemitter3-DEIiXiH2.es.js";
5
5
  import { t as v4 } from "./chunks/uuid-H0Xcmmhy.es.js";
6
6
  import { $ as vModelText, A as onActivated, B as renderSlot, C as isRef$1, D as normalizeClass, E as nextTick, F as openBlock, G as toRaw$2, H as resolveDynamicComponent, I as provide$1, J as unref, K as toRef, L as reactive, M as onDeactivated, N as onMounted, O as normalizeProps, P as onScopeDispose$1, Q as vModelSelect, R as ref, S as isReactive$1, T as mergeProps, U as shallowRef$1, V as resolveDirective, W as toDisplayString, X as useSlots, Y as useAttrs, Z as vModelCheckbox, _ as getCurrentInstance, a as computed$1, b as hasInjectionContext, c as createCommentVNode, d as createStaticVNode, et as watch$1, f as createTextVNode, g as effectScope, h as defineComponent, i as Transition, it as withModifiers, j as onBeforeUnmount, k as normalizeStyle, l as createElementBlock, m as defineAsyncComponent, n as Fragment, nt as withDirectives, o as createApp, p as createVNode, q as toRefs, r as Teleport, rt as withKeys, s as createBlock, t as _plugin_vue_export_helper_default, tt as withCtx, u as createElementVNode, v as getCurrentScope, w as markRaw, x as inject$1, y as h, z as renderList } from "./chunks/_plugin-vue_export-helper-7ZiLY07t.es.js";
@@ -258,7 +258,7 @@ var v_click_outside_default = {
258
258
  var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
259
259
  function getSuperdocVersion() {
260
260
  try {
261
- return "2.27.0";
261
+ return "2.28.0-next.2";
262
262
  } catch {
263
263
  return "unknown";
264
264
  }
@@ -12253,11 +12253,11 @@ function useUiFontFamily() {
12253
12253
  //#region src/components/CommentsLayer/CommentsDropdown.vue
12254
12254
  var _hoisted_1$31 = { class: "comments-dropdown" };
12255
12255
  var _hoisted_2$24 = ["onClick"];
12256
- var _hoisted_3$20 = {
12256
+ var _hoisted_3$21 = {
12257
12257
  key: 0,
12258
12258
  class: "comments-dropdown__option-icon"
12259
12259
  };
12260
- var _hoisted_4$14 = ["innerHTML"];
12260
+ var _hoisted_4$15 = ["innerHTML"];
12261
12261
  var _hoisted_5$11 = { class: "comments-dropdown__option-label" };
12262
12262
  var CommentsDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12263
12263
  __name: "CommentsDropdown",
@@ -12398,10 +12398,10 @@ var CommentsDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12398
12398
  key: option.key,
12399
12399
  class: normalizeClass(["comments-dropdown__option", { "sd-disabled": option.disabled }]),
12400
12400
  onClick: ($event) => onOptionClick(option)
12401
- }, [hasIcon(option) ? (openBlock(), createElementBlock("span", _hoisted_3$20, [option.iconString ? (openBlock(), createElementBlock("span", {
12401
+ }, [hasIcon(option) ? (openBlock(), createElementBlock("span", _hoisted_3$21, [option.iconString ? (openBlock(), createElementBlock("span", {
12402
12402
  key: 0,
12403
12403
  innerHTML: option.iconString
12404
- }, null, 8, _hoisted_4$14)) : (openBlock(), createBlock(unref(OptionIcon), {
12404
+ }, null, 8, _hoisted_4$15)) : (openBlock(), createBlock(unref(OptionIcon), {
12405
12405
  key: 1,
12406
12406
  option
12407
12407
  }, null, 8, ["option"]))])) : createCommentVNode("", true), createElementVNode("span", _hoisted_5$11, toDisplayString(option.label), 1)], 10, _hoisted_2$24);
@@ -12413,8 +12413,8 @@ var CommentsDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12413
12413
  //#region src/components/CommentsLayer/InternalDropdown.vue
12414
12414
  var _hoisted_1$30 = { class: "sd-comment-option" };
12415
12415
  var _hoisted_2$23 = ["innerHTML"];
12416
- var _hoisted_3$19 = { class: "sd-option-state" };
12417
- var _hoisted_4$13 = ["innerHTML"];
12416
+ var _hoisted_3$20 = { class: "sd-option-state" };
12417
+ var _hoisted_4$14 = ["innerHTML"];
12418
12418
  var InternalDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12419
12419
  __name: "InternalDropdown",
12420
12420
  props: {
@@ -12487,11 +12487,11 @@ var InternalDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12487
12487
  class: "sd-active-icon",
12488
12488
  innerHTML: activeIcon.value
12489
12489
  }, null, 8, _hoisted_2$23),
12490
- createElementVNode("div", _hoisted_3$19, toDisplayString(getState.value), 1),
12490
+ createElementVNode("div", _hoisted_3$20, toDisplayString(getState.value), 1),
12491
12491
  createElementVNode("div", {
12492
12492
  class: "sd-dropdown-caret",
12493
12493
  innerHTML: unref(superdocIcons).caretDown
12494
- }, null, 8, _hoisted_4$13)
12494
+ }, null, 8, _hoisted_4$14)
12495
12495
  ])]),
12496
12496
  _: 1
12497
12497
  }, 8, ["disabled", "content-style"])], 4);
@@ -12649,7 +12649,7 @@ var isAllowed = (permission, role, isInternal, context = {}) => {
12649
12649
  //#region src/components/general/Avatar.vue
12650
12650
  var _hoisted_1$29 = { class: "user-container" };
12651
12651
  var _hoisted_2$22 = ["src"];
12652
- var _hoisted_3$18 = {
12652
+ var _hoisted_3$19 = {
12653
12653
  key: 1,
12654
12654
  class: "user-bg"
12655
12655
  };
@@ -12674,7 +12674,7 @@ var Avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12674
12674
  key: 0,
12675
12675
  class: "user-bg",
12676
12676
  src: __props.user.image.startsWith("http") ? __props.user.image : `data:image/png;base64,${__props.user.image}`
12677
- }, null, 8, _hoisted_2$22)) : (openBlock(), createElementBlock("span", _hoisted_3$18, toDisplayString(getInitials(__props.user.name, __props.user.email)), 1))]);
12677
+ }, null, 8, _hoisted_2$22)) : (openBlock(), createElementBlock("span", _hoisted_3$19, toDisplayString(getInitials(__props.user.name, __props.user.email)), 1))]);
12678
12678
  };
12679
12679
  }
12680
12680
  }, [["__scopeId", "data-v-c95b2073"]]);
@@ -12682,8 +12682,8 @@ var Avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12682
12682
  //#region src/components/CommentsLayer/CommentHeader.vue
12683
12683
  var _hoisted_1$28 = { class: "card-section comment-header" };
12684
12684
  var _hoisted_2$21 = { class: "comment-header-left" };
12685
- var _hoisted_3$17 = { class: "user-info" };
12686
- var _hoisted_4$12 = { class: "user-name" };
12685
+ var _hoisted_3$18 = { class: "user-info" };
12686
+ var _hoisted_4$13 = { class: "user-name" };
12687
12687
  var _hoisted_5$10 = {
12688
12688
  key: 0,
12689
12689
  class: "imported-tag"
@@ -12943,7 +12943,7 @@ var CommentHeader_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12943
12943
  return openBlock(), createElementBlock("div", _hoisted_1$28, [createElementVNode("div", _hoisted_2$21, [createVNode(Avatar_default, {
12944
12944
  user: getCurrentUser.value,
12945
12945
  class: "avatar"
12946
- }, null, 8, ["user"]), createElementVNode("div", _hoisted_3$17, [createElementVNode("div", _hoisted_4$12, [createTextVNode(toDisplayString(getCurrentUser.value.name), 1), isImported.value ? (openBlock(), createElementBlock("span", _hoisted_5$10, "IMPORTED")) : createCommentVNode("", true)]), props.comment.createdTime ? (openBlock(), createElementBlock("div", _hoisted_6$8, toDisplayString(unref(formatDate)(props.comment.createdTime)), 1)) : createCommentVNode("", true)])]), createElementVNode("div", { class: normalizeClass(["overflow-menu", { "is-visible": props.isActive }]) }, [
12946
+ }, null, 8, ["user"]), createElementVNode("div", _hoisted_3$18, [createElementVNode("div", _hoisted_4$13, [createTextVNode(toDisplayString(getCurrentUser.value.name), 1), isImported.value ? (openBlock(), createElementBlock("span", _hoisted_5$10, "IMPORTED")) : createCommentVNode("", true)]), props.comment.createdTime ? (openBlock(), createElementBlock("div", _hoisted_6$8, toDisplayString(unref(formatDate)(props.comment.createdTime)), 1)) : createCommentVNode("", true)])]), createElementVNode("div", { class: normalizeClass(["overflow-menu", { "is-visible": props.isActive }]) }, [
12947
12947
  allowResolve.value ? (openBlock(), createElementBlock("div", {
12948
12948
  key: 0,
12949
12949
  class: normalizeClass(["overflow-menu__icon", { "sd-is-disabled": Boolean(__props.resolveDisabledReason) }]),
@@ -12993,12 +12993,12 @@ var CommentHeader_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12993
12993
  //#region src/components/CommentsLayer/CommentInput.vue
12994
12994
  var _hoisted_1$27 = { class: "input-section" };
12995
12995
  var _hoisted_2$20 = { class: "comment-composer" };
12996
- var _hoisted_3$16 = [
12996
+ var _hoisted_3$17 = [
12997
12997
  "aria-expanded",
12998
12998
  "aria-controls",
12999
12999
  "aria-activedescendant"
13000
13000
  ];
13001
- var _hoisted_4$11 = [
13001
+ var _hoisted_4$12 = [
13002
13002
  "id",
13003
13003
  "aria-selected",
13004
13004
  "data-sd-comment-mention-option",
@@ -13188,7 +13188,7 @@ var CommentInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
13188
13188
  onKeydown,
13189
13189
  onFocus: _cache[1] || (_cache[1] = ($event) => handleFocusChange(true)),
13190
13190
  onBlur: _cache[2] || (_cache[2] = ($event) => handleFocusChange(false))
13191
- }, null, 40, _hoisted_3$16), [[vModelText, commentDraft.value]]), mentionListOpen.value ? (openBlock(), createElementBlock("div", {
13191
+ }, null, 40, _hoisted_3$17), [[vModelText, commentDraft.value]]), mentionListOpen.value ? (openBlock(), createElementBlock("div", {
13192
13192
  key: 0,
13193
13193
  id: mentionListId,
13194
13194
  class: "comment-mention-list",
@@ -13204,7 +13204,7 @@ var CommentInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
13204
13204
  "aria-selected": index === highlightedMentionIndex.value,
13205
13205
  "data-sd-comment-mention-option": userKey(user),
13206
13206
  onMousedown: withModifiers(($event) => selectMention(user), ["prevent"])
13207
- }, [createElementVNode("span", _hoisted_5$9, toDisplayString(displayName(user)), 1), user.email ? (openBlock(), createElementBlock("span", _hoisted_6$7, toDisplayString(user.email), 1)) : createCommentVNode("", true)], 42, _hoisted_4$11);
13207
+ }, [createElementVNode("span", _hoisted_5$9, toDisplayString(displayName(user)), 1), user.email ? (openBlock(), createElementBlock("span", _hoisted_6$7, toDisplayString(user.email), 1)) : createCommentVNode("", true)], 42, _hoisted_4$12);
13208
13208
  }), 128))])) : createCommentVNode("", true)])], 2)]);
13209
13209
  };
13210
13210
  }
@@ -13330,8 +13330,8 @@ var _hoisted_2$19 = {
13330
13330
  key: 0,
13331
13331
  class: "existing-internal-input"
13332
13332
  };
13333
- var _hoisted_3$15 = { class: "new-comment-input-wrapper" };
13334
- var _hoisted_4$10 = { class: "reply-actions" };
13333
+ var _hoisted_3$16 = { class: "new-comment-input-wrapper" };
13334
+ var _hoisted_4$11 = { class: "reply-actions" };
13335
13335
  var _hoisted_5$8 = ["disabled"];
13336
13336
  var _hoisted_6$6 = {
13337
13337
  key: 0,
@@ -14011,15 +14011,8 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14011
14011
  const v2WriteCapability = computed$1(() => {
14012
14012
  v2CapabilityRevision.value;
14013
14013
  if (!v2CommentsAdapter.value) return null;
14014
- const documentMode = commentsStore.viewingVisibility.documentMode;
14015
14014
  const command = isPendingNewComment.value ? "comments.createFromSelection" : null;
14016
- const capability = v2CommentsAdapter.value.getCapabilityState?.(command) ?? null;
14017
- if (documentMode === "viewing" && !isPendingNewComment.value) return {
14018
- ...capability ?? {},
14019
- canWrite: false,
14020
- reason: "review-surface-read-only"
14021
- };
14022
- return capability;
14015
+ return v2CommentsAdapter.value.getCapabilityState?.(command) ?? null;
14023
14016
  });
14024
14017
  const isV2WriteDisabled = computed$1(() => {
14025
14018
  if (!isV2Mode.value) return false;
@@ -14410,7 +14403,7 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14410
14403
  comment: props.comment,
14411
14404
  "is-pending-input": true
14412
14405
  }, null, 8, ["config", "comment"]),
14413
- createElementVNode("div", _hoisted_3$15, [createVNode(CommentInput_default, {
14406
+ createElementVNode("div", _hoisted_3$16, [createVNode(CommentInput_default, {
14414
14407
  ref_key: "commentInput",
14415
14408
  ref: commentInput,
14416
14409
  users: usersFiltered.value,
@@ -14422,7 +14415,7 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14422
14415
  "config",
14423
14416
  "comment"
14424
14417
  ])]),
14425
- createElementVNode("div", _hoisted_4$10, [createElementVNode("button", {
14418
+ createElementVNode("div", _hoisted_4$11, [createElementVNode("button", {
14426
14419
  class: "sd-button reply-btn-cancel",
14427
14420
  onClick: withModifiers(handleCancel, ["stop", "prevent"])
14428
14421
  }, "Cancel"), createElementVNode("button", {
@@ -14598,7 +14591,7 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14598
14591
  ], 64))], 14, _hoisted_1$26)), [[_directive_click_outside, handleClickOutside]]);
14599
14592
  };
14600
14593
  }
14601
- }, [["__scopeId", "data-v-f5016db4"]]);
14594
+ }, [["__scopeId", "data-v-939045c1"]]);
14602
14595
  //#endregion
14603
14596
  //#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
14604
14597
  var _hoisted_1$25 = [
@@ -14747,7 +14740,7 @@ var ReviewDirectoryListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_de
14747
14740
  //#region src/components/CommentsLayer/commentsList/commentsList.vue
14748
14741
  var _hoisted_1$24 = ["aria-busy"];
14749
14742
  var _hoisted_2$18 = { key: 0 };
14750
- var _hoisted_3$14 = { key: 1 };
14743
+ var _hoisted_3$15 = { key: 1 };
14751
14744
  var REPEATED_HEADER_FOOTER_STORY_TYPE = "headerFooterPart";
14752
14745
  var commentsList_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14753
14746
  __name: "commentsList",
@@ -14891,7 +14884,7 @@ var commentsList_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14891
14884
  "total",
14892
14885
  "tab-index"
14893
14886
  ]);
14894
- }), 128))])) : createCommentVNode("", true), shouldShowResolvedComments.value ? (openBlock(), createElementBlock("div", _hoisted_3$14, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "comment-title" }, "Resolved", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedCommentDisplayItems.value, (item, index) => {
14887
+ }), 128))])) : createCommentVNode("", true), shouldShowResolvedComments.value ? (openBlock(), createElementBlock("div", _hoisted_3$15, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "comment-title" }, "Resolved", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedCommentDisplayItems.value, (item, index) => {
14895
14888
  return openBlock(), createBlock(ReviewDirectoryListItem_default, {
14896
14889
  key: item.id,
14897
14890
  item,
@@ -19011,11 +19004,11 @@ var _hoisted_2$16 = {
19011
19004
  key: 1,
19012
19005
  class: "link-title"
19013
19006
  };
19014
- var _hoisted_3$13 = {
19007
+ var _hoisted_3$14 = {
19015
19008
  key: 2,
19016
19009
  class: "link-title"
19017
19010
  };
19018
- var _hoisted_4$9 = {
19011
+ var _hoisted_4$10 = {
19019
19012
  key: 3,
19020
19013
  class: "link-title"
19021
19014
  };
@@ -19258,7 +19251,7 @@ var LinkInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
19258
19251
  };
19259
19252
  return (_ctx, _cache) => {
19260
19253
  return openBlock(), createElementBlock("div", { class: normalizeClass(["link-input-ctn", { "high-contrast": unref(isHighContrastMode) }]) }, [
19261
- isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_1$20, "Page anchor")) : isViewingMode.value ? (openBlock(), createElementBlock("div", _hoisted_2$16, "Link details")) : isEditing.value ? (openBlock(), createElementBlock("div", _hoisted_3$13, "Edit link")) : (openBlock(), createElementBlock("div", _hoisted_4$9, "Add link")),
19254
+ isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_1$20, "Page anchor")) : isViewingMode.value ? (openBlock(), createElementBlock("div", _hoisted_2$16, "Link details")) : isEditing.value ? (openBlock(), createElementBlock("div", _hoisted_3$14, "Edit link")) : (openBlock(), createElementBlock("div", _hoisted_4$10, "Add link")),
19262
19255
  __props.showInput && !isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_5$7, [
19263
19256
  createElementVNode("div", _hoisted_6$5, [_cache[5] || (_cache[5] = createElementVNode("div", { class: "input-icon text-input-icon" }, "T", -1)), withDirectives(createElementVNode("input", {
19264
19257
  type: "text",
@@ -21355,7 +21348,7 @@ var FOCUSABLE_SELECTOR = [
21355
21348
  //#region src/components/surfaces/SurfaceDialog.vue
21356
21349
  var _hoisted_1$19 = ["aria-labelledby", "aria-label"];
21357
21350
  var _hoisted_2$15 = ["id"];
21358
- var _hoisted_3$12 = { class: "sd-surface-dialog__content" };
21351
+ var _hoisted_3$13 = { class: "sd-surface-dialog__content" };
21359
21352
  var SurfaceDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21360
21353
  __name: "SurfaceDialog",
21361
21354
  props: {
@@ -21487,7 +21480,7 @@ var SurfaceDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21487
21480
  key: 0,
21488
21481
  id: titleId.value,
21489
21482
  class: "sd-surface-dialog__title"
21490
- }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$15)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$12, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21483
+ }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$15)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$13, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21491
21484
  key: 0,
21492
21485
  "surface-id": __props.surface.id,
21493
21486
  mode: "dialog",
@@ -21509,7 +21502,7 @@ var SurfaceDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21509
21502
  //#region src/components/surfaces/SurfaceFloating.vue
21510
21503
  var _hoisted_1$18 = ["aria-labelledby", "aria-label"];
21511
21504
  var _hoisted_2$14 = ["id"];
21512
- var _hoisted_3$11 = { class: "sd-surface-floating__content" };
21505
+ var _hoisted_3$12 = { class: "sd-surface-floating__content" };
21513
21506
  var SurfaceFloating_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21514
21507
  __name: "SurfaceFloating",
21515
21508
  props: { surface: {
@@ -21641,7 +21634,7 @@ var SurfaceFloating_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21641
21634
  key: 0,
21642
21635
  id: titleId.value,
21643
21636
  class: "sd-surface-floating__title"
21644
- }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$14)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$11, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21637
+ }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$14)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$12, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21645
21638
  key: 0,
21646
21639
  "surface-id": __props.surface.id,
21647
21640
  mode: "floating",
@@ -21885,8 +21878,8 @@ var SurfaceHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21885
21878
  //#region src/SuperDoc.vue
21886
21879
  var _hoisted_1$17 = ["data-superdoc-ui-owner"];
21887
21880
  var _hoisted_2$13 = ["innerHTML"];
21888
- var _hoisted_3$10 = { class: "superdoc__document document" };
21889
- var _hoisted_4$8 = { class: "floating-comments" };
21881
+ var _hoisted_3$11 = { class: "superdoc__document document" };
21882
+ var _hoisted_4$9 = { class: "floating-comments" };
21890
21883
  var TRACKED_CHANGE_CARRIERS_RESTAMPED_EVENT = "superdoc:v2-tracked-change-carriers-restamped";
21891
21884
  var UNAVAILABLE_COMMAND_RESULT = false;
21892
21885
  var V2_SELECTION_TOOLBAR_SYNC_RETRY_FRAMES = 3;
@@ -24365,7 +24358,7 @@ var SuperDoc_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
24365
24358
  }, [createElementVNode("div", {
24366
24359
  class: "superdoc__tools-icon",
24367
24360
  innerHTML: unref(superdocIcons).comment
24368
- }, null, 8, _hoisted_2$13)], 32)], 4)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$10, [
24361
+ }, null, 8, _hoisted_2$13)], 32)], 4)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$11, [
24369
24362
  isCommentsEnabled.value ? (openBlock(), createElementBlock("div", {
24370
24363
  key: 0,
24371
24364
  class: "superdoc__selection-layer selection-layer",
@@ -24493,7 +24486,7 @@ var SuperDoc_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
24493
24486
  ref_key: "rightSidebarRef",
24494
24487
  ref: rightSidebarRef,
24495
24488
  class: "superdoc__right-sidebar right-sidebar"
24496
- }, [createElementVNode("div", _hoisted_4$8, [unref(hasInitializedLocations) && (floatingComments.value.length > 0 || unref(pendingComment)) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(documentsWithConverations), (doc) => {
24489
+ }, [createElementVNode("div", _hoisted_4$9, [unref(hasInitializedLocations) && (floatingComments.value.length > 0 || unref(pendingComment)) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(documentsWithConverations), (doc) => {
24497
24490
  return openBlock(), createBlock(FloatingComments_default, {
24498
24491
  parent: layers.value,
24499
24492
  "current-document": doc
@@ -38997,8 +38990,8 @@ var _hoisted_1$15 = [
38997
38990
  "aria-disabled"
38998
38991
  ];
38999
38992
  var _hoisted_2$11 = ["data-item"];
39000
- var _hoisted_3$9 = ["data-item"];
39001
- var _hoisted_4$7 = {
38993
+ var _hoisted_3$10 = ["data-item"];
38994
+ var _hoisted_4$8 = {
39002
38995
  key: 1,
39003
38996
  class: "sd-button-label"
39004
38997
  };
@@ -39219,7 +39212,7 @@ var ToolbarButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
39219
39212
  "color",
39220
39213
  "icon",
39221
39214
  "name"
39222
- ])) : createCommentVNode("", true), unref(label) && !unref(hideLabel) && !unref(inlineTextInputVisible) ? (openBlock(), createElementBlock("div", _hoisted_4$7, toDisplayString(unref(label)), 1)) : createCommentVNode("", true)], 8, _hoisted_3$9)) : createCommentVNode("", true),
39215
+ ])) : createCommentVNode("", true), unref(label) && !unref(hideLabel) && !unref(inlineTextInputVisible) ? (openBlock(), createElementBlock("div", _hoisted_4$8, toDisplayString(unref(label)), 1)) : createCommentVNode("", true)], 8, _hoisted_3$10)) : createCommentVNode("", true),
39223
39216
  isSplit.value ? (openBlock(), createElementBlock("div", {
39224
39217
  key: 1,
39225
39218
  class: "sd-toolbar-button__caret",
@@ -39321,8 +39314,8 @@ var ToolbarSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
39321
39314
  //#region src/internal/toolbar/built-in/ToolbarDropdown.vue
39322
39315
  var _hoisted_1$13 = { class: "toolbar-dropdown" };
39323
39316
  var _hoisted_2$10 = ["data-superdoc-ui-owner"];
39324
- var _hoisted_3$8 = ["onClick"];
39325
- var _hoisted_4$6 = {
39317
+ var _hoisted_3$9 = ["onClick"];
39318
+ var _hoisted_4$7 = {
39326
39319
  key: 0,
39327
39320
  class: "toolbar-dropdown-option__icon"
39328
39321
  };
@@ -39711,7 +39704,7 @@ var ToolbarDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
39711
39704
  }), [isRenderOption(option) ? (openBlock(), createBlock(unref(RenderOption), {
39712
39705
  key: 0,
39713
39706
  option
39714
- }, null, 8, ["option"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [hasIcon(option) ? (openBlock(), createElementBlock("span", _hoisted_4$6, [createVNode(unref(OptionIcon), { option }, null, 8, ["option"])])) : createCommentVNode("", true), createElementVNode("span", _hoisted_5$5, toDisplayString(option.label), 1)], 64))], 16, _hoisted_3$8);
39707
+ }, null, 8, ["option"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [hasIcon(option) ? (openBlock(), createElementBlock("span", _hoisted_4$7, [createVNode(unref(OptionIcon), { option }, null, 8, ["option"])])) : createCommentVNode("", true), createElementVNode("span", _hoisted_5$5, toDisplayString(option.label), 1)], 64))], 16, _hoisted_3$9);
39715
39708
  }), 128))], 16, _hoisted_2$10)) : createCommentVNode("", true)]),
39716
39709
  _: 3
39717
39710
  })], 8, ["to"]))]);
@@ -39950,12 +39943,12 @@ var _hoisted_2$9 = [
39950
39943
  "aria-activedescendant",
39951
39944
  "data-item"
39952
39945
  ];
39953
- var _hoisted_3$7 = [
39946
+ var _hoisted_3$8 = [
39954
39947
  "data-item",
39955
39948
  "aria-label",
39956
39949
  "disabled"
39957
39950
  ];
39958
- var _hoisted_4$5 = ["innerHTML"];
39951
+ var _hoisted_4$6 = ["innerHTML"];
39959
39952
  var _hoisted_5$4 = [
39960
39953
  "data-superdoc-ui-owner",
39961
39954
  "id",
@@ -40423,7 +40416,7 @@ var ToolbarComboBox_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
40423
40416
  }, [createElementVNode("span", {
40424
40417
  class: "sd-dropdown-caret",
40425
40418
  innerHTML: caretIcon.value
40426
- }, null, 8, _hoisted_4$5)], 40, _hoisted_3$7),
40419
+ }, null, 8, _hoisted_4$6)], 40, _hoisted_3$8),
40427
40420
  (openBlock(), createBlock(Teleport, { to: "body" }, [isOpen.value ? (openBlock(), createElementBlock("div", {
40428
40421
  key: 0,
40429
40422
  ref_key: "popupRef",
@@ -40768,8 +40761,8 @@ var _hoisted_1$11 = [
40768
40761
  "data-item-id"
40769
40762
  ];
40770
40763
  var _hoisted_2$8 = { key: 0 };
40771
- var _hoisted_3$6 = { key: 0 };
40772
- var _hoisted_4$4 = { key: 0 };
40764
+ var _hoisted_3$7 = { key: 0 };
40765
+ var _hoisted_4$5 = { key: 0 };
40773
40766
  var _hoisted_5$3 = { key: 0 };
40774
40767
  var _hoisted_6$2 = { key: 0 };
40775
40768
  var ButtonGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
@@ -41173,7 +41166,7 @@ var ButtonGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
41173
41166
  onTabOut: _cache[1] || (_cache[1] = ($event) => handleFontSizeTabOut($event)),
41174
41167
  onEditorHandoff: handleEditorHandoff
41175
41168
  }, null, 8, ["item", "ui-font-family"])]),
41176
- default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_3$6, "(disabled)")) : createCommentVNode("", true)])]),
41169
+ default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_3$7, "(disabled)")) : createCommentVNode("", true)])]),
41177
41170
  _: 2
41178
41171
  }, 1032, ["disabled", "content-style"])) : isDropdown(item) && item.nestedOptions?.value?.length ? (openBlock(), createBlock(ToolbarDropdown_default, {
41179
41172
  key: 3,
@@ -41210,7 +41203,7 @@ var ButtonGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
41210
41203
  "onTextSubmit",
41211
41204
  "onMainClick"
41212
41205
  ])]),
41213
- default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_4$4, "(disabled)")) : createCommentVNode("", true)])]),
41206
+ default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_4$5, "(disabled)")) : createCommentVNode("", true)])]),
41214
41207
  _: 2
41215
41208
  }, 1032, ["disabled", "content-style"])]),
41216
41209
  _: 2
@@ -41577,7 +41570,13 @@ var Toolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
41577
41570
  proxy.$toolbar.pendingSelectionCapture = pendingSelectionCapture;
41578
41571
  };
41579
41572
  const handleCommand = ({ item, argument, option }) => {
41580
- restoreSelection();
41573
+ const commandId = resolveToolbarCommandId(item?.name?.value);
41574
+ if (!(item?.type === "button" && !item.isCustomToolbarItem && [
41575
+ "bold",
41576
+ "italic",
41577
+ "underline",
41578
+ "strikethrough"
41579
+ ].includes(commandId) && proxy.$toolbar.snapshot?.commands?.[commandId]?.source === "builtin")) restoreSelection();
41581
41580
  proxy.$toolbar.emitCommand({
41582
41581
  item,
41583
41582
  argument,
@@ -41655,7 +41654,7 @@ var Toolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
41655
41654
  ], 40, _hoisted_1$10);
41656
41655
  };
41657
41656
  }
41658
- }, [["__scopeId", "data-v-19ce2dae"]]);
41657
+ }, [["__scopeId", "data-v-9554df11"]]);
41659
41658
  //#endregion
41660
41659
  //#region src/internal/toolbar/built-in/font-options.js
41661
41660
  /**
@@ -42082,8 +42081,8 @@ var numberedStyleButtons = [
42082
42081
  //#region src/internal/toolbar/built-in/DocumentMode.vue
42083
42082
  var _hoisted_1$7 = ["onClick", "onKeydown"];
42084
42083
  var _hoisted_2$7 = { class: "document-mode-column icon-column" };
42085
- var _hoisted_3$5 = ["innerHTML"];
42086
- var _hoisted_4$3 = { class: "document-mode-column text-column" };
42084
+ var _hoisted_3$6 = ["innerHTML"];
42085
+ var _hoisted_4$4 = { class: "document-mode-column text-column" };
42087
42086
  var _hoisted_5$2 = { class: "document-mode-type" };
42088
42087
  var _hoisted_6$1 = { class: "document-mode-description" };
42089
42088
  var DocumentMode_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
@@ -42146,7 +42145,7 @@ var DocumentMode_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42146
42145
  }, [createElementVNode("div", _hoisted_2$7, [createElementVNode("div", {
42147
42146
  class: "icon-column__icon",
42148
42147
  innerHTML: option.icon
42149
- }, null, 8, _hoisted_3$5)]), createElementVNode("div", _hoisted_4$3, [createElementVNode("div", _hoisted_5$2, toDisplayString(option.label), 1), createElementVNode("div", _hoisted_6$1, toDisplayString(option.description), 1)])], 42, _hoisted_1$7);
42148
+ }, null, 8, _hoisted_3$6)]), createElementVNode("div", _hoisted_4$4, [createElementVNode("div", _hoisted_5$2, toDisplayString(option.label), 1), createElementVNode("div", _hoisted_6$1, toDisplayString(option.description), 1)])], 42, _hoisted_1$7);
42150
42149
  }), 256))], 2);
42151
42150
  };
42152
42151
  }
@@ -42162,6 +42161,12 @@ var _hoisted_2$6 = [
42162
42161
  "onKeydown",
42163
42162
  "aria-label"
42164
42163
  ];
42164
+ var _hoisted_3$5 = [
42165
+ "title",
42166
+ "aria-label",
42167
+ "onClick"
42168
+ ];
42169
+ var _hoisted_4$3 = ["innerHTML"];
42165
42170
  var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42166
42171
  __name: "LinkedStyle",
42167
42172
  props: {
@@ -42172,9 +42177,13 @@ var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42172
42177
  selectedOption: {
42173
42178
  type: String,
42174
42179
  default: null
42180
+ },
42181
+ updateLabel: {
42182
+ type: String,
42183
+ default: "Update to match selection"
42175
42184
  }
42176
42185
  },
42177
- emits: ["select"],
42186
+ emits: ["select", "update"],
42178
42187
  setup(__props, { emit: __emit }) {
42179
42188
  const emit = __emit;
42180
42189
  const styleRefs = ref([]);
@@ -42182,6 +42191,9 @@ var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42182
42191
  const select = (style) => {
42183
42192
  emit("select", style);
42184
42193
  };
42194
+ const update = (style) => {
42195
+ emit("update", style);
42196
+ };
42185
42197
  const moveToNextStyle = (index) => {
42186
42198
  if (index === styleRefs.value.length - 1) return;
42187
42199
  const nextItem = styleRefs.value[index + 1];
@@ -42241,11 +42253,22 @@ var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42241
42253
  class: "style-name",
42242
42254
  "data-item": "btn-linkedStyles-option",
42243
42255
  style: normalizeStyle(previewStyle(style))
42244
- }, toDisplayString(styleLabel(style)), 5)], 42, _hoisted_2$6);
42256
+ }, toDisplayString(styleLabel(style)), 5), createElementVNode("button", {
42257
+ type: "button",
42258
+ class: "style-update",
42259
+ "data-item": "btn-linkedStyles-update",
42260
+ title: props.updateLabel,
42261
+ "aria-label": `${props.updateLabel}: ${styleLabel(style)}`,
42262
+ onClick: withModifiers(($event) => update(style), ["stop"]),
42263
+ onKeydown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
42264
+ }, [createElementVNode("span", {
42265
+ class: "style-update-icon",
42266
+ innerHTML: unref(toolbarIcons).paintbrush
42267
+ }, null, 8, _hoisted_4$3)], 40, _hoisted_3$5)], 42, _hoisted_2$6);
42245
42268
  }), 128))]);
42246
42269
  };
42247
42270
  }
42248
- }, [["__scopeId", "data-v-74c8924b"]]);
42271
+ }, [["__scopeId", "data-v-b5a32523"]]);
42249
42272
  //#endregion
42250
42273
  //#region src/internal/toolbar/built-in/AIWriter.vue
42251
42274
  var _hoisted_1$5 = ["placeholder"];
@@ -44446,10 +44469,18 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
44446
44469
  argument: styleId
44447
44470
  });
44448
44471
  };
44472
+ const handleUpdate = (style) => {
44473
+ closeDropdown(linkedStyles);
44474
+ const styleId = typeof style === "string" ? style : style?.id ?? null;
44475
+ if (!styleId) return;
44476
+ superToolbar.updateLinkedStyleToMatchSelection?.(styleId);
44477
+ };
44449
44478
  const activeStyleId = superToolbar.getActiveLinkedStyleId?.() ?? null;
44450
44479
  return h("div", {}, [h(LinkedStyle_default, {
44451
44480
  styles: superToolbar.getLinkedStyleOptions?.() ?? [],
44452
44481
  onSelect: handleSelect,
44482
+ onUpdate: handleUpdate,
44483
+ updateLabel: toolbarTexts.updateLinkedStyle,
44453
44484
  selectedOption: activeStyleId
44454
44485
  })]);
44455
44486
  }
@@ -44708,7 +44739,8 @@ var toolbarTexts = {
44708
44739
  documentEditingModeDescription: "Edit document directly",
44709
44740
  documentSuggestingModeDescription: "Edits become suggestions",
44710
44741
  documentViewingModeDescription: "View clean version of document only",
44711
- linkedStyles: "Linked styles"
44742
+ linkedStyles: "Linked styles",
44743
+ updateLinkedStyle: "Update to match selection"
44712
44744
  };
44713
44745
  //#endregion
44714
44746
  //#region src/internal/toolbar/built-in/general.js
@@ -45200,12 +45232,16 @@ var BuiltInToolbar = class extends import_eventemitter3.default {
45200
45232
  return this._linkedStyleOptions.value;
45201
45233
  }
45202
45234
  #refreshLinkedStyleOptions() {
45203
- this.ui?.styles?.getCatalog?.({ includePreview: true });
45235
+ const allStyles = this.ui?.styles?.getCatalog?.({ includePreview: true });
45204
45236
  const options = (this.ui?.styles?.getCatalog?.({
45205
45237
  view: "quickGallery",
45206
45238
  includePreview: true
45207
45239
  }))?.items ?? this.ui?.styles?.getQuickGallery?.() ?? [];
45208
- if (options !== this._linkedStyleOptions.value) this._linkedStyleOptions.value = options;
45240
+ const activeStyleId = this.ui?.styles?.getActiveParagraphStyle?.()?.styleId;
45241
+ const activeStyle = activeStyleId && !options.some((style) => style.id === activeStyleId) ? allStyles?.styles?.find((style) => style.id === activeStyleId && (style.type === "paragraph" || style.type === "linked")) : null;
45242
+ const nextOptions = activeStyle ? [activeStyle, ...options] : options;
45243
+ const previousOptions = this._linkedStyleOptions.value;
45244
+ if (nextOptions.length !== previousOptions.length || nextOptions.some((style, index) => style !== previousOptions[index])) this._linkedStyleOptions.value = nextOptions;
45209
45245
  }
45210
45246
  /**
45211
45247
  * The stable style id active across the current selection's paragraph(s), or
@@ -45215,6 +45251,17 @@ var BuiltInToolbar = class extends import_eventemitter3.default {
45215
45251
  getActiveLinkedStyleId() {
45216
45252
  return this.ui?.styles?.getActiveParagraphStyle?.()?.styleId ?? null;
45217
45253
  }
45254
+ async updateLinkedStyleToMatchSelection(styleId) {
45255
+ if (!styleId || typeof this.ui?.styles?.updateToMatchSelection !== "function") return null;
45256
+ try {
45257
+ return await this.ui.styles.updateToMatchSelection({ styleId });
45258
+ } catch (error) {
45259
+ this.#emitCommandException(error, "linkedStyles");
45260
+ return null;
45261
+ } finally {
45262
+ this.updateToolbarState();
45263
+ }
45264
+ }
45218
45265
  /**
45219
45266
  * Compatibility hook: `SuperDoc` calls this when the active editor changes.
45220
45267
  * The shared controller already tracks selection/transaction state, so this
@@ -46154,7 +46201,7 @@ var SuperDoc = class extends import_eventemitter3.default {
46154
46201
  }
46155
46202
  this.userColorMap = /* @__PURE__ */ new Map();
46156
46203
  this.colorIndex = 0;
46157
- this.version = "2.27.0";
46204
+ this.version = "2.28.0-next.2";
46158
46205
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
46159
46206
  this.superdocId = config.superdocId || v4();
46160
46207
  this.colors = this.config.colors ?? [];