@superdoc-dev/cli 0.5.0-next.14 → 0.5.0-next.15
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 +1481 -212
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1211,7 +1211,7 @@ function formatInlineAliasExpectedResult(key) {
|
|
|
1211
1211
|
function projectFromDefinitions(fn) {
|
|
1212
1212
|
return Object.fromEntries(OPERATION_IDS.map((id) => [id, fn(id, OPERATION_DEFINITIONS[id])]));
|
|
1213
1213
|
}
|
|
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;
|
|
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, 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
1215
|
var init_operation_definitions = __esm(() => {
|
|
1216
1216
|
init_inline_run_patch();
|
|
1217
1217
|
NONE_FAILURES = [];
|
|
@@ -1287,6 +1287,15 @@ var init_operation_definitions = __esm(() => {
|
|
|
1287
1287
|
T_REF_MUTATION = ["TARGET_NOT_FOUND", "INVALID_TARGET", "INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
1288
1288
|
T_REF_MUTATION_REMOVE = ["TARGET_NOT_FOUND", "INVALID_TARGET", "CAPABILITY_UNAVAILABLE"];
|
|
1289
1289
|
T_REF_INSERT = ["TARGET_NOT_FOUND", "INVALID_TARGET", "INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
1290
|
+
T_PROTECTION_READ = ["CAPABILITY_UNAVAILABLE"];
|
|
1291
|
+
T_PROTECTION_MUTATION = ["INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
1292
|
+
T_PERM_RANGE_READ = ["TARGET_NOT_FOUND", "CAPABILITY_UNAVAILABLE"];
|
|
1293
|
+
T_PERM_RANGE_MUTATION = [
|
|
1294
|
+
"TARGET_NOT_FOUND",
|
|
1295
|
+
"INVALID_TARGET",
|
|
1296
|
+
"INVALID_INPUT",
|
|
1297
|
+
"CAPABILITY_UNAVAILABLE"
|
|
1298
|
+
];
|
|
1290
1299
|
FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS = Object.fromEntries(INLINE_PROPERTY_REGISTRY.map((entry) => {
|
|
1291
1300
|
const operationId = `format.${entry.key}`;
|
|
1292
1301
|
const definition = {
|
|
@@ -6184,6 +6193,116 @@ var init_operation_definitions = __esm(() => {
|
|
|
6184
6193
|
referenceDocPath: "diff/apply.mdx",
|
|
6185
6194
|
referenceGroup: "diff",
|
|
6186
6195
|
skipAsATool: true
|
|
6196
|
+
},
|
|
6197
|
+
"protection.get": {
|
|
6198
|
+
memberPath: "protection.get",
|
|
6199
|
+
description: "Read the current document protection state including editing restrictions, write protection, and read-only recommendation.",
|
|
6200
|
+
expectedResult: "Returns a DocumentProtectionState with editingRestriction, writeProtection, and readOnlyRecommended fields.",
|
|
6201
|
+
requiresDocumentContext: true,
|
|
6202
|
+
metadata: readOperation({ throws: T_PROTECTION_READ }),
|
|
6203
|
+
referenceDocPath: "protection/get.mdx",
|
|
6204
|
+
referenceGroup: "protection",
|
|
6205
|
+
skipAsATool: true
|
|
6206
|
+
},
|
|
6207
|
+
"protection.setEditingRestriction": {
|
|
6208
|
+
memberPath: "protection.setEditingRestriction",
|
|
6209
|
+
description: "Enable Word-style editing restriction on the document. Only readOnly mode is supported in v1.",
|
|
6210
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
6211
|
+
requiresDocumentContext: true,
|
|
6212
|
+
metadata: mutationOperation({
|
|
6213
|
+
idempotency: "idempotent",
|
|
6214
|
+
supportsDryRun: true,
|
|
6215
|
+
supportsTrackedMode: false,
|
|
6216
|
+
possibleFailureCodes: ["NO_OP"],
|
|
6217
|
+
throws: T_PROTECTION_MUTATION
|
|
6218
|
+
}),
|
|
6219
|
+
referenceDocPath: "protection/set-editing-restriction.mdx",
|
|
6220
|
+
referenceGroup: "protection",
|
|
6221
|
+
skipAsATool: true
|
|
6222
|
+
},
|
|
6223
|
+
"protection.clearEditingRestriction": {
|
|
6224
|
+
memberPath: "protection.clearEditingRestriction",
|
|
6225
|
+
description: "Disable document-level editing restriction by setting enforcement to off. Preserves the protection element and its metadata for round-trip fidelity.",
|
|
6226
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
6227
|
+
requiresDocumentContext: true,
|
|
6228
|
+
metadata: mutationOperation({
|
|
6229
|
+
idempotency: "idempotent",
|
|
6230
|
+
supportsDryRun: true,
|
|
6231
|
+
supportsTrackedMode: false,
|
|
6232
|
+
possibleFailureCodes: ["NO_OP"],
|
|
6233
|
+
throws: T_PROTECTION_MUTATION
|
|
6234
|
+
}),
|
|
6235
|
+
referenceDocPath: "protection/clear-editing-restriction.mdx",
|
|
6236
|
+
referenceGroup: "protection",
|
|
6237
|
+
skipAsATool: true
|
|
6238
|
+
},
|
|
6239
|
+
"permissionRanges.list": {
|
|
6240
|
+
memberPath: "permissionRanges.list",
|
|
6241
|
+
description: "List all permission ranges in the document. Returns only complete paired ranges (both start and end markers present).",
|
|
6242
|
+
expectedResult: "Returns a PermissionRangesListResult containing discovered permission ranges with principal and position data.",
|
|
6243
|
+
requiresDocumentContext: true,
|
|
6244
|
+
metadata: readOperation({ throws: T_PERM_RANGE_READ }),
|
|
6245
|
+
referenceDocPath: "permission-ranges/list.mdx",
|
|
6246
|
+
referenceGroup: "permissionRanges",
|
|
6247
|
+
skipAsATool: true
|
|
6248
|
+
},
|
|
6249
|
+
"permissionRanges.get": {
|
|
6250
|
+
memberPath: "permissionRanges.get",
|
|
6251
|
+
description: "Get detailed information about a specific permission range by ID.",
|
|
6252
|
+
expectedResult: "Returns a PermissionRangeInfo object with the range principal, kind, and positions.",
|
|
6253
|
+
requiresDocumentContext: true,
|
|
6254
|
+
metadata: readOperation({ throws: T_PERM_RANGE_READ }),
|
|
6255
|
+
referenceDocPath: "permission-ranges/get.mdx",
|
|
6256
|
+
referenceGroup: "permissionRanges",
|
|
6257
|
+
skipAsATool: true
|
|
6258
|
+
},
|
|
6259
|
+
"permissionRanges.create": {
|
|
6260
|
+
memberPath: "permissionRanges.create",
|
|
6261
|
+
description: "Create a permission range exception region in the document. Inserts matched permStart/permEnd markers at the target.",
|
|
6262
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the created range info on success.",
|
|
6263
|
+
requiresDocumentContext: true,
|
|
6264
|
+
metadata: mutationOperation({
|
|
6265
|
+
idempotency: "non-idempotent",
|
|
6266
|
+
supportsDryRun: true,
|
|
6267
|
+
supportsTrackedMode: false,
|
|
6268
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
6269
|
+
throws: T_PERM_RANGE_MUTATION
|
|
6270
|
+
}),
|
|
6271
|
+
referenceDocPath: "permission-ranges/create.mdx",
|
|
6272
|
+
referenceGroup: "permissionRanges",
|
|
6273
|
+
skipAsATool: true
|
|
6274
|
+
},
|
|
6275
|
+
"permissionRanges.remove": {
|
|
6276
|
+
memberPath: "permissionRanges.remove",
|
|
6277
|
+
description: "Remove a permission range by ID. Removes whichever markers exist for the given ID (start, end, or both).",
|
|
6278
|
+
expectedResult: "Returns a PermissionRangeRemoveResult indicating success or a failure.",
|
|
6279
|
+
requiresDocumentContext: true,
|
|
6280
|
+
metadata: mutationOperation({
|
|
6281
|
+
idempotency: "idempotent",
|
|
6282
|
+
supportsDryRun: true,
|
|
6283
|
+
supportsTrackedMode: false,
|
|
6284
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
6285
|
+
throws: T_PERM_RANGE_MUTATION
|
|
6286
|
+
}),
|
|
6287
|
+
referenceDocPath: "permission-ranges/remove.mdx",
|
|
6288
|
+
referenceGroup: "permissionRanges",
|
|
6289
|
+
skipAsATool: true
|
|
6290
|
+
},
|
|
6291
|
+
"permissionRanges.updatePrincipal": {
|
|
6292
|
+
memberPath: "permissionRanges.updatePrincipal",
|
|
6293
|
+
description: "Change which principal is allowed to edit a permission range. Updates the principal fields on the start marker.",
|
|
6294
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the updated range info on success.",
|
|
6295
|
+
requiresDocumentContext: true,
|
|
6296
|
+
metadata: mutationOperation({
|
|
6297
|
+
idempotency: "idempotent",
|
|
6298
|
+
supportsDryRun: true,
|
|
6299
|
+
supportsTrackedMode: false,
|
|
6300
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
6301
|
+
throws: T_PERM_RANGE_MUTATION
|
|
6302
|
+
}),
|
|
6303
|
+
referenceDocPath: "permission-ranges/update-principal.mdx",
|
|
6304
|
+
referenceGroup: "permissionRanges",
|
|
6305
|
+
skipAsATool: true
|
|
6187
6306
|
}
|
|
6188
6307
|
};
|
|
6189
6308
|
OPERATION_IDS = Object.freeze(Object.keys(OPERATION_DEFINITIONS));
|
|
@@ -12489,6 +12608,77 @@ var init_schemas = __esm(() => {
|
|
|
12489
12608
|
output: diffApplyResultSchema,
|
|
12490
12609
|
success: diffApplyResultSchema,
|
|
12491
12610
|
failure: { type: "object" }
|
|
12611
|
+
},
|
|
12612
|
+
"protection.get": {
|
|
12613
|
+
input: objectSchema({}),
|
|
12614
|
+
output: objectSchema({
|
|
12615
|
+
editingRestriction: objectSchema({
|
|
12616
|
+
mode: { type: "string", enum: ["none", "readOnly", "comments", "trackedChanges", "forms"] },
|
|
12617
|
+
enforced: { type: "boolean" },
|
|
12618
|
+
runtimeEnforced: { type: "boolean" },
|
|
12619
|
+
passwordProtected: { type: "boolean" },
|
|
12620
|
+
formattingRestricted: { type: "boolean" }
|
|
12621
|
+
}, ["mode", "enforced", "runtimeEnforced", "passwordProtected", "formattingRestricted"]),
|
|
12622
|
+
writeProtection: objectSchema({
|
|
12623
|
+
enabled: { type: "boolean" },
|
|
12624
|
+
passwordProtected: { type: "boolean" }
|
|
12625
|
+
}, ["enabled", "passwordProtected"]),
|
|
12626
|
+
readOnlyRecommended: { type: "boolean" }
|
|
12627
|
+
}, ["editingRestriction", "writeProtection", "readOnlyRecommended"])
|
|
12628
|
+
},
|
|
12629
|
+
"protection.setEditingRestriction": {
|
|
12630
|
+
input: objectSchema({
|
|
12631
|
+
mode: { type: "string", enum: ["readOnly"] },
|
|
12632
|
+
formattingRestricted: { type: "boolean" }
|
|
12633
|
+
}, ["mode"]),
|
|
12634
|
+
output: { type: "object" },
|
|
12635
|
+
success: { type: "object" },
|
|
12636
|
+
failure: { type: "object" }
|
|
12637
|
+
},
|
|
12638
|
+
"protection.clearEditingRestriction": {
|
|
12639
|
+
input: objectSchema({}),
|
|
12640
|
+
output: { type: "object" },
|
|
12641
|
+
success: { type: "object" },
|
|
12642
|
+
failure: { type: "object" }
|
|
12643
|
+
},
|
|
12644
|
+
"permissionRanges.list": {
|
|
12645
|
+
input: refListQuerySchema,
|
|
12646
|
+
output: discoveryOutputSchema
|
|
12647
|
+
},
|
|
12648
|
+
"permissionRanges.get": {
|
|
12649
|
+
input: objectSchema({ id: { type: "string" } }, ["id"]),
|
|
12650
|
+
output: { type: "object" }
|
|
12651
|
+
},
|
|
12652
|
+
"permissionRanges.create": {
|
|
12653
|
+
input: objectSchema({
|
|
12654
|
+
target: selectionTargetSchema,
|
|
12655
|
+
principal: objectSchema({
|
|
12656
|
+
kind: { type: "string", enum: ["everyone", "editor"] },
|
|
12657
|
+
id: { type: "string" }
|
|
12658
|
+
}, ["kind"]),
|
|
12659
|
+
id: { type: "string" }
|
|
12660
|
+
}, ["target", "principal"]),
|
|
12661
|
+
output: { type: "object" },
|
|
12662
|
+
success: { type: "object" },
|
|
12663
|
+
failure: { type: "object" }
|
|
12664
|
+
},
|
|
12665
|
+
"permissionRanges.remove": {
|
|
12666
|
+
input: objectSchema({ id: { type: "string" } }, ["id"]),
|
|
12667
|
+
output: { type: "object" },
|
|
12668
|
+
success: { type: "object" },
|
|
12669
|
+
failure: { type: "object" }
|
|
12670
|
+
},
|
|
12671
|
+
"permissionRanges.updatePrincipal": {
|
|
12672
|
+
input: objectSchema({
|
|
12673
|
+
id: { type: "string" },
|
|
12674
|
+
principal: objectSchema({
|
|
12675
|
+
kind: { type: "string", enum: ["everyone", "editor"] },
|
|
12676
|
+
id: { type: "string" }
|
|
12677
|
+
}, ["kind"])
|
|
12678
|
+
}, ["id", "principal"]),
|
|
12679
|
+
output: { type: "object" },
|
|
12680
|
+
success: { type: "object" },
|
|
12681
|
+
failure: { type: "object" }
|
|
12492
12682
|
}
|
|
12493
12683
|
};
|
|
12494
12684
|
});
|
|
@@ -12663,6 +12853,16 @@ var init_reference_doc_map = __esm(() => {
|
|
|
12663
12853
|
title: "Diff",
|
|
12664
12854
|
description: "Snapshot-based document comparison and replay.",
|
|
12665
12855
|
pagePath: "diff/index.mdx"
|
|
12856
|
+
},
|
|
12857
|
+
protection: {
|
|
12858
|
+
title: "Protection",
|
|
12859
|
+
description: "Document-level protection state and editing restriction operations.",
|
|
12860
|
+
pagePath: "protection/index.mdx"
|
|
12861
|
+
},
|
|
12862
|
+
permissionRanges: {
|
|
12863
|
+
title: "Permission Ranges",
|
|
12864
|
+
description: "Permission range exception operations for protected documents.",
|
|
12865
|
+
pagePath: "permission-ranges/index.mdx"
|
|
12666
12866
|
}
|
|
12667
12867
|
};
|
|
12668
12868
|
REFERENCE_OPERATION_GROUPS = Object.keys(GROUP_METADATA).map((key) => ({
|
|
@@ -15335,7 +15535,15 @@ function buildDispatchTable(api) {
|
|
|
15335
15535
|
"authorities.entries.remove": (input, options) => api.authorities.entries.remove(input, options),
|
|
15336
15536
|
"diff.capture": () => api.diff.capture(),
|
|
15337
15537
|
"diff.compare": (input) => api.diff.compare(input),
|
|
15338
|
-
"diff.apply": (input, options) => api.diff.apply(input, options)
|
|
15538
|
+
"diff.apply": (input, options) => api.diff.apply(input, options),
|
|
15539
|
+
"protection.get": (input) => api.protection.get(input),
|
|
15540
|
+
"protection.setEditingRestriction": (input, options) => api.protection.setEditingRestriction(input, options),
|
|
15541
|
+
"protection.clearEditingRestriction": (input, options) => api.protection.clearEditingRestriction(input, options),
|
|
15542
|
+
"permissionRanges.list": (input) => api.permissionRanges.list(input),
|
|
15543
|
+
"permissionRanges.get": (input) => api.permissionRanges.get(input),
|
|
15544
|
+
"permissionRanges.create": (input, options) => api.permissionRanges.create(input, options),
|
|
15545
|
+
"permissionRanges.remove": (input, options) => api.permissionRanges.remove(input, options),
|
|
15546
|
+
"permissionRanges.updatePrincipal": (input, options) => api.permissionRanges.updatePrincipal(input, options)
|
|
15339
15547
|
};
|
|
15340
15548
|
}
|
|
15341
15549
|
var init_invoke = __esm(() => {
|
|
@@ -17123,6 +17331,90 @@ var init_bookmarks = __esm(() => {
|
|
|
17123
17331
|
init_validation_primitives();
|
|
17124
17332
|
});
|
|
17125
17333
|
|
|
17334
|
+
// ../../packages/document-api/src/protection/protection.ts
|
|
17335
|
+
function validateSetEditingRestrictionInput(input) {
|
|
17336
|
+
if (!input || typeof input !== "object") {
|
|
17337
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "protection.setEditingRestriction requires an object with a mode property.");
|
|
17338
|
+
}
|
|
17339
|
+
const { mode } = input;
|
|
17340
|
+
if (!VALID_SET_MODES.has(mode)) {
|
|
17341
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `protection.setEditingRestriction mode must be 'readOnly'. Received: '${String(mode)}'.`);
|
|
17342
|
+
}
|
|
17343
|
+
}
|
|
17344
|
+
function executeProtectionGet(adapter, _input) {
|
|
17345
|
+
return adapter.get();
|
|
17346
|
+
}
|
|
17347
|
+
function executeSetEditingRestriction(adapter, input, options) {
|
|
17348
|
+
validateSetEditingRestrictionInput(input);
|
|
17349
|
+
return adapter.setEditingRestriction(input, normalizeMutationOptions(options));
|
|
17350
|
+
}
|
|
17351
|
+
function executeClearEditingRestriction(adapter, _input, options) {
|
|
17352
|
+
return adapter.clearEditingRestriction(undefined, normalizeMutationOptions(options));
|
|
17353
|
+
}
|
|
17354
|
+
var VALID_SET_MODES;
|
|
17355
|
+
var init_protection = __esm(() => {
|
|
17356
|
+
init_errors2();
|
|
17357
|
+
VALID_SET_MODES = new Set(["readOnly"]);
|
|
17358
|
+
});
|
|
17359
|
+
|
|
17360
|
+
// ../../packages/document-api/src/permission-ranges/permission-ranges.ts
|
|
17361
|
+
function validatePrincipal(principal, operationName) {
|
|
17362
|
+
if (!principal || typeof principal !== "object") {
|
|
17363
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} requires a principal object with a 'kind' property.`);
|
|
17364
|
+
}
|
|
17365
|
+
const p = principal;
|
|
17366
|
+
if (p.kind === "everyone")
|
|
17367
|
+
return;
|
|
17368
|
+
if (p.kind === "editor") {
|
|
17369
|
+
if (typeof p.id !== "string" || p.id.length === 0) {
|
|
17370
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} editor principal requires a non-empty id string.`);
|
|
17371
|
+
}
|
|
17372
|
+
return;
|
|
17373
|
+
}
|
|
17374
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} principal kind must be 'everyone' or 'editor'. Received: '${String(p.kind)}'.`);
|
|
17375
|
+
}
|
|
17376
|
+
function requireNonEmptyId(id, operationName) {
|
|
17377
|
+
if (typeof id !== "string" || id.length === 0) {
|
|
17378
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `${operationName} requires a non-empty id string.`);
|
|
17379
|
+
}
|
|
17380
|
+
}
|
|
17381
|
+
function executePermissionRangesList(adapter, input) {
|
|
17382
|
+
return adapter.list(input);
|
|
17383
|
+
}
|
|
17384
|
+
function executePermissionRangesGet(adapter, input) {
|
|
17385
|
+
requireNonEmptyId(input?.id, "permissionRanges.get");
|
|
17386
|
+
return adapter.get(input);
|
|
17387
|
+
}
|
|
17388
|
+
function executePermissionRangesCreate(adapter, input, options) {
|
|
17389
|
+
if (!input || typeof input !== "object") {
|
|
17390
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "permissionRanges.create requires an input object.");
|
|
17391
|
+
}
|
|
17392
|
+
const { target, principal } = input;
|
|
17393
|
+
if (!target || typeof target !== "object") {
|
|
17394
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "permissionRanges.create target must be a SelectionTarget object.");
|
|
17395
|
+
}
|
|
17396
|
+
if (target.kind !== "selection" || !target.start || !target.end) {
|
|
17397
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "permissionRanges.create target must have kind 'selection' with start and end points.");
|
|
17398
|
+
}
|
|
17399
|
+
validatePrincipal(principal, "permissionRanges.create");
|
|
17400
|
+
if (input.id !== undefined) {
|
|
17401
|
+
requireNonEmptyId(input.id, "permissionRanges.create");
|
|
17402
|
+
}
|
|
17403
|
+
return adapter.create(input, normalizeMutationOptions(options));
|
|
17404
|
+
}
|
|
17405
|
+
function executePermissionRangesRemove(adapter, input, options) {
|
|
17406
|
+
requireNonEmptyId(input?.id, "permissionRanges.remove");
|
|
17407
|
+
return adapter.remove(input, normalizeMutationOptions(options));
|
|
17408
|
+
}
|
|
17409
|
+
function executePermissionRangesUpdatePrincipal(adapter, input, options) {
|
|
17410
|
+
requireNonEmptyId(input?.id, "permissionRanges.updatePrincipal");
|
|
17411
|
+
validatePrincipal(input?.principal, "permissionRanges.updatePrincipal");
|
|
17412
|
+
return adapter.updatePrincipal(input, normalizeMutationOptions(options));
|
|
17413
|
+
}
|
|
17414
|
+
var init_permission_ranges = __esm(() => {
|
|
17415
|
+
init_errors2();
|
|
17416
|
+
});
|
|
17417
|
+
|
|
17126
17418
|
// ../../packages/document-api/src/footnotes/footnotes.ts
|
|
17127
17419
|
function validateFootnoteTarget(target, operationName) {
|
|
17128
17420
|
assertTargetPresent(target, operationName);
|
|
@@ -17538,6 +17830,9 @@ var init_authorities = __esm(() => {
|
|
|
17538
17830
|
init_create_location_validator();
|
|
17539
17831
|
});
|
|
17540
17832
|
|
|
17833
|
+
// ../../packages/document-api/src/protection/protection.types.ts
|
|
17834
|
+
var init_protection_types = () => {};
|
|
17835
|
+
|
|
17541
17836
|
// ../../packages/document-api/src/index.ts
|
|
17542
17837
|
function executeQueryMatch(adapter, input) {
|
|
17543
17838
|
if (!input || typeof input !== "object") {
|
|
@@ -18696,6 +18991,34 @@ function createDocumentApi(adapters) {
|
|
|
18696
18991
|
return executeHistoryRedo(adapters.history);
|
|
18697
18992
|
}
|
|
18698
18993
|
},
|
|
18994
|
+
protection: {
|
|
18995
|
+
get(input) {
|
|
18996
|
+
return executeProtectionGet(adapters.protection, input);
|
|
18997
|
+
},
|
|
18998
|
+
setEditingRestriction(input, options) {
|
|
18999
|
+
return executeSetEditingRestriction(adapters.protection, input, options);
|
|
19000
|
+
},
|
|
19001
|
+
clearEditingRestriction(input, options) {
|
|
19002
|
+
return executeClearEditingRestriction(adapters.protection, input, options);
|
|
19003
|
+
}
|
|
19004
|
+
},
|
|
19005
|
+
permissionRanges: {
|
|
19006
|
+
list(input) {
|
|
19007
|
+
return executePermissionRangesList(adapters.permissionRanges, input);
|
|
19008
|
+
},
|
|
19009
|
+
get(input) {
|
|
19010
|
+
return executePermissionRangesGet(adapters.permissionRanges, input);
|
|
19011
|
+
},
|
|
19012
|
+
create(input, options) {
|
|
19013
|
+
return executePermissionRangesCreate(adapters.permissionRanges, input, options);
|
|
19014
|
+
},
|
|
19015
|
+
remove(input, options) {
|
|
19016
|
+
return executePermissionRangesRemove(adapters.permissionRanges, input, options);
|
|
19017
|
+
},
|
|
19018
|
+
updatePrincipal(input, options) {
|
|
19019
|
+
return executePermissionRangesUpdatePrincipal(adapters.permissionRanges, input, options);
|
|
19020
|
+
}
|
|
19021
|
+
},
|
|
18699
19022
|
invoke(request) {
|
|
18700
19023
|
if (!Object.prototype.hasOwnProperty.call(dispatch, request.operationId)) {
|
|
18701
19024
|
throw new Error(`Unknown operationId: "${request.operationId}"`);
|
|
@@ -18740,6 +19063,8 @@ var init_src = __esm(() => {
|
|
|
18740
19063
|
init_hyperlinks();
|
|
18741
19064
|
init_content_controls();
|
|
18742
19065
|
init_bookmarks();
|
|
19066
|
+
init_protection();
|
|
19067
|
+
init_permission_ranges();
|
|
18743
19068
|
init_footnotes();
|
|
18744
19069
|
init_cross_refs();
|
|
18745
19070
|
init_index();
|
|
@@ -18761,6 +19086,7 @@ var init_src = __esm(() => {
|
|
|
18761
19086
|
init_contract();
|
|
18762
19087
|
init_capabilities();
|
|
18763
19088
|
init_inline_semantics();
|
|
19089
|
+
init_protection_types();
|
|
18764
19090
|
ADAPTER_GATED_PREFIXES = [
|
|
18765
19091
|
"bookmarks",
|
|
18766
19092
|
"footnotes",
|
|
@@ -62964,7 +63290,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
|
|
|
62964
63290
|
emptyOptions2 = {};
|
|
62965
63291
|
});
|
|
62966
63292
|
|
|
62967
|
-
// ../../packages/superdoc/dist/chunks/SuperConverter-
|
|
63293
|
+
// ../../packages/superdoc/dist/chunks/SuperConverter-CMIR0kxi.es.js
|
|
62968
63294
|
function getExtensionConfigField(extension$1, field, context = { name: "" }) {
|
|
62969
63295
|
const fieldValue = extension$1.config[field];
|
|
62970
63296
|
if (typeof fieldValue === "function")
|
|
@@ -67660,7 +67986,15 @@ function buildDispatchTable2(api) {
|
|
|
67660
67986
|
"authorities.entries.remove": (input, options) => api.authorities.entries.remove(input, options),
|
|
67661
67987
|
"diff.capture": () => api.diff.capture(),
|
|
67662
67988
|
"diff.compare": (input) => api.diff.compare(input),
|
|
67663
|
-
"diff.apply": (input, options) => api.diff.apply(input, options)
|
|
67989
|
+
"diff.apply": (input, options) => api.diff.apply(input, options),
|
|
67990
|
+
"protection.get": (input) => api.protection.get(input),
|
|
67991
|
+
"protection.setEditingRestriction": (input, options) => api.protection.setEditingRestriction(input, options),
|
|
67992
|
+
"protection.clearEditingRestriction": (input, options) => api.protection.clearEditingRestriction(input, options),
|
|
67993
|
+
"permissionRanges.list": (input) => api.permissionRanges.list(input),
|
|
67994
|
+
"permissionRanges.get": (input) => api.permissionRanges.get(input),
|
|
67995
|
+
"permissionRanges.create": (input, options) => api.permissionRanges.create(input, options),
|
|
67996
|
+
"permissionRanges.remove": (input, options) => api.permissionRanges.remove(input, options),
|
|
67997
|
+
"permissionRanges.updatePrincipal": (input, options) => api.permissionRanges.updatePrincipal(input, options)
|
|
67664
67998
|
};
|
|
67665
67999
|
}
|
|
67666
68000
|
function executeHistoryGet2(adapter) {
|
|
@@ -69199,6 +69533,69 @@ function executeBookmarksRemove2(adapter, input, options) {
|
|
|
69199
69533
|
validateBookmarkTarget2(input.target, "bookmarks.remove");
|
|
69200
69534
|
return adapter.remove(input, normalizeMutationOptions2(options));
|
|
69201
69535
|
}
|
|
69536
|
+
function validateSetEditingRestrictionInput2(input) {
|
|
69537
|
+
if (!input || typeof input !== "object")
|
|
69538
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "protection.setEditingRestriction requires an object with a mode property.");
|
|
69539
|
+
const { mode } = input;
|
|
69540
|
+
if (!VALID_SET_MODES2.has(mode))
|
|
69541
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `protection.setEditingRestriction mode must be 'readOnly'. Received: '${String(mode)}'.`);
|
|
69542
|
+
}
|
|
69543
|
+
function executeProtectionGet2(adapter, _input) {
|
|
69544
|
+
return adapter.get();
|
|
69545
|
+
}
|
|
69546
|
+
function executeSetEditingRestriction2(adapter, input, options) {
|
|
69547
|
+
validateSetEditingRestrictionInput2(input);
|
|
69548
|
+
return adapter.setEditingRestriction(input, normalizeMutationOptions2(options));
|
|
69549
|
+
}
|
|
69550
|
+
function executeClearEditingRestriction2(adapter, _input, options) {
|
|
69551
|
+
return adapter.clearEditingRestriction(undefined, normalizeMutationOptions2(options));
|
|
69552
|
+
}
|
|
69553
|
+
function validatePrincipal2(principal, operationName) {
|
|
69554
|
+
if (!principal || typeof principal !== "object")
|
|
69555
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} requires a principal object with a 'kind' property.`);
|
|
69556
|
+
const p = principal;
|
|
69557
|
+
if (p.kind === "everyone")
|
|
69558
|
+
return;
|
|
69559
|
+
if (p.kind === "editor") {
|
|
69560
|
+
if (typeof p.id !== "string" || p.id.length === 0)
|
|
69561
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} editor principal requires a non-empty id string.`);
|
|
69562
|
+
return;
|
|
69563
|
+
}
|
|
69564
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} principal kind must be 'everyone' or 'editor'. Received: '${String(p.kind)}'.`);
|
|
69565
|
+
}
|
|
69566
|
+
function requireNonEmptyId2(id2, operationName) {
|
|
69567
|
+
if (typeof id2 !== "string" || id2.length === 0)
|
|
69568
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `${operationName} requires a non-empty id string.`);
|
|
69569
|
+
}
|
|
69570
|
+
function executePermissionRangesList2(adapter, input) {
|
|
69571
|
+
return adapter.list(input);
|
|
69572
|
+
}
|
|
69573
|
+
function executePermissionRangesGet2(adapter, input) {
|
|
69574
|
+
requireNonEmptyId2(input?.id, "permissionRanges.get");
|
|
69575
|
+
return adapter.get(input);
|
|
69576
|
+
}
|
|
69577
|
+
function executePermissionRangesCreate2(adapter, input, options) {
|
|
69578
|
+
if (!input || typeof input !== "object")
|
|
69579
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "permissionRanges.create requires an input object.");
|
|
69580
|
+
const { target, principal } = input;
|
|
69581
|
+
if (!target || typeof target !== "object")
|
|
69582
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "permissionRanges.create target must be a SelectionTarget object.");
|
|
69583
|
+
if (target.kind !== "selection" || !target.start || !target.end)
|
|
69584
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "permissionRanges.create target must have kind 'selection' with start and end points.");
|
|
69585
|
+
validatePrincipal2(principal, "permissionRanges.create");
|
|
69586
|
+
if (input.id !== undefined)
|
|
69587
|
+
requireNonEmptyId2(input.id, "permissionRanges.create");
|
|
69588
|
+
return adapter.create(input, normalizeMutationOptions2(options));
|
|
69589
|
+
}
|
|
69590
|
+
function executePermissionRangesRemove2(adapter, input, options) {
|
|
69591
|
+
requireNonEmptyId2(input?.id, "permissionRanges.remove");
|
|
69592
|
+
return adapter.remove(input, normalizeMutationOptions2(options));
|
|
69593
|
+
}
|
|
69594
|
+
function executePermissionRangesUpdatePrincipal2(adapter, input, options) {
|
|
69595
|
+
requireNonEmptyId2(input?.id, "permissionRanges.updatePrincipal");
|
|
69596
|
+
validatePrincipal2(input?.principal, "permissionRanges.updatePrincipal");
|
|
69597
|
+
return adapter.updatePrincipal(input, normalizeMutationOptions2(options));
|
|
69598
|
+
}
|
|
69202
69599
|
function validateFootnoteTarget2(target, operationName) {
|
|
69203
69600
|
assertTargetPresent2(target, operationName);
|
|
69204
69601
|
const t = target;
|
|
@@ -70692,6 +71089,34 @@ function createDocumentApi2(adapters) {
|
|
|
70692
71089
|
return executeHistoryRedo2(adapters.history);
|
|
70693
71090
|
}
|
|
70694
71091
|
},
|
|
71092
|
+
protection: {
|
|
71093
|
+
get(input) {
|
|
71094
|
+
return executeProtectionGet2(adapters.protection, input);
|
|
71095
|
+
},
|
|
71096
|
+
setEditingRestriction(input, options) {
|
|
71097
|
+
return executeSetEditingRestriction2(adapters.protection, input, options);
|
|
71098
|
+
},
|
|
71099
|
+
clearEditingRestriction(input, options) {
|
|
71100
|
+
return executeClearEditingRestriction2(adapters.protection, input, options);
|
|
71101
|
+
}
|
|
71102
|
+
},
|
|
71103
|
+
permissionRanges: {
|
|
71104
|
+
list(input) {
|
|
71105
|
+
return executePermissionRangesList2(adapters.permissionRanges, input);
|
|
71106
|
+
},
|
|
71107
|
+
get(input) {
|
|
71108
|
+
return executePermissionRangesGet2(adapters.permissionRanges, input);
|
|
71109
|
+
},
|
|
71110
|
+
create(input, options) {
|
|
71111
|
+
return executePermissionRangesCreate2(adapters.permissionRanges, input, options);
|
|
71112
|
+
},
|
|
71113
|
+
remove(input, options) {
|
|
71114
|
+
return executePermissionRangesRemove2(adapters.permissionRanges, input, options);
|
|
71115
|
+
},
|
|
71116
|
+
updatePrincipal(input, options) {
|
|
71117
|
+
return executePermissionRangesUpdatePrincipal2(adapters.permissionRanges, input, options);
|
|
71118
|
+
}
|
|
71119
|
+
},
|
|
70695
71120
|
invoke(request) {
|
|
70696
71121
|
if (!Object.prototype.hasOwnProperty.call(dispatch, request.operationId))
|
|
70697
71122
|
throw new Error(`Unknown operationId: "${request.operationId}"`);
|
|
@@ -94135,6 +94560,253 @@ function compoundMutation(request) {
|
|
|
94135
94560
|
state._partPublisher?.flush();
|
|
94136
94561
|
return { success };
|
|
94137
94562
|
}
|
|
94563
|
+
function findSettingsRoot(part) {
|
|
94564
|
+
if (part.name === "w:settings")
|
|
94565
|
+
return part;
|
|
94566
|
+
if (!Array.isArray(part.elements))
|
|
94567
|
+
return null;
|
|
94568
|
+
return part.elements.find((entry) => entry.name === "w:settings") ?? null;
|
|
94569
|
+
}
|
|
94570
|
+
function ensureSettingsRootElements(settingsRoot) {
|
|
94571
|
+
if (!Array.isArray(settingsRoot.elements))
|
|
94572
|
+
settingsRoot.elements = [];
|
|
94573
|
+
return settingsRoot.elements;
|
|
94574
|
+
}
|
|
94575
|
+
function readSettingsRoot(converter) {
|
|
94576
|
+
const part = converter.convertedXml?.[SETTINGS_PART_PATH];
|
|
94577
|
+
if (!part)
|
|
94578
|
+
return null;
|
|
94579
|
+
return findSettingsRoot(part);
|
|
94580
|
+
}
|
|
94581
|
+
function ensureSettingsRoot(part) {
|
|
94582
|
+
const settingsRoot = findSettingsRoot(part);
|
|
94583
|
+
if (settingsRoot)
|
|
94584
|
+
return settingsRoot;
|
|
94585
|
+
const fallbackRoot = {
|
|
94586
|
+
type: "element",
|
|
94587
|
+
name: "w:settings",
|
|
94588
|
+
elements: []
|
|
94589
|
+
};
|
|
94590
|
+
if (!Array.isArray(part.elements))
|
|
94591
|
+
part.elements = [];
|
|
94592
|
+
part.elements.push(fallbackRoot);
|
|
94593
|
+
return fallbackRoot;
|
|
94594
|
+
}
|
|
94595
|
+
function readDefaultTableStyle(settingsRoot) {
|
|
94596
|
+
const el = settingsRoot.elements?.find((entry) => entry.name === "w:defaultTableStyle");
|
|
94597
|
+
if (!el)
|
|
94598
|
+
return null;
|
|
94599
|
+
const val = el.attributes?.["w:val"];
|
|
94600
|
+
return typeof val === "string" && val.length > 0 ? val : null;
|
|
94601
|
+
}
|
|
94602
|
+
function setDefaultTableStyle(settingsRoot, styleId) {
|
|
94603
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94604
|
+
const idx = elements.findIndex((entry) => entry.name === "w:defaultTableStyle");
|
|
94605
|
+
const newEl = {
|
|
94606
|
+
type: "element",
|
|
94607
|
+
name: "w:defaultTableStyle",
|
|
94608
|
+
attributes: { "w:val": styleId },
|
|
94609
|
+
elements: []
|
|
94610
|
+
};
|
|
94611
|
+
if (idx !== -1)
|
|
94612
|
+
elements[idx] = newEl;
|
|
94613
|
+
else
|
|
94614
|
+
elements.push(newEl);
|
|
94615
|
+
}
|
|
94616
|
+
function removeDefaultTableStyle(settingsRoot) {
|
|
94617
|
+
settingsRoot.elements = ensureSettingsRootElements(settingsRoot).filter((entry) => entry.name !== "w:defaultTableStyle");
|
|
94618
|
+
}
|
|
94619
|
+
function hasOddEvenHeadersFooters(settingsRoot) {
|
|
94620
|
+
return settingsRoot.elements?.some((entry) => entry.name === "w:evenAndOddHeaders") === true;
|
|
94621
|
+
}
|
|
94622
|
+
function setOddEvenHeadersFooters(settingsRoot, enabled) {
|
|
94623
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94624
|
+
const hadFlag = hasOddEvenHeadersFooters(settingsRoot);
|
|
94625
|
+
if (enabled) {
|
|
94626
|
+
if (!hadFlag)
|
|
94627
|
+
elements.push({
|
|
94628
|
+
type: "element",
|
|
94629
|
+
name: "w:evenAndOddHeaders",
|
|
94630
|
+
elements: []
|
|
94631
|
+
});
|
|
94632
|
+
} else
|
|
94633
|
+
settingsRoot.elements = elements.filter((entry) => entry.name !== "w:evenAndOddHeaders");
|
|
94634
|
+
return hadFlag !== hasOddEvenHeadersFooters(settingsRoot);
|
|
94635
|
+
}
|
|
94636
|
+
function hasUpdateFields(settingsRoot) {
|
|
94637
|
+
const el = settingsRoot.elements?.find((entry) => entry.name === "w:updateFields");
|
|
94638
|
+
if (!el)
|
|
94639
|
+
return false;
|
|
94640
|
+
const val = el.attributes?.["w:val"];
|
|
94641
|
+
return val === "true" || val === "1" || val === true;
|
|
94642
|
+
}
|
|
94643
|
+
function setUpdateFields(settingsRoot, enabled) {
|
|
94644
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94645
|
+
const idx = elements.findIndex((entry) => entry.name === "w:updateFields");
|
|
94646
|
+
if (enabled) {
|
|
94647
|
+
const newEl = {
|
|
94648
|
+
type: "element",
|
|
94649
|
+
name: "w:updateFields",
|
|
94650
|
+
attributes: { "w:val": "true" },
|
|
94651
|
+
elements: []
|
|
94652
|
+
};
|
|
94653
|
+
if (idx !== -1)
|
|
94654
|
+
elements[idx] = newEl;
|
|
94655
|
+
else
|
|
94656
|
+
elements.push(newEl);
|
|
94657
|
+
} else if (idx !== -1)
|
|
94658
|
+
elements.splice(idx, 1);
|
|
94659
|
+
}
|
|
94660
|
+
function isXmlTrue(value) {
|
|
94661
|
+
return value === "1" || value === 1 || value === "true" || value === "on" || value === true;
|
|
94662
|
+
}
|
|
94663
|
+
function hasVerifierFields(attrs) {
|
|
94664
|
+
return !!(attrs["w:cryptAlgorithmSid"] || attrs["w:hash"] || attrs["w:salt"] || attrs["w:cryptProviderType"] || attrs["w:cryptAlgorithmType"] || attrs["w:cryptAlgorithmClass"] || attrs["w:cryptSpinCount"]);
|
|
94665
|
+
}
|
|
94666
|
+
function parseProtectionState(settingsRoot) {
|
|
94667
|
+
if (!settingsRoot)
|
|
94668
|
+
return { ...DEFAULT_PROTECTION_STATE };
|
|
94669
|
+
const elements = settingsRoot.elements ?? [];
|
|
94670
|
+
const docProtEl = elements.find((el) => el.name === "w:documentProtection");
|
|
94671
|
+
const dpAttrs = docProtEl?.attributes ?? {};
|
|
94672
|
+
const rawMode = dpAttrs["w:edit"];
|
|
94673
|
+
const mode = rawMode && VALID_EDIT_MODES.has(rawMode) ? rawMode : "none";
|
|
94674
|
+
const enforced = isXmlTrue(dpAttrs["w:enforcement"]);
|
|
94675
|
+
const formattingRestricted = isXmlTrue(dpAttrs["w:formatting"]);
|
|
94676
|
+
const passwordProtected = docProtEl ? hasVerifierFields(dpAttrs) : false;
|
|
94677
|
+
const runtimeEnforced = mode === "readOnly" && enforced;
|
|
94678
|
+
const writeProt = elements.find((el) => el.name === "w:writeProtection");
|
|
94679
|
+
const wpAttrs = writeProt?.attributes ?? {};
|
|
94680
|
+
const writeEnabled = !!writeProt;
|
|
94681
|
+
const writePasswordProtected = writeProt ? hasVerifierFields(wpAttrs) : false;
|
|
94682
|
+
const readOnlyRecommended = isXmlTrue(wpAttrs["w:recommended"]);
|
|
94683
|
+
return {
|
|
94684
|
+
editingRestriction: {
|
|
94685
|
+
mode,
|
|
94686
|
+
enforced,
|
|
94687
|
+
runtimeEnforced,
|
|
94688
|
+
passwordProtected,
|
|
94689
|
+
formattingRestricted
|
|
94690
|
+
},
|
|
94691
|
+
writeProtection: {
|
|
94692
|
+
enabled: writeEnabled,
|
|
94693
|
+
passwordProtected: writePasswordProtected
|
|
94694
|
+
},
|
|
94695
|
+
readOnlyRecommended
|
|
94696
|
+
};
|
|
94697
|
+
}
|
|
94698
|
+
function setDocumentProtection(settingsRoot, opts) {
|
|
94699
|
+
const elements = ensureSettingsRootElements(settingsRoot);
|
|
94700
|
+
const idx = elements.findIndex((el) => el.name === "w:documentProtection");
|
|
94701
|
+
const attrs = {
|
|
94702
|
+
...idx !== -1 ? { ...elements[idx].attributes ?? {} } : {},
|
|
94703
|
+
"w:edit": opts.mode,
|
|
94704
|
+
"w:enforcement": opts.enforced ? "1" : "0"
|
|
94705
|
+
};
|
|
94706
|
+
if (opts.formattingRestricted !== undefined)
|
|
94707
|
+
attrs["w:formatting"] = opts.formattingRestricted ? "1" : "0";
|
|
94708
|
+
const newEl = {
|
|
94709
|
+
type: "element",
|
|
94710
|
+
name: "w:documentProtection",
|
|
94711
|
+
attributes: attrs,
|
|
94712
|
+
elements: []
|
|
94713
|
+
};
|
|
94714
|
+
if (idx !== -1)
|
|
94715
|
+
elements[idx] = newEl;
|
|
94716
|
+
else
|
|
94717
|
+
elements.push(newEl);
|
|
94718
|
+
}
|
|
94719
|
+
function clearDocumentProtectionEnforcement(settingsRoot) {
|
|
94720
|
+
const el = (settingsRoot.elements ?? []).find((e) => e.name === "w:documentProtection");
|
|
94721
|
+
if (!el)
|
|
94722
|
+
return;
|
|
94723
|
+
if (!el.attributes)
|
|
94724
|
+
el.attributes = {};
|
|
94725
|
+
el.attributes["w:enforcement"] = "0";
|
|
94726
|
+
}
|
|
94727
|
+
function getProtectionStorage(editor) {
|
|
94728
|
+
return editor?.storage?.protection;
|
|
94729
|
+
}
|
|
94730
|
+
function isReadOnlyProtectionRuntimeEnforced(editor) {
|
|
94731
|
+
const storage = getProtectionStorage(editor);
|
|
94732
|
+
if (!storage?.initialized)
|
|
94733
|
+
return false;
|
|
94734
|
+
return storage.state?.editingRestriction?.runtimeEnforced === true;
|
|
94735
|
+
}
|
|
94736
|
+
function applyEffectiveEditability(editor, opts = {}) {
|
|
94737
|
+
if (!editor || editor.isDestroyed)
|
|
94738
|
+
return;
|
|
94739
|
+
if (opts.refilterRanges !== false)
|
|
94740
|
+
refilterAllowedRanges(editor);
|
|
94741
|
+
const protectionEnforced = isReadOnlyProtectionRuntimeEnforced(editor);
|
|
94742
|
+
const hasAllowedRanges = editor.storage?.permissionRanges?.hasAllowedRanges === true;
|
|
94743
|
+
const documentMode = editor.options?.documentMode;
|
|
94744
|
+
const storage = getProtectionStorage(editor);
|
|
94745
|
+
if (protectionEnforced) {
|
|
94746
|
+
if (storage && storage.editableBaseline === null)
|
|
94747
|
+
storage.editableBaseline = editor.isEditable;
|
|
94748
|
+
const shouldBeEditable = hasAllowedRanges;
|
|
94749
|
+
if (editor.isEditable !== shouldBeEditable)
|
|
94750
|
+
editor.setEditable(shouldBeEditable, false);
|
|
94751
|
+
} else {
|
|
94752
|
+
const baseline = storage?.editableBaseline ?? null;
|
|
94753
|
+
if (storage)
|
|
94754
|
+
storage.editableBaseline = null;
|
|
94755
|
+
if (documentMode === "viewing") {
|
|
94756
|
+
if (editor.isEditable !== false)
|
|
94757
|
+
editor.setEditable(false, false);
|
|
94758
|
+
} else if (baseline !== null && editor.isEditable !== baseline)
|
|
94759
|
+
editor.setEditable(baseline, false);
|
|
94760
|
+
}
|
|
94761
|
+
}
|
|
94762
|
+
function refilterAllowedRanges(editor) {
|
|
94763
|
+
const storage = editor?.storage?.permissionRanges;
|
|
94764
|
+
if (!storage)
|
|
94765
|
+
return;
|
|
94766
|
+
const allRanges = storage.allRanges;
|
|
94767
|
+
if (!Array.isArray(allRanges))
|
|
94768
|
+
return;
|
|
94769
|
+
if (!isReadOnlyProtectionRuntimeEnforced(editor)) {
|
|
94770
|
+
storage.allowedRanges = [];
|
|
94771
|
+
storage.hasAllowedRanges = false;
|
|
94772
|
+
storage.ranges = [];
|
|
94773
|
+
return;
|
|
94774
|
+
}
|
|
94775
|
+
const allowedIdentifiers = buildAllowedIdentifierSetFromEditor(editor);
|
|
94776
|
+
const filtered = allRanges.filter((entry) => isRangeAllowedForPrincipal(entry, allowedIdentifiers));
|
|
94777
|
+
storage.allowedRanges = filtered;
|
|
94778
|
+
storage.hasAllowedRanges = filtered.length > 0;
|
|
94779
|
+
storage.ranges = filtered;
|
|
94780
|
+
}
|
|
94781
|
+
function buildAllowedIdentifierSetFromEditor(editor) {
|
|
94782
|
+
const user = editor?.options?.user;
|
|
94783
|
+
if (!user)
|
|
94784
|
+
return /* @__PURE__ */ new Set;
|
|
94785
|
+
const principals = user.permissionPrincipals;
|
|
94786
|
+
if (Array.isArray(principals))
|
|
94787
|
+
return new Set(principals.map((p) => typeof p === "string" ? p.trim().toLowerCase() : "").filter(Boolean));
|
|
94788
|
+
const email = typeof user.email === "string" ? user.email.trim().toLowerCase() : "";
|
|
94789
|
+
if (!email)
|
|
94790
|
+
return /* @__PURE__ */ new Set;
|
|
94791
|
+
const [localPart, domain2] = email.split("@");
|
|
94792
|
+
if (!localPart || !domain2)
|
|
94793
|
+
return /* @__PURE__ */ new Set;
|
|
94794
|
+
return new Set([`${domain2}\\${localPart}`]);
|
|
94795
|
+
}
|
|
94796
|
+
function isRangeAllowedForPrincipal(entry, allowedIdentifiers) {
|
|
94797
|
+
if (entry.principal) {
|
|
94798
|
+
if (entry.principal.kind === "everyone")
|
|
94799
|
+
return true;
|
|
94800
|
+
if (entry.principal.kind === "editor") {
|
|
94801
|
+
const id2 = typeof entry.principal.id === "string" ? entry.principal.id.trim().toLowerCase() : "";
|
|
94802
|
+
return id2 ? allowedIdentifiers.has(id2) : false;
|
|
94803
|
+
}
|
|
94804
|
+
}
|
|
94805
|
+
if ((typeof entry.edGrp === "string" ? entry.edGrp.trim().toLowerCase() : "") === "everyone")
|
|
94806
|
+
return true;
|
|
94807
|
+
const ed = typeof entry.ed === "string" ? entry.ed.trim().toLowerCase() : "";
|
|
94808
|
+
return ed ? allowedIdentifiers.has(ed) : false;
|
|
94809
|
+
}
|
|
94138
94810
|
function handleNumberingInvalidation(editor, _event) {
|
|
94139
94811
|
try {
|
|
94140
94812
|
editor.view?.dispatch?.(editor.state.tr);
|
|
@@ -94155,11 +94827,29 @@ function handleNotesInvalidation(editor, _event) {
|
|
|
94155
94827
|
editor.view?.dispatch?.(tr);
|
|
94156
94828
|
} catch {}
|
|
94157
94829
|
}
|
|
94830
|
+
function handleSettingsInvalidation(editor, event) {
|
|
94831
|
+
if (event.source.startsWith("protection."))
|
|
94832
|
+
return;
|
|
94833
|
+
const converter = editor.converter;
|
|
94834
|
+
if (!converter)
|
|
94835
|
+
return;
|
|
94836
|
+
const newState = parseProtectionState(readSettingsRoot(converter));
|
|
94837
|
+
const protStorage = getProtectionStorage(editor);
|
|
94838
|
+
if (protStorage)
|
|
94839
|
+
protStorage.state = newState;
|
|
94840
|
+
applyEffectiveEditability(editor);
|
|
94841
|
+
editor.emit("protectionChanged", {
|
|
94842
|
+
editor,
|
|
94843
|
+
state: newState,
|
|
94844
|
+
source: "remote-part-sync"
|
|
94845
|
+
});
|
|
94846
|
+
}
|
|
94158
94847
|
function registerStaticInvalidationHandlers() {
|
|
94159
94848
|
registerInvalidationHandler("word/numbering.xml", handleNumberingInvalidation);
|
|
94160
94849
|
registerInvalidationHandler("word/_rels/document.xml.rels", handleRelationshipsInvalidation);
|
|
94161
94850
|
registerInvalidationHandler("word/footnotes.xml", handleNotesInvalidation);
|
|
94162
94851
|
registerInvalidationHandler("word/endnotes.xml", handleNotesInvalidation);
|
|
94852
|
+
registerInvalidationHandler("word/settings.xml", handleSettingsInvalidation);
|
|
94163
94853
|
}
|
|
94164
94854
|
function registerHeaderFooterInvalidation(partId) {
|
|
94165
94855
|
registerInvalidationHandler(partId, handleHeaderFooterInvalidation);
|
|
@@ -96612,103 +97302,6 @@ function refreshAllStatFields(editor) {
|
|
|
96612
97302
|
}
|
|
96613
97303
|
return cacheMap;
|
|
96614
97304
|
}
|
|
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
97305
|
function getLocalName(name) {
|
|
96713
97306
|
if (!name || typeof name !== "string")
|
|
96714
97307
|
return "";
|
|
@@ -99070,7 +99663,7 @@ var isRegExp = (value) => {
|
|
|
99070
99663
|
tracked: false,
|
|
99071
99664
|
carrier: runAttributeCarrier2(runPropertyKey ?? key),
|
|
99072
99665
|
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) => ({
|
|
99666
|
+
}), 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
99667
|
handlerName,
|
|
99075
99668
|
handler: (params3) => {
|
|
99076
99669
|
const { nodes } = params3;
|
|
@@ -113245,7 +113838,7 @@ var isRegExp = (value) => {
|
|
|
113245
113838
|
candidate = candidate.prev;
|
|
113246
113839
|
}
|
|
113247
113840
|
}
|
|
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) => {
|
|
113841
|
+
}, 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
113842
|
const $pos = doc$2.resolve(pos);
|
|
113250
113843
|
const parent = $pos.parent;
|
|
113251
113844
|
const start = parent.childAfter($pos.parentOffset);
|
|
@@ -113313,7 +113906,7 @@ var isRegExp = (value) => {
|
|
|
113313
113906
|
if (id2)
|
|
113314
113907
|
return trackedChanges.filter(({ mark }) => mark.attrs.id === id2);
|
|
113315
113908
|
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,
|
|
113909
|
+
}, 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
113910
|
if (!runProps?.elements?.length || !state)
|
|
113318
113911
|
return;
|
|
113319
113912
|
const fontsNode = runProps.elements.find((el) => el.name === "w:rFonts");
|
|
@@ -113347,7 +113940,7 @@ var isRegExp = (value) => {
|
|
|
113347
113940
|
state.kern = kernNode.attributes["w:val"];
|
|
113348
113941
|
}
|
|
113349
113942
|
}, SuperConverter;
|
|
113350
|
-
var
|
|
113943
|
+
var init_SuperConverter_CMIR0kxi_es = __esm(() => {
|
|
113351
113944
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
113352
113945
|
init_jszip_ChlR43oI_es();
|
|
113353
113946
|
init_xml_js_40FWvL78_es();
|
|
@@ -116349,6 +116942,15 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
116349
116942
|
"INVALID_INPUT",
|
|
116350
116943
|
"CAPABILITY_UNAVAILABLE"
|
|
116351
116944
|
];
|
|
116945
|
+
T_PROTECTION_READ2 = ["CAPABILITY_UNAVAILABLE"];
|
|
116946
|
+
T_PROTECTION_MUTATION2 = ["INVALID_INPUT", "CAPABILITY_UNAVAILABLE"];
|
|
116947
|
+
T_PERM_RANGE_READ2 = ["TARGET_NOT_FOUND", "CAPABILITY_UNAVAILABLE"];
|
|
116948
|
+
T_PERM_RANGE_MUTATION2 = [
|
|
116949
|
+
"TARGET_NOT_FOUND",
|
|
116950
|
+
"INVALID_TARGET",
|
|
116951
|
+
"INVALID_INPUT",
|
|
116952
|
+
"CAPABILITY_UNAVAILABLE"
|
|
116953
|
+
];
|
|
116352
116954
|
FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2 = Object.fromEntries(INLINE_PROPERTY_REGISTRY2.map((entry) => {
|
|
116353
116955
|
const operationId = `format.${entry.key}`;
|
|
116354
116956
|
return [operationId, {
|
|
@@ -121580,6 +122182,116 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
121580
122182
|
referenceDocPath: "diff/apply.mdx",
|
|
121581
122183
|
referenceGroup: "diff",
|
|
121582
122184
|
skipAsATool: true
|
|
122185
|
+
},
|
|
122186
|
+
"protection.get": {
|
|
122187
|
+
memberPath: "protection.get",
|
|
122188
|
+
description: "Read the current document protection state including editing restrictions, write protection, and read-only recommendation.",
|
|
122189
|
+
expectedResult: "Returns a DocumentProtectionState with editingRestriction, writeProtection, and readOnlyRecommended fields.",
|
|
122190
|
+
requiresDocumentContext: true,
|
|
122191
|
+
metadata: readOperation2({ throws: T_PROTECTION_READ2 }),
|
|
122192
|
+
referenceDocPath: "protection/get.mdx",
|
|
122193
|
+
referenceGroup: "protection",
|
|
122194
|
+
skipAsATool: true
|
|
122195
|
+
},
|
|
122196
|
+
"protection.setEditingRestriction": {
|
|
122197
|
+
memberPath: "protection.setEditingRestriction",
|
|
122198
|
+
description: "Enable Word-style editing restriction on the document. Only readOnly mode is supported in v1.",
|
|
122199
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
122200
|
+
requiresDocumentContext: true,
|
|
122201
|
+
metadata: mutationOperation2({
|
|
122202
|
+
idempotency: "idempotent",
|
|
122203
|
+
supportsDryRun: true,
|
|
122204
|
+
supportsTrackedMode: false,
|
|
122205
|
+
possibleFailureCodes: ["NO_OP"],
|
|
122206
|
+
throws: T_PROTECTION_MUTATION2
|
|
122207
|
+
}),
|
|
122208
|
+
referenceDocPath: "protection/set-editing-restriction.mdx",
|
|
122209
|
+
referenceGroup: "protection",
|
|
122210
|
+
skipAsATool: true
|
|
122211
|
+
},
|
|
122212
|
+
"protection.clearEditingRestriction": {
|
|
122213
|
+
memberPath: "protection.clearEditingRestriction",
|
|
122214
|
+
description: "Disable document-level editing restriction by setting enforcement to off. Preserves the protection element and its metadata for round-trip fidelity.",
|
|
122215
|
+
expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.",
|
|
122216
|
+
requiresDocumentContext: true,
|
|
122217
|
+
metadata: mutationOperation2({
|
|
122218
|
+
idempotency: "idempotent",
|
|
122219
|
+
supportsDryRun: true,
|
|
122220
|
+
supportsTrackedMode: false,
|
|
122221
|
+
possibleFailureCodes: ["NO_OP"],
|
|
122222
|
+
throws: T_PROTECTION_MUTATION2
|
|
122223
|
+
}),
|
|
122224
|
+
referenceDocPath: "protection/clear-editing-restriction.mdx",
|
|
122225
|
+
referenceGroup: "protection",
|
|
122226
|
+
skipAsATool: true
|
|
122227
|
+
},
|
|
122228
|
+
"permissionRanges.list": {
|
|
122229
|
+
memberPath: "permissionRanges.list",
|
|
122230
|
+
description: "List all permission ranges in the document. Returns only complete paired ranges (both start and end markers present).",
|
|
122231
|
+
expectedResult: "Returns a PermissionRangesListResult containing discovered permission ranges with principal and position data.",
|
|
122232
|
+
requiresDocumentContext: true,
|
|
122233
|
+
metadata: readOperation2({ throws: T_PERM_RANGE_READ2 }),
|
|
122234
|
+
referenceDocPath: "permission-ranges/list.mdx",
|
|
122235
|
+
referenceGroup: "permissionRanges",
|
|
122236
|
+
skipAsATool: true
|
|
122237
|
+
},
|
|
122238
|
+
"permissionRanges.get": {
|
|
122239
|
+
memberPath: "permissionRanges.get",
|
|
122240
|
+
description: "Get detailed information about a specific permission range by ID.",
|
|
122241
|
+
expectedResult: "Returns a PermissionRangeInfo object with the range principal, kind, and positions.",
|
|
122242
|
+
requiresDocumentContext: true,
|
|
122243
|
+
metadata: readOperation2({ throws: T_PERM_RANGE_READ2 }),
|
|
122244
|
+
referenceDocPath: "permission-ranges/get.mdx",
|
|
122245
|
+
referenceGroup: "permissionRanges",
|
|
122246
|
+
skipAsATool: true
|
|
122247
|
+
},
|
|
122248
|
+
"permissionRanges.create": {
|
|
122249
|
+
memberPath: "permissionRanges.create",
|
|
122250
|
+
description: "Create a permission range exception region in the document. Inserts matched permStart/permEnd markers at the target.",
|
|
122251
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the created range info on success.",
|
|
122252
|
+
requiresDocumentContext: true,
|
|
122253
|
+
metadata: mutationOperation2({
|
|
122254
|
+
idempotency: "non-idempotent",
|
|
122255
|
+
supportsDryRun: true,
|
|
122256
|
+
supportsTrackedMode: false,
|
|
122257
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
122258
|
+
throws: T_PERM_RANGE_MUTATION2
|
|
122259
|
+
}),
|
|
122260
|
+
referenceDocPath: "permission-ranges/create.mdx",
|
|
122261
|
+
referenceGroup: "permissionRanges",
|
|
122262
|
+
skipAsATool: true
|
|
122263
|
+
},
|
|
122264
|
+
"permissionRanges.remove": {
|
|
122265
|
+
memberPath: "permissionRanges.remove",
|
|
122266
|
+
description: "Remove a permission range by ID. Removes whichever markers exist for the given ID (start, end, or both).",
|
|
122267
|
+
expectedResult: "Returns a PermissionRangeRemoveResult indicating success or a failure.",
|
|
122268
|
+
requiresDocumentContext: true,
|
|
122269
|
+
metadata: mutationOperation2({
|
|
122270
|
+
idempotency: "idempotent",
|
|
122271
|
+
supportsDryRun: true,
|
|
122272
|
+
supportsTrackedMode: false,
|
|
122273
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
122274
|
+
throws: T_PERM_RANGE_MUTATION2
|
|
122275
|
+
}),
|
|
122276
|
+
referenceDocPath: "permission-ranges/remove.mdx",
|
|
122277
|
+
referenceGroup: "permissionRanges",
|
|
122278
|
+
skipAsATool: true
|
|
122279
|
+
},
|
|
122280
|
+
"permissionRanges.updatePrincipal": {
|
|
122281
|
+
memberPath: "permissionRanges.updatePrincipal",
|
|
122282
|
+
description: "Change which principal is allowed to edit a permission range. Updates the principal fields on the start marker.",
|
|
122283
|
+
expectedResult: "Returns a PermissionRangeMutationResult with the updated range info on success.",
|
|
122284
|
+
requiresDocumentContext: true,
|
|
122285
|
+
metadata: mutationOperation2({
|
|
122286
|
+
idempotency: "idempotent",
|
|
122287
|
+
supportsDryRun: true,
|
|
122288
|
+
supportsTrackedMode: false,
|
|
122289
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
122290
|
+
throws: T_PERM_RANGE_MUTATION2
|
|
122291
|
+
}),
|
|
122292
|
+
referenceDocPath: "permission-ranges/update-principal.mdx",
|
|
122293
|
+
referenceGroup: "permissionRanges",
|
|
122294
|
+
skipAsATool: true
|
|
121583
122295
|
}
|
|
121584
122296
|
};
|
|
121585
122297
|
OPERATION_IDS2 = Object.freeze(Object.keys(OPERATION_DEFINITIONS2));
|
|
@@ -127226,7 +127938,64 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
127226
127938
|
}, ["at", "entry"]), { ...authorityEntryMutation2 }, objectSchema2({
|
|
127227
127939
|
target: authorityEntryAddressSchema2,
|
|
127228
127940
|
patch: authorityEntryPatchSchema2
|
|
127229
|
-
}, ["target", "patch"]), { ...authorityEntryMutation2 }, objectSchema2({ target: authorityEntryAddressSchema2 }, ["target"]), { ...authorityEntryMutation2 }, objectSchema2({}), objectSchema2({ targetSnapshot: diffSnapshotSchema2 }, ["targetSnapshot"]), objectSchema2({ diff: diffPayloadSchema2 }, ["diff"])
|
|
127941
|
+
}, ["target", "patch"]), { ...authorityEntryMutation2 }, objectSchema2({ target: authorityEntryAddressSchema2 }, ["target"]), { ...authorityEntryMutation2 }, objectSchema2({}), objectSchema2({ targetSnapshot: diffSnapshotSchema2 }, ["targetSnapshot"]), objectSchema2({ diff: diffPayloadSchema2 }, ["diff"]), objectSchema2({}), objectSchema2({
|
|
127942
|
+
editingRestriction: objectSchema2({
|
|
127943
|
+
mode: {
|
|
127944
|
+
type: "string",
|
|
127945
|
+
enum: [
|
|
127946
|
+
"none",
|
|
127947
|
+
"readOnly",
|
|
127948
|
+
"comments",
|
|
127949
|
+
"trackedChanges",
|
|
127950
|
+
"forms"
|
|
127951
|
+
]
|
|
127952
|
+
},
|
|
127953
|
+
enforced: { type: "boolean" },
|
|
127954
|
+
runtimeEnforced: { type: "boolean" },
|
|
127955
|
+
passwordProtected: { type: "boolean" },
|
|
127956
|
+
formattingRestricted: { type: "boolean" }
|
|
127957
|
+
}, [
|
|
127958
|
+
"mode",
|
|
127959
|
+
"enforced",
|
|
127960
|
+
"runtimeEnforced",
|
|
127961
|
+
"passwordProtected",
|
|
127962
|
+
"formattingRestricted"
|
|
127963
|
+
]),
|
|
127964
|
+
writeProtection: objectSchema2({
|
|
127965
|
+
enabled: { type: "boolean" },
|
|
127966
|
+
passwordProtected: { type: "boolean" }
|
|
127967
|
+
}, ["enabled", "passwordProtected"]),
|
|
127968
|
+
readOnlyRecommended: { type: "boolean" }
|
|
127969
|
+
}, [
|
|
127970
|
+
"editingRestriction",
|
|
127971
|
+
"writeProtection",
|
|
127972
|
+
"readOnlyRecommended"
|
|
127973
|
+
]), objectSchema2({
|
|
127974
|
+
mode: {
|
|
127975
|
+
type: "string",
|
|
127976
|
+
enum: ["readOnly"]
|
|
127977
|
+
},
|
|
127978
|
+
formattingRestricted: { type: "boolean" }
|
|
127979
|
+
}, ["mode"]), objectSchema2({}), objectSchema2({ id: { type: "string" } }, ["id"]), objectSchema2({
|
|
127980
|
+
target: selectionTargetSchema2,
|
|
127981
|
+
principal: objectSchema2({
|
|
127982
|
+
kind: {
|
|
127983
|
+
type: "string",
|
|
127984
|
+
enum: ["everyone", "editor"]
|
|
127985
|
+
},
|
|
127986
|
+
id: { type: "string" }
|
|
127987
|
+
}, ["kind"]),
|
|
127988
|
+
id: { type: "string" }
|
|
127989
|
+
}, ["target", "principal"]), objectSchema2({ id: { type: "string" } }, ["id"]), objectSchema2({
|
|
127990
|
+
id: { type: "string" },
|
|
127991
|
+
principal: objectSchema2({
|
|
127992
|
+
kind: {
|
|
127993
|
+
type: "string",
|
|
127994
|
+
enum: ["everyone", "editor"]
|
|
127995
|
+
},
|
|
127996
|
+
id: { type: "string" }
|
|
127997
|
+
}, ["kind"])
|
|
127998
|
+
}, ["id", "principal"]);
|
|
127230
127999
|
projectFromDefinitions2((_id, entry) => entry.memberPath);
|
|
127231
128000
|
[...new Set(OPERATION_IDS2.map((id2) => OPERATION_DEFINITIONS2[id2].memberPath))];
|
|
127232
128001
|
projectFromDefinitions2((_id, entry) => entry.referenceDocPath);
|
|
@@ -127385,6 +128154,16 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
127385
128154
|
title: "Diff",
|
|
127386
128155
|
description: "Snapshot-based document comparison and replay.",
|
|
127387
128156
|
pagePath: "diff/index.mdx"
|
|
128157
|
+
},
|
|
128158
|
+
protection: {
|
|
128159
|
+
title: "Protection",
|
|
128160
|
+
description: "Document-level protection state and editing restriction operations.",
|
|
128161
|
+
pagePath: "protection/index.mdx"
|
|
128162
|
+
},
|
|
128163
|
+
permissionRanges: {
|
|
128164
|
+
title: "Permission Ranges",
|
|
128165
|
+
description: "Permission range exception operations for protected documents.",
|
|
128166
|
+
pagePath: "permission-ranges/index.mdx"
|
|
127388
128167
|
}
|
|
127389
128168
|
};
|
|
127390
128169
|
Object.keys(GROUP_METADATA2).map((key) => ({
|
|
@@ -127743,12 +128522,27 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
127743
128522
|
"setAttr",
|
|
127744
128523
|
"removeAttr"
|
|
127745
128524
|
]);
|
|
128525
|
+
VALID_SET_MODES2 = new Set(["readOnly"]);
|
|
127746
128526
|
VALID_CREATE_LOCATION_KINDS2 = new Set([
|
|
127747
128527
|
"documentStart",
|
|
127748
128528
|
"documentEnd",
|
|
127749
128529
|
"before",
|
|
127750
128530
|
"after"
|
|
127751
128531
|
]);
|
|
128532
|
+
DEFAULT_PROTECTION_STATE = {
|
|
128533
|
+
editingRestriction: {
|
|
128534
|
+
mode: "none",
|
|
128535
|
+
enforced: false,
|
|
128536
|
+
runtimeEnforced: false,
|
|
128537
|
+
passwordProtected: false,
|
|
128538
|
+
formattingRestricted: false
|
|
128539
|
+
},
|
|
128540
|
+
writeProtection: {
|
|
128541
|
+
enabled: false,
|
|
128542
|
+
passwordProtected: false
|
|
128543
|
+
},
|
|
128544
|
+
readOnlyRecommended: false
|
|
128545
|
+
};
|
|
127752
128546
|
ADAPTER_GATED_PREFIXES2 = [
|
|
127753
128547
|
"bookmarks",
|
|
127754
128548
|
"footnotes",
|
|
@@ -148926,6 +149720,12 @@ var init_SuperConverter_OPfy6vj2_es = __esm(() => {
|
|
|
148926
149720
|
"both"
|
|
148927
149721
|
];
|
|
148928
149722
|
readSectPrHeaderFooterRefs = readSectPrRefsByKind;
|
|
149723
|
+
VALID_EDIT_MODES = new Set([
|
|
149724
|
+
"readOnly",
|
|
149725
|
+
"comments",
|
|
149726
|
+
"trackedChanges",
|
|
149727
|
+
"forms"
|
|
149728
|
+
]);
|
|
148929
149729
|
RELATIONSHIP_ID_PATTERN = /^rId(\d+)$/;
|
|
148930
149730
|
HEADER_FILE_PATTERN = /^word\/header(\d+)\.xml$/;
|
|
148931
149731
|
FOOTER_FILE_PATTERN = /^word\/footer(\d+)\.xml$/;
|
|
@@ -171649,7 +172449,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
|
|
|
171649
172449
|
init_remark_gfm_z_sDF4ss_es();
|
|
171650
172450
|
});
|
|
171651
172451
|
|
|
171652
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
172452
|
+
// ../../packages/superdoc/dist/chunks/src-sOP3agXO.es.js
|
|
171653
172453
|
function deleteProps(obj, propOrProps) {
|
|
171654
172454
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
171655
172455
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -173676,11 +174476,11 @@ function syncSplitParagraphRunProperties(attrs, runProperties) {
|
|
|
173676
174476
|
paragraphProperties: nextParagraphProperties
|
|
173677
174477
|
};
|
|
173678
174478
|
}
|
|
173679
|
-
function getConverter$
|
|
174479
|
+
function getConverter$62(editor) {
|
|
173680
174480
|
return editor.converter;
|
|
173681
174481
|
}
|
|
173682
174482
|
function readTranslatedLinkedStyles(editor) {
|
|
173683
|
-
return getConverter$
|
|
174483
|
+
return getConverter$62(editor)?.translatedLinkedStyles ?? null;
|
|
173684
174484
|
}
|
|
173685
174485
|
function isHeadingStyleId$1(styleId) {
|
|
173686
174486
|
return typeof styleId === "string" && /^heading\s*[1-6]$/i.test(styleId.trim());
|
|
@@ -207526,7 +208326,7 @@ function tablesSetDefaultStyleAdapter(editor, input2, options) {
|
|
|
207526
208326
|
throw new DocumentApiAdapterError("INVALID_INPUT", `tables.setDefaultStyle: "${input2.styleId}" is not a known table style.`);
|
|
207527
208327
|
return mutatePart({
|
|
207528
208328
|
editor,
|
|
207529
|
-
partId: SETTINGS_PART,
|
|
208329
|
+
partId: SETTINGS_PART$1,
|
|
207530
208330
|
operation: "mutate",
|
|
207531
208331
|
source: "tables.setDefaultStyle",
|
|
207532
208332
|
dryRun: options?.dryRun === true,
|
|
@@ -207548,7 +208348,7 @@ function tablesClearDefaultStyleAdapter(editor, _input, options) {
|
|
|
207548
208348
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "tables.clearDefaultStyle requires an active document converter.");
|
|
207549
208349
|
return mutatePart({
|
|
207550
208350
|
editor,
|
|
207551
|
-
partId: SETTINGS_PART,
|
|
208351
|
+
partId: SETTINGS_PART$1,
|
|
207552
208352
|
operation: "mutate",
|
|
207553
208353
|
source: "tables.clearDefaultStyle",
|
|
207554
208354
|
dryRun: options?.dryRun === true,
|
|
@@ -207968,10 +208768,10 @@ function registerBuiltInExecutors() {
|
|
|
207968
208768
|
};
|
|
207969
208769
|
} });
|
|
207970
208770
|
}
|
|
207971
|
-
function getConverter$
|
|
208771
|
+
function getConverter$52(editor) {
|
|
207972
208772
|
return editor.converter;
|
|
207973
208773
|
}
|
|
207974
|
-
function getConverter$
|
|
208774
|
+
function getConverter$42(editor) {
|
|
207975
208775
|
return editor.converter;
|
|
207976
208776
|
}
|
|
207977
208777
|
function createEmptyHeaderFooterJson() {
|
|
@@ -207984,7 +208784,7 @@ function createEmptyHeaderFooterJson() {
|
|
|
207984
208784
|
};
|
|
207985
208785
|
}
|
|
207986
208786
|
function syncHeaderFooterCaches(editor, part) {
|
|
207987
|
-
const converter = getConverter$
|
|
208787
|
+
const converter = getConverter$42(editor);
|
|
207988
208788
|
if (!converter)
|
|
207989
208789
|
return;
|
|
207990
208790
|
const relsRoot = part?.elements?.find((el) => el.name === "Relationships");
|
|
@@ -208046,7 +208846,7 @@ function createTableWrapper(editor, input2, options) {
|
|
|
208046
208846
|
});
|
|
208047
208847
|
return adapterResult;
|
|
208048
208848
|
}
|
|
208049
|
-
function getConverter$
|
|
208849
|
+
function getConverter$32(editor) {
|
|
208050
208850
|
return editor.converter;
|
|
208051
208851
|
}
|
|
208052
208852
|
function toSectionFailure2(code7, message) {
|
|
@@ -208114,7 +208914,7 @@ function buildSectionMarginsForAttrs2(sectPr) {
|
|
|
208114
208914
|
};
|
|
208115
208915
|
}
|
|
208116
208916
|
function syncConverterBodySection2(editor, sectPr) {
|
|
208117
|
-
const converter = getConverter$
|
|
208917
|
+
const converter = getConverter$32(editor);
|
|
208118
208918
|
if (!converter)
|
|
208119
208919
|
return;
|
|
208120
208920
|
converter.bodySectPr = cloneXmlElement(sectPr);
|
|
@@ -208234,7 +209034,7 @@ function createSectionBreakNode(editor, breakParagraphId, input2) {
|
|
|
208234
209034
|
return paragraphNode;
|
|
208235
209035
|
}
|
|
208236
209036
|
function updateGlobalTitlePageFlag(editor) {
|
|
208237
|
-
const converter = getConverter$
|
|
209037
|
+
const converter = getConverter$32(editor);
|
|
208238
209038
|
if (!converter)
|
|
208239
209039
|
return;
|
|
208240
209040
|
const anyTitlePage = resolveSectionProjections(editor).some((entry) => entry.domain.titlePage === true);
|
|
@@ -208318,7 +209118,7 @@ function sectionsSetTitlePageAdapter(editor, input2, options) {
|
|
|
208318
209118
|
}
|
|
208319
209119
|
function sectionsSetOddEvenHeadersFootersAdapter(editor, input2, options) {
|
|
208320
209120
|
rejectTrackedMode("sections.setOddEvenHeadersFooters", options);
|
|
208321
|
-
const converter = getConverter$
|
|
209121
|
+
const converter = getConverter$32(editor);
|
|
208322
209122
|
if (!converter)
|
|
208323
209123
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "sections.setOddEvenHeadersFooters requires an active document converter.");
|
|
208324
209124
|
return mutatePart({
|
|
@@ -208354,13 +209154,13 @@ function sectionsSetSectionDirectionAdapter(editor, input2, options) {
|
|
|
208354
209154
|
}
|
|
208355
209155
|
function sectionsSetHeaderFooterRefAdapter(editor, input2, options) {
|
|
208356
209156
|
return sectionMutationBySectPr$1(editor, input2, options, "sections.setHeaderFooterRef", (sectPr, _projection, _sections, dryRun) => {
|
|
208357
|
-
const converter = getConverter$
|
|
209157
|
+
const converter = getConverter$32(editor) ?? null;
|
|
208358
209158
|
return setHeaderFooterRefMutation(sectPr, input2.kind, input2.variant, input2.refId, converter, "sections.setHeaderFooterRef", dryRun);
|
|
208359
209159
|
});
|
|
208360
209160
|
}
|
|
208361
209161
|
function sectionsClearHeaderFooterRefAdapter(editor, input2, options) {
|
|
208362
209162
|
return sectionMutationBySectPr$1(editor, input2, options, "sections.clearHeaderFooterRef", (sectPr, _projection, _sections, dryRun) => {
|
|
208363
|
-
const converter = getConverter$
|
|
209163
|
+
const converter = getConverter$32(editor) ?? null;
|
|
208364
209164
|
clearHeaderFooterRefMutation(sectPr, input2.kind, input2.variant, converter, dryRun);
|
|
208365
209165
|
});
|
|
208366
209166
|
}
|
|
@@ -212798,11 +213598,11 @@ function createContentControlsAdapter(editor) {
|
|
|
212798
213598
|
create: (input2, options) => createWrapper(editor, input2, options)
|
|
212799
213599
|
};
|
|
212800
213600
|
}
|
|
212801
|
-
function getConverter$
|
|
213601
|
+
function getConverter$22(editor) {
|
|
212802
213602
|
return editor.converter;
|
|
212803
213603
|
}
|
|
212804
|
-
function requireConverter(editor, operationName) {
|
|
212805
|
-
const converter = getConverter$
|
|
213604
|
+
function requireConverter$1(editor, operationName) {
|
|
213605
|
+
const converter = getConverter$22(editor);
|
|
212806
213606
|
if (!converter)
|
|
212807
213607
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${operationName} requires an active document converter.`);
|
|
212808
213608
|
return converter;
|
|
@@ -212908,7 +213708,7 @@ function headerFootersResolveAdapter(editor, input2) {
|
|
|
212908
213708
|
function headerFootersRefsSetAdapter(editor, input2, options) {
|
|
212909
213709
|
const { section, headerFooterKind, variant } = input2.target;
|
|
212910
213710
|
const result = sectionMutationBySectPr(editor, { target: section }, options, "headerFooters.refs.set", (sectPr, _projection, _sections, dryRun) => {
|
|
212911
|
-
const converter = getConverter$
|
|
213711
|
+
const converter = getConverter$22(editor) ?? null;
|
|
212912
213712
|
return setHeaderFooterRefMutation(sectPr, headerFooterKind, variant, input2.refId, converter, "headerFooters.refs.set", dryRun);
|
|
212913
213713
|
});
|
|
212914
213714
|
invalidateSlotRuntimesAfterRefChange(editor, result, options);
|
|
@@ -212917,7 +213717,7 @@ function headerFootersRefsSetAdapter(editor, input2, options) {
|
|
|
212917
213717
|
function headerFootersRefsClearAdapter(editor, input2, options) {
|
|
212918
213718
|
const { section, headerFooterKind, variant } = input2.target;
|
|
212919
213719
|
const result = sectionMutationBySectPr(editor, { target: section }, options, "headerFooters.refs.clear", (sectPr, _projection, _sections, dryRun) => {
|
|
212920
|
-
clearHeaderFooterRefMutation(sectPr, headerFooterKind, variant, getConverter$
|
|
213720
|
+
clearHeaderFooterRefMutation(sectPr, headerFooterKind, variant, getConverter$22(editor) ?? null, dryRun);
|
|
212921
213721
|
});
|
|
212922
213722
|
invalidateSlotRuntimesAfterRefChange(editor, result, options);
|
|
212923
213723
|
return result;
|
|
@@ -212965,7 +213765,7 @@ function extractPartIndex(kind, partPath) {
|
|
|
212965
213765
|
return Number.isFinite(num) ? num : null;
|
|
212966
213766
|
}
|
|
212967
213767
|
function headerFootersPartsListAdapter(editor, query2) {
|
|
212968
|
-
const converter = requireConverter(editor, "headerFooters.parts.list");
|
|
213768
|
+
const converter = requireConverter$1(editor, "headerFooters.parts.list");
|
|
212969
213769
|
validatePaginationInput(query2?.offset, query2?.limit);
|
|
212970
213770
|
const relationships = readRelationshipElements(converter);
|
|
212971
213771
|
const sections = resolveSectionProjections(editor);
|
|
@@ -213053,7 +213853,7 @@ function toPartsMutationFailure(code7, message) {
|
|
|
213053
213853
|
function headerFootersPartsCreateAdapter(editor, input2, options) {
|
|
213054
213854
|
rejectTrackedMode("headerFooters.parts.create", options);
|
|
213055
213855
|
checkRevision(editor, options?.expectedRevision);
|
|
213056
|
-
const converter = requireConverter(editor, "headerFooters.parts.create");
|
|
213856
|
+
const converter = requireConverter$1(editor, "headerFooters.parts.create");
|
|
213057
213857
|
if (input2.sourceRefId) {
|
|
213058
213858
|
const sourceRel = readRelationshipElements(converter).find((rel) => String(rel.attributes?.Id ?? "") === input2.sourceRefId);
|
|
213059
213859
|
if (!sourceRel)
|
|
@@ -213086,7 +213886,7 @@ function headerFootersPartsCreateAdapter(editor, input2, options) {
|
|
|
213086
213886
|
function headerFootersPartsDeleteAdapter(editor, input2, options) {
|
|
213087
213887
|
rejectTrackedMode("headerFooters.parts.delete", options);
|
|
213088
213888
|
checkRevision(editor, options?.expectedRevision);
|
|
213089
|
-
const converter = requireConverter(editor, "headerFooters.parts.delete");
|
|
213889
|
+
const converter = requireConverter$1(editor, "headerFooters.parts.delete");
|
|
213090
213890
|
const refId = input2.target.refId;
|
|
213091
213891
|
const targetRel = readRelationshipElements(converter).find((rel) => String(rel.attributes?.Id ?? "") === refId);
|
|
213092
213892
|
if (!targetRel)
|
|
@@ -213411,6 +214211,402 @@ function bookmarksRemoveWrapper(editor, input2, options) {
|
|
|
213411
214211
|
return bookmarkFailure("NO_OP", "Remove operation produced no change.");
|
|
213412
214212
|
return bookmarkSuccess(address2);
|
|
213413
214213
|
}
|
|
214214
|
+
function getConverter$12(editor) {
|
|
214215
|
+
return editor.converter ?? undefined;
|
|
214216
|
+
}
|
|
214217
|
+
function requireConverter(editor, operationName) {
|
|
214218
|
+
const converter = getConverter$12(editor);
|
|
214219
|
+
if (!converter)
|
|
214220
|
+
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${operationName} requires an active document converter.`);
|
|
214221
|
+
return converter;
|
|
214222
|
+
}
|
|
214223
|
+
function buildPreviewState(current, editingRestriction) {
|
|
214224
|
+
const { mode, enforced } = editingRestriction;
|
|
214225
|
+
return {
|
|
214226
|
+
editingRestriction: {
|
|
214227
|
+
mode,
|
|
214228
|
+
enforced,
|
|
214229
|
+
runtimeEnforced: mode === "readOnly" && enforced,
|
|
214230
|
+
passwordProtected: current.editingRestriction.passwordProtected,
|
|
214231
|
+
formattingRestricted: editingRestriction.formattingRestricted
|
|
214232
|
+
},
|
|
214233
|
+
writeProtection: current.writeProtection,
|
|
214234
|
+
readOnlyRecommended: current.readOnlyRecommended
|
|
214235
|
+
};
|
|
214236
|
+
}
|
|
214237
|
+
function protectionGetAdapter(editor) {
|
|
214238
|
+
const stored = getProtectionStorage(editor);
|
|
214239
|
+
if (stored?.initialized)
|
|
214240
|
+
return stored.state;
|
|
214241
|
+
const converter = getConverter$12(editor);
|
|
214242
|
+
return parseProtectionState(converter ? readSettingsRoot(converter) : null);
|
|
214243
|
+
}
|
|
214244
|
+
function protectionSetEditingRestrictionAdapter(editor, input2, options) {
|
|
214245
|
+
rejectTrackedMode("protection.setEditingRestriction", options);
|
|
214246
|
+
const converter = requireConverter(editor, "protection.setEditingRestriction");
|
|
214247
|
+
const result = mutatePart({
|
|
214248
|
+
editor,
|
|
214249
|
+
partId: SETTINGS_PART,
|
|
214250
|
+
operation: "mutate",
|
|
214251
|
+
source: "protection.setEditingRestriction",
|
|
214252
|
+
dryRun: options?.dryRun === true,
|
|
214253
|
+
expectedRevision: options?.expectedRevision,
|
|
214254
|
+
mutate({ part, dryRun: isDryRun }) {
|
|
214255
|
+
const currentState = parseProtectionState(readSettingsRoot(converter));
|
|
214256
|
+
const { editingRestriction } = currentState;
|
|
214257
|
+
if (editingRestriction.mode === input2.mode && editingRestriction.enforced === true && (input2.formattingRestricted === undefined || editingRestriction.formattingRestricted === input2.formattingRestricted))
|
|
214258
|
+
return {
|
|
214259
|
+
success: false,
|
|
214260
|
+
failure: {
|
|
214261
|
+
code: "NO_OP",
|
|
214262
|
+
message: "Editing restriction already matches the requested state."
|
|
214263
|
+
}
|
|
214264
|
+
};
|
|
214265
|
+
if (isDryRun)
|
|
214266
|
+
return {
|
|
214267
|
+
success: true,
|
|
214268
|
+
state: buildPreviewState(currentState, {
|
|
214269
|
+
mode: input2.mode,
|
|
214270
|
+
enforced: true,
|
|
214271
|
+
formattingRestricted: input2.formattingRestricted ?? currentState.editingRestriction.formattingRestricted
|
|
214272
|
+
})
|
|
214273
|
+
};
|
|
214274
|
+
const settingsRoot = ensureSettingsRoot(part);
|
|
214275
|
+
setDocumentProtection(settingsRoot, {
|
|
214276
|
+
mode: input2.mode,
|
|
214277
|
+
enforced: true,
|
|
214278
|
+
formattingRestricted: input2.formattingRestricted
|
|
214279
|
+
});
|
|
214280
|
+
const newState = parseProtectionState(settingsRoot);
|
|
214281
|
+
const protStorage = getProtectionStorage(editor);
|
|
214282
|
+
if (protStorage)
|
|
214283
|
+
protStorage.state = newState;
|
|
214284
|
+
editor.emit("protectionChanged", {
|
|
214285
|
+
editor,
|
|
214286
|
+
state: newState,
|
|
214287
|
+
source: "local-mutation"
|
|
214288
|
+
});
|
|
214289
|
+
return {
|
|
214290
|
+
success: true,
|
|
214291
|
+
state: newState
|
|
214292
|
+
};
|
|
214293
|
+
}
|
|
214294
|
+
});
|
|
214295
|
+
if (options?.dryRun !== true)
|
|
214296
|
+
applyEffectiveEditability(editor);
|
|
214297
|
+
return result.result;
|
|
214298
|
+
}
|
|
214299
|
+
function protectionClearEditingRestrictionAdapter(editor, _input, options) {
|
|
214300
|
+
rejectTrackedMode("protection.clearEditingRestriction", options);
|
|
214301
|
+
const converter = requireConverter(editor, "protection.clearEditingRestriction");
|
|
214302
|
+
const result = mutatePart({
|
|
214303
|
+
editor,
|
|
214304
|
+
partId: SETTINGS_PART,
|
|
214305
|
+
operation: "mutate",
|
|
214306
|
+
source: "protection.clearEditingRestriction",
|
|
214307
|
+
dryRun: options?.dryRun === true,
|
|
214308
|
+
expectedRevision: options?.expectedRevision,
|
|
214309
|
+
mutate({ part, dryRun: isDryRun }) {
|
|
214310
|
+
const currentState = parseProtectionState(readSettingsRoot(converter));
|
|
214311
|
+
if (!currentState.editingRestriction.enforced)
|
|
214312
|
+
return {
|
|
214313
|
+
success: false,
|
|
214314
|
+
failure: {
|
|
214315
|
+
code: "NO_OP",
|
|
214316
|
+
message: "Editing restriction is already not enforced."
|
|
214317
|
+
}
|
|
214318
|
+
};
|
|
214319
|
+
if (isDryRun)
|
|
214320
|
+
return {
|
|
214321
|
+
success: true,
|
|
214322
|
+
state: buildPreviewState(currentState, {
|
|
214323
|
+
mode: currentState.editingRestriction.mode,
|
|
214324
|
+
enforced: false,
|
|
214325
|
+
formattingRestricted: currentState.editingRestriction.formattingRestricted
|
|
214326
|
+
})
|
|
214327
|
+
};
|
|
214328
|
+
const settingsRoot = ensureSettingsRoot(part);
|
|
214329
|
+
clearDocumentProtectionEnforcement(settingsRoot);
|
|
214330
|
+
const newState = parseProtectionState(settingsRoot);
|
|
214331
|
+
const protStorage = getProtectionStorage(editor);
|
|
214332
|
+
if (protStorage)
|
|
214333
|
+
protStorage.state = newState;
|
|
214334
|
+
editor.emit("protectionChanged", {
|
|
214335
|
+
editor,
|
|
214336
|
+
state: newState,
|
|
214337
|
+
source: "local-mutation"
|
|
214338
|
+
});
|
|
214339
|
+
return {
|
|
214340
|
+
success: true,
|
|
214341
|
+
state: newState
|
|
214342
|
+
};
|
|
214343
|
+
}
|
|
214344
|
+
});
|
|
214345
|
+
if (options?.dryRun !== true)
|
|
214346
|
+
applyEffectiveEditability(editor);
|
|
214347
|
+
return result.result;
|
|
214348
|
+
}
|
|
214349
|
+
function pmPosToPosition(doc$12, pos) {
|
|
214350
|
+
const resolved = doc$12.resolve(pos);
|
|
214351
|
+
for (let depth = resolved.depth;depth >= 0; depth--) {
|
|
214352
|
+
const blockId = resolved.node(depth).attrs?.sdBlockId;
|
|
214353
|
+
if (blockId)
|
|
214354
|
+
return {
|
|
214355
|
+
blockId,
|
|
214356
|
+
offset: pos - resolved.start(depth)
|
|
214357
|
+
};
|
|
214358
|
+
}
|
|
214359
|
+
return {
|
|
214360
|
+
blockId: "",
|
|
214361
|
+
offset: pos
|
|
214362
|
+
};
|
|
214363
|
+
}
|
|
214364
|
+
function getPermRangesStorage(editor) {
|
|
214365
|
+
return editor.storage.permissionRanges;
|
|
214366
|
+
}
|
|
214367
|
+
function getAllRanges(editor) {
|
|
214368
|
+
return getPermRangesStorage(editor)?.allRanges ?? [];
|
|
214369
|
+
}
|
|
214370
|
+
function toRangeInfo(entry, doc$12) {
|
|
214371
|
+
return {
|
|
214372
|
+
id: entry.id,
|
|
214373
|
+
principal: entry.principal,
|
|
214374
|
+
kind: entry.kind,
|
|
214375
|
+
start: pmPosToPosition(doc$12, entry.from),
|
|
214376
|
+
end: pmPosToPosition(doc$12, entry.to)
|
|
214377
|
+
};
|
|
214378
|
+
}
|
|
214379
|
+
function principalToAttrs(principal) {
|
|
214380
|
+
if (principal.kind === "everyone")
|
|
214381
|
+
return { edGrp: "everyone" };
|
|
214382
|
+
return { ed: principal.id };
|
|
214383
|
+
}
|
|
214384
|
+
function generatePermissionId() {
|
|
214385
|
+
return String(Math.floor(Math.random() * 2000000000));
|
|
214386
|
+
}
|
|
214387
|
+
function permissionRangesListAdapter(editor, input2) {
|
|
214388
|
+
const revision = getRevision(editor);
|
|
214389
|
+
const doc$12 = editor.state.doc;
|
|
214390
|
+
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);
|
|
214391
|
+
return buildDiscoveryResult({
|
|
214392
|
+
evaluatedRevision: revision,
|
|
214393
|
+
total,
|
|
214394
|
+
items: paged,
|
|
214395
|
+
page: {
|
|
214396
|
+
limit: input2?.limit ?? total,
|
|
214397
|
+
offset: input2?.offset ?? 0,
|
|
214398
|
+
returned: paged.length
|
|
214399
|
+
}
|
|
214400
|
+
});
|
|
214401
|
+
}
|
|
214402
|
+
function permissionRangesGetAdapter(editor, input2) {
|
|
214403
|
+
const entry = getAllRanges(editor).find((r$1) => r$1.id === input2.id);
|
|
214404
|
+
if (!entry)
|
|
214405
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range '${input2.id}' not found.`);
|
|
214406
|
+
return toRangeInfo(entry, editor.state.doc);
|
|
214407
|
+
}
|
|
214408
|
+
function permissionRangesCreateAdapter(editor, input2, options) {
|
|
214409
|
+
rejectTrackedMode("permissionRanges.create", options);
|
|
214410
|
+
const { target, principal, id: callerSuppliedId } = input2;
|
|
214411
|
+
const id2 = callerSuppliedId ?? generatePermissionId();
|
|
214412
|
+
if (getAllRanges(editor).some((r$1) => r$1.id === id2))
|
|
214413
|
+
throw new DocumentApiAdapterError("INVALID_INPUT", `Permission range ID '${id2}' already exists.`);
|
|
214414
|
+
const resolved = resolveSelectionTarget(editor, target);
|
|
214415
|
+
const from$1 = resolved.absFrom;
|
|
214416
|
+
const to = resolved.absTo;
|
|
214417
|
+
const doc$12 = editor.state.doc;
|
|
214418
|
+
if (from$1 >= to || from$1 < 0 || to > doc$12.content.size)
|
|
214419
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", "Target range is invalid or empty.");
|
|
214420
|
+
const attrs = {
|
|
214421
|
+
id: id2,
|
|
214422
|
+
...principalToAttrs(principal)
|
|
214423
|
+
};
|
|
214424
|
+
const $from = doc$12.resolve(from$1);
|
|
214425
|
+
const $to = doc$12.resolve(to);
|
|
214426
|
+
const spansMultipleBlocks = $from.parent !== $to.parent || $from.depth === 0;
|
|
214427
|
+
if (options?.dryRun)
|
|
214428
|
+
return {
|
|
214429
|
+
success: true,
|
|
214430
|
+
range: toRangeInfo({
|
|
214431
|
+
id: id2,
|
|
214432
|
+
principal,
|
|
214433
|
+
kind: spansMultipleBlocks ? "block" : "inline",
|
|
214434
|
+
from: from$1,
|
|
214435
|
+
to,
|
|
214436
|
+
startPos: from$1,
|
|
214437
|
+
endPos: to
|
|
214438
|
+
}, doc$12)
|
|
214439
|
+
};
|
|
214440
|
+
const { tr } = editor.state;
|
|
214441
|
+
tr.setMeta(PERMISSION_MUTATION_META, true);
|
|
214442
|
+
tr.setMeta("addToHistory", false);
|
|
214443
|
+
setTrackChangesSkip(editor, tr);
|
|
214444
|
+
const schema = editor.state.schema;
|
|
214445
|
+
if (spansMultipleBlocks) {
|
|
214446
|
+
const startNode = schema.nodes.permStartBlock?.create(attrs);
|
|
214447
|
+
const endNode = schema.nodes.permEndBlock?.create({ id: id2 });
|
|
214448
|
+
if (!startNode || !endNode)
|
|
214449
|
+
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "Block-level permission range nodes are not available in the schema.");
|
|
214450
|
+
tr.insert(to, endNode);
|
|
214451
|
+
tr.insert(from$1, startNode);
|
|
214452
|
+
} else {
|
|
214453
|
+
const startNode = schema.nodes.permStart?.create(attrs);
|
|
214454
|
+
const endNode = schema.nodes.permEnd?.create({ id: id2 });
|
|
214455
|
+
if (!startNode || !endNode)
|
|
214456
|
+
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "Inline permission range nodes are not available in the schema.");
|
|
214457
|
+
tr.insert(to, endNode);
|
|
214458
|
+
tr.insert(from$1, startNode);
|
|
214459
|
+
}
|
|
214460
|
+
if (editor.view)
|
|
214461
|
+
editor.view.dispatch(tr);
|
|
214462
|
+
else
|
|
214463
|
+
editor.dispatch(tr);
|
|
214464
|
+
const created = getAllRanges(editor).find((r$1) => r$1.id === id2);
|
|
214465
|
+
if (created)
|
|
214466
|
+
return {
|
|
214467
|
+
success: true,
|
|
214468
|
+
range: toRangeInfo(created, editor.state.doc)
|
|
214469
|
+
};
|
|
214470
|
+
return {
|
|
214471
|
+
success: true,
|
|
214472
|
+
range: {
|
|
214473
|
+
id: id2,
|
|
214474
|
+
principal,
|
|
214475
|
+
kind: spansMultipleBlocks ? "block" : "inline",
|
|
214476
|
+
start: pmPosToPosition(editor.state.doc, from$1),
|
|
214477
|
+
end: pmPosToPosition(editor.state.doc, to)
|
|
214478
|
+
}
|
|
214479
|
+
};
|
|
214480
|
+
}
|
|
214481
|
+
function permissionRangesRemoveAdapter(editor, input2, options) {
|
|
214482
|
+
rejectTrackedMode("permissionRanges.remove", options);
|
|
214483
|
+
const { id: id2 } = input2;
|
|
214484
|
+
if (options?.dryRun) {
|
|
214485
|
+
if (!getAllRanges(editor).some((r$1) => r$1.id === id2)) {
|
|
214486
|
+
const hasMarker = findMarkerPositions(editor, id2);
|
|
214487
|
+
if (!hasMarker.start && !hasMarker.end)
|
|
214488
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range '${id2}' not found.`);
|
|
214489
|
+
}
|
|
214490
|
+
return {
|
|
214491
|
+
success: true,
|
|
214492
|
+
id: id2
|
|
214493
|
+
};
|
|
214494
|
+
}
|
|
214495
|
+
const positions = findMarkerPositions(editor, id2);
|
|
214496
|
+
if (!positions.start && !positions.end)
|
|
214497
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range '${id2}' not found.`);
|
|
214498
|
+
const { tr } = editor.state;
|
|
214499
|
+
tr.setMeta(PERMISSION_MUTATION_META, true);
|
|
214500
|
+
tr.setMeta("addToHistory", false);
|
|
214501
|
+
setTrackChangesSkip(editor, tr);
|
|
214502
|
+
const toDelete = [...positions.end ? [positions.end] : [], ...positions.start ? [positions.start] : []].sort((a2, b$1) => b$1.pos - a2.pos);
|
|
214503
|
+
for (const marker of toDelete)
|
|
214504
|
+
tr.delete(marker.pos, marker.pos + marker.nodeSize);
|
|
214505
|
+
if (editor.view)
|
|
214506
|
+
editor.view.dispatch(tr);
|
|
214507
|
+
else
|
|
214508
|
+
editor.dispatch(tr);
|
|
214509
|
+
return {
|
|
214510
|
+
success: true,
|
|
214511
|
+
id: id2
|
|
214512
|
+
};
|
|
214513
|
+
}
|
|
214514
|
+
function permissionRangesUpdatePrincipalAdapter(editor, input2, options) {
|
|
214515
|
+
rejectTrackedMode("permissionRanges.updatePrincipal", options);
|
|
214516
|
+
const { id: id2, principal } = input2;
|
|
214517
|
+
const positions = findMarkerPositions(editor, id2);
|
|
214518
|
+
if (!positions.start)
|
|
214519
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Permission range start marker '${id2}' not found.`);
|
|
214520
|
+
if (options?.dryRun) {
|
|
214521
|
+
const existing = getAllRanges(editor).find((r$1) => r$1.id === id2);
|
|
214522
|
+
if (existing)
|
|
214523
|
+
return {
|
|
214524
|
+
success: true,
|
|
214525
|
+
range: toRangeInfo({
|
|
214526
|
+
...existing,
|
|
214527
|
+
principal
|
|
214528
|
+
}, editor.state.doc)
|
|
214529
|
+
};
|
|
214530
|
+
return {
|
|
214531
|
+
success: true,
|
|
214532
|
+
range: {
|
|
214533
|
+
id: id2,
|
|
214534
|
+
principal,
|
|
214535
|
+
kind: "inline",
|
|
214536
|
+
start: pmPosToPosition(editor.state.doc, positions.start.pos),
|
|
214537
|
+
end: pmPosToPosition(editor.state.doc, positions.start.pos)
|
|
214538
|
+
}
|
|
214539
|
+
};
|
|
214540
|
+
}
|
|
214541
|
+
const { tr } = editor.state;
|
|
214542
|
+
tr.setMeta(PERMISSION_MUTATION_META, true);
|
|
214543
|
+
tr.setMeta("addToHistory", false);
|
|
214544
|
+
setTrackChangesSkip(editor, tr);
|
|
214545
|
+
const { pos, node: node3 } = positions.start;
|
|
214546
|
+
const newAttrs = {
|
|
214547
|
+
...node3.attrs,
|
|
214548
|
+
...principalToAttrs(principal),
|
|
214549
|
+
...principal.kind === "everyone" ? { ed: undefined } : { edGrp: undefined }
|
|
214550
|
+
};
|
|
214551
|
+
tr.setNodeMarkup(pos, undefined, newAttrs);
|
|
214552
|
+
if (editor.view)
|
|
214553
|
+
editor.view.dispatch(tr);
|
|
214554
|
+
else
|
|
214555
|
+
editor.dispatch(tr);
|
|
214556
|
+
const updated = getAllRanges(editor).find((r$1) => r$1.id === id2);
|
|
214557
|
+
if (updated)
|
|
214558
|
+
return {
|
|
214559
|
+
success: true,
|
|
214560
|
+
range: toRangeInfo(updated, editor.state.doc)
|
|
214561
|
+
};
|
|
214562
|
+
return {
|
|
214563
|
+
success: true,
|
|
214564
|
+
range: {
|
|
214565
|
+
id: id2,
|
|
214566
|
+
principal,
|
|
214567
|
+
kind: "inline",
|
|
214568
|
+
start: pmPosToPosition(editor.state.doc, pos),
|
|
214569
|
+
end: pmPosToPosition(editor.state.doc, pos)
|
|
214570
|
+
}
|
|
214571
|
+
};
|
|
214572
|
+
}
|
|
214573
|
+
function setTrackChangesSkip(editor, tr) {
|
|
214574
|
+
try {
|
|
214575
|
+
const trackPlugin = editor.state.plugins.find((p$12) => p$12.key?.includes("trackChangesBase$"));
|
|
214576
|
+
if (trackPlugin)
|
|
214577
|
+
tr.setMeta(trackPlugin, { skip: true });
|
|
214578
|
+
} catch {}
|
|
214579
|
+
}
|
|
214580
|
+
function findMarkerPositions(editor, id2) {
|
|
214581
|
+
let start$1 = null;
|
|
214582
|
+
let end$1 = null;
|
|
214583
|
+
const permStartTypes = new Set(["permStart", "permStartBlock"]);
|
|
214584
|
+
const permEndTypes = new Set(["permEnd", "permEndBlock"]);
|
|
214585
|
+
editor.state.doc.descendants((node3, pos) => {
|
|
214586
|
+
if (start$1 && end$1)
|
|
214587
|
+
return false;
|
|
214588
|
+
const typeName = node3.type.name;
|
|
214589
|
+
if (node3.attrs?.id === id2) {
|
|
214590
|
+
if (permStartTypes.has(typeName))
|
|
214591
|
+
start$1 = {
|
|
214592
|
+
pos,
|
|
214593
|
+
nodeSize: node3.nodeSize,
|
|
214594
|
+
node: { attrs: { ...node3.attrs } }
|
|
214595
|
+
};
|
|
214596
|
+
else if (permEndTypes.has(typeName))
|
|
214597
|
+
end$1 = {
|
|
214598
|
+
pos,
|
|
214599
|
+
nodeSize: node3.nodeSize,
|
|
214600
|
+
node: { attrs: { ...node3.attrs } }
|
|
214601
|
+
};
|
|
214602
|
+
}
|
|
214603
|
+
return true;
|
|
214604
|
+
});
|
|
214605
|
+
return {
|
|
214606
|
+
start: start$1,
|
|
214607
|
+
end: end$1
|
|
214608
|
+
};
|
|
214609
|
+
}
|
|
213414
214610
|
function isSpecialEntry(entry) {
|
|
213415
214611
|
return SPECIAL_NOTE_TYPES.has(entry.type ?? "");
|
|
213416
214612
|
}
|
|
@@ -216743,7 +217939,19 @@ function assembleDocumentApiAdapters(editor) {
|
|
|
216743
217939
|
apply: (input2) => executePlan(editor, input2)
|
|
216744
217940
|
},
|
|
216745
217941
|
diff: createDiffAdapter(editor),
|
|
216746
|
-
history: createHistoryAdapter(editor)
|
|
217942
|
+
history: createHistoryAdapter(editor),
|
|
217943
|
+
protection: {
|
|
217944
|
+
get: () => protectionGetAdapter(editor),
|
|
217945
|
+
setEditingRestriction: (input2, options) => protectionSetEditingRestrictionAdapter(editor, input2, options),
|
|
217946
|
+
clearEditingRestriction: (_input, options) => protectionClearEditingRestrictionAdapter(editor, undefined, options)
|
|
217947
|
+
},
|
|
217948
|
+
permissionRanges: {
|
|
217949
|
+
list: (input2) => permissionRangesListAdapter(editor, input2),
|
|
217950
|
+
get: (input2) => permissionRangesGetAdapter(editor, input2),
|
|
217951
|
+
create: (input2, options) => permissionRangesCreateAdapter(editor, input2, options),
|
|
217952
|
+
remove: (input2, options) => permissionRangesRemoveAdapter(editor, input2, options),
|
|
217953
|
+
updatePrincipal: (input2, options) => permissionRangesUpdatePrincipalAdapter(editor, input2, options)
|
|
217954
|
+
}
|
|
216747
217955
|
};
|
|
216748
217956
|
}
|
|
216749
217957
|
function getDocumentApiAdapters(editor) {
|
|
@@ -236897,16 +238105,7 @@ var Node$13 = class Node$14 {
|
|
|
236897
238105
|
return "default";
|
|
236898
238106
|
}
|
|
236899
238107
|
}
|
|
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) => {
|
|
238108
|
+
}, 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
238109
|
if (!attrs)
|
|
236911
238110
|
return false;
|
|
236912
238111
|
if (isEveryoneGroup(attrs.edGrp))
|
|
@@ -236937,40 +238136,66 @@ var Node$13 = class Node$14 {
|
|
|
236937
238136
|
endTypeSet: new Set(endTypes),
|
|
236938
238137
|
allTypeSet: new Set([...startTypes, ...endTypes])
|
|
236939
238138
|
};
|
|
236940
|
-
}, getPermissionNodeId = (node3, pos, fallbackPrefix) => String(node3.attrs?.id ?? `${fallbackPrefix}-${pos}`),
|
|
236941
|
-
|
|
238139
|
+
}, getPermissionNodeId = (node3, pos, fallbackPrefix) => String(node3.attrs?.id ?? `${fallbackPrefix}-${pos}`), derivePrincipal = (attrs) => {
|
|
238140
|
+
if (isEveryoneGroup(attrs?.edGrp))
|
|
238141
|
+
return { kind: "everyone" };
|
|
238142
|
+
if (attrs?.ed)
|
|
238143
|
+
return {
|
|
238144
|
+
kind: "editor",
|
|
238145
|
+
id: String(attrs.ed)
|
|
238146
|
+
};
|
|
238147
|
+
return { kind: "everyone" };
|
|
238148
|
+
}, buildPermissionState = (doc$12, allowedIdentifiers = EMPTY_IDENTIFIER_SET, permTypes, protectionEnforced = false) => {
|
|
238149
|
+
const allRanges = [];
|
|
238150
|
+
const allowedRanges = [];
|
|
236942
238151
|
const openRanges = /* @__PURE__ */ new Map;
|
|
236943
238152
|
const startTypeSet = permTypes?.startTypeSet ?? /* @__PURE__ */ new Set;
|
|
236944
238153
|
const endTypeSet = permTypes?.endTypeSet ?? /* @__PURE__ */ new Set;
|
|
238154
|
+
const blockStartType = doc$12.type.schema?.nodes?.["permStartBlock"];
|
|
238155
|
+
const blockEndType = doc$12.type.schema?.nodes?.["permEndBlock"];
|
|
236945
238156
|
doc$12.descendants((node3, pos) => {
|
|
236946
238157
|
if (startTypeSet.has(node3.type)) {
|
|
236947
238158
|
const id2 = getPermissionNodeId(node3, pos, "permStart");
|
|
236948
238159
|
openRanges.set(id2, {
|
|
236949
238160
|
from: pos + node3.nodeSize,
|
|
236950
|
-
|
|
238161
|
+
startPos: pos,
|
|
238162
|
+
attrs: node3.attrs ?? {},
|
|
238163
|
+
isBlock: node3.type === blockStartType
|
|
236951
238164
|
});
|
|
236952
238165
|
return false;
|
|
236953
238166
|
}
|
|
236954
238167
|
if (endTypeSet.has(node3.type)) {
|
|
236955
238168
|
const id2 = getPermissionNodeId(node3, pos, "permEnd");
|
|
236956
238169
|
const start$1 = openRanges.get(id2);
|
|
236957
|
-
if (start$1
|
|
238170
|
+
if (start$1) {
|
|
236958
238171
|
const to = Math.max(pos, start$1.from);
|
|
236959
|
-
if (to > start$1.from)
|
|
236960
|
-
|
|
238172
|
+
if (to > start$1.from) {
|
|
238173
|
+
const isBlock = start$1.isBlock || node3.type === blockEndType;
|
|
238174
|
+
const entry = {
|
|
236961
238175
|
id: id2,
|
|
236962
238176
|
from: start$1.from,
|
|
236963
|
-
to
|
|
236964
|
-
|
|
236965
|
-
|
|
236966
|
-
|
|
238177
|
+
to,
|
|
238178
|
+
startPos: start$1.startPos,
|
|
238179
|
+
endPos: pos,
|
|
238180
|
+
principal: derivePrincipal(start$1.attrs),
|
|
238181
|
+
kind: isBlock ? "block" : "inline",
|
|
238182
|
+
edGrp: start$1.attrs.edGrp,
|
|
238183
|
+
ed: start$1.attrs.ed
|
|
238184
|
+
};
|
|
238185
|
+
allRanges.push(entry);
|
|
238186
|
+
if (protectionEnforced && isRangeAllowedForUser(start$1.attrs, allowedIdentifiers))
|
|
238187
|
+
allowedRanges.push(entry);
|
|
238188
|
+
}
|
|
236967
238189
|
openRanges.delete(id2);
|
|
238190
|
+
}
|
|
236968
238191
|
return false;
|
|
236969
238192
|
}
|
|
236970
238193
|
});
|
|
236971
238194
|
return {
|
|
236972
|
-
|
|
236973
|
-
|
|
238195
|
+
allRanges,
|
|
238196
|
+
allowedRanges,
|
|
238197
|
+
hasAllowedRanges: allowedRanges.length > 0,
|
|
238198
|
+
ranges: allowedRanges
|
|
236974
238199
|
};
|
|
236975
238200
|
}, collectPermissionTags = (doc$12, permStartTypes, permEndTypes) => {
|
|
236976
238201
|
const tags = /* @__PURE__ */ new Map;
|
|
@@ -237038,7 +238263,7 @@ var Node$13 = class Node$14 {
|
|
|
237038
238263
|
if (!allowedRanges?.length)
|
|
237039
238264
|
return false;
|
|
237040
238265
|
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) => {
|
|
238266
|
+
}, PermissionRanges, Protection, FONT_FAMILY_FALLBACKS2, DEFAULT_GENERIC_FALLBACK2 = "sans-serif", normalizeParts = (value) => (value || "").split(",").map((part) => part.trim()).filter(Boolean), splitOutsideQuotes = (str, delimiter) => {
|
|
237042
238267
|
if (!str.includes('"') && !str.includes("'"))
|
|
237043
238268
|
return str.split(delimiter).map((p$12) => p$12.trim()).filter(Boolean);
|
|
237044
238269
|
const parts = [];
|
|
@@ -240765,6 +241990,7 @@ var Node$13 = class Node$14 {
|
|
|
240765
241990
|
PermStartBlock,
|
|
240766
241991
|
PermEndBlock,
|
|
240767
241992
|
PermissionRanges,
|
|
241993
|
+
Protection,
|
|
240768
241994
|
VerticalNavigation,
|
|
240769
241995
|
PassthroughInline,
|
|
240770
241996
|
PassthroughBlock,
|
|
@@ -243080,7 +244306,7 @@ var Node$13 = class Node$14 {
|
|
|
243080
244306
|
console.warn("Failed to initialize developer tools:", error3);
|
|
243081
244307
|
}
|
|
243082
244308
|
}
|
|
243083
|
-
}, BLANK_DOCX_BASE64 = `UEsDBBQAAAAIAAAAIQAykW9XXgEAAKUFAAATABwAW0NvbnRlbnRfVHlwZXNdLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1lMtqwzAQRfeF/oPRNthKuiilxMmij2UbaPoBijRORPVCmrz+vuM4NaWkMeSxMcgz994zQsxwvLEmW0FM2ruSDYo+y8BJr7Sbl+xz+po/sCyhcEoY76BkW0hsPLq9GU63AVJGapdKtkAMj5wnuQArUuEDOKpUPlqBdIxzHoT8EnPgd/3+PZfeITjMsfZgo+EzVGJpMHvZ0O+GJIJJLHtqGuuskokQjJYCqc5XTv1JyfcJBSl3PWmhQ+pRA+MHE+rK/wF73TtdTdQKsomI+CYsdfG1j4orL5eWlMVxmwOcvqq0hFZfu4XoJaREd25N0Vas0K7XxeGWdgaRlJcHaa07IRJuDaTLEzS+3fGASIJrAOydOxHWMPu4GsUv806QinKnYmbg8hitdScE0hqA5js4m2NncyySOifRh0RrJZ4w9s/eqNU5DRwgoj7+6tpEsj57PqhXkgJ1IJvvluzoG1BLAwQKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAcAGRvY1Byb3BzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhACEYr1llAQAAxQIAABAAHABkb2NQcm9wcy9hcHAueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ1STU/DMAy9I/Efqt63dBwmNHlBaAhx4GPSCpyjxG0j0iRKson9e5wVSoEbOdnP9st7TuDqvTfFAUPUzq7LxbwqC7TSKW3bdflc384uyyImYZUwzuK6PGIsr/j5GWyD8xiSxlgQhY3rskvJrxiLssNexDmVLVUaF3qRKA0tc02jJd44ue/RJnZRVUuG7wmtQjXzI2E5MK4O6b+kysmsL77UR098HGrsvREJ+WOeNHPlUg9sRKF2SZha98grgscEtqLFyBfAhgBeXVAx9wwBbDoRhEy0vwxOMrj23mgpEu2VP2gZXHRNKp5OYos8DWzaAmRgh3IfdDpmqmkK99ri6YIhIFVBtEH47gROMthJYXBD1nkjTERg3wBsXO+FJTo2RsT3Fp997W7yFj5HfoITi686dTsvJP4yO8FhRygqUj8KGAG4o8cIJrPTrG1RffX8LeT1vQy/ki+W84rOaV9fGLkevwv/AFBLAwQUAAAACAAAACEACvOn+GYBAADtAgAAEQAcAGRvY1Byb3BzL2NvcmUueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ2SXU+DMBSG7038D6T3UGBqDAGWTLMrZ0yc0XhX27Otjn6k7cb27y0wmMRdeXc+nvP29G3z6UFUwR6M5UoWKIliFICkinG5LtDbch7eo8A6IhmplIQCHcGiaXl9lVOdUWXgxSgNxnGwgVeSNqO6QBvndIaxpRsQxEaekL65UkYQ51OzxprQLVkDTuP4DgtwhBFHcCMY6kERnSQZHST1zlStAKMYKhAgncVJlOAz68AIe3Gg7fwiBXdHDRfRvjnQB8sHsK7rqJ60qN8/wR+Lp9f2qiGXjVcUUJkzmjnuKihzfA59ZHdf30BdVx4SH1MDxClTPnO6DWZgJKlapq83jm/hWCvDrJ8eZR5jYKnh2vl37LRHBU9XxLqFf9gVBzY7jo/5224mDOx58y/KtCWGND+Z3K0GLPDmZJ2Vfed98vC4nKMyjdObMEnD5G6Zpll8m8XxZ7PdaP4sKE4L/FuxF+gMGn/Q8gdQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAYAHABfcmVscy9VVAkAA4Yc7WiHHO1odXgLAAEE9QEAAAQUAAAAUEsDBBQAAAAIAAAAIQAekRq36QAAAE4CAAALABwAX3JlbHMvLnJlbHNVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAArZLBasMwDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2kiKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wFQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAHAB3b3JkL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAHAB3b3JkL2ZvbnRUYWJsZS54bWxVVAkAA54c7WieHO1odXgLAAEE9QEAAAQUAAAAvZPBbqMwEIbvlfoOlu8NhpA0RSFV222kvexh1T6AY0ywFtvI44Tk7dcYiBSyuy3tqiCEGf75mPnHLO8PskR7bkBoleJwQjDiiulMqG2KX1/WNwuMwFKV0VIrnuIjB3y/ur5a1kmulQXk8hUkkqW4sLZKggBYwSWFia64ci9zbSS17tFsA0nNr111w7SsqBUbUQp7DCJC5vj6CrmjZZn3oHSeC8a/abaTXFkPCQwvHVYrKEQFZ8j6Pcham6wymnEA170sW6ikQp2zwviCJgUzGnRuJ663rjbPc4yQ+JUsB5TZOEr0Z8qc8cM40KIDBS7zAiaycbD5CSayIexjZQ0p2W4UJ5r2FTW3Jn0IhMxmxThmP8GgyaWWFhSKCywf1+/sxDxKNwgkWfJ9q7Shm9KR3CZDbosgD0btZJobaieO+j6Qdwiv2mK6nxLViaLSUV6E5IB+8Br91JKqXtZJK6o08NCp97RMMWkanZMpmZHYXZFbxTg4T2EFNcDtKYUMBTmVojz2743/6kBSCcuKXrGnRjQdD0Ugtk6ygw1J8TMhJHper3EbCVP85CK3i9ljF4maSvxx10WmpwhpIsxz/GPYcpjnnDT915dB6+Bf/HzSOyO4aRx908tb59+d97TxMv60l1Jn3PzbzFwcePYRJ+PpVzv54MZevunho9uPsfewPT/rIdQC4P/sx4evdrFfwuo3UEsDBBQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABwAd29yZC9kb2N1bWVudC54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAApZZbb9sgFMffJ+07WH5v8S1OYjWttGab+jCpWrcPQIDEqAYsILd9+h3s+LJ5qxz3CXPg/PjDORxz93AShXdg2nAlV354G/gek0RRLncr/+ePLzcL3zMWS4oLJdnKPzPjP9x//HB3zKgie8Gk9QAhTXYsycrPrS0zhAzJmcDmVnCilVFbe0uUQGq75YSho9IURUEYVF+lVoQZA+s9YnnAxr/gyGkcjWp8BGcHTBDJsbbs1DHCqyEztESLISiaAIIdRuEQFV+NSpFTNQAlk0CgakCaTSP9Y3PpNFI0JM2nkeIhaTGNNEgnMUxwVTIJg1ulBbbQ1TsksH7dlzcALrHlG15wewZmkDYYzOXrBEXg1RJETK8mzJFQlBUxbShq5e+1zC7+N62/k57V/pem9WDFuGVhuSViJ1sY2/jqMWdXu68vhaU6NaRZAeeopMl52VYHMZUGg3kDObx1AAdR+G1lC0detf+VtnUdhg44Rv4ldqKolb9NDIMR0XSI1mOMhD/XbJQIyOBu4UlH0zvccGTxaQDRAJASNvJn0TAWFwYi3e12HD7yWjWctOVw2uNME9MD0P1ViChudLjGufdYhlqaX4drYoScL7Y4xybvE9l1G5y1uLPonXe5e9+l+qrVvuxo/H20p668HuV1GwzSvyNYmveJeclxCVVXkOxpJ5XGmwIUwVXz4LZ4VQS8Ol1d49U3wGti7VUJ5Lmq5d/DO22j6Nm1JQwkWYk1foI0T8JlmqTz0K+s8Jezzhoks+VivpyBNYM3If0OJkiveD3/1JqetTPGYZA8fm6Na7bF+8IOpz/3JiMnwzBin/VYfiV89/ILBqFihVGUBG4iJHQ4W8A3qid8w45oFRTWMKmnaL7LbdfdKGuV6PoF2/ZGc4Ypg3XnUdXdKmV73d3eVt3LckQVBqymxITVcyozvIe/aheSrOCSPXNLQGWcVqOo2Xf1WUcEdU/o+99QSwMEFAAAAAgAAAAhAMrnZYorBAAAvgwAABEAHAB3b3JkL3NldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1V22PmzgQ/n7S/QfE58uG1ySLmq3yervV5lqVre6zAZNYa2Nkm03T0/33GwwO9BZVSav9hJln5pnxeGYM795/ZdR6wUISXsxt98axLVykPCPFfm5/edqOZrYlFSoyRHmB5/YJS/v93e+/vTtGEisFatICikJGLJ3bB6XKaDyW6QEzJG94iQsAcy4YUvAq9mOGxHNVjlLOSqRIQihRp7HnOBO7peFzuxJF1FKMGEkFlzxXtUnE85ykuH0YC3GJ38ZkzdOK4UJpj2OBKcTAC3kgpTRs7GfZADwYkpcfbeKFUaN3dJ0LtnvkIjtbXBJebVAKnmIp4YAYNQGSonMcvCI6+74B3+0WNRWYu45e9SMPryPwXhFMUvz1Oo5ZyzEGyz4Pya7jmZx5SNbj+blgegRZdRWF55s46kdt3uOSmcoO19GZMxrXtkihA5KHPiO+boPhme7EunxLekkFNtAjSQQSp375sTR62BdcoIRCOFCGFlSSpaOzmqOsH1ZTHZbJg6WTa9/B1PnGObOOUYlFCq0HI8tz7HENQMHzPFZIAVEkS0ypnmEpxQj8HqO9QAymj5FomwznqKLqCSWx4iUovSDY3tRQpgckUKqwiEuUAtuKF0pwavQy/hdXK5hkAhqttdBzrVvFzYwEiwIx2PB3c2/HM1xHVgly+cnYxrsb9l3+3xGHmS5Ihp/qRMfqRPEWgo/JN7wosg+VVAQY9fT7hQh+FAAuas8foTSeTiXeYqQqSNMbOdMnsaWk3BEhuHgoMqiNN3NG8hwLcECg1nZQPkTwo87zPUYZXKVv5LeS+G9Qhs70n6Asn5dcKc7uT+UBcv1rJ6nrfdwvX/ggyKRZfOZcnVVhbPnr6bKJtEYvQXzXCVabQWTibN1hm0XgO/4gsnLXbjCMhLPlaggJboOJuxhCJqG3CcIhZLH0Zv5sCFku3Wk4iKxW/srfDiIbZz28n83Km04HY9vees7tpj2d9kxYVH9qfBJmVTe2xRqLFWKJIMja1R8j41ojEc9LUhg8wTClcR+Jq8SAo1EDSIYo3UKJGcBp5BmR5Rrnek13SOw73lZDDEphyn44c9VTG4s/Ba/KBj0KVDYNa1TcIGgtSaEeCTNyWSWxsSrgXulBVZF9fBE6T116jpGCBtCD7xHpRtK6uBh9idtGoyKumwTvUFk2vZbs3blNyf6g3Lo9FLxl8M2qX5K912KexrwG0y8orXcG2u2ik3lG1tPzjczvZIGRBZ0sNLKwk02MbFLLDjBdBVx1z9D2ZlnLc04pP+LsvsNficwlmBI48fjEku5uu2kwSiTMoRKuQcWFwf7QmBtEGU8f6vs6aOT+YhGuF860gUN9fSo9qiC1n3G+RBJnLWZMw8b0n8nEmbjuajYKZpvb0WYaBKOZu7wdTafO1PW3rufPnH/bPjA/Hnf/AVBLAwQUAAAACAAAACEA24Vsw30EAACXHQAAEgAcAHdvcmQvbnVtYmVyaW5nLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAADNmc1u4zYQx+8F+g6CgB4Tifq2sM4iySZFFttF0U3RMy3RlhB+CBRlx9d9mT5CH2tfoaRkyXLkxJIctz4pJjk/zQxnyL+dDx+fCdaWiOcpo1MdXJq6hmjE4pQupvqfj/cXga7lAtIYYkbRVF+jXP949fNPH1YhLcgMcblQkwyah6ssmuqJEFloGHmUIALzS5JGnOVsLi4jRgw2n6cRMlaMx4ZlArP8K+MsQnkuObeQLmGub3DRcz9azOFKGiugY0QJ5AI9bxlgMMQ1JkbQBVkjQDJCC3RR9mCUZyivOiBnFEh61SG540h7gvPGkawuyR9HsrukYBypU06kW+AsQ1ROzhknUMiPfGEQyJ+K7EKCMyjSWYpTsZZM06sxMKVPIzySVg2B2PFggm8QFiNsxzWFTfWC03Bjf9HYK9fDyn7zaCwQ7vda+bqJgZ4FzkVty/vkrjL/xKKCICrKrBkcYZlHRvMkzZrTgYylycmkhizfSsCSYL052UDPVnvtaPtUbcMW2Mf9zd4RXHn+NhGYPXZTIRqLPi7svrP2hMgK3r54VGpayQU9D58aYHUAXoR6XhY1I9gwjGjb3YqT9myrmuM1nDRuccY50wLExSCEZdd+qIcyb7HyWMTJMFy9R4ayhQImME/aRDQsQLfBrUkr39niuKb6lbMi29LS42gP2+N1RYcFaHovdzDLj3PmWwIzeeqSKHxYUMbhDEuPZKtpslu0cge0qlzVQ6s6QKv3WisLSFOnln4lhRqc5YLDSHwtiLbz6UFWuxR8khlyJFUeV4OVprueC8RvOIJPaomi0Fy9LVxCeQUAD1jejenrhpohBRbpF7RE+HGdoXpNsp7xNP5NzWE1V60VJMP1Chfc3Tp3ZlDN4KWaSOWjcioUGZb3remYE9M0QelD6WPjRGUnZeg9aQZnBcZINMRHeQfVUz++/9OMf47qUYzmm+XZ71w9UqrCVMNT3bdKTxJIF6Ugtj1TrTWaxXzzuGdU5Cq5eZTKOvy2JjOGS9NrmbedgZRKcIzmUGZmAyspRunYy0yATibsckTeZ/JSXCK14ujMsKF5AY4zLjG3rOAp4tpXtGpl58VolHcXDsua1cma+/5Z+/H976F5s4A3Lm9/ydXqO1neytru2LAE2Xsa7AQJGtxwVhD83x3nnGXHyTycdce5Z9pxjj3yCH/vjvPOtONcc+RR/n4d559lx7n+yLP6P+q44Ew7znNGHuHHd5yxo24PSl8wRvq6gW8C++b6OOl7d+c5wL91+kjf+57bGKMoJRDv3cdfwOU7a9+echVMRhYlZivEvyAh92J/RNbgiA6p1p5aEtwcE9IfjEC6PyJ7X0Q8XSQDBCUIeoTUVX/3I0N6s+acwTt0SP71VGynKzp3cEiHhFtPOXWyovOGF11HU/Uquq4AOknR+YN36JAC6ilaTld0wfCQDmiXnoriZEU3GV50HVnxStF1NQAt737auvPVD2dhXJQ/q5WDMlTHn3jWy5/LHpprv34X3cO09jGdwHWB7wDwOhO0mUbrH6pX/wJQSwMEFAAAAAgAAAAhAL5+dmJWAQAA0AMAABQAHAB3b3JkL3dlYlNldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAACd01FvwiAQAOD3JfsPhHelumlMYzVZFpe9LEu2/QAKV0sGXAO46n79aLWuiy92T0DLfbnjYLneG02+wHmFNqOTcUIJWIFS2W1GP943owUlPnAruUYLGT2Ap+vV7c2yTmvI3yCEuNOTqFifGpHRMoQqZcyLEgz3Y6zAxp8FOsNDXLotM9x97qqRQFPxoHKlVTiwaZLM6Ylx1yhYFErAI4qdARvaeOZARxGtL1XlO62+RqvRycqhAO9jPUYfPcOVPTOT+wvIKOHQYxHGsZhTRi0VwydJOzP6F5gNA6YXwFzAfpixOBksRvYdJYc587OjZM/5XzI9QO4GEdO7Lo9maMJ7lpdBlsO4rkesieWBl9yXfRGGFTg7cwfTnLcR6fPWouO5jlK8QSReAtLC5NiFZiDHxpKuBNKeC13FJ4ZVUEZ9wwbdg8Pag2PNZ6411q8vT3HB/rzD1Q9QSwMEFAAAAAgAAAAhAD+v4WZfDwAADaYAAA8AHAB3b3JkL3N0eWxlcy54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA3Z1tc9s2Esff38x9B45e9V6ksp5lT92O7STnzCWpWzvX1xAJWaj5oCOpOO6nPwB8EKUlKC64UdRMZlqL4v4I4L+7xIIU+dMvXwLf+czjREThZW/w41nP4aEbeSJ8vOx9enj7at5zkpSFHvOjkF/2XnjS++Xnf/7jp+eLJH3xeeJIQJhcBO5lb5Wm64t+P3FXPGDJj9Gah/LLZRQHLJUf48d+wOKnzfqVGwVrloqF8EX60h+enU17OSZuQ4mWS+Hy15G7CXiYavt+zH1JjMJkJdZJQXtuQ3uOYm8dRy5PEtnpwM94ARNhiRmMASgQbhwl0TL9UXYmb5FGSfPBmf4r8LeACQ4wBICpy7/gGPOc0ZeWVY7wcJxpyRFehWPXmArA26AQw1HRDvU/ZV5hJV7qrXC4QqO+smUpW7FkVSVyXAcnJe4lUOMduBfvHsMoZgtfkqQHOdIJHA12MhXU/5xMWKfogqPHpfezjC4vcl/zJdv4aaI+xndx/jH/pP/3NgrTxHm+YIkrxGXvKhZMDvHzBWdJepUI9iBbLg8fCNmS26swEerLlfqjsrObXPYeRCBD+SN/dn6PAhY6P1xH3otzc/+vXl8d6InHodzzM/Mve8NsU/JXuWFcbLlJ9rf5LHwstvHw1af7ausqmxbCk01i8av7K204GF/44pGlm1g2S33ShCwRxd6N7Db/km5k++XO/Xw8+vujtC4/ZXvtDalMGDJ93GdZTH7Ll+8j94l796n84rJ31ss2fnp3F4solpnqsnd+nm+854G4FZ7Hw8qO4Up4/I8VDz8l3Ntu/+2tzjb5BjfahPLv0WyqZfYT780Xl69V7pLfhkzp9VEZaG02Yntwbf6/AjbIB7jOfsWZSuDOYB9xjkYMlUVS6W09c7PX9wH6QKNjHWh8rANNjnWg6bEONDvWgebHOtD51z6QCD2Z3wf1hwHUQxxDNKI5hmBDcwyxhOYYQgXNMUQCmmNwdDTH4MdojsFNEZw0ck1eWHH2kcHbm7mHzxF23MOnBDvu4TOAHfdwwrfjHs7vdtzD6dyOezh723EPJ2s8N5tqOe9kmIVp5yhbRlEaRil31PS0M42FkqWrWhqeOunxmKSTBJgss+Un4s40l+nPhz1k0u18nqqCzomWzlI8quKkc8N5+Jn70Zo7zPMkjxAYc1k+GUbExqdjvuQxD11O6dh0UF+E3Ak3wYLAN9fskYzFQ494+AoiSVIoHZpt0pUKEkHg1AFz44hgzsLI8sN7kXQfKwVxrje+z4lYH2lcTLO61wYa07000JjulYHGdC8MKppRDVFOIxqpnEY0YDmNaNwy/6Qat5xGNG45jWjcclr3cXsQqc/3Zx2D9mt3N36UUCS8e/EY6vXTzqR8zdS5YzF7jNl65ahl54MzLfRx9JLzA8U5rSRRzeu1i6hVZxFuug/oDo0quEoeUXiVPKIAK3ndQ+yDnCarCdotTT1zv1mktUHbviq4Z/4mm9B2jzaWdvewbQC8FXFCFgb1WAIP/qims7dEU71tK7s3bMvqHlb7WYm0eTmSoJV+5D7RpOHblzWPZVn21Jn0NvL96Jl7dMT7NI4yX6uG/HDYOuTfBOsVS0QCEO1P9cUdDM4Htu7coTufiZBGtzevAiZ8h24Gcfvw4b3zEK1VmakGhgZ4HaVpFJAx85XAH/7gi3/RNPBKFsHhC1Fvr4iWhzTsRhCcZDJS5BGR5DRThILkHKp5/+Evi4jFHg3tLubZTUMpJyLes2DtU8WWzIvPMv8QzIY0778sFmpdiCqoHkhglWXDZLP4k7vdU93HyCFZGfp1k+r1Rz3V7X61dwfXfZqwg+s+RdBqytOD8l+Czu7gund2B0fV2RufJYkwXkK15lF1t+BR97d78ZfzIj+KlxufbgALINkIFkCyIYz8TRAmlD3WPMIOax51fwldRvMIluQ079+x8MjE0DAqJTSMSgYNo9JAw0gF6H6HTgXW/TadCqz7vToZjGgKUIFR+Rnp6Z/oKk8FRuVnGkblZxpG5WcaRuVno9cOXy7lJJjuFFNBUvlcBUl3oglTHqyjmMUvRMg3Pn9kBAukGe0ujpbq1yRRmN3ETTGd3SxSysl2hqMS+Q++IGuaYlG2i2BFlPl+FBGtrW1PONpy9961Q2b65xydm3DnM5evIt/jsaFPjfXy/Zq5Ai6dtr9Y8l48rlLnflWu9lcx07ODlkXBvmN2+IB1Yz4dNl5m8sQmKBoKf0wxHbU3HgLj8WHj7Uxix3LS0hIec3rYcjtL3rGctbSEx5y3tBwBy6Z4eM3ip1pHmDX5T1njGZxv1nhhvjCuPWyTI5WWdS44a/KinVBxrlxXXS2A6rSLGbN9u+Ax22OiyEzBhJOZ0jquzIimAPudfxZJ7Rr1gevf5d0TIO+PW2fO3zZRCi5TD9v/qOudnDiFCXdqOaP2F652sox5HFunGzOidd4xI1onIDOiVSYymqNSkpnSOjeZEa2TlBmBzlbwjIDLVtAel62gvU22ghSbbNVhFmBGtJ4OmBHoQIUIdKB2mCmYEahABeZWgQop6ECFCHSgQgQ6UOEEDBeo0B4XqNDeJlAhxSZQIQUdqBCBDlSIQAcqRKADFSLQgWo5tzeaWwUqpKADFSLQgQoR6EAddwxUaI8LVGhvE6iQYhOokIIOVIhABypEoAMVItCBChHoQIUIVKACc6tAhRR0oEIEOlAhAh2ok46BCu1xgQrtbQIVUmwCFVLQgQoR6ECFCHSgQgQ6UCECHagQgQpUYG4VqJCCDlSIQAcqRKADddoxUKE9LlChvU2gQopNoEIKOlAhAh2oEIEOVIhABypEoAMVIlCBCsytAhVS0IEKEehAhYgm/8wvUZpusx/gVz2Nd+wjfueTNer36k+5d9ZQ26OKVplZ7X+LcB1FT07tDw9Ho/YQsfBFpJeoDZfVq9wZ+sLnrzfNv/Bp8RiPtl3Jfwuhr5kC+LitJVhTGTe5fNUSFHnjJk+vWoJZ57gp+1YtwWlw3JR0dVwWN6XI0xEwbkozFeOBwbwpW1fM4RA35eiKIRzhpsxcMYQD3JSPK4YTRyXnfetJy3GalveXAkKTO1YIMzOhyS2hVsa1/daimQlt1TMT2spoJqD0NGLwwppRaIXNKDupYZhhpbYPVDMBKzUkWEkNMPZSQ5S11BBlJzVMjFipIQErtX1yNhOspAYYe6khylpqiLKTGp7KsFJDAlZqSMBK3fGEbMTYSw1R1lJDlJ3UcHKHlRoSsFJDAlZqSLCSGmDspYYoa6khyk5qUCWjpYYErNSQgJUaEqykBhh7qSHKWmqIapJar6LYV0sVc9wkrGKIOyFXDHHJuWJoUS1VrC2rpQrBslqCWtlVS1XR7Kqlqnp21VJVRrtqCehpVy3VCmtXLdUqbFctmaXGVUt1UtsHql21VCc1rloySo2rlhqlxlVLjVLjqiWz1LhqqU5qXLVUJ7V9crarloxS46qlRqlx1VKj1LhqySw1rlqqkxpXLdVJjauW6qTueEK2q5YapcZVS41S46ols9S4aqlOaly1VCc1rlqqkxpXLRmlxlVLjVLjqqVGqXHVkllqXLVUJzWuWqqTGlct1UmNq5aMUuOqpUapcdVSo9S4aumDNBEEj4C6D1icOnTPi7tlySpl3R9O+CmMeRL5n7nn0Hb1PaqX/eed118ptn6dn9w/lWOmnoBe+bmSlz0BNgfqHd955WuqlLFqiZO/5yvfrBucX67NjqgNDxyqhOfXigcAv325lT7Cgsle/RrWHTxUD0as2a4cotheHOZmxeLs262rFvuc7/fl+SJO1Avcsq/Pzoaj0evZdbbXOns12xPn64/y+P3ig9SHJ/pTkv2AVpov1DPF5AiMpvq3V2yZ8viyN8+jNsqe2vT+s18eKZcuP0btW+CKV76xPyuvfNt/H5z68k2+TX2vXwlXa+kmaWXztfBE1jhXRXnZrrfj2VT7ht5ZZ4DLHtPxv92sbkpR9xm8zQjbF8gVF5urL5AbF30tXu1m4zxDo/MMKZ1n2MJ5tmGZ7bcTlF/ZvQYt3WvwfbrXaAjdK9vW0b1GRvcaUbrX6Dtxr2Gzex1yomO4ynAOXSXb1tFVxkZXGVO6yvjEXWVe9ZSx0VNGX8dTRPbfm4TEbzp6xMToERNKj5h8Hx4xPs3c0dEHpkYfmFL6wPTEfcAs++ToiWByrv7tO4F609LWBR6EeoPv1ZTAA2ZGD5hResDsb+sB0yME/pE1nxs1n1NqPj8pzaGys6PH9nCm/rXR+TXFnO/cqPM5pc7nJ67z/AgRTK+sKweVufkD1Q3rX/mLkcon++jXIu1rbnh7kkGvQTu9zO1O1SpsQ5v1Km3jwl3+sHaTQ7X2qHThZ1LLP96FyqGe83fYZy31vrBeseMN9/0PLNs7Wpt39fkyzb4dnM1rvl9kr4Qw2sf62oER0N9tTL/shHm8s5dE5j9qMa6T6keGweHOHiXWcaRb+rC7SeTQ6OXe/fbtrIHut/K2WG51tnlmL3HVxoEpXQ0OpCpz8vle1qO6LHciJR02SjokknSIO/t8/wp3WXFEKjxqVHhEpPDoayn8d1/0Q6o1blRrTKTW+NTUOvbCG1KVSaMqEyJVJqemysnpMG3UYUqkw/TUdDjqahRSklmjJDMiSWanJslpiTBvFGFOJML81EQ46koOUpLzRknOiSQ5PzVJvslyWvZgi/2xzrZSrKNpUtMi2iAv2FBrZNtF7r0L4656fcWXdMP8/En6jctjxyyBtk3W3XpV9PuJx+XgbifLZXqcwunzhDgRbiWqdYOu4VbxJbP6p1m2Hl+z+iAtX6K9L1D5BUWoFrDGaB1YRGu4CbI/hA/vhyq/BDE9mB64Je+bTECAVwwm36Lm3RHL5BZdQ3fXvczecOJzxq8sWX3MZq8B2Fcm20oRrZrUFKpDmztrD92ANige3venW3BUEcvj2khtmGSOz9S/NhpS18PbgasVp2vMVBQ2a3IwYI46cvUOrC6fbN+rsT9We6/dOOTRcChGYwv3FPpSl7pQpZ6R12LO19Jdyk7nD44rn2a3323wuDuco9R4BOqEetg7jnifVT4W9Ylu920oFAmverimvDeyKSjW117lAqneL5GelL9X+y91j5yTZUeuJ61OPuyW6+PlpdSvfKT+tmeHfhgxKjJ7NcbmU90afWU3+0SS/L/peijwo0bX7Xo62AmSAx57cnHfmCO3z9Y0DeB2j65Zsrjmh8qSi+yo+WglMqn4N2xNM3ZgSjmpH9Hir+Tn/wNQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL3RoZW1lL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAHAB3b3JkL3RoZW1lL3RoZW1lMS54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA7VlPb9s2FL8P2HcgdHf1x5IsBXUL/23XJm3RpB16ZGRaYkyJAkknMYoCQ3vaZcCAbthlwG47DMMKrMCKXfZhCrTYug8xSnZs0abatE23AksMxCL5e48/vvf4+ExdvHycEnCIGMc0axv2BcsAKIvoCGdx27izN2wEBuACZiNIaIbaxgxx4/KlTz+5CLdEglIEpHzGt2DbSITIt0yTR7Ib8gs0R5kcG1OWQiGbLDZHDB5JvSkxHcvyzRTizAAZTKXam+MxjhDYK1Qal06UD4j8lwledESE7UbljFWJEjua2MUXn/EeYeAQkrYh5xnRoz10LAxAIBdyoG1Y5Z9hXrpoLoWIqJGtyA3Lv4XcQmA0cUo5Fu8vBa2BE7j2Ur8z17+JGwTFZ6mvBMAokiu1N7C251uBs8BWQPNHje6wZTdVfEV/c1N/6HcdV8E3V3h3c43DcND3FLy7wnsb+I7ldMOmgvdWeH8D7w46LWeg4EtQQnA22UT7rSDwF+glZEzJVS089H2r1V/AVyizEl1z+UzUxVoKDygbSkDpXChwBsQsR2MYSVwnF5SDPuY5gTMD5DCjXHZbjm3LwHMtZ/kpLQ63EKxIz7sivtFV8AE8YjgXbeOa1GpUIC+ePXv+8Onzh789f/To+cNfwDaOE6GRuwqzuCr36sev//7+C/DXrz+8evyNHs+r+Jc/f/ny9z9ep14otL598vLpkxffffXnT4818A6D+1X4Hk4RBzfQEbhNU7lAzQRon72dxF4CcVWik8UcZrCQ0aAHIlHQN2aQQA2ui1Q73mUyXeiAV6YHCuHdhE0F1gCvJ6kC3KGUdCnTrul6MVfVCtMs1k/OplXcbQgPdXP31rw8mOYy7rFOZS9BCs1bRLocxihDAhRjdIKQRuwexopdd3DEKKdjAe5h0IVYa5I9vC/0QldxKv0y0xGU/lZss3MXdCnRqe+jQxUp9wYkOpWIKGa8AqcCplrGMCVV5DYUiY7k7oxFisG5kJ6OEaFgMEKc62RusplC9zqUeUvr9h0yS1UkE3iiQ25DSqvIPp30EpjmWs44S6rYz/hEhigEt6jQkqDqDina0g8wq3X3XYzE2+3tOzIN6QOkGJky3ZZAVN2PMzKGSKe8w1IlxXYY1kZHdxorob2NEIFHcIQQuPOZDk9zqid9LZFZ5SrS2eYaVGO1aGeIy1qpKG40jsVcCdldFNMaPjuztcQzg1kKWZ3mGxM1ZAb7TG5GXbySaKKkUsyKTasncZOn8FRabyVQCauizfXxOmPZ2+4xKXPwDjLorWVkYj+1bfYgQfqA2YMYbOvSrRSZ6kWK7VSKTbVyY3XTrtxgrhU9Kc7eUAH9N5XPB6t5zr7aqUso6zVOHW69sulRNsIff2HTh9PsFpJnyXldc17X/B/rmrr9fF7NnFcz59XMv1bNrAoYs3rZU2pJa29+xpiQXTEjaJuXpQ+Xe380lJ1loxRaXjTliXxcTKfgYgbLZ8Co+ByLZDeBuZzGLmeI+UJ1zEFOuSyfjFrdZfE1TXfoaHGPZ5/cbUoBKFb9lrfsl6WamPf6rdVF6FJ92Yp5lYBXKj09icpkKommhkSreToStnVWLEINi8B+HQuz4hV5OAFYXIt77pyRDDcZ0qPCT3P5E++euafrjKku29EsL3TPzNMKiUq4qSQqYZjIw2O9+4x9HYZ6VztaGq3gQ/ja3MwNJFNb4EjuuaYn1UQwbxtj+bNJPqa51MeLTAVJnLWNSCwM/S6ZJWdc9CFP5rByaL7+FAvEAMGpjPWqG0i24mY7LevjJRdaH5/lzHUno/EYRaKmZ9WUY3Ml2tH3BBcNOpWkd5PREdgnU3YbSkN5Lbsw4AhzsbTmCLNKcK+suJauFltReQO02qKQ5AlcnCjVZD6Hl89LOpV1lEzXV2XqTLgfD8/i1H2z0FrSrDlAWrVZ7MMd8hVWTT0rT5vrwsB6/Snx/gdChVqgp9bUU6s7O86wIKhM59fYzan15nueButRa1bqyrK18XKb7h/IyO/LanVKBJ9fkB3L8rt38lpyngnK3pPscizAlOG2cd/yOm7P8XoNK/AGDbfpWo3A6zQbHc9r2gPPtvpd54E0ikhS25vPPZQ/9sls8e6+7N94f5+elNoXIpqatKyDzVK4fH9vO/Xv7wGWlrnvO8OwGXb9RtjsDBtuvxs0wp7fbfT9Xqs/7Pe8IBw+MMBhCXY7zZ7rD4KGb/d6Dde3CvpB2Gi5jtNxW51g4HYeLGwtV37yfWLektelfwBQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL19yZWxzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhALO+ix3+AAAAtgMAABwAHAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQJAAMw0M4SiBztaHV4CwABBPUBAAAEFAAAAK2TzWrDMBCE74W+g9h7LTttQwmRcymBXFv3AWR7/UP1Y6RNWr99RUoShwbTg44zYme+hdV6860VO6DzvTUCsiQFhqaydW9aAR/F9uEFmCdpaqmsQQEjetjk93frN1SSwpDv+sGzkGK8gI5oWHHuqw619Ikd0ISXxjotKUjX8kFWn7JFvkjTJXfTDMivMtmuFuB29SOwYhzwP9m2afoKX22112joRgX3SBQ28yFTuhZJwMlJQhbw2wiLqAg0KpwCHPVcfRaz3ux1iS5sfCE4W3MQy5gQFGbxAnCUv2Y2x/Ack6GxhgpZqgnH2ZqDeIoJ8YXl+5+TnJgnEH712/IfUEsBAh4DFAAAAAgAAAAhADKRb1deAQAApQUAABMAGAAAAAAAAQAAAKSBAAAAAFtDb250ZW50X1R5cGVzXS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGrAQAAZG9jUHJvcHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhACEYr1llAQAAxQIAABAAGAAAAAAAAQAAAKSB7gEAAGRvY1Byb3BzL2FwcC54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEACvOn+GYBAADtAgAAEQAYAAAAAAABAAAApIGdAwAAZG9jUHJvcHMvY29yZS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFOBQAAX3JlbHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAGAAAAAAAAQAAAKSBjgUAAF9yZWxzLy5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BvAYAAHdvcmQvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAGAAAAAAAAQAAAKSB+wYAAHdvcmQvZm9udFRhYmxlLnhtbFVUBQADnhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABgAAAAAAAEAAACkgVcJAAB3b3JkL2RvY3VtZW50LnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDK52WKKwQAAL4MAAARABgAAAAAAAEAAACkgXcMAAB3b3JkL3NldHRpbmdzLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDbhWzDfQQAAJcdAAASABgAAAAAAAEAAACkge0QAAB3b3JkL251bWJlcmluZy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAvn52YlYBAADQAwAAFAAYAAAAAAABAAAApIG2FQAAd29yZC93ZWJTZXR0aW5ncy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAP6/hZl8PAAANpgAADwAYAAAAAAABAAAApIFaFwAAd29yZC9zdHlsZXMueG1sVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BAicAAHdvcmQvdGhlbWUvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAGAAAAAAAAQAAAKSBRycAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNkTVsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTEuAAB3b3JkL19yZWxzL1VUBQADhhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCzvosd/gAAALYDAAAcABgAAAAAAAEAAACkgXYuAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAARABEAqQUAAMovAAAAAA==`, 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 = `
|
|
244309
|
+
}, 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
244310
|
`, TEXT_RANGE_LEAF_SEP = `
|
|
243085
244311
|
`, DecorationBridge = class DecorationBridge2 {
|
|
243086
244312
|
#applied = /* @__PURE__ */ new WeakMap;
|
|
@@ -252627,9 +253853,9 @@ var Node$13 = class Node$14 {
|
|
|
252627
253853
|
return;
|
|
252628
253854
|
console.log(...args$1);
|
|
252629
253855
|
}, 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
|
|
253856
|
+
var init_src_sOP3agXO_es = __esm(() => {
|
|
252631
253857
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
252632
|
-
|
|
253858
|
+
init_SuperConverter_CMIR0kxi_es();
|
|
252633
253859
|
init_jszip_ChlR43oI_es();
|
|
252634
253860
|
init_uuid_qzgm05fK_es();
|
|
252635
253861
|
init_constants_Qqwopz80_es();
|
|
@@ -270507,75 +271733,49 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270507
271733
|
name: "permissionRanges",
|
|
270508
271734
|
addStorage() {
|
|
270509
271735
|
return {
|
|
270510
|
-
|
|
270511
|
-
|
|
271736
|
+
allRanges: [],
|
|
271737
|
+
allowedRanges: [],
|
|
271738
|
+
hasAllowedRanges: false,
|
|
271739
|
+
ranges: []
|
|
270512
271740
|
};
|
|
270513
271741
|
},
|
|
270514
271742
|
addPmPlugins() {
|
|
270515
271743
|
const editor = this.editor;
|
|
270516
271744
|
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
|
-
}
|
|
271745
|
+
const getAllowedIdentifiers = () => buildAllowedIdentifierSetFromEditor(editor);
|
|
270549
271746
|
return [new Plugin({
|
|
270550
271747
|
key: PERMISSION_PLUGIN_KEY,
|
|
270551
271748
|
state: {
|
|
270552
271749
|
init(_$1, state) {
|
|
270553
271750
|
const permissionTypeInfo = getPermissionTypeInfo(state.schema);
|
|
270554
|
-
const
|
|
271751
|
+
const protectionEnforced = isReadOnlyProtectionRuntimeEnforced(editor);
|
|
271752
|
+
const permissionState = buildPermissionState(state.doc, getAllowedIdentifiers(), permissionTypeInfo, protectionEnforced);
|
|
271753
|
+
storage.allRanges = permissionState.allRanges;
|
|
271754
|
+
storage.allowedRanges = permissionState.allowedRanges;
|
|
271755
|
+
storage.hasAllowedRanges = permissionState.hasAllowedRanges;
|
|
270555
271756
|
storage.ranges = permissionState.ranges;
|
|
270556
|
-
|
|
271757
|
+
applyEffectiveEditability(editor, { refilterRanges: false });
|
|
270557
271758
|
return permissionState;
|
|
270558
271759
|
},
|
|
270559
271760
|
apply(tr, value, _oldState, newState) {
|
|
270560
|
-
|
|
270561
|
-
|
|
270562
|
-
|
|
270563
|
-
|
|
270564
|
-
|
|
270565
|
-
|
|
270566
|
-
|
|
271761
|
+
if (!tr.docChanged)
|
|
271762
|
+
return value;
|
|
271763
|
+
const permissionTypeInfo = getPermissionTypeInfo(newState.schema);
|
|
271764
|
+
const protectionEnforced = isReadOnlyProtectionRuntimeEnforced(editor);
|
|
271765
|
+
const permissionState = buildPermissionState(newState.doc, getAllowedIdentifiers(), permissionTypeInfo, protectionEnforced);
|
|
271766
|
+
storage.allRanges = permissionState.allRanges;
|
|
271767
|
+
storage.allowedRanges = permissionState.allowedRanges;
|
|
271768
|
+
storage.hasAllowedRanges = permissionState.hasAllowedRanges;
|
|
271769
|
+
storage.ranges = permissionState.ranges;
|
|
271770
|
+
applyEffectiveEditability(editor, { refilterRanges: false });
|
|
270567
271771
|
return permissionState;
|
|
270568
271772
|
}
|
|
270569
271773
|
},
|
|
270570
|
-
view() {
|
|
270571
|
-
return { destroy() {
|
|
270572
|
-
if (editor && originalSetDocumentMode)
|
|
270573
|
-
editor.setDocumentMode = originalSetDocumentMode;
|
|
270574
|
-
} };
|
|
270575
|
-
},
|
|
270576
271774
|
appendTransaction(transactions, oldState, newState) {
|
|
270577
271775
|
if (!transactions.some((tr$1) => tr$1.docChanged))
|
|
270578
271776
|
return null;
|
|
271777
|
+
if (transactions.some((tr$1) => tr$1.getMeta?.("permissionRangeMutation")))
|
|
271778
|
+
return null;
|
|
270579
271779
|
if (transactions.some((tr$1) => tr$1.getMeta?.(ySyncPluginKey)))
|
|
270580
271780
|
return null;
|
|
270581
271781
|
const permTypes = getPermissionTypeInfo(newState.schema);
|
|
@@ -270635,11 +271835,15 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270635
271835
|
return true;
|
|
270636
271836
|
if (tr.getMeta?.(ySyncPluginKey))
|
|
270637
271837
|
return true;
|
|
270638
|
-
if (
|
|
271838
|
+
if (tr.getMeta?.("permissionRangeMutation"))
|
|
271839
|
+
return true;
|
|
271840
|
+
if (!editor)
|
|
270639
271841
|
return true;
|
|
270640
|
-
|
|
270641
|
-
if (!pluginState?.hasAllowedRanges)
|
|
271842
|
+
if (!isReadOnlyProtectionRuntimeEnforced(editor))
|
|
270642
271843
|
return true;
|
|
271844
|
+
const activeRanges = storage.allowedRanges ?? storage.ranges;
|
|
271845
|
+
if (!activeRanges?.length)
|
|
271846
|
+
return false;
|
|
270643
271847
|
const changedRanges = collectChangedRanges(tr);
|
|
270644
271848
|
if (!changedRanges.length)
|
|
270645
271849
|
return true;
|
|
@@ -270647,12 +271851,35 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270647
271851
|
if (!permTypes.startTypes.length || !permTypes.endTypes.length)
|
|
270648
271852
|
return true;
|
|
270649
271853
|
return changedRanges.every((range) => {
|
|
270650
|
-
return isRangeAllowed(trimPermissionTagsFromRange(state.doc, range, permTypes.allTypeSet),
|
|
271854
|
+
return isRangeAllowed(trimPermissionTagsFromRange(state.doc, range, permTypes.allTypeSet), activeRanges);
|
|
270651
271855
|
});
|
|
270652
271856
|
}
|
|
270653
271857
|
})];
|
|
270654
271858
|
}
|
|
270655
271859
|
});
|
|
271860
|
+
Protection = Extension.create({
|
|
271861
|
+
name: "protection",
|
|
271862
|
+
addStorage() {
|
|
271863
|
+
return {
|
|
271864
|
+
state: {
|
|
271865
|
+
editingRestriction: {
|
|
271866
|
+
mode: "none",
|
|
271867
|
+
enforced: false,
|
|
271868
|
+
runtimeEnforced: false,
|
|
271869
|
+
passwordProtected: false,
|
|
271870
|
+
formattingRestricted: false
|
|
271871
|
+
},
|
|
271872
|
+
writeProtection: {
|
|
271873
|
+
enabled: false,
|
|
271874
|
+
passwordProtected: false
|
|
271875
|
+
},
|
|
271876
|
+
readOnlyRecommended: false
|
|
271877
|
+
},
|
|
271878
|
+
initialized: false,
|
|
271879
|
+
editableBaseline: null
|
|
271880
|
+
};
|
|
271881
|
+
}
|
|
271882
|
+
});
|
|
270656
271883
|
FONT_FAMILY_FALLBACKS2 = Object.freeze({
|
|
270657
271884
|
swiss: "Arial, sans-serif",
|
|
270658
271885
|
roman: "Times New Roman, serif",
|
|
@@ -279444,7 +280671,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279444
280671
|
stylesPartDescriptor = {
|
|
279445
280672
|
id: STYLES_PART_ID,
|
|
279446
280673
|
ensurePart(editor) {
|
|
279447
|
-
const converter = getConverter$
|
|
280674
|
+
const converter = getConverter$52(editor);
|
|
279448
280675
|
if (converter?.convertedXml[STYLES_PART_ID])
|
|
279449
280676
|
return converter.convertedXml[STYLES_PART_ID];
|
|
279450
280677
|
return {
|
|
@@ -279459,7 +280686,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279459
280686
|
},
|
|
279460
280687
|
afterCommit(ctx$1) {
|
|
279461
280688
|
if (ctx$1.source.startsWith("collab:remote:")) {
|
|
279462
|
-
const converter = getConverter$
|
|
280689
|
+
const converter = getConverter$52(ctx$1.editor);
|
|
279463
280690
|
if (converter)
|
|
279464
280691
|
try {
|
|
279465
280692
|
converter.translatedLinkedStyles = translateStyleDefinitions(converter.convertedXml);
|
|
@@ -279679,6 +280906,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279679
280906
|
KIND_ORDER = ["header", "footer"];
|
|
279680
280907
|
HEADER_FILE_PATTERN2 = /header(\d+)\.xml$/;
|
|
279681
280908
|
FOOTER_FILE_PATTERN2 = /footer(\d+)\.xml$/;
|
|
280909
|
+
SETTINGS_PART = SETTINGS_PART_PATH;
|
|
279682
280910
|
SPECIAL_NOTE_TYPES = new Set(["separator", "continuationSeparator"]);
|
|
279683
280911
|
RESTART_POLICY_TO_OOXML = {
|
|
279684
280912
|
continuous: "continuous",
|
|
@@ -280051,6 +281279,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280051
281279
|
this.setOptions(resolvedOptions);
|
|
280052
281280
|
this.#createConverter();
|
|
280053
281281
|
initPartsRuntime(this);
|
|
281282
|
+
this.#initProtectionState();
|
|
280054
281283
|
this.#initMedia();
|
|
280055
281284
|
const shouldMountRenderer = this.#shouldMountRenderer();
|
|
280056
281285
|
if (shouldMountRenderer) {
|
|
@@ -280075,6 +281304,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280075
281304
|
if (Boolean(this.options.markdown || this.options.html || this.options.loadFromSchema || this.options.jsonOverride || this.options.mode === "html" || this.options.mode === "text"))
|
|
280076
281305
|
this.migrateListsToV2();
|
|
280077
281306
|
this.setDocumentMode(this.options.documentMode, "init");
|
|
281307
|
+
this.#emitProtectionInit();
|
|
280078
281308
|
this.initializeCollaborationData();
|
|
280079
281309
|
if (!this.options.ydoc && !this.options.isChildEditor)
|
|
280080
281310
|
this.#initComments();
|
|
@@ -280098,18 +281328,42 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280098
281328
|
this.converter = undefined;
|
|
280099
281329
|
if (this.storage.image)
|
|
280100
281330
|
this.storage.image.media = {};
|
|
281331
|
+
const protStorageToReset = getProtectionStorage(this);
|
|
281332
|
+
if (protStorageToReset) {
|
|
281333
|
+
protStorageToReset.state = { ...DEFAULT_PROTECTION_STATE };
|
|
281334
|
+
protStorageToReset.initialized = false;
|
|
281335
|
+
protStorageToReset.editableBaseline = null;
|
|
281336
|
+
}
|
|
280101
281337
|
this.#sourcePath = null;
|
|
280102
281338
|
this.options.initialState = null;
|
|
280103
281339
|
this.options.content = "";
|
|
280104
281340
|
this.options.fileSource = null;
|
|
280105
281341
|
this._state = undefined;
|
|
280106
281342
|
}
|
|
281343
|
+
#initProtectionState() {
|
|
281344
|
+
const protStorage = getProtectionStorage(this);
|
|
281345
|
+
if (!protStorage)
|
|
281346
|
+
return;
|
|
281347
|
+
protStorage.state = parseProtectionState(this.converter ? readSettingsRoot(this.converter) : null);
|
|
281348
|
+
protStorage.initialized = true;
|
|
281349
|
+
}
|
|
281350
|
+
#emitProtectionInit() {
|
|
281351
|
+
const protStorage = getProtectionStorage(this);
|
|
281352
|
+
if (!protStorage?.initialized)
|
|
281353
|
+
return;
|
|
281354
|
+
this.emit("protectionChanged", {
|
|
281355
|
+
editor: this,
|
|
281356
|
+
state: protStorage.state,
|
|
281357
|
+
source: "init"
|
|
281358
|
+
});
|
|
281359
|
+
}
|
|
280107
281360
|
#init() {
|
|
280108
281361
|
this.#createExtensionService();
|
|
280109
281362
|
this.#createCommandService();
|
|
280110
281363
|
this.#createSchema();
|
|
280111
281364
|
this.#createConverter();
|
|
280112
281365
|
initPartsRuntime(this);
|
|
281366
|
+
this.#initProtectionState();
|
|
280113
281367
|
this.#initMedia();
|
|
280114
281368
|
this.on("beforeCreate", this.options.onBeforeCreate);
|
|
280115
281369
|
this.emit("beforeCreate", { editor: this });
|
|
@@ -280153,6 +281407,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280153
281407
|
if (Boolean(this.options.markdown || this.options.html || this.options.loadFromSchema || this.options.jsonOverride || this.options.mode === "html" || this.options.mode === "text"))
|
|
280154
281408
|
this.migrateListsToV2();
|
|
280155
281409
|
this.setDocumentMode(this.options.documentMode, "init");
|
|
281410
|
+
this.#emitProtectionInit();
|
|
280156
281411
|
if (!this.options.ydoc && !this.options.isChildEditor)
|
|
280157
281412
|
this.#initComments();
|
|
280158
281413
|
if (shouldMountRenderer) {
|
|
@@ -280351,6 +281606,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280351
281606
|
if (pm)
|
|
280352
281607
|
pm.classList.remove("view-mode");
|
|
280353
281608
|
}
|
|
281609
|
+
applyEffectiveEditability(this);
|
|
280354
281610
|
}
|
|
280355
281611
|
blur() {
|
|
280356
281612
|
this.view?.dom?.blur();
|
|
@@ -284338,6 +285594,16 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
284338
285594
|
event: "commentsUpdate",
|
|
284339
285595
|
handler: handleCommentsUpdate
|
|
284340
285596
|
});
|
|
285597
|
+
const handleProtectionChanged = () => {
|
|
285598
|
+
this.#updatePermissionOverlay();
|
|
285599
|
+
this.#pendingDocChange = true;
|
|
285600
|
+
this.#scheduleRerender();
|
|
285601
|
+
};
|
|
285602
|
+
this.#editor.on("protectionChanged", handleProtectionChanged);
|
|
285603
|
+
this.#editorListeners.push({
|
|
285604
|
+
event: "protectionChanged",
|
|
285605
|
+
handler: handleProtectionChanged
|
|
285606
|
+
});
|
|
284341
285607
|
}
|
|
284342
285608
|
#setupCollaborationCursors() {
|
|
284343
285609
|
this.#remoteCursorManager?.setup();
|
|
@@ -286364,6 +287630,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
286364
287630
|
this.#errorBannerMessage = null;
|
|
286365
287631
|
}
|
|
286366
287632
|
#isViewLocked() {
|
|
287633
|
+
const protectionStorage = this.#editor?.storage?.protection;
|
|
287634
|
+
if (protectionStorage?.initialized === true && protectionStorage?.state?.editingRestriction?.runtimeEnforced === true)
|
|
287635
|
+
return !!!this.#editor?.storage?.permissionRanges?.hasAllowedRanges;
|
|
286367
287636
|
if (this.#documentMode !== "viewing")
|
|
286368
287637
|
return false;
|
|
286369
287638
|
if (!!this.#editor?.storage?.permissionRanges?.hasAllowedRanges)
|
|
@@ -286536,8 +287805,8 @@ var init_zipper_YmNpPIyc_es = __esm(() => {
|
|
|
286536
287805
|
|
|
286537
287806
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
286538
287807
|
var init_super_editor_es = __esm(() => {
|
|
286539
|
-
|
|
286540
|
-
|
|
287808
|
+
init_src_sOP3agXO_es();
|
|
287809
|
+
init_SuperConverter_CMIR0kxi_es();
|
|
286541
287810
|
init_jszip_ChlR43oI_es();
|
|
286542
287811
|
init_xml_js_40FWvL78_es();
|
|
286543
287812
|
init_constants_Qqwopz80_es();
|