superdoc 2.27.0-next.1 → 2.27.0-next.11

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 (53) hide show
  1. package/dist/chunks/{create-super-doc-ui-BCQ5RHxy.es.js → create-super-doc-ui-B29zw5qD.es.js} +192 -13
  2. package/dist/chunks/{create-super-doc-ui-DK14sCrT.cjs → create-super-doc-ui-D1eOhAjv.cjs} +197 -12
  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/history/history.types.d.ts +0 -6
  7. package/dist/document-api/src/index.d.ts +4 -4
  8. package/dist/document-api/src/lists/lists.types.d.ts +3 -0
  9. package/dist/document-api/src/styles/apply.d.ts +26 -2
  10. package/dist/document-api/src/styles/index.d.ts +3 -3
  11. package/dist/document-api/src/styles/schema.d.ts +3 -1
  12. package/dist/document-api/src/styles/validation.d.ts +10 -9
  13. package/dist/document-api/src/types/receipt.d.ts +2 -1
  14. package/dist/document-api/src/types/temporary-mutation.d.ts +39 -4
  15. package/dist/layout-engine/contracts/src/direction-context.d.ts +1 -2
  16. package/dist/layout-engine/contracts/src/resolved-layout.d.ts +0 -34
  17. package/dist/layout-engine/layout-bridge/src/neutral-hit.d.ts +0 -7
  18. package/dist/layout-engine/layout-engine/src/index.d.ts +0 -1
  19. package/dist/layout-engine/painters/dom/src/features/inline-direction/run-direction.d.ts +0 -3
  20. package/dist/public/ui-react.cjs +1 -1
  21. package/dist/public/ui-react.es.js +1 -1
  22. package/dist/public/ui-vue.cjs +1 -1
  23. package/dist/public/ui-vue.es.js +1 -1
  24. package/dist/public/ui.cjs +1 -1
  25. package/dist/public/ui.es.js +1 -1
  26. package/dist/style.css +1 -1
  27. package/dist/style.layered.css +1 -1
  28. package/dist/superdoc/src/core/types/index.d.ts +3 -60
  29. package/dist/superdoc/src/core/v2-integration/v2-integration.d.ts +2 -5
  30. package/dist/superdoc/src/helpers/tracked-change-comment-lane.d.ts +1 -0
  31. package/dist/superdoc/src/helpers/v2-review-mutation-impact.d.ts +0 -6
  32. package/dist/superdoc/src/internal/toolbar/built-in/LinkedStyle.vue.d.ts +3 -1
  33. package/dist/superdoc/src/internal/toolbar/built-in/toolbarTexts.d.ts +1 -0
  34. package/dist/superdoc/src/internal/toolbar/built-in-toolbar.d.ts +1 -0
  35. package/dist/superdoc/src/public/ui/style-match-patch.d.ts +7 -0
  36. package/dist/superdoc/src/public/ui/types.d.ts +5 -1
  37. package/dist/superdoc/src/public/ui-react.d.ts +0 -5
  38. package/dist/superdoc/src/public/ui-vue.d.ts +0 -5
  39. package/dist/superdoc/src/public/ui.d.cts +18 -0
  40. package/dist/superdoc/src/public/ui.d.ts +1 -10
  41. package/dist/superdoc.cjs +117 -85
  42. package/dist/superdoc.es.js +110 -80
  43. package/dist-cdn/style.layered.css +1 -1
  44. package/dist-cdn/superdoc.min.css +1 -1
  45. package/dist-cdn/superdoc.min.js +38 -38
  46. package/package.json +2 -5
  47. package/dist/superdoc/src/components/CommentsLayer/comment-schemas.d.ts +0 -18
  48. package/dist/superdoc/src/components/CommentsLayer/types.d.ts +0 -3
  49. package/dist/superdoc/src/components/CommentsLayer/use-conversation.d.ts +0 -22
  50. package/dist/superdoc/src/components/CommentsLayer/use-floating-comment.d.ts +0 -11
  51. package/dist/superdoc/src/core/collaboration/room-overwrite.d.ts +0 -22
  52. package/dist/superdoc/src/core/index.d.ts +0 -1
  53. package/dist/superdoc/src/stores/hrbr-fields-store.d.ts +0 -43
@@ -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 isWorkflowRecordingEnabled, a as registerFirstPartyCommandMutation, c as getV2TrackedChangeMutationImpact, d as resolveImageSrc, g as getWorkflowRecording, h as createInteractionHistory, i as readFirstPartyPageNumbers, l as isPlainObject$1, m as closeInteractionHistory, n as executeFirstPartyCommandAsync, p as DOM_CLASS_NAMES, r as executeFirstPartyShortcutAsync, s as applyV2CommentInvalidationFromMutation, t as createSuperDocUI, u as createImageFilePicker, v as recordInteraction } from "./chunks/create-super-doc-ui-BCQ5RHxy.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-next.1";
261
+ return "2.27.0-next.11";
262
262
  } catch {
263
263
  return "unknown";
264
264
  }
