superdoc 2.25.0-next.14 → 2.25.0-next.16

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.
package/dist/superdoc.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./chunks/rolldown-runtime-74VwNCz7.cjs");
3
3
  const require_blank_docx = require("./chunks/blank-docx-BuFAbRjs.cjs");
4
- const require_create_super_doc_ui = require("./chunks/create-super-doc-ui-ABeUNZlq.cjs");
4
+ const require_create_super_doc_ui = require("./chunks/create-super-doc-ui-BbTRF-Z9.cjs");
5
5
  const require_eventemitter3 = require("./chunks/eventemitter3-C_TAnXOl.cjs");
6
6
  const require_uuid = require("./chunks/uuid-BhG0ngwk.cjs");
7
7
  const require__plugin_vue_export_helper = require("./chunks/_plugin-vue_export-helper-BUdjGKyl.cjs");
@@ -304,7 +304,7 @@ var awarenessStatesToArray = (context, states) => {
304
304
  var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
305
305
  function getSuperdocVersion() {
306
306
  try {
307
- return "2.25.0-next.14";
307
+ return "2.25.0-next.16";
308
308
  } catch {
309
309
  return "unknown";
310
310
  }
@@ -6787,6 +6787,11 @@ var useSuperdocStore = defineStore("superdoc", () => {
6787
6787
  */
6788
6788
  const _initializeDocumentData = async (doc) => {
6789
6789
  doc = normalizeDocumentEntry(doc);
6790
+ const documentType = doc.data?.type || doc.type;
6791
+ if (typeof documentType === "string") {
6792
+ const mimeType = documentType.split(";", 1)[0].trim().toLowerCase();
6793
+ if (mimeType === "text/html" || mimeType === "html") throw new Error("SuperDoc: HTML document viewing is not supported. Open a DOCX or PDF document.");
6794
+ }
6790
6795
  if (currentConfig.value?.html) doc.html = currentConfig.value.html;
6791
6796
  if (!doc.data && doc.url && !doc.type) doc.type = DOCX;
6792
6797
  if (currentConfig.value?.modules.collaboration && !doc.isNewFile) return {
@@ -12238,15 +12243,15 @@ function useUiFontFamily() {
12238
12243
  }
12239
12244
  //#endregion
12240
12245
  //#region src/components/CommentsLayer/CommentsDropdown.vue
12241
- var _hoisted_1$32 = { class: "comments-dropdown" };
12242
- var _hoisted_2$25 = ["onClick"];
12243
- var _hoisted_3$21 = {
12246
+ var _hoisted_1$31 = { class: "comments-dropdown" };
12247
+ var _hoisted_2$24 = ["onClick"];
12248
+ var _hoisted_3$20 = {
12244
12249
  key: 0,
12245
12250
  class: "comments-dropdown__option-icon"
12246
12251
  };
12247
12252
  var _hoisted_4$14 = ["innerHTML"];
12248
12253
  var _hoisted_5$11 = { class: "comments-dropdown__option-label" };
12249
- var _sfc_main$39 = {
12254
+ var _sfc_main$38 = {
12250
12255
  __name: "CommentsDropdown",
12251
12256
  props: {
12252
12257
  options: {
@@ -12369,7 +12374,7 @@ var _sfc_main$39 = {
12369
12374
  window.removeEventListener("scroll", updateMenuPosition, true);
12370
12375
  });
12371
12376
  return (_ctx, _cache) => {
12372
- return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$32, [require__plugin_vue_export_helper.createElementVNode("div", {
12377
+ return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$31, [require__plugin_vue_export_helper.createElementVNode("div", {
12373
12378
  ref_key: "triggerRef",
12374
12379
  ref: triggerRef,
12375
12380
  class: "comments-dropdown__trigger",
@@ -12385,25 +12390,25 @@ var _sfc_main$39 = {
12385
12390
  key: option.key,
12386
12391
  class: require__plugin_vue_export_helper.normalizeClass(["comments-dropdown__option", { "sd-disabled": option.disabled }]),
12387
12392
  onClick: ($event) => onOptionClick(option)
12388
- }, [hasIcon(option) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", _hoisted_3$21, [option.iconString ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", {
12393
+ }, [hasIcon(option) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", _hoisted_3$20, [option.iconString ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", {
12389
12394
  key: 0,
12390
12395
  innerHTML: option.iconString
12391
12396
  }, null, 8, _hoisted_4$14)) : (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(require__plugin_vue_export_helper.unref(OptionIcon), {
12392
12397
  key: 1,
12393
12398
  option
12394
- }, null, 8, ["option"]))])) : require__plugin_vue_export_helper.createCommentVNode("", true), require__plugin_vue_export_helper.createElementVNode("span", _hoisted_5$11, require__plugin_vue_export_helper.toDisplayString(option.label), 1)], 10, _hoisted_2$25);
12399
+ }, null, 8, ["option"]))])) : require__plugin_vue_export_helper.createCommentVNode("", true), require__plugin_vue_export_helper.createElementVNode("span", _hoisted_5$11, require__plugin_vue_export_helper.toDisplayString(option.label), 1)], 10, _hoisted_2$24);
12395
12400
  }), 128))], 4)) : require__plugin_vue_export_helper.createCommentVNode("", true)]))]);
