superdoc 2.23.1-next.6 → 2.23.1-next.8
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/collaboration-upgrade-engine.cjs +1 -1
- package/dist/collaboration-upgrade-engine.es.js +1 -1
- package/dist/style.css +75 -78
- package/dist/style.layered.css +75 -78
- package/dist/superdoc/src/components/CommentsLayer/comment-urls.d.ts +2 -0
- package/dist/superdoc.cjs +166 -115
- package/dist/superdoc.es.js +166 -115
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +42 -42
- package/package.json +2 -2
package/dist/superdoc.cjs
CHANGED
|
@@ -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.23.1-next.
|
|
307
|
+
return "2.23.1-next.8";
|
|
308
308
|
} catch {
|
|
309
309
|
return "unknown";
|
|
310
310
|
}
|
|
@@ -12202,7 +12202,7 @@ function useUiFontFamily() {
|
|
|
12202
12202
|
}
|
|
12203
12203
|
//#endregion
|
|
12204
12204
|
//#region src/components/CommentsLayer/CommentsDropdown.vue
|
|
12205
|
-
var _hoisted_1$
|
|
12205
|
+
var _hoisted_1$31 = { class: "comments-dropdown" };
|
|
12206
12206
|
var _hoisted_2$25 = ["onClick"];
|
|
12207
12207
|
var _hoisted_3$21 = {
|
|
12208
12208
|
key: 0,
|
|
@@ -12333,7 +12333,7 @@ var _sfc_main$39 = {
|
|
|
12333
12333
|
window.removeEventListener("scroll", updateMenuPosition, true);
|
|
12334
12334
|
});
|
|
12335
12335
|
return (_ctx, _cache) => {
|
|
12336
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
12336
|
+
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$31, [require__plugin_vue_export_helper.createElementVNode("div", {
|
|
12337
12337
|
ref_key: "triggerRef",
|
|
12338
12338
|
ref: triggerRef,
|
|
12339
12339
|
class: "comments-dropdown__trigger",
|
|
@@ -12363,7 +12363,7 @@ var _sfc_main$39 = {
|
|
|
12363
12363
|
var CommentsDropdown_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$39, [["__scopeId", "data-v-7eced80a"]]);
|
|
12364
12364
|
//#endregion
|
|
12365
12365
|
//#region src/components/CommentsLayer/InternalDropdown.vue
|
|
12366
|
-
var _hoisted_1$
|
|
12366
|
+
var _hoisted_1$30 = { class: "sd-comment-option" };
|
|
12367
12367
|
var _hoisted_2$24 = ["innerHTML"];
|
|
12368
12368
|
var _hoisted_3$20 = { class: "sd-option-state" };
|
|
12369
12369
|
var _hoisted_4$12 = ["innerHTML"];
|
|
@@ -12434,7 +12434,7 @@ var _sfc_main$38 = {
|
|
|
12434
12434
|
disabled: __props.isDisabled,
|
|
12435
12435
|
"content-style": { fontFamily: require__plugin_vue_export_helper.unref(uiFontFamily) }
|
|
12436
12436
|
}, {
|
|
12437
|
-
default: require__plugin_vue_export_helper.withCtx(() => [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_1$
|
|
12437
|
+
default: require__plugin_vue_export_helper.withCtx(() => [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_1$30, [
|
|
12438
12438
|
require__plugin_vue_export_helper.createElementVNode("div", {
|
|
12439
12439
|
class: "sd-active-icon",
|
|
12440
12440
|
innerHTML: activeIcon.value
|
|
@@ -12600,7 +12600,7 @@ var isAllowed = (permission, role, isInternal, context = {}) => {
|
|
|
12600
12600
|
};
|
|
12601
12601
|
//#endregion
|
|
12602
12602
|
//#region src/components/general/Avatar.vue
|
|
12603
|
-
var _hoisted_1$
|
|
12603
|
+
var _hoisted_1$29 = { class: "user-container" };
|
|
12604
12604
|
var _hoisted_2$23 = ["src"];
|
|
12605
12605
|
var _hoisted_3$19 = {
|
|
12606
12606
|
key: 1,
|
|
@@ -12623,7 +12623,7 @@ var _sfc_main$37 = {
|
|
|
12623
12623
|
return email?.substring(0, 1)?.toUpperCase() || null;
|
|
12624
12624
|
};
|
|
12625
12625
|
return (_ctx, _cache) => {
|
|
12626
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
12626
|
+
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", {
|
|
12627
12627
|
key: 0,
|
|
12628
12628
|
class: "user-bg",
|
|
12629
12629
|
src: __props.user.image.startsWith("http") ? __props.user.image : `data:image/png;base64,${__props.user.image}`
|
|
@@ -12634,7 +12634,7 @@ var _sfc_main$37 = {
|
|
|
12634
12634
|
var Avatar_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$37, [["__scopeId", "data-v-c95b2073"]]);
|
|
12635
12635
|
//#endregion
|
|
12636
12636
|
//#region src/components/CommentsLayer/CommentHeader.vue
|
|
12637
|
-
var _hoisted_1$
|
|
12637
|
+
var _hoisted_1$28 = { class: "card-section comment-header" };
|
|
12638
12638
|
var _hoisted_2$22 = { class: "comment-header-left" };
|
|
12639
12639
|
var _hoisted_3$18 = { class: "user-info" };
|
|
12640
12640
|
var _hoisted_4$11 = { class: "user-name" };
|
|
@@ -12894,7 +12894,7 @@ var _sfc_main$36 = {
|
|
|
12894
12894
|
return user;
|
|
12895
12895
|
});
|
|
12896
12896
|
return (_ctx, _cache) => {
|
|
12897
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
12897
|
+
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$22, [require__plugin_vue_export_helper.createVNode(Avatar_default, {
|
|
12898
12898
|
user: getCurrentUser.value,
|
|
12899
12899
|
class: "avatar"
|
|
12900
12900
|
}, null, 8, ["user"]), require__plugin_vue_export_helper.createElementVNode("div", _hoisted_3$18, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_4$11, [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$9, "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 }]) }, [
|
|
@@ -12946,7 +12946,7 @@ var _sfc_main$36 = {
|
|
|
12946
12946
|
var CommentHeader_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$36, [["__scopeId", "data-v-f2f11c96"]]);
|
|
12947
12947
|
//#endregion
|
|
12948
12948
|
//#region src/components/CommentsLayer/CommentInput.vue
|
|
12949
|
-
var _hoisted_1$
|
|
12949
|
+
var _hoisted_1$27 = { class: "input-section" };
|
|
12950
12950
|
var _hoisted_2$21 = { class: "comment-composer" };
|
|
12951
12951
|
var _hoisted_3$17 = [
|
|
12952
12952
|
"aria-expanded",
|
|
@@ -13120,7 +13120,7 @@ var _sfc_main$35 = {
|
|
|
13120
13120
|
require__plugin_vue_export_helper.watch(currentCommentText, scheduleInputHeightSync);
|
|
13121
13121
|
__expose({ focus });
|
|
13122
13122
|
return (_ctx, _cache) => {
|
|
13123
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
13123
|
+
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, {
|
|
13124
13124
|
key: 0,
|
|
13125
13125
|
config: __props.config,
|
|
13126
13126
|
comment: __props.comment,
|
|
@@ -13166,8 +13166,116 @@ var _sfc_main$35 = {
|
|
|
13166
13166
|
};
|
|
13167
13167
|
var CommentInput_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$35, [["__scopeId", "data-v-0720a671"]]);
|
|
13168
13168
|
//#endregion
|
|
13169
|
+
//#region src/internal/toolbar/built-in/url-safety.js
|
|
13170
|
+
/**
|
|
13171
|
+
* Minimal href sanitizer for the built-in link popover.
|
|
13172
|
+
*
|
|
13173
|
+
* The v1 toolbar used the shared `@superdoc/url-validation` package, which is not
|
|
13174
|
+
* a resolvable runtime dependency of the published `superdoc` ES build. This
|
|
13175
|
+
* keeps the same fail-closed posture (only known-safe schemes pass) without
|
|
13176
|
+
* pulling in that package: dangerous schemes (`javascript:`, `data:`,
|
|
13177
|
+
* `vbscript:`) return `null`, mirroring the v1 contract that callers treat a
|
|
13178
|
+
* `null` result as an invalid URL.
|
|
13179
|
+
*/
|
|
13180
|
+
var SAFE_SCHEME = /^(https?|mailto|tel):/i;
|
|
13181
|
+
var DANGEROUS_SCHEME = /^(javascript|data|vbscript):/i;
|
|
13182
|
+
var HAS_SCHEME = /^[a-z][a-z0-9+.-]*:/i;
|
|
13183
|
+
/**
|
|
13184
|
+
* Validate and normalize an href. Returns `{ href }` for safe values, or `null`.
|
|
13185
|
+
* @param {string} value
|
|
13186
|
+
* @returns {{ href: string }|null}
|
|
13187
|
+
*/
|
|
13188
|
+
function sanitizeHref(value) {
|
|
13189
|
+
if (typeof value !== "string") return null;
|
|
13190
|
+
const trimmed = value.trim();
|
|
13191
|
+
if (!trimmed) return null;
|
|
13192
|
+
if (trimmed.startsWith("#")) return { href: trimmed };
|
|
13193
|
+
if (DANGEROUS_SCHEME.test(trimmed)) return null;
|
|
13194
|
+
if (HAS_SCHEME.test(trimmed)) return SAFE_SCHEME.test(trimmed) ? { href: trimmed } : null;
|
|
13195
|
+
return { href: trimmed };
|
|
13196
|
+
}
|
|
13197
|
+
//#endregion
|
|
13198
|
+
//#region src/components/CommentsLayer/comment-urls.js
|
|
13199
|
+
function isAbsoluteWebUrl(value) {
|
|
13200
|
+
if (!/^https?:\/\/[^\s/?#\\]+/i.test(value) || /[\s\\]/u.test(value)) return false;
|
|
13201
|
+
try {
|
|
13202
|
+
const url = new URL(value);
|
|
13203
|
+
return (url.protocol === "https:" || url.protocol === "http:") && Boolean(url.hostname);
|
|
13204
|
+
} catch {
|
|
13205
|
+
return false;
|
|
13206
|
+
}
|
|
13207
|
+
}
|
|
13208
|
+
function trimUrlPunctuation(value) {
|
|
13209
|
+
const closingDelimiter = {
|
|
13210
|
+
"(": ")",
|
|
13211
|
+
"[": "]",
|
|
13212
|
+
"{": "}"
|
|
13213
|
+
};
|
|
13214
|
+
const balance = {
|
|
13215
|
+
")": 0,
|
|
13216
|
+
"]": 0,
|
|
13217
|
+
"}": 0
|
|
13218
|
+
};
|
|
13219
|
+
for (const character of value) {
|
|
13220
|
+
const close = closingDelimiter[character];
|
|
13221
|
+
if (close) balance[close] += 1;
|
|
13222
|
+
else if (Object.hasOwn(balance, character)) balance[character] -= 1;
|
|
13223
|
+
}
|
|
13224
|
+
let end = value.length;
|
|
13225
|
+
while (end > 0) {
|
|
13226
|
+
const character = value[end - 1];
|
|
13227
|
+
if (".,!?;:".includes(character)) end -= 1;
|
|
13228
|
+
else if (balance[character] < 0) {
|
|
13229
|
+
balance[character] += 1;
|
|
13230
|
+
end -= 1;
|
|
13231
|
+
} else break;
|
|
13232
|
+
}
|
|
13233
|
+
return value.slice(0, end);
|
|
13234
|
+
}
|
|
13235
|
+
function configureLink(link, href) {
|
|
13236
|
+
link.setAttribute("href", href);
|
|
13237
|
+
link.setAttribute("target", "_blank");
|
|
13238
|
+
link.setAttribute("rel", "noopener noreferrer");
|
|
13239
|
+
}
|
|
13240
|
+
/** Render links without rewriting stored comment HTML or its rich-text structure. */
|
|
13241
|
+
function renderCommentHtml(value) {
|
|
13242
|
+
if (typeof value !== "string") return "";
|
|
13243
|
+
if (typeof document === "undefined") return value;
|
|
13244
|
+
const template = document.createElement("template");
|
|
13245
|
+
template.innerHTML = value;
|
|
13246
|
+
for (const link of template.content.querySelectorAll("a")) {
|
|
13247
|
+
const safe = sanitizeHref(link.getAttribute("href"));
|
|
13248
|
+
if (safe && (isAbsoluteWebUrl(safe.href) || /^(mailto|tel):\S+$/i.test(safe.href))) configureLink(link, safe.href);
|
|
13249
|
+
else link.replaceWith(...link.childNodes);
|
|
13250
|
+
}
|
|
13251
|
+
const walker = document.createTreeWalker(template.content, NodeFilter.SHOW_TEXT);
|
|
13252
|
+
const textNodes = [];
|
|
13253
|
+
while (walker.nextNode()) textNodes.push(walker.currentNode);
|
|
13254
|
+
for (const node of textNodes) {
|
|
13255
|
+
if (node.parentElement?.closest("a, script, style, textarea, code, pre")) continue;
|
|
13256
|
+
const text = node.textContent;
|
|
13257
|
+
const fragment = document.createDocumentFragment();
|
|
13258
|
+
let end = 0;
|
|
13259
|
+
for (const match of text.matchAll(/(^|[\s([{])(https?:\/\/[^\s<>"']+)/gi)) {
|
|
13260
|
+
const href = trimUrlPunctuation(match[2]);
|
|
13261
|
+
if (!isAbsoluteWebUrl(href)) continue;
|
|
13262
|
+
const start = match.index + match[1].length;
|
|
13263
|
+
fragment.append(document.createTextNode(text.slice(end, start)));
|
|
13264
|
+
const link = document.createElement("a");
|
|
13265
|
+
configureLink(link, href);
|
|
13266
|
+
link.textContent = href;
|
|
13267
|
+
fragment.append(link);
|
|
13268
|
+
end = start + href.length;
|
|
13269
|
+
}
|
|
13270
|
+
if (end === 0) continue;
|
|
13271
|
+
fragment.append(document.createTextNode(text.slice(end)));
|
|
13272
|
+
node.replaceWith(fragment);
|
|
13273
|
+
}
|
|
13274
|
+
return template.innerHTML;
|
|
13275
|
+
}
|
|
13276
|
+
//#endregion
|
|
13169
13277
|
//#region src/components/CommentsLayer/CommentDialog.vue
|
|
13170
|
-
var _hoisted_1$
|
|
13278
|
+
var _hoisted_1$26 = [
|
|
13171
13279
|
"aria-label",
|
|
13172
13280
|
"data-comment-instance-id",
|
|
13173
13281
|
"data-comment-thread-id",
|
|
@@ -13547,6 +13655,12 @@ var _sfc_main$34 = {
|
|
|
13547
13655
|
return a.createdTime - b.createdTime;
|
|
13548
13656
|
});
|
|
13549
13657
|
});
|
|
13658
|
+
const renderedCommentTexts = require__plugin_vue_export_helper.computed(() => new Map(comments.value.map((comment) => [comment.commentId, renderCommentHtml(comment.commentText)])));
|
|
13659
|
+
const handleDialogClick = (event) => {
|
|
13660
|
+
if (event.target instanceof Element && event.target.closest(".comment a[href]")) return;
|
|
13661
|
+
event.preventDefault();
|
|
13662
|
+
return setFocus();
|
|
13663
|
+
};
|
|
13550
13664
|
const dialogAccessibleLabel = require__plugin_vue_export_helper.computed(() => {
|
|
13551
13665
|
if (props.comment.trackedChangeLabel) return props.comment.trackedChangeLabel;
|
|
13552
13666
|
if (props.comment.trackedChange) return "Tracked change discussion";
|
|
@@ -14175,7 +14289,7 @@ var _sfc_main$34 = {
|
|
|
14175
14289
|
"is-active": isDialogActive.value || isPendingNewComment.value,
|
|
14176
14290
|
"is-resolved": props.comment.resolvedTime
|
|
14177
14291
|
}]),
|
|
14178
|
-
onClick: require__plugin_vue_export_helper.withModifiers(
|
|
14292
|
+
onClick: require__plugin_vue_export_helper.withModifiers(handleDialogClick, ["stop"]),
|
|
14179
14293
|
style: require__plugin_vue_export_helper.normalizeStyle(getSidebarCommentStyle.value),
|
|
14180
14294
|
ref_key: "commentDialogElement",
|
|
14181
14295
|
ref: commentDialogElement,
|
|
@@ -14312,7 +14426,7 @@ var _sfc_main$34 = {
|
|
|
14312
14426
|
class: require__plugin_vue_export_helper.normalizeClass(["comment", index === 0 ? bodyOverflowClass.value : void 0]),
|
|
14313
14427
|
ref_for: true,
|
|
14314
14428
|
ref: index === 0 ? setParentBodyRef : void 0,
|
|
14315
|
-
innerHTML: comment.
|
|
14429
|
+
innerHTML: renderedCommentTexts.value.get(comment.commentId)
|
|
14316
14430
|
}, null, 10, _hoisted_38)) : require__plugin_vue_export_helper.unref(isDebugging) && !isEditingThisComment.value(comment) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_39, require__plugin_vue_export_helper.toDisplayString(require__plugin_vue_export_helper.unref(editorCommentPositions)[comment.importedId !== void 0 ? comment.importedId : comment.commentId]?.bounds), 1)) : (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_40, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_41, [require__plugin_vue_export_helper.createVNode(CommentInput_default, {
|
|
14317
14431
|
ref_for: true,
|
|
14318
14432
|
ref: setEditCommentInputRef(comment.commentId),
|
|
@@ -14385,14 +14499,14 @@ var _sfc_main$34 = {
|
|
|
14385
14499
|
disabled: !hasTextContent.value || isV2WriteDisabled.value || isSubmittingReply.value,
|
|
14386
14500
|
"data-disabled-reason": v2ReplyDisabledReason.value
|
|
14387
14501
|
}, " Reply ", 10, _hoisted_53)])]))], 64)) : require__plugin_vue_export_helper.createCommentVNode("", true)
|
|
14388
|
-
], 64))], 14, _hoisted_1$
|
|
14502
|
+
], 64))], 14, _hoisted_1$26)), [[_directive_click_outside, handleClickOutside]]);
|
|
14389
14503
|
};
|
|
14390
14504
|
}
|
|
14391
14505
|
};
|
|
14392
|
-
var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-
|
|
14506
|
+
var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-c189ab35"]]);
|
|
14393
14507
|
//#endregion
|
|
14394
14508
|
//#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
|
|
14395
|
-
var _hoisted_1$
|
|
14509
|
+
var _hoisted_1$25 = [
|
|
14396
14510
|
"tabindex",
|
|
14397
14511
|
"aria-posinset",
|
|
14398
14512
|
"aria-setsize",
|
|
@@ -14530,14 +14644,14 @@ var _sfc_main$33 = {
|
|
|
14530
14644
|
"floating-page-index",
|
|
14531
14645
|
"floating-position-entry",
|
|
14532
14646
|
"is-floating-instance-active"
|
|
14533
|
-
])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 44, _hoisted_1$
|
|
14647
|
+
])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 44, _hoisted_1$25);
|
|
14534
14648
|
};
|
|
14535
14649
|
}
|
|
14536
14650
|
};
|
|
14537
14651
|
var ReviewDirectoryListItem_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$33, [["__scopeId", "data-v-29650a06"]]);
|
|
14538
14652
|
//#endregion
|
|
14539
14653
|
//#region src/components/CommentsLayer/commentsList/commentsList.vue
|
|
14540
|
-
var _hoisted_1$
|
|
14654
|
+
var _hoisted_1$24 = ["aria-busy"];
|
|
14541
14655
|
var _hoisted_2$19 = { key: 0 };
|
|
14542
14656
|
var _hoisted_3$15 = { key: 1 };
|
|
14543
14657
|
var REPEATED_HEADER_FOOTER_STORY_TYPE = "headerFooterPart";
|
|
@@ -14698,7 +14812,7 @@ var _sfc_main$32 = {
|
|
|
14698
14812
|
"total",
|
|
14699
14813
|
"tab-index"
|
|
14700
14814
|
]);
|
|
14701
|
-
}), 128))])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 8, _hoisted_1$
|
|
14815
|
+
}), 128))])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 8, _hoisted_1$24);
|
|
14702
14816
|
};
|
|
14703
14817
|
}
|
|
14704
14818
|
};
|
|
@@ -15168,7 +15282,7 @@ var resolveRemovedReviewCardContinuityTarget = ({ previousIds, currentIds, remov
|
|
|
15168
15282
|
};
|
|
15169
15283
|
//#endregion
|
|
15170
15284
|
//#region src/components/CommentsLayer/FloatingComments.vue
|
|
15171
|
-
var _hoisted_1$
|
|
15285
|
+
var _hoisted_1$23 = [
|
|
15172
15286
|
"data-comment-id",
|
|
15173
15287
|
"data-comment-instance-id",
|
|
15174
15288
|
"data-comment-thread-id",
|
|
@@ -16038,7 +16152,7 @@ var _sfc_main$31 = {
|
|
|
16038
16152
|
"floating-page-index",
|
|
16039
16153
|
"floating-position-entry",
|
|
16040
16154
|
"is-floating-instance-active"
|
|
16041
|
-
])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 14, _hoisted_1$
|
|
16155
|
+
])) : require__plugin_vue_export_helper.createCommentVNode("", true)], 14, _hoisted_1$23);
|
|
16042
16156
|
}), 128))], 4)], 36);
|
|
16043
16157
|
};
|
|
16044
16158
|
}
|
|
@@ -16046,7 +16160,7 @@ var _sfc_main$31 = {
|
|
|
16046
16160
|
var FloatingComments_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$31, [["__scopeId", "data-v-15b59a51"]]);
|
|
16047
16161
|
//#endregion
|
|
16048
16162
|
//#region src/components/CommentsLayer/PdfCommentsLayer.vue
|
|
16049
|
-
var _hoisted_1$
|
|
16163
|
+
var _hoisted_1$22 = {
|
|
16050
16164
|
class: "superdoc__pdf-comments-layer pdf-comments-layer",
|
|
16051
16165
|
"aria-hidden": "false"
|
|
16052
16166
|
};
|
|
@@ -16152,7 +16266,7 @@ var PdfCommentsLayer_default = /*#__PURE__*/ require__plugin_vue_export_helper._
|
|
|
16152
16266
|
emit("anchor-activate", anchor.commentId);
|
|
16153
16267
|
};
|
|
16154
16268
|
return (_ctx, _cache) => {
|
|
16155
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
16269
|
+
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) => {
|
|
16156
16270
|
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
|
|
16157
16271
|
key: anchor.commentId,
|
|
16158
16272
|
class: "sd-comment-anchor sd-highlight",
|
|
@@ -16321,7 +16435,7 @@ var useWhiteboard = ({ proxy, layers, documents, modules }) => {
|
|
|
16321
16435
|
};
|
|
16322
16436
|
//#endregion
|
|
16323
16437
|
//#region src/components/Whiteboard/WhiteboardPage.vue
|
|
16324
|
-
var _hoisted_1$
|
|
16438
|
+
var _hoisted_1$21 = ["data-page-index"];
|
|
16325
16439
|
var _sfc_main$29 = {
|
|
16326
16440
|
__name: "WhiteboardPage",
|
|
16327
16441
|
props: {
|
|
@@ -16453,7 +16567,7 @@ var _sfc_main$29 = {
|
|
|
16453
16567
|
height: (__props.pageSize?.height ?? __props.page.size?.height) + "px",
|
|
16454
16568
|
transform: `translate(${__props.pageOffset?.left ?? 0}px, ${__props.pageOffset?.top ?? 0}px)`
|
|
16455
16569
|
})
|
|
16456
|
-
}, null, 44, _hoisted_1$
|
|
16570
|
+
}, null, 44, _hoisted_1$21);
|
|
16457
16571
|
};
|
|
16458
16572
|
}
|
|
16459
16573
|
};
|
|
@@ -16532,7 +16646,7 @@ var _sfc_main$28 = {
|
|
|
16532
16646
|
var WhiteboardLayer_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$28, [["__scopeId", "data-v-54546c3d"]]);
|
|
16533
16647
|
//#endregion
|
|
16534
16648
|
//#region src/components/HtmlViewer/HtmlViewer.vue
|
|
16535
|
-
var _hoisted_1$
|
|
16649
|
+
var _hoisted_1$20 = { class: "superdoc-html-viewer" };
|
|
16536
16650
|
var _hoisted_2$17 = { class: "superdoc-html-viewer__document" };
|
|
16537
16651
|
var _hoisted_3$14 = ["innerHTML"];
|
|
16538
16652
|
var _sfc_main$27 = {
|
|
@@ -16582,7 +16696,7 @@ var _sfc_main$27 = {
|
|
|
16582
16696
|
initViewer();
|
|
16583
16697
|
});
|
|
16584
16698
|
return (_ctx, _cache) => {
|
|
16585
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
16699
|
+
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$20, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_2$17, [require__plugin_vue_export_helper.createElementVNode("div", {
|
|
16586
16700
|
class: "superdoc-html-viewer__content",
|
|
16587
16701
|
innerHTML: documentContent.value,
|
|
16588
16702
|
onMouseup: handleSelectionChange
|
|
@@ -18623,35 +18737,6 @@ function shouldHandleFindShortcut(event, { focusInside, owner }) {
|
|
|
18623
18737
|
return (!active || active === document.body || active === document.documentElement) && ownsAmbientFindShortcut(owner);
|
|
18624
18738
|
}
|
|
18625
18739
|
//#endregion
|
|
18626
|
-
//#region src/internal/toolbar/built-in/url-safety.js
|
|
18627
|
-
/**
|
|
18628
|
-
* Minimal href sanitizer for the built-in link popover.
|
|
18629
|
-
*
|
|
18630
|
-
* The v1 toolbar used the shared `@superdoc/url-validation` package, which is not
|
|
18631
|
-
* a resolvable runtime dependency of the published `superdoc` ES build. This
|
|
18632
|
-
* keeps the same fail-closed posture (only known-safe schemes pass) without
|
|
18633
|
-
* pulling in that package: dangerous schemes (`javascript:`, `data:`,
|
|
18634
|
-
* `vbscript:`) return `null`, mirroring the v1 contract that callers treat a
|
|
18635
|
-
* `null` result as an invalid URL.
|
|
18636
|
-
*/
|
|
18637
|
-
var SAFE_SCHEME = /^(https?|mailto|tel):/i;
|
|
18638
|
-
var DANGEROUS_SCHEME = /^(javascript|data|vbscript):/i;
|
|
18639
|
-
var HAS_SCHEME = /^[a-z][a-z0-9+.-]*:/i;
|
|
18640
|
-
/**
|
|
18641
|
-
* Validate and normalize an href. Returns `{ href }` for safe values, or `null`.
|
|
18642
|
-
* @param {string} value
|
|
18643
|
-
* @returns {{ href: string }|null}
|
|
18644
|
-
*/
|
|
18645
|
-
function sanitizeHref(value) {
|
|
18646
|
-
if (typeof value !== "string") return null;
|
|
18647
|
-
const trimmed = value.trim();
|
|
18648
|
-
if (!trimmed) return null;
|
|
18649
|
-
if (trimmed.startsWith("#")) return { href: trimmed };
|
|
18650
|
-
if (DANGEROUS_SCHEME.test(trimmed)) return null;
|
|
18651
|
-
if (HAS_SCHEME.test(trimmed)) return SAFE_SCHEME.test(trimmed) ? { href: trimmed } : null;
|
|
18652
|
-
return { href: trimmed };
|
|
18653
|
-
}
|
|
18654
|
-
//#endregion
|
|
18655
18740
|
//#region ../../shared/common/icons/bold-solid.svg?raw
|
|
18656
18741
|
var bold_solid_default = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M0 64C0 46.3 14.3 32 32 32l48 0 16 0 128 0c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128L96 480l-16 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-160L48 96 32 96C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64L112 96l0 128 112 0zM112 288l0 128 144 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-112 0z\"/></svg>";
|
|
18657
18742
|
//#endregion
|
|
@@ -18874,7 +18959,7 @@ var toolbarIcons = {
|
|
|
18874
18959
|
};
|
|
18875
18960
|
//#endregion
|
|
18876
18961
|
//#region src/internal/toolbar/built-in/LinkInput.vue
|
|
18877
|
-
var _hoisted_1$
|
|
18962
|
+
var _hoisted_1$19 = {
|
|
18878
18963
|
key: 0,
|
|
18879
18964
|
class: "link-title"
|
|
18880
18965
|
};
|
|
@@ -19133,7 +19218,7 @@ var _sfc_main$26 = {
|
|
|
19133
19218
|
if (props.goToAnchor) props.goToAnchor(anchorUrl);
|
|
19134
19219
|
};
|
|
19135
19220
|
return (_ctx, _cache) => {
|
|
19136
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", { class: require__plugin_vue_export_helper.normalizeClass(["link-input-ctn", { "high-contrast": require__plugin_vue_export_helper.unref(isHighContrastMode) }]) }, [isAnchor.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
19221
|
+
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", { class: require__plugin_vue_export_helper.normalizeClass(["link-input-ctn", { "high-contrast": require__plugin_vue_export_helper.unref(isHighContrastMode) }]) }, [isAnchor.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$19, "Page anchor")) : isViewingMode.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_2$16, "Link details")) : isEditing.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_3$13, "Edit link")) : (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_4$8, "Add link")), __props.showInput && !isAnchor.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_5$6, [
|
|
19137
19222
|
require__plugin_vue_export_helper.createElementVNode("div", _hoisted_6$5, [_cache[5] || (_cache[5] = require__plugin_vue_export_helper.createElementVNode("div", { class: "input-icon text-input-icon" }, "T", -1)), require__plugin_vue_export_helper.withDirectives(require__plugin_vue_export_helper.createElementVNode("input", {
|
|
19138
19223
|
type: "text",
|
|
19139
19224
|
name: "text",
|
|
@@ -21510,7 +21595,7 @@ var FOCUSABLE_SELECTOR = [
|
|
|
21510
21595
|
].join(", ");
|
|
21511
21596
|
//#endregion
|
|
21512
21597
|
//#region src/components/surfaces/SurfaceDialog.vue
|
|
21513
|
-
var _hoisted_1$
|
|
21598
|
+
var _hoisted_1$18 = ["aria-labelledby", "aria-label"];
|
|
21514
21599
|
var _hoisted_2$15 = ["id"];
|
|
21515
21600
|
var _hoisted_3$12 = { class: "sd-surface-dialog__content" };
|
|
21516
21601
|
var _sfc_main$24 = {
|
|
@@ -21658,14 +21743,14 @@ var _sfc_main$24 = {
|
|
|
21658
21743
|
"render",
|
|
21659
21744
|
"resolve",
|
|
21660
21745
|
"close"
|
|
21661
|
-
])) : __props.surface.component ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(require__plugin_vue_export_helper.resolveDynamicComponent(__props.surface.component), require__plugin_vue_export_helper.normalizeProps(require__plugin_vue_export_helper.mergeProps({ key: 1 }, mergedComponentProps.value)), null, 16)) : require__plugin_vue_export_helper.createCommentVNode("", true)])], 12, _hoisted_1$
|
|
21746
|
+
])) : __props.surface.component ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(require__plugin_vue_export_helper.resolveDynamicComponent(__props.surface.component), require__plugin_vue_export_helper.normalizeProps(require__plugin_vue_export_helper.mergeProps({ key: 1 }, mergedComponentProps.value)), null, 16)) : require__plugin_vue_export_helper.createCommentVNode("", true)])], 12, _hoisted_1$18)], 32);
|
|
21662
21747
|
};
|
|
21663
21748
|
}
|
|
21664
21749
|
};
|
|
21665
21750
|
var SurfaceDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$24, [["__scopeId", "data-v-582b6534"]]);
|
|
21666
21751
|
//#endregion
|
|
21667
21752
|
//#region src/components/surfaces/SurfaceFloating.vue
|
|
21668
|
-
var _hoisted_1$
|
|
21753
|
+
var _hoisted_1$17 = ["aria-labelledby", "aria-label"];
|
|
21669
21754
|
var _hoisted_2$14 = ["id"];
|
|
21670
21755
|
var _hoisted_3$11 = { class: "sd-surface-floating__content" };
|
|
21671
21756
|
var _sfc_main$23 = {
|
|
@@ -21813,7 +21898,7 @@ var _sfc_main$23 = {
|
|
|
21813
21898
|
"render",
|
|
21814
21899
|
"resolve",
|
|
21815
21900
|
"close"
|
|
21816
|
-
])) : __props.surface.component ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(require__plugin_vue_export_helper.resolveDynamicComponent(__props.surface.component), require__plugin_vue_export_helper.normalizeProps(require__plugin_vue_export_helper.mergeProps({ key: 1 }, mergedComponentProps.value)), null, 16)) : require__plugin_vue_export_helper.createCommentVNode("", true)])], 14, _hoisted_1$
|
|
21901
|
+
])) : __props.surface.component ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(require__plugin_vue_export_helper.resolveDynamicComponent(__props.surface.component), require__plugin_vue_export_helper.normalizeProps(require__plugin_vue_export_helper.mergeProps({ key: 1 }, mergedComponentProps.value)), null, 16)) : require__plugin_vue_export_helper.createCommentVNode("", true)])], 14, _hoisted_1$17);
|
|
21817
21902
|
};
|
|
21818
21903
|
}
|
|
21819
21904
|
};
|
|
@@ -22045,7 +22130,7 @@ var _sfc_main$22 = {
|
|
|
22045
22130
|
var SurfaceHost_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$22, [["__scopeId", "data-v-dad99b67"]]);
|
|
22046
22131
|
//#endregion
|
|
22047
22132
|
//#region src/SuperDoc.vue
|
|
22048
|
-
var _hoisted_1$
|
|
22133
|
+
var _hoisted_1$16 = ["innerHTML"];
|
|
22049
22134
|
var _hoisted_2$13 = { class: "superdoc__document document" };
|
|
22050
22135
|
var _hoisted_3$10 = { class: "floating-comments" };
|
|
22051
22136
|
var TRACKED_CHANGE_CARRIERS_RESTAMPED_EVENT = "superdoc:v2-tracked-change-carriers-restamped";
|
|
@@ -24493,7 +24578,7 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
|
|
|
24493
24578
|
}, [require__plugin_vue_export_helper.createElementVNode("div", {
|
|
24494
24579
|
class: "superdoc__tools-icon",
|
|
24495
24580
|
innerHTML: require__plugin_vue_export_helper.unref(superdocIcons).comment
|
|
24496
|
-
}, null, 8, _hoisted_1$
|
|
24581
|
+
}, null, 8, _hoisted_1$16)], 32)], 4)) : require__plugin_vue_export_helper.createCommentVNode("", true), require__plugin_vue_export_helper.createElementVNode("div", _hoisted_2$13, [
|
|
24497
24582
|
isCommentsEnabled.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
|
|
24498
24583
|
key: 0,
|
|
24499
24584
|
class: "superdoc__selection-layer selection-layer",
|
|
@@ -39189,7 +39274,7 @@ var throttle = (func, wait, options) => {
|
|
|
39189
39274
|
};
|
|
39190
39275
|
//#endregion
|
|
39191
39276
|
//#region src/internal/toolbar/built-in/ToolbarButtonIcon.vue
|
|
39192
|
-
var _hoisted_1$
|
|
39277
|
+
var _hoisted_1$15 = { class: "sd-toolbar-icon" };
|
|
39193
39278
|
var _hoisted_2$12 = ["innerHTML"];
|
|
39194
39279
|
var _sfc_main$20 = {
|
|
39195
39280
|
__name: "ToolbarButtonIcon",
|
|
@@ -39217,7 +39302,7 @@ var _sfc_main$20 = {
|
|
|
39217
39302
|
return ["color", "highlight"].includes(props.name);
|
|
39218
39303
|
});
|
|
39219
39304
|
return (_ctx, _cache) => {
|
|
39220
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
39305
|
+
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$15, [require__plugin_vue_export_helper.createElementVNode("div", {
|
|
39221
39306
|
class: require__plugin_vue_export_helper.normalizeClass(["sd-toolbar-icon__icon", [`sd-toolbar-icon__icon--${props.name}`]]),
|
|
39222
39307
|
innerHTML: __props.icon
|
|
39223
39308
|
}, null, 10, _hoisted_2$12), hasColorBar.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
|
|
@@ -39231,7 +39316,7 @@ var _sfc_main$20 = {
|
|
|
39231
39316
|
var ToolbarButtonIcon_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$20, [["__scopeId", "data-v-65ecd5b1"]]);
|
|
39232
39317
|
//#endregion
|
|
39233
39318
|
//#region src/internal/toolbar/built-in/ToolbarButton.vue
|
|
39234
|
-
var _hoisted_1$
|
|
39319
|
+
var _hoisted_1$14 = [
|
|
39235
39320
|
"role",
|
|
39236
39321
|
"aria-label",
|
|
39237
39322
|
"aria-disabled"
|
|
@@ -39525,14 +39610,14 @@ var _sfc_main$19 = {
|
|
|
39525
39610
|
}, null, 12, _hoisted_10$1)) : require__plugin_vue_export_helper.createCommentVNode("", true)
|
|
39526
39611
|
], 64)),
|
|
39527
39612
|
require__plugin_vue_export_helper.createElementVNode("div", _hoisted_11$1, require__plugin_vue_export_helper.toDisplayString(`${require__plugin_vue_export_helper.unref(attributes).ariaLabel} ${require__plugin_vue_export_helper.unref(active) ? "selected" : "unset"}`), 1)
|
|
39528
|
-
], 10, _hoisted_2$11)], 46, _hoisted_1$
|
|
39613
|
+
], 10, _hoisted_2$11)], 46, _hoisted_1$14);
|
|
39529
39614
|
};
|
|
39530
39615
|
}
|
|
39531
39616
|
};
|
|
39532
39617
|
var ToolbarButton_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$19, [["__scopeId", "data-v-96796456"]]);
|
|
39533
39618
|
//#endregion
|
|
39534
39619
|
//#region src/internal/toolbar/built-in/ToolbarSeparator.vue
|
|
39535
|
-
var _hoisted_1$
|
|
39620
|
+
var _hoisted_1$13 = {
|
|
39536
39621
|
class: "toolbar-separator",
|
|
39537
39622
|
role: "separator",
|
|
39538
39623
|
"aria-label": "Toolbar separator"
|
|
@@ -39551,7 +39636,7 @@ var _sfc_main$18 = {
|
|
|
39551
39636
|
return "var(--sd-ui-border, #dbdbdb)";
|
|
39552
39637
|
};
|
|
39553
39638
|
return (_ctx, _cache) => {
|
|
39554
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
39639
|
+
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$13, [require__plugin_vue_export_helper.createElementVNode("div", {
|
|
39555
39640
|
class: "separator-inner",
|
|
39556
39641
|
style: require__plugin_vue_export_helper.normalizeStyle({ backgroundColor: getSeparatorColor() })
|
|
39557
39642
|
}, null, 4)]);
|
|
@@ -39561,7 +39646,7 @@ var _sfc_main$18 = {
|
|
|
39561
39646
|
var ToolbarSeparator_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$18, [["__scopeId", "data-v-cb82253a"]]);
|
|
39562
39647
|
//#endregion
|
|
39563
39648
|
//#region src/internal/toolbar/built-in/ToolbarDropdown.vue
|
|
39564
|
-
var _hoisted_1$
|
|
39649
|
+
var _hoisted_1$12 = { class: "toolbar-dropdown" };
|
|
39565
39650
|
var _hoisted_2$10 = ["onClick"];
|
|
39566
39651
|
var _hoisted_3$8 = {
|
|
39567
39652
|
key: 0,
|
|
@@ -39916,7 +40001,7 @@ var _sfc_main$17 = {
|
|
|
39916
40001
|
window.removeEventListener("scroll", updateMenuPosition, true);
|
|
39917
40002
|
});
|
|
39918
40003
|
return (_ctx, _cache) => {
|
|
39919
|
-
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$
|
|
40004
|
+
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_1$12, [require__plugin_vue_export_helper.createElementVNode("div", {
|
|
39920
40005
|
ref_key: "triggerRef",
|
|
39921
40006
|
ref: triggerRef,
|
|
39922
40007
|
class: "toolbar-dropdown-trigger",
|
|
@@ -40183,7 +40268,7 @@ var normalizeCustomFontSize = (value) => {
|
|
|
40183
40268
|
};
|
|
40184
40269
|
//#endregion
|
|
40185
40270
|
//#region src/internal/toolbar/built-in/ToolbarComboBox.vue
|
|
40186
|
-
var _hoisted_1$
|
|
40271
|
+
var _hoisted_1$11 = ["data-item"];
|
|
40187
40272
|
var _hoisted_2$9 = [
|
|
40188
40273
|
"id",
|
|
40189
40274
|
"value",
|
|
@@ -40694,7 +40779,7 @@ var _sfc_main$15 = {
|
|
|
40694
40779
|
}), [require__plugin_vue_export_helper.createElementVNode("span", _hoisted_7$1, require__plugin_vue_export_helper.toDisplayString(option.label), 1)], 16, _hoisted_6$3);
|
|
40695
40780
|
}), 128))], 14, _hoisted_5$4)) : require__plugin_vue_export_helper.createCommentVNode("", true)])),
|
|
40696
40781
|
require__plugin_vue_export_helper.createElementVNode("span", _hoisted_8$1, require__plugin_vue_export_helper.toDisplayString(appliedLabel.value), 1)
|
|
40697
|
-
], 14, _hoisted_1$
|
|
40782
|
+
], 14, _hoisted_1$11);
|
|
40698
40783
|
};
|
|
40699
40784
|
}
|
|
40700
40785
|
};
|
|
@@ -40783,7 +40868,6 @@ var _sfc_main$13 = {
|
|
|
40783
40868
|
};
|
|
40784
40869
|
//#endregion
|
|
40785
40870
|
//#region src/internal/toolbar/built-in/SdTooltip.vue
|
|
40786
|
-
var _hoisted_1$11 = ["data-placement"];
|
|
40787
40871
|
var AUTO_HIDE_DELAY = 2500;
|
|
40788
40872
|
var _sfc_main$12 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
40789
40873
|
__name: "SdTooltip",
|
|
@@ -40819,7 +40903,6 @@ var _sfc_main$12 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
|
40819
40903
|
top: "0px",
|
|
40820
40904
|
left: "0px"
|
|
40821
40905
|
});
|
|
40822
|
-
const placement = require__plugin_vue_export_helper.ref("top");
|
|
40823
40906
|
let closeTimeout = null;
|
|
40824
40907
|
let openTimeout = null;
|
|
40825
40908
|
let autoHideTimeout = null;
|
|
@@ -40857,48 +40940,17 @@ var _sfc_main$12 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
|
40857
40940
|
close();
|
|
40858
40941
|
}, AUTO_HIDE_DELAY);
|
|
40859
40942
|
};
|
|
40860
|
-
const getElementSize = (element, dimension) => {
|
|
40861
|
-
const styles = window.getComputedStyle(element);
|
|
40862
|
-
const size = parseFloat(styles[dimension]);
|
|
40863
|
-
if (!Number.isFinite(size)) return dimension === "width" ? element.offsetWidth : element.offsetHeight;
|
|
40864
|
-
if (styles.boxSizing === "border-box") return size;
|
|
40865
|
-
return (dimension === "width" ? [
|
|
40866
|
-
"paddingLeft",
|
|
40867
|
-
"paddingRight",
|
|
40868
|
-
"borderLeftWidth",
|
|
40869
|
-
"borderRightWidth"
|
|
40870
|
-
] : [
|
|
40871
|
-
"paddingTop",
|
|
40872
|
-
"paddingBottom",
|
|
40873
|
-
"borderTopWidth",
|
|
40874
|
-
"borderBottomWidth"
|
|
40875
|
-
]).reduce((total, property) => total + (parseFloat(styles[property]) || 0), size);
|
|
40876
|
-
};
|
|
40877
40943
|
const updatePosition = () => {
|
|
40878
40944
|
if (!triggerRef.value || !contentRef.value) return;
|
|
40879
40945
|
const triggerRect = triggerRef.value.getBoundingClientRect();
|
|
40880
|
-
const contentWidth =
|
|
40881
|
-
const contentHeight =
|
|
40946
|
+
const contentWidth = contentRef.value.offsetWidth;
|
|
40947
|
+
const contentHeight = contentRef.value.offsetHeight;
|
|
40882
40948
|
const viewportWidth = window.innerWidth || document.documentElement.clientWidth || 0;
|
|
40883
|
-
const viewportHeight = document.documentElement.clientHeight || window.innerHeight || 0;
|
|
40884
40949
|
const gutter = 8;
|
|
40885
|
-
const offset = 10;
|
|
40886
40950
|
let left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2;
|
|
40887
40951
|
left = Math.max(gutter, Math.min(left, viewportWidth - contentWidth - gutter));
|
|
40888
|
-
const topAbove = triggerRect.top - contentHeight - offset;
|
|
40889
|
-
const topBelow = triggerRect.bottom + offset;
|
|
40890
|
-
const fitsAbove = topAbove >= gutter;
|
|
40891
|
-
const fitsBelow = topBelow + contentHeight <= viewportHeight - gutter;
|
|
40892
|
-
const availableAbove = triggerRect.top - offset;
|
|
40893
|
-
const availableBelow = viewportHeight - triggerRect.bottom - offset;
|
|
40894
|
-
if (fitsAbove) placement.value = "top";
|
|
40895
|
-
else if (fitsBelow) placement.value = "bottom";
|
|
40896
|
-
else placement.value = availableAbove >= availableBelow ? "top" : "bottom";
|
|
40897
|
-
const desiredTop = placement.value === "top" ? topAbove : topBelow;
|
|
40898
|
-
const minTop = Math.min(gutter, Math.max(0, viewportHeight - contentHeight));
|
|
40899
|
-
const maxTop = Math.max(minTop, viewportHeight - contentHeight - gutter);
|
|
40900
40952
|
position.value = {
|
|
40901
|
-
top: `${
|
|
40953
|
+
top: `${triggerRect.top - contentHeight - 10}px`,
|
|
40902
40954
|
left: `${left}px`
|
|
40903
40955
|
};
|
|
40904
40956
|
};
|
|
@@ -41009,19 +41061,18 @@ var _sfc_main$12 = /*@__PURE__*/ Object.assign({ inheritAttrs: false }, {
|
|
|
41009
41061
|
ref: contentRef,
|
|
41010
41062
|
class: require__plugin_vue_export_helper.normalizeClass(mergedContentClass.value),
|
|
41011
41063
|
style: require__plugin_vue_export_helper.normalizeStyle(contentStyle.value),
|
|
41012
|
-
"data-placement": placement.value,
|
|
41013
41064
|
onMouseenter: handleContentMouseEnter,
|
|
41014
41065
|
onMouseleave: handleContentMouseLeave
|
|
41015
41066
|
}, [_cache[0] || (_cache[0] = require__plugin_vue_export_helper.createElementVNode("span", {
|
|
41016
41067
|
class: "sd-tooltip-arrow",
|
|
41017
41068
|
"aria-hidden": "true"
|
|
41018
|
-
}, null, -1)), require__plugin_vue_export_helper.renderSlot(_ctx.$slots, "default", {}, void 0, true)],
|
|
41069
|
+
}, null, -1)), require__plugin_vue_export_helper.renderSlot(_ctx.$slots, "default", {}, void 0, true)], 38)) : require__plugin_vue_export_helper.createCommentVNode("", true)]),
|
|
41019
41070
|
_: 3
|
|
41020
41071
|
}, 8, ["css"])]))], 64);
|
|
41021
41072
|
};
|
|
41022
41073
|
}
|
|
41023
41074
|
});
|
|
41024
|
-
var SdTooltip_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$12, [["__scopeId", "data-v-
|
|
41075
|
+
var SdTooltip_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$12, [["__scopeId", "data-v-1449088a"]]);
|
|
41025
41076
|
//#endregion
|
|
41026
41077
|
//#region src/internal/toolbar/built-in/ButtonGroup.vue
|
|
41027
41078
|
var _hoisted_1$10 = [
|
|
@@ -46472,7 +46523,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
|
|
|
46472
46523
|
}
|
|
46473
46524
|
this.userColorMap = /* @__PURE__ */ new Map();
|
|
46474
46525
|
this.colorIndex = 0;
|
|
46475
|
-
this.version = "2.23.1-next.
|
|
46526
|
+
this.version = "2.23.1-next.8";
|
|
46476
46527
|
this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
|
|
46477
46528
|
this.superdocId = config.superdocId || require_uuid.v4();
|
|
46478
46529
|
this.colors = this.config.colors ?? [];
|