@@ -7085,19 +7085,8 @@ async function loadDefaultV2IntegrationOrFallback() {
7085
7085
  console.error("[SuperDoc] DOCX Engine failed to load; using the stub.", error);
7086
7086
  }
7087
7087
  }
7088
- var V2_SYNTHETIC_TRACKED_CHANGE_COMMENT_ID_PREFIX = "tc-comment:";
7089
7088
  var V2_BODY_TRACKED_CHANGE_ANCHOR_PREFIX = "tc::body::";
7090
7089
  /**
7091
- * @param {unknown} item
7092
- * @returns {boolean}
7093
- */
7094
- function isSyntheticTrackedChangeCommentLaneItem(item) {
7095
- if (!item || typeof item !== "object") return false;
7096
- const id = item.id ?? item.commentId;
7097
- if (typeof id !== "string") return false;
7098
- return id.startsWith(V2_SYNTHETIC_TRACKED_CHANGE_COMMENT_ID_PREFIX);
7099
- }
7100
- /**
7101
7090
  * @param {{ trackedChange?: unknown, trackedChangeAnchorKey?: unknown } | null | undefined} row
7102
7091
  * @returns {boolean}
7103
7092
  */
@@ -12264,11 +12253,11 @@ function useUiFontFamily() {
12264
12253
  //#region src/components/CommentsLayer/CommentsDropdown.vue
12265
12254
  var _hoisted_1$31 = { class: "comments-dropdown" };
12266
12255
  var _hoisted_2$24 = ["onClick"];
12267
- var _hoisted_3$20 = {
12256
+ var _hoisted_3$21 = {
12268
12257
  key: 0,
12269
12258
  class: "comments-dropdown__option-icon"
12270
12259
  };
12271
- var _hoisted_4$14 = ["innerHTML"];
12260
+ var _hoisted_4$15 = ["innerHTML"];
12272
12261
  var _hoisted_5$11 = { class: "comments-dropdown__option-label" };
12273
12262
  var CommentsDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12274
12263
  __name: "CommentsDropdown",
@@ -12409,10 +12398,10 @@ var CommentsDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12409
12398
  key: option.key,
12410
12399
  class: normalizeClass(["comments-dropdown__option", { "sd-disabled": option.disabled }]),
12411
12400
  onClick: ($event) => onOptionClick(option)
12412
- }, [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", {
12413
12402
  key: 0,
12414
12403
  innerHTML: option.iconString
12415
- }, null, 8, _hoisted_4$14)) : (openBlock(), createBlock(unref(OptionIcon), {
12404
+ }, null, 8, _hoisted_4$15)) : (openBlock(), createBlock(unref(OptionIcon), {
12416
12405
  key: 1,
12417
12406
  option
12418
12407
  }, null, 8, ["option"]))])) : createCommentVNode("", true), createElementVNode("span", _hoisted_5$11, toDisplayString(option.label), 1)], 10, _hoisted_2$24);
@@ -12424,8 +12413,8 @@ var CommentsDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12424
12413
  //#region src/components/CommentsLayer/InternalDropdown.vue
12425
12414
  var _hoisted_1$30 = { class: "sd-comment-option" };
12426
12415
  var _hoisted_2$23 = ["innerHTML"];
12427
- var _hoisted_3$19 = { class: "sd-option-state" };
12428
- var _hoisted_4$13 = ["innerHTML"];
12416
+ var _hoisted_3$20 = { class: "sd-option-state" };
12417
+ var _hoisted_4$14 = ["innerHTML"];
12429
12418
  var InternalDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12430
12419
  __name: "InternalDropdown",
12431
12420
  props: {
@@ -12498,11 +12487,11 @@ var InternalDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12498
12487
  class: "sd-active-icon",
12499
12488
  innerHTML: activeIcon.value
12500
12489
  }, null, 8, _hoisted_2$23),
12501
- createElementVNode("div", _hoisted_3$19, toDisplayString(getState.value), 1),
12490
+ createElementVNode("div", _hoisted_3$20, toDisplayString(getState.value), 1),
12502
12491
  createElementVNode("div", {
12503
12492
  class: "sd-dropdown-caret",
12504
12493
  innerHTML: unref(superdocIcons).caretDown
12505
- }, null, 8, _hoisted_4$13)
12494
+ }, null, 8, _hoisted_4$14)
12506
12495
  ])]),
12507
12496
  _: 1
12508
12497
  }, 8, ["disabled", "content-style"])], 4);