12396
12401
  };
12397
12402
  }
12398
12403
  };
12399
- var CommentsDropdown_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$39, [["__scopeId", "data-v-7eced80a"]]);
12404
+ var CommentsDropdown_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$38, [["__scopeId", "data-v-7eced80a"]]);
12400
12405
  //#endregion
12401
12406
  //#region src/components/CommentsLayer/InternalDropdown.vue
12402
- var _hoisted_1$31 = { class: "sd-comment-option" };
12403
- var _hoisted_2$24 = ["innerHTML"];
12404
- var _hoisted_3$20 = { class: "sd-option-state" };
12407
+ var _hoisted_1$30 = { class: "sd-comment-option" };
12408
+ var _hoisted_2$23 = ["innerHTML"];
12409
+ var _hoisted_3$19 = { class: "sd-option-state" };
12405
12410
  var _hoisted_4$13 = ["innerHTML"];
12406
- var _sfc_main$38 = {
12411
+ var _sfc_main$37 = {
12407
12412
  __name: "InternalDropdown",
12408
12413
  props: {
12409
12414
  state: {
@@ -12470,12 +12475,12 @@ var _sfc_main$38 = {
12470
12475
  disabled: __props.isDisabled,
12471
12476
  "content-style": { fontFamily: require__plugin_vue_export_helper.unref(uiFontFamily) }
12472
12477
  }, {
12473
- default: require__plugin_vue_export_helper.withCtx(() => [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_1$31, [
12478
+ default: require__plugin_vue_export_helper.withCtx(() => [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_1$30, [
12474
12479
  require__plugin_vue_export_helper.createElementVNode("div", {
12475
12480
  class: "sd-active-icon",
12476
12481
  innerHTML: activeIcon.value
12477
- }, null, 8, _hoisted_2$24),
12478
- require__plugin_vue_export_helper.createElementVNode("div", _hoisted_3$20, require__plugin_vue_export_helper.toDisplayString(getState.value), 1),
12482
+ }, null, 8, _hoisted_2$23),
12483
+ require__plugin_vue_export_helper.createElementVNode("div", _hoisted_3$19, require__plugin_vue_export_helper.toDisplayString(getState.value), 1),
12479
12484
  require__plugin_vue_export_helper.createElementVNode("div", {
12480
12485
  class: "sd-dropdown-caret",
12481
12486
  innerHTML: require__plugin_vue_export_helper.unref(superdocIcons).caretDown
@@ -12486,7 +12491,7 @@ var _sfc_main$38 = {
12486
12491
  };
12487
12492
  }
12488
12493
  };
12489
- var InternalDropdown_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$38, [["__scopeId", "data-v-138d641e"]]);
12494
+ var InternalDropdown_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$37, [["__scopeId", "data-v-138d641e"]]);
12490
12495
  //#endregion
12491
12496
  //#region src/components/CommentsLayer/helpers.js
12492
12497
  /**
@@ -12636,13 +12641,13 @@ var isAllowed = (permission, role, isInternal, context = {}) => {
12636
12641
  };
12637
12642
  //#endregion
12638
12643
  //#region src/components/general/Avatar.vue
12639
- var _hoisted_1$30 = { class: "user-container" };
12640
- var _hoisted_2$23 = ["src"];
12641
- var _hoisted_3$19 = {
12644
+ var _hoisted_1$29 = { class: "user-container" };
12645
+ var _hoisted_2$22 = ["src"];
12646
+ var _hoisted_3$18 = {
12642
12647
  key: 1,
12643
12648
  class: "user-bg"
12644
12649
  };
12645
- var _sfc_main$37 = {
12650
+ var _sfc_main$36 = {
12646
12651
  __name: "Avatar",
12647
12652
  props: { user: {
12648
12653
  type: Object,
@@ -12659,20 +12664,20 @@ var _sfc_main$37 = {
12659
12664
  return email?.substring(0, 1)?.toUpperCase() || null;
12660
12665
  };
12661
12666
  return (_ctx, _cache) => {
12662
- return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$30, [__props.user.image ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("img", {
12667
+ return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$29, [__props.user.image ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("img", {
12663
12668
  key: 0,
12664
12669
  class: "user-bg",
12665
12670
  src: __props.user.image.startsWith("http") ? __props.user.image : `data:image/png;base64,${__props.user.image}`
12666
- }, null, 8, _hoisted_2$23)) : (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", _hoisted_3$19, require__plugin_vue_export_helper.toDisplayString(getInitials(__props.user.name, __props.user.email)), 1))]);
12671
+ }, null, 8, _hoisted_2$22)) : (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", _hoisted_3$18, require__plugin_vue_export_helper.toDisplayString(getInitials(__props.user.name, __props.user.email)), 1))]);
12667
12672
  };
12668
12673
  }
12669
12674
  };
12670
- var Avatar_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$37, [["__scopeId", "data-v-c95b2073"]]);
12675
+ var Avatar_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$36, [["__scopeId", "data-v-c95b2073"]]);
12671
12676
  //#endregion
12672
12677
  //#region src/components/CommentsLayer/CommentHeader.vue
12673
- var _hoisted_1$29 = { class: "card-section comment-header" };
12674
- var _hoisted_2$22 = { class: "comment-header-left" };
12675
- var _hoisted_3$18 = { class: "user-info" };
12678
+ var _hoisted_1$28 = { class: "card-section comment-header" };
12679
+ var _hoisted_2$21 = { class: "comment-header-left" };
12680
+ var _hoisted_3$17 = { class: "user-info" };
12676
12681
  var _hoisted_4$12 = { class: "user-name" };
12677
12682
  var _hoisted_5$10 = {
12678
12683
  key: 0,
@@ -12699,7 +12704,7 @@ var _hoisted_9$4 = [
12699
12704
  ];
12700
12705
  var _hoisted_10$4 = { class: "overflow-menu__icon" };
12701
12706
  var _hoisted_11$4 = ["innerHTML"];
12702
- var _sfc_main$36 = {
12707
+ var _sfc_main$35 = {
12703
12708
  __name: "CommentHeader",
12704
12709
  props: {
12705
12710
  timestamp: {
@@ -12930,10 +12935,10 @@ var _sfc_main$36 = {
12930
12935
  return user;
12931
12936
  });
12932
12937
  return (_ctx, _cache) => {
12933
- return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$29, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_2$22, [require__plugin_vue_export_helper.createVNode(Avatar_default, {
12938
+ return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$28, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_2$21, [require__plugin_vue_export_helper.createVNode(Avatar_default, {
12934
12939
  user: getCurrentUser.value,
12935
12940
  class: "avatar"
12936
- }, null, 8, ["user"]), require__plugin_vue_export_helper.createElementVNode("div", _hoisted_3$18, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_4$12, [require__plugin_vue_export_helper.createTextVNode(require__plugin_vue_export_helper.toDisplayString(getCurrentUser.value.name), 1), isImported.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", _hoisted_5$10, "IMPORTED")) : require__plugin_vue_export_helper.createCommentVNode("", true)]), props.comment.createdTime ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_6$8, require__plugin_vue_export_helper.toDisplayString(require__plugin_vue_export_helper.unref(formatDate)(props.comment.createdTime)), 1)) : require__plugin_vue_export_helper.createCommentVNode("", true)])]), require__plugin_vue_export_helper.createElementVNode("div", { class: require__plugin_vue_export_helper.normalizeClass(["overflow-menu", { "is-visible": props.isActive }]) }, [
12941
+ }, null, 8, ["user"]), require__plugin_vue_export_helper.createElementVNode("div", _hoisted_3$17, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_4$12, [require__plugin_vue_export_helper.createTextVNode(require__plugin_vue_export_helper.toDisplayString(getCurrentUser.value.name), 1), isImported.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("span", _hoisted_5$10, "IMPORTED")) : require__plugin_vue_export_helper.createCommentVNode("", true)]), props.comment.createdTime ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_6$8, require__plugin_vue_export_helper.toDisplayString(require__plugin_vue_export_helper.unref(formatDate)(props.comment.createdTime)), 1)) : require__plugin_vue_export_helper.createCommentVNode("", true)])]), require__plugin_vue_export_helper.createElementVNode("div", { class: require__plugin_vue_export_helper.normalizeClass(["overflow-menu", { "is-visible": props.isActive }]) }, [
12937
12942
  allowResolve.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
12938
12943
  key: 0,
12939
12944
  class: require__plugin_vue_export_helper.normalizeClass(["overflow-menu__icon", { "sd-is-disabled": Boolean(__props.resolveDisabledReason) }]),
@@ -12979,12 +12984,12 @@ var _sfc_main$36 = {
12979
12984
  };
12980
12985
  }
12981
12986
  };
12982
- var CommentHeader_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$36, [["__scopeId", "data-v-f2f11c96"]]);
12987
+ var CommentHeader_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$35, [["__scopeId", "data-v-f2f11c96"]]);
12983
12988
  //#endregion
12984
12989
  //#region src/components/CommentsLayer/CommentInput.vue
12985
- var _hoisted_1$28 = { class: "input-section" };
12986
- var _hoisted_2$21 = { class: "comment-composer" };
12987
- var _hoisted_3$17 = [
12990
+ var _hoisted_1$27 = { class: "input-section" };
12991
+ var _hoisted_2$20 = { class: "comment-composer" };
12992
+ var _hoisted_3$16 = [
12988
12993
  "aria-expanded",
12989
12994
  "aria-controls",
12990
12995
  "aria-activedescendant"
@@ -13001,7 +13006,7 @@ var _hoisted_6$7 = {
13001
13006
  class: "comment-mention-option__email"
13002
13007
  };
13003
13008
  var commentInputSequence = 0;
13004
- var _sfc_main$35 = {
13009
+ var _sfc_main$34 = {
13005
13010
  __name: "CommentInput",
13006
13011
  props: {
13007
13012
  users: {
@@ -13156,12 +13161,12 @@ var _sfc_main$35 = {
13156
13161
  require__plugin_vue_export_helper.watch(currentCommentText, scheduleInputHeightSync);
13157
13162
  __expose({ focus });
13158
13163
  return (_ctx, _cache) => {
13159
- return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$28, [__props.includeHeader ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(CommentHeader_default, {
13164
+ return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$27, [__props.includeHeader ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(CommentHeader_default, {
13160
13165
  key: 0,
13161
13166
  config: __props.config,
13162
13167
  comment: __props.comment,
13163
13168
  "is-pending-input": true
13164
- }, null, 8, ["config", "comment"])) : require__plugin_vue_export_helper.createCommentVNode("", true), require__plugin_vue_export_helper.createElementVNode("div", { class: require__plugin_vue_export_helper.normalizeClass(["comment-entry", { "sd-input-active": __props.isFocused }]) }, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_2$21, [require__plugin_vue_export_helper.withDirectives(require__plugin_vue_export_helper.createElementVNode("textarea", {
13169
+ }, null, 8, ["config", "comment"])) : require__plugin_vue_export_helper.createCommentVNode("", true), require__plugin_vue_export_helper.createElementVNode("div", { class: require__plugin_vue_export_helper.normalizeClass(["comment-entry", { "sd-input-active": __props.isFocused }]) }, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_2$20, [require__plugin_vue_export_helper.withDirectives(require__plugin_vue_export_helper.createElementVNode("textarea", {
13165
13170
  ref_key: "inputRef",
13166
13171
  ref: inputRef,
13167
13172
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => commentDraft.value = $event),
@@ -13179,7 +13184,7 @@ var _sfc_main$35 = {
13179
13184
  onKeydown,
13180
13185
  onFocus: _cache[1] || (_cache[1] = ($event) => handleFocusChange(true)),
13181
13186
  onBlur: _cache[2] || (_cache[2] = ($event) => handleFocusChange(false))
13182
- }, null, 40, _hoisted_3$17), [[require__plugin_vue_export_helper.vModelText, commentDraft.value]]), mentionListOpen.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
13187
+ }, null, 40, _hoisted_3$16), [[require__plugin_vue_export_helper.vModelText, commentDraft.value]]), mentionListOpen.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
13183
13188
  key: 0,
13184
13189
  id: mentionListId,
13185
13190
  class: "comment-mention-list",
@@ -13200,7 +13205,7 @@ var _sfc_main$35 = {
13200
13205
  };
13201
13206
  }
13202
13207
  };
13203
- var CommentInput_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$35, [["__scopeId", "data-v-0720a671"]]);
13208
+ var CommentInput_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-0720a671"]]);
13204
13209
  //#endregion
13205
13210
  //#region src/internal/toolbar/built-in/url-safety.js
13206
13211
  /**
@@ -13311,18 +13316,18 @@ function renderCommentHtml(value) {
13311
13316
  }
13312
13317
  //#endregion
13313
13318
  //#region src/components/CommentsLayer/CommentDialog.vue
13314
- var _hoisted_1$27 = [
13319
+ var _hoisted_1$26 = [
13315
13320
  "aria-label",
13316
13321
  "data-comment-instance-id",
13317
13322
  "data-comment-thread-id",
13318
13323
  "data-comment-position-key",
13319
13324
  "data-comment-page-index"
13320
13325
  ];
13321
- var _hoisted_2$20 = {
13326
+ var _hoisted_2$19 = {
13322
13327
  key: 0,
13323
13328
  class: "existing-internal-input"
13324
13329
  };
13325
- var _hoisted_3$16 = { class: "new-comment-input-wrapper" };
13330
+ var _hoisted_3$15 = { class: "new-comment-input-wrapper" };
13326
13331
  var _hoisted_4$10 = { class: "reply-actions" };
13327
13332
  var _hoisted_5$8 = ["disabled"];
13328
13333
  var _hoisted_6$6 = {
@@ -13416,7 +13421,7 @@ var _hoisted_52 = { class: "reply-actions" };
13416
13421
  var _hoisted_53 = ["disabled", "data-disabled-reason"];
13417
13422
  var CLICK_OUTSIDE_HIT_TOLERANCE_PX = 3;
13418
13423
  var TRACKED_CHANGE_PREVIEW_MAX_PX = 90;
13419
- var _sfc_main$34 = {
13424
+ var _sfc_main$33 = {
13420
13425
  __name: "CommentDialog",
13421
13426
  props: {
13422
13427
  comment: {
@@ -14368,7 +14373,7 @@ var _sfc_main$34 = {
14368
14373
  "data-comment-position-key": props.comment.trackedChangeAnchorKey ?? "",
14369
14374
  "data-comment-page-index": Number.isFinite(props.floatingPageIndex) ? props.floatingPageIndex : ""
14370
14375
  }, [isPendingNewComment.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, { key: 0 }, [
14371
- shouldShowInternalExternal.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_2$20, [require__plugin_vue_export_helper.createVNode(InternalDropdown_default, {
14376
+ shouldShowInternalExternal.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_2$19, [require__plugin_vue_export_helper.createVNode(InternalDropdown_default, {
14372
14377
  onClick: _cache[0] || (_cache[0] = require__plugin_vue_export_helper.withModifiers(() => {}, ["stop", "prevent"])),
14373
14378
  class: "sd-internal-dropdown",
14374
14379
  "is-disabled": false,
@@ -14380,7 +14385,7 @@ var _sfc_main$34 = {
14380
14385
  comment: props.comment,
14381
14386
  "is-pending-input": true
14382
14387
  }, null, 8, ["config", "comment"]),
14383
- require__plugin_vue_export_helper.createElementVNode("div", _hoisted_3$16, [require__plugin_vue_export_helper.createVNode(CommentInput_default, {
14388
+ require__plugin_vue_export_helper.createElementVNode("div", _hoisted_3$15, [require__plugin_vue_export_helper.createVNode(CommentInput_default, {
14384
14389
  ref_key: "commentInput",
14385
14390
  ref: commentInput,
14386
14391
  users: usersFiltered.value,
@@ -14565,14 +14570,14 @@ var _sfc_main$34 = {
14565
14570
  disabled: !hasTextContent.value || isV2WriteDisabled.value || isSubmittingReply.value,
14566
14571
  "data-disabled-reason": v2ReplyDisabledReason.value
14567
14572
  }, " Reply ", 10, _hoisted_53)])]))], 64)) : require__plugin_vue_export_helper.createCommentVNode("", true)
14568
- ], 64))], 14, _hoisted_1$27)), [[_directive_click_outside, handleClickOutside]]);
14573
+ ], 64))], 14, _hoisted_1$26)), [[_directive_click_outside, handleClickOutside]]);
14569
14574
  };
14570
14575
  }
14571
14576
  };
14572
- var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-5ace8cef"]]);
14577
+ var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$33, [["__scopeId", "data-v-5ace8cef"]]);
14573
14578
  //#endregion
14574
14579
  //#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
14575
- var _hoisted_1$26 = [
14580
+ var _hoisted_1$25 = [
14576
14581
  "tabindex",
14577
14582
  "aria-posinset",
14578
14583
  "aria-setsize",
@@ -14583,7 +14588,7 @@ var _hoisted_1$26 = [
14583
14588
  "data-comment-page-index",
14584
14589
  "data-review-directory-index"
14585
14590
  ];
14586
- var _sfc_main$33 = {
14591
+ var _sfc_main$32 = {
14587
14592
  __name: "ReviewDirectoryListItem",
14588
14593
  props: {
14589
14594
  item: {
@@ -14710,18 +14715,18 @@ var _sfc_main$33 = {
14710
14715
  "floating-page-index",
14711
14716
  "floating-position-entry",
14712
14717
  "is-floating-instance-active"
14713
- ])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 44, _hoisted_1$26);
14718
+ ])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 44, _hoisted_1$25);
14714
14719
  };
14715
14720
  }
14716
14721
  };
14717
- var ReviewDirectoryListItem_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$33, [["__scopeId", "data-v-29650a06"]]);
14722
+ var ReviewDirectoryListItem_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$32, [["__scopeId", "data-v-29650a06"]]);
14718
14723
  //#endregion
14719
14724
  //#region src/components/CommentsLayer/commentsList/commentsList.vue
14720
- var _hoisted_1$25 = ["aria-busy"];
14721
- var _hoisted_2$19 = { key: 0 };
14722
- var _hoisted_3$15 = { key: 1 };
14725
+ var _hoisted_1$24 = ["aria-busy"];
14726
+ var _hoisted_2$18 = { key: 0 };
14727
+ var _hoisted_3$14 = { key: 1 };
14723
14728
  var REPEATED_HEADER_FOOTER_STORY_TYPE = "headerFooterPart";
14724
- var _sfc_main$32 = {
14729
+ var _sfc_main$31 = {
14725
14730
  __name: "commentsList",
14726
14731
  props: {
14727
14732
  showMainComments: {
@@ -14848,7 +14853,7 @@ var _sfc_main$32 = {
14848
14853
  class: "comments-list",
14849
14854
  role: "list",
14850
14855
  "aria-busy": require__plugin_vue_export_helper.unref(isReviewDirectoryActive) && require__plugin_vue_export_helper.unref(isReviewDirectoryLoading) ? "true" : "false"
14851
- }, [__props.showMainComments ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_2$19, [(require__plugin_vue_export_helper.openBlock(true), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, null, require__plugin_vue_export_helper.renderList(parentCommentDisplayItems.value, (item, index) => {
14856
+ }, [__props.showMainComments ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_2$18, [(require__plugin_vue_export_helper.openBlock(true), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, null, require__plugin_vue_export_helper.renderList(parentCommentDisplayItems.value, (item, index) => {
14852
14857
  return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(ReviewDirectoryListItem_default, {
14853
14858
  key: item.id,
14854
14859
  item,
@@ -14863,7 +14868,7 @@ var _sfc_main$32 = {
14863
14868
  "total",
14864
14869
  "tab-index"
14865
14870
  ]);
14866
- }), 128))])) : require__plugin_vue_export_helper.createCommentVNode("", true), shouldShowResolvedComments.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_3$15, [_cache[2] || (_cache[2] = require__plugin_vue_export_helper.createElementVNode("div", { class: "comment-title" }, "Resolved", -1)), (require__plugin_vue_export_helper.openBlock(true), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, null, require__plugin_vue_export_helper.renderList(resolvedCommentDisplayItems.value, (item, index) => {
14871
+ }), 128))])) : require__plugin_vue_export_helper.createCommentVNode("", true), shouldShowResolvedComments.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_3$14, [_cache[2] || (_cache[2] = require__plugin_vue_export_helper.createElementVNode("div", { class: "comment-title" }, "Resolved", -1)), (require__plugin_vue_export_helper.openBlock(true), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, null, require__plugin_vue_export_helper.renderList(resolvedCommentDisplayItems.value, (item, index) => {
14867
14872
  return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(ReviewDirectoryListItem_default, {
14868
14873
  key: item.id,
14869
14874
  item,
@@ -14878,11 +14883,11 @@ var _sfc_main$32 = {
14878
14883
  "total",
14879
14884
  "tab-index"
14880
14885
  ]);
14881
- }), 128))])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 8, _hoisted_1$25);
14886
+ }), 128))])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 8, _hoisted_1$24);
14882
14887
  };
14883
14888
  }
14884
14889
  };
14885
- var commentsList_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$32, [["__scopeId", "data-v-89244745"]]);
14890
+ var commentsList_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$31, [["__scopeId", "data-v-89244745"]]);
14886
14891
  //#endregion
14887
14892
  //#region src/components/CommentsLayer/commentsList/super-comments-list.js
14888
14893
  /**
@@ -15404,7 +15409,7 @@ var resolveRemovedReviewCardContinuityTarget = ({ previousIds, currentIds, remov
15404
15409
  };
15405
15410
  //#endregion
15406
15411
  //#region src/components/CommentsLayer/FloatingComments.vue
15407
- var _hoisted_1$24 = [
15412
+ var _hoisted_1$23 = [
15408
15413
  "data-comment-id",
15409
15414
  "data-comment-instance-id",
15410
15415
  "data-comment-thread-id",
@@ -15412,7 +15417,7 @@ var _hoisted_1$24 = [
15412
15417
  "data-comment-page-index"
15413
15418
  ];
15414
15419
  var _heightsCache = {};
15415
- var _sfc_main$31 = {
15420
+ var _sfc_main$30 = {
15416
15421
  __name: "FloatingComments",
15417
15422
  props: {
15418
15423
  currentDocument: {
@@ -16341,19 +16346,19 @@ var _sfc_main$31 = {
16341
16346
  "floating-page-index",
16342
16347
  "floating-position-entry",
16343
16348
  "is-floating-instance-active"
16344
- ])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 14, _hoisted_1$24);
16349
+ ])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 14, _hoisted_1$23);
16345
16350
  }), 128))], 4)], 36);
16346
16351
  };
16347
16352
  }
16348
16353
  };
16349
- var FloatingComments_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$31, [["__scopeId", "data-v-028441bf"]]);
16354
+ var FloatingComments_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$30, [["__scopeId", "data-v-028441bf"]]);
16350
16355
  //#endregion
16351
16356
  //#region src/components/CommentsLayer/PdfCommentsLayer.vue
16352
- var _hoisted_1$23 = {
16357
+ var _hoisted_1$22 = {
16353
16358
  class: "superdoc__pdf-comments-layer pdf-comments-layer",
16354
16359
  "aria-hidden": "false"
16355
16360
  };
16356
- var _hoisted_2$18 = [
16361
+ var _hoisted_2$17 = [
16357
16362
  "data-id",
16358
16363
  "data-comment-id",
16359
16364
  "data-page-number",
@@ -16455,7 +16460,7 @@ var PdfCommentsLayer_default = /*#__PURE__*/ require__plugin_vue_export_helper._
16455
16460
  emit("anchor-activate", anchor.commentId);
16456
16461
  };
16457
16462
  return (_ctx, _cache) => {
16458
- return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$23, [(require__plugin_vue_export_helper.openBlock(true), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, null, require__plugin_vue_export_helper.renderList(pdfCommentAnchors.value, (anchor) => {
16463
+ return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$22, [(require__plugin_vue_export_helper.openBlock(true), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, null, require__plugin_vue_export_helper.renderList(pdfCommentAnchors.value, (anchor) => {
16459
16464
  return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
16460
16465
  key: anchor.commentId,
16461
16466
  class: "sd-comment-anchor sd-highlight",
@@ -16467,7 +16472,7 @@ var PdfCommentsLayer_default = /*#__PURE__*/ require__plugin_vue_export_helper._
16467
16472
  style: require__plugin_vue_export_helper.normalizeStyle(getAnchorStyle(anchor)),
16468
16473
  onClick: require__plugin_vue_export_helper.withModifiers(($event) => activateAnchor(anchor), ["stop", "prevent"]),
16469
16474
  onKeydown: [require__plugin_vue_export_helper.withKeys(require__plugin_vue_export_helper.withModifiers(($event) => activateAnchor(anchor), ["stop", "prevent"]), ["enter"]), require__plugin_vue_export_helper.withKeys(require__plugin_vue_export_helper.withModifiers(($event) => activateAnchor(anchor), ["stop", "prevent"]), ["space"])]
16470
- }, null, 44, _hoisted_2$18);
16475
+ }, null, 44, _hoisted_2$17);
16471
16476
  }), 128))]);
16472
16477
  };
16473
16478
  }
@@ -16624,8 +16629,8 @@ var useWhiteboard = ({ proxy, layers, documents, modules }) => {
16624
16629
  };
16625
16630
  //#endregion
16626
16631
  //#region src/components/Whiteboard/WhiteboardPage.vue
16627
- var _hoisted_1$22 = ["data-page-index"];
16628
- var _sfc_main$29 = {
16632
+ var _hoisted_1$21 = ["data-page-index"];
16633
+ var _sfc_main$28 = {
16629
16634
  __name: "WhiteboardPage",
16630
16635
  props: {
16631
16636
  whiteboard: {
@@ -16756,14 +16761,14 @@ var _sfc_main$29 = {
16756
16761
  height: (__props.pageSize?.height ?? __props.page.size?.height) + "px",
16757
16762
  transform: `translate(${__props.pageOffset?.left ?? 0}px, ${__props.pageOffset?.top ?? 0}px)`
16758
16763
  })
16759
- }, null, 44, _hoisted_1$22);
16764
+ }, null, 44, _hoisted_1$21);
16760
16765
  };
16761
16766
  }
