@superdoc-dev/cli 0.5.0-next.14 → 0.5.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/index.js +1986 -258
- package/package.json +8 -8
- package/skill/SKILL.md +62 -6
package/dist/index.js
CHANGED
|
@@ -141,6 +141,7 @@ function parseGlobalArgs(argv) {
|
|
|
141
141
|
let prettyFlag = false;
|
|
142
142
|
let timeoutMs;
|
|
143
143
|
let sessionId;
|
|
144
|
+
let quiet = false;
|
|
144
145
|
let help = false;
|
|
145
146
|
let version2 = false;
|
|
146
147
|
const rest = [];
|
|
@@ -162,6 +163,10 @@ function parseGlobalArgs(argv) {
|
|
|
162
163
|
help = true;
|
|
163
164
|
continue;
|
|
164
165
|
}
|
|
166
|
+
if (token === "--quiet") {
|
|
167
|
+
quiet = true;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
165
170
|
if (token === "--version" || token === "-v") {
|
|
166
171
|
version2 = true;
|
|
167
172
|
continue;
|
|
@@ -221,6 +226,7 @@ function parseGlobalArgs(argv) {
|
|
|
221
226
|
output,
|
|
222
227
|
timeoutMs,
|
|
223
228
|
sessionId,
|
|
229
|
+
quiet,
|
|
224
230
|
help,
|
|
225
231
|
version: version2
|
|
226
232
|
},
|
|
@@ -1211,7 +1217,7 @@ function formatInlineAliasExpectedResult(key) {
|
|
|
1211
1217
|
function projectFromDefinitions(fn) {
|
|
1212
1218
|
return Object.fromEntries(OPERATION_IDS.map((id) => [id, fn(id, OPERATION_DEFINITIONS[id])]));
|
|
1213
1219
|
}
|
|
1214
|
-
var NONE_FAILURES, NONE_THROWS, T_NOT_FOUND, T_NOT_FOUND_CAPABLE, T_PLAN_ENGINE, T_NOT_FOUND_COMMAND, T_IMAGE_COMMAND, T_CC_READ, T_CC_MUTATION, T_CC_TYPED, T_CC_TYPED_READ, T_CC_RAW, T_QUERY_MATCH, T_SECTION_CREATE, T_SECTION_READ, T_PARAGRAPH_MUTATION, T_SECTION_MUTATION, T_SECTION_SETTINGS_MUTATION, T_HEADER_FOOTER_MUTATION, T_STORY, T_REF_READ_LIST, T_REF_MUTATION, T_REF_MUTATION_REMOVE, T_REF_INSERT, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS, OPERATION_DEFINITIONS, OPERATION_IDS, SINGLETON_OPERATION_IDS, NAMESPACED_OPERATION_IDS;
|
|
1220
|
+
var NONE_FAILURES, NONE_THROWS, T_NOT_FOUND, T_NOT_FOUND_CAPABLE, T_PLAN_ENGINE, T_NOT_FOUND_COMMAND, T_IMAGE_COMMAND, T_CC_READ, T_CC_MUTATION, T_CC_TYPED, T_CC_TYPED_READ, T_CC_RAW, T_QUERY_MATCH, T_SECTION_CREATE, T_SECTION_READ, T_PARAGRAPH_MUTATION, T_SECTION_MUTATION, T_SECTION_SETTINGS_MUTATION, T_HEADER_FOOTER_MUTATION, T_STORY, T_REF_READ_LIST, T_REF_MUTATION, T_REF_MUTATION_REMOVE, T_REF_INSERT, T_PROTECTION_READ, T_PROTECTION_MUTATION, T_PERM_RANGE_READ, T_PERM_RANGE_MUTATION, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS, OPERATION_DEFINITIONS, OPERATION_IDS, SINGLETON_OPERATION_IDS, NAMESPACED_OPERATION_IDS;
|
|
1215
1221
|
var init_operation_definitions = __esm(() => {
|
|
1216
1222
|
init_inline_run_patch();
|
|
1217
1223
|
NONE_FAILURES = [];
|
|
@@ -1287,6 +1293,15 @@ var init_operation_definitions = __esm(() => {
|
|
|
1287
1293
|
T_REF_MUTATION = ["TARGET_NOT_FOUND", "INVALID_TARGET", "INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
1288
1294
|
T_REF_MUTATION_REMOVE = ["TARGET_NOT_FOUND", "INVALID_TARGET", "CAPABILITY_UNAVAILABLE"];
|
|
1289
1295
|
T_REF_INSERT = ["TARGET_NOT_FOUND", "INVALID_TARGET", "INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
1296
|
+
T_PROTECTION_READ = ["CAPABILITY_UNAVAILABLE"];
|
|
1297
|
+
T_PROTECTION_MUTATION = ["INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
1298
|
+
T_PERM_RANGE_READ = ["TARGET_NOT_FOUND", "CAPABILITY_UNAVAILABLE"];
|
|
1299
|
+
T_PERM_RANGE_MUTATION = [
|
|
1300
|
+
"TARGET_NOT_FOUND",
|
|
1301
|
+
"INVALID_TARGET",
|
|
1302
|
+
"INVALID_INPUT",
|
|
1303
|
+
"CAPABILITY_UNAVAILABLE"
|
|
1304
|
+
];
|
|
1290
1305
|
FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS = Object.fromEntries(INLINE_PROPERTY_REGISTRY.map((entry) => {
|
|
1291
1306
|
const operationId = `format.${entry.key}`;
|
|
1292
1307
|
const definition = {
|
|
@@ -6184,6 +6199,116 @@ var init_operation_definitions = __esm(() => {
|
|
|
6184
6199
|
referenceDocPath: "diff/apply.mdx",
|
|
6185
6200
|
referenceGroup: "diff",
|
|
6186
6201
|
skipAsATool: true
|
|
6202
|
+
},
|
|
6203
|
+
"protection.get": {
|
|
6204
|
+
memberPath: "protection.get",
|
|
6205
|
+
description: "Read the current document protection state including editing restrictions, write protection, and read-only recommendation.",
|
|
6206
|
+
expectedResult: "Returns a DocumentProtectionState with editingRestriction, writeProtection, and readOnlyRecommended fields.",
|
|
6207
|
+
requiresDocumentContext: true,
|
|
6208
|
+
metadata: readOperation({ throws: T_PROTECTION_READ }),
|
|
6209
|
+
referenceDocPath: "protection/get.mdx",
|
|
6210
|
+
referenceGroup: "protection",
|
|
6211
|
+
skipAsATool: true
|
|
6212
|
+
},
|
|
6213
|
+
"protection.setEditingRestriction": {
|
|
6214
|
+
memberPath: "protection.setEditingRestriction",
|
|
6215
|
+
description: "Enable Word-style editing restriction on the document. Only readOnly mode is supported in v1.",
|
|
6216
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
6217
|
+
requiresDocumentContext: true,
|
|
6218
|
+
metadata: mutationOperation({
|
|
6219
|
+
idempotency: "idempotent",
|
|
6220
|
+
supportsDryRun: true,
|
|
6221
|
+
supportsTrackedMode: false,
|
|
6222
|
+
possibleFailureCodes: ["NO_OP"],
|
|
6223
|
+
throws: T_PROTECTION_MUTATION
|
|
6224
|
+
}),
|
|
6225
|
+
referenceDocPath: "protection/set-editing-restriction.mdx",
|
|
6226
|
+
referenceGroup: "protection",
|
|
6227
|
+
skipAsATool: true
|
|
6228
|
+
},
|
|
6229
|
+
"protection.clearEditingRestriction": {
|
|
6230
|
+
memberPath: "protection.clearEditingRestriction",
|
|
6231
|
+
description: "Disable document-level editing restriction by setting enforcement to off. Preserves the protection element and its metadata for round-trip fidelity.",
|
|
6232
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
6233
|
+
requiresDocumentContext: true,
|
|
6234
|
+
metadata: mutationOperation({
|
|
6235
|
+
idempotency: "idempotent",
|
|
6236
|
+
supportsDryRun: true,
|
|
6237
|
+
supportsTrackedMode: false,
|
|
6238
|
+
possibleFailureCodes: ["NO_OP"],
|
|
6239
|
+
throws: T_PROTECTION_MUTATION
|
|
6240
|
+
}),
|
|
6241
|
+
referenceDocPath: "protection/clear-editing-restriction.mdx",
|
|
6242
|
+
referenceGroup: "protection",
|
|
6243
|
+
skipAsATool: true
|
|
6244
|
+
},
|
|
6245
|
+
"permissionRanges.list": {
|
|
6246
|
+
memberPath: "permissionRanges.list",
|
|
6247
|
+
description: "List all permission ranges in the document. Returns only complete paired ranges (both start and end markers present).",
|
|
6248
|
+
expectedResult: "Returns a PermissionRangesListResult containing discovered permission ranges with principal and position data.",
|
|
6249
|
+
requiresDocumentContext: true,
|
|
6250
|
+
metadata: readOperation({ throws: T_PERM_RANGE_READ }),
|
|
6251
|
+
referenceDocPath: "permission-ranges/list.mdx",
|
|
6252
|
+
referenceGroup: "permissionRanges",
|
|
6253
|
+
skipAsATool: true
|
|
6254
|
+
},
|
|
6255
|
+
"permissionRanges.get": {
|
|
6256
|
+
memberPath: "permissionRanges.get",
|
|
6257
|
+
description: "Get detailed information about a specific permission range by ID.",
|
|
6258
|
+
expectedResult: "Returns a PermissionRangeInfo object with the range principal, kind, and positions.",
|
|
6259
|
+
requiresDocumentContext: true,
|
|
6260
|
+
metadata: readOperation({ throws: T_PERM_RANGE_READ }),
|
|
6261
|
+
referenceDocPath: "permission-ranges/get.mdx",
|
|
6262
|
+
referenceGroup: "permissionRanges",
|
|
6263
|
+
skipAsATool: true
|
|
6264
|
+
},
|
|
6265
|
+
"permissionRanges.create": {
|
|
6266
|
+
memberPath: "permissionRanges.create",
|
|
6267
|
+
description: "Create a permission range exception region in the document. Inserts matched permStart/permEnd markers at the target.",
|
|
6268
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the created range info on success.",
|
|
6269
|
+
requiresDocumentContext: true,
|
|
6270
|
+
metadata: mutationOperation({
|
|
6271
|
+
idempotency: "non-idempotent",
|
|
6272
|
+
supportsDryRun: true,
|
|
6273
|
+
supportsTrackedMode: false,
|
|
6274
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
6275
|
+
throws: T_PERM_RANGE_MUTATION
|
|
6276
|
+
}),
|
|
6277
|
+
referenceDocPath: "permission-ranges/create.mdx",
|
|
6278
|
+
referenceGroup: "permissionRanges",
|
|
6279
|
+
skipAsATool: true
|
|
6280
|
+
},
|
|
6281
|
+
"permissionRanges.remove": {
|
|
6282
|
+
memberPath: "permissionRanges.remove",
|
|
6283
|
+
description: "Remove a permission range by ID. Removes whichever markers exist for the given ID (start, end, or both).",
|
|
6284
|
+
expectedResult: "Returns a PermissionRangeRemoveResult indicating success or a failure.",
|
|
6285
|
+
requiresDocumentContext: true,
|
|
6286
|
+
metadata: mutationOperation({
|
|
6287
|
+
idempotency: "idempotent",
|
|
6288
|
+
supportsDryRun: true,
|
|
6289
|
+
supportsTrackedMode: false,
|
|
6290
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
6291
|
+
throws: T_PERM_RANGE_MUTATION
|
|
6292
|
+
}),
|
|
6293
|
+
referenceDocPath: "permission-ranges/remove.mdx",
|
|
6294
|
+
referenceGroup: "permissionRanges",
|
|
6295
|
+
skipAsATool: true
|
|
6296
|
+
},
|
|
6297
|
+
"permissionRanges.updatePrincipal": {
|
|
6298
|
+
memberPath: "permissionRanges.updatePrincipal",
|
|
6299
|
+
description: "Change which principal is allowed to edit a permission range. Updates the principal fields on the start marker.",
|
|
6300
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the updated range info on success.",
|
|
6301
|
+
requiresDocumentContext: true,
|
|
6302
|
+
metadata: mutationOperation({
|
|
6303
|
+
idempotency: "idempotent",
|
|
6304
|
+
supportsDryRun: true,
|
|
6305
|
+
supportsTrackedMode: false,
|
|
6306
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
6307
|
+
throws: T_PERM_RANGE_MUTATION
|
|
6308
|
+
}),
|
|
6309
|
+
referenceDocPath: "permission-ranges/update-principal.mdx",
|
|
6310
|
+
referenceGroup: "permissionRanges",
|
|
6311
|
+
skipAsATool: true
|
|
6187
6312
|
}
|
|
6188
6313
|
};
|
|
6189
6314
|
OPERATION_IDS = Object.freeze(Object.keys(OPERATION_DEFINITIONS));
|
|
@@ -12489,6 +12614,77 @@ var init_schemas = __esm(() => {
|
|
|
12489
12614
|
output: diffApplyResultSchema,
|
|
12490
12615
|
success: diffApplyResultSchema,
|
|
12491
12616
|
failure: { type: "object" }
|
|
12617
|
+
},
|
|
12618
|
+
"protection.get": {
|
|
12619
|
+
input: objectSchema({}),
|
|
12620
|
+
output: objectSchema({
|
|
12621
|
+
editingRestriction: objectSchema({
|
|
12622
|
+
mode: { type: "string", enum: ["none", "readOnly", "comments", "trackedChanges", "forms"] },
|
|
12623
|
+
enforced: { type: "boolean" },
|
|
12624
|
+
runtimeEnforced: { type: "boolean" },
|
|
12625
|
+
passwordProtected: { type: "boolean" },
|
|
12626
|
+
formattingRestricted: { type: "boolean" }
|
|
12627
|
+
}, ["mode", "enforced", "runtimeEnforced", "passwordProtected", "formattingRestricted"]),
|
|
12628
|
+
writeProtection: objectSchema({
|
|
12629
|
+
enabled: { type: "boolean" },
|
|
12630
|
+
passwordProtected: { type: "boolean" }
|
|
12631
|
+
}, ["enabled", "passwordProtected"]),
|
|
12632
|
+
readOnlyRecommended: { type: "boolean" }
|
|
12633
|
+
}, ["editingRestriction", "writeProtection", "readOnlyRecommended"])
|
|
12634
|
+
},
|
|
12635
|
+
"protection.setEditingRestriction": {
|
|
12636
|
+
input: objectSchema({
|
|
12637
|
+
mode: { type: "string", enum: ["readOnly"] },
|
|
12638
|
+
formattingRestricted: { type: "boolean" }
|
|
12639
|
+
}, ["mode"]),
|
|
12640
|
+
output: { type: "object" },
|
|
12641
|
+
success: { type: "object" },
|
|
12642
|
+
failure: { type: "object" }
|
|
12643
|
+
},
|
|
12644
|
+
"protection.clearEditingRestriction": {
|
|
12645
|
+
input: objectSchema({}),
|
|
12646
|
+
output: { type: "object" },
|
|
12647
|
+
success: { type: "object" },
|
|
12648
|
+
failure: { type: "object" }
|
|
12649
|
+
},
|
|
12650
|
+
"permissionRanges.list": {
|
|
12651
|
+
input: refListQuerySchema,
|
|
12652
|
+
output: discoveryOutputSchema
|
|
12653
|
+
},
|
|
12654
|
+
"permissionRanges.get": {
|
|
12655
|
+
input: objectSchema({ id: { type: "string" } }, ["id"]),
|
|
12656
|
+
output: { type: "object" }
|
|
12657
|
+
},
|
|
12658
|
+
"permissionRanges.create": {
|
|
12659
|
+
input: objectSchema({
|
|
12660
|
+
target: selectionTargetSchema,
|
|
12661
|
+
principal: objectSchema({
|
|
12662
|
+
kind: { type: "string", enum: ["everyone", "editor"] },
|
|
12663
|
+
id: { type: "string" }
|
|
12664
|
+
}, ["kind"]),
|
|
12665
|
+
id: { type: "string" }
|
|
12666
|
+
}, ["target", "principal"]),
|
|
12667
|
+
output: { type: "object" },
|
|
12668
|
+
success: { type: "object" },
|
|
12669
|
+
failure: { type: "object" }
|
|
12670
|
+
},
|
|
12671
|
+
"permissionRanges.remove": {
|
|
12672
|
+
input: objectSchema({ id: { type: "string" } }, ["id"]),
|
|
12673
|
+
output: { type: "object" },
|
|
12674
|
+
success: { type: "object" },
|
|
12675
|
+
failure: { type: "object" }
|
|
12676
|
+
},
|
|
12677
|
+
"permissionRanges.updatePrincipal": {
|
|
12678
|
+
input: objectSchema({
|
|
12679
|
+
id: { type: "string" },
|
|
12680
|
+
principal: objectSchema({
|
|
12681
|
+
kind: { type: "string", enum: ["everyone", "editor"] },
|
|
12682
|
+
id: { type: "string" }
|
|
12683
|
+
}, ["kind"])
|
|
12684
|
+
}, ["id", "principal"]),
|
|
12685
|
+
output: { type: "object" },
|
|
12686
|
+
success: { type: "object" },
|
|
12687
|
+
failure: { type: "object" }
|
|
12492
12688
|
}
|
|
12493
12689
|
};
|
|
12494
12690
|
});
|
|
@@ -12663,6 +12859,16 @@ var init_reference_doc_map = __esm(() => {
|
|
|
12663
12859
|
title: "Diff",
|
|
12664
12860
|
description: "Snapshot-based document comparison and replay.",
|
|
12665
12861
|
pagePath: "diff/index.mdx"
|
|
12862
|
+
},
|
|
12863
|
+
protection: {
|
|
12864
|
+
title: "Protection",
|
|
12865
|
+
description: "Document-level protection state and editing restriction operations.",
|
|
12866
|
+
pagePath: "protection/index.mdx"
|
|
12867
|
+
},
|
|
12868
|
+
permissionRanges: {
|
|
12869
|
+
title: "Permission Ranges",
|
|
12870
|
+
description: "Permission range exception operations for protected documents.",
|
|
12871
|
+
pagePath: "permission-ranges/index.mdx"
|
|
12666
12872
|
}
|
|
12667
12873
|
};
|
|
12668
12874
|
REFERENCE_OPERATION_GROUPS = Object.keys(GROUP_METADATA).map((key) => ({
|
|
@@ -15335,7 +15541,15 @@ function buildDispatchTable(api) {
|
|
|
15335
15541
|
"authorities.entries.remove": (input, options) => api.authorities.entries.remove(input, options),
|
|
15336
15542
|
"diff.capture": () => api.diff.capture(),
|
|
15337
15543
|
"diff.compare": (input) => api.diff.compare(input),
|
|
15338
|
-
"diff.apply": (input, options) => api.diff.apply(input, options)
|
|
15544
|
+
"diff.apply": (input, options) => api.diff.apply(input, options),
|
|
15545
|
+
"protection.get": (input) => api.protection.get(input),
|
|
15546
|
+
"protection.setEditingRestriction": (input, options) => api.protection.setEditingRestriction(input, options),
|
|
15547
|
+
"protection.clearEditingRestriction": (input, options) => api.protection.clearEditingRestriction(input, options),
|
|
15548
|
+
"permissionRanges.list": (input) => api.permissionRanges.list(input),
|
|
15549
|
+
"permissionRanges.get": (input) => api.permissionRanges.get(input),
|
|
15550
|
+
"permissionRanges.create": (input, options) => api.permissionRanges.create(input, options),
|
|
15551
|
+
"permissionRanges.remove": (input, options) => api.permissionRanges.remove(input, options),
|
|
15552
|
+
"permissionRanges.updatePrincipal": (input, options) => api.permissionRanges.updatePrincipal(input, options)
|
|
15339
15553
|
};
|
|
15340
15554
|
}
|
|
15341
15555
|
var init_invoke = __esm(() => {
|
|
@@ -17123,6 +17337,90 @@ var init_bookmarks = __esm(() => {
|
|
|
17123
17337
|
init_validation_primitives();
|
|
17124
17338
|
});
|
|
17125
17339
|
|
|
17340
|
+
// ../../packages/document-api/src/protection/protection.ts
|
|
17341
|
+
function validateSetEditingRestrictionInput(input) {
|
|
17342
|
+
if (!input || typeof input !== "object") {
|
|
17343
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "protection.setEditingRestriction requires an object with a mode property.");
|
|
17344
|
+
}
|
|
17345
|
+
const { mode } = input;
|
|
17346
|
+
if (!VALID_SET_MODES.has(mode)) {
|
|
17347
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `protection.setEditingRestriction mode must be 'readOnly'. Received: '${String(mode)}'.`);
|
|
17348
|
+
}
|
|
17349
|
+
}
|
|
17350
|
+
function executeProtectionGet(adapter, _input) {
|
|
17351
|
+
return adapter.get();
|
|
17352
|
+
}
|
|
17353
|
+
function executeSetEditingRestriction(adapter, input, options) {
|
|
17354
|
+
validateSetEditingRestrictionInput(input);
|
|
17355
|
+
return adapter.setEditingRestriction(input, normalizeMutationOptions(options));
|
|
17356
|
+
}
|
|
17357
|
+
function executeClearEditingRestriction(adapter, _input, options) {
|
|
17358
|
+
return adapter.clearEditingRestriction(undefined, normalizeMutationOptions(options));
|
|
17359
|
+
}
|
|
17360
|
+
var VALID_SET_MODES;
|
|
17361
|
+
var init_protection = __esm(() => {
|
|
17362
|
+
init_errors2();
|
|
17363
|
+
VALID_SET_MODES = new Set(["readOnly"]);
|
|
17364
|
+
});
|
|
17365
|
+
|
|
17366
|
+
// ../../packages/document-api/src/permission-ranges/permission-ranges.ts
|
|
17367
|
+
function validatePrincipal(principal, operationName) {
|
|
17368
|
+
if (!principal || typeof principal !== "object") {
|
|
17369
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} requires a principal object with a 'kind' property.`);
|
|
17370
|
+
}
|
|
17371
|
+
const p = principal;
|
|
17372
|
+
if (p.kind === "everyone")
|
|
17373
|
+
return;
|
|
17374
|
+
if (p.kind === "editor") {
|
|
17375
|
+
if (typeof p.id !== "string" || p.id.length === 0) {
|
|
17376
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} editor principal requires a non-empty id string.`);
|
|
17377
|
+
}
|
|
17378
|
+
return;
|
|
17379
|
+
}
|
|
17380
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} principal kind must be 'everyone' or 'editor'. Received: '${String(p.kind)}'.`);
|
|
17381
|
+
}
|
|
17382
|
+
function requireNonEmptyId(id, operationName) {
|
|
17383
|
+
if (typeof id !== "string" || id.length === 0) {
|
|
17384
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} requires a non-empty id string.`);
|
|
17385
|
+
}
|
|
17386
|
+
}
|
|
17387
|
+
function executePermissionRangesList(adapter, input) {
|
|
17388
|
+
return adapter.list(input);
|
|
17389
|
+
}
|
|
17390
|
+
function executePermissionRangesGet(adapter, input) {
|
|
17391
|
+
requireNonEmptyId(input?.id, "permissionRanges.get");
|
|
17392
|
+
return adapter.get(input);
|
|
17393
|
+
}
|
|
17394
|
+
function executePermissionRangesCreate(adapter, input, options) {
|
|
17395
|
+
if (!input || typeof input !== "object") {
|
|
17396
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "permissionRanges.create requires an input object.");
|
|
17397
|
+
}
|
|
17398
|
+
const { target, principal } = input;
|
|
17399
|
+
if (!target || typeof target !== "object") {
|
|
17400
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "permissionRanges.create target must be a SelectionTarget object.");
|
|
17401
|
+
}
|
|
17402
|
+
if (target.kind !== "selection" || !target.start || !target.end) {
|
|
17403
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "permissionRanges.create target must have kind 'selection' with start and end points.");
|
|
17404
|
+
}
|
|
17405
|
+
validatePrincipal(principal, "permissionRanges.create");
|
|
17406
|
+
if (input.id !== undefined) {
|
|
17407
|
+
requireNonEmptyId(input.id, "permissionRanges.create");
|
|
17408
|
+
}
|
|
17409
|
+
return adapter.create(input, normalizeMutationOptions(options));
|
|
17410
|
+
}
|
|
17411
|
+
function executePermissionRangesRemove(adapter, input, options) {
|
|
17412
|
+
requireNonEmptyId(input?.id, "permissionRanges.remove");
|
|
17413
|
+
return adapter.remove(input, normalizeMutationOptions(options));
|
|
17414
|
+
}
|
|
17415
|
+
function executePermissionRangesUpdatePrincipal(adapter, input, options) {
|
|
17416
|
+
requireNonEmptyId(input?.id, "permissionRanges.updatePrincipal");
|
|
17417
|
+
validatePrincipal(input?.principal, "permissionRanges.updatePrincipal");
|
|
17418
|
+
return adapter.updatePrincipal(input, normalizeMutationOptions(options));
|
|
17419
|
+
}
|
|
17420
|
+
var init_permission_ranges = __esm(() => {
|
|
17421
|
+
init_errors2();
|
|
17422
|
+
});
|
|
17423
|
+
|
|
17126
17424
|
// ../../packages/document-api/src/footnotes/footnotes.ts
|
|
17127
17425
|
function validateFootnoteTarget(target, operationName) {
|
|
17128
17426
|
assertTargetPresent(target, operationName);
|
|
@@ -17538,6 +17836,9 @@ var init_authorities = __esm(() => {
|
|
|
17538
17836
|
init_create_location_validator();
|
|
17539
17837
|
});
|
|
17540
17838
|
|
|
17839
|
+
// ../../packages/document-api/src/protection/protection.types.ts
|
|
17840
|
+
var init_protection_types = () => {};
|
|
17841
|
+
|
|
17541
17842
|
// ../../packages/document-api/src/index.ts
|
|
17542
17843
|
function executeQueryMatch(adapter, input) {
|
|
17543
17844
|
if (!input || typeof input !== "object") {
|
|
@@ -18696,6 +18997,34 @@ function createDocumentApi(adapters) {
|
|
|
18696
18997
|
return executeHistoryRedo(adapters.history);
|
|
18697
18998
|
}
|
|
18698
18999
|
},
|
|
19000
|
+
protection: {
|
|
19001
|
+
get(input) {
|
|
19002
|
+
return executeProtectionGet(adapters.protection, input);
|
|
19003
|
+
},
|
|
19004
|
+
setEditingRestriction(input, options) {
|
|
19005
|
+
return executeSetEditingRestriction(adapters.protection, input, options);
|
|
19006
|
+
},
|
|
19007
|
+
clearEditingRestriction(input, options) {
|
|
19008
|
+
return executeClearEditingRestriction(adapters.protection, input, options);
|
|
19009
|
+
}
|
|
19010
|
+
},
|
|
19011
|
+
permissionRanges: {
|
|
19012
|
+
list(input) {
|
|
19013
|
+
return executePermissionRangesList(adapters.permissionRanges, input);
|
|
19014
|
+
},
|
|
19015
|
+
get(input) {
|
|
19016
|
+
return executePermissionRangesGet(adapters.permissionRanges, input);
|
|
19017
|
+
},
|
|
19018
|
+
create(input, options) {
|
|
19019
|
+
return executePermissionRangesCreate(adapters.permissionRanges, input, options);
|
|
19020
|
+
},
|
|
19021
|
+
remove(input, options) {
|
|
19022
|
+
return executePermissionRangesRemove(adapters.permissionRanges, input, options);
|
|
19023
|
+
},
|
|
19024
|
+
updatePrincipal(input, options) {
|
|
19025
|
+
return executePermissionRangesUpdatePrincipal(adapters.permissionRanges, input, options);
|
|
19026
|
+
}
|
|
19027
|
+
},
|
|
18699
19028
|
invoke(request) {
|
|
18700
19029
|
if (!Object.prototype.hasOwnProperty.call(dispatch, request.operationId)) {
|
|
18701
19030
|
throw new Error(`Unknown operationId: "${request.operationId}"`);
|
|
@@ -18740,6 +19069,8 @@ var init_src = __esm(() => {
|
|
|
18740
19069
|
init_hyperlinks();
|
|
18741
19070
|
init_content_controls();
|
|
18742
19071
|
init_bookmarks();
|
|
19072
|
+
init_protection();
|
|
19073
|
+
init_permission_ranges();
|
|
18743
19074
|
init_footnotes();
|
|
18744
19075
|
init_cross_refs();
|
|
18745
19076
|
init_index();
|
|
@@ -18761,6 +19092,7 @@ var init_src = __esm(() => {
|
|
|
18761
19092
|
init_contract();
|
|
18762
19093
|
init_capabilities();
|
|
18763
19094
|
init_inline_semantics();
|
|
19095
|
+
init_protection_types();
|
|
18764
19096
|
ADAPTER_GATED_PREFIXES = [
|
|
18765
19097
|
"bookmarks",
|
|
18766
19098
|
"footnotes",
|
|
@@ -41952,6 +42284,42 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
41952
42284
|
required: ["contextId", "closed"]
|
|
41953
42285
|
}
|
|
41954
42286
|
},
|
|
42287
|
+
insertTab: {
|
|
42288
|
+
category: "core",
|
|
42289
|
+
description: "Insert a real Word tab node at a collapsed text insertion point. Accepts the same target/ref shortcuts as insert, but only for point inserts.",
|
|
42290
|
+
requiresDocumentContext: false,
|
|
42291
|
+
tokenOverride: ["insert", "tab"],
|
|
42292
|
+
sdkMetadata: { mutates: true, idempotency: "non-idempotent", supportsTrackedMode: false, supportsDryRun: false },
|
|
42293
|
+
outputSchema: {
|
|
42294
|
+
type: "object",
|
|
42295
|
+
properties: {
|
|
42296
|
+
document: { type: "object" },
|
|
42297
|
+
receipt: { type: "object" },
|
|
42298
|
+
inserted: { type: "object" },
|
|
42299
|
+
context: { type: "object" },
|
|
42300
|
+
output: { type: "object" }
|
|
42301
|
+
},
|
|
42302
|
+
required: ["receipt", "inserted"]
|
|
42303
|
+
}
|
|
42304
|
+
},
|
|
42305
|
+
insertLineBreak: {
|
|
42306
|
+
category: "core",
|
|
42307
|
+
description: "Insert a real Word line-break node at a collapsed text insertion point. Accepts the same target/ref shortcuts as insert, but only for point inserts.",
|
|
42308
|
+
requiresDocumentContext: false,
|
|
42309
|
+
tokenOverride: ["insert", "line-break"],
|
|
42310
|
+
sdkMetadata: { mutates: true, idempotency: "non-idempotent", supportsTrackedMode: false, supportsDryRun: false },
|
|
42311
|
+
outputSchema: {
|
|
42312
|
+
type: "object",
|
|
42313
|
+
properties: {
|
|
42314
|
+
document: { type: "object" },
|
|
42315
|
+
receipt: { type: "object" },
|
|
42316
|
+
inserted: { type: "object" },
|
|
42317
|
+
context: { type: "object" },
|
|
42318
|
+
output: { type: "object" }
|
|
42319
|
+
},
|
|
42320
|
+
required: ["receipt", "inserted"]
|
|
42321
|
+
}
|
|
42322
|
+
},
|
|
41955
42323
|
status: {
|
|
41956
42324
|
category: "session",
|
|
41957
42325
|
description: "Show the current session status and document metadata.",
|
|
@@ -42156,6 +42524,8 @@ var init_types4 = __esm(() => {
|
|
|
42156
42524
|
"open",
|
|
42157
42525
|
"save",
|
|
42158
42526
|
"close",
|
|
42527
|
+
"insertTab",
|
|
42528
|
+
"insertLineBreak",
|
|
42159
42529
|
"status",
|
|
42160
42530
|
"describe",
|
|
42161
42531
|
"describeCommand",
|
|
@@ -62964,7 +63334,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
|
|
|
62964
63334
|
emptyOptions2 = {};
|
|
62965
63335
|
});
|
|
62966
63336
|
|
|
62967
|
-
// ../../packages/superdoc/dist/chunks/SuperConverter-
|
|
63337
|
+
// ../../packages/superdoc/dist/chunks/SuperConverter-CMIR0kxi.es.js
|
|
62968
63338
|
function getExtensionConfigField(extension$1, field, context = { name: "" }) {
|
|
62969
63339
|
const fieldValue = extension$1.config[field];
|
|
62970
63340
|
if (typeof fieldValue === "function")
|
|
@@ -67660,7 +68030,15 @@ function buildDispatchTable2(api) {
|
|
|
67660
68030
|
"authorities.entries.remove": (input, options) => api.authorities.entries.remove(input, options),
|
|
67661
68031
|
"diff.capture": () => api.diff.capture(),
|
|
67662
68032
|
"diff.compare": (input) => api.diff.compare(input),
|
|
67663
|
-
"diff.apply": (input, options) => api.diff.apply(input, options)
|
|
68033
|
+
"diff.apply": (input, options) => api.diff.apply(input, options),
|
|
68034
|
+
"protection.get": (input) => api.protection.get(input),
|
|
68035
|
+
"protection.setEditingRestriction": (input, options) => api.protection.setEditingRestriction(input, options),
|
|
68036
|
+
"protection.clearEditingRestriction": (input, options) => api.protection.clearEditingRestriction(input, options),
|
|
68037
|
+
"permissionRanges.list": (input) => api.permissionRanges.list(input),
|
|
68038
|
+
"permissionRanges.get": (input) => api.permissionRanges.get(input),
|
|
68039
|
+
"permissionRanges.create": (input, options) => api.permissionRanges.create(input, options),
|
|
68040
|
+
"permissionRanges.remove": (input, options) => api.permissionRanges.remove(input, options),
|
|
68041
|
+
"permissionRanges.updatePrincipal": (input, options) => api.permissionRanges.updatePrincipal(input, options)
|
|
67664
68042
|
};
|
|
67665
68043
|
}
|
|
67666
68044
|
function executeHistoryGet2(adapter) {
|
|
@@ -69199,6 +69577,69 @@ function executeBookmarksRemove2(adapter, input, options) {
|
|
|
69199
69577
|
validateBookmarkTarget2(input.target, "bookmarks.remove");
|
|
69200
69578
|
return adapter.remove(input, normalizeMutationOptions2(options));
|
|
69201
69579
|
}
|
|
69580
|
+
function validateSetEditingRestrictionInput2(input) {
|
|
69581
|
+
if (!input || typeof input !== "object")
|
|
69582
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "protection.setEditingRestriction requires an object with a mode property.");
|
|
69583
|
+
const { mode } = input;
|
|
69584
|
+
if (!VALID_SET_MODES2.has(mode))
|
|
69585
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `protection.setEditingRestriction mode must be 'readOnly'. Received: '${String(mode)}'.`);
|
|
69586
|
+
}
|
|
69587
|
+
function executeProtectionGet2(adapter, _input) {
|
|
69588
|
+
return adapter.get();
|
|
69589
|
+
}
|
|
69590
|
+
function executeSetEditingRestriction2(adapter, input, options) {
|
|
69591
|
+
validateSetEditingRestrictionInput2(input);
|
|
69592
|
+
return adapter.setEditingRestriction(input, normalizeMutationOptions2(options));
|
|
69593
|
+
}
|
|
69594
|
+
function executeClearEditingRestriction2(adapter, _input, options) {
|
|
69595
|
+
return adapter.clearEditingRestriction(undefined, normalizeMutationOptions2(options));
|
|
69596
|
+
}
|
|
69597
|
+
function validatePrincipal2(principal, operationName) {
|
|
69598
|
+
if (!principal || typeof principal !== "object")
|
|
69599
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} requires a principal object with a 'kind' property.`);
|
|
69600
|
+
const p = principal;
|
|
69601
|
+
if (p.kind === "everyone")
|
|
69602
|
+
return;
|
|
69603
|
+
if (p.kind === "editor") {
|
|
69604
|
+
if (typeof p.id !== "string" || p.id.length === 0)
|
|
69605
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} editor principal requires a non-empty id string.`);
|
|
69606
|
+
return;
|
|
69607
|
+
}
|
|
69608
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} principal kind must be 'everyone' or 'editor'. Received: '${String(p.kind)}'.`);
|
|
69609
|
+
}
|
|
69610
|
+
function requireNonEmptyId2(id2, operationName) {
|
|
69611
|
+
if (typeof id2 !== "string" || id2.length === 0)
|
|
69612
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} requires a non-empty id string.`);
|
|
69613
|
+
}
|
|
69614
|
+
function executePermissionRangesList2(adapter, input) {
|
|
69615
|
+
return adapter.list(input);
|
|
69616
|
+
}
|
|
69617
|
+
function executePermissionRangesGet2(adapter, input) {
|
|
69618
|
+
requireNonEmptyId2(input?.id, "permissionRanges.get");
|
|
69619
|
+
return adapter.get(input);
|
|
69620
|
+
}
|
|
69621
|
+
function executePermissionRangesCreate2(adapter, input, options) {
|
|
69622
|
+
if (!input || typeof input !== "object")
|
|
69623
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "permissionRanges.create requires an input object.");
|
|
69624
|
+
const { target, principal } = input;
|
|
69625
|
+
if (!target || typeof target !== "object")
|
|
69626
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "permissionRanges.create target must be a SelectionTarget object.");
|
|
69627
|
+
if (target.kind !== "selection" || !target.start || !target.end)
|
|
69628
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "permissionRanges.create target must have kind 'selection' with start and end points.");
|
|
69629
|
+
validatePrincipal2(principal, "permissionRanges.create");
|
|
69630
|
+
if (input.id !== undefined)
|
|
69631
|
+
requireNonEmptyId2(input.id, "permissionRanges.create");
|
|
69632
|
+
return adapter.create(input, normalizeMutationOptions2(options));
|
|
69633
|
+
}
|
|
69634
|
+
function executePermissionRangesRemove2(adapter, input, options) {
|
|
69635
|
+
requireNonEmptyId2(input?.id, "permissionRanges.remove");
|
|
69636
|
+
return adapter.remove(input, normalizeMutationOptions2(options));
|
|
69637
|
+
}
|
|
69638
|
+
function executePermissionRangesUpdatePrincipal2(adapter, input, options) {
|
|
69639
|
+
requireNonEmptyId2(input?.id, "permissionRanges.updatePrincipal");
|
|
69640
|
+
validatePrincipal2(input?.principal, "permissionRanges.updatePrincipal");
|
|
69641
|
+
return adapter.updatePrincipal(input, normalizeMutationOptions2(options));
|
|
69642
|
+
}
|
|
69202
69643
|
function validateFootnoteTarget2(target, operationName) {
|
|
69203
69644
|
assertTargetPresent2(target, operationName);
|
|
69204
69645
|
const t = target;
|
|
@@ -70692,6 +71133,34 @@ function createDocumentApi2(adapters) {
|
|
|
70692
71133
|
return executeHistoryRedo2(adapters.history);
|
|
70693
71134
|
}
|
|
70694
71135
|
},
|
|
71136
|
+
protection: {
|
|
71137
|
+
get(input) {
|
|
71138
|
+
return executeProtectionGet2(adapters.protection, input);
|
|
71139
|
+
},
|
|
71140
|
+
setEditingRestriction(input, options) {
|
|
71141
|
+
return executeSetEditingRestriction2(adapters.protection, input, options);
|
|
71142
|
+
},
|
|
71143
|
+
clearEditingRestriction(input, options) {
|
|
71144
|
+
return executeClearEditingRestriction2(adapters.protection, input, options);
|
|
71145
|
+
}
|
|
71146
|
+
},
|
|
71147
|
+
permissionRanges: {
|
|
71148
|
+
list(input) {
|
|
71149
|
+
return executePermissionRangesList2(adapters.permissionRanges, input);
|
|
71150
|
+
},
|
|
71151
|
+
get(input) {
|
|
71152
|
+
return executePermissionRangesGet2(adapters.permissionRanges, input);
|
|
71153
|
+
},
|
|
71154
|
+
create(input, options) {
|
|
71155
|
+
return executePermissionRangesCreate2(adapters.permissionRanges, input, options);
|
|
71156
|
+
},
|
|
71157
|
+
remove(input, options) {
|
|
71158
|
+
return executePermissionRangesRemove2(adapters.permissionRanges, input, options);
|
|
71159
|
+
},
|
|
71160
|
+
updatePrincipal(input, options) {
|
|
71161
|
+
return executePermissionRangesUpdatePrincipal2(adapters.permissionRanges, input, options);
|
|
71162
|
+
}
|
|
71163
|
+
},
|
|
70695
71164
|
invoke(request) {
|
|
70696
71165
|
if (!Object.prototype.hasOwnProperty.call(dispatch, request.operationId))
|
|
70697
71166
|
throw new Error(`Unknown operationId: "${request.operationId}"`);
|
|
@@ -94135,6 +94604,253 @@ function compoundMutation(request) {
|
|
|
94135
94604
|
state._partPublisher?.flush();
|
|
94136
94605
|
return { success };
|
|
94137
94606
|
}
|
|
94607
|
+
function findSettingsRoot(part) {
|
|
94608
|
+
if (part.name === "w:settings")
|
|
94609
|
+
return part;
|
|
94610
|
+
if (!Array.isArray(part.elements))
|
|
94611
|
+
return null;
|
|
94612
|
+
return part.elements.find((entry) => entry.name === "w:settings") ?? null;
|
|
94613
|
+
}
|
|
94614
|
+
function ensureSettingsRootElements(settingsRoot) {
|
|
94615
|
+
if (!Array.isArray(settingsRoot.elements))
|
|
94616
|
+
settingsRoot.elements = [];
|
|
94617
|
+
return settingsRoot.elements;
|
|
94618
|
+
}
|
|
94619
|
+
function readSettingsRoot(converter) {
|
|
94620
|
+
const part = converter.convertedXml?.[SETTINGS_PART_PATH];
|
|
94621
|
+
if (!part)
|
|
94622
|
+
return null;
|
|
94623
|
+
return findSettingsRoot(part);
|
|
94624
|
+
}
|
|
94625
|
+
function ensureSettingsRoot(part) {
|
|
94626
|
+
const settingsRoot = findSettingsRoot(part);
|
|
94627
|
+
if (settingsRoot)
|
|
94628
|
+
return settingsRoot;
|
|
94629
|
+
const fallbackRoot = {
|
|
94630
|
+
type: "element",
|
|
94631
|
+
name: "w:settings",
|
|
94632
|
+
elements: []
|
|
94633
|
+
};
|
|
94634
|
+
if (!Array.isArray(part.elements))
|
|
94635
|
+
part.elements = [];
|
|
94636
|
+
part.elements.push(fallbackRoot);
|
|
94637
|
+
return fallbackRoot;
|
|
94638
|
+
}
|
|
94639
|
+
function readDefaultTableStyle(settingsRoot) {
|
|
94640
|
+
const el = settingsRoot.elements?.find((entry) => entry.name === "w:defaultTableStyle");
|
|
94641
|
+
if (!el)
|
|
94642
|
+
return null;
|
|
94643
|
+
const val = el.attributes?.["w:val"];
|
|
94644
|
+
return typeof val === "string" && val.length > 0 ? val : null;
|
|
94645
|
+
}
|
|
94646
|
+
function setDefaultTableStyle(settingsRoot, styleId) {
|
|
94647
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94648
|
+
const idx = elements.findIndex((entry) => entry.name === "w:defaultTableStyle");
|
|
94649
|
+
const newEl = {
|
|
94650
|
+
type: "element",
|
|
94651
|
+
name: "w:defaultTableStyle",
|
|
94652
|
+
attributes: { "w:val": styleId },
|
|
94653
|
+
elements: []
|
|
94654
|
+
};
|
|
94655
|
+
if (idx !== -1)
|
|
94656
|
+
elements[idx] = newEl;
|
|
94657
|
+
else
|
|
94658
|
+
elements.push(newEl);
|
|
94659
|
+
}
|
|
94660
|
+
function removeDefaultTableStyle(settingsRoot) {
|
|
94661
|
+
settingsRoot.elements = ensureSettingsRootElements(settingsRoot).filter((entry) => entry.name !== "w:defaultTableStyle");
|
|
94662
|
+
}
|
|
94663
|
+
function hasOddEvenHeadersFooters(settingsRoot) {
|
|
94664
|
+
return settingsRoot.elements?.some((entry) => entry.name === "w:evenAndOddHeaders") === true;
|
|
94665
|
+
}
|
|
94666
|
+
function setOddEvenHeadersFooters(settingsRoot, enabled) {
|
|
94667
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94668
|
+
const hadFlag = hasOddEvenHeadersFooters(settingsRoot);
|
|
94669
|
+
if (enabled) {
|
|
94670
|
+
if (!hadFlag)
|
|
94671
|
+
elements.push({
|
|
94672
|
+
type: "element",
|
|
94673
|
+
name: "w:evenAndOddHeaders",
|
|
94674
|
+
elements: []
|
|
94675
|
+
});
|
|
94676
|
+
} else
|
|
94677
|
+
settingsRoot.elements = elements.filter((entry) => entry.name !== "w:evenAndOddHeaders");
|
|
94678
|
+
return hadFlag !== hasOddEvenHeadersFooters(settingsRoot);
|
|
94679
|
+
}
|
|
94680
|
+
function hasUpdateFields(settingsRoot) {
|
|
94681
|
+
const el = settingsRoot.elements?.find((entry) => entry.name === "w:updateFields");
|
|
94682
|
+
if (!el)
|
|
94683
|
+
return false;
|
|
94684
|
+
const val = el.attributes?.["w:val"];
|
|
94685
|
+
return val === "true" || val === "1" || val === true;
|
|
94686
|
+
}
|
|
94687
|
+
function setUpdateFields(settingsRoot, enabled) {
|
|
94688
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94689
|
+
const idx = elements.findIndex((entry) => entry.name === "w:updateFields");
|
|
94690
|
+
if (enabled) {
|
|
94691
|
+
const newEl = {
|
|
94692
|
+
type: "element",
|
|
94693
|
+
name: "w:updateFields",
|
|
94694
|
+
attributes: { "w:val": "true" },
|
|
94695
|
+
elements: []
|
|
94696
|
+
};
|
|
94697
|
+
if (idx !== -1)
|
|
94698
|
+
elements[idx] = newEl;
|
|
94699
|
+
else
|
|
94700
|
+
elements.push(newEl);
|
|
94701
|
+
} else if (idx !== -1)
|
|
94702
|
+
elements.splice(idx, 1);
|
|
94703
|
+
}
|
|
94704
|
+
function isXmlTrue(value) {
|
|
94705
|
+
return value === "1" || value === 1 || value === "true" || value === "on" || value === true;
|
|
94706
|
+
}
|
|
94707
|
+
function hasVerifierFields(attrs) {
|
|
94708
|
+
return !!(attrs["w:cryptAlgorithmSid"] || attrs["w:hash"] || attrs["w:salt"] || attrs["w:cryptProviderType"] || attrs["w:cryptAlgorithmType"] || attrs["w:cryptAlgorithmClass"] || attrs["w:cryptSpinCount"]);
|
|
94709
|
+
}
|
|
94710
|
+
function parseProtectionState(settingsRoot) {
|
|
94711
|
+
if (!settingsRoot)
|
|
94712
|
+
return { ...DEFAULT_PROTECTION_STATE };
|
|
94713
|
+
const elements = settingsRoot.elements ?? [];
|
|
94714
|
+
const docProtEl = elements.find((el) => el.name === "w:documentProtection");
|
|
94715
|
+
const dpAttrs = docProtEl?.attributes ?? {};
|
|
94716
|
+
const rawMode = dpAttrs["w:edit"];
|
|
94717
|
+
const mode = rawMode && VALID_EDIT_MODES.has(rawMode) ? rawMode : "none";
|
|
94718
|
+
const enforced = isXmlTrue(dpAttrs["w:enforcement"]);
|
|
94719
|
+
const formattingRestricted = isXmlTrue(dpAttrs["w:formatting"]);
|
|
94720
|
+
const passwordProtected = docProtEl ? hasVerifierFields(dpAttrs) : false;
|
|
94721
|
+
const runtimeEnforced = mode === "readOnly" && enforced;
|
|
94722
|
+
const writeProt = elements.find((el) => el.name === "w:writeProtection");
|
|
94723
|
+
const wpAttrs = writeProt?.attributes ?? {};
|
|
94724
|
+
const writeEnabled = !!writeProt;
|
|
94725
|
+
const writePasswordProtected = writeProt ? hasVerifierFields(wpAttrs) : false;
|
|
94726
|
+
const readOnlyRecommended = isXmlTrue(wpAttrs["w:recommended"]);
|
|
94727
|
+
return {
|
|
94728
|
+
editingRestriction: {
|
|
94729
|
+
mode,
|
|
94730
|
+
enforced,
|
|
94731
|
+
runtimeEnforced,
|
|
94732
|
+
passwordProtected,
|
|
94733
|
+
formattingRestricted
|
|
94734
|
+
},
|
|
94735
|
+
writeProtection: {
|
|
94736
|
+
enabled: writeEnabled,
|
|
94737
|
+
passwordProtected: writePasswordProtected
|
|
94738
|
+
},
|
|
94739
|
+
readOnlyRecommended
|
|
94740
|
+
};
|
|
94741
|
+
}
|
|
94742
|
+
function setDocumentProtection(settingsRoot, opts) {
|
|
94743
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94744
|
+
const idx = elements.findIndex((el) => el.name === "w:documentProtection");
|
|
94745
|
+
const attrs = {
|
|
94746
|
+
...idx !== -1 ? { ...elements[idx].attributes ?? {} } : {},
|
|
94747
|
+
"w:edit": opts.mode,
|
|
94748
|
+
"w:enforcement": opts.enforced ? "1" : "0"
|
|
94749
|
+
};
|
|
94750
|
+
if (opts.formattingRestricted !== undefined)
|
|
94751
|
+
attrs["w:formatting"] = opts.formattingRestricted ? "1" : "0";
|
|
94752
|
+
const newEl = {
|
|
94753
|
+
type: "element",
|
|
94754
|
+
name: "w:documentProtection",
|
|
94755
|
+
attributes: attrs,
|
|
94756
|
+
elements: []
|
|
94757
|
+
};
|
|
94758
|
+
if (idx !== -1)
|
|
94759
|
+
elements[idx] = newEl;
|
|
94760
|
+
else
|
|
94761
|
+
elements.push(newEl);
|
|
94762
|
+
}
|
|
94763
|
+
function clearDocumentProtectionEnforcement(settingsRoot) {
|
|
94764
|
+
const el = (settingsRoot.elements ?? []).find((e) => e.name === "w:documentProtection");
|
|
94765
|
+
if (!el)
|
|
94766
|
+
return;
|
|
94767
|
+
if (!el.attributes)
|
|
94768
|
+
el.attributes = {};
|
|
94769
|
+
el.attributes["w:enforcement"] = "0";
|
|
94770
|
+
}
|
|
94771
|
+
function getProtectionStorage(editor) {
|
|
94772
|
+
return editor?.storage?.protection;
|
|
94773
|
+
}
|
|
94774
|
+
function isReadOnlyProtectionRuntimeEnforced(editor) {
|
|
94775
|
+
const storage = getProtectionStorage(editor);
|
|
94776
|
+
if (!storage?.initialized)
|
|
94777
|
+
return false;
|
|
94778
|
+
return storage.state?.editingRestriction?.runtimeEnforced === true;
|
|
94779
|
+
}
|
|
94780
|
+
function applyEffectiveEditability(editor, opts = {}) {
|
|
94781
|
+
if (!editor || editor.isDestroyed)
|
|
94782
|
+
return;
|
|
94783
|
+
if (opts.refilterRanges !== false)
|
|
94784
|
+
refilterAllowedRanges(editor);
|
|
94785
|
+
const protectionEnforced = isReadOnlyProtectionRuntimeEnforced(editor);
|
|
94786
|
+
const hasAllowedRanges = editor.storage?.permissionRanges?.hasAllowedRanges === true;
|
|
94787
|
+
const documentMode = editor.options?.documentMode;
|
|
94788
|
+
const storage = getProtectionStorage(editor);
|
|
94789
|
+
if (protectionEnforced) {
|
|
94790
|
+
if (storage && storage.editableBaseline === null)
|
|
94791
|
+
storage.editableBaseline = editor.isEditable;
|
|
94792
|
+
const shouldBeEditable = hasAllowedRanges;
|
|
94793
|
+
if (editor.isEditable !== shouldBeEditable)
|
|
94794
|
+
editor.setEditable(shouldBeEditable, false);
|
|
94795
|
+
} else {
|
|
94796
|
+
const baseline = storage?.editableBaseline ?? null;
|
|
94797
|
+
if (storage)
|
|
94798
|
+
storage.editableBaseline = null;
|
|
94799
|
+
if (documentMode === "viewing") {
|
|
94800
|
+
if (editor.isEditable !== false)
|
|
94801
|
+
editor.setEditable(false, false);
|
|
94802
|
+
} else if (baseline !== null && editor.isEditable !== baseline)
|
|
94803
|
+
editor.setEditable(baseline, false);
|
|
94804
|
+
}
|
|
94805
|
+
}
|
|
94806
|
+
function refilterAllowedRanges(editor) {
|
|
94807
|
+
const storage = editor?.storage?.permissionRanges;
|
|
94808
|
+
if (!storage)
|
|
94809
|
+
return;
|
|
94810
|
+
const allRanges = storage.allRanges;
|
|
94811
|
+
if (!Array.isArray(allRanges))
|
|
94812
|
+
return;
|
|
94813
|
+
if (!isReadOnlyProtectionRuntimeEnforced(editor)) {
|
|
94814
|
+
storage.allowedRanges = [];
|
|
94815
|
+
storage.hasAllowedRanges = false;
|
|
94816
|
+
storage.ranges = [];
|
|
94817
|
+
return;
|
|
94818
|
+
}
|
|
94819
|
+
const allowedIdentifiers = buildAllowedIdentifierSetFromEditor(editor);
|
|
94820
|
+
const filtered = allRanges.filter((entry) => isRangeAllowedForPrincipal(entry, allowedIdentifiers));
|
|
94821
|
+
storage.allowedRanges = filtered;
|
|
94822
|
+
storage.hasAllowedRanges = filtered.length > 0;
|
|
94823
|
+
storage.ranges = filtered;
|
|
94824
|
+
}
|
|
94825
|
+
function buildAllowedIdentifierSetFromEditor(editor) {
|
|
94826
|
+
const user = editor?.options?.user;
|
|
94827
|
+
if (!user)
|
|
94828
|
+
return /* @__PURE__ */ new Set;
|
|
94829
|
+
const principals = user.permissionPrincipals;
|
|
94830
|
+
if (Array.isArray(principals))
|
|
94831
|
+
return new Set(principals.map((p) => typeof p === "string" ? p.trim().toLowerCase() : "").filter(Boolean));
|
|
94832
|
+
const email = typeof user.email === "string" ? user.email.trim().toLowerCase() : "";
|
|
94833
|
+
if (!email)
|
|
94834
|
+
return /* @__PURE__ */ new Set;
|
|
94835
|
+
const [localPart, domain2] = email.split("@");
|
|
94836
|
+
if (!localPart || !domain2)
|
|
94837
|
+
return /* @__PURE__ */ new Set;
|
|
94838
|
+
return new Set([`${domain2}\\${localPart}`]);
|
|
94839
|
+
}
|
|
94840
|
+
function isRangeAllowedForPrincipal(entry, allowedIdentifiers) {
|
|
94841
|
+
if (entry.principal) {
|
|
94842
|
+
if (entry.principal.kind === "everyone")
|
|
94843
|
+
return true;
|
|
94844
|
+
if (entry.principal.kind === "editor") {
|
|
94845
|
+
const id2 = typeof entry.principal.id === "string" ? entry.principal.id.trim().toLowerCase() : "";
|
|
94846
|
+
return id2 ? allowedIdentifiers.has(id2) : false;
|
|
94847
|
+
}
|
|
94848
|
+
}
|
|
94849
|
+
if ((typeof entry.edGrp === "string" ? entry.edGrp.trim().toLowerCase() : "") === "everyone")
|
|
94850
|
+
return true;
|
|
94851
|
+
const ed = typeof entry.ed === "string" ? entry.ed.trim().toLowerCase() : "";
|
|
94852
|
+
return ed ? allowedIdentifiers.has(ed) : false;
|
|
94853
|
+
}
|
|
94138
94854
|
function handleNumberingInvalidation(editor, _event) {
|
|
94139
94855
|
try {
|
|
94140
94856
|
editor.view?.dispatch?.(editor.state.tr);
|
|
@@ -94155,11 +94871,29 @@ function handleNotesInvalidation(editor, _event) {
|
|
|
94155
94871
|
editor.view?.dispatch?.(tr);
|
|
94156
94872
|
} catch {}
|
|
94157
94873
|
}
|
|
94874
|
+
function handleSettingsInvalidation(editor, event) {
|
|
94875
|
+
if (event.source.startsWith("protection."))
|
|
94876
|
+
return;
|
|
94877
|
+
const converter = editor.converter;
|
|
94878
|
+
if (!converter)
|
|
94879
|
+
return;
|
|
94880
|
+
const newState = parseProtectionState(readSettingsRoot(converter));
|
|
94881
|
+
const protStorage = getProtectionStorage(editor);
|
|
94882
|
+
if (protStorage)
|
|
94883
|
+
protStorage.state = newState;
|
|
94884
|
+
applyEffectiveEditability(editor);
|
|
94885
|
+
editor.emit("protectionChanged", {
|
|
94886
|
+
editor,
|
|
94887
|
+
state: newState,
|
|
94888
|
+
source: "remote-part-sync"
|
|
94889
|
+
});
|
|
94890
|
+
}
|
|
94158
94891
|
function registerStaticInvalidationHandlers() {
|
|
94159
94892
|
registerInvalidationHandler("word/numbering.xml", handleNumberingInvalidation);
|
|
94160
94893
|
registerInvalidationHandler("word/_rels/document.xml.rels", handleRelationshipsInvalidation);
|
|
94161
94894
|
registerInvalidationHandler("word/footnotes.xml", handleNotesInvalidation);
|
|
94162
94895
|
registerInvalidationHandler("word/endnotes.xml", handleNotesInvalidation);
|
|
94896
|
+
registerInvalidationHandler("word/settings.xml", handleSettingsInvalidation);
|
|
94163
94897
|
}
|
|
94164
94898
|
function registerHeaderFooterInvalidation(partId) {
|
|
94165
94899
|
registerInvalidationHandler(partId, handleHeaderFooterInvalidation);
|
|
@@ -96612,103 +97346,6 @@ function refreshAllStatFields(editor) {
|
|
|
96612
97346
|
}
|
|
96613
97347
|
return cacheMap;
|
|
96614
97348
|
}
|
|
96615
|
-
function findSettingsRoot(part) {
|
|
96616
|
-
if (part.name === "w:settings")
|
|
96617
|
-
return part;
|
|
96618
|
-
if (!Array.isArray(part.elements))
|
|
96619
|
-
return null;
|
|
96620
|
-
return part.elements.find((entry) => entry.name === "w:settings") ?? null;
|
|
96621
|
-
}
|
|
96622
|
-
function ensureSettingsRootElements(settingsRoot) {
|
|
96623
|
-
if (!Array.isArray(settingsRoot.elements))
|
|
96624
|
-
settingsRoot.elements = [];
|
|
96625
|
-
return settingsRoot.elements;
|
|
96626
|
-
}
|
|
96627
|
-
function readSettingsRoot(converter) {
|
|
96628
|
-
const part = converter.convertedXml?.[SETTINGS_PART_PATH];
|
|
96629
|
-
if (!part)
|
|
96630
|
-
return null;
|
|
96631
|
-
return findSettingsRoot(part);
|
|
96632
|
-
}
|
|
96633
|
-
function ensureSettingsRoot(part) {
|
|
96634
|
-
const settingsRoot = findSettingsRoot(part);
|
|
96635
|
-
if (settingsRoot)
|
|
96636
|
-
return settingsRoot;
|
|
96637
|
-
const fallbackRoot = {
|
|
96638
|
-
type: "element",
|
|
96639
|
-
name: "w:settings",
|
|
96640
|
-
elements: []
|
|
96641
|
-
};
|
|
96642
|
-
if (!Array.isArray(part.elements))
|
|
96643
|
-
part.elements = [];
|
|
96644
|
-
part.elements.push(fallbackRoot);
|
|
96645
|
-
return fallbackRoot;
|
|
96646
|
-
}
|
|
96647
|
-
function readDefaultTableStyle(settingsRoot) {
|
|
96648
|
-
const el = settingsRoot.elements?.find((entry) => entry.name === "w:defaultTableStyle");
|
|
96649
|
-
if (!el)
|
|
96650
|
-
return null;
|
|
96651
|
-
const val = el.attributes?.["w:val"];
|
|
96652
|
-
return typeof val === "string" && val.length > 0 ? val : null;
|
|
96653
|
-
}
|
|
96654
|
-
function setDefaultTableStyle(settingsRoot, styleId) {
|
|
96655
|
-
const elements = ensureSettingsRootElements(settingsRoot);
|
|
96656
|
-
const idx = elements.findIndex((entry) => entry.name === "w:defaultTableStyle");
|
|
96657
|
-
const newEl = {
|
|
96658
|
-
type: "element",
|
|
96659
|
-
name: "w:defaultTableStyle",
|
|
96660
|
-
attributes: { "w:val": styleId },
|
|
96661
|
-
elements: []
|
|
96662
|
-
};
|
|
96663
|
-
if (idx !== -1)
|
|
96664
|
-
elements[idx] = newEl;
|
|
96665
|
-
else
|
|
96666
|
-
elements.push(newEl);
|
|
96667
|
-
}
|
|
96668
|
-
function removeDefaultTableStyle(settingsRoot) {
|
|
96669
|
-
settingsRoot.elements = ensureSettingsRootElements(settingsRoot).filter((entry) => entry.name !== "w:defaultTableStyle");
|
|
96670
|
-
}
|
|
96671
|
-
function hasOddEvenHeadersFooters(settingsRoot) {
|
|
96672
|
-
return settingsRoot.elements?.some((entry) => entry.name === "w:evenAndOddHeaders") === true;
|
|
96673
|
-
}
|
|
96674
|
-
function setOddEvenHeadersFooters(settingsRoot, enabled) {
|
|
96675
|
-
const elements = ensureSettingsRootElements(settingsRoot);
|
|
96676
|
-
const hadFlag = hasOddEvenHeadersFooters(settingsRoot);
|
|
96677
|
-
if (enabled) {
|
|
96678
|
-
if (!hadFlag)
|
|
96679
|
-
elements.push({
|
|
96680
|
-
type: "element",
|
|
96681
|
-
name: "w:evenAndOddHeaders",
|
|
96682
|
-
elements: []
|
|
96683
|
-
});
|
|
96684
|
-
} else
|
|
96685
|
-
settingsRoot.elements = elements.filter((entry) => entry.name !== "w:evenAndOddHeaders");
|
|
96686
|
-
return hadFlag !== hasOddEvenHeadersFooters(settingsRoot);
|
|
96687
|
-
}
|
|
96688
|
-
function hasUpdateFields(settingsRoot) {
|
|
96689
|
-
const el = settingsRoot.elements?.find((entry) => entry.name === "w:updateFields");
|
|
96690
|
-
if (!el)
|
|
96691
|
-
return false;
|
|
96692
|
-
const val = el.attributes?.["w:val"];
|
|
96693
|
-
return val === "true" || val === "1" || val === true;
|
|
96694
|
-
}
|
|
96695
|
-
function setUpdateFields(settingsRoot, enabled) {
|
|
96696
|
-
const elements = ensureSettingsRootElements(settingsRoot);
|
|
96697
|
-
const idx = elements.findIndex((entry) => entry.name === "w:updateFields");
|
|
96698
|
-
if (enabled) {
|
|
96699
|
-
const newEl = {
|
|
96700
|
-
type: "element",
|
|
96701
|
-
name: "w:updateFields",
|
|
96702
|
-
attributes: { "w:val": "true" },
|
|
96703
|
-
elements: []
|
|
96704
|
-
};
|
|
96705
|
-
if (idx !== -1)
|
|
96706
|
-
elements[idx] = newEl;
|
|
96707
|
-
else
|
|
96708
|
-
elements.push(newEl);
|
|
96709
|
-
} else if (idx !== -1)
|
|
96710
|
-
elements.splice(idx, 1);
|
|
96711
|
-
}
|
|
96712
97349
|
function getLocalName(name) {
|
|
96713
97350
|
if (!name || typeof name !== "string")
|
|
96714
97351
|
return "";
|
|
@@ -99070,7 +99707,7 @@ var isRegExp = (value) => {
|
|
|
99070
99707
|
tracked: false,
|
|
99071
99708
|
carrier: runAttributeCarrier2(runPropertyKey ?? key),
|
|
99072
99709
|
schema
|
|
99073
|
-
}), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, PROPERTY_VALIDATOR_MAP2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_IMAGE_COMMAND2, T_CC_READ2, T_CC_MUTATION2, T_CC_TYPED2, T_CC_TYPED_READ2, T_CC_RAW2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_PARAGRAPH_MUTATION2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, T_HEADER_FOOTER_MUTATION2, T_STORY2, T_REF_READ_LIST2, T_REF_MUTATION2, T_REF_MUTATION_REMOVE2, T_REF_INSERT2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG3, PARAGRAPH_ALIGNMENTS2, TAB_STOP_ALIGNMENTS2, TAB_STOP_LEADERS2, BORDER_SIDES2, CLEAR_BORDER_SIDES2, LINE_RULES2, PARAGRAPH_DIRECTIONS2, ALIGNMENT_POLICIES2, PARAGRAPH_BLOCK_TYPES2, SET_STYLE_KEYS2, CLEAR_STYLE_KEYS2, RESET_DIRECT_FORMATTING_KEYS2, SET_ALIGNMENT_KEYS2, CLEAR_ALIGNMENT_KEYS2, SET_INDENTATION_KEYS2, CLEAR_INDENTATION_KEYS2, SET_SPACING_KEYS2, CLEAR_SPACING_KEYS2, SET_KEEP_OPTIONS_KEYS2, SET_OUTLINE_LEVEL_KEYS2, SET_FLOW_OPTIONS_KEYS2, SET_TAB_STOP_KEYS2, CLEAR_TAB_STOP_KEYS2, CLEAR_ALL_TAB_STOPS_KEYS2, SET_BORDER_KEYS2, CLEAR_BORDER_KEYS2, SET_SHADING_KEYS2, CLEAR_SHADING_KEYS2, SET_DIRECTION_KEYS2, CLEAR_DIRECTION_KEYS2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUES2, ST_UNDERLINE_VALUE_SET2, ST_VERTICAL_ALIGN_RUN2, ST_EM2, ST_TEXT_ALIGNMENT2, ST_TEXT_DIRECTION2, ST_TEXTBOX_TIGHT_WRAP2, ST_TEXT_TRANSFORM2, ST_JUSTIFICATION2, FONT_FAMILY_SCHEMA2, COLOR_SCHEMA2, SPACING_SCHEMA2, INDENT_SCHEMA2, UNDERLINE_SCHEMA2, BORDER_PROPERTIES_SCHEMA2, SHADING_SCHEMA2, LANG_SCHEMA2, EAST_ASIAN_LAYOUT_SCHEMA2, FIT_TEXT_SCHEMA2, NUMBERING_PROPERTIES_SCHEMA2, FRAME_PR_SCHEMA2, PARAGRAPH_BORDERS_SCHEMA2, TAB_STOP_SCHEMA2, PROPERTY_REGISTRY2, ALLOWED_KEYS_BY_CHANNEL2, PROPERTY_INDEX2, EXCLUDED_KEYS2, INPUT_ALLOWED_KEYS2, TARGET_ALLOWED_KEYS2, OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, Z_ORDER_RELATIVE_HEIGHT_MAX2 = 4294967295, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, tableAddressSchema2, tableRowAddressSchema2, tableCellAddressSchema2, tableOrCellAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, paragraphTargetSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, selectionTargetSchema2, deleteBehaviorSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationRangeSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, storyLocatorSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, textSelectorSchema2, nodeSelectorSchema2, sdMutationResolutionSchema2, sdMutationSuccessSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, documentStylesSchema2, documentDefaultsSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, paragraphMutationTargetSchema2, paragraphMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, nullableTableBorderSpecSchema2, sdFragmentSchema2, placementSchema2, nestingPolicySchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, tocMutationFailureSchema2, tocMutationSuccessSchema2, tocEntryMutationFailureSchema2, tocEntryMutationSuccessSchema2, hyperlinkTargetSchema2, hyperlinkReadPropertiesSchema2, hyperlinkSpecSchema2, hyperlinkPatchSchema2, hyperlinkDomainSchema2, hyperlinkMutationSuccessSchema2, hyperlinkMutationFailureSchema2, contentControlTargetSchema2, contentControlMutationSuccessSchema2, contentControlMutationFailureSchema2, ccListResultSchema2, ccInfoSchema2, refFailureSchema2, bookmarkAddressSchema2, bookmarkMutation2, footnoteAddressSchema2, footnoteConfigScopeSchema2, footnoteNumberingSchema2, footnoteMutation2, footnoteConfig2, crossRefAddressSchema2, crossRefTargetSchema2, crossRefDisplaySchema2, crossRefMutation2, indexAddressSchema2, indexEntryAddressSchema2, indexConfigSchema2, indexEntryDataSchema2, indexEntryPatchSchema2, indexMutation2, indexEntryMutation2, captionAddressSchema2, captionMutation2, captionConfig2, fieldAddressSchema2, fieldMutation2, citationAddressSchema2, citationSourceAddressSchema2, bibliographyAddressSchema2, citationMutation2, citationSourceMutation2, bibliographyMutation2, citationPersonSchema2, citationSourceFieldsSchema2, tocCreateLocationSchema2, authoritiesAddressSchema2, authorityEntryAddressSchema2, authoritiesConfigSchema2, authorityEntryDataSchema2, authorityEntryPatchSchema2, authoritiesMutation2, authorityEntryMutation2, diffCoverageSchema2, diffSummarySchema2, diffSnapshotSchema2, diffPayloadSchema2, GROUP_METADATA2, STEP_OP_CATALOG_UNFROZEN2, PUBLIC_STEP_OP_CATALOG_UNFROZEN2, PUBLIC_MUTATION_STEP_OP_IDS2, PUBLIC_MUTATION_STEP_OP_SET2, CAPABILITY_REASON_CODES, VALID_EDGE_VALUES2, VALID_EDGE_NODE_TYPES2, VALID_DOCUMENT_EDGES2, VALID_REF_BOUNDARIES2, VALID_ANCHOR_KINDS2, RESOLVE_RANGE_ALLOWED_KEYS2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, VALID_BEHAVIORS2, CONTENT_KIND_SET2, INLINE_KIND_SET2, LEGACY_TOP_LEVEL_TYPES2, TEXT_INSERT_ALLOWED_KEYS2, STRUCTURAL_INSERT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, LIST_KINDS2, LIST_INSERT_POSITIONS2, JOIN_DIRECTIONS2, MUTATION_SCOPES2, LEVEL_ALIGNMENTS2, TRAILING_CHARACTERS2, LIST_PRESET_IDS2, VALID_BLOCK_NODE_TYPES$1, VALID_LIST_KINDS2, VALID_INSERT_POSITIONS2, VALID_JOIN_DIRECTIONS2, VALID_MUTATION_SCOPES2, VALID_LEVEL_ALIGNMENTS2, VALID_TRAILING_CHARACTERS2, VALID_LIST_PRESETS2, VALID_CONTINUITY_VALUES2, VALID_SEQUENCE_MODES2, VALID_LIST_CREATE_MODES2, TEXT_REPLACE_ALLOWED_KEYS2, STRUCTURAL_REPLACE_ALLOWED_KEYS2, VALID_HEADING_LEVELS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, VALID_BLOCK_NODE_TYPES3, SNAPSHOT_VERSION2 = "sd-diff-snapshot/v1", PAYLOAD_VERSION2 = "sd-diff-payload/v1", VALID_STYLE_OPTION_FLAGS2, TABLE_BORDER_COLOR_PATTERN2, VALID_APPLY_TO_VALUES2, VALID_BORDER_EDGE_KEYS2, HEADER_FOOTER_KINDS$1, HEADER_FOOTER_VARIANTS$1, DEFAULT_SECTIONS_LIST_LIMIT2 = 250, SECTION_BREAK_TYPES3, SECTION_ORIENTATIONS2, SECTION_VERTICAL_ALIGNS2, SECTION_DIRECTIONS2, HEADER_FOOTER_KINDS3, HEADER_FOOTER_VARIANTS3, LINE_NUMBER_RESTARTS2, PAGE_NUMBER_FORMATS2, PAGE_BORDER_DISPLAYS2, PAGE_BORDER_OFFSET_FROM_VALUES2, PAGE_BORDER_Z_ORDER_VALUES2, VALID_WRAP_TYPES2, VALID_WRAP_SIDES2, VALID_IMAGE_SIZE_UNITS2, VALID_TOC_UPDATE_MODES2, EDIT_ENTRY_PATCH_ALLOWED_KEYS2, PATCH_FIELDS2, CONTENT_CONTROL_TYPES2, LOCK_MODES2, CONTENT_CONTROL_APPEARANCES2, VALID_NODE_KINDS2, VALID_LOCK_MODES$1, VALID_CC_TYPES2, VALID_CC_APPEARANCES2, VALID_CONTENT_FORMATS2, VALID_RAW_PATCH_OPS2, VALID_CREATE_LOCATION_KINDS2, ADAPTER_GATED_PREFIXES2, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$216) => ({
|
|
99710
|
+
}), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, PROPERTY_VALIDATOR_MAP2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_IMAGE_COMMAND2, T_CC_READ2, T_CC_MUTATION2, T_CC_TYPED2, T_CC_TYPED_READ2, T_CC_RAW2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_PARAGRAPH_MUTATION2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, T_HEADER_FOOTER_MUTATION2, T_STORY2, T_REF_READ_LIST2, T_REF_MUTATION2, T_REF_MUTATION_REMOVE2, T_REF_INSERT2, T_PROTECTION_READ2, T_PROTECTION_MUTATION2, T_PERM_RANGE_READ2, T_PERM_RANGE_MUTATION2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG3, PARAGRAPH_ALIGNMENTS2, TAB_STOP_ALIGNMENTS2, TAB_STOP_LEADERS2, BORDER_SIDES2, CLEAR_BORDER_SIDES2, LINE_RULES2, PARAGRAPH_DIRECTIONS2, ALIGNMENT_POLICIES2, PARAGRAPH_BLOCK_TYPES2, SET_STYLE_KEYS2, CLEAR_STYLE_KEYS2, RESET_DIRECT_FORMATTING_KEYS2, SET_ALIGNMENT_KEYS2, CLEAR_ALIGNMENT_KEYS2, SET_INDENTATION_KEYS2, CLEAR_INDENTATION_KEYS2, SET_SPACING_KEYS2, CLEAR_SPACING_KEYS2, SET_KEEP_OPTIONS_KEYS2, SET_OUTLINE_LEVEL_KEYS2, SET_FLOW_OPTIONS_KEYS2, SET_TAB_STOP_KEYS2, CLEAR_TAB_STOP_KEYS2, CLEAR_ALL_TAB_STOPS_KEYS2, SET_BORDER_KEYS2, CLEAR_BORDER_KEYS2, SET_SHADING_KEYS2, CLEAR_SHADING_KEYS2, SET_DIRECTION_KEYS2, CLEAR_DIRECTION_KEYS2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUES2, ST_UNDERLINE_VALUE_SET2, ST_VERTICAL_ALIGN_RUN2, ST_EM2, ST_TEXT_ALIGNMENT2, ST_TEXT_DIRECTION2, ST_TEXTBOX_TIGHT_WRAP2, ST_TEXT_TRANSFORM2, ST_JUSTIFICATION2, FONT_FAMILY_SCHEMA2, COLOR_SCHEMA2, SPACING_SCHEMA2, INDENT_SCHEMA2, UNDERLINE_SCHEMA2, BORDER_PROPERTIES_SCHEMA2, SHADING_SCHEMA2, LANG_SCHEMA2, EAST_ASIAN_LAYOUT_SCHEMA2, FIT_TEXT_SCHEMA2, NUMBERING_PROPERTIES_SCHEMA2, FRAME_PR_SCHEMA2, PARAGRAPH_BORDERS_SCHEMA2, TAB_STOP_SCHEMA2, PROPERTY_REGISTRY2, ALLOWED_KEYS_BY_CHANNEL2, PROPERTY_INDEX2, EXCLUDED_KEYS2, INPUT_ALLOWED_KEYS2, TARGET_ALLOWED_KEYS2, OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, Z_ORDER_RELATIVE_HEIGHT_MAX2 = 4294967295, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, tableAddressSchema2, tableRowAddressSchema2, tableCellAddressSchema2, tableOrCellAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, paragraphTargetSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, selectionTargetSchema2, deleteBehaviorSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationRangeSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, storyLocatorSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, textSelectorSchema2, nodeSelectorSchema2, sdMutationResolutionSchema2, sdMutationSuccessSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, documentStylesSchema2, documentDefaultsSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, paragraphMutationTargetSchema2, paragraphMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, nullableTableBorderSpecSchema2, sdFragmentSchema2, placementSchema2, nestingPolicySchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, tocMutationFailureSchema2, tocMutationSuccessSchema2, tocEntryMutationFailureSchema2, tocEntryMutationSuccessSchema2, hyperlinkTargetSchema2, hyperlinkReadPropertiesSchema2, hyperlinkSpecSchema2, hyperlinkPatchSchema2, hyperlinkDomainSchema2, hyperlinkMutationSuccessSchema2, hyperlinkMutationFailureSchema2, contentControlTargetSchema2, contentControlMutationSuccessSchema2, contentControlMutationFailureSchema2, ccListResultSchema2, ccInfoSchema2, refFailureSchema2, bookmarkAddressSchema2, bookmarkMutation2, footnoteAddressSchema2, footnoteConfigScopeSchema2, footnoteNumberingSchema2, footnoteMutation2, footnoteConfig2, crossRefAddressSchema2, crossRefTargetSchema2, crossRefDisplaySchema2, crossRefMutation2, indexAddressSchema2, indexEntryAddressSchema2, indexConfigSchema2, indexEntryDataSchema2, indexEntryPatchSchema2, indexMutation2, indexEntryMutation2, captionAddressSchema2, captionMutation2, captionConfig2, fieldAddressSchema2, fieldMutation2, citationAddressSchema2, citationSourceAddressSchema2, bibliographyAddressSchema2, citationMutation2, citationSourceMutation2, bibliographyMutation2, citationPersonSchema2, citationSourceFieldsSchema2, tocCreateLocationSchema2, authoritiesAddressSchema2, authorityEntryAddressSchema2, authoritiesConfigSchema2, authorityEntryDataSchema2, authorityEntryPatchSchema2, authoritiesMutation2, authorityEntryMutation2, diffCoverageSchema2, diffSummarySchema2, diffSnapshotSchema2, diffPayloadSchema2, GROUP_METADATA2, STEP_OP_CATALOG_UNFROZEN2, PUBLIC_STEP_OP_CATALOG_UNFROZEN2, PUBLIC_MUTATION_STEP_OP_IDS2, PUBLIC_MUTATION_STEP_OP_SET2, CAPABILITY_REASON_CODES, VALID_EDGE_VALUES2, VALID_EDGE_NODE_TYPES2, VALID_DOCUMENT_EDGES2, VALID_REF_BOUNDARIES2, VALID_ANCHOR_KINDS2, RESOLVE_RANGE_ALLOWED_KEYS2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, VALID_BEHAVIORS2, CONTENT_KIND_SET2, INLINE_KIND_SET2, LEGACY_TOP_LEVEL_TYPES2, TEXT_INSERT_ALLOWED_KEYS2, STRUCTURAL_INSERT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, LIST_KINDS2, LIST_INSERT_POSITIONS2, JOIN_DIRECTIONS2, MUTATION_SCOPES2, LEVEL_ALIGNMENTS2, TRAILING_CHARACTERS2, LIST_PRESET_IDS2, VALID_BLOCK_NODE_TYPES$1, VALID_LIST_KINDS2, VALID_INSERT_POSITIONS2, VALID_JOIN_DIRECTIONS2, VALID_MUTATION_SCOPES2, VALID_LEVEL_ALIGNMENTS2, VALID_TRAILING_CHARACTERS2, VALID_LIST_PRESETS2, VALID_CONTINUITY_VALUES2, VALID_SEQUENCE_MODES2, VALID_LIST_CREATE_MODES2, TEXT_REPLACE_ALLOWED_KEYS2, STRUCTURAL_REPLACE_ALLOWED_KEYS2, VALID_HEADING_LEVELS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, VALID_BLOCK_NODE_TYPES3, SNAPSHOT_VERSION2 = "sd-diff-snapshot/v1", PAYLOAD_VERSION2 = "sd-diff-payload/v1", VALID_STYLE_OPTION_FLAGS2, TABLE_BORDER_COLOR_PATTERN2, VALID_APPLY_TO_VALUES2, VALID_BORDER_EDGE_KEYS2, HEADER_FOOTER_KINDS$1, HEADER_FOOTER_VARIANTS$1, DEFAULT_SECTIONS_LIST_LIMIT2 = 250, SECTION_BREAK_TYPES3, SECTION_ORIENTATIONS2, SECTION_VERTICAL_ALIGNS2, SECTION_DIRECTIONS2, HEADER_FOOTER_KINDS3, HEADER_FOOTER_VARIANTS3, LINE_NUMBER_RESTARTS2, PAGE_NUMBER_FORMATS2, PAGE_BORDER_DISPLAYS2, PAGE_BORDER_OFFSET_FROM_VALUES2, PAGE_BORDER_Z_ORDER_VALUES2, VALID_WRAP_TYPES2, VALID_WRAP_SIDES2, VALID_IMAGE_SIZE_UNITS2, VALID_TOC_UPDATE_MODES2, EDIT_ENTRY_PATCH_ALLOWED_KEYS2, PATCH_FIELDS2, CONTENT_CONTROL_TYPES2, LOCK_MODES2, CONTENT_CONTROL_APPEARANCES2, VALID_NODE_KINDS2, VALID_LOCK_MODES$1, VALID_CC_TYPES2, VALID_CC_APPEARANCES2, VALID_CONTENT_FORMATS2, VALID_RAW_PATCH_OPS2, VALID_SET_MODES2, VALID_CREATE_LOCATION_KINDS2, DEFAULT_PROTECTION_STATE, ADAPTER_GATED_PREFIXES2, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$216) => ({
|
|
99074
99711
|
handlerName,
|
|
99075
99712
|
handler: (params3) => {
|
|
99076
99713
|
const { nodes } = params3;
|
|
@@ -113245,7 +113882,7 @@ var isRegExp = (value) => {
|
|
|
113245
113882
|
candidate = candidate.prev;
|
|
113246
113883
|
}
|
|
113247
113884
|
}
|
|
113248
|
-
}, DocumentApiAdapterError, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH = 1440, PX_PER_INCH = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, CommentMarkName = "commentMark", LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, FALLBACK_PREFIX, UUID_LIKE_PATTERN, ALIAS_ELIGIBLE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH = 96, DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels", RELS_XMLNS = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN, FOOTER_FILE_PATTERN, SOURCE_HEADER_FOOTER_LOCAL = "header-footer-sync:local", HEADER_PATTERN, FOOTER_PATTERN, DEFAULT_HDR_FTR_ATTRS, HEADER_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", VALID_VARIANTS, FOOTNOTES_PART_ID = "word/footnotes.xml", ENDNOTES_PART_ID = "word/endnotes.xml", FOOTNOTES_CONFIG, ENDNOTES_CONFIG, NOTES_XMLNS, footnotesPartDescriptor, endnotesPartDescriptor, storeByEditor, cacheByHost, hostStoreSyncedKeys, BODY_LOCATOR, findMarkPosition = (doc$2, pos, markName) => {
|
|
113885
|
+
}, DocumentApiAdapterError, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH = 1440, PX_PER_INCH = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, CommentMarkName = "commentMark", LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, FALLBACK_PREFIX, UUID_LIKE_PATTERN, ALIAS_ELIGIBLE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH = 96, SETTINGS_PART_PATH = "word/settings.xml", VALID_EDIT_MODES, DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels", RELS_XMLNS = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN, FOOTER_FILE_PATTERN, SOURCE_HEADER_FOOTER_LOCAL = "header-footer-sync:local", HEADER_PATTERN, FOOTER_PATTERN, DEFAULT_HDR_FTR_ATTRS, HEADER_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", VALID_VARIANTS, FOOTNOTES_PART_ID = "word/footnotes.xml", ENDNOTES_PART_ID = "word/endnotes.xml", FOOTNOTES_CONFIG, ENDNOTES_CONFIG, NOTES_XMLNS, footnotesPartDescriptor, endnotesPartDescriptor, storeByEditor, cacheByHost, hostStoreSyncedKeys, BODY_LOCATOR, findMarkPosition = (doc$2, pos, markName) => {
|
|
113249
113886
|
const $pos = doc$2.resolve(pos);
|
|
113250
113887
|
const parent = $pos.parent;
|
|
113251
113888
|
const start = parent.childAfter($pos.parentOffset);
|
|
@@ -113313,7 +113950,7 @@ var isRegExp = (value) => {
|
|
|
113313
113950
|
if (id2)
|
|
113314
113951
|
return trackedChanges.filter(({ mark }) => mark.attrs.id === id2);
|
|
113315
113952
|
return trackedChanges;
|
|
113316
|
-
}, DERIVED_ID_LENGTH = 24, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES2, VALID_APPEARANCES, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache,
|
|
113953
|
+
}, DERIVED_ID_LENGTH = 24, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES2, VALID_APPEARANCES, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache, BIBLIOGRAPHY_NAMESPACE_URI = "http://schemas.openxmlformats.org/officeDocument/2006/bibliography", CUSTOM_XML_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", CUSTOM_XML_PROPS_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", DEFAULT_SELECTED_STYLE = "/APA.XSL", DEFAULT_STYLE_NAME = "APA", DEFAULT_VERSION = "6", DEFAULT_XML_DECLARATION, API_TO_OOXML_SOURCE_TYPE, OOXML_TO_API_SOURCE_TYPE, SIMPLE_FIELD_TO_XML_TAG, XML_TAG_TO_SIMPLE_FIELD, import_lib2, FONT_FAMILY_FALLBACKS, DEFAULT_GENERIC_FALLBACK = "sans-serif", DEFAULT_FONT_SIZE_PT = 10, CURRENT_APP_VERSION = "1.23.0", collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
|
|
113317
113954
|
if (!runProps?.elements?.length || !state)
|
|
113318
113955
|
return;
|
|
113319
113956
|
const fontsNode = runProps.elements.find((el) => el.name === "w:rFonts");
|
|
@@ -113347,7 +113984,7 @@ var isRegExp = (value) => {
|
|
|
113347
113984
|
state.kern = kernNode.attributes["w:val"];
|
|
113348
113985
|
}
|
|
113349
113986
|
}, SuperConverter;
|
|
113350
|
-
var
|
|
113987
|
+
var init_SuperConverter_CMIR0kxi_es = __esm(() => {
|
|
113351
113988
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
113352
113989
|
init_jszip_ChlR43oI_es();
|
|
113353
113990
|
init_xml_js_40FWvL78_es();
|
|
@@ -116349,6 +116986,15 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
116349
116986
|
"INVALID_INPUT",
|
|
116350
116987
|
"CAPABILITY_UNAVAILABLE"
|
|
116351
116988
|
];
|
|
116989
|
+
T_PROTECTION_READ2 = ["CAPABILITY_UNAVAILABLE"];
|
|
116990
|
+
T_PROTECTION_MUTATION2 = ["INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
116991
|
+
T_PERM_RANGE_READ2 = ["TARGET_NOT_FOUND", "CAPABILITY_UNAVAILABLE"];
|
|
116992
|
+
T_PERM_RANGE_MUTATION2 = [
|
|
116993
|
+
"TARGET_NOT_FOUND",
|
|
116994
|
+
"INVALID_TARGET",
|
|
116995
|
+
"INVALID_INPUT",
|
|
116996
|
+
"CAPABILITY_UNAVAILABLE"
|
|
116997
|
+
];
|
|
116352
116998
|
FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2 = Object.fromEntries(INLINE_PROPERTY_REGISTRY2.map((entry) => {
|
|
116353
116999
|
const operationId = `format.${entry.key}`;
|
|
116354
117000
|
return [operationId, {
|
|
@@ -121580,6 +122226,116 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
121580
122226
|
referenceDocPath: "diff/apply.mdx",
|
|
121581
122227
|
referenceGroup: "diff",
|
|
121582
122228
|
skipAsATool: true
|
|
122229
|
+
},
|
|
122230
|
+
"protection.get": {
|
|
122231
|
+
memberPath: "protection.get",
|
|
122232
|
+
description: "Read the current document protection state including editing restrictions, write protection, and read-only recommendation.",
|
|
122233
|
+
expectedResult: "Returns a DocumentProtectionState with editingRestriction, writeProtection, and readOnlyRecommended fields.",
|
|
122234
|
+
requiresDocumentContext: true,
|
|
122235
|
+
metadata: readOperation2({ throws: T_PROTECTION_READ2 }),
|
|
122236
|
+
referenceDocPath: "protection/get.mdx",
|
|
122237
|
+
referenceGroup: "protection",
|
|
122238
|
+
skipAsATool: true
|
|
122239
|
+
},
|
|
122240
|
+
"protection.setEditingRestriction": {
|
|
122241
|
+
memberPath: "protection.setEditingRestriction",
|
|
122242
|
+
description: "Enable Word-style editing restriction on the document. Only readOnly mode is supported in v1.",
|
|
122243
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
122244
|
+
requiresDocumentContext: true,
|
|
122245
|
+
metadata: mutationOperation2({
|
|
122246
|
+
idempotency: "idempotent",
|
|
122247
|
+
supportsDryRun: true,
|
|
122248
|
+
supportsTrackedMode: false,
|
|
122249
|
+
possibleFailureCodes: ["NO_OP"],
|
|
122250
|
+
throws: T_PROTECTION_MUTATION2
|
|
122251
|
+
}),
|
|
122252
|
+
referenceDocPath: "protection/set-editing-restriction.mdx",
|
|
122253
|
+
referenceGroup: "protection",
|
|
122254
|
+
skipAsATool: true
|
|
122255
|
+
},
|
|
122256
|
+
"protection.clearEditingRestriction": {
|
|
122257
|
+
memberPath: "protection.clearEditingRestriction",
|
|
122258
|
+
description: "Disable document-level editing restriction by setting enforcement to off. Preserves the protection element and its metadata for round-trip fidelity.",
|
|
122259
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
122260
|
+
requiresDocumentContext: true,
|
|
122261
|
+
metadata: mutationOperation2({
|
|
122262
|
+
idempotency: "idempotent",
|
|
122263
|
+
supportsDryRun: true,
|
|
122264
|
+
supportsTrackedMode: false,
|
|
122265
|
+
possibleFailureCodes: ["NO_OP"],
|
|
122266
|
+
throws: T_PROTECTION_MUTATION2
|
|
122267
|
+
}),
|
|
122268
|
+
referenceDocPath: "protection/clear-editing-restriction.mdx",
|
|
122269
|
+
referenceGroup: "protection",
|
|
122270
|
+
skipAsATool: true
|
|
122271
|
+
},
|
|
122272
|
+
"permissionRanges.list": {
|
|
122273
|
+
memberPath: "permissionRanges.list",
|
|
122274
|
+
description: "List all permission ranges in the document. Returns only complete paired ranges (both start and end markers present).",
|
|
122275
|
+
expectedResult: "Returns a PermissionRangesListResult containing discovered permission ranges with principal and position data.",
|
|
122276
|
+
requiresDocumentContext: true,
|
|
122277
|
+
metadata: readOperation2({ throws: T_PERM_RANGE_READ2 }),
|
|
122278
|
+
referenceDocPath: "permission-ranges/list.mdx",
|
|
122279
|
+
referenceGroup: "permissionRanges",
|
|
122280
|
+
skipAsATool: true
|
|
122281
|
+
},
|
|
122282
|
+
"permissionRanges.get": {
|
|
122283
|
+
memberPath: "permissionRanges.get",
|
|
122284
|
+
description: "Get detailed information about a specific permission range by ID.",
|
|
122285
|
+
expectedResult: "Returns a PermissionRangeInfo object with the range principal, kind, and positions.",
|
|
122286
|
+
requiresDocumentContext: true,
|
|
122287
|
+
metadata: readOperation2({ throws: T_PERM_RANGE_READ2 }),
|
|
122288
|
+
referenceDocPath: "permission-ranges/get.mdx",
|
|
122289
|
+
referenceGroup: "permissionRanges",
|
|
122290
|
+
skipAsATool: true
|
|
122291
|
+
},
|
|
122292
|
+
"permissionRanges.create": {
|
|
122293
|
+
memberPath: "permissionRanges.create",
|
|
122294
|
+
description: "Create a permission range exception region in the document. Inserts matched permStart/permEnd markers at the target.",
|
|
122295
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the created range info on success.",
|
|
122296
|
+
requiresDocumentContext: true,
|
|
122297
|
+
metadata: mutationOperation2({
|
|
122298
|
+
idempotency: "non-idempotent",
|
|
122299
|
+
supportsDryRun: true,
|
|
122300
|
+
supportsTrackedMode: false,
|
|
122301
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
122302
|
+
throws: T_PERM_RANGE_MUTATION2
|
|
122303
|
+
}),
|
|
122304
|
+
referenceDocPath: "permission-ranges/create.mdx",
|
|
122305
|
+
referenceGroup: "permissionRanges",
|
|
122306
|
+
skipAsATool: true
|
|
122307
|
+
},
|
|
122308
|
+
"permissionRanges.remove": {
|
|
122309
|
+
memberPath: "permissionRanges.remove",
|
|
122310
|
+
description: "Remove a permission range by ID. Removes whichever markers exist for the given ID (start, end, or both).",
|
|
122311
|
+
expectedResult: "Returns a PermissionRangeRemoveResult indicating success or a failure.",
|
|
122312
|
+
requiresDocumentContext: true,
|
|
122313
|
+
metadata: mutationOperation2({
|
|
122314
|
+
idempotency: "idempotent",
|
|
122315
|
+
supportsDryRun: true,
|
|
122316
|
+
supportsTrackedMode: false,
|
|
122317
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
122318
|
+
throws: T_PERM_RANGE_MUTATION2
|
|
122319
|
+
}),
|
|
122320
|
+
referenceDocPath: "permission-ranges/remove.mdx",
|
|
122321
|
+
referenceGroup: "permissionRanges",
|
|
122322
|
+
skipAsATool: true
|
|
122323
|
+
},
|
|
122324
|
+
"permissionRanges.updatePrincipal": {
|
|
122325
|
+
memberPath: "permissionRanges.updatePrincipal",
|
|
122326
|
+
description: "Change which principal is allowed to edit a permission range. Updates the principal fields on the start marker.",
|
|
122327
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the updated range info on success.",
|
|
122328
|
+
requiresDocumentContext: true,
|
|
122329
|
+
metadata: mutationOperation2({
|
|
122330
|
+
idempotency: "idempotent",
|
|
122331
|
+
supportsDryRun: true,
|
|
122332
|
+
supportsTrackedMode: false,
|
|
122333
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
122334
|
+
throws: T_PERM_RANGE_MUTATION2
|
|
122335
|
+
}),
|
|
122336
|
+
referenceDocPath: "permission-ranges/update-principal.mdx",
|
|
122337
|
+
referenceGroup: "permissionRanges",
|
|
122338
|
+
skipAsATool: true
|
|
121583
122339
|
}
|
|
121584
122340
|
};
|
|
121585
122341
|
OPERATION_IDS2 = Object.freeze(Object.keys(OPERATION_DEFINITIONS2));
|
|
@@ -127226,7 +127982,64 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
127226
127982
|
}, ["at", "entry"]), { ...authorityEntryMutation2 }, objectSchema2({
|
|
127227
127983
|
target: authorityEntryAddressSchema2,
|
|
127228
127984
|
patch: authorityEntryPatchSchema2
|
|
127229
|
-
}, ["target", "patch"]), { ...authorityEntryMutation2 }, objectSchema2({ target: authorityEntryAddressSchema2 }, ["target"]), { ...authorityEntryMutation2 }, objectSchema2({}), objectSchema2({ targetSnapshot: diffSnapshotSchema2 }, ["targetSnapshot"]), objectSchema2({ diff: diffPayloadSchema2 }, ["diff"])
|
|
127985
|
+
}, ["target", "patch"]), { ...authorityEntryMutation2 }, objectSchema2({ target: authorityEntryAddressSchema2 }, ["target"]), { ...authorityEntryMutation2 }, objectSchema2({}), objectSchema2({ targetSnapshot: diffSnapshotSchema2 }, ["targetSnapshot"]), objectSchema2({ diff: diffPayloadSchema2 }, ["diff"]), objectSchema2({}), objectSchema2({
|
|
127986
|
+
editingRestriction: objectSchema2({
|
|
127987
|
+
mode: {
|
|
127988
|
+
type: "string",
|
|
127989
|
+
enum: [
|
|
127990
|
+
"none",
|
|
127991
|
+
"readOnly",
|
|
127992
|
+
"comments",
|
|
127993
|
+
"trackedChanges",
|
|
127994
|
+
"forms"
|
|
127995
|
+
]
|
|
127996
|
+
},
|
|
127997
|
+
enforced: { type: "boolean" },
|
|
127998
|
+
runtimeEnforced: { type: "boolean" },
|
|
127999
|
+
passwordProtected: { type: "boolean" },
|
|
128000
|
+
formattingRestricted: { type: "boolean" }
|
|
128001
|
+
}, [
|
|
128002
|
+
"mode",
|
|
128003
|
+
"enforced",
|
|
128004
|
+
"runtimeEnforced",
|
|
128005
|
+
"passwordProtected",
|
|
128006
|
+
"formattingRestricted"
|
|
128007
|
+
]),
|
|
128008
|
+
writeProtection: objectSchema2({
|
|
128009
|
+
enabled: { type: "boolean" },
|
|
128010
|
+
passwordProtected: { type: "boolean" }
|
|
128011
|
+
}, ["enabled", "passwordProtected"]),
|
|
128012
|
+
readOnlyRecommended: { type: "boolean" }
|
|
128013
|
+
}, [
|
|
128014
|
+
"editingRestriction",
|
|
128015
|
+
"writeProtection",
|
|
128016
|
+
"readOnlyRecommended"
|
|
128017
|
+
]), objectSchema2({
|
|
128018
|
+
mode: {
|
|
128019
|
+
type: "string",
|
|
128020
|
+
enum: ["readOnly"]
|
|
128021
|
+
},
|
|
128022
|
+
formattingRestricted: { type: "boolean" }
|
|
128023
|
+
}, ["mode"]), objectSchema2({}), objectSchema2({ id: { type: "string" } }, ["id"]), objectSchema2({
|
|
128024
|
+
target: selectionTargetSchema2,
|
|
128025
|
+
principal: objectSchema2({
|
|
128026
|
+
kind: {
|
|
128027
|
+
type: "string",
|
|
128028
|
+
enum: ["everyone", "editor"]
|
|
128029
|
+
},
|
|
128030
|
+
id: { type: "string" }
|
|
128031
|
+
}, ["kind"]),
|
|
128032
|
+
id: { type: "string" }
|
|
128033
|
+
}, ["target", "principal"]), objectSchema2({ id: { type: "string" } }, ["id"]), objectSchema2({
|
|
128034
|
+
id: { type: "string" },
|
|
128035
|
+
principal: objectSchema2({
|
|
128036
|
+
kind: {
|
|
128037
|
+
type: "string",
|
|
128038
|
+
enum: ["everyone", "editor"]
|
|
128039
|
+
},
|
|
128040
|
+
id: { type: "string" }
|
|
128041
|
+
}, ["kind"])
|
|
128042
|
+
}, ["id", "principal"]);
|
|
127230
128043
|
projectFromDefinitions2((_id, entry) => entry.memberPath);
|
|
127231
128044
|
[...new Set(OPERATION_IDS2.map((id2) => OPERATION_DEFINITIONS2[id2].memberPath))];
|
|
127232
128045
|
projectFromDefinitions2((_id, entry) => entry.referenceDocPath);
|
|
@@ -127385,6 +128198,16 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
127385
128198
|
title: "Diff",
|
|
127386
128199
|
description: "Snapshot-based document comparison and replay.",
|
|
127387
128200
|
pagePath: "diff/index.mdx"
|
|
128201
|
+
},
|
|
128202
|
+
protection: {
|
|
128203
|
+
title: "Protection",
|
|
128204
|
+
description: "Document-level protection state and editing restriction operations.",
|
|
128205
|
+
pagePath: "protection/index.mdx"
|
|
128206
|
+
},
|
|
128207
|
+
permissionRanges: {
|
|
128208
|
+
title: "Permission Ranges",
|
|
128209
|
+
description: "Permission range exception operations for protected documents.",
|
|
128210
|
+
pagePath: "permission-ranges/index.mdx"
|
|
127388
128211
|
}
|
|
127389
128212
|
};
|
|
127390
128213
|
Object.keys(GROUP_METADATA2).map((key) => ({
|
|
@@ -127743,12 +128566,27 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
127743
128566
|
"setAttr",
|
|
127744
128567
|
"removeAttr"
|
|
127745
128568
|
]);
|
|
128569
|
+
VALID_SET_MODES2 = new Set(["readOnly"]);
|
|
127746
128570
|
VALID_CREATE_LOCATION_KINDS2 = new Set([
|
|
127747
128571
|
"documentStart",
|
|
127748
128572
|
"documentEnd",
|
|
127749
128573
|
"before",
|
|
127750
128574
|
"after"
|
|
127751
128575
|
]);
|
|
128576
|
+
DEFAULT_PROTECTION_STATE = {
|
|
128577
|
+
editingRestriction: {
|
|
128578
|
+
mode: "none",
|
|
128579
|
+
enforced: false,
|
|
128580
|
+
runtimeEnforced: false,
|
|
128581
|
+
passwordProtected: false,
|
|
128582
|
+
formattingRestricted: false
|
|
128583
|
+
},
|
|
128584
|
+
writeProtection: {
|
|
128585
|
+
enabled: false,
|
|
128586
|
+
passwordProtected: false
|
|
128587
|
+
},
|
|
128588
|
+
readOnlyRecommended: false
|
|
128589
|
+
};
|
|
127752
128590
|
ADAPTER_GATED_PREFIXES2 = [
|
|
127753
128591
|
"bookmarks",
|
|
127754
128592
|
"footnotes",
|
|
@@ -148926,6 +149764,12 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
148926
149764
|
"both"
|
|
148927
149765
|
];
|
|
148928
149766
|
readSectPrHeaderFooterRefs = readSectPrRefsByKind;
|
|
149767
|
+
VALID_EDIT_MODES = new Set([
|
|
149768
|
+
"readOnly",
|
|
149769
|
+
"comments",
|
|
149770
|
+
"trackedChanges",
|
|
149771
|
+
"forms"
|
|
149772
|
+
]);
|
|
148929
149773
|
RELATIONSHIP_ID_PATTERN = /^rId(\d+)$/;
|
|
148930
149774
|
HEADER_FILE_PATTERN = /^word\/header(\d+)\.xml$/;
|
|
148931
149775
|
FOOTER_FILE_PATTERN = /^word\/footer(\d+)\.xml$/;
|
|
@@ -171649,7 +172493,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
|
|
|
171649
172493
|
init_remark_gfm_z_sDF4ss_es();
|
|
171650
172494
|
});
|
|
171651
172495
|
|
|
171652
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
172496
|
+
// ../../packages/superdoc/dist/chunks/src-CeG3wOI4.es.js
|
|
171653
172497
|
function deleteProps(obj, propOrProps) {
|
|
171654
172498
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
171655
172499
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -173676,11 +174520,11 @@ function syncSplitParagraphRunProperties(attrs, runProperties) {
|
|
|
173676
174520
|
paragraphProperties: nextParagraphProperties
|
|
173677
174521
|
};
|
|
173678
174522
|
}
|
|
173679
|
-
function getConverter$
|
|
174523
|
+
function getConverter$62(editor) {
|
|
173680
174524
|
return editor.converter;
|
|
173681
174525
|
}
|
|
173682
174526
|
function readTranslatedLinkedStyles(editor) {
|
|
173683
|
-
return getConverter$
|
|
174527
|
+
return getConverter$62(editor)?.translatedLinkedStyles ?? null;
|
|
173684
174528
|
}
|
|
173685
174529
|
function isHeadingStyleId$1(styleId) {
|
|
173686
174530
|
return typeof styleId === "string" && /^heading\s*[1-6]$/i.test(styleId.trim());
|
|
@@ -207526,7 +208370,7 @@ function tablesSetDefaultStyleAdapter(editor, input2, options) {
|
|
|
207526
208370
|
throw new DocumentApiAdapterError("INVALID_INPUT", `tables.setDefaultStyle: "${input2.styleId}" is not a known table style.`);
|
|
207527
208371
|
return mutatePart({
|
|
207528
208372
|
editor,
|
|
207529
|
-
partId: SETTINGS_PART,
|
|
208373
|
+
partId: SETTINGS_PART$1,
|
|
207530
208374
|
operation: "mutate",
|
|
207531
208375
|
source: "tables.setDefaultStyle",
|
|
207532
208376
|
dryRun: options?.dryRun === true,
|
|
@@ -207548,7 +208392,7 @@ function tablesClearDefaultStyleAdapter(editor, _input, options) {
|
|
|
207548
208392
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "tables.clearDefaultStyle requires an active document converter.");
|
|
207549
208393
|
return mutatePart({
|
|
207550
208394
|
editor,
|
|
207551
|
-
partId: SETTINGS_PART,
|
|
208395
|
+
partId: SETTINGS_PART$1,
|
|
207552
208396
|
operation: "mutate",
|
|
207553
208397
|
source: "tables.clearDefaultStyle",
|
|
207554
208398
|
dryRun: options?.dryRun === true,
|
|
@@ -207968,10 +208812,10 @@ function registerBuiltInExecutors() {
|
|
|
207968
208812
|
};
|
|
207969
208813
|
} });
|
|
207970
208814
|
}
|
|
207971
|
-
function getConverter$
|
|
208815
|
+
function getConverter$52(editor) {
|
|
207972
208816
|
return editor.converter;
|
|
207973
208817
|
}
|
|
207974
|
-
function getConverter$
|
|
208818
|
+
function getConverter$42(editor) {
|
|
207975
208819
|
return editor.converter;
|
|
207976
208820
|
}
|
|
207977
208821
|
function createEmptyHeaderFooterJson() {
|
|
@@ -207984,7 +208828,7 @@ function createEmptyHeaderFooterJson() {
|
|
|
207984
208828
|
};
|
|
207985
208829
|
}
|
|
207986
208830
|
function syncHeaderFooterCaches(editor, part) {
|
|
207987
|
-
const converter = getConverter$
|
|
208831
|
+
const converter = getConverter$42(editor);
|
|
207988
208832
|
if (!converter)
|
|
207989
208833
|
return;
|
|
207990
208834
|
const relsRoot = part?.elements?.find((el) => el.name === "Relationships");
|
|
@@ -208046,7 +208890,7 @@ function createTableWrapper(editor, input2, options) {
|
|
|
208046
208890
|
});
|
|
208047
208891
|
return adapterResult;
|
|
208048
208892
|
}
|
|
208049
|
-
function getConverter$
|
|
208893
|
+
function getConverter$32(editor) {
|
|
208050
208894
|
return editor.converter;
|
|
208051
208895
|
}
|
|
208052
208896
|
function toSectionFailure2(code7, message) {
|
|
@@ -208114,7 +208958,7 @@ function buildSectionMarginsForAttrs2(sectPr) {
|
|
|
208114
208958
|
};
|
|
208115
208959
|
}
|
|
208116
208960
|
function syncConverterBodySection2(editor, sectPr) {
|
|
208117
|
-
const converter = getConverter$
|
|
208961
|
+
const converter = getConverter$32(editor);
|
|
208118
208962
|
if (!converter)
|
|
208119
208963
|
return;
|
|
208120
208964
|
converter.bodySectPr = cloneXmlElement(sectPr);
|
|
@@ -208234,7 +209078,7 @@ function createSectionBreakNode(editor, breakParagraphId, input2) {
|
|
|
208234
209078
|
return paragraphNode;
|
|
208235
209079
|
}
|
|
208236
209080
|
function updateGlobalTitlePageFlag(editor) {
|
|
208237
|
-
const converter = getConverter$
|
|
209081
|
+
const converter = getConverter$32(editor);
|
|
208238
209082
|
if (!converter)
|
|
208239
209083
|
return;
|
|
208240
209084
|
const anyTitlePage = resolveSectionProjections(editor).some((entry) => entry.domain.titlePage === true);
|
|
@@ -208318,7 +209162,7 @@ function sectionsSetTitlePageAdapter(editor, input2, options) {
|
|
|
208318
209162
|
}
|
|
208319
209163
|
function sectionsSetOddEvenHeadersFootersAdapter(editor, input2, options) {
|
|
208320
209164
|
rejectTrackedMode("sections.setOddEvenHeadersFooters", options);
|
|
208321
|
-
const converter = getConverter$
|
|
209165
|
+
const converter = getConverter$32(editor);
|
|
208322
209166
|
if (!converter)
|
|
208323
209167
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "sections.setOddEvenHeadersFooters requires an active document converter.");
|
|
208324
209168
|
return mutatePart({
|
|
@@ -208354,13 +209198,13 @@ function sectionsSetSectionDirectionAdapter(editor, input2, options) {
|
|
|
208354
209198
|
}
|
|
208355
209199
|
function sectionsSetHeaderFooterRefAdapter(editor, input2, options) {
|
|
208356
209200
|
return sectionMutationBySectPr$1(editor, input2, options, "sections.setHeaderFooterRef", (sectPr, _projection, _sections, dryRun) => {
|
|
208357
|
-
const converter = getConverter$
|
|
209201
|
+
const converter = getConverter$32(editor) ?? null;
|
|
208358
209202
|
return setHeaderFooterRefMutation(sectPr, input2.kind, input2.variant, input2.refId, converter, "sections.setHeaderFooterRef", dryRun);
|
|
208359
209203
|
});
|
|
208360
209204
|
}
|
|
208361
209205
|
function sectionsClearHeaderFooterRefAdapter(editor, input2, options) {
|
|
208362
209206
|
return sectionMutationBySectPr$1(editor, input2, options, "sections.clearHeaderFooterRef", (sectPr, _projection, _sections, dryRun) => {
|
|
208363
|
-
const converter = getConverter$
|
|
209207
|
+
const converter = getConverter$32(editor) ?? null;
|
|
208364
209208
|
clearHeaderFooterRefMutation(sectPr, input2.kind, input2.variant, converter, dryRun);
|
|
208365
209209
|
});
|
|
208366
209210
|
}
|
|
@@ -212798,11 +213642,11 @@ function createContentControlsAdapter(editor) {
|
|
|
212798
213642
|
create: (input2, options) => createWrapper(editor, input2, options)
|
|
212799
213643
|
};
|
|
212800
213644
|
}
|
|
212801
|
-
function getConverter$
|
|
213645
|
+
function getConverter$22(editor) {
|
|
212802
213646
|
return editor.converter;
|
|
212803
213647
|
}
|
|
212804
|
-
function requireConverter(editor, operationName) {
|
|
212805
|
-
const converter = getConverter$
|
|
213648
|
+
function requireConverter$1(editor, operationName) {
|
|
213649
|
+
const converter = getConverter$22(editor);
|
|
212806
213650
|
if (!converter)
|
|
212807
213651
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${operationName} requires an active document converter.`);
|
|
212808
213652
|
return converter;
|
|
@@ -212908,7 +213752,7 @@ function headerFootersResolveAdapter(editor, input2) {
|
|
|
212908
213752
|
function headerFootersRefsSetAdapter(editor, input2, options) {
|
|
212909
213753
|
const { section, headerFooterKind, variant } = input2.target;
|
|
212910
213754
|
const result = sectionMutationBySectPr(editor, { target: section }, options, "headerFooters.refs.set", (sectPr, _projection, _sections, dryRun) => {
|
|
212911
|
-
const converter = getConverter$
|
|
213755
|
+
const converter = getConverter$22(editor) ?? null;
|
|
212912
213756
|
return setHeaderFooterRefMutation(sectPr, headerFooterKind, variant, input2.refId, converter, "headerFooters.refs.set", dryRun);
|
|
212913
213757
|
});
|
|
212914
213758
|
invalidateSlotRuntimesAfterRefChange(editor, result, options);
|
|
@@ -212917,7 +213761,7 @@ function headerFootersRefsSetAdapter(editor, input2, options) {
|
|
|
212917
213761
|
function headerFootersRefsClearAdapter(editor, input2, options) {
|
|
212918
213762
|
const { section, headerFooterKind, variant } = input2.target;
|
|
212919
213763
|
const result = sectionMutationBySectPr(editor, { target: section }, options, "headerFooters.refs.clear", (sectPr, _projection, _sections, dryRun) => {
|
|
212920
|
-
clearHeaderFooterRefMutation(sectPr, headerFooterKind, variant, getConverter$
|
|
213764
|
+
clearHeaderFooterRefMutation(sectPr, headerFooterKind, variant, getConverter$22(editor) ?? null, dryRun);
|
|
212921
213765
|
});
|
|
212922
213766
|
invalidateSlotRuntimesAfterRefChange(editor, result, options);
|
|
212923
213767
|
return result;
|
|
@@ -212965,7 +213809,7 @@ function extractPartIndex(kind, partPath) {
|
|
|
212965
213809
|
return Number.isFinite(num) ? num : null;
|
|
212966
213810
|
}
|
|
212967
213811
|
function headerFootersPartsListAdapter(editor, query2) {
|
|
212968
|
-
const converter = requireConverter(editor, "headerFooters.parts.list");
|
|
213812
|
+
const converter = requireConverter$1(editor, "headerFooters.parts.list");
|
|
212969
213813
|
validatePaginationInput(query2?.offset, query2?.limit);
|
|
212970
213814
|
const relationships = readRelationshipElements(converter);
|
|
212971
213815
|
const sections = resolveSectionProjections(editor);
|
|
@@ -213053,7 +213897,7 @@ function toPartsMutationFailure(code7, message) {
|
|
|
213053
213897
|
function headerFootersPartsCreateAdapter(editor, input2, options) {
|
|
213054
213898
|
rejectTrackedMode("headerFooters.parts.create", options);
|
|
213055
213899
|
checkRevision(editor, options?.expectedRevision);
|
|
213056
|
-
const converter = requireConverter(editor, "headerFooters.parts.create");
|
|
213900
|
+
const converter = requireConverter$1(editor, "headerFooters.parts.create");
|
|
213057
213901
|
if (input2.sourceRefId) {
|
|
213058
213902
|
const sourceRel = readRelationshipElements(converter).find((rel) => String(rel.attributes?.Id ?? "") === input2.sourceRefId);
|
|
213059
213903
|
if (!sourceRel)
|
|
@@ -213086,7 +213930,7 @@ function headerFootersPartsCreateAdapter(editor, input2, options) {
|
|
|
213086
213930
|
function headerFootersPartsDeleteAdapter(editor, input2, options) {
|
|
213087
213931
|
rejectTrackedMode("headerFooters.parts.delete", options);
|
|
213088
213932
|
checkRevision(editor, options?.expectedRevision);
|
|
213089
|
-
const converter = requireConverter(editor, "headerFooters.parts.delete");
|
|
213933
|
+
const converter = requireConverter$1(editor, "headerFooters.parts.delete");
|
|
213090
213934
|
const refId = input2.target.refId;
|
|
213091
213935
|
const targetRel = readRelationshipElements(converter).find((rel) => String(rel.attributes?.Id ?? "") === refId);
|
|
213092
213936
|
if (!targetRel)
|
|
@@ -213411,6 +214255,402 @@ function bookmarksRemoveWrapper(editor, input2, options) {
|
|
|
213411
214255
|
return bookmarkFailure("NO_OP", "Remove operation produced no change.");
|
|
213412
214256
|
return bookmarkSuccess(address2);
|
|
213413
214257
|
}
|
|
214258
|
+
function getConverter$12(editor) {
|
|
214259
|
+
return editor.converter ?? undefined;
|
|
214260
|
+
}
|
|
214261
|
+
function requireConverter(editor, operationName) {
|
|
214262
|
+
const converter = getConverter$12(editor);
|
|
214263
|
+
if (!converter)
|
|
214264
|
+
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${operationName} requires an active document converter.`);
|
|
214265
|
+
return converter;
|
|
214266
|
+
}
|
|
214267
|
+
function buildPreviewState(current, editingRestriction) {
|
|
214268
|
+
const { mode, enforced } = editingRestriction;
|
|
214269
|
+
return {
|
|
214270
|
+
editingRestriction: {
|
|
214271
|
+
mode,
|
|
214272
|
+
enforced,
|
|
214273
|
+
runtimeEnforced: mode === "readOnly" && enforced,
|
|
214274
|
+
passwordProtected: current.editingRestriction.passwordProtected,
|
|
214275
|
+
formattingRestricted: editingRestriction.formattingRestricted
|
|
214276
|
+
},
|
|
214277
|
+
writeProtection: current.writeProtection,
|
|
214278
|
+
readOnlyRecommended: current.readOnlyRecommended
|
|
214279
|
+
};
|
|
214280
|
+
}
|
|
214281
|
+
function protectionGetAdapter(editor) {
|
|
214282
|
+
const stored = getProtectionStorage(editor);
|
|
214283
|
+
if (stored?.initialized)
|
|
214284
|
+
return stored.state;
|
|
214285
|
+
const converter = getConverter$12(editor);
|
|
214286
|
+
return parseProtectionState(converter ? readSettingsRoot(converter) : null);
|
|
214287
|
+
}
|
|
214288
|
+
function protectionSetEditingRestrictionAdapter(editor, input2, options) {
|
|
214289
|
+
rejectTrackedMode("protection.setEditingRestriction", options);
|
|
214290
|
+
const converter = requireConverter(editor, "protection.setEditingRestriction");
|
|
214291
|
+
const result = mutatePart({
|
|
214292
|
+
editor,
|
|
214293
|
+
partId: SETTINGS_PART,
|
|
214294
|
+
operation: "mutate",
|
|
214295
|
+
source: "protection.setEditingRestriction",
|
|
214296
|
+
dryRun: options?.dryRun === true,
|
|
214297
|
+
expectedRevision: options?.expectedRevision,
|
|
214298
|
+
mutate({ part, dryRun: isDryRun }) {
|
|
214299
|
+
const currentState = parseProtectionState(readSettingsRoot(converter));
|
|
214300
|
+
const { editingRestriction } = currentState;
|
|
214301
|
+
if (editingRestriction.mode === input2.mode && editingRestriction.enforced === true && (input2.formattingRestricted === undefined || editingRestriction.formattingRestricted === input2.formattingRestricted))
|
|
214302
|
+
return {
|
|
214303
|
+
success: false,
|
|
214304
|
+
failure: {
|
|
214305
|
+
code: "NO_OP",
|
|
214306
|
+
message: "Editing restriction already matches the requested state."
|
|
214307
|
+
}
|
|
214308
|
+
};
|
|
214309
|
+
if (isDryRun)
|
|
214310
|
+
return {
|
|
214311
|
+
success: true,
|
|
214312
|
+
state: buildPreviewState(currentState, {
|
|
214313
|
+
mode: input2.mode,
|
|
214314
|
+
enforced: true,
|
|
214315
|
+
formattingRestricted: input2.formattingRestricted ?? currentState.editingRestriction.formattingRestricted
|
|
214316
|
+
})
|
|
214317
|
+
};
|
|
214318
|
+
const settingsRoot = ensureSettingsRoot(part);
|
|
214319
|
+
setDocumentProtection(settingsRoot, {
|
|
214320
|
+
mode: input2.mode,
|
|
214321
|
+
enforced: true,
|
|
214322
|
+
formattingRestricted: input2.formattingRestricted
|
|
214323
|
+
});
|
|
214324
|
+
const newState = parseProtectionState(settingsRoot);
|
|
214325
|
+
const protStorage = getProtectionStorage(editor);
|
|
214326
|
+
if (protStorage)
|
|
214327
|
+
protStorage.state = newState;
|
|
214328
|
+
editor.emit("protectionChanged", {
|
|
214329
|
+
editor,
|
|
214330
|
+
state: newState,
|
|
214331
|
+
source: "local-mutation"
|
|
214332
|
+
});
|
|
214333
|
+
return {
|
|
214334
|
+
success: true,
|
|
214335
|
+
state: newState
|
|
214336
|
+
};
|
|
214337
|
+
}
|
|
214338
|
+
});
|
|
214339
|
+
if (options?.dryRun !== true)
|
|
214340
|
+
applyEffectiveEditability(editor);
|
|
214341
|
+
return result.result;
|
|
214342
|
+
}
|
|
214343
|
+
function protectionClearEditingRestrictionAdapter(editor, _input, options) {
|
|
214344
|
+
rejectTrackedMode("protection.clearEditingRestriction", options);
|
|
214345
|
+
const converter = requireConverter(editor, "protection.clearEditingRestriction");
|
|
214346
|
+
const result = mutatePart({
|
|
214347
|
+
editor,
|
|
214348
|
+
partId: SETTINGS_PART,
|
|
214349
|
+
operation: "mutate",
|
|
214350
|
+
source: "protection.clearEditingRestriction",
|
|
214351
|
+
dryRun: options?.dryRun === true,
|
|
214352
|
+
expectedRevision: options?.expectedRevision,
|
|
214353
|
+
mutate({ part, dryRun: isDryRun }) {
|
|
214354
|
+
const currentState = parseProtectionState(readSettingsRoot(converter));
|
|
214355
|
+
if (!currentState.editingRestriction.enforced)
|
|
214356
|
+
return {
|
|
214357
|
+
success: false,
|
|
214358
|
+
failure: {
|
|
214359
|
+
code: "NO_OP",
|
|
214360
|
+
message: "Editing restriction is already not enforced."
|
|
214361
|
+
}
|
|
214362
|
+
};
|
|
214363
|
+
if (isDryRun)
|
|
214364
|
+
return {
|
|
214365
|
+
success: true,
|
|
214366
|
+
state: buildPreviewState(currentState, {
|
|
214367
|
+
mode: currentState.editingRestriction.mode,
|
|
214368
|
+
enforced: false,
|
|
214369
|
+
formattingRestricted: currentState.editingRestriction.formattingRestricted
|
|
214370
|
+
})
|
|
214371
|
+
};
|
|
214372
|
+
const settingsRoot = ensureSettingsRoot(part);
|
|
214373
|
+
clearDocumentProtectionEnforcement(settingsRoot);
|
|
214374
|
+
const newState = parseProtectionState(settingsRoot);
|
|
214375
|
+
const protStorage = getProtectionStorage(editor);
|
|
214376
|
+
if (protStorage)
|
|
214377
|
+
protStorage.state = newState;
|
|
214378
|
+
editor.emit("protectionChanged", {
|
|
214379
|
+
editor,
|
|
214380
|
+
state: newState,
|
|
214381
|
+
source: "local-mutation"
|
|
214382
|
+
});
|
|
214383
|
+
return {
|
|
214384
|
+
success: true,
|
|
214385
|
+
state: newState
|
|
214386
|
+
};
|
|
214387
|
+
}
|
|
214388
|
+
});
|
|
214389
|
+
if (options?.dryRun !== true)
|
|
214390
|
+
applyEffectiveEditability(editor);
|
|
214391
|
+
return result.result;
|
|
214392
|
+
}
|
|
214393
|
+
function pmPosToPosition(doc$12, pos) {
|
|
214394
|
+
const resolved = doc$12.resolve(pos);
|
|
214395
|
+
for (let depth = resolved.depth;depth >= 0; depth--) {
|
|
214396
|
+
const blockId = resolved.node(depth).attrs?.sdBlockId;
|
|
214397
|
+
if (blockId)
|
|
214398
|
+
return {
|
|
214399
|
+
blockId,
|
|
214400
|
+
offset: pos - resolved.start(depth)
|
|
214401
|
+
};
|
|
214402
|
+
}
|
|
214403
|
+
return {
|
|
214404
|
+
blockId: "",
|
|
214405
|
+
offset: pos
|
|
214406
|
+
};
|
|
214407
|
+
}
|
|
214408
|
+
function getPermRangesStorage(editor) {
|
|
214409
|
+
return editor.storage.permissionRanges;
|
|
214410
|
+
}
|
|
214411
|
+
function getAllRanges(editor) {
|
|
214412
|
+
return getPermRangesStorage(editor)?.allRanges ?? [];
|
|
214413
|
+
}
|
|
214414
|
+
function toRangeInfo(entry, doc$12) {
|
|
214415
|
+
return {
|
|
214416
|
+
id: entry.id,
|
|
214417
|
+
principal: entry.principal,
|
|
214418
|
+
kind: entry.kind,
|
|
214419
|
+
start: pmPosToPosition(doc$12, entry.from),
|
|
214420
|
+
end: pmPosToPosition(doc$12, entry.to)
|
|
214421
|
+
};
|
|
214422
|
+
}
|
|
214423
|
+
function principalToAttrs(principal) {
|
|
214424
|
+
if (principal.kind === "everyone")
|
|
214425
|
+
return { edGrp: "everyone" };
|
|
214426
|
+
return { ed: principal.id };
|
|
214427
|
+
}
|
|
214428
|
+
function generatePermissionId() {
|
|
214429
|
+
return String(Math.floor(Math.random() * 2000000000));
|
|
214430
|
+
}
|
|
214431
|
+
function permissionRangesListAdapter(editor, input2) {
|
|
214432
|
+
const revision = getRevision(editor);
|
|
214433
|
+
const doc$12 = editor.state.doc;
|
|
214434
|
+
const { total, items: paged } = paginate(getAllRanges(editor).map((entry) => buildDiscoveryItem(entry.id, buildResolvedHandle(`perm:${entry.id}`, "ephemeral", "ext:permissionRange"), toRangeInfo(entry, doc$12))), input2?.offset, input2?.limit);
|
|
214435
|
+
return buildDiscoveryResult({
|
|
214436
|
+
evaluatedRevision: revision,
|
|
214437
|
+
total,
|
|
214438
|
+
items: paged,
|
|
214439
|
+
page: {
|
|
214440
|
+
limit: input2?.limit ?? total,
|
|
214441
|
+
offset: input2?.offset ?? 0,
|
|
214442
|
+
returned: paged.length
|
|
214443
|
+
}
|
|
214444
|
+
});
|
|
214445
|
+
}
|
|
214446
|
+
function permissionRangesGetAdapter(editor, input2) {
|
|
214447
|
+
const entry = getAllRanges(editor).find((r$1) => r$1.id === input2.id);
|
|
214448
|
+
if (!entry)
|
|
214449
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range '${input2.id}' not found.`);
|
|
214450
|
+
return toRangeInfo(entry, editor.state.doc);
|
|
214451
|
+
}
|
|
214452
|
+
function permissionRangesCreateAdapter(editor, input2, options) {
|
|
214453
|
+
rejectTrackedMode("permissionRanges.create", options);
|
|
214454
|
+
const { target, principal, id: callerSuppliedId } = input2;
|
|
214455
|
+
const id2 = callerSuppliedId ?? generatePermissionId();
|
|
214456
|
+
if (getAllRanges(editor).some((r$1) => r$1.id === id2))
|
|
214457
|
+
throw new DocumentApiAdapterError("INVALID_INPUT", `Permission range ID '${id2}' already exists.`);
|
|
214458
|
+
const resolved = resolveSelectionTarget(editor, target);
|
|
214459
|
+
const from$1 = resolved.absFrom;
|
|
214460
|
+
const to = resolved.absTo;
|
|
214461
|
+
const doc$12 = editor.state.doc;
|
|
214462
|
+
if (from$1 >= to || from$1 < 0 || to > doc$12.content.size)
|
|
214463
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", "Target range is invalid or empty.");
|
|
214464
|
+
const attrs = {
|
|
214465
|
+
id: id2,
|
|
214466
|
+
...principalToAttrs(principal)
|
|
214467
|
+
};
|
|
214468
|
+
const $from = doc$12.resolve(from$1);
|
|
214469
|
+
const $to = doc$12.resolve(to);
|
|
214470
|
+
const spansMultipleBlocks = $from.parent !== $to.parent || $from.depth === 0;
|
|
214471
|
+
if (options?.dryRun)
|
|
214472
|
+
return {
|
|
214473
|
+
success: true,
|
|
214474
|
+
range: toRangeInfo({
|
|
214475
|
+
id: id2,
|
|
214476
|
+
principal,
|
|
214477
|
+
kind: spansMultipleBlocks ? "block" : "inline",
|
|
214478
|
+
from: from$1,
|
|
214479
|
+
to,
|
|
214480
|
+
startPos: from$1,
|
|
214481
|
+
endPos: to
|
|
214482
|
+
}, doc$12)
|
|
214483
|
+
};
|
|
214484
|
+
const { tr } = editor.state;
|
|
214485
|
+
tr.setMeta(PERMISSION_MUTATION_META, true);
|
|
214486
|
+
tr.setMeta("addToHistory", false);
|
|
214487
|
+
setTrackChangesSkip(editor, tr);
|
|
214488
|
+
const schema = editor.state.schema;
|
|
214489
|
+
if (spansMultipleBlocks) {
|
|
214490
|
+
const startNode = schema.nodes.permStartBlock?.create(attrs);
|
|
214491
|
+
const endNode = schema.nodes.permEndBlock?.create({ id: id2 });
|
|
214492
|
+
if (!startNode || !endNode)
|
|
214493
|
+
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "Block-level permission range nodes are not available in the schema.");
|
|
214494
|
+
tr.insert(to, endNode);
|
|
214495
|
+
tr.insert(from$1, startNode);
|
|
214496
|
+
} else {
|
|
214497
|
+
const startNode = schema.nodes.permStart?.create(attrs);
|
|
214498
|
+
const endNode = schema.nodes.permEnd?.create({ id: id2 });
|
|
214499
|
+
if (!startNode || !endNode)
|
|
214500
|
+
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "Inline permission range nodes are not available in the schema.");
|
|
214501
|
+
tr.insert(to, endNode);
|
|
214502
|
+
tr.insert(from$1, startNode);
|
|
214503
|
+
}
|
|
214504
|
+
if (editor.view)
|
|
214505
|
+
editor.view.dispatch(tr);
|
|
214506
|
+
else
|
|
214507
|
+
editor.dispatch(tr);
|
|
214508
|
+
const created = getAllRanges(editor).find((r$1) => r$1.id === id2);
|
|
214509
|
+
if (created)
|
|
214510
|
+
return {
|
|
214511
|
+
success: true,
|
|
214512
|
+
range: toRangeInfo(created, editor.state.doc)
|
|
214513
|
+
};
|
|
214514
|
+
return {
|
|
214515
|
+
success: true,
|
|
214516
|
+
range: {
|
|
214517
|
+
id: id2,
|
|
214518
|
+
principal,
|
|
214519
|
+
kind: spansMultipleBlocks ? "block" : "inline",
|
|
214520
|
+
start: pmPosToPosition(editor.state.doc, from$1),
|
|
214521
|
+
end: pmPosToPosition(editor.state.doc, to)
|
|
214522
|
+
}
|
|
214523
|
+
};
|
|
214524
|
+
}
|
|
214525
|
+
function permissionRangesRemoveAdapter(editor, input2, options) {
|
|
214526
|
+
rejectTrackedMode("permissionRanges.remove", options);
|
|
214527
|
+
const { id: id2 } = input2;
|
|
214528
|
+
if (options?.dryRun) {
|
|
214529
|
+
if (!getAllRanges(editor).some((r$1) => r$1.id === id2)) {
|
|
214530
|
+
const hasMarker = findMarkerPositions(editor, id2);
|
|
214531
|
+
if (!hasMarker.start && !hasMarker.end)
|
|
214532
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range '${id2}' not found.`);
|
|
214533
|
+
}
|
|
214534
|
+
return {
|
|
214535
|
+
success: true,
|
|
214536
|
+
id: id2
|
|
214537
|
+
};
|
|
214538
|
+
}
|
|
214539
|
+
const positions = findMarkerPositions(editor, id2);
|
|
214540
|
+
if (!positions.start && !positions.end)
|
|
214541
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range '${id2}' not found.`);
|
|
214542
|
+
const { tr } = editor.state;
|
|
214543
|
+
tr.setMeta(PERMISSION_MUTATION_META, true);
|
|
214544
|
+
tr.setMeta("addToHistory", false);
|
|
214545
|
+
setTrackChangesSkip(editor, tr);
|
|
214546
|
+
const toDelete = [...positions.end ? [positions.end] : [], ...positions.start ? [positions.start] : []].sort((a2, b$1) => b$1.pos - a2.pos);
|
|
214547
|
+
for (const marker of toDelete)
|
|
214548
|
+
tr.delete(marker.pos, marker.pos + marker.nodeSize);
|
|
214549
|
+
if (editor.view)
|
|
214550
|
+
editor.view.dispatch(tr);
|
|
214551
|
+
else
|
|
214552
|
+
editor.dispatch(tr);
|
|
214553
|
+
return {
|
|
214554
|
+
success: true,
|
|
214555
|
+
id: id2
|
|
214556
|
+
};
|
|
214557
|
+
}
|
|
214558
|
+
function permissionRangesUpdatePrincipalAdapter(editor, input2, options) {
|
|
214559
|
+
rejectTrackedMode("permissionRanges.updatePrincipal", options);
|
|
214560
|
+
const { id: id2, principal } = input2;
|
|
214561
|
+
const positions = findMarkerPositions(editor, id2);
|
|
214562
|
+
if (!positions.start)
|
|
214563
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range start marker '${id2}' not found.`);
|
|
214564
|
+
if (options?.dryRun) {
|
|
214565
|
+
const existing = getAllRanges(editor).find((r$1) => r$1.id === id2);
|
|
214566
|
+
if (existing)
|
|
214567
|
+
return {
|
|
214568
|
+
success: true,
|
|
214569
|
+
range: toRangeInfo({
|
|
214570
|
+
...existing,
|
|
214571
|
+
principal
|
|
214572
|
+
}, editor.state.doc)
|
|
214573
|
+
};
|
|
214574
|
+
return {
|
|
214575
|
+
success: true,
|
|
214576
|
+
range: {
|
|
214577
|
+
id: id2,
|
|
214578
|
+
principal,
|
|
214579
|
+
kind: "inline",
|
|
214580
|
+
start: pmPosToPosition(editor.state.doc, positions.start.pos),
|
|
214581
|
+
end: pmPosToPosition(editor.state.doc, positions.start.pos)
|
|
214582
|
+
}
|
|
214583
|
+
};
|
|
214584
|
+
}
|
|
214585
|
+
const { tr } = editor.state;
|
|
214586
|
+
tr.setMeta(PERMISSION_MUTATION_META, true);
|
|
214587
|
+
tr.setMeta("addToHistory", false);
|
|
214588
|
+
setTrackChangesSkip(editor, tr);
|
|
214589
|
+
const { pos, node: node3 } = positions.start;
|
|
214590
|
+
const newAttrs = {
|
|
214591
|
+
...node3.attrs,
|
|
214592
|
+
...principalToAttrs(principal),
|
|
214593
|
+
...principal.kind === "everyone" ? { ed: undefined } : { edGrp: undefined }
|
|
214594
|
+
};
|
|
214595
|
+
tr.setNodeMarkup(pos, undefined, newAttrs);
|
|
214596
|
+
if (editor.view)
|
|
214597
|
+
editor.view.dispatch(tr);
|
|
214598
|
+
else
|
|
214599
|
+
editor.dispatch(tr);
|
|
214600
|
+
const updated = getAllRanges(editor).find((r$1) => r$1.id === id2);
|
|
214601
|
+
if (updated)
|
|
214602
|
+
return {
|
|
214603
|
+
success: true,
|
|
214604
|
+
range: toRangeInfo(updated, editor.state.doc)
|
|
214605
|
+
};
|
|
214606
|
+
return {
|
|
214607
|
+
success: true,
|
|
214608
|
+
range: {
|
|
214609
|
+
id: id2,
|
|
214610
|
+
principal,
|
|
214611
|
+
kind: "inline",
|
|
214612
|
+
start: pmPosToPosition(editor.state.doc, pos),
|
|
214613
|
+
end: pmPosToPosition(editor.state.doc, pos)
|
|
214614
|
+
}
|
|
214615
|
+
};
|
|
214616
|
+
}
|
|
214617
|
+
function setTrackChangesSkip(editor, tr) {
|
|
214618
|
+
try {
|
|
214619
|
+
const trackPlugin = editor.state.plugins.find((p$12) => p$12.key?.includes("trackChangesBase$"));
|
|
214620
|
+
if (trackPlugin)
|
|
214621
|
+
tr.setMeta(trackPlugin, { skip: true });
|
|
214622
|
+
} catch {}
|
|
214623
|
+
}
|
|
214624
|
+
function findMarkerPositions(editor, id2) {
|
|
214625
|
+
let start$1 = null;
|
|
214626
|
+
let end$1 = null;
|
|
214627
|
+
const permStartTypes = new Set(["permStart", "permStartBlock"]);
|
|
214628
|
+
const permEndTypes = new Set(["permEnd", "permEndBlock"]);
|
|
214629
|
+
editor.state.doc.descendants((node3, pos) => {
|
|
214630
|
+
if (start$1 && end$1)
|
|
214631
|
+
return false;
|
|
214632
|
+
const typeName = node3.type.name;
|
|
214633
|
+
if (node3.attrs?.id === id2) {
|
|
214634
|
+
if (permStartTypes.has(typeName))
|
|
214635
|
+
start$1 = {
|
|
214636
|
+
pos,
|
|
214637
|
+
nodeSize: node3.nodeSize,
|
|
214638
|
+
node: { attrs: { ...node3.attrs } }
|
|
214639
|
+
};
|
|
214640
|
+
else if (permEndTypes.has(typeName))
|
|
214641
|
+
end$1 = {
|
|
214642
|
+
pos,
|
|
214643
|
+
nodeSize: node3.nodeSize,
|
|
214644
|
+
node: { attrs: { ...node3.attrs } }
|
|
214645
|
+
};
|
|
214646
|
+
}
|
|
214647
|
+
return true;
|
|
214648
|
+
});
|
|
214649
|
+
return {
|
|
214650
|
+
start: start$1,
|
|
214651
|
+
end: end$1
|
|
214652
|
+
};
|
|
214653
|
+
}
|
|
213414
214654
|
function isSpecialEntry(entry) {
|
|
213415
214655
|
return SPECIAL_NOTE_TYPES.has(entry.type ?? "");
|
|
213416
214656
|
}
|
|
@@ -216743,7 +217983,19 @@ function assembleDocumentApiAdapters(editor) {
|
|
|
216743
217983
|
apply: (input2) => executePlan(editor, input2)
|
|
216744
217984
|
},
|
|
216745
217985
|
diff: createDiffAdapter(editor),
|
|
216746
|
-
history: createHistoryAdapter(editor)
|
|
217986
|
+
history: createHistoryAdapter(editor),
|
|
217987
|
+
protection: {
|
|
217988
|
+
get: () => protectionGetAdapter(editor),
|
|
217989
|
+
setEditingRestriction: (input2, options) => protectionSetEditingRestrictionAdapter(editor, input2, options),
|
|
217990
|
+
clearEditingRestriction: (_input, options) => protectionClearEditingRestrictionAdapter(editor, undefined, options)
|
|
217991
|
+
},
|
|
217992
|
+
permissionRanges: {
|
|
217993
|
+
list: (input2) => permissionRangesListAdapter(editor, input2),
|
|
217994
|
+
get: (input2) => permissionRangesGetAdapter(editor, input2),
|
|
217995
|
+
create: (input2, options) => permissionRangesCreateAdapter(editor, input2, options),
|
|
217996
|
+
remove: (input2, options) => permissionRangesRemoveAdapter(editor, input2, options),
|
|
217997
|
+
updatePrincipal: (input2, options) => permissionRangesUpdatePrincipalAdapter(editor, input2, options)
|
|
217998
|
+
}
|
|
216747
217999
|
};
|
|
216748
218000
|
}
|
|
216749
218001
|
function getDocumentApiAdapters(editor) {
|
|
@@ -236897,16 +238149,7 @@ var Node$13 = class Node$14 {
|
|
|
236897
238149
|
return "default";
|
|
236898
238150
|
}
|
|
236899
238151
|
}
|
|
236900
|
-
}, NodeResizer, PERMISSION_PLUGIN_KEY, EVERYONE_GROUP = "everyone", EMPTY_IDENTIFIER_SET, normalizeIdentifier2 = (value) => typeof value === "string" ? value.trim().toLowerCase() : "",
|
|
236901
|
-
const email = normalizeIdentifier2(editor?.options?.user?.email);
|
|
236902
|
-
if (!email)
|
|
236903
|
-
return EMPTY_IDENTIFIER_SET;
|
|
236904
|
-
const [localPart, domain2] = email.split("@");
|
|
236905
|
-
if (!localPart || !domain2)
|
|
236906
|
-
return EMPTY_IDENTIFIER_SET;
|
|
236907
|
-
const formatted = `${domain2}\\${localPart}`;
|
|
236908
|
-
return formatted ? new Set([formatted]) : EMPTY_IDENTIFIER_SET;
|
|
236909
|
-
}, isEveryoneGroup = (value) => normalizeIdentifier2(value) === EVERYONE_GROUP, isRangeAllowedForUser = (attrs, allowedIdentifiers) => {
|
|
238152
|
+
}, NodeResizer, PERMISSION_MUTATION_META = "permissionRangeMutation", PERMISSION_PLUGIN_KEY, EVERYONE_GROUP = "everyone", EMPTY_IDENTIFIER_SET, normalizeIdentifier2 = (value) => typeof value === "string" ? value.trim().toLowerCase() : "", isEveryoneGroup = (value) => normalizeIdentifier2(value) === EVERYONE_GROUP, isRangeAllowedForUser = (attrs, allowedIdentifiers) => {
|
|
236910
238153
|
if (!attrs)
|
|
236911
238154
|
return false;
|
|
236912
238155
|
if (isEveryoneGroup(attrs.edGrp))
|
|
@@ -236937,40 +238180,66 @@ var Node$13 = class Node$14 {
|
|
|
236937
238180
|
endTypeSet: new Set(endTypes),
|
|
236938
238181
|
allTypeSet: new Set([...startTypes, ...endTypes])
|
|
236939
238182
|
};
|
|
236940
|
-
}, getPermissionNodeId = (node3, pos, fallbackPrefix) => String(node3.attrs?.id ?? `${fallbackPrefix}-${pos}`),
|
|
236941
|
-
|
|
238183
|
+
}, getPermissionNodeId = (node3, pos, fallbackPrefix) => String(node3.attrs?.id ?? `${fallbackPrefix}-${pos}`), derivePrincipal = (attrs) => {
|
|
238184
|
+
if (isEveryoneGroup(attrs?.edGrp))
|
|
238185
|
+
return { kind: "everyone" };
|
|
238186
|
+
if (attrs?.ed)
|
|
238187
|
+
return {
|
|
238188
|
+
kind: "editor",
|
|
238189
|
+
id: String(attrs.ed)
|
|
238190
|
+
};
|
|
238191
|
+
return { kind: "everyone" };
|
|
238192
|
+
}, buildPermissionState = (doc$12, allowedIdentifiers = EMPTY_IDENTIFIER_SET, permTypes, protectionEnforced = false) => {
|
|
238193
|
+
const allRanges = [];
|
|
238194
|
+
const allowedRanges = [];
|
|
236942
238195
|
const openRanges = /* @__PURE__ */ new Map;
|
|
236943
238196
|
const startTypeSet = permTypes?.startTypeSet ?? /* @__PURE__ */ new Set;
|
|
236944
238197
|
const endTypeSet = permTypes?.endTypeSet ?? /* @__PURE__ */ new Set;
|
|
238198
|
+
const blockStartType = doc$12.type.schema?.nodes?.["permStartBlock"];
|
|
238199
|
+
const blockEndType = doc$12.type.schema?.nodes?.["permEndBlock"];
|
|
236945
238200
|
doc$12.descendants((node3, pos) => {
|
|
236946
238201
|
if (startTypeSet.has(node3.type)) {
|
|
236947
238202
|
const id2 = getPermissionNodeId(node3, pos, "permStart");
|
|
236948
238203
|
openRanges.set(id2, {
|
|
236949
238204
|
from: pos + node3.nodeSize,
|
|
236950
|
-
|
|
238205
|
+
startPos: pos,
|
|
238206
|
+
attrs: node3.attrs ?? {},
|
|
238207
|
+
isBlock: node3.type === blockStartType
|
|
236951
238208
|
});
|
|
236952
238209
|
return false;
|
|
236953
238210
|
}
|
|
236954
238211
|
if (endTypeSet.has(node3.type)) {
|
|
236955
238212
|
const id2 = getPermissionNodeId(node3, pos, "permEnd");
|
|
236956
238213
|
const start$1 = openRanges.get(id2);
|
|
236957
|
-
if (start$1
|
|
238214
|
+
if (start$1) {
|
|
236958
238215
|
const to = Math.max(pos, start$1.from);
|
|
236959
|
-
if (to > start$1.from)
|
|
236960
|
-
|
|
238216
|
+
if (to > start$1.from) {
|
|
238217
|
+
const isBlock = start$1.isBlock || node3.type === blockEndType;
|
|
238218
|
+
const entry = {
|
|
236961
238219
|
id: id2,
|
|
236962
238220
|
from: start$1.from,
|
|
236963
|
-
to
|
|
236964
|
-
|
|
236965
|
-
|
|
236966
|
-
|
|
238221
|
+
to,
|
|
238222
|
+
startPos: start$1.startPos,
|
|
238223
|
+
endPos: pos,
|
|
238224
|
+
principal: derivePrincipal(start$1.attrs),
|
|
238225
|
+
kind: isBlock ? "block" : "inline",
|
|
238226
|
+
edGrp: start$1.attrs.edGrp,
|
|
238227
|
+
ed: start$1.attrs.ed
|
|
238228
|
+
};
|
|
238229
|
+
allRanges.push(entry);
|
|
238230
|
+
if (protectionEnforced && isRangeAllowedForUser(start$1.attrs, allowedIdentifiers))
|
|
238231
|
+
allowedRanges.push(entry);
|
|
238232
|
+
}
|
|
236967
238233
|
openRanges.delete(id2);
|
|
238234
|
+
}
|
|
236968
238235
|
return false;
|
|
236969
238236
|
}
|
|
236970
238237
|
});
|
|
236971
238238
|
return {
|
|
236972
|
-
|
|
236973
|
-
|
|
238239
|
+
allRanges,
|
|
238240
|
+
allowedRanges,
|
|
238241
|
+
hasAllowedRanges: allowedRanges.length > 0,
|
|
238242
|
+
ranges: allowedRanges
|
|
236974
238243
|
};
|
|
236975
238244
|
}, collectPermissionTags = (doc$12, permStartTypes, permEndTypes) => {
|
|
236976
238245
|
const tags = /* @__PURE__ */ new Map;
|
|
@@ -237038,7 +238307,7 @@ var Node$13 = class Node$14 {
|
|
|
237038
238307
|
if (!allowedRanges?.length)
|
|
237039
238308
|
return false;
|
|
237040
238309
|
return allowedRanges.some((allowed) => range.from >= allowed.from && range.to <= allowed.to);
|
|
237041
|
-
}, PermissionRanges, FONT_FAMILY_FALLBACKS2, DEFAULT_GENERIC_FALLBACK2 = "sans-serif", normalizeParts = (value) => (value || "").split(",").map((part) => part.trim()).filter(Boolean), splitOutsideQuotes = (str, delimiter) => {
|
|
238310
|
+
}, PermissionRanges, Protection, FONT_FAMILY_FALLBACKS2, DEFAULT_GENERIC_FALLBACK2 = "sans-serif", normalizeParts = (value) => (value || "").split(",").map((part) => part.trim()).filter(Boolean), splitOutsideQuotes = (str, delimiter) => {
|
|
237042
238311
|
if (!str.includes('"') && !str.includes("'"))
|
|
237043
238312
|
return str.split(delimiter).map((p$12) => p$12.trim()).filter(Boolean);
|
|
237044
238313
|
const parts = [];
|
|
@@ -240765,6 +242034,7 @@ var Node$13 = class Node$14 {
|
|
|
240765
242034
|
PermStartBlock,
|
|
240766
242035
|
PermEndBlock,
|
|
240767
242036
|
PermissionRanges,
|
|
242037
|
+
Protection,
|
|
240768
242038
|
VerticalNavigation,
|
|
240769
242039
|
PassthroughInline,
|
|
240770
242040
|
PassthroughBlock,
|
|
@@ -242133,11 +243403,16 @@ var Node$13 = class Node$14 {
|
|
|
242133
243403
|
});
|
|
242134
243404
|
return Object.fromEntries(markEntries);
|
|
242135
243405
|
}
|
|
242136
|
-
}, Commands,
|
|
243406
|
+
}, Commands, dispatchHistoryBoundary = (view) => {
|
|
243407
|
+
const tr = view?.state?.tr;
|
|
243408
|
+
if (!tr)
|
|
243409
|
+
return;
|
|
243410
|
+
view.dispatch?.(closeHistory(tr));
|
|
243411
|
+
}, handleEnter = (editor) => {
|
|
242137
243412
|
const { view } = editor;
|
|
242138
|
-
|
|
243413
|
+
dispatchHistoryBoundary(view);
|
|
242139
243414
|
return editor.commands.first(({ commands: commands$1 }) => [
|
|
242140
|
-
() => commands$1.splitRunToParagraph(),
|
|
243415
|
+
() => commands$1.splitRunToParagraph?.() ?? false,
|
|
242141
243416
|
() => commands$1.newlineInCode(),
|
|
242142
243417
|
() => commands$1.createParagraphNear(),
|
|
242143
243418
|
() => commands$1.liftEmptyBlock(),
|
|
@@ -242145,7 +243420,7 @@ var Node$13 = class Node$14 {
|
|
|
242145
243420
|
]);
|
|
242146
243421
|
}, handleBackspace = (editor) => {
|
|
242147
243422
|
const { view } = editor;
|
|
242148
|
-
|
|
243423
|
+
dispatchHistoryBoundary(view);
|
|
242149
243424
|
return editor.commands.first(({ commands: commands$1, tr }) => [
|
|
242150
243425
|
() => commands$1.undoInputRule(),
|
|
242151
243426
|
() => {
|
|
@@ -242163,7 +243438,7 @@ var Node$13 = class Node$14 {
|
|
|
242163
243438
|
]);
|
|
242164
243439
|
}, handleDelete2 = (editor) => {
|
|
242165
243440
|
const { view } = editor;
|
|
242166
|
-
|
|
243441
|
+
dispatchHistoryBoundary(view);
|
|
242167
243442
|
return editor.commands.first(({ commands: commands$1 }) => [
|
|
242168
243443
|
() => commands$1.deleteSkipEmptyRun(),
|
|
242169
243444
|
() => commands$1.deleteNextToRun(),
|
|
@@ -243080,7 +244355,7 @@ var Node$13 = class Node$14 {
|
|
|
243080
244355
|
console.warn("Failed to initialize developer tools:", error3);
|
|
243081
244356
|
}
|
|
243082
244357
|
}
|
|
243083
|
-
}, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, SNAPSHOT_VERSION3 = "sd-diff-snapshot/v1", PAYLOAD_VERSION3 = "sd-diff-payload/v1", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, EXCLUDED_PLUGIN_KEY_REF_LIST, EXCLUDED_PLUGIN_KEY_REFS, EXCLUDED_PLUGIN_KEY_PREFIXES, TEXT_RANGE_BLOCK_SEP = `
|
|
244358
|
+
}, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, SNAPSHOT_VERSION3 = "sd-diff-snapshot/v1", PAYLOAD_VERSION3 = "sd-diff-payload/v1", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SETTINGS_PART, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, EXCLUDED_PLUGIN_KEY_REF_LIST, EXCLUDED_PLUGIN_KEY_REFS, EXCLUDED_PLUGIN_KEY_PREFIXES, TEXT_RANGE_BLOCK_SEP = `
|
|
243084
244359
|
`, TEXT_RANGE_LEAF_SEP = `
|
|
243085
244360
|
`, DecorationBridge = class DecorationBridge2 {
|
|
243086
244361
|
#applied = /* @__PURE__ */ new WeakMap;
|
|
@@ -252627,9 +253902,9 @@ var Node$13 = class Node$14 {
|
|
|
252627
253902
|
return;
|
|
252628
253903
|
console.log(...args$1);
|
|
252629
253904
|
}, HEADER_FOOTER_INIT_BUDGET_MS = 200, MAX_ZOOM_WARNING_THRESHOLD = 10, MAX_SELECTION_RECTS_PER_USER = 100, SEMANTIC_RESIZE_DEBOUNCE_MS = 120, MIN_SEMANTIC_CONTENT_WIDTH_PX = 1, GLOBAL_PERFORMANCE, PresentationEditor, ICONS, TEXTS, tableActionsOptions;
|
|
252630
|
-
var
|
|
253905
|
+
var init_src_CeG3wOI4_es = __esm(() => {
|
|
252631
253906
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
252632
|
-
|
|
253907
|
+
init_SuperConverter_CMIR0kxi_es();
|
|
252633
253908
|
init_jszip_ChlR43oI_es();
|
|
252634
253909
|
init_uuid_qzgm05fK_es();
|
|
252635
253910
|
init_constants_Qqwopz80_es();
|
|
@@ -270507,75 +271782,49 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270507
271782
|
name: "permissionRanges",
|
|
270508
271783
|
addStorage() {
|
|
270509
271784
|
return {
|
|
270510
|
-
|
|
270511
|
-
|
|
271785
|
+
allRanges: [],
|
|
271786
|
+
allowedRanges: [],
|
|
271787
|
+
hasAllowedRanges: false,
|
|
271788
|
+
ranges: []
|
|
270512
271789
|
};
|
|
270513
271790
|
},
|
|
270514
271791
|
addPmPlugins() {
|
|
270515
271792
|
const editor = this.editor;
|
|
270516
271793
|
const storage = this.storage;
|
|
270517
|
-
|
|
270518
|
-
const getAllowedIdentifiers = () => buildAllowedIdentifierSet(editor);
|
|
270519
|
-
const toggleEditableIfAllowed = (hasAllowedRanges) => {
|
|
270520
|
-
if (!editor || editor.isDestroyed)
|
|
270521
|
-
return;
|
|
270522
|
-
if (editor.options.documentMode !== "viewing")
|
|
270523
|
-
return;
|
|
270524
|
-
if (hasAllowedRanges && !editor.isEditable)
|
|
270525
|
-
editor.setEditable(true, false);
|
|
270526
|
-
else if (!hasAllowedRanges && editor.isEditable)
|
|
270527
|
-
editor.setEditable(false, false);
|
|
270528
|
-
};
|
|
270529
|
-
const updateEditableState = (hasAllowedRanges) => {
|
|
270530
|
-
const nextValue = Boolean(hasAllowedRanges);
|
|
270531
|
-
const previousValue = storage.hasAllowedRanges;
|
|
270532
|
-
storage.hasAllowedRanges = nextValue;
|
|
270533
|
-
if (previousValue === nextValue)
|
|
270534
|
-
return;
|
|
270535
|
-
toggleEditableIfAllowed(nextValue);
|
|
270536
|
-
};
|
|
270537
|
-
if (editor && typeof editor.setDocumentMode === "function") {
|
|
270538
|
-
originalSetDocumentMode = editor.setDocumentMode.bind(editor);
|
|
270539
|
-
editor.setDocumentMode = (mode, caller) => {
|
|
270540
|
-
originalSetDocumentMode(mode, caller);
|
|
270541
|
-
const state = editor.state;
|
|
270542
|
-
if (!state)
|
|
270543
|
-
return;
|
|
270544
|
-
const pluginState = PERMISSION_PLUGIN_KEY.getState(state);
|
|
270545
|
-
if (pluginState)
|
|
270546
|
-
toggleEditableIfAllowed(pluginState.hasAllowedRanges);
|
|
270547
|
-
};
|
|
270548
|
-
}
|
|
271794
|
+
const getAllowedIdentifiers = () => buildAllowedIdentifierSetFromEditor(editor);
|
|
270549
271795
|
return [new Plugin({
|
|
270550
271796
|
key: PERMISSION_PLUGIN_KEY,
|
|
270551
271797
|
state: {
|
|
270552
271798
|
init(_$1, state) {
|
|
270553
271799
|
const permissionTypeInfo = getPermissionTypeInfo(state.schema);
|
|
270554
|
-
const
|
|
271800
|
+
const protectionEnforced = isReadOnlyProtectionRuntimeEnforced(editor);
|
|
271801
|
+
const permissionState = buildPermissionState(state.doc, getAllowedIdentifiers(), permissionTypeInfo, protectionEnforced);
|
|
271802
|
+
storage.allRanges = permissionState.allRanges;
|
|
271803
|
+
storage.allowedRanges = permissionState.allowedRanges;
|
|
271804
|
+
storage.hasAllowedRanges = permissionState.hasAllowedRanges;
|
|
270555
271805
|
storage.ranges = permissionState.ranges;
|
|
270556
|
-
|
|
271806
|
+
applyEffectiveEditability(editor, { refilterRanges: false });
|
|
270557
271807
|
return permissionState;
|
|
270558
271808
|
},
|
|
270559
271809
|
apply(tr, value, _oldState, newState) {
|
|
270560
|
-
|
|
270561
|
-
|
|
270562
|
-
|
|
270563
|
-
|
|
270564
|
-
|
|
270565
|
-
|
|
270566
|
-
|
|
271810
|
+
if (!tr.docChanged)
|
|
271811
|
+
return value;
|
|
271812
|
+
const permissionTypeInfo = getPermissionTypeInfo(newState.schema);
|
|
271813
|
+
const protectionEnforced = isReadOnlyProtectionRuntimeEnforced(editor);
|
|
271814
|
+
const permissionState = buildPermissionState(newState.doc, getAllowedIdentifiers(), permissionTypeInfo, protectionEnforced);
|
|
271815
|
+
storage.allRanges = permissionState.allRanges;
|
|
271816
|
+
storage.allowedRanges = permissionState.allowedRanges;
|
|
271817
|
+
storage.hasAllowedRanges = permissionState.hasAllowedRanges;
|
|
271818
|
+
storage.ranges = permissionState.ranges;
|
|
271819
|
+
applyEffectiveEditability(editor, { refilterRanges: false });
|
|
270567
271820
|
return permissionState;
|
|
270568
271821
|
}
|
|
270569
271822
|
},
|
|
270570
|
-
view() {
|
|
270571
|
-
return { destroy() {
|
|
270572
|
-
if (editor && originalSetDocumentMode)
|
|
270573
|
-
editor.setDocumentMode = originalSetDocumentMode;
|
|
270574
|
-
} };
|
|
270575
|
-
},
|
|
270576
271823
|
appendTransaction(transactions, oldState, newState) {
|
|
270577
271824
|
if (!transactions.some((tr$1) => tr$1.docChanged))
|
|
270578
271825
|
return null;
|
|
271826
|
+
if (transactions.some((tr$1) => tr$1.getMeta?.("permissionRangeMutation")))
|
|
271827
|
+
return null;
|
|
270579
271828
|
if (transactions.some((tr$1) => tr$1.getMeta?.(ySyncPluginKey)))
|
|
270580
271829
|
return null;
|
|
270581
271830
|
const permTypes = getPermissionTypeInfo(newState.schema);
|
|
@@ -270635,11 +271884,15 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270635
271884
|
return true;
|
|
270636
271885
|
if (tr.getMeta?.(ySyncPluginKey))
|
|
270637
271886
|
return true;
|
|
270638
|
-
if (
|
|
271887
|
+
if (tr.getMeta?.("permissionRangeMutation"))
|
|
270639
271888
|
return true;
|
|
270640
|
-
|
|
270641
|
-
|
|
271889
|
+
if (!editor)
|
|
271890
|
+
return true;
|
|
271891
|
+
if (!isReadOnlyProtectionRuntimeEnforced(editor))
|
|
270642
271892
|
return true;
|
|
271893
|
+
const activeRanges = storage.allowedRanges ?? storage.ranges;
|
|
271894
|
+
if (!activeRanges?.length)
|
|
271895
|
+
return false;
|
|
270643
271896
|
const changedRanges = collectChangedRanges(tr);
|
|
270644
271897
|
if (!changedRanges.length)
|
|
270645
271898
|
return true;
|
|
@@ -270647,12 +271900,35 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270647
271900
|
if (!permTypes.startTypes.length || !permTypes.endTypes.length)
|
|
270648
271901
|
return true;
|
|
270649
271902
|
return changedRanges.every((range) => {
|
|
270650
|
-
return isRangeAllowed(trimPermissionTagsFromRange(state.doc, range, permTypes.allTypeSet),
|
|
271903
|
+
return isRangeAllowed(trimPermissionTagsFromRange(state.doc, range, permTypes.allTypeSet), activeRanges);
|
|
270651
271904
|
});
|
|
270652
271905
|
}
|
|
270653
271906
|
})];
|
|
270654
271907
|
}
|
|
270655
271908
|
});
|
|
271909
|
+
Protection = Extension.create({
|
|
271910
|
+
name: "protection",
|
|
271911
|
+
addStorage() {
|
|
271912
|
+
return {
|
|
271913
|
+
state: {
|
|
271914
|
+
editingRestriction: {
|
|
271915
|
+
mode: "none",
|
|
271916
|
+
enforced: false,
|
|
271917
|
+
runtimeEnforced: false,
|
|
271918
|
+
passwordProtected: false,
|
|
271919
|
+
formattingRestricted: false
|
|
271920
|
+
},
|
|
271921
|
+
writeProtection: {
|
|
271922
|
+
enabled: false,
|
|
271923
|
+
passwordProtected: false
|
|
271924
|
+
},
|
|
271925
|
+
readOnlyRecommended: false
|
|
271926
|
+
},
|
|
271927
|
+
initialized: false,
|
|
271928
|
+
editableBaseline: null
|
|
271929
|
+
};
|
|
271930
|
+
}
|
|
271931
|
+
});
|
|
270656
271932
|
FONT_FAMILY_FALLBACKS2 = Object.freeze({
|
|
270657
271933
|
swiss: "Arial, sans-serif",
|
|
270658
271934
|
roman: "Times New Roman, serif",
|
|
@@ -279444,7 +280720,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279444
280720
|
stylesPartDescriptor = {
|
|
279445
280721
|
id: STYLES_PART_ID,
|
|
279446
280722
|
ensurePart(editor) {
|
|
279447
|
-
const converter = getConverter$
|
|
280723
|
+
const converter = getConverter$52(editor);
|
|
279448
280724
|
if (converter?.convertedXml[STYLES_PART_ID])
|
|
279449
280725
|
return converter.convertedXml[STYLES_PART_ID];
|
|
279450
280726
|
return {
|
|
@@ -279459,7 +280735,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279459
280735
|
},
|
|
279460
280736
|
afterCommit(ctx$1) {
|
|
279461
280737
|
if (ctx$1.source.startsWith("collab:remote:")) {
|
|
279462
|
-
const converter = getConverter$
|
|
280738
|
+
const converter = getConverter$52(ctx$1.editor);
|
|
279463
280739
|
if (converter)
|
|
279464
280740
|
try {
|
|
279465
280741
|
converter.translatedLinkedStyles = translateStyleDefinitions(converter.convertedXml);
|
|
@@ -279679,6 +280955,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279679
280955
|
KIND_ORDER = ["header", "footer"];
|
|
279680
280956
|
HEADER_FILE_PATTERN2 = /header(\d+)\.xml$/;
|
|
279681
280957
|
FOOTER_FILE_PATTERN2 = /footer(\d+)\.xml$/;
|
|
280958
|
+
SETTINGS_PART = SETTINGS_PART_PATH;
|
|
279682
280959
|
SPECIAL_NOTE_TYPES = new Set(["separator", "continuationSeparator"]);
|
|
279683
280960
|
RESTART_POLICY_TO_OOXML = {
|
|
279684
280961
|
continuous: "continuous",
|
|
@@ -280051,6 +281328,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280051
281328
|
this.setOptions(resolvedOptions);
|
|
280052
281329
|
this.#createConverter();
|
|
280053
281330
|
initPartsRuntime(this);
|
|
281331
|
+
this.#initProtectionState();
|
|
280054
281332
|
this.#initMedia();
|
|
280055
281333
|
const shouldMountRenderer = this.#shouldMountRenderer();
|
|
280056
281334
|
if (shouldMountRenderer) {
|
|
@@ -280075,6 +281353,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280075
281353
|
if (Boolean(this.options.markdown || this.options.html || this.options.loadFromSchema || this.options.jsonOverride || this.options.mode === "html" || this.options.mode === "text"))
|
|
280076
281354
|
this.migrateListsToV2();
|
|
280077
281355
|
this.setDocumentMode(this.options.documentMode, "init");
|
|
281356
|
+
this.#emitProtectionInit();
|
|
280078
281357
|
this.initializeCollaborationData();
|
|
280079
281358
|
if (!this.options.ydoc && !this.options.isChildEditor)
|
|
280080
281359
|
this.#initComments();
|
|
@@ -280098,18 +281377,42 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280098
281377
|
this.converter = undefined;
|
|
280099
281378
|
if (this.storage.image)
|
|
280100
281379
|
this.storage.image.media = {};
|
|
281380
|
+
const protStorageToReset = getProtectionStorage(this);
|
|
281381
|
+
if (protStorageToReset) {
|
|
281382
|
+
protStorageToReset.state = { ...DEFAULT_PROTECTION_STATE };
|
|
281383
|
+
protStorageToReset.initialized = false;
|
|
281384
|
+
protStorageToReset.editableBaseline = null;
|
|
281385
|
+
}
|
|
280101
281386
|
this.#sourcePath = null;
|
|
280102
281387
|
this.options.initialState = null;
|
|
280103
281388
|
this.options.content = "";
|
|
280104
281389
|
this.options.fileSource = null;
|
|
280105
281390
|
this._state = undefined;
|
|
280106
281391
|
}
|
|
281392
|
+
#initProtectionState() {
|
|
281393
|
+
const protStorage = getProtectionStorage(this);
|
|
281394
|
+
if (!protStorage)
|
|
281395
|
+
return;
|
|
281396
|
+
protStorage.state = parseProtectionState(this.converter ? readSettingsRoot(this.converter) : null);
|
|
281397
|
+
protStorage.initialized = true;
|
|
281398
|
+
}
|
|
281399
|
+
#emitProtectionInit() {
|
|
281400
|
+
const protStorage = getProtectionStorage(this);
|
|
281401
|
+
if (!protStorage?.initialized)
|
|
281402
|
+
return;
|
|
281403
|
+
this.emit("protectionChanged", {
|
|
281404
|
+
editor: this,
|
|
281405
|
+
state: protStorage.state,
|
|
281406
|
+
source: "init"
|
|
281407
|
+
});
|
|
281408
|
+
}
|
|
280107
281409
|
#init() {
|
|
280108
281410
|
this.#createExtensionService();
|
|
280109
281411
|
this.#createCommandService();
|
|
280110
281412
|
this.#createSchema();
|
|
280111
281413
|
this.#createConverter();
|
|
280112
281414
|
initPartsRuntime(this);
|
|
281415
|
+
this.#initProtectionState();
|
|
280113
281416
|
this.#initMedia();
|
|
280114
281417
|
this.on("beforeCreate", this.options.onBeforeCreate);
|
|
280115
281418
|
this.emit("beforeCreate", { editor: this });
|
|
@@ -280153,6 +281456,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280153
281456
|
if (Boolean(this.options.markdown || this.options.html || this.options.loadFromSchema || this.options.jsonOverride || this.options.mode === "html" || this.options.mode === "text"))
|
|
280154
281457
|
this.migrateListsToV2();
|
|
280155
281458
|
this.setDocumentMode(this.options.documentMode, "init");
|
|
281459
|
+
this.#emitProtectionInit();
|
|
280156
281460
|
if (!this.options.ydoc && !this.options.isChildEditor)
|
|
280157
281461
|
this.#initComments();
|
|
280158
281462
|
if (shouldMountRenderer) {
|
|
@@ -280351,6 +281655,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280351
281655
|
if (pm)
|
|
280352
281656
|
pm.classList.remove("view-mode");
|
|
280353
281657
|
}
|
|
281658
|
+
applyEffectiveEditability(this);
|
|
280354
281659
|
}
|
|
280355
281660
|
blur() {
|
|
280356
281661
|
this.view?.dom?.blur();
|
|
@@ -284338,6 +285643,16 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
284338
285643
|
event: "commentsUpdate",
|
|
284339
285644
|
handler: handleCommentsUpdate
|
|
284340
285645
|
});
|
|
285646
|
+
const handleProtectionChanged = () => {
|
|
285647
|
+
this.#updatePermissionOverlay();
|
|
285648
|
+
this.#pendingDocChange = true;
|
|
285649
|
+
this.#scheduleRerender();
|
|
285650
|
+
};
|
|
285651
|
+
this.#editor.on("protectionChanged", handleProtectionChanged);
|
|
285652
|
+
this.#editorListeners.push({
|
|
285653
|
+
event: "protectionChanged",
|
|
285654
|
+
handler: handleProtectionChanged
|
|
285655
|
+
});
|
|
284341
285656
|
}
|
|
284342
285657
|
#setupCollaborationCursors() {
|
|
284343
285658
|
this.#remoteCursorManager?.setup();
|
|
@@ -286364,6 +287679,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
286364
287679
|
this.#errorBannerMessage = null;
|
|
286365
287680
|
}
|
|
286366
287681
|
#isViewLocked() {
|
|
287682
|
+
const protectionStorage = this.#editor?.storage?.protection;
|
|
287683
|
+
if (protectionStorage?.initialized === true && protectionStorage?.state?.editingRestriction?.runtimeEnforced === true)
|
|
287684
|
+
return !!!this.#editor?.storage?.permissionRanges?.hasAllowedRanges;
|
|
286367
287685
|
if (this.#documentMode !== "viewing")
|
|
286368
287686
|
return false;
|
|
286369
287687
|
if (!!this.#editor?.storage?.permissionRanges?.hasAllowedRanges)
|
|
@@ -286536,8 +287854,8 @@ var init_zipper_YmNpPIyc_es = __esm(() => {
|
|
|
286536
287854
|
|
|
286537
287855
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
286538
287856
|
var init_super_editor_es = __esm(() => {
|
|
286539
|
-
|
|
286540
|
-
|
|
287857
|
+
init_src_CeG3wOI4_es();
|
|
287858
|
+
init_SuperConverter_CMIR0kxi_es();
|
|
286541
287859
|
init_jszip_ChlR43oI_es();
|
|
286542
287860
|
init_xml_js_40FWvL78_es();
|
|
286543
287861
|
init_constants_Qqwopz80_es();
|
|
@@ -334956,6 +336274,25 @@ async function getFileChecksum(path2) {
|
|
|
334956
336274
|
}
|
|
334957
336275
|
return createHash2("sha256").update(bytes).digest("hex");
|
|
334958
336276
|
}
|
|
336277
|
+
async function exportOptionalSessionOutput(editor, io, outPath, force) {
|
|
336278
|
+
if (!outPath)
|
|
336279
|
+
return;
|
|
336280
|
+
try {
|
|
336281
|
+
return { output: await exportToPath(editor, outPath, force) };
|
|
336282
|
+
} catch (error4) {
|
|
336283
|
+
const code7 = error4 instanceof CliError ? error4.code : "FILE_WRITE_ERROR";
|
|
336284
|
+
const message = error4 instanceof Error ? error4.message : String(error4);
|
|
336285
|
+
io.warn?.(`[warn] optional export to ${outPath} failed: ${message}
|
|
336286
|
+
`);
|
|
336287
|
+
return {
|
|
336288
|
+
warning: {
|
|
336289
|
+
code: code7,
|
|
336290
|
+
path: outPath,
|
|
336291
|
+
message
|
|
336292
|
+
}
|
|
336293
|
+
};
|
|
336294
|
+
}
|
|
336295
|
+
}
|
|
334959
336296
|
async function exportToPath(editor, outputPath, force = false) {
|
|
334960
336297
|
const exists = await pathExists(outputPath);
|
|
334961
336298
|
if (exists && !force) {
|
|
@@ -336623,18 +337960,6 @@ function buildPrettyOutput2(operationId, document2, result2, outputPath) {
|
|
|
336623
337960
|
const verb = SUCCESS_VERB[operationId];
|
|
336624
337961
|
return outputPath ? `Revision ${document2.revision}: ${verb} -> ${outputPath}` : `Revision ${document2.revision}: ${verb}`;
|
|
336625
337962
|
}
|
|
336626
|
-
async function exportOptionalSessionOutput(editor, outPath, force) {
|
|
336627
|
-
if (!outPath)
|
|
336628
|
-
return;
|
|
336629
|
-
try {
|
|
336630
|
-
return await exportToPath(editor, outPath, force);
|
|
336631
|
-
} catch (error4) {
|
|
336632
|
-
const message = error4 instanceof Error ? error4.message : String(error4);
|
|
336633
|
-
process.stderr.write(`[warn] optional export to ${outPath} failed: ${message}
|
|
336634
|
-
`);
|
|
336635
|
-
return;
|
|
336636
|
-
}
|
|
336637
|
-
}
|
|
336638
337963
|
async function executeMutationOperation(request) {
|
|
336639
337964
|
const { operationId, input: input2, context } = request;
|
|
336640
337965
|
const doc4 = readOptionalString(input2, "doc");
|
|
@@ -336745,7 +338070,7 @@ async function executeMutationOperation(request) {
|
|
|
336745
338070
|
await writeContextMetadata(paths, updatedMetadata);
|
|
336746
338071
|
byteLength3 = workingOutput.byteLength;
|
|
336747
338072
|
}
|
|
336748
|
-
const externalOutput = await exportOptionalSessionOutput(opened.editor, outPath, force);
|
|
338073
|
+
const externalOutput = await exportOptionalSessionOutput(opened.editor, context.io, outPath, force);
|
|
336749
338074
|
const document2 = {
|
|
336750
338075
|
path: updatedMetadata.sourcePath,
|
|
336751
338076
|
source: updatedMetadata.source,
|
|
@@ -336758,9 +338083,16 @@ async function executeMutationOperation(request) {
|
|
|
336758
338083
|
changeMode,
|
|
336759
338084
|
dryRun: false,
|
|
336760
338085
|
context: { dirty: updatedMetadata.dirty, revision: updatedMetadata.revision },
|
|
336761
|
-
output: externalOutput
|
|
338086
|
+
output: externalOutput?.output ?? (externalOutput?.warning ? {
|
|
338087
|
+
path: externalOutput.warning.path,
|
|
338088
|
+
failed: true,
|
|
338089
|
+
error: {
|
|
338090
|
+
code: externalOutput.warning.code,
|
|
338091
|
+
message: externalOutput.warning.message
|
|
338092
|
+
}
|
|
338093
|
+
} : undefined)
|
|
336762
338094
|
}),
|
|
336763
|
-
pretty: buildPrettyOutput2(operationId, document2, result2, externalOutput?.path)
|
|
338095
|
+
pretty: buildPrettyOutput2(operationId, document2, result2, externalOutput?.output?.path)
|
|
336764
338096
|
};
|
|
336765
338097
|
} finally {
|
|
336766
338098
|
opened.dispose();
|
|
@@ -337083,7 +338415,8 @@ var init_command_examples = __esm(() => {
|
|
|
337083
338415
|
insert: [
|
|
337084
338416
|
'superdoc insert --value "Hello, world!"',
|
|
337085
338417
|
'superdoc insert --block-id abc123 --value "Appended text"',
|
|
337086
|
-
'superdoc insert --type markdown --value "## New Section"'
|
|
338418
|
+
'superdoc insert --type markdown --value "## New Section"',
|
|
338419
|
+
'superdoc insert --block-id abc123 --offset 5 --type html --value "<br/>"'
|
|
337087
338420
|
],
|
|
337088
338421
|
replace: [
|
|
337089
338422
|
'superdoc replace --block-id abc123 --start 0 --end 5 --text "Updated"',
|
|
@@ -337143,7 +338476,10 @@ var init_command_examples = __esm(() => {
|
|
|
337143
338476
|
"lists.setType": [
|
|
337144
338477
|
`superdoc lists set-type --target-json '{"kind":"block","nodeType":"listItem","nodeId":"abc123"}' --kind bullet`
|
|
337145
338478
|
],
|
|
337146
|
-
"format.apply": [
|
|
338479
|
+
"format.apply": [
|
|
338480
|
+
`superdoc format apply --block-id abc123 --start 0 --end 10 --inline-json '{"bold":true}'`,
|
|
338481
|
+
`superdoc format apply --block-id abc123 --start 7 --end 14 --inline-json '{"fontSize":16,"fontFamily":"Times New Roman"}'`
|
|
338482
|
+
],
|
|
337147
338483
|
"comments.create": ['superdoc comments create --block-id abc123 --start 0 --end 5 --text "Review this section"'],
|
|
337148
338484
|
"comments.list": ["superdoc comments list"],
|
|
337149
338485
|
"comments.get": ["superdoc comments get --id comment-123"],
|
|
@@ -337156,7 +338492,8 @@ var init_command_examples = __esm(() => {
|
|
|
337156
338492
|
"history.undo": ["superdoc history undo"],
|
|
337157
338493
|
"history.redo": ["superdoc history redo"],
|
|
337158
338494
|
"mutations.apply": [
|
|
337159
|
-
`superdoc mutations apply --atomic true --change-mode direct --steps-json '[{"id":"s1","op":"text.rewrite","where":{"by":"select","select":{"type":"text","pattern":"old"},"require":"first"},"args":{"replacement":{"text":"new"}}}]'
|
|
338495
|
+
`superdoc mutations apply --atomic true --change-mode direct --steps-json '[{"id":"s1","op":"text.rewrite","where":{"by":"select","select":{"type":"text","pattern":"old"},"require":"first"},"args":{"replacement":{"text":"new"}}}]'`,
|
|
338496
|
+
`superdoc mutations apply --atomic true --change-mode direct --steps-json '[{"id":"s1","op":"text.insert","where":{"by":"target","target":{"kind":"selection","start":{"kind":"text","blockId":"abc123","offset":0},"end":{"kind":"text","blockId":"abc123","offset":0}}},"args":{"position":"before","content":{"text":"ALPHA01 "}}},{"id":"s2","op":"format.apply","where":{"by":"target","target":{"kind":"selection","start":{"kind":"text","blockId":"abc123","offset":8},"end":{"kind":"text","blockId":"abc123","offset":15}}},"args":{"inline":{"fontSize":16,"fontFamily":"Times New Roman"}}}]'`
|
|
337160
338497
|
],
|
|
337161
338498
|
"mutations.preview": [
|
|
337162
338499
|
`superdoc mutations preview --atomic true --change-mode direct --steps-json '[{"id":"s1","op":"text.rewrite","where":{"by":"select","select":{"type":"text","pattern":"old"},"require":"first"},"args":{"replacement":{"text":"new"}}}]'`
|
|
@@ -337222,9 +338559,11 @@ function buildHelpText() {
|
|
|
337222
338559
|
const lines = ["Usage: superdoc <command> [options]", ""];
|
|
337223
338560
|
lines.push("Common tasks:");
|
|
337224
338561
|
lines.push(" Find mutation target → query match");
|
|
338562
|
+
lines.push(" Seed a synthetic doc → open --content-override ...");
|
|
337225
338563
|
lines.push(" Insert between list items → lists insert");
|
|
337226
338564
|
lines.push(" Create a paragraph → create paragraph");
|
|
337227
338565
|
lines.push(" Insert inline text → insert");
|
|
338566
|
+
lines.push(" Insert a real tab → insert tab");
|
|
337228
338567
|
lines.push(" Batch formatting changes → mutations apply");
|
|
337229
338568
|
lines.push("");
|
|
337230
338569
|
const categories = new Map;
|
|
@@ -337271,9 +338610,30 @@ var init_commands = __esm(() => {
|
|
|
337271
338610
|
init_command_examples();
|
|
337272
338611
|
init_operation_set();
|
|
337273
338612
|
CLI_ONLY_OVERRIDES = {
|
|
337274
|
-
open: {
|
|
338613
|
+
open: {
|
|
338614
|
+
mutates: true,
|
|
338615
|
+
examples: [
|
|
338616
|
+
"superdoc open my-doc.docx",
|
|
338617
|
+
'superdoc open --content-override "# Title\\n\\nBody text" --override-type markdown',
|
|
338618
|
+
"superdoc open template.docx --content-override '<p>ALPHA01</p><p>BRAVO02</p>' --override-type html"
|
|
338619
|
+
]
|
|
338620
|
+
},
|
|
337275
338621
|
save: { mutates: true, examples: ["superdoc save", "superdoc save --out copy.docx"] },
|
|
337276
338622
|
close: { mutates: true, examples: ["superdoc close"] },
|
|
338623
|
+
insertTab: {
|
|
338624
|
+
mutates: true,
|
|
338625
|
+
examples: [
|
|
338626
|
+
"superdoc insert tab --block-id abc123 --offset 5",
|
|
338627
|
+
`superdoc insert tab --target-json '{"kind":"selection","start":{"kind":"text","blockId":"abc123","offset":5},"end":{"kind":"text","blockId":"abc123","offset":5}}'`
|
|
338628
|
+
]
|
|
338629
|
+
},
|
|
338630
|
+
insertLineBreak: {
|
|
338631
|
+
mutates: true,
|
|
338632
|
+
examples: [
|
|
338633
|
+
"superdoc insert line-break --block-id abc123 --offset 5",
|
|
338634
|
+
`superdoc insert line-break --target-json '{"kind":"selection","start":{"kind":"text","blockId":"abc123","offset":5},"end":{"kind":"text","blockId":"abc123","offset":5}}'`
|
|
338635
|
+
]
|
|
338636
|
+
},
|
|
337277
338637
|
status: { mutates: false, examples: ["superdoc status"] },
|
|
337278
338638
|
describe: { mutates: false, examples: ["superdoc describe"] },
|
|
337279
338639
|
describeCommand: { mutates: false, examples: ["superdoc describe command find"] },
|
|
@@ -337676,7 +339036,7 @@ function deriveOptionSpecs(operationId, params4) {
|
|
|
337676
339036
|
}
|
|
337677
339037
|
return specs;
|
|
337678
339038
|
}
|
|
337679
|
-
var DOC_PARAM, SESSION_PARAM, OUT_PARAM, FORCE_PARAM, DRY_RUN_PARAM, CHANGE_MODE_PARAM, EXPECTED_REVISION_PARAM, USER_NAME_PARAM, USER_EMAIL_PARAM, PASSWORD_PARAM, AGENT_HIDDEN_PARAM_NAMES, OPERATION_CONSTRAINTS, PARAM_FLAG_OVERRIDES, DOC_FIND_SELECT_SCHEMA, PARAM_SCHEMA_OVERRIDES, PARAM_EXCLUSIONS, TEXT_TARGET_FLAT_PARAMS, TEXT_TARGET_FLAT_PARAMS_AGENT_HIDDEN, LIST_TARGET_FLAT_PARAMS, FORMAT_OPERATION_IDS, EXTRA_CLI_PARAMS, CLI_ONLY_METADATA, CLI_OPERATION_METADATA, OPTION_FLAG_ALIASES, CLI_OPERATION_OPTION_SPECS;
|
|
339039
|
+
var DOC_PARAM, SESSION_PARAM, OUT_PARAM, FORCE_PARAM, DRY_RUN_PARAM, CHANGE_MODE_PARAM, EXPECTED_REVISION_PARAM, USER_NAME_PARAM, USER_EMAIL_PARAM, PASSWORD_PARAM, AGENT_HIDDEN_PARAM_NAMES, OPERATION_CONSTRAINTS, PARAM_FLAG_OVERRIDES, DOC_FIND_SELECT_SCHEMA, PARAM_SCHEMA_OVERRIDES, PARAM_EXCLUSIONS, TEXT_TARGET_FLAT_PARAMS, TEXT_TARGET_FLAT_PARAMS_AGENT_HIDDEN, SELECTION_TARGET_JSON_PARAM, INSERT_REF_PARAM, LIST_TARGET_FLAT_PARAMS, FORMAT_OPERATION_IDS, EXTRA_CLI_PARAMS, CLI_ONLY_METADATA, CLI_OPERATION_METADATA, OPTION_FLAG_ALIASES, CLI_OPERATION_OPTION_SPECS;
|
|
337680
339040
|
var init_operation_params = __esm(() => {
|
|
337681
339041
|
init_src();
|
|
337682
339042
|
init_commands();
|
|
@@ -337822,6 +339182,19 @@ var init_operation_params = __esm(() => {
|
|
|
337822
339182
|
...p4,
|
|
337823
339183
|
agentVisible: false
|
|
337824
339184
|
}));
|
|
339185
|
+
SELECTION_TARGET_JSON_PARAM = {
|
|
339186
|
+
name: "target",
|
|
339187
|
+
kind: "jsonFlag",
|
|
339188
|
+
flag: "target-json",
|
|
339189
|
+
type: "json",
|
|
339190
|
+
description: "Collapsed text insertion point as SelectionTarget JSON."
|
|
339191
|
+
};
|
|
339192
|
+
INSERT_REF_PARAM = {
|
|
339193
|
+
name: "ref",
|
|
339194
|
+
kind: "flag",
|
|
339195
|
+
type: "string",
|
|
339196
|
+
description: "Mutation-ready ref returned by query.match or ranges.resolve."
|
|
339197
|
+
};
|
|
337825
339198
|
LIST_TARGET_FLAT_PARAMS = [
|
|
337826
339199
|
{ name: "nodeId", kind: "flag", flag: "node-id", type: "string", description: "Node ID of the target list item." }
|
|
337827
339200
|
];
|
|
@@ -338325,6 +339698,54 @@ var init_operation_params = __esm(() => {
|
|
|
338325
339698
|
params: [SESSION_PARAM, { name: "discard", kind: "flag", type: "boolean" }],
|
|
338326
339699
|
constraints: null
|
|
338327
339700
|
},
|
|
339701
|
+
"doc.insertTab": {
|
|
339702
|
+
command: "insert tab",
|
|
339703
|
+
positionalParams: ["doc"],
|
|
339704
|
+
docRequirement: "none",
|
|
339705
|
+
params: [
|
|
339706
|
+
DOC_PARAM,
|
|
339707
|
+
SESSION_PARAM,
|
|
339708
|
+
OUT_PARAM,
|
|
339709
|
+
FORCE_PARAM,
|
|
339710
|
+
EXPECTED_REVISION_PARAM,
|
|
339711
|
+
SELECTION_TARGET_JSON_PARAM,
|
|
339712
|
+
INSERT_REF_PARAM,
|
|
339713
|
+
...TEXT_TARGET_FLAT_PARAMS,
|
|
339714
|
+
{
|
|
339715
|
+
name: "offset",
|
|
339716
|
+
kind: "flag",
|
|
339717
|
+
type: "number",
|
|
339718
|
+
description: "Character offset for insertion (alias for --start/--end with the same value)."
|
|
339719
|
+
}
|
|
339720
|
+
],
|
|
339721
|
+
constraints: {
|
|
339722
|
+
mutuallyExclusive: [["target", "ref"]]
|
|
339723
|
+
}
|
|
339724
|
+
},
|
|
339725
|
+
"doc.insertLineBreak": {
|
|
339726
|
+
command: "insert line-break",
|
|
339727
|
+
positionalParams: ["doc"],
|
|
339728
|
+
docRequirement: "none",
|
|
339729
|
+
params: [
|
|
339730
|
+
DOC_PARAM,
|
|
339731
|
+
SESSION_PARAM,
|
|
339732
|
+
OUT_PARAM,
|
|
339733
|
+
FORCE_PARAM,
|
|
339734
|
+
EXPECTED_REVISION_PARAM,
|
|
339735
|
+
SELECTION_TARGET_JSON_PARAM,
|
|
339736
|
+
INSERT_REF_PARAM,
|
|
339737
|
+
...TEXT_TARGET_FLAT_PARAMS,
|
|
339738
|
+
{
|
|
339739
|
+
name: "offset",
|
|
339740
|
+
kind: "flag",
|
|
339741
|
+
type: "number",
|
|
339742
|
+
description: "Character offset for insertion (alias for --start/--end with the same value)."
|
|
339743
|
+
}
|
|
339744
|
+
],
|
|
339745
|
+
constraints: {
|
|
339746
|
+
mutuallyExclusive: [["target", "ref"]]
|
|
339747
|
+
}
|
|
339748
|
+
},
|
|
338328
339749
|
"doc.status": {
|
|
338329
339750
|
command: "status",
|
|
338330
339751
|
positionalParams: [],
|
|
@@ -339631,6 +341052,261 @@ var init_close = __esm(() => {
|
|
|
339631
341052
|
init_context();
|
|
339632
341053
|
});
|
|
339633
341054
|
|
|
341055
|
+
// src/commands/insert-inline-special.ts
|
|
341056
|
+
function isRecord7(value2) {
|
|
341057
|
+
return typeof value2 === "object" && value2 != null && !Array.isArray(value2);
|
|
341058
|
+
}
|
|
341059
|
+
function isSelectionTarget3(value2) {
|
|
341060
|
+
return isRecord7(value2) && value2.kind === "selection" && isRecord7(value2.start) && isRecord7(value2.end);
|
|
341061
|
+
}
|
|
341062
|
+
function isCollapsedTextSelectionTarget(target2) {
|
|
341063
|
+
return target2.start.kind === "text" && target2.end.kind === "text" && target2.start.blockId === target2.end.blockId && target2.start.offset === target2.end.offset;
|
|
341064
|
+
}
|
|
341065
|
+
function buildPrettyOutput3(kind2, revision, outputPath) {
|
|
341066
|
+
const label2 = COMMAND_BY_KIND[kind2].label;
|
|
341067
|
+
return outputPath ? `Revision ${revision}: inserted ${label2} -> ${outputPath}` : `Revision ${revision}: inserted ${label2}`;
|
|
341068
|
+
}
|
|
341069
|
+
async function resolveInsertionPoint(editor, input2, kind2) {
|
|
341070
|
+
const apiInput = extractInvokeInput("insert", input2);
|
|
341071
|
+
if (!isRecord7(apiInput)) {
|
|
341072
|
+
throw new CliError("INVALID_ARGUMENT", `insert ${COMMAND_BY_KIND[kind2].label}: invalid target input.`);
|
|
341073
|
+
}
|
|
341074
|
+
const ref4 = typeof apiInput.ref === "string" ? apiInput.ref : undefined;
|
|
341075
|
+
const rawTarget = apiInput.target;
|
|
341076
|
+
if (ref4) {
|
|
341077
|
+
const resolved = editor.doc.invoke({
|
|
341078
|
+
operationId: "ranges.resolve",
|
|
341079
|
+
input: {
|
|
341080
|
+
start: { kind: "ref", ref: ref4, boundary: "start" },
|
|
341081
|
+
end: { kind: "ref", ref: ref4, boundary: "start" }
|
|
341082
|
+
}
|
|
341083
|
+
});
|
|
341084
|
+
if (!isSelectionTarget3(resolved?.target) || !isCollapsedTextSelectionTarget(resolved.target)) {
|
|
341085
|
+
throw new CliError("INVALID_TARGET", `insert ${COMMAND_BY_KIND[kind2].label}: ref must resolve to a collapsed text insertion point.`);
|
|
341086
|
+
}
|
|
341087
|
+
const collapsedTarget = {
|
|
341088
|
+
kind: "text",
|
|
341089
|
+
blockId: resolved.target.start.blockId,
|
|
341090
|
+
range: { start: resolved.target.start.offset, end: resolved.target.start.offset }
|
|
341091
|
+
};
|
|
341092
|
+
const resolvedRange = resolveSelectionTarget(editor, resolved.target);
|
|
341093
|
+
return {
|
|
341094
|
+
target: collapsedTarget,
|
|
341095
|
+
range: { from: resolvedRange.absFrom, to: resolvedRange.absTo }
|
|
341096
|
+
};
|
|
341097
|
+
}
|
|
341098
|
+
if (rawTarget !== undefined) {
|
|
341099
|
+
if (!isSelectionTarget3(rawTarget)) {
|
|
341100
|
+
throw new CliError("INVALID_TARGET", `insert ${COMMAND_BY_KIND[kind2].label}: target must be a collapsed text selection.`);
|
|
341101
|
+
}
|
|
341102
|
+
const selectionTarget = rawTarget;
|
|
341103
|
+
if (!isCollapsedTextSelectionTarget(selectionTarget)) {
|
|
341104
|
+
throw new CliError("INVALID_TARGET", `insert ${COMMAND_BY_KIND[kind2].label}: target must be a collapsed text selection.`);
|
|
341105
|
+
}
|
|
341106
|
+
const resolvedRange = resolveSelectionTarget(editor, selectionTarget);
|
|
341107
|
+
return {
|
|
341108
|
+
target: {
|
|
341109
|
+
kind: "text",
|
|
341110
|
+
blockId: selectionTarget.start.blockId,
|
|
341111
|
+
range: { start: selectionTarget.start.offset, end: selectionTarget.start.offset }
|
|
341112
|
+
},
|
|
341113
|
+
range: { from: resolvedRange.absFrom, to: resolvedRange.absTo }
|
|
341114
|
+
};
|
|
341115
|
+
}
|
|
341116
|
+
const fallback = resolveDefaultInsertTarget(editor);
|
|
341117
|
+
if (!fallback) {
|
|
341118
|
+
throw new CliError("TARGET_NOT_FOUND", `insert ${COMMAND_BY_KIND[kind2].label}: no writable text block is available. Pass an explicit collapsed text target.`);
|
|
341119
|
+
}
|
|
341120
|
+
if (fallback.kind === "structural-end") {
|
|
341121
|
+
return {
|
|
341122
|
+
kind: "structural-end",
|
|
341123
|
+
target: { kind: "text", blockId: "", range: { start: 0, end: 0 } },
|
|
341124
|
+
insertPos: fallback.insertPos
|
|
341125
|
+
};
|
|
341126
|
+
}
|
|
341127
|
+
return {
|
|
341128
|
+
kind: "text-block",
|
|
341129
|
+
target: fallback.target,
|
|
341130
|
+
range: fallback.range
|
|
341131
|
+
};
|
|
341132
|
+
}
|
|
341133
|
+
function executeInlineSpecialInsert(editor, kind2, insertionPoint) {
|
|
341134
|
+
const commandName = kind2 === "tab" ? "insertTabNode" : "insertLineBreak";
|
|
341135
|
+
const commands2 = editor.commands;
|
|
341136
|
+
const command2 = commands2?.[commandName];
|
|
341137
|
+
if (typeof command2 !== "function") {
|
|
341138
|
+
throw new CliError("CAPABILITY_UNAVAILABLE", `insert ${COMMAND_BY_KIND[kind2].label}: ${commandName} is unavailable.`);
|
|
341139
|
+
}
|
|
341140
|
+
let chain = editor.chain();
|
|
341141
|
+
if (insertionPoint.kind === "structural-end") {
|
|
341142
|
+
if (typeof commands2?.insertParagraphAt !== "function") {
|
|
341143
|
+
throw new CliError("CAPABILITY_UNAVAILABLE", `insert ${COMMAND_BY_KIND[kind2].label}: insertParagraphAt is unavailable.`);
|
|
341144
|
+
}
|
|
341145
|
+
chain = chain.insertParagraphAt({ pos: insertionPoint.insertPos, tracked: false }).setTextSelection({ from: insertionPoint.insertPos + 1, to: insertionPoint.insertPos + 1 });
|
|
341146
|
+
} else {
|
|
341147
|
+
const { from: from5, to } = insertionPoint.range;
|
|
341148
|
+
if (from5 !== to) {
|
|
341149
|
+
throw new CliError("INVALID_TARGET", `insert ${COMMAND_BY_KIND[kind2].label}: target must be collapsed to a single insertion point.`);
|
|
341150
|
+
}
|
|
341151
|
+
chain = chain.setMeta("inputType", "programmatic").setMeta("skipTrackChanges", true).setTextSelection({ from: from5, to });
|
|
341152
|
+
}
|
|
341153
|
+
chain = kind2 === "tab" ? chain.insertTabNode() : chain.insertLineBreak();
|
|
341154
|
+
if (chain.run() !== true) {
|
|
341155
|
+
throw new CliError("COMMAND_FAILED", `insert ${COMMAND_BY_KIND[kind2].label}: editor command returned false.`);
|
|
341156
|
+
}
|
|
341157
|
+
}
|
|
341158
|
+
function buildSuccessData(kind2, document2, target2, revision, output) {
|
|
341159
|
+
return {
|
|
341160
|
+
document: document2,
|
|
341161
|
+
receipt: {
|
|
341162
|
+
success: true,
|
|
341163
|
+
resolution: {
|
|
341164
|
+
target: target2
|
|
341165
|
+
}
|
|
341166
|
+
},
|
|
341167
|
+
inserted: { kind: kind2 },
|
|
341168
|
+
context: { dirty: true, revision },
|
|
341169
|
+
output: output?.output ?? (output?.warning ? {
|
|
341170
|
+
path: output.warning.path,
|
|
341171
|
+
failed: true,
|
|
341172
|
+
error: {
|
|
341173
|
+
code: output.warning.code,
|
|
341174
|
+
message: output.warning.message
|
|
341175
|
+
}
|
|
341176
|
+
} : undefined)
|
|
341177
|
+
};
|
|
341178
|
+
}
|
|
341179
|
+
async function runInsertInlineSpecial(kind2, tokens, context) {
|
|
341180
|
+
const commandSpec = COMMAND_BY_KIND[kind2];
|
|
341181
|
+
const { parsed, help } = parseOperationArgs(commandSpec.operationId, tokens, {
|
|
341182
|
+
commandName: `insert ${kind2 === "tab" ? "tab" : "line-break"}`
|
|
341183
|
+
});
|
|
341184
|
+
if (help || getBooleanOption(parsed, "help")) {
|
|
341185
|
+
return {
|
|
341186
|
+
command: kind2 === "tab" ? "insert tab" : "insert line-break",
|
|
341187
|
+
data: {
|
|
341188
|
+
usage: [
|
|
341189
|
+
`superdoc insert ${kind2 === "tab" ? "tab" : "line-break"} [doc] [--target-json '{...}'|--block-id <id> --offset <n>]`,
|
|
341190
|
+
`superdoc insert ${kind2 === "tab" ? "tab" : "line-break"} [doc] [--ref <ref>] [--out <path>]`
|
|
341191
|
+
]
|
|
341192
|
+
},
|
|
341193
|
+
pretty: [
|
|
341194
|
+
"Usage:",
|
|
341195
|
+
` superdoc insert ${kind2 === "tab" ? "tab" : "line-break"} [doc] [--target-json '{...}'|--block-id <id> --offset <n>]`,
|
|
341196
|
+
` superdoc insert ${kind2 === "tab" ? "tab" : "line-break"} [doc] [--ref <ref>] [--out <path>]`
|
|
341197
|
+
].join(`
|
|
341198
|
+
`)
|
|
341199
|
+
};
|
|
341200
|
+
}
|
|
341201
|
+
const { doc: doc4 } = resolveDocArg(parsed, `insert ${COMMAND_BY_KIND[kind2].label}`);
|
|
341202
|
+
const outPath = getStringOption(parsed, "out");
|
|
341203
|
+
const force = getBooleanOption(parsed, "force");
|
|
341204
|
+
const expectedRevisionRaw = parsed.options.expectedRevision;
|
|
341205
|
+
const expectedRevision = typeof expectedRevisionRaw === "number" ? expectedRevisionRaw : undefined;
|
|
341206
|
+
const commandName = kind2 === "tab" ? "insert tab" : "insert line-break";
|
|
341207
|
+
const input2 = parsed.options;
|
|
341208
|
+
if (doc4 && expectedRevision != null) {
|
|
341209
|
+
throw new CliError("INVALID_ARGUMENT", `${commandName}: --expected-revision is only supported with an active open context.`);
|
|
341210
|
+
}
|
|
341211
|
+
if (doc4) {
|
|
341212
|
+
if (!outPath) {
|
|
341213
|
+
throw new CliError("MISSING_REQUIRED", `${commandName}: missing required --out.`);
|
|
341214
|
+
}
|
|
341215
|
+
const source = doc4 === "-" ? "stdin" : "path";
|
|
341216
|
+
const opened = await openDocument(doc4, context.io);
|
|
341217
|
+
try {
|
|
341218
|
+
const resolved = await resolveInsertionPoint(opened.editor, input2, kind2);
|
|
341219
|
+
executeInlineSpecialInsert(opened.editor, kind2, resolved);
|
|
341220
|
+
const output = await exportToPath(opened.editor, outPath, force);
|
|
341221
|
+
const document2 = {
|
|
341222
|
+
path: source === "path" ? doc4 : undefined,
|
|
341223
|
+
source,
|
|
341224
|
+
byteLength: opened.meta.byteLength,
|
|
341225
|
+
revision: 0
|
|
341226
|
+
};
|
|
341227
|
+
return {
|
|
341228
|
+
command: commandName,
|
|
341229
|
+
data: buildSuccessData(kind2, document2, resolved.target, 0, { output }),
|
|
341230
|
+
pretty: buildPrettyOutput3(kind2, 0, output.path)
|
|
341231
|
+
};
|
|
341232
|
+
} finally {
|
|
341233
|
+
opened.dispose();
|
|
341234
|
+
}
|
|
341235
|
+
}
|
|
341236
|
+
return withActiveContext(context.io, commandName, async ({ metadata, paths }) => {
|
|
341237
|
+
assertExpectedRevision(metadata, expectedRevision);
|
|
341238
|
+
const isHostMode = context.executionMode === "host" && context.sessionPool != null;
|
|
341239
|
+
const opened = await openSessionDocument(paths.workingDocPath, context.io, metadata, {
|
|
341240
|
+
sessionId: context.sessionId ?? metadata.contextId,
|
|
341241
|
+
executionMode: context.executionMode,
|
|
341242
|
+
sessionPool: context.sessionPool
|
|
341243
|
+
});
|
|
341244
|
+
try {
|
|
341245
|
+
const resolved = await resolveInsertionPoint(opened.editor, input2, kind2);
|
|
341246
|
+
executeInlineSpecialInsert(opened.editor, kind2, resolved);
|
|
341247
|
+
let updatedMetadata;
|
|
341248
|
+
let byteLength3;
|
|
341249
|
+
if (isHostMode) {
|
|
341250
|
+
context.sessionPool.markDirty(metadata.contextId);
|
|
341251
|
+
updatedMetadata = markContextUpdated(context.io, metadata, {
|
|
341252
|
+
dirty: true,
|
|
341253
|
+
revision: metadata.revision + 1
|
|
341254
|
+
});
|
|
341255
|
+
await writeContextMetadata(paths, updatedMetadata);
|
|
341256
|
+
context.sessionPool.updateMetadataRevision(metadata.contextId, updatedMetadata.revision);
|
|
341257
|
+
byteLength3 = opened.meta.byteLength;
|
|
341258
|
+
} else if (metadata.sessionType === "collab") {
|
|
341259
|
+
const synced = await syncCollaborativeSessionSnapshot(context.io, metadata, paths, opened.editor);
|
|
341260
|
+
updatedMetadata = synced.updatedMetadata;
|
|
341261
|
+
byteLength3 = synced.output.byteLength;
|
|
341262
|
+
} else {
|
|
341263
|
+
const workingOutput = await exportToPath(opened.editor, paths.workingDocPath, true);
|
|
341264
|
+
updatedMetadata = markContextUpdated(context.io, metadata, {
|
|
341265
|
+
dirty: true,
|
|
341266
|
+
revision: metadata.revision + 1
|
|
341267
|
+
});
|
|
341268
|
+
await writeContextMetadata(paths, updatedMetadata);
|
|
341269
|
+
byteLength3 = workingOutput.byteLength;
|
|
341270
|
+
}
|
|
341271
|
+
const externalOutput = await exportOptionalSessionOutput(opened.editor, context.io, outPath, force);
|
|
341272
|
+
const document2 = {
|
|
341273
|
+
path: updatedMetadata.sourcePath,
|
|
341274
|
+
source: updatedMetadata.source,
|
|
341275
|
+
byteLength: byteLength3,
|
|
341276
|
+
revision: updatedMetadata.revision
|
|
341277
|
+
};
|
|
341278
|
+
return {
|
|
341279
|
+
command: commandName,
|
|
341280
|
+
data: buildSuccessData(kind2, document2, resolved.target, updatedMetadata.revision, externalOutput),
|
|
341281
|
+
pretty: buildPrettyOutput3(kind2, updatedMetadata.revision, externalOutput?.output?.path)
|
|
341282
|
+
};
|
|
341283
|
+
} finally {
|
|
341284
|
+
opened.dispose();
|
|
341285
|
+
}
|
|
341286
|
+
}, context.sessionId, context.executionMode);
|
|
341287
|
+
}
|
|
341288
|
+
function runInsertTab(tokens, context) {
|
|
341289
|
+
return runInsertInlineSpecial("tab", tokens, context);
|
|
341290
|
+
}
|
|
341291
|
+
function runInsertLineBreak(tokens, context) {
|
|
341292
|
+
return runInsertInlineSpecial("lineBreak", tokens, context);
|
|
341293
|
+
}
|
|
341294
|
+
var COMMAND_BY_KIND;
|
|
341295
|
+
var init_insert_inline_special = __esm(() => {
|
|
341296
|
+
init_super_editor_es();
|
|
341297
|
+
init_args();
|
|
341298
|
+
init_context();
|
|
341299
|
+
init_document();
|
|
341300
|
+
init_errors();
|
|
341301
|
+
init_invoke_input();
|
|
341302
|
+
init_operation_args();
|
|
341303
|
+
init_session_collab();
|
|
341304
|
+
COMMAND_BY_KIND = {
|
|
341305
|
+
tab: { operationId: "doc.insertTab", label: "tab" },
|
|
341306
|
+
lineBreak: { operationId: "doc.insertLineBreak", label: "line break" }
|
|
341307
|
+
};
|
|
341308
|
+
});
|
|
341309
|
+
|
|
339634
341310
|
// src/lib/open-password.ts
|
|
339635
341311
|
function resolvePassword(explicit, allowEnvFallback = true) {
|
|
339636
341312
|
if (explicit != null)
|
|
@@ -340160,6 +341836,7 @@ function getLegacyRunner(operationId) {
|
|
|
340160
341836
|
var LEGACY_RUNNERS;
|
|
340161
341837
|
var init_legacy_operation_dispatch = __esm(() => {
|
|
340162
341838
|
init_close();
|
|
341839
|
+
init_insert_inline_special();
|
|
340163
341840
|
init_open();
|
|
340164
341841
|
init_save();
|
|
340165
341842
|
init_session_close();
|
|
@@ -340170,6 +341847,8 @@ var init_legacy_operation_dispatch = __esm(() => {
|
|
|
340170
341847
|
"doc.open": runOpen,
|
|
340171
341848
|
"doc.save": runSave,
|
|
340172
341849
|
"doc.close": runClose,
|
|
341850
|
+
"doc.insertTab": runInsertTab,
|
|
341851
|
+
"doc.insertLineBreak": runInsertLineBreak,
|
|
340173
341852
|
"doc.session.list": runSessionList,
|
|
340174
341853
|
"doc.session.save": runSessionSave,
|
|
340175
341854
|
"doc.session.close": runSessionClose,
|
|
@@ -340185,6 +341864,8 @@ var init_manual_command_allowlist = __esm(() => {
|
|
|
340185
341864
|
"open",
|
|
340186
341865
|
"save",
|
|
340187
341866
|
"close",
|
|
341867
|
+
"insert tab",
|
|
341868
|
+
"insert line-break",
|
|
340188
341869
|
"session list",
|
|
340189
341870
|
"session save",
|
|
340190
341871
|
"session close",
|
|
@@ -340195,6 +341876,8 @@ var init_manual_command_allowlist = __esm(() => {
|
|
|
340195
341876
|
"doc.open",
|
|
340196
341877
|
"doc.save",
|
|
340197
341878
|
"doc.close",
|
|
341879
|
+
"doc.insertTab",
|
|
341880
|
+
"doc.insertLineBreak",
|
|
340198
341881
|
"doc.session.list",
|
|
340199
341882
|
"doc.session.save",
|
|
340200
341883
|
"doc.session.close",
|
|
@@ -346326,35 +348009,61 @@ var init_uninstall = __esm(() => {
|
|
|
346326
348009
|
import { readFileSync } from "node:fs";
|
|
346327
348010
|
import { dirname as dirname3, resolve as resolve3 } from "node:path";
|
|
346328
348011
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
346329
|
-
function
|
|
346330
|
-
|
|
346331
|
-
|
|
346332
|
-
|
|
348012
|
+
function parsePackageJson(rawPackageJson) {
|
|
348013
|
+
try {
|
|
348014
|
+
return JSON.parse(rawPackageJson);
|
|
348015
|
+
} catch {
|
|
348016
|
+
return null;
|
|
348017
|
+
}
|
|
348018
|
+
}
|
|
348019
|
+
function isSupportedCliPackageName(name2) {
|
|
348020
|
+
return typeof name2 === "string" && (name2 === CLI_PACKAGE_NAME || name2.startsWith(`${CLI_PACKAGE_NAME}-`));
|
|
348021
|
+
}
|
|
348022
|
+
function resolveCliPackagePath(moduleUrl) {
|
|
348023
|
+
let currentDir = dirname3(fileURLToPath2(moduleUrl));
|
|
348024
|
+
while (true) {
|
|
348025
|
+
const packageJsonPath = resolve3(currentDir, "package.json");
|
|
348026
|
+
try {
|
|
348027
|
+
const rawPackageJson = readFileSync(packageJsonPath, "utf8");
|
|
348028
|
+
const parsed = parsePackageJson(rawPackageJson);
|
|
348029
|
+
if (isSupportedCliPackageName(parsed?.name)) {
|
|
348030
|
+
return packageJsonPath;
|
|
348031
|
+
}
|
|
348032
|
+
} catch {}
|
|
348033
|
+
const parentDir = dirname3(currentDir);
|
|
348034
|
+
if (parentDir === currentDir) {
|
|
348035
|
+
return null;
|
|
348036
|
+
}
|
|
348037
|
+
currentDir = parentDir;
|
|
348038
|
+
}
|
|
346333
348039
|
}
|
|
346334
348040
|
function parsePackageVersion(rawPackageJson) {
|
|
348041
|
+
const parsed = parsePackageJson(rawPackageJson);
|
|
348042
|
+
if (typeof parsed?.version === "string" && parsed.version.length > 0) {
|
|
348043
|
+
return parsed.version;
|
|
348044
|
+
}
|
|
348045
|
+
return null;
|
|
348046
|
+
}
|
|
348047
|
+
function resolveCliPackageVersionFromModuleUrl(moduleUrl) {
|
|
346335
348048
|
try {
|
|
346336
|
-
const
|
|
346337
|
-
if (
|
|
346338
|
-
return
|
|
348049
|
+
const packageJsonPath = resolveCliPackagePath(moduleUrl);
|
|
348050
|
+
if (!packageJsonPath) {
|
|
348051
|
+
return FALLBACK_CLI_PACKAGE_VERSION;
|
|
346339
348052
|
}
|
|
346340
|
-
|
|
346341
|
-
|
|
348053
|
+
const packageJson = readFileSync(packageJsonPath, "utf8");
|
|
348054
|
+
return parsePackageVersion(packageJson) ?? FALLBACK_CLI_PACKAGE_VERSION;
|
|
348055
|
+
} catch {
|
|
348056
|
+
return FALLBACK_CLI_PACKAGE_VERSION;
|
|
348057
|
+
}
|
|
346342
348058
|
}
|
|
346343
348059
|
function resolveCliPackageVersion() {
|
|
346344
348060
|
if (cachedCliPackageVersion) {
|
|
346345
348061
|
return cachedCliPackageVersion;
|
|
346346
348062
|
}
|
|
346347
|
-
|
|
346348
|
-
|
|
346349
|
-
const version4 = parsePackageVersion(packageJson);
|
|
346350
|
-
cachedCliPackageVersion = version4 ?? FALLBACK_CLI_PACKAGE_VERSION;
|
|
346351
|
-
return cachedCliPackageVersion;
|
|
346352
|
-
} catch {
|
|
346353
|
-
cachedCliPackageVersion = FALLBACK_CLI_PACKAGE_VERSION;
|
|
346354
|
-
return cachedCliPackageVersion;
|
|
346355
|
-
}
|
|
348063
|
+
cachedCliPackageVersion = resolveCliPackageVersionFromModuleUrl(import.meta.url);
|
|
348064
|
+
return cachedCliPackageVersion;
|
|
346356
348065
|
}
|
|
346357
|
-
var FALLBACK_CLI_PACKAGE_VERSION = "0.0.0", cachedCliPackageVersion = null;
|
|
348066
|
+
var CLI_PACKAGE_NAME = "@superdoc-dev/cli", FALLBACK_CLI_PACKAGE_VERSION = "0.0.0", cachedCliPackageVersion = null;
|
|
346358
348067
|
var init_version2 = () => {};
|
|
346359
348068
|
|
|
346360
348069
|
// src/host/session-pool.ts
|
|
@@ -346943,6 +348652,9 @@ function defaultIo() {
|
|
|
346943
348652
|
stderr(message) {
|
|
346944
348653
|
process.stderr.write(message);
|
|
346945
348654
|
},
|
|
348655
|
+
warn(message) {
|
|
348656
|
+
process.stderr.write(message);
|
|
348657
|
+
},
|
|
346946
348658
|
readStdinBytes() {
|
|
346947
348659
|
if (stdinCache)
|
|
346948
348660
|
return stdinCache;
|
|
@@ -346976,10 +348688,20 @@ function mergeIo(overrides) {
|
|
|
346976
348688
|
return {
|
|
346977
348689
|
stdout: overrides.stdout ?? base5.stdout,
|
|
346978
348690
|
stderr: overrides.stderr ?? base5.stderr,
|
|
348691
|
+
warn: overrides.warn ?? base5.warn,
|
|
346979
348692
|
readStdinBytes: overrides.readStdinBytes ?? base5.readStdinBytes,
|
|
346980
348693
|
now: overrides.now ?? base5.now
|
|
346981
348694
|
};
|
|
346982
348695
|
}
|
|
348696
|
+
function applyDiagnosticPolicy(io, globals) {
|
|
348697
|
+
if (globals.output === "pretty" && !globals.quiet) {
|
|
348698
|
+
return io;
|
|
348699
|
+
}
|
|
348700
|
+
return {
|
|
348701
|
+
...io,
|
|
348702
|
+
warn() {}
|
|
348703
|
+
};
|
|
348704
|
+
}
|
|
346983
348705
|
function parseCommand(rest) {
|
|
346984
348706
|
if (rest.length === 0) {
|
|
346985
348707
|
throw new CliError("MISSING_REQUIRED", "Missing command.");
|
|
@@ -347086,7 +348808,8 @@ async function invokeCommand(argv, options2 = {}) {
|
|
|
347086
348808
|
const startedAt = io.now();
|
|
347087
348809
|
const { parsed, output } = await withStateDirOverride(options2.stateDir, async () => {
|
|
347088
348810
|
const parsedInvocation = parseInvocation(argv);
|
|
347089
|
-
const
|
|
348811
|
+
const runtimeIo = applyDiagnosticPolicy(io, parsedInvocation.globals);
|
|
348812
|
+
const commandOutput = await executeParsedInvocation(parsedInvocation, runtimeIo, options2.executionMode ?? "oneshot", options2.sessionPool);
|
|
347090
348813
|
return { parsed: parsedInvocation, output: commandOutput };
|
|
347091
348814
|
});
|
|
347092
348815
|
return {
|
|
@@ -347109,6 +348832,7 @@ async function run2(argv, ioOverrides, options2 = {}) {
|
|
|
347109
348832
|
try {
|
|
347110
348833
|
const parsed = parseInvocation(argv);
|
|
347111
348834
|
outputMode = parsed.globals.output;
|
|
348835
|
+
const runtimeIo = applyDiagnosticPolicy(io, parsed.globals);
|
|
347112
348836
|
if (parsed.globals.version && !parsed.globals.help) {
|
|
347113
348837
|
io.stdout(`${resolveCliPackageVersion()}
|
|
347114
348838
|
`);
|
|
@@ -347135,7 +348859,7 @@ async function run2(argv, ioOverrides, options2 = {}) {
|
|
|
347135
348859
|
return legacyCompat.exitCode;
|
|
347136
348860
|
}
|
|
347137
348861
|
}
|
|
347138
|
-
const output = await executeParsedInvocation(parsed,
|
|
348862
|
+
const output = await executeParsedInvocation(parsed, runtimeIo, "oneshot");
|
|
347139
348863
|
if (output.helpText) {
|
|
347140
348864
|
io.stdout(output.helpText);
|
|
347141
348865
|
return 0;
|
|
@@ -347167,6 +348891,7 @@ var init_src2 = __esm(async () => {
|
|
|
347167
348891
|
init_input_readers();
|
|
347168
348892
|
init_call();
|
|
347169
348893
|
init_close();
|
|
348894
|
+
init_insert_inline_special();
|
|
347170
348895
|
init_open();
|
|
347171
348896
|
init_session_close();
|
|
347172
348897
|
init_session_list();
|
|
@@ -347199,6 +348924,7 @@ var init_src2 = __esm(async () => {
|
|
|
347199
348924
|
" --pretty",
|
|
347200
348925
|
" --session <id>",
|
|
347201
348926
|
" --timeout-ms <n>",
|
|
348927
|
+
" --quiet",
|
|
347202
348928
|
" --help, -h",
|
|
347203
348929
|
" --version, -v"
|
|
347204
348930
|
].join(`
|
|
@@ -347206,6 +348932,8 @@ var init_src2 = __esm(async () => {
|
|
|
347206
348932
|
MANUAL_COMMANDS = {
|
|
347207
348933
|
call: runCall,
|
|
347208
348934
|
close: runClose,
|
|
348935
|
+
"insert line-break": runInsertLineBreak,
|
|
348936
|
+
"insert tab": runInsertTab,
|
|
347209
348937
|
open: runOpen,
|
|
347210
348938
|
save: runSave,
|
|
347211
348939
|
"session list": runSessionList,
|