@@ -12660,7 +12649,7 @@ var isAllowed = (permission, role, isInternal, context = {}) => {
12660
12649
  //#region src/components/general/Avatar.vue
12661
12650
  var _hoisted_1$29 = { class: "user-container" };
12662
12651
  var _hoisted_2$22 = ["src"];
12663
- var _hoisted_3$18 = {
12652
+ var _hoisted_3$19 = {
12664
12653
  key: 1,
12665
12654
  class: "user-bg"
12666
12655
  };
@@ -12685,7 +12674,7 @@ var Avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12685
12674
  key: 0,
12686
12675
  class: "user-bg",
12687
12676
  src: __props.user.image.startsWith("http") ? __props.user.image : `data:image/png;base64,${__props.user.image}`
12688
- }, 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))]);
12689
12678
  };
12690
12679
  }
12691
12680
  }, [["__scopeId", "data-v-c95b2073"]]);
@@ -12693,8 +12682,8 @@ var Avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12693
12682
  //#region src/components/CommentsLayer/CommentHeader.vue
12694
12683
  var _hoisted_1$28 = { class: "card-section comment-header" };
12695
12684
  var _hoisted_2$21 = { class: "comment-header-left" };
12696
- var _hoisted_3$17 = { class: "user-info" };
12697
- var _hoisted_4$12 = { class: "user-name" };
12685
+ var _hoisted_3$18 = { class: "user-info" };
12686
+ var _hoisted_4$13 = { class: "user-name" };
12698
12687
  var _hoisted_5$10 = {
12699
12688
  key: 0,
12700
12689
  class: "imported-tag"
@@ -12954,7 +12943,7 @@ var CommentHeader_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12954
12943
  return openBlock(), createElementBlock("div", _hoisted_1$28, [createElementVNode("div", _hoisted_2$21, [createVNode(Avatar_default, {
12955
12944
  user: getCurrentUser.value,
12956
12945
  class: "avatar"
12957
- }, 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 }]) }, [
12958
12947
  allowResolve.value ? (openBlock(), createElementBlock("div", {
12959
12948
  key: 0,
12960
12949
  class: normalizeClass(["overflow-menu__icon", { "sd-is-disabled": Boolean(__props.resolveDisabledReason) }]),
@@ -12999,17 +12988,17 @@ var CommentHeader_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
12999
12988
  ], 2)]);
13000
12989
  };
13001
12990
  }
13002
- }, [["__scopeId", "data-v-f2f11c96"]]);
12991
+ }, [["__scopeId", "data-v-b2a33943"]]);
13003
12992
  //#endregion
13004
12993
  //#region src/components/CommentsLayer/CommentInput.vue
13005
12994
  var _hoisted_1$27 = { class: "input-section" };
13006
12995
  var _hoisted_2$20 = { class: "comment-composer" };
13007
- var _hoisted_3$16 = [
12996
+ var _hoisted_3$17 = [
13008
12997
  "aria-expanded",
13009
12998
  "aria-controls",
13010
12999
  "aria-activedescendant"
13011
13000
  ];
13012
- var _hoisted_4$11 = [
13001
+ var _hoisted_4$12 = [
13013
13002
  "id",
13014
13003
  "aria-selected",
13015
13004
  "data-sd-comment-mention-option",
@@ -13199,7 +13188,7 @@ var CommentInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
13199
13188
  onKeydown,
13200
13189
  onFocus: _cache[1] || (_cache[1] = ($event) => handleFocusChange(true)),
13201
13190
  onBlur: _cache[2] || (_cache[2] = ($event) => handleFocusChange(false))
13202
- }, 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", {
13203
13192
  key: 0,
13204
13193
  id: mentionListId,
13205
13194
  class: "comment-mention-list",
@@ -13215,7 +13204,7 @@ var CommentInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
13215
13204
  "aria-selected": index === highlightedMentionIndex.value,
13216
13205
  "data-sd-comment-mention-option": userKey(user),
13217
13206
  onMousedown: withModifiers(($event) => selectMention(user), ["prevent"])
13218
- }, [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);
13219
13208
  }), 128))])) : createCommentVNode("", true)])], 2)]);
13220
13209
  };
13221
13210
  }
@@ -13341,8 +13330,8 @@ var _hoisted_2$19 = {
13341
13330
  key: 0,
13342
13331
  class: "existing-internal-input"
13343
13332
  };
13344
- var _hoisted_3$15 = { class: "new-comment-input-wrapper" };
13345
- 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" };
13346
13335
  var _hoisted_5$8 = ["disabled"];
13347
13336
  var _hoisted_6$6 = {
13348
13337
  key: 0,
@@ -14421,7 +14410,7 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14421
14410
  comment: props.comment,
14422
14411
  "is-pending-input": true
14423
14412
  }, null, 8, ["config", "comment"]),