16762
16767
  };
16763
- var WhiteboardPage_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$29, [["__scopeId", "data-v-c876c9b5"]]);
16768
+ var WhiteboardPage_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$28, [["__scopeId", "data-v-c876c9b5"]]);
16764
16769
  //#endregion
16765
16770
  //#region src/components/Whiteboard/WhiteboardLayer.vue
16766
- var _sfc_main$28 = {
16771
+ var _sfc_main$27 = {
16767
16772
  __name: "WhiteboardLayer",
16768
16773
  props: {
16769
16774
  whiteboard: {
@@ -16832,68 +16837,7 @@ var _sfc_main$28 = {
16832
16837
  };
16833
16838
  }
16834
16839
  };
16835
- var WhiteboardLayer_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$28, [["__scopeId", "data-v-54546c3d"]]);
16836
- //#endregion
16837
- //#region src/components/HtmlViewer/HtmlViewer.vue
16838
- var _hoisted_1$21 = { class: "superdoc-html-viewer" };
16839
- var _hoisted_2$17 = { class: "superdoc-html-viewer__document" };
16840
- var _hoisted_3$14 = ["innerHTML"];
16841
- var _sfc_main$27 = {
16842
- __name: "HtmlViewer",
16843
- props: {
16844
- fileSource: {
16845
- type: [File, Blob],
16846
- required: true
16847
- },
16848
- documentId: {
16849
- type: String,
16850
- required: true
16851
- }
16852
- },
16853
- emits: ["ready", "selection-change"],
16854
- setup(__props, { emit: __emit }) {
16855
- const props = __props;
16856
- const documentContent = require__plugin_vue_export_helper.ref("");
16857
- const emit = __emit;
16858
- const handleSelectionChange = () => {
16859
- const selection = window.getSelection();
16860
- console.debug("selection from html viewer", selection);
16861
- emit("selection-change", selection);
16862
- };
16863
- const getDocumentHtml = (fileSource) => {
16864
- return new Promise((resolve, reject) => {
16865
- const reader = new FileReader();
16866
- reader.onload = (e) => {
16867
- const htmlString = e.target.result;
16868
- resolve(htmlString);
16869
- };
16870
- reader.onerror = (e) => reject(e);
16871
- reader.readAsText(fileSource);
16872
- });
16873
- };
16874
- const initViewer = async () => {
16875
- try {
16876
- const documentHtml = await getDocumentHtml(props.fileSource);
16877
- documentContent.value = documentHtml;
16878
- emit("ready", props.documentId);
16879
- } catch (error) {
16880
- emit("error", error);
16881
- console.error("Error loading document", error);
16882
- }
16883
- };
16884
- require__plugin_vue_export_helper.onMounted(() => {
16885
- initViewer();
16886
- });
16887
- return (_ctx, _cache) => {
16888
- return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$21, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_2$17, [require__plugin_vue_export_helper.createElementVNode("div", {
16889
- class: "superdoc-html-viewer__content",
16890
- innerHTML: documentContent.value,
16891
- onMouseup: handleSelectionChange
16892
- }, null, 40, _hoisted_3$14)])]);
16893
- };
16894
- }
16895
- };
16896
- var HtmlViewer_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$27, [["__scopeId", "data-v-da3494ba"]]);
16840
+ var WhiteboardLayer_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$27, [["__scopeId", "data-v-54546c3d"]]);
16897
16841
  //#endregion
