superdoc 2.20.0 → 2.20.1-next.10
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/chunks/{create-super-doc-ui-D5VrP4Dx.es.js → create-super-doc-ui-Cfwszc3b.es.js} +56 -15
- package/dist/chunks/{create-super-doc-ui-BQBQsjoe.cjs → create-super-doc-ui-j8Qm5SYa.cjs} +56 -15
- package/dist/collaboration-upgrade-engine.cjs +1 -1
- package/dist/collaboration-upgrade-engine.es.js +1 -1
- package/dist/document-api/src/content-controls/content-controls.types.d.ts +2 -0
- package/dist/document-api/src/contract/operation-definitions.d.ts +2 -2
- package/dist/document-api/src/replace/replace.d.ts +14 -5
- package/dist/document-api/src/selection-mutation.d.ts +2 -0
- package/dist/public/ui-react.cjs +1 -1
- package/dist/public/ui-react.es.js +1 -1
- package/dist/public/ui-vue.cjs +1 -1
- package/dist/public/ui-vue.es.js +1 -1
- package/dist/public/ui.cjs +1 -1
- package/dist/public/ui.es.js +1 -1
- package/dist/style.css +106 -106
- package/dist/style.layered.css +106 -106
- package/dist/superdoc/src/core/types/index.d.ts +4 -2
- package/dist/superdoc/src/internal/toolbar/built-in/default-items.d.ts +1 -1
- package/dist/superdoc/src/internal/toolbar/built-in-toolbar.d.ts +1 -0
- package/dist/superdoc/src/public/ui/types.d.ts +11 -8
- package/dist/superdoc.cjs +130 -59
- package/dist/superdoc.es.js +130 -59
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +40 -38
- package/package.json +2 -2
|
@@ -163,7 +163,7 @@ export interface FontSizeOption {
|
|
|
163
163
|
}
|
|
164
164
|
/** Observable enable/active state for a toolbar-style command. */
|
|
165
165
|
export interface CommandState {
|
|
166
|
-
/**
|
|
166
|
+
/** Availability for a control in the current selection / mode snapshot. */
|
|
167
167
|
enabled: boolean;
|
|
168
168
|
/** Compatibility inverse of `enabled` for demo code that models commands as disabled. */
|
|
169
169
|
disabled?: boolean;
|
|
@@ -278,9 +278,10 @@ export type SuperDocUIReceipt = Receipt | SuperDocUIFailureReceipt | PartialLink
|
|
|
278
278
|
* preserves the public Document API facade result (or a controller-minted
|
|
279
279
|
* failure), including read-only / unsupported failures and mutation effects.
|
|
280
280
|
* `true` is returned for legacy command handlers that do not produce a
|
|
281
|
-
* structured result, or when the host reports only
|
|
282
|
-
* operation was scheduled. Use `executeAsync(...)` to await the settled result
|
|
283
|
-
* when the browser Document API / host runs asynchronously.
|
|
281
|
+
* structured result, including accepted no-ops, or when the host reports only
|
|
282
|
+
* that an async browser operation was scheduled. Use `executeAsync(...)` to await the settled result
|
|
283
|
+
* when the browser Document API / host runs asynchronously. A settled `true`
|
|
284
|
+
* does not guarantee a document mutation, such as Undo with an empty history.
|
|
284
285
|
*/
|
|
285
286
|
export type CommandExecutionResult = boolean | SuperDocUIReceipt;
|
|
286
287
|
/**
|
|
@@ -333,16 +334,18 @@ export interface CommandHandle<Id extends CommandId = CommandId> {
|
|
|
333
334
|
observe(listener: (state: CommandState) => void): () => void;
|
|
334
335
|
/**
|
|
335
336
|
* Run the command. Returns the Document API receipt when the host facade
|
|
336
|
-
* provides one, or `false`
|
|
337
|
-
* throwing. When the browser operation settles
|
|
338
|
-
* the immediate routed result (`true` or a sync receipt); use
|
|
337
|
+
* provides one, or `false` when routing or current execution prerequisites
|
|
338
|
+
* are unavailable rather than throwing. When the browser operation settles
|
|
339
|
+
* asynchronously this returns the immediate routed result (`true` or a sync receipt); use
|
|
339
340
|
* `executeAsync(...)` to await settlement.
|
|
340
341
|
*/
|
|
341
342
|
execute(payload?: unknown): CommandExecutionResult;
|
|
342
343
|
/**
|
|
343
344
|
* Run the command and resolve once the routed operation has settled. On
|
|
344
345
|
* browser-backed hosts this includes the post-mutation paint observation
|
|
345
|
-
* boundary when available.
|
|
346
|
+
* boundary when available. Selection-dependent commands may refresh stale
|
|
347
|
+
* selection state before execution. A settled `true` can be an accepted
|
|
348
|
+
* no-op and does not guarantee a document mutation.
|
|
346
349
|
*/
|
|
347
350
|
executeAsync(payload?: unknown): Promise<CommandExecutionResult>;
|
|
348
351
|
}
|
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-
|
|
4
|
+
const require_create_super_doc_ui = require("./chunks/create-super-doc-ui-j8Qm5SYa.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-CYxINHh_.cjs");
|
|
@@ -316,7 +316,7 @@ var shuffleArray = (array) => {
|
|
|
316
316
|
var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
|
|
317
317
|
function getSuperdocVersion() {
|
|
318
318
|
try {
|
|
319
|
-
return "2.20.
|
|
319
|
+
return "2.20.1-next.10";
|
|
320
320
|
} catch {
|
|
321
321
|
return "unknown";
|
|
322
322
|
}
|
|
@@ -8923,6 +8923,11 @@ var useCommentsStore = defineStore("comments", () => {
|
|
|
8923
8923
|
}
|
|
8924
8924
|
superdoc?.activeEditor?.commands?.removeComment({ commentId: "pending" });
|
|
8925
8925
|
};
|
|
8926
|
+
const getV2CreatedComment = ({ outcome, reconciled, documentId }) => {
|
|
8927
|
+
const createdId = normalizeCommentId(outcome?.createdCommentId);
|
|
8928
|
+
if (!createdId) return reconciled?.added ?? null;
|
|
8929
|
+
return commentsList.value.find((row) => String(row.commentId) === createdId && (documentId == null || String(row.fileId) === String(documentId))) ?? null;
|
|
8930
|
+
};
|
|
8926
8931
|
/**
|
|
8927
8932
|
* Add a new comment to the document
|
|
8928
8933
|
*
|
|
@@ -8976,20 +8981,25 @@ var useCommentsStore = defineStore("comments", () => {
|
|
|
8976
8981
|
documentId: v2Adapter.documentId,
|
|
8977
8982
|
items: outcome.items
|
|
8978
8983
|
});
|
|
8984
|
+
const created = getV2CreatedComment({
|
|
8985
|
+
outcome,
|
|
8986
|
+
reconciled,
|
|
8987
|
+
documentId: v2Adapter.documentId
|
|
8988
|
+
});
|
|
8979
8989
|
const hadPendingComment = !!pendingComment.value;
|
|
8980
8990
|
if (hadPendingComment) removePendingComment(superdoc);
|
|
8981
|
-
const createdId =
|
|
8991
|
+
const createdId = created?.commentId ?? null;
|
|
8982
8992
|
if (hadPendingComment && createdId) {
|
|
8983
8993
|
setActiveComment(superdoc, createdId);
|
|
8984
8994
|
setActiveFloatingCommentInstance(createdId);
|
|
8985
8995
|
}
|
|
8986
8996
|
if (broadcastChanges) superdoc.emit("comments-update", {
|
|
8987
8997
|
type: COMMENT_EVENTS.ADD,
|
|
8988
|
-
comment:
|
|
8998
|
+
comment: created?.getValues?.() ?? null
|
|
8989
8999
|
});
|
|
8990
9000
|
return {
|
|
8991
9001
|
ok: true,
|
|
8992
|
-
comment:
|
|
9002
|
+
comment: created
|
|
8993
9003
|
};
|
|
8994
9004
|
});
|
|
8995
9005
|
}
|
|
@@ -9548,9 +9558,13 @@ var useCommentsStore = defineStore("comments", () => {
|
|
|
9548
9558
|
eventType: COMMENT_EVENTS.ADD,
|
|
9549
9559
|
rejectionFallbackReason: "v2-reply-failed",
|
|
9550
9560
|
rejectionEventExtras: parent ? { comment: getCommentEventPayload(parent) } : {},
|
|
9551
|
-
successEventBuilder: ({ reconciled }) => ({
|
|
9561
|
+
successEventBuilder: ({ outcome, reconciled }) => ({
|
|
9552
9562
|
type: COMMENT_EVENTS.ADD,
|
|
9553
|
-
comment:
|
|
9563
|
+
comment: getV2CreatedComment({
|
|
9564
|
+
outcome,
|
|
9565
|
+
reconciled,
|
|
9566
|
+
documentId: v2Adapter.documentId
|
|
9567
|
+
})?.getValues?.() ?? null
|
|
9554
9568
|
})
|
|
9555
9569
|
});
|
|
9556
9570
|
};
|
|
@@ -13167,51 +13181,53 @@ var _hoisted_26 = { key: 7 };
|
|
|
13167
13181
|
var _hoisted_27 = { class: "tracked-change-text is-deleted" };
|
|
13168
13182
|
var _hoisted_28 = { class: "tracked-change-text is-inserted" };
|
|
13169
13183
|
var _hoisted_29 = { key: 8 };
|
|
13170
|
-
var _hoisted_30 = {
|
|
13171
|
-
var _hoisted_31 = { key:
|
|
13172
|
-
var _hoisted_32 = { class: "tracked-change-text is-
|
|
13173
|
-
var _hoisted_33 =
|
|
13174
|
-
var _hoisted_34 =
|
|
13175
|
-
var _hoisted_35 =
|
|
13184
|
+
var _hoisted_30 = { key: 9 };
|
|
13185
|
+
var _hoisted_31 = { key: 10 };
|
|
13186
|
+
var _hoisted_32 = { class: "tracked-change-text is-deleted" };
|
|
13187
|
+
var _hoisted_33 = { key: 11 };
|
|
13188
|
+
var _hoisted_34 = { class: "tracked-change-text is-inserted" };
|
|
13189
|
+
var _hoisted_35 = ["data-track-change-image-preview-role"];
|
|
13190
|
+
var _hoisted_36 = ["src", "alt"];
|
|
13191
|
+
var _hoisted_37 = {
|
|
13176
13192
|
key: 1,
|
|
13177
13193
|
class: "card-section comment-body"
|
|
13178
13194
|
};
|
|
13179
|
-
var
|
|
13180
|
-
var
|
|
13195
|
+
var _hoisted_38 = ["innerHTML"];
|
|
13196
|
+
var _hoisted_39 = {
|
|
13181
13197
|
key: 1,
|
|
13182
13198
|
class: "comment"
|
|
13183
13199
|
};
|
|
13184
|
-
var
|
|
13200
|
+
var _hoisted_40 = {
|
|
13185
13201
|
key: 2,
|
|
13186
13202
|
class: "reply-expanded"
|
|
13187
13203
|
};
|
|
13188
|
-
var
|
|
13189
|
-
var
|
|
13190
|
-
var
|
|
13191
|
-
var
|
|
13204
|
+
var _hoisted_41 = { class: "reply-input-wrapper" };
|
|
13205
|
+
var _hoisted_42 = { class: "reply-actions" };
|
|
13206
|
+
var _hoisted_43 = ["onClick"];
|
|
13207
|
+
var _hoisted_44 = [
|
|
13192
13208
|
"onClick",
|
|
13193
13209
|
"disabled",
|
|
13194
13210
|
"data-disabled-reason"
|
|
13195
13211
|
];
|
|
13196
|
-
var
|
|
13197
|
-
var
|
|
13212
|
+
var _hoisted_45 = { class: "collapsed-avatars" };
|
|
13213
|
+
var _hoisted_46 = {
|
|
13198
13214
|
key: 3,
|
|
13199
13215
|
class: "comment-separator"
|
|
13200
13216
|
};
|
|
13201
|
-
var
|
|
13217
|
+
var _hoisted_47 = {
|
|
13202
13218
|
key: 2,
|
|
13203
13219
|
class: "tracked-change-decision-alert",
|
|
13204
13220
|
role: "alert"
|
|
13205
13221
|
};
|
|
13206
|
-
var
|
|
13207
|
-
var
|
|
13208
|
-
var
|
|
13222
|
+
var _hoisted_48 = { class: "tracked-change-decision-alert__message" };
|
|
13223
|
+
var _hoisted_49 = ["disabled", "data-disabled-reason"];
|
|
13224
|
+
var _hoisted_50 = {
|
|
13209
13225
|
key: 1,
|
|
13210
13226
|
class: "reply-expanded"
|
|
13211
13227
|
};
|
|
13212
|
-
var
|
|
13213
|
-
var
|
|
13214
|
-
var
|
|
13228
|
+
var _hoisted_51 = { class: "reply-input-wrapper" };
|
|
13229
|
+
var _hoisted_52 = { class: "reply-actions" };
|
|
13230
|
+
var _hoisted_53 = ["disabled", "data-disabled-reason"];
|
|
13215
13231
|
var CLICK_OUTSIDE_HIT_TOLERANCE_PX = 3;
|
|
13216
13232
|
var TRACKED_CHANGE_PREVIEW_MAX_PX = 90;
|
|
13217
13233
|
var _sfc_main$34 = {
|
|
@@ -14221,8 +14237,8 @@ var _sfc_main$34 = {
|
|
|
14221
14237
|
require__plugin_vue_export_helper.createElementVNode("span", _hoisted_27, "\"" + require__plugin_vue_export_helper.toDisplayString(comment.deletedText) + "\"", 1),
|
|
14222
14238
|
_cache[9] || (_cache[9] = require__plugin_vue_export_helper.createElementVNode("span", { class: "change-type" }, " with ", -1)),
|
|
14223
14239
|
require__plugin_vue_export_helper.createElementVNode("span", _hoisted_28, "\"" + require__plugin_vue_export_helper.toDisplayString(comment.trackedChangeText) + "\"", 1)
|
|
14224
|
-
])) : comment.deletedText ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_29, [_cache[10] || (_cache[10] = require__plugin_vue_export_helper.createElementVNode("span", { class: "change-type" }, "Deleted ", -1)), require__plugin_vue_export_helper.createElementVNode("span",
|
|
14225
|
-
key:
|
|
14240
|
+
])) : comment.deletedText && comment.deletedText === "\n" ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_29, [..._cache[10] || (_cache[10] = [require__plugin_vue_export_helper.createElementVNode("span", { class: "change-type" }, "Deleted line break", -1)])])) : comment.trackedChangeText && comment.trackedChangeText === "\n" ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_30, [..._cache[11] || (_cache[11] = [require__plugin_vue_export_helper.createElementVNode("span", { class: "change-type" }, "Added line break", -1)])])) : comment.deletedText ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_31, [_cache[12] || (_cache[12] = require__plugin_vue_export_helper.createElementVNode("span", { class: "change-type" }, "Deleted ", -1)), require__plugin_vue_export_helper.createElementVNode("span", _hoisted_32, "\"" + require__plugin_vue_export_helper.toDisplayString(comment.deletedText) + "\"", 1)])) : comment.trackedChangeText ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_33, [_cache[13] || (_cache[13] = require__plugin_vue_export_helper.createElementVNode("span", { class: "change-type" }, "Added ", -1)), require__plugin_vue_export_helper.createElementVNode("span", _hoisted_34, "\"" + require__plugin_vue_export_helper.toDisplayString(comment.trackedChangeText) + "\"", 1)])) : require__plugin_vue_export_helper.createCommentVNode("", true), comment.trackedChangeImagePreview?.src ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
|
|
14241
|
+
key: 12,
|
|
14226
14242
|
class: "tracked-change-image-preview",
|
|
14227
14243
|
"data-track-change-image-preview-role": comment.trackedChangeImagePreview.role ?? void 0
|
|
14228
14244
|
}, [require__plugin_vue_export_helper.createElementVNode("img", {
|
|
@@ -14232,7 +14248,7 @@ var _sfc_main$34 = {
|
|
|
14232
14248
|
style: require__plugin_vue_export_helper.normalizeStyle(trackedChangeImagePreviewStyle(comment.trackedChangeImagePreview)),
|
|
14233
14249
|
loading: "lazy",
|
|
14234
14250
|
decoding: "async"
|
|
14235
|
-
}, null, 12,
|
|
14251
|
+
}, null, 12, _hoisted_36)], 8, _hoisted_35)) : require__plugin_vue_export_helper.createCommentVNode("", true)], 10, _hoisted_10$3),
|
|
14236
14252
|
shouldTruncate.value && isTextOverflowing.value && index === 0 ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
|
|
14237
14253
|
key: 0,
|
|
14238
14254
|
class: "show-more-toggle",
|
|
@@ -14244,29 +14260,29 @@ var _sfc_main$34 = {
|
|
|
14244
14260
|
onClick: require__plugin_vue_export_helper.withModifiers(toggleTruncation, ["stop", "prevent"])
|
|
14245
14261
|
}, " Show less ")) : require__plugin_vue_export_helper.createCommentVNode("", true)
|
|
14246
14262
|
])) : require__plugin_vue_export_helper.createCommentVNode("", true),
|
|
14247
|
-
!comment.trackedChange ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div",
|
|
14263
|
+
!comment.trackedChange ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_37, [
|
|
14248
14264
|
!require__plugin_vue_export_helper.unref(isDebugging) && !isEditingThisComment.value(comment) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
|
|
14249
14265
|
key: 0,
|
|
14250
14266
|
class: require__plugin_vue_export_helper.normalizeClass(["comment", index === 0 ? bodyOverflowClass.value : void 0]),
|
|
14251
14267
|
ref_for: true,
|
|
14252
14268
|
ref: index === 0 ? setParentBodyRef : void 0,
|
|
14253
14269
|
innerHTML: comment.commentText
|
|
14254
|
-
}, null, 10,
|
|
14270
|
+
}, 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, {
|
|
14255
14271
|
ref_for: true,
|
|
14256
14272
|
ref: setEditCommentInputRef(comment.commentId),
|
|
14257
14273
|
users: [],
|
|
14258
14274
|
config: require__plugin_vue_export_helper.unref(getConfig),
|
|
14259
14275
|
"include-header": false,
|
|
14260
14276
|
comment
|
|
14261
|
-
}, null, 8, ["config", "comment"])]), require__plugin_vue_export_helper.createElementVNode("div",
|
|
14277
|
+
}, null, 8, ["config", "comment"])]), require__plugin_vue_export_helper.createElementVNode("div", _hoisted_42, [require__plugin_vue_export_helper.createElementVNode("button", {
|
|
14262
14278
|
class: "sd-button reply-btn-cancel",
|
|
14263
14279
|
onClick: require__plugin_vue_export_helper.withModifiers(($event) => handleCancel(comment), ["stop", "prevent"])
|
|
14264
|
-
}, "Cancel", 8,
|
|
14280
|
+
}, "Cancel", 8, _hoisted_43), require__plugin_vue_export_helper.createElementVNode("button", {
|
|
14265
14281
|
class: require__plugin_vue_export_helper.normalizeClass(["sd-button primary reply-btn-primary", { "sd-is-disabled": !hasTextContent.value || isV2WriteDisabled.value }]),
|
|
14266
14282
|
onClick: require__plugin_vue_export_helper.withModifiers(($event) => handleCommentUpdate(comment), ["stop", "prevent"]),
|
|
14267
14283
|
disabled: !hasTextContent.value || isV2WriteDisabled.value,
|
|
14268
14284
|
"data-disabled-reason": isV2WriteDisabled.value ? v2WriteCapability.value?.reason ?? null : null
|
|
14269
|
-
}, " Update ", 10,
|
|
14285
|
+
}, " Update ", 10, _hoisted_44)])])),
|
|
14270
14286
|
shouldTruncate.value && isTextOverflowing.value && index === 0 && !isEditingThisComment.value(comment) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", {
|
|
14271
14287
|
key: 3,
|
|
14272
14288
|
class: "show-more-toggle",
|
|
@@ -14278,20 +14294,20 @@ var _sfc_main$34 = {
|
|
|
14278
14294
|
onClick: require__plugin_vue_export_helper.withModifiers(toggleTruncation, ["stop", "prevent"])
|
|
14279
14295
|
}, " Show less ")) : require__plugin_vue_export_helper.createCommentVNode("", true)
|
|
14280
14296
|
])) : require__plugin_vue_export_helper.createCommentVNode("", true),
|
|
14281
|
-
shouldCollapseThread.value && index === 0 ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, { key: 2 }, [_cache[
|
|
14297
|
+
shouldCollapseThread.value && index === 0 ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, { key: 2 }, [_cache[14] || (_cache[14] = require__plugin_vue_export_helper.createElementVNode("div", { class: "comment-separator" }, null, -1)), require__plugin_vue_export_helper.createElementVNode("div", {
|
|
14282
14298
|
class: "collapsed-replies",
|
|
14283
14299
|
onClick: require__plugin_vue_export_helper.withModifiers(expandThread, ["stop", "prevent"])
|
|
14284
|
-
}, [require__plugin_vue_export_helper.createElementVNode("div",
|
|
14300
|
+
}, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_45, [(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(collapsedReplyAuthors.value, (author) => {
|
|
14285
14301
|
return require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createBlock(Avatar_default, {
|
|
14286
14302
|
key: author.email || author.name,
|
|
14287
14303
|
user: author,
|
|
14288
14304
|
class: "mini-avatar"
|
|
14289
14305
|
}, null, 8, ["user"]);
|
|
14290
14306
|
}), 128))]), require__plugin_vue_export_helper.createElementVNode("span", null, require__plugin_vue_export_helper.toDisplayString(collapsedReplyCount.value) + " more " + require__plugin_vue_export_helper.toDisplayString(collapsedReplyCount.value === 1 ? "reply" : "replies"), 1)])], 64)) : require__plugin_vue_export_helper.createCommentVNode("", true),
|
|
14291
|
-
showSeparator.value(index) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div",
|
|
14307
|
+
showSeparator.value(index) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_46)) : require__plugin_vue_export_helper.createCommentVNode("", true)
|
|
14292
14308
|
]);
|
|
14293
14309
|
}), 128)),
|
|
14294
|
-
trackedChangeDecisionFailure.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div",
|
|
14310
|
+
trackedChangeDecisionFailure.value ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_47, [require__plugin_vue_export_helper.createElementVNode("span", _hoisted_48, require__plugin_vue_export_helper.toDisplayString(trackedChangeDecisionFailureMessage.value), 1), require__plugin_vue_export_helper.createElementVNode("button", {
|
|
14295
14311
|
type: "button",
|
|
14296
14312
|
class: "sd-button tracked-change-decision-alert__retry",
|
|
14297
14313
|
onClick: require__plugin_vue_export_helper.withModifiers(retryTrackedChangeDecision, ["stop", "prevent"])
|
|
@@ -14303,7 +14319,7 @@ var _sfc_main$34 = {
|
|
|
14303
14319
|
onClick: require__plugin_vue_export_helper.withModifiers(startReply, ["stop", "prevent"]),
|
|
14304
14320
|
disabled: isV2WriteDisabled.value,
|
|
14305
14321
|
"data-disabled-reason": isV2WriteDisabled.value ? v2WriteCapability.value?.reason ?? null : null
|
|
14306
|
-
}, " Reply or add others with @ ", 10,
|
|
14322
|
+
}, " Reply or add others with @ ", 10, _hoisted_49)) : (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_50, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_51, [require__plugin_vue_export_helper.createVNode(CommentInput_default, {
|
|
14307
14323
|
ref_key: "commentInput",
|
|
14308
14324
|
ref: commentInput,
|
|
14309
14325
|
users: usersFiltered.value,
|
|
@@ -14314,7 +14330,7 @@ var _sfc_main$34 = {
|
|
|
14314
14330
|
"users",
|
|
14315
14331
|
"config",
|
|
14316
14332
|
"comment"
|
|
14317
|
-
])]), require__plugin_vue_export_helper.createElementVNode("div",
|
|
14333
|
+
])]), require__plugin_vue_export_helper.createElementVNode("div", _hoisted_52, [require__plugin_vue_export_helper.createElementVNode("button", {
|
|
14318
14334
|
class: "sd-button reply-btn-cancel",
|
|
14319
14335
|
onClick: require__plugin_vue_export_helper.withModifiers(handleCancel, ["stop", "prevent"])
|
|
14320
14336
|
}, "Cancel"), require__plugin_vue_export_helper.createElementVNode("button", {
|
|
@@ -14322,12 +14338,12 @@ var _sfc_main$34 = {
|
|
|
14322
14338
|
onClick: require__plugin_vue_export_helper.withModifiers(handleAddComment, ["stop", "prevent"]),
|
|
14323
14339
|
disabled: !hasTextContent.value || isV2WriteDisabled.value || isSubmittingReply.value,
|
|
14324
14340
|
"data-disabled-reason": v2ReplyDisabledReason.value
|
|
14325
|
-
}, " Reply ", 10,
|
|
14341
|
+
}, " Reply ", 10, _hoisted_53)])]))], 64)) : require__plugin_vue_export_helper.createCommentVNode("", true)
|
|
14326
14342
|
], 64))], 14, _hoisted_1$27)), [[_directive_click_outside, handleClickOutside]]);
|
|
14327
14343
|
};
|
|
14328
14344
|
}
|
|
14329
14345
|
};
|
|
14330
|
-
var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-
|
|
14346
|
+
var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-eefd4750"]]);
|
|
14331
14347
|
//#endregion
|
|
14332
14348
|
//#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
|
|
14333
14349
|
var _hoisted_1$26 = [
|
|
@@ -22176,6 +22192,7 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
|
|
|
22176
22192
|
if (!documentId) return;
|
|
22177
22193
|
clearV2CommandShortcutBinding(documentId);
|
|
22178
22194
|
if (typeof bindEditShortcuts !== "function") return;
|
|
22195
|
+
getSuperDocUI();
|
|
22179
22196
|
const openLinkWorkflow = resolveV2LinkWorkflowOpener();
|
|
22180
22197
|
const unbind = bindEditShortcuts({
|
|
22181
22198
|
commandRoute: {
|
|
@@ -24520,7 +24537,7 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
|
|
|
24520
24537
|
], 38);
|
|
24521
24538
|
};
|
|
24522
24539
|
}
|
|
24523
|
-
}, [["__scopeId", "data-v-
|
|
24540
|
+
}, [["__scopeId", "data-v-e476c448"]]);
|
|
24524
24541
|
//#endregion
|
|
24525
24542
|
//#region src/core/create-app.js
|
|
24526
24543
|
var PINIA_DEVTOOLS_SETUP_EVENT = "devtools-plugin:setup";
|
|
@@ -40542,6 +40559,7 @@ var _sfc_main$15 = {
|
|
|
40542
40559
|
ref_key: "popupRef",
|
|
40543
40560
|
ref: popupRef,
|
|
40544
40561
|
role: "listbox",
|
|
40562
|
+
"data-sd-part": "dropdown-menu",
|
|
40545
40563
|
id: listboxId.value,
|
|
40546
40564
|
"aria-label": ariaLabel.value,
|
|
40547
40565
|
class: require__plugin_vue_export_helper.normalizeClass(["sd-font-combobox__listbox", { "high-contrast": require__plugin_vue_export_helper.unref(isHighContrastMode) }]),
|
|
@@ -40571,7 +40589,7 @@ var _sfc_main$15 = {
|
|
|
40571
40589
|
};
|
|
40572
40590
|
}
|
|
40573
40591
|
};
|
|
40574
|
-
var ToolbarComboBox_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$15, [["__scopeId", "data-v-
|
|
40592
|
+
var ToolbarComboBox_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$15, [["__scopeId", "data-v-e288ef9f"]]);
|
|
40575
40593
|
//#endregion
|
|
40576
40594
|
//#region src/internal/toolbar/built-in/FontFamilyCombobox.vue
|
|
40577
40595
|
var _sfc_main$14 = {
|
|
@@ -41609,10 +41627,9 @@ var Toolbar_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vu
|
|
|
41609
41627
|
});
|
|
41610
41628
|
const showLeftSide = proxy.$toolbar.config?.toolbarGroups?.includes("left");
|
|
41611
41629
|
const showRightSide = proxy.$toolbar.config?.toolbarGroups?.includes("right");
|
|
41612
|
-
const excludeButtonsList = proxy.$toolbar.config?.toolbarButtonsExclude || [];
|
|
41613
41630
|
const getFilteredItems = (position) => {
|
|
41614
41631
|
toolbarStateVersion.value;
|
|
41615
|
-
return proxy.$toolbar.getToolbarItemByGroup(position)
|
|
41632
|
+
return proxy.$toolbar.getToolbarItemByGroup(position);
|
|
41616
41633
|
};
|
|
41617
41634
|
const updateCompactSideGroups = () => {
|
|
41618
41635
|
compactSideGroups.value = proxy.$toolbar.getAvailableWidth() <= RESPONSIVE_BREAKPOINTS.lg;
|
|
@@ -41786,7 +41803,7 @@ var Toolbar_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vu
|
|
|
41786
41803
|
], 32);
|
|
41787
41804
|
};
|
|
41788
41805
|
}
|
|
41789
|
-
}, [["__scopeId", "data-v-
|
|
41806
|
+
}, [["__scopeId", "data-v-0d00bc5b"]]);
|
|
41790
41807
|
//#endregion
|
|
41791
41808
|
//#region src/internal/toolbar/built-in/font-options.js
|
|
41792
41809
|
/**
|
|
@@ -43548,6 +43565,35 @@ var getToolbarItemWidth = (item, controlSizes) => {
|
|
|
43548
43565
|
if (item.type === "separator") return controlSizes.get("separator");
|
|
43549
43566
|
return controlSizes.get(item.name.value) || controlSizes.get("default");
|
|
43550
43567
|
};
|
|
43568
|
+
var collapseSeparatorRun = (items) => {
|
|
43569
|
+
const result = [];
|
|
43570
|
+
for (const item of items) {
|
|
43571
|
+
if (item.type === "separator") {
|
|
43572
|
+
const previous = result[result.length - 1];
|
|
43573
|
+
if (!previous || previous.type === "separator") continue;
|
|
43574
|
+
}
|
|
43575
|
+
result.push(item);
|
|
43576
|
+
}
|
|
43577
|
+
while (result.length && result[result.length - 1].type === "separator") result.pop();
|
|
43578
|
+
return result;
|
|
43579
|
+
};
|
|
43580
|
+
var normalizeSeparators = (items) => {
|
|
43581
|
+
const byGroup = /* @__PURE__ */ new Map();
|
|
43582
|
+
for (const item of items) {
|
|
43583
|
+
const group = item.group?.value || "center";
|
|
43584
|
+
if (!byGroup.has(group)) byGroup.set(group, []);
|
|
43585
|
+
byGroup.get(group).push(item);
|
|
43586
|
+
}
|
|
43587
|
+
const kept = /* @__PURE__ */ new Set();
|
|
43588
|
+
for (const groupItems of byGroup.values()) for (const item of collapseSeparatorRun(groupItems)) kept.add(item);
|
|
43589
|
+
return items.filter((item) => kept.has(item));
|
|
43590
|
+
};
|
|
43591
|
+
var normalizeSeparatorsIgnoringOverflow = (items) => {
|
|
43592
|
+
const overflowTrigger = items.find((item) => item.type === "overflow");
|
|
43593
|
+
const withoutOverflow = items.filter((item) => item !== overflowTrigger);
|
|
43594
|
+
const kept = new Set(normalizeSeparators(withoutOverflow));
|
|
43595
|
+
return items.filter((item) => item === overflowTrigger || kept.has(item));
|
|
43596
|
+
};
|
|
43551
43597
|
/**
|
|
43552
43598
|
* Set or clear the link item's `href` without disturbing the rest of its
|
|
43553
43599
|
* attributes. The static configuration (`ariaLabel`, and anything added later)
|
|
@@ -43602,7 +43648,7 @@ function hasAiModule(superToolbar) {
|
|
|
43602
43648
|
function aiModuleConfig(superToolbar) {
|
|
43603
43649
|
return superToolbar.config?.superdoc?.config?.modules?.ai ?? superToolbar.superdoc?.config?.modules?.ai ?? {};
|
|
43604
43650
|
}
|
|
43605
|
-
var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts, hideButtons, availableWidth, role, isDev = false, configuredItemNames, excludedItemNames, additionalItems = [] } = {}) => {
|
|
43651
|
+
var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts, hideButtons, availableWidth, role, isDev = false, configuredItemNames, configuredItemOrder, excludedItemNames, additionalItems = [] } = {}) => {
|
|
43606
43652
|
const bold = useToolbarItem({
|
|
43607
43653
|
type: "button",
|
|
43608
43654
|
name: "bold",
|
|
@@ -44712,9 +44758,15 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
|
|
|
44712
44758
|
}
|
|
44713
44759
|
if (configuredItemNames) toolbarItems = toolbarItems.filter((item) => item.name.value === "overflow" || item.isCustomToolbarItem || configuredItemNames.has(item.name.value));
|
|
44714
44760
|
if (excludedItemNames?.size) toolbarItems = toolbarItems.filter((item) => !excludedItemNames.has(item.name.value));
|
|
44761
|
+
toolbarItems = normalizeSeparatorsIgnoringOverflow(toolbarItems);
|
|
44715
44762
|
const isStickyItem = (item) => stickyItemNames.includes(item.name.value);
|
|
44716
44763
|
const overflowTrigger = toolbarItems.find((item) => item.name.value === "overflow");
|
|
44717
44764
|
const layoutItems = toolbarItems.filter((item) => item !== overflowTrigger);
|
|
44765
|
+
if (configuredItemOrder) {
|
|
44766
|
+
const orderIndex = new Map(configuredItemOrder.map((name, index) => [name, index]));
|
|
44767
|
+
const rank = (item) => orderIndex.get(item.name.value) ?? Number.MAX_SAFE_INTEGER;
|
|
44768
|
+
layoutItems.sort((a, b) => rank(a) - rank(b));
|
|
44769
|
+
}
|
|
44718
44770
|
const partitionItems = (reserveOverflowTrigger) => {
|
|
44719
44771
|
const overflowItems = [];
|
|
44720
44772
|
const visibleItems = [];
|
|
@@ -44756,6 +44808,7 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
|
|
|
44756
44808
|
if (insertAt === -1) visibleItems.push(overflowTrigger);
|
|
44757
44809
|
else visibleItems.splice(insertAt, 0, overflowTrigger);
|
|
44758
44810
|
}
|
|
44811
|
+
visibleItems = normalizeSeparators(visibleItems);
|
|
44759
44812
|
return {
|
|
44760
44813
|
defaultItems: visibleItems,
|
|
44761
44814
|
overflowItems: overflowItems.filter((item) => item.type !== "separator")
|
|
@@ -44976,6 +45029,7 @@ var BuiltInToolbar = class extends require_eventemitter3.import_eventemitter3.de
|
|
|
44976
45029
|
responsiveToContainer: false,
|
|
44977
45030
|
mode: "docx",
|
|
44978
45031
|
excludeItems: [],
|
|
45032
|
+
toolbarButtonsExclude: [],
|
|
44979
45033
|
groups: null,
|
|
44980
45034
|
customButtons: [],
|
|
44981
45035
|
showFormattingMarksButton: false,
|
|
@@ -45141,7 +45195,7 @@ var BuiltInToolbar = class extends require_eventemitter3.import_eventemitter3.de
|
|
|
45141
45195
|
const selectedCustomOptions = new Map(this.#getAllToolbarItems().filter((item) => item.isCustomToolbarItem && item.type === "dropdown").map((item) => [item.name.value, item.selectedValue.value]));
|
|
45142
45196
|
const hasExplicitGroupComposition = this.config.groups && !Array.isArray(this.config.groups) && Object.keys(this.config.groups).length > 0;
|
|
45143
45197
|
const configuredItemNames = hasExplicitGroupComposition ? new Set(Object.values(this.config.groups).flatMap((items) => items)) : null;
|
|
45144
|
-
const excludedItemNames = new Set(this.config.excludeItems);
|
|
45198
|
+
const excludedItemNames = /* @__PURE__ */ new Set([...this.config.excludeItems ?? [], ...this.config.toolbarButtonsExclude ?? []]);
|
|
45145
45199
|
const customItems = this.config.customButtons || [];
|
|
45146
45200
|
const takenNames = new Set(RESERVED_TOOLBAR_ITEM_NAMES);
|
|
45147
45201
|
const customToolbarItems = customItems.map((item, index) => {
|
|
@@ -45162,6 +45216,12 @@ var BuiltInToolbar = class extends require_eventemitter3.import_eventemitter3.de
|
|
|
45162
45216
|
}).filter(Boolean);
|
|
45163
45217
|
const configuredGroups = hasExplicitGroupComposition ? new Set(Object.keys(this.config.groups)) : null;
|
|
45164
45218
|
const layoutCustomItems = configuredGroups ? customToolbarItems.filter((item) => configuredGroups.has(item.group?.value || "center")) : customToolbarItems;
|
|
45219
|
+
let allConfigItems = null;
|
|
45220
|
+
if (hasExplicitGroupComposition) {
|
|
45221
|
+
const groupedItems = Object.values(this.config.groups).flatMap((item) => item);
|
|
45222
|
+
const groupedCustomItems = customToolbarItems.filter((item) => configuredGroups.has(item.group?.value || "center")).map((item) => item.name.value);
|
|
45223
|
+
allConfigItems = [.../* @__PURE__ */ new Set([...groupedItems, ...groupedCustomItems])];
|
|
45224
|
+
}
|
|
45165
45225
|
const { defaultItems, overflowItems } = makeDefaultItems({
|
|
45166
45226
|
superToolbar: this,
|
|
45167
45227
|
toolbarIcons: this.config.icons,
|
|
@@ -45172,18 +45232,29 @@ var BuiltInToolbar = class extends require_eventemitter3.import_eventemitter3.de
|
|
|
45172
45232
|
role: this.role,
|
|
45173
45233
|
isDev: this.isDev,
|
|
45174
45234
|
configuredItemNames,
|
|
45235
|
+
configuredItemOrder: allConfigItems,
|
|
45175
45236
|
excludedItemNames,
|
|
45176
45237
|
additionalItems: layoutCustomItems
|
|
45177
45238
|
});
|
|
45178
|
-
|
|
45179
|
-
if (hasExplicitGroupComposition) {
|
|
45180
|
-
const groupedItems = Object.values(this.config.groups).flatMap((item) => item);
|
|
45181
|
-
const groupedCustomItems = customToolbarItems.filter((item) => configuredGroups.has(item.group?.value || "center")).map((item) => item.name.value);
|
|
45182
|
-
allConfigItems = [.../* @__PURE__ */ new Set([...groupedItems, ...groupedCustomItems])];
|
|
45183
|
-
}
|
|
45239
|
+
if (!hasExplicitGroupComposition) allConfigItems = [...defaultItems.map((item) => item.name.value), ...overflowItems.map((item) => item.name.value)];
|
|
45184
45240
|
const configuredOverflowItems = overflowItems.filter((item) => allConfigItems.includes(item.name.value) && !excludedItemNames.has(item.name.value));
|
|
45185
45241
|
const visibleItemNames = configuredOverflowItems.length ? [...allConfigItems, "overflow"] : allConfigItems;
|
|
45186
45242
|
const filteredItems = defaultItems.filter((item) => visibleItemNames.includes(item.name.value)).filter((item) => !excludedItemNames.has(item.name.value));
|
|
45243
|
+
if (hasExplicitGroupComposition) {
|
|
45244
|
+
const orderIndex = new Map(allConfigItems.map((name, index) => [name, index]));
|
|
45245
|
+
const rank = (item) => orderIndex.get(item.name.value) ?? Number.MAX_SAFE_INTEGER;
|
|
45246
|
+
const overflowTrigger = filteredItems.find((item) => item.name.value === "overflow");
|
|
45247
|
+
const originalIndex = new Map(filteredItems.map((item, index) => [item, index]));
|
|
45248
|
+
const reordered = filteredItems.filter((item) => item !== overflowTrigger);
|
|
45249
|
+
reordered.sort((a, b) => rank(a) - rank(b));
|
|
45250
|
+
if (overflowTrigger) {
|
|
45251
|
+
const triggerOriginalIndex = originalIndex.get(overflowTrigger);
|
|
45252
|
+
const insertAt = reordered.findIndex((item) => originalIndex.get(item) > triggerOriginalIndex);
|
|
45253
|
+
insertAt === -1 ? reordered.push(overflowTrigger) : reordered.splice(insertAt, 0, overflowTrigger);
|
|
45254
|
+
}
|
|
45255
|
+
filteredItems.splice(0, filteredItems.length, ...reordered);
|
|
45256
|
+
configuredOverflowItems.sort((a, b) => rank(a) - rank(b));
|
|
45257
|
+
}
|
|
45187
45258
|
if (hasExplicitGroupComposition) {
|
|
45188
45259
|
for (const [group, names] of Object.entries(this.config.groups)) for (const item of filteredItems) if (names.includes(item.name.value)) item.group.value = group;
|
|
45189
45260
|
}
|
|
@@ -46283,7 +46354,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
|
|
|
46283
46354
|
this.config.colors = shuffleArray(this.config.colors);
|
|
46284
46355
|
this.userColorMap = /* @__PURE__ */ new Map();
|
|
46285
46356
|
this.colorIndex = 0;
|
|
46286
|
-
this.version = "2.20.
|
|
46357
|
+
this.version = "2.20.1-next.10";
|
|
46287
46358
|
this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
|
|
46288
46359
|
this.superdocId = config.superdocId || require_uuid.v4();
|
|
46289
46360
|
this.colors = this.config.colors ?? [];
|