14424
- createElementVNode("div", _hoisted_3$15, [createVNode(CommentInput_default, {
14413
+ createElementVNode("div", _hoisted_3$16, [createVNode(CommentInput_default, {
14425
14414
  ref_key: "commentInput",
14426
14415
  ref: commentInput,
14427
14416
  users: usersFiltered.value,
@@ -14433,7 +14422,7 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14433
14422
  "config",
14434
14423
  "comment"
14435
14424
  ])]),
14436
- createElementVNode("div", _hoisted_4$10, [createElementVNode("button", {
14425
+ createElementVNode("div", _hoisted_4$11, [createElementVNode("button", {
14437
14426
  class: "sd-button reply-btn-cancel",
14438
14427
  onClick: withModifiers(handleCancel, ["stop", "prevent"])
14439
14428
  }, "Cancel"), createElementVNode("button", {
@@ -14609,7 +14598,7 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14609
14598
  ], 64))], 14, _hoisted_1$26)), [[_directive_click_outside, handleClickOutside]]);
14610
14599
  };
14611
14600
  }
14612
- }, [["__scopeId", "data-v-b16fc5d0"]]);
14601
+ }, [["__scopeId", "data-v-f5016db4"]]);
14613
14602
  //#endregion
14614
14603
  //#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
14615
14604
  var _hoisted_1$25 = [
@@ -14758,7 +14747,7 @@ var ReviewDirectoryListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_de
14758
14747
  //#region src/components/CommentsLayer/commentsList/commentsList.vue
14759
14748
  var _hoisted_1$24 = ["aria-busy"];
14760
14749
  var _hoisted_2$18 = { key: 0 };
14761
- var _hoisted_3$14 = { key: 1 };
14750
+ var _hoisted_3$15 = { key: 1 };
14762
14751
  var REPEATED_HEADER_FOOTER_STORY_TYPE = "headerFooterPart";
14763
14752
  var commentsList_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14764
14753
  __name: "commentsList",
@@ -14902,7 +14891,7 @@ var commentsList_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14902
14891
  "total",
14903
14892
  "tab-index"
14904
14893
  ]);