16898
16842
  //#region src/components/CommentsLayer/collect-removed-comment-ids.js
16899
16843
  /**
@@ -24949,14 +24893,7 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
24949
24893
  "onV2HostEvent",
24950
24894
  "onV2RenderReadiness",
24951
24895
  "onV2OpenDiagnostics"
24952
- ])) : require__plugin_vue_export_helper.createCommentVNode("", true),
24953
- doc.type === require__plugin_vue_export_helper.unref("text/html") ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(HtmlViewer_default, {
24954
- key: 3,
24955
- onReady: _cache[2] || (_cache[2] = (id) => handleDocumentReady(id, null)),
24956
- onSelectionChange: handleSelectionChange,
24957
- "file-source": doc.data,
24958
- "document-id": doc.id
24959
- }, null, 8, ["file-source", "document-id"])) : require__plugin_vue_export_helper.createCommentVNode("", true)
24896
+ ])) : require__plugin_vue_export_helper.createCommentVNode("", true)
24960
24897
  ]);
24961
24898
  }), 128)),
24962
24899
  shouldRenderPdfWhiteboard.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(WhiteboardLayer_default, {
@@ -25006,7 +24943,7 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
25006
24943
  ], 46, _hoisted_1$17);
25007
24944
  };
25008
24945
  }
25009
- }, [["__scopeId", "data-v-c843616f"]]);
24946
+ }, [["__scopeId", "data-v-ae3beeba"]]);
25010
24947
  //#endregion
25011
24948
  //#region src/core/create-app.js
25012
24949
  var PINIA_DEVTOOLS_SETUP_EVENT = "devtools-plugin:setup";
@@ -46502,11 +46439,7 @@ function getActiveFontRuntime(editor) {
46502
46439
  */