14905
- }), 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) => {
14894
+ }), 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) => {
14906
14895
  return openBlock(), createBlock(ReviewDirectoryListItem_default, {
14907
14896
  key: item.id,
14908
14897
  item,
@@ -19022,11 +19011,11 @@ var _hoisted_2$16 = {
19022
19011
  key: 1,
19023
19012
  class: "link-title"
19024
19013
  };
19025
- var _hoisted_3$13 = {
19014
+ var _hoisted_3$14 = {
19026
19015
  key: 2,
19027
19016
  class: "link-title"
19028
19017
  };
19029
- var _hoisted_4$9 = {
19018
+ var _hoisted_4$10 = {
19030
19019
  key: 3,
19031
19020
  class: "link-title"
19032
19021
  };
@@ -19269,7 +19258,7 @@ var LinkInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
19269
19258
  };
19270
19259
  return (_ctx, _cache) => {
19271
19260
  return openBlock(), createElementBlock("div", { class: normalizeClass(["link-input-ctn", { "high-contrast": unref(isHighContrastMode) }]) }, [
19272
- 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")),
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$14, "Edit link")) : (openBlock(), createElementBlock("div", _hoisted_4$10, "Add link")),
19273
19262
  __props.showInput && !isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_5$7, [
19274
19263
  createElementVNode("div", _hoisted_6$5, [_cache[5] || (_cache[5] = createElementVNode("div", { class: "input-icon text-input-icon" }, "T", -1)), withDirectives(createElementVNode("input", {
19275
19264
  type: "text",
@@ -21366,7 +21355,7 @@ var FOCUSABLE_SELECTOR = [
21366
21355
  //#region src/components/surfaces/SurfaceDialog.vue
21367
21356
  var _hoisted_1$19 = ["aria-labelledby", "aria-label"];
21368
21357
  var _hoisted_2$15 = ["id"];
21369
- var _hoisted_3$12 = { class: "sd-surface-dialog__content" };
21358
+ var _hoisted_3$13 = { class: "sd-surface-dialog__content" };
21370
21359
  var SurfaceDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21371
21360
  __name: "SurfaceDialog",
21372
21361
  props: {
@@ -21498,7 +21487,7 @@ var SurfaceDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21498
21487
  key: 0,
21499
21488
  id: titleId.value,
21500
21489
  class: "sd-surface-dialog__title"
21501
- }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$15)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$12, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21490
+ }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$15)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$13, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21502
21491
  key: 0,
21503
21492
  "surface-id": __props.surface.id,
21504
21493
  mode: "dialog",
@@ -21520,7 +21509,7 @@ var SurfaceDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21520
21509
  //#region src/components/surfaces/SurfaceFloating.vue
21521
21510
  var _hoisted_1$18 = ["aria-labelledby", "aria-label"];
21522
21511
  var _hoisted_2$14 = ["id"];
21523
- var _hoisted_3$11 = { class: "sd-surface-floating__content" };
21512
+ var _hoisted_3$12 = { class: "sd-surface-floating__content" };
21524
21513
  var SurfaceFloating_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21525
21514
  __name: "SurfaceFloating",
21526
21515
  props: { surface: {
@@ -21652,7 +21641,7 @@ var SurfaceFloating_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21652
21641
  key: 0,
21653
21642
  id: titleId.value,
21654
21643
  class: "sd-surface-floating__title"
21655
- }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$14)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$11, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21644
+ }, toDisplayString(__props.surface.request.title), 9, _hoisted_2$14)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$12, [__props.surface.render ? (openBlock(), createBlock(SurfaceExternalMount_default, {
21656
21645
  key: 0,
21657
21646
  "surface-id": __props.surface.id,
21658
21647
  mode: "floating",
@@ -21896,8 +21885,8 @@ var SurfaceHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21896
21885
  //#region src/SuperDoc.vue
21897
21886
  var _hoisted_1$17 = ["data-superdoc-ui-owner"];
21898
21887
  var _hoisted_2$13 = ["innerHTML"];
21899
- var _hoisted_3$10 = { class: "superdoc__document document" };
21900
- var _hoisted_4$8 = { class: "floating-comments" };
21888
+ var _hoisted_3$11 = { class: "superdoc__document document" };
21889
+ var _hoisted_4$9 = { class: "floating-comments" };
21901
21890
  var TRACKED_CHANGE_CARRIERS_RESTAMPED_EVENT = "superdoc:v2-tracked-change-carriers-restamped";
21902
21891
  var UNAVAILABLE_COMMAND_RESULT = false;
21903
21892
  var V2_SELECTION_TOOLBAR_SYNC_RETRY_FRAMES = 3;
@@ -24376,7 +24365,7 @@ var SuperDoc_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
24376
24365
  }, [createElementVNode("div", {
24377
24366
  class: "superdoc__tools-icon",
24378
24367
  innerHTML: unref(superdocIcons).comment
24379
- }, null, 8, _hoisted_2$13)], 32)], 4)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$10, [
24368
+ }, null, 8, _hoisted_2$13)], 32)], 4)) : createCommentVNode("", true), createElementVNode("div", _hoisted_3$11, [
24380
24369
  isCommentsEnabled.value ? (openBlock(), createElementBlock("div", {
24381
24370
  key: 0,
24382
24371
  class: "superdoc__selection-layer selection-layer",
@@ -24504,7 +24493,7 @@ var SuperDoc_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
24504
24493
  ref_key: "rightSidebarRef",
24505
24494
  ref: rightSidebarRef,
24506
24495
  class: "superdoc__right-sidebar right-sidebar"
24507
- }, [createElementVNode("div", _hoisted_4$8, [unref(hasInitializedLocations) && (floatingComments.value.length > 0 || unref(pendingComment)) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(documentsWithConverations), (doc) => {
24496
+ }, [createElementVNode("div", _hoisted_4$9, [unref(hasInitializedLocations) && (floatingComments.value.length > 0 || unref(pendingComment)) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(documentsWithConverations), (doc) => {
24508
24497
  return openBlock(), createBlock(FloatingComments_default, {
24509
24498
  parent: layers.value,
24510
24499
  "current-document": doc
@@ -37911,13 +37900,6 @@ var TOOLBAR_ITEM_ALIASES = Object.freeze({
37911
37900
  * `superdoc.ui`.
37912
37901
  * - `ui: { ... }` opts in per surface. An omitted key keeps that surface's
37913
37902
  * historical default rather than inheriting from its siblings.
37914
- *
37915
- * AIDEV-NOTE: legacy-public - the `modules.*` built-in UI spellings shipped in
37916
- * stable 2.3.0 and stay supported for all of v2, so these branches are load
37917
- * bearing rather than scaffolding. Every built-in surface now has a canonical
37918
- * path: use `ui.*`, `interaction.*`, `surfaces.*`, or `hyperlinks.*`, with
37919
- * comment policy on `interaction.comments` and hyperlink activation on
37920
- * `hyperlinks.onActivate`. Earliest removal: v3.0.
37921
37903
  */
37922
37904
  var isUnknownArray = (value) => Array.isArray(value);
37923
37905
  var isOptionsBag = (value) => isPlainObject$1(value);
@@ -39015,8 +38997,8 @@ var _hoisted_1$15 = [
39015
38997
  "aria-disabled"
39016
38998
  ];
39017
38999
  var _hoisted_2$11 = ["data-item"];
39018
- var _hoisted_3$9 = ["data-item"];
39019
- var _hoisted_4$7 = {
39000
+ var _hoisted_3$10 = ["data-item"];
39001
+ var _hoisted_4$8 = {
39020
39002
  key: 1,
39021
39003
  class: "sd-button-label"
39022
39004
  };
@@ -39237,7 +39219,7 @@ var ToolbarButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
39237
39219
  "color",
39238
39220
  "icon",
39239
39221
  "name"
39240
- ])) : 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),
39222
+ ])) : 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),
39241
39223
  isSplit.value ? (openBlock(), createElementBlock("div", {
39242
39224
  key: 1,
39243
39225
  class: "sd-toolbar-button__caret",
@@ -39339,8 +39321,8 @@ var ToolbarSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
39339
39321
  //#region src/internal/toolbar/built-in/ToolbarDropdown.vue
39340
39322
  var _hoisted_1$13 = { class: "toolbar-dropdown" };
39341
39323
  var _hoisted_2$10 = ["data-superdoc-ui-owner"];
39342
- var _hoisted_3$8 = ["onClick"];
39343
- var _hoisted_4$6 = {
39324
+ var _hoisted_3$9 = ["onClick"];
39325
+ var _hoisted_4$7 = {
39344
39326
  key: 0,
39345
39327
  class: "toolbar-dropdown-option__icon"
39346
39328
  };
@@ -39729,7 +39711,7 @@ var ToolbarDropdown_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
39729
39711
  }), [isRenderOption(option) ? (openBlock(), createBlock(unref(RenderOption), {
39730
39712
  key: 0,
39731
39713
  option
39732
- }, 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);
39714
+ }, 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);
39733
39715
  }), 128))], 16, _hoisted_2$10)) : createCommentVNode("", true)]),
39734
39716
  _: 3
39735
39717
  })], 8, ["to"]))]);
@@ -39968,12 +39950,12 @@ var _hoisted_2$9 = [
39968
39950
  "aria-activedescendant",
39969
39951
  "data-item"
39970
39952
  ];
39971
- var _hoisted_3$7 = [
39953
+ var _hoisted_3$8 = [
39972
39954
  "data-item",
39973
39955
  "aria-label",
39974
39956
  "disabled"
39975
39957
  ];
39976
- var _hoisted_4$5 = ["innerHTML"];
39958
+ var _hoisted_4$6 = ["innerHTML"];
39977
39959
  var _hoisted_5$4 = [
39978
39960
  "data-superdoc-ui-owner",
39979
39961
  "id",
@@ -40441,7 +40423,7 @@ var ToolbarComboBox_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
40441
40423
  }, [createElementVNode("span", {
40442
40424
  class: "sd-dropdown-caret",
40443
40425
  innerHTML: caretIcon.value
40444
- }, null, 8, _hoisted_4$5)], 40, _hoisted_3$7),
40426
+ }, null, 8, _hoisted_4$6)], 40, _hoisted_3$8),
40445
40427
  (openBlock(), createBlock(Teleport, { to: "body" }, [isOpen.value ? (openBlock(), createElementBlock("div", {
40446
40428
  key: 0,
40447
40429
  ref_key: "popupRef",
@@ -40786,8 +40768,8 @@ var _hoisted_1$11 = [
40786
40768
  "data-item-id"
40787
40769
  ];
40788
40770
  var _hoisted_2$8 = { key: 0 };
40789
- var _hoisted_3$6 = { key: 0 };
40790
- var _hoisted_4$4 = { key: 0 };
40771
+ var _hoisted_3$7 = { key: 0 };
40772
+ var _hoisted_4$5 = { key: 0 };
40791
40773
  var _hoisted_5$3 = { key: 0 };
40792
40774
  var _hoisted_6$2 = { key: 0 };
40793
40775
  var ButtonGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
@@ -41191,7 +41173,7 @@ var ButtonGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
41191
41173
  onTabOut: _cache[1] || (_cache[1] = ($event) => handleFontSizeTabOut($event)),
41192
41174
  onEditorHandoff: handleEditorHandoff
41193
41175
  }, null, 8, ["item", "ui-font-family"])]),
41194
- default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_3$6, "(disabled)")) : createCommentVNode("", true)])]),
41176
+ default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_3$7, "(disabled)")) : createCommentVNode("", true)])]),
41195
41177
  _: 2
41196
41178
  }, 1032, ["disabled", "content-style"])) : isDropdown(item) && item.nestedOptions?.value?.length ? (openBlock(), createBlock(ToolbarDropdown_default, {
41197
41179
  key: 3,
@@ -41228,7 +41210,7 @@ var ButtonGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
41228
41210
  "onTextSubmit",
41229
41211
  "onMainClick"
41230
41212
  ])]),