46503
46440
  var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default {
46504
46441
  static {
46505
- this.allowedTypes = [
46506
- DOCX,
46507
- PDF,
46508
- HTML
46509
- ];
46442
+ this.allowedTypes = [DOCX, PDF];
46510
46443
  }
46511
46444
  #destroyed;
46512
46445
  #diagnostics;
@@ -46825,7 +46758,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
46825
46758
  }
46826
46759
  this.userColorMap = /* @__PURE__ */ new Map();
46827
46760
  this.colorIndex = 0;
46828
- this.version = "2.25.0-next.14";
46761
+ this.version = "2.25.0-next.16";
46829
46762
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
46830
46763
  this.superdocId = config.superdocId || require_uuid.v4();
46831
46764
  this.colors = this.config.colors ?? [];
@@ -48265,11 +48198,6 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
48265
48198
  feature: "pdf.viewer",
48266
48199
  status: "supported",
48267
48200
  reason: "editorVersion ignored for PDF documents"
48268
- },
48269
- {
48270
- feature: "html.viewer",
48271
- status: "supported",
48272
- reason: "editorVersion ignored for HTML documents"
48273
48201
  }
48274
48202
  ];
48275
48203
  }
@@ -48797,6 +48725,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
48797
48725
  * `fit-width`; use `setZoomMode('fit-width')` to re-enter fitting).
48798
48726
  * Updates the centralized activeZoom state, which propagates to all
48799
48727
  * presentation editors, PDF viewers, and whiteboard layers via the Vue watcher.
48728
+ * Accepts any finite percentage greater than zero, independently of fit-width bounds.
48800
48729
  * @param percent - The zoom level as a percentage (e.g., 100, 150, 200)
48801
48730
  * @example
48802
48731
  * superdoc.setZoom(150); // Set zoom to 150%, mode becomes 'manual'
@@ -48868,6 +48797,10 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
48868
48797
  mode: this.superdocStore?.zoomMode ?? "manual",
48869
48798
  value: this.superdocStore?.activeZoom ?? 100,
48870
48799
  fitZoom: this.superdocStore?.viewportMetrics?.fitZoom ?? null,
48800
+ fitWidth: {
48801
+ min: fit.min,
48802
+ max: fit.max
48803
+ },
48871
48804
  min: fit.min,
48872
48805
  max: fit.max
48873
48806
  };