41231
- default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_4$4, "(disabled)")) : createCommentVNode("", true)])]),
41213
+ default: withCtx(() => [createElementVNode("div", null, [createTextVNode(toDisplayString(item.tooltip) + " ", 1), item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_4$5, "(disabled)")) : createCommentVNode("", true)])]),
41232
41214
  _: 2
41233
41215
  }, 1032, ["disabled", "content-style"])]),
41234
41216
  _: 2
@@ -41280,7 +41262,7 @@ var ButtonGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
41280
41262
  }), 128))], 36);
41281
41263
  };
41282
41264
  }
41283
- }, [["__scopeId", "data-v-8d7a9de1"]]);
41265
+ }, [["__scopeId", "data-v-fb216897"]]);
41284
41266
  var TOOLBAR_FONTS = [
41285
41267
  ["Arial", "sans-serif"],
41286
41268
  ["Arial Black", "sans-serif"],
@@ -42100,8 +42082,8 @@ var numberedStyleButtons = [
42100
42082
  //#region src/internal/toolbar/built-in/DocumentMode.vue
42101
42083
  var _hoisted_1$7 = ["onClick", "onKeydown"];
42102
42084
  var _hoisted_2$7 = { class: "document-mode-column icon-column" };
42103
- var _hoisted_3$5 = ["innerHTML"];
42104
- var _hoisted_4$3 = { class: "document-mode-column text-column" };
42085
+ var _hoisted_3$6 = ["innerHTML"];
42086
+ var _hoisted_4$4 = { class: "document-mode-column text-column" };
42105
42087
  var _hoisted_5$2 = { class: "document-mode-type" };
42106
42088
  var _hoisted_6$1 = { class: "document-mode-description" };
42107
42089
  var DocumentMode_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
@@ -42164,7 +42146,7 @@ var DocumentMode_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42164
42146
  }, [createElementVNode("div", _hoisted_2$7, [createElementVNode("div", {
42165
42147
  class: "icon-column__icon",
42166
42148
  innerHTML: option.icon
42167
- }, 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);
42149
+ }, 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);
42168
42150
  }), 256))], 2);
42169
42151
  };
42170
42152
  }
@@ -42180,6 +42162,12 @@ var _hoisted_2$6 = [
42180
42162
  "onKeydown",
42181
42163
  "aria-label"
42182
42164
  ];
42165
+ var _hoisted_3$5 = [
42166
+ "title",
42167
+ "aria-label",
42168
+ "onClick"
42169
+ ];
42170
+ var _hoisted_4$3 = ["innerHTML"];
42183
42171
  var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42184
42172
  __name: "LinkedStyle",
42185
42173
  props: {
@@ -42190,9 +42178,13 @@ var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42190
42178
  selectedOption: {
42191
42179
  type: String,
42192
42180
  default: null
42181
+ },
42182
+ updateLabel: {
42183
+ type: String,
42184
+ default: "Update to match selection"
42193
42185
  }
42194
42186
  },
42195
- emits: ["select"],
42187
+ emits: ["select", "update"],
42196
42188
  setup(__props, { emit: __emit }) {
42197
42189
  const emit = __emit;
42198
42190
  const styleRefs = ref([]);
@@ -42200,6 +42192,9 @@ var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42200
42192
  const select = (style) => {
42201
42193
  emit("select", style);
42202
42194
  };
42195
+ const update = (style) => {
42196
+ emit("update", style);
42197
+ };
42203
42198
  const moveToNextStyle = (index) => {
42204
42199
  if (index === styleRefs.value.length - 1) return;
42205
42200
  const nextItem = styleRefs.value[index + 1];
@@ -42259,11 +42254,22 @@ var LinkedStyle_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
42259
42254
  class: "style-name",
42260
42255
  "data-item": "btn-linkedStyles-option",
42261
42256
  style: normalizeStyle(previewStyle(style))
42262
- }, toDisplayString(styleLabel(style)), 5)], 42, _hoisted_2$6);
42257
+ }, toDisplayString(styleLabel(style)), 5), createElementVNode("button", {
42258
+ type: "button",
42259
+ class: "style-update",
42260
+ "data-item": "btn-linkedStyles-update",
42261
+ title: props.updateLabel,
42262
+ "aria-label": `${props.updateLabel}: ${styleLabel(style)}`,
42263
+ onClick: withModifiers(($event) => update(style), ["stop"]),
42264
+ onKeydown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
42265
+ }, [createElementVNode("span", {
42266
+ class: "style-update-icon",
42267
+ innerHTML: unref(toolbarIcons).paintbrush
42268
+ }, null, 8, _hoisted_4$3)], 40, _hoisted_3$5)], 42, _hoisted_2$6);
42263
42269
  }), 128))]);
42264
42270
  };
42265
42271
  }
42266
- }, [["__scopeId", "data-v-74c8924b"]]);
42272
+ }, [["__scopeId", "data-v-b5a32523"]]);
42267
42273
  //#endregion
42268
42274
  //#region src/internal/toolbar/built-in/AIWriter.vue
42269
42275
  var _hoisted_1$5 = ["placeholder"];
@@ -44464,10 +44470,18 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
44464
44470
  argument: styleId
44465
44471
  });
44466
44472
  };
44473
+ const handleUpdate = (style) => {
44474
+ closeDropdown(linkedStyles);
44475
+ const styleId = typeof style === "string" ? style : style?.id ?? null;
44476
+ if (!styleId) return;
44477
+ superToolbar.updateLinkedStyleToMatchSelection?.(styleId);
44478
+ };
44467
44479
  const activeStyleId = superToolbar.getActiveLinkedStyleId?.() ?? null;
44468
44480
  return h("div", {}, [h(LinkedStyle_default, {
44469
44481
  styles: superToolbar.getLinkedStyleOptions?.() ?? [],
44470
44482
  onSelect: handleSelect,
44483
+ onUpdate: handleUpdate,
44484
+ updateLabel: toolbarTexts.updateLinkedStyle,
44471
44485
  selectedOption: activeStyleId
44472
44486
  })]);
44473
44487
  }
@@ -44726,7 +44740,8 @@ var toolbarTexts = {
44726
44740
  documentEditingModeDescription: "Edit document directly",
44727
44741
  documentSuggestingModeDescription: "Edits become suggestions",
44728
44742
  documentViewingModeDescription: "View clean version of document only",
44729
- linkedStyles: "Linked styles"
44743
+ linkedStyles: "Linked styles",
44744
+ updateLinkedStyle: "Update to match selection"
44730
44745
  };
44731
44746
  //#endregion
44732
44747
  //#region src/internal/toolbar/built-in/general.js
@@ -45218,12 +45233,16 @@ var BuiltInToolbar = class extends import_eventemitter3.default {
45218
45233
  return this._linkedStyleOptions.value;
45219
45234
  }
45220
45235
  #refreshLinkedStyleOptions() {
45221
- this.ui?.styles?.getCatalog?.({ includePreview: true });
45236
+ const allStyles = this.ui?.styles?.getCatalog?.({ includePreview: true });
45222
45237
  const options = (this.ui?.styles?.getCatalog?.({
45223
45238
  view: "quickGallery",
45224
45239
  includePreview: true
45225
45240
  }))?.items ?? this.ui?.styles?.getQuickGallery?.() ?? [];
45226
- if (options !== this._linkedStyleOptions.value) this._linkedStyleOptions.value = options;
45241
+ const activeStyleId = this.ui?.styles?.getActiveParagraphStyle?.()?.styleId;
45242
+ const activeStyle = activeStyleId && !options.some((style) => style.id === activeStyleId) ? allStyles?.styles?.find((style) => style.id === activeStyleId && (style.type === "paragraph" || style.type === "linked")) : null;
45243
+ const nextOptions = activeStyle ? [activeStyle, ...options] : options;
45244
+ const previousOptions = this._linkedStyleOptions.value;
45245
+ if (nextOptions.length !== previousOptions.length || nextOptions.some((style, index) => style !== previousOptions[index])) this._linkedStyleOptions.value = nextOptions;
45227
45246
  }
45228
45247
  /**
45229
45248
  * The stable style id active across the current selection's paragraph(s), or
@@ -45233,6 +45252,17 @@ var BuiltInToolbar = class extends import_eventemitter3.default {
45233
45252
  getActiveLinkedStyleId() {
45234
45253
  return this.ui?.styles?.getActiveParagraphStyle?.()?.styleId ?? null;
45235
45254
  }
45255
+ async updateLinkedStyleToMatchSelection(styleId) {
45256
+ if (!styleId || typeof this.ui?.styles?.updateToMatchSelection !== "function") return null;
45257
+ try {
45258
+ return await this.ui.styles.updateToMatchSelection({ styleId });
45259
+ } catch (error) {
45260
+ this.#emitCommandException(error, "linkedStyles");
45261
+ return null;
45262
+ } finally {
45263
+ this.updateToolbarState();
45264
+ }
45265
+ }
45236
45266
  /**
45237
45267
  * Compatibility hook: `SuperDoc` calls this when the active editor changes.
45238
45268
  * The shared controller already tracks selection/transaction state, so this
@@ -46172,7 +46202,7 @@ var SuperDoc = class extends import_eventemitter3.default {
46172
46202
  }
46173
46203
  this.userColorMap = /* @__PURE__ */ new Map();
46174
46204
  this.colorIndex = 0;
46175
- this.version = "2.27.0-next.1";
46205
+ this.version = "2.27.0-next.11";
46176
46206
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
46177
46207
  this.superdocId = config.superdocId || v4();
46178
46208
  this.colors = this.config.colors ?? [];