@superdoc-dev/cli 0.5.0-next.13 → 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 +1903 -415
- 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) {
|
|
@@ -236511,173 +237719,40 @@ var Node$13 = class Node$14 {
|
|
|
236511
237719
|
this.deco = deco;
|
|
236512
237720
|
}
|
|
236513
237721
|
}, searchKey, BLOCK_SEPARATOR = `
|
|
236514
|
-
`, ATOM_PLACEHOLDER = "", SearchIndex =
|
|
236515
|
-
|
|
236516
|
-
|
|
236517
|
-
|
|
236518
|
-
|
|
236519
|
-
|
|
236520
|
-
|
|
236521
|
-
|
|
236522
|
-
|
|
236523
|
-
|
|
236524
|
-
|
|
236525
|
-
|
|
236526
|
-
|
|
236527
|
-
|
|
236528
|
-
|
|
236529
|
-
|
|
236530
|
-
|
|
236531
|
-
|
|
236532
|
-
|
|
236533
|
-
|
|
236534
|
-
|
|
236535
|
-
|
|
236536
|
-
|
|
236537
|
-
|
|
236538
|
-
|
|
236539
|
-
|
|
236540
|
-
|
|
236541
|
-
|
|
236542
|
-
docTo: childDocPos,
|
|
236543
|
-
kind: "blockSep"
|
|
236544
|
-
});
|
|
236545
|
-
currentOffset += 1;
|
|
236546
|
-
}
|
|
236547
|
-
currentOffset = this.#walkNode(child, childDocPos, currentOffset, addSegment);
|
|
236548
|
-
isFirstChild = false;
|
|
236549
|
-
});
|
|
236550
|
-
return currentOffset;
|
|
236551
|
-
}
|
|
236552
|
-
#walkNode(node3, docPos, offset$1, addSegment) {
|
|
236553
|
-
if (node3.isText) {
|
|
236554
|
-
const text5 = node3.text || "";
|
|
236555
|
-
if (text5.length > 0) {
|
|
236556
|
-
addSegment({
|
|
236557
|
-
offsetStart: offset$1,
|
|
236558
|
-
offsetEnd: offset$1 + text5.length,
|
|
236559
|
-
docFrom: docPos,
|
|
236560
|
-
docTo: docPos + text5.length,
|
|
236561
|
-
kind: "text"
|
|
236562
|
-
});
|
|
236563
|
-
return offset$1 + text5.length;
|
|
236564
|
-
}
|
|
236565
|
-
return offset$1;
|
|
236566
|
-
}
|
|
236567
|
-
if (node3.isLeaf) {
|
|
236568
|
-
if (node3.type.name === "hard_break") {
|
|
236569
|
-
addSegment({
|
|
236570
|
-
offsetStart: offset$1,
|
|
236571
|
-
offsetEnd: offset$1 + 1,
|
|
236572
|
-
docFrom: docPos,
|
|
236573
|
-
docTo: docPos + node3.nodeSize,
|
|
236574
|
-
kind: "hardBreak"
|
|
236575
|
-
});
|
|
236576
|
-
return offset$1 + 1;
|
|
236577
|
-
}
|
|
236578
|
-
addSegment({
|
|
236579
|
-
offsetStart: offset$1,
|
|
236580
|
-
offsetEnd: offset$1 + 1,
|
|
236581
|
-
docFrom: docPos,
|
|
236582
|
-
docTo: docPos + node3.nodeSize,
|
|
236583
|
-
kind: "atom"
|
|
236584
|
-
});
|
|
236585
|
-
return offset$1 + 1;
|
|
236586
|
-
}
|
|
236587
|
-
return this.#walkNodeContent(node3, docPos + 1, offset$1, addSegment);
|
|
236588
|
-
}
|
|
236589
|
-
invalidate() {
|
|
236590
|
-
this.valid = false;
|
|
236591
|
-
}
|
|
236592
|
-
isStale(doc$12) {
|
|
236593
|
-
return !this.valid || this.doc !== doc$12;
|
|
236594
|
-
}
|
|
236595
|
-
ensureValid(doc$12) {
|
|
236596
|
-
if (this.isStale(doc$12))
|
|
236597
|
-
this.build(doc$12);
|
|
236598
|
-
}
|
|
236599
|
-
offsetRangeToDocRanges(start$1, end$1) {
|
|
236600
|
-
const ranges = [];
|
|
236601
|
-
for (const segment of this.segments) {
|
|
236602
|
-
if (segment.offsetEnd <= start$1)
|
|
236603
|
-
continue;
|
|
236604
|
-
if (segment.offsetStart >= end$1)
|
|
236605
|
-
break;
|
|
236606
|
-
if (segment.kind !== "text")
|
|
236607
|
-
continue;
|
|
236608
|
-
const overlapStart = Math.max(start$1, segment.offsetStart);
|
|
236609
|
-
const overlapEnd = Math.min(end$1, segment.offsetEnd);
|
|
236610
|
-
if (overlapStart < overlapEnd) {
|
|
236611
|
-
const startInSegment = overlapStart - segment.offsetStart;
|
|
236612
|
-
const endInSegment = overlapEnd - segment.offsetStart;
|
|
236613
|
-
ranges.push({
|
|
236614
|
-
from: segment.docFrom + startInSegment,
|
|
236615
|
-
to: segment.docFrom + endInSegment
|
|
236616
|
-
});
|
|
237722
|
+
`, ATOM_PLACEHOLDER = "", SearchIndex, customSearchHighlightsKey, isRegExp2 = (value) => Object.prototype.toString.call(value) === "[object RegExp]", SEARCH_POSITION_TRACKER_TYPE = "search-match", mapIndexMatchesToDocMatches = ({ searchIndex, indexMatches, doc: doc$12, positionTracker }) => {
|
|
237723
|
+
const matches2 = [];
|
|
237724
|
+
for (const indexMatch of indexMatches) {
|
|
237725
|
+
const ranges = searchIndex.offsetRangeToDocRanges(indexMatch.start, indexMatch.end);
|
|
237726
|
+
if (ranges.length === 0)
|
|
237727
|
+
continue;
|
|
237728
|
+
const matchTexts = ranges.map((r$1) => doc$12.textBetween(r$1.from, r$1.to));
|
|
237729
|
+
const match$1 = {
|
|
237730
|
+
from: ranges[0].from,
|
|
237731
|
+
to: ranges[ranges.length - 1].to,
|
|
237732
|
+
text: matchTexts.join(""),
|
|
237733
|
+
id: v4_default(),
|
|
237734
|
+
ranges,
|
|
237735
|
+
trackerIds: []
|
|
237736
|
+
};
|
|
237737
|
+
if (positionTracker?.trackMany) {
|
|
237738
|
+
const trackedRanges = ranges.map((range, rangeIndex) => ({
|
|
237739
|
+
from: range.from,
|
|
237740
|
+
to: range.to,
|
|
237741
|
+
spec: {
|
|
237742
|
+
type: SEARCH_POSITION_TRACKER_TYPE,
|
|
237743
|
+
metadata: { rangeIndex }
|
|
237744
|
+
}
|
|
237745
|
+
}));
|
|
237746
|
+
const trackerIds = positionTracker.trackMany(trackedRanges);
|
|
237747
|
+
if (trackerIds.length > 0) {
|
|
237748
|
+
match$1.trackerIds = trackerIds;
|
|
237749
|
+
match$1.id = trackerIds[0];
|
|
236617
237750
|
}
|
|
236618
237751
|
}
|
|
236619
|
-
|
|
236620
|
-
}
|
|
236621
|
-
offsetToDocPos(offset$1) {
|
|
236622
|
-
for (const segment of this.segments)
|
|
236623
|
-
if (offset$1 >= segment.offsetStart && offset$1 < segment.offsetEnd) {
|
|
236624
|
-
if (segment.kind === "text")
|
|
236625
|
-
return segment.docFrom + (offset$1 - segment.offsetStart);
|
|
236626
|
-
return segment.docFrom;
|
|
236627
|
-
}
|
|
236628
|
-
if (this.segments.length > 0 && offset$1 === this.segments[this.segments.length - 1].offsetEnd)
|
|
236629
|
-
return this.segments[this.segments.length - 1].docTo;
|
|
236630
|
-
return null;
|
|
237752
|
+
matches2.push(match$1);
|
|
236631
237753
|
}
|
|
236632
|
-
|
|
236633
|
-
|
|
236634
|
-
}
|
|
236635
|
-
static toFlexiblePattern(searchString) {
|
|
236636
|
-
const hasLeadingWhitespace = /^[\s\u00a0]+/.test(searchString);
|
|
236637
|
-
const hasTrailingWhitespace = /[\s\u00a0]+$/.test(searchString);
|
|
236638
|
-
const parts = searchString.replace(/^[\s\u00a0]+|[\s\u00a0]+$/g, "").split(/[\s\u00a0]+/).filter((part) => part.length > 0);
|
|
236639
|
-
if (parts.length === 0)
|
|
236640
|
-
return hasLeadingWhitespace || hasTrailingWhitespace ? "[\\s\\u00a0]+" : "";
|
|
236641
|
-
const blockSeparatorPattern = "(?:\\n)*";
|
|
236642
|
-
let pattern = parts.map((part) => {
|
|
236643
|
-
return Array.from(part).map((ch) => SearchIndex2.escapeRegex(ch)).join(blockSeparatorPattern);
|
|
236644
|
-
}).join("[\\s\\u00a0]+");
|
|
236645
|
-
if (hasLeadingWhitespace)
|
|
236646
|
-
pattern = "[\\s\\u00a0]+" + pattern;
|
|
236647
|
-
if (hasTrailingWhitespace)
|
|
236648
|
-
pattern = pattern + "[\\s\\u00a0]+";
|
|
236649
|
-
return pattern;
|
|
236650
|
-
}
|
|
236651
|
-
search(pattern, options = {}) {
|
|
236652
|
-
const { caseSensitive = false, maxMatches = 1000 } = options;
|
|
236653
|
-
const matches2 = [];
|
|
236654
|
-
let regex;
|
|
236655
|
-
if (pattern instanceof RegExp) {
|
|
236656
|
-
const flags = pattern.flags.includes("g") ? pattern.flags : pattern.flags + "g";
|
|
236657
|
-
regex = new RegExp(pattern.source, flags);
|
|
236658
|
-
} else if (typeof pattern === "string") {
|
|
236659
|
-
if (pattern.length === 0)
|
|
236660
|
-
return matches2;
|
|
236661
|
-
const flexiblePattern = SearchIndex2.toFlexiblePattern(pattern);
|
|
236662
|
-
if (flexiblePattern.length === 0)
|
|
236663
|
-
return matches2;
|
|
236664
|
-
const flags = caseSensitive ? "g" : "gi";
|
|
236665
|
-
regex = new RegExp(flexiblePattern, flags);
|
|
236666
|
-
} else
|
|
236667
|
-
return matches2;
|
|
236668
|
-
let match$1;
|
|
236669
|
-
while ((match$1 = regex.exec(this.text)) !== null && matches2.length < maxMatches) {
|
|
236670
|
-
matches2.push({
|
|
236671
|
-
start: match$1.index,
|
|
236672
|
-
end: match$1.index + match$1[0].length,
|
|
236673
|
-
text: match$1[0]
|
|
236674
|
-
});
|
|
236675
|
-
if (match$1[0].length === 0)
|
|
236676
|
-
regex.lastIndex++;
|
|
236677
|
-
}
|
|
236678
|
-
return matches2;
|
|
236679
|
-
}
|
|
236680
|
-
}, customSearchHighlightsKey, isRegExp2 = (value) => Object.prototype.toString.call(value) === "[object RegExp]", SEARCH_POSITION_TRACKER_TYPE = "search-match", resolveMatchSelectionRange = (match$1, positionTracker) => {
|
|
237754
|
+
return matches2;
|
|
237755
|
+
}, resolveMatchSelectionRange = (match$1, positionTracker) => {
|
|
236681
237756
|
if (!match$1)
|
|
236682
237757
|
return {
|
|
236683
237758
|
from: undefined,
|
|
@@ -237030,16 +238105,7 @@ var Node$13 = class Node$14 {
|
|
|
237030
238105
|
return "default";
|
|
237031
238106
|
}
|
|
237032
238107
|
}
|
|
237033
|
-
}, NodeResizer, PERMISSION_PLUGIN_KEY, EVERYONE_GROUP = "everyone", EMPTY_IDENTIFIER_SET, normalizeIdentifier2 = (value) => typeof value === "string" ? value.trim().toLowerCase() : "",
|
|
237034
|
-
const email = normalizeIdentifier2(editor?.options?.user?.email);
|
|
237035
|
-
if (!email)
|
|
237036
|
-
return EMPTY_IDENTIFIER_SET;
|
|
237037
|
-
const [localPart, domain2] = email.split("@");
|
|
237038
|
-
if (!localPart || !domain2)
|
|
237039
|
-
return EMPTY_IDENTIFIER_SET;
|
|
237040
|
-
const formatted = `${domain2}\\${localPart}`;
|
|
237041
|
-
return formatted ? new Set([formatted]) : EMPTY_IDENTIFIER_SET;
|
|
237042
|
-
}, 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) => {
|
|
237043
238109
|
if (!attrs)
|
|
237044
238110
|
return false;
|
|
237045
238111
|
if (isEveryoneGroup(attrs.edGrp))
|
|
@@ -237070,40 +238136,66 @@ var Node$13 = class Node$14 {
|
|
|
237070
238136
|
endTypeSet: new Set(endTypes),
|
|
237071
238137
|
allTypeSet: new Set([...startTypes, ...endTypes])
|
|
237072
238138
|
};
|
|
237073
|
-
}, getPermissionNodeId = (node3, pos, fallbackPrefix) => String(node3.attrs?.id ?? `${fallbackPrefix}-${pos}`),
|
|
237074
|
-
|
|
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 = [];
|
|
237075
238151
|
const openRanges = /* @__PURE__ */ new Map;
|
|
237076
238152
|
const startTypeSet = permTypes?.startTypeSet ?? /* @__PURE__ */ new Set;
|
|
237077
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"];
|
|
237078
238156
|
doc$12.descendants((node3, pos) => {
|
|
237079
238157
|
if (startTypeSet.has(node3.type)) {
|
|
237080
238158
|
const id2 = getPermissionNodeId(node3, pos, "permStart");
|
|
237081
238159
|
openRanges.set(id2, {
|
|
237082
238160
|
from: pos + node3.nodeSize,
|
|
237083
|
-
|
|
238161
|
+
startPos: pos,
|
|
238162
|
+
attrs: node3.attrs ?? {},
|
|
238163
|
+
isBlock: node3.type === blockStartType
|
|
237084
238164
|
});
|
|
237085
238165
|
return false;
|
|
237086
238166
|
}
|
|
237087
238167
|
if (endTypeSet.has(node3.type)) {
|
|
237088
238168
|
const id2 = getPermissionNodeId(node3, pos, "permEnd");
|
|
237089
238169
|
const start$1 = openRanges.get(id2);
|
|
237090
|
-
if (start$1
|
|
238170
|
+
if (start$1) {
|
|
237091
238171
|
const to = Math.max(pos, start$1.from);
|
|
237092
|
-
if (to > start$1.from)
|
|
237093
|
-
|
|
238172
|
+
if (to > start$1.from) {
|
|
238173
|
+
const isBlock = start$1.isBlock || node3.type === blockEndType;
|
|
238174
|
+
const entry = {
|
|
237094
238175
|
id: id2,
|
|
237095
238176
|
from: start$1.from,
|
|
237096
|
-
to
|
|
237097
|
-
|
|
237098
|
-
|
|
237099
|
-
|
|
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
|
+
}
|
|
237100
238189
|
openRanges.delete(id2);
|
|
238190
|
+
}
|
|
237101
238191
|
return false;
|
|
237102
238192
|
}
|
|
237103
238193
|
});
|
|
237104
238194
|
return {
|
|
237105
|
-
|
|
237106
|
-
|
|
238195
|
+
allRanges,
|
|
238196
|
+
allowedRanges,
|
|
238197
|
+
hasAllowedRanges: allowedRanges.length > 0,
|
|
238198
|
+
ranges: allowedRanges
|
|
237107
238199
|
};
|
|
237108
238200
|
}, collectPermissionTags = (doc$12, permStartTypes, permEndTypes) => {
|
|
237109
238201
|
const tags = /* @__PURE__ */ new Map;
|
|
@@ -237171,7 +238263,7 @@ var Node$13 = class Node$14 {
|
|
|
237171
238263
|
if (!allowedRanges?.length)
|
|
237172
238264
|
return false;
|
|
237173
238265
|
return allowedRanges.some((allowed) => range.from >= allowed.from && range.to <= allowed.to);
|
|
237174
|
-
}, 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) => {
|
|
237175
238267
|
if (!str.includes('"') && !str.includes("'"))
|
|
237176
238268
|
return str.split(delimiter).map((p$12) => p$12.trim()).filter(Boolean);
|
|
237177
238269
|
const parts = [];
|
|
@@ -240898,6 +241990,7 @@ var Node$13 = class Node$14 {
|
|
|
240898
241990
|
PermStartBlock,
|
|
240899
241991
|
PermEndBlock,
|
|
240900
241992
|
PermissionRanges,
|
|
241993
|
+
Protection,
|
|
240901
241994
|
VerticalNavigation,
|
|
240902
241995
|
PassthroughInline,
|
|
240903
241996
|
PassthroughBlock,
|
|
@@ -243213,7 +244306,7 @@ var Node$13 = class Node$14 {
|
|
|
243213
244306
|
console.warn("Failed to initialize developer tools:", error3);
|
|
243214
244307
|
}
|
|
243215
244308
|
}
|
|
243216
|
-
}, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, SNAPSHOT_VERSION3 = "sd-diff-snapshot/v1", PAYLOAD_VERSION3 = "sd-diff-payload/v1", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, EXCLUDED_PLUGIN_KEY_REF_LIST, EXCLUDED_PLUGIN_KEY_REFS, EXCLUDED_PLUGIN_KEY_PREFIXES, TEXT_RANGE_BLOCK_SEP = `
|
|
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 = `
|
|
243217
244310
|
`, TEXT_RANGE_LEAF_SEP = `
|
|
243218
244311
|
`, DecorationBridge = class DecorationBridge2 {
|
|
243219
244312
|
#applied = /* @__PURE__ */ new WeakMap;
|
|
@@ -252760,9 +253853,9 @@ var Node$13 = class Node$14 {
|
|
|
252760
253853
|
return;
|
|
252761
253854
|
console.log(...args$1);
|
|
252762
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;
|
|
252763
|
-
var
|
|
253856
|
+
var init_src_sOP3agXO_es = __esm(() => {
|
|
252764
253857
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
252765
|
-
|
|
253858
|
+
init_SuperConverter_CMIR0kxi_es();
|
|
252766
253859
|
init_jszip_ChlR43oI_es();
|
|
252767
253860
|
init_uuid_qzgm05fK_es();
|
|
252768
253861
|
init_constants_Qqwopz80_es();
|
|
@@ -270075,13 +271168,240 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270075
271168
|
replaceCommand(true, true);
|
|
270076
271169
|
replaceCommand(false, true);
|
|
270077
271170
|
replaceCommand(false, false);
|
|
271171
|
+
SearchIndex = class SearchIndex2 {
|
|
271172
|
+
text = "";
|
|
271173
|
+
segments = [];
|
|
271174
|
+
valid = false;
|
|
271175
|
+
docSize = 0;
|
|
271176
|
+
doc = null;
|
|
271177
|
+
build(doc$12) {
|
|
271178
|
+
this.text = doc$12.textBetween(0, doc$12.content.size, BLOCK_SEPARATOR, ATOM_PLACEHOLDER);
|
|
271179
|
+
this.segments = [];
|
|
271180
|
+
this.docSize = doc$12.content.size;
|
|
271181
|
+
this.doc = doc$12;
|
|
271182
|
+
let offset$1 = 0;
|
|
271183
|
+
this.#walkNodeContent(doc$12, 0, offset$1, (segment) => {
|
|
271184
|
+
this.segments.push(segment);
|
|
271185
|
+
offset$1 = segment.offsetEnd;
|
|
271186
|
+
});
|
|
271187
|
+
this.valid = true;
|
|
271188
|
+
}
|
|
271189
|
+
#walkNodeContent(node3, contentStart, offset$1, addSegment) {
|
|
271190
|
+
let currentOffset = offset$1;
|
|
271191
|
+
let isFirstChild = true;
|
|
271192
|
+
node3.forEach((child, childContentOffset) => {
|
|
271193
|
+
const childDocPos = contentStart + childContentOffset;
|
|
271194
|
+
if (child.isBlock && !isFirstChild) {
|
|
271195
|
+
addSegment({
|
|
271196
|
+
offsetStart: currentOffset,
|
|
271197
|
+
offsetEnd: currentOffset + 1,
|
|
271198
|
+
docFrom: childDocPos,
|
|
271199
|
+
docTo: childDocPos,
|
|
271200
|
+
kind: "blockSep"
|
|
271201
|
+
});
|
|
271202
|
+
currentOffset += 1;
|
|
271203
|
+
}
|
|
271204
|
+
currentOffset = this.#walkNode(child, childDocPos, currentOffset, addSegment);
|
|
271205
|
+
isFirstChild = false;
|
|
271206
|
+
});
|
|
271207
|
+
return currentOffset;
|
|
271208
|
+
}
|
|
271209
|
+
#walkNode(node3, docPos, offset$1, addSegment) {
|
|
271210
|
+
if (node3.isText) {
|
|
271211
|
+
const text5 = node3.text || "";
|
|
271212
|
+
if (text5.length > 0) {
|
|
271213
|
+
addSegment({
|
|
271214
|
+
offsetStart: offset$1,
|
|
271215
|
+
offsetEnd: offset$1 + text5.length,
|
|
271216
|
+
docFrom: docPos,
|
|
271217
|
+
docTo: docPos + text5.length,
|
|
271218
|
+
kind: "text"
|
|
271219
|
+
});
|
|
271220
|
+
return offset$1 + text5.length;
|
|
271221
|
+
}
|
|
271222
|
+
return offset$1;
|
|
271223
|
+
}
|
|
271224
|
+
if (node3.isLeaf) {
|
|
271225
|
+
if (node3.type.name === "hard_break") {
|
|
271226
|
+
addSegment({
|
|
271227
|
+
offsetStart: offset$1,
|
|
271228
|
+
offsetEnd: offset$1 + 1,
|
|
271229
|
+
docFrom: docPos,
|
|
271230
|
+
docTo: docPos + node3.nodeSize,
|
|
271231
|
+
kind: "hardBreak"
|
|
271232
|
+
});
|
|
271233
|
+
return offset$1 + 1;
|
|
271234
|
+
}
|
|
271235
|
+
addSegment({
|
|
271236
|
+
offsetStart: offset$1,
|
|
271237
|
+
offsetEnd: offset$1 + 1,
|
|
271238
|
+
docFrom: docPos,
|
|
271239
|
+
docTo: docPos + node3.nodeSize,
|
|
271240
|
+
kind: "atom"
|
|
271241
|
+
});
|
|
271242
|
+
return offset$1 + 1;
|
|
271243
|
+
}
|
|
271244
|
+
return this.#walkNodeContent(node3, docPos + 1, offset$1, addSegment);
|
|
271245
|
+
}
|
|
271246
|
+
invalidate() {
|
|
271247
|
+
this.valid = false;
|
|
271248
|
+
}
|
|
271249
|
+
isStale(doc$12) {
|
|
271250
|
+
return !this.valid || this.doc !== doc$12;
|
|
271251
|
+
}
|
|
271252
|
+
ensureValid(doc$12) {
|
|
271253
|
+
if (this.isStale(doc$12))
|
|
271254
|
+
this.build(doc$12);
|
|
271255
|
+
}
|
|
271256
|
+
offsetRangeToDocRanges(start$1, end$1) {
|
|
271257
|
+
const ranges = [];
|
|
271258
|
+
for (const segment of this.segments) {
|
|
271259
|
+
if (segment.offsetEnd <= start$1)
|
|
271260
|
+
continue;
|
|
271261
|
+
if (segment.offsetStart >= end$1)
|
|
271262
|
+
break;
|
|
271263
|
+
if (segment.kind !== "text")
|
|
271264
|
+
continue;
|
|
271265
|
+
const overlapStart = Math.max(start$1, segment.offsetStart);
|
|
271266
|
+
const overlapEnd = Math.min(end$1, segment.offsetEnd);
|
|
271267
|
+
if (overlapStart < overlapEnd) {
|
|
271268
|
+
const startInSegment = overlapStart - segment.offsetStart;
|
|
271269
|
+
const endInSegment = overlapEnd - segment.offsetStart;
|
|
271270
|
+
ranges.push({
|
|
271271
|
+
from: segment.docFrom + startInSegment,
|
|
271272
|
+
to: segment.docFrom + endInSegment
|
|
271273
|
+
});
|
|
271274
|
+
}
|
|
271275
|
+
}
|
|
271276
|
+
return ranges;
|
|
271277
|
+
}
|
|
271278
|
+
offsetToDocPos(offset$1) {
|
|
271279
|
+
for (const segment of this.segments)
|
|
271280
|
+
if (offset$1 >= segment.offsetStart && offset$1 < segment.offsetEnd) {
|
|
271281
|
+
if (segment.kind === "text")
|
|
271282
|
+
return segment.docFrom + (offset$1 - segment.offsetStart);
|
|
271283
|
+
return segment.docFrom;
|
|
271284
|
+
}
|
|
271285
|
+
if (this.segments.length > 0 && offset$1 === this.segments[this.segments.length - 1].offsetEnd)
|
|
271286
|
+
return this.segments[this.segments.length - 1].docTo;
|
|
271287
|
+
return null;
|
|
271288
|
+
}
|
|
271289
|
+
static escapeRegex(str) {
|
|
271290
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
271291
|
+
}
|
|
271292
|
+
static toFlexiblePattern(searchString) {
|
|
271293
|
+
const hasLeadingWhitespace = /^[\s\u00a0]+/.test(searchString);
|
|
271294
|
+
const hasTrailingWhitespace = /[\s\u00a0]+$/.test(searchString);
|
|
271295
|
+
const parts = searchString.replace(/^[\s\u00a0]+|[\s\u00a0]+$/g, "").split(/[\s\u00a0]+/).filter((part) => part.length > 0);
|
|
271296
|
+
if (parts.length === 0)
|
|
271297
|
+
return hasLeadingWhitespace || hasTrailingWhitespace ? "[\\s\\u00a0]+" : "";
|
|
271298
|
+
const blockSeparatorPattern = "(?:\\n)*";
|
|
271299
|
+
let pattern = parts.map((part) => {
|
|
271300
|
+
return Array.from(part).map((ch) => SearchIndex2.escapeRegex(ch)).join(blockSeparatorPattern);
|
|
271301
|
+
}).join("[\\s\\u00a0]+");
|
|
271302
|
+
if (hasLeadingWhitespace)
|
|
271303
|
+
pattern = "[\\s\\u00a0]+" + pattern;
|
|
271304
|
+
if (hasTrailingWhitespace)
|
|
271305
|
+
pattern = pattern + "[\\s\\u00a0]+";
|
|
271306
|
+
return pattern;
|
|
271307
|
+
}
|
|
271308
|
+
search(pattern, options = {}) {
|
|
271309
|
+
const { caseSensitive = false, maxMatches = 1000 } = options;
|
|
271310
|
+
const matches2 = [];
|
|
271311
|
+
let regex;
|
|
271312
|
+
if (pattern instanceof RegExp) {
|
|
271313
|
+
const flags = pattern.flags.includes("g") ? pattern.flags : pattern.flags + "g";
|
|
271314
|
+
regex = new RegExp(pattern.source, flags);
|
|
271315
|
+
} else if (typeof pattern === "string") {
|
|
271316
|
+
if (pattern.length === 0)
|
|
271317
|
+
return matches2;
|
|
271318
|
+
const flexiblePattern = SearchIndex2.toFlexiblePattern(pattern);
|
|
271319
|
+
if (flexiblePattern.length === 0)
|
|
271320
|
+
return matches2;
|
|
271321
|
+
const flags = caseSensitive ? "g" : "gi";
|
|
271322
|
+
regex = new RegExp(flexiblePattern, flags);
|
|
271323
|
+
} else
|
|
271324
|
+
return matches2;
|
|
271325
|
+
let match$1;
|
|
271326
|
+
while ((match$1 = regex.exec(this.text)) !== null && matches2.length < maxMatches) {
|
|
271327
|
+
matches2.push({
|
|
271328
|
+
start: match$1.index,
|
|
271329
|
+
end: match$1.index + match$1[0].length,
|
|
271330
|
+
text: match$1[0]
|
|
271331
|
+
});
|
|
271332
|
+
if (match$1[0].length === 0)
|
|
271333
|
+
regex.lastIndex++;
|
|
271334
|
+
}
|
|
271335
|
+
return matches2;
|
|
271336
|
+
}
|
|
271337
|
+
static DIACRITICS_PATTERN = /[\u0300-\u036f\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7]/g;
|
|
271338
|
+
static stripDiacritics(str) {
|
|
271339
|
+
return str.normalize("NFD").replace(SearchIndex2.DIACRITICS_PATTERN, "");
|
|
271340
|
+
}
|
|
271341
|
+
static buildDiacriticOffsetMap(original) {
|
|
271342
|
+
const nfd = original.normalize("NFD");
|
|
271343
|
+
const toOriginal = [];
|
|
271344
|
+
let foldedChars = [];
|
|
271345
|
+
const nfdToOriginal = [];
|
|
271346
|
+
let origIdx = 0;
|
|
271347
|
+
for (let nfdIdx = 0;nfdIdx < nfd.length; ) {
|
|
271348
|
+
const origNfd = original[origIdx].normalize("NFD");
|
|
271349
|
+
for (let k$1 = 0;k$1 < origNfd.length; k$1++)
|
|
271350
|
+
nfdToOriginal[nfdIdx + k$1] = origIdx;
|
|
271351
|
+
nfdIdx += origNfd.length;
|
|
271352
|
+
origIdx++;
|
|
271353
|
+
}
|
|
271354
|
+
for (let nfdIdx = 0;nfdIdx < nfd.length; nfdIdx++) {
|
|
271355
|
+
const cp = nfd.charCodeAt(nfdIdx);
|
|
271356
|
+
if (cp >= 768 && cp <= 879 || cp >= 1425 && cp <= 1469 || cp === 1471 || cp === 1473 || cp === 1474 || cp === 1476 || cp === 1477 || cp === 1479)
|
|
271357
|
+
continue;
|
|
271358
|
+
foldedChars.push(nfd[nfdIdx]);
|
|
271359
|
+
toOriginal.push(nfdToOriginal[nfdIdx]);
|
|
271360
|
+
}
|
|
271361
|
+
toOriginal.push(original.length);
|
|
271362
|
+
return {
|
|
271363
|
+
folded: foldedChars.join(""),
|
|
271364
|
+
toOriginal
|
|
271365
|
+
};
|
|
271366
|
+
}
|
|
271367
|
+
searchIgnoringDiacritics(pattern, options = {}) {
|
|
271368
|
+
const { caseSensitive = false, maxMatches = 1000 } = options;
|
|
271369
|
+
if (!pattern || typeof pattern !== "string" || pattern.length === 0)
|
|
271370
|
+
return [];
|
|
271371
|
+
const { folded: foldedText, toOriginal } = SearchIndex2.buildDiacriticOffsetMap(this.text);
|
|
271372
|
+
const foldedQuery = SearchIndex2.stripDiacritics(pattern);
|
|
271373
|
+
const flexiblePattern = SearchIndex2.toFlexiblePattern(foldedQuery);
|
|
271374
|
+
if (flexiblePattern.length === 0)
|
|
271375
|
+
return [];
|
|
271376
|
+
const flags = caseSensitive ? "g" : "gi";
|
|
271377
|
+
const regex = new RegExp(flexiblePattern, flags);
|
|
271378
|
+
const matches2 = [];
|
|
271379
|
+
let match$1;
|
|
271380
|
+
while ((match$1 = regex.exec(foldedText)) !== null && matches2.length < maxMatches) {
|
|
271381
|
+
const originalStart = toOriginal[match$1.index];
|
|
271382
|
+
const originalEnd = toOriginal[match$1.index + match$1[0].length];
|
|
271383
|
+
matches2.push({
|
|
271384
|
+
start: originalStart,
|
|
271385
|
+
end: originalEnd,
|
|
271386
|
+
text: this.text.slice(originalStart, originalEnd)
|
|
271387
|
+
});
|
|
271388
|
+
if (match$1[0].length === 0)
|
|
271389
|
+
regex.lastIndex++;
|
|
271390
|
+
}
|
|
271391
|
+
return matches2;
|
|
271392
|
+
}
|
|
271393
|
+
};
|
|
270078
271394
|
customSearchHighlightsKey = new PluginKey("customSearchHighlights");
|
|
270079
271395
|
Search = Extension.create({
|
|
270080
271396
|
addStorage() {
|
|
270081
271397
|
return {
|
|
270082
271398
|
searchResults: [],
|
|
270083
271399
|
highlightEnabled: true,
|
|
270084
|
-
searchIndex: new SearchIndex
|
|
271400
|
+
searchIndex: new SearchIndex,
|
|
271401
|
+
activeMatchIndex: -1,
|
|
271402
|
+
query: "",
|
|
271403
|
+
caseSensitive: false,
|
|
271404
|
+
ignoreDiacritics: false
|
|
270085
271405
|
};
|
|
270086
271406
|
},
|
|
270087
271407
|
addPmPlugins() {
|
|
@@ -270090,8 +271410,26 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270090
271410
|
const searchIndexInvalidatorPlugin = new Plugin({
|
|
270091
271411
|
key: new PluginKey("searchIndexInvalidator"),
|
|
270092
271412
|
appendTransaction(transactions, oldState, newState) {
|
|
270093
|
-
if (transactions.some((tr) => tr.docChanged)
|
|
271413
|
+
if (!transactions.some((tr) => tr.docChanged))
|
|
271414
|
+
return null;
|
|
271415
|
+
if (storage?.searchIndex)
|
|
270094
271416
|
storage.searchIndex.invalidate();
|
|
271417
|
+
if (storage?.query) {
|
|
271418
|
+
storage.searchIndex.ensureValid(newState.doc);
|
|
271419
|
+
const indexMatches = (storage.ignoreDiacritics ? (q$1, opts) => storage.searchIndex.searchIgnoringDiacritics(q$1, opts) : (q$1, opts) => storage.searchIndex.search(q$1, opts))(storage.query, { caseSensitive: storage.caseSensitive });
|
|
271420
|
+
const refreshed = mapIndexMatchesToDocMatches({
|
|
271421
|
+
searchIndex: storage.searchIndex,
|
|
271422
|
+
indexMatches,
|
|
271423
|
+
doc: newState.doc
|
|
271424
|
+
});
|
|
271425
|
+
storage.searchResults = refreshed;
|
|
271426
|
+
if (refreshed.length === 0)
|
|
271427
|
+
storage.activeMatchIndex = -1;
|
|
271428
|
+
else if (storage.activeMatchIndex < 0)
|
|
271429
|
+
storage.activeMatchIndex = 0;
|
|
271430
|
+
else if (storage.activeMatchIndex >= refreshed.length)
|
|
271431
|
+
storage.activeMatchIndex = refreshed.length - 1;
|
|
271432
|
+
}
|
|
270095
271433
|
return null;
|
|
270096
271434
|
}
|
|
270097
271435
|
});
|
|
@@ -270105,10 +271443,13 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270105
271443
|
return null;
|
|
270106
271444
|
const highlightEnabled = storage?.highlightEnabled !== false;
|
|
270107
271445
|
const decorations = [];
|
|
270108
|
-
|
|
271446
|
+
const activeIdx = storage?.activeMatchIndex ?? -1;
|
|
271447
|
+
for (let i4 = 0;i4 < matches2.length; i4++) {
|
|
271448
|
+
const match$1 = matches2[i4];
|
|
271449
|
+
const cls = i4 === activeIdx ? "ProseMirror-active-search-match" : "ProseMirror-search-match";
|
|
270109
271450
|
const attrs = highlightEnabled ? {
|
|
270110
271451
|
id: `search-match-${match$1.id}`,
|
|
270111
|
-
class:
|
|
271452
|
+
class: cls
|
|
270112
271453
|
} : { id: `search-match-${match$1.id}` };
|
|
270113
271454
|
if (match$1.ranges && match$1.ranges.length > 0)
|
|
270114
271455
|
for (const range of match$1.ranges)
|
|
@@ -270195,41 +271536,15 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270195
271536
|
positionTracker?.untrackByType?.(SEARCH_POSITION_TRACKER_TYPE);
|
|
270196
271537
|
const searchIndex = this.storage.searchIndex;
|
|
270197
271538
|
searchIndex.ensureValid(state.doc);
|
|
270198
|
-
const
|
|
270199
|
-
|
|
270200
|
-
|
|
271539
|
+
const resultMatches = mapIndexMatchesToDocMatches({
|
|
271540
|
+
searchIndex,
|
|
271541
|
+
indexMatches: searchIndex.search(searchPattern, {
|
|
271542
|
+
caseSensitive,
|
|
271543
|
+
maxMatches
|
|
271544
|
+
}),
|
|
271545
|
+
doc: state.doc,
|
|
271546
|
+
positionTracker
|
|
270201
271547
|
});
|
|
270202
|
-
const resultMatches = [];
|
|
270203
|
-
for (const indexMatch of indexMatches) {
|
|
270204
|
-
const ranges = searchIndex.offsetRangeToDocRanges(indexMatch.start, indexMatch.end);
|
|
270205
|
-
if (ranges.length === 0)
|
|
270206
|
-
continue;
|
|
270207
|
-
const combinedText = ranges.map((r$1) => state.doc.textBetween(r$1.from, r$1.to)).join("");
|
|
270208
|
-
const match$1 = {
|
|
270209
|
-
from: ranges[0].from,
|
|
270210
|
-
to: ranges[ranges.length - 1].to,
|
|
270211
|
-
text: combinedText,
|
|
270212
|
-
id: v4_default(),
|
|
270213
|
-
ranges,
|
|
270214
|
-
trackerIds: []
|
|
270215
|
-
};
|
|
270216
|
-
if (positionTracker?.trackMany) {
|
|
270217
|
-
const trackedRanges = ranges.map((range, rangeIndex) => ({
|
|
270218
|
-
from: range.from,
|
|
270219
|
-
to: range.to,
|
|
270220
|
-
spec: {
|
|
270221
|
-
type: SEARCH_POSITION_TRACKER_TYPE,
|
|
270222
|
-
metadata: { rangeIndex }
|
|
270223
|
-
}
|
|
270224
|
-
}));
|
|
270225
|
-
const trackerIds = positionTracker.trackMany(trackedRanges);
|
|
270226
|
-
if (trackerIds.length > 0) {
|
|
270227
|
-
match$1.trackerIds = trackerIds;
|
|
270228
|
-
match$1.id = trackerIds[0];
|
|
270229
|
-
}
|
|
270230
|
-
}
|
|
270231
|
-
resultMatches.push(match$1);
|
|
270232
|
-
}
|
|
270233
271548
|
this.storage.searchResults = resultMatches;
|
|
270234
271549
|
this.storage.highlightEnabled = highlight;
|
|
270235
271550
|
return resultMatches;
|
|
@@ -270265,6 +271580,137 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270265
271580
|
});
|
|
270266
271581
|
}
|
|
270267
271582
|
return true;
|
|
271583
|
+
},
|
|
271584
|
+
setSearchSession: (query2, options = {}) => ({ state, editor }) => {
|
|
271585
|
+
const caseSensitive = options.caseSensitive ?? false;
|
|
271586
|
+
const ignoreDiacritics = options.ignoreDiacritics ?? false;
|
|
271587
|
+
const highlight = options.highlight ?? true;
|
|
271588
|
+
this.storage.query = query2;
|
|
271589
|
+
this.storage.caseSensitive = caseSensitive;
|
|
271590
|
+
this.storage.ignoreDiacritics = ignoreDiacritics;
|
|
271591
|
+
const positionTracker = getPositionTracker(editor);
|
|
271592
|
+
positionTracker?.untrackByType?.(SEARCH_POSITION_TRACKER_TYPE);
|
|
271593
|
+
if (!query2) {
|
|
271594
|
+
this.storage.searchResults = [];
|
|
271595
|
+
this.storage.activeMatchIndex = -1;
|
|
271596
|
+
this.storage.highlightEnabled = highlight;
|
|
271597
|
+
return {
|
|
271598
|
+
matches: [],
|
|
271599
|
+
activeMatchIndex: -1
|
|
271600
|
+
};
|
|
271601
|
+
}
|
|
271602
|
+
const searchIndex = this.storage.searchIndex;
|
|
271603
|
+
searchIndex.ensureValid(state.doc);
|
|
271604
|
+
const resultMatches = mapIndexMatchesToDocMatches({
|
|
271605
|
+
searchIndex,
|
|
271606
|
+
indexMatches: ignoreDiacritics ? searchIndex.searchIgnoringDiacritics(query2, { caseSensitive }) : searchIndex.search(query2, { caseSensitive }),
|
|
271607
|
+
doc: state.doc,
|
|
271608
|
+
positionTracker
|
|
271609
|
+
});
|
|
271610
|
+
this.storage.searchResults = resultMatches;
|
|
271611
|
+
this.storage.highlightEnabled = highlight;
|
|
271612
|
+
this.storage.activeMatchIndex = resultMatches.length > 0 ? 0 : -1;
|
|
271613
|
+
return {
|
|
271614
|
+
matches: resultMatches,
|
|
271615
|
+
activeMatchIndex: this.storage.activeMatchIndex
|
|
271616
|
+
};
|
|
271617
|
+
},
|
|
271618
|
+
clearSearchSession: () => ({ editor }) => {
|
|
271619
|
+
getPositionTracker(editor)?.untrackByType?.(SEARCH_POSITION_TRACKER_TYPE);
|
|
271620
|
+
this.storage.searchResults = [];
|
|
271621
|
+
this.storage.highlightEnabled = true;
|
|
271622
|
+
this.storage.activeMatchIndex = -1;
|
|
271623
|
+
this.storage.query = "";
|
|
271624
|
+
this.storage.caseSensitive = false;
|
|
271625
|
+
this.storage.ignoreDiacritics = false;
|
|
271626
|
+
return true;
|
|
271627
|
+
},
|
|
271628
|
+
nextSearchMatch: () => ({ state, editor }) => {
|
|
271629
|
+
const matches2 = this.storage.searchResults;
|
|
271630
|
+
if (!matches2 || matches2.length === 0)
|
|
271631
|
+
return {
|
|
271632
|
+
activeMatchIndex: -1,
|
|
271633
|
+
match: null
|
|
271634
|
+
};
|
|
271635
|
+
const nextIdx = (this.storage.activeMatchIndex + 1) % matches2.length;
|
|
271636
|
+
this.storage.activeMatchIndex = nextIdx;
|
|
271637
|
+
const match$1 = matches2[nextIdx];
|
|
271638
|
+
editor.commands.goToSearchResult(match$1);
|
|
271639
|
+
return {
|
|
271640
|
+
activeMatchIndex: nextIdx,
|
|
271641
|
+
match: match$1
|
|
271642
|
+
};
|
|
271643
|
+
},
|
|
271644
|
+
previousSearchMatch: () => ({ state, editor }) => {
|
|
271645
|
+
const matches2 = this.storage.searchResults;
|
|
271646
|
+
if (!matches2 || matches2.length === 0)
|
|
271647
|
+
return {
|
|
271648
|
+
activeMatchIndex: -1,
|
|
271649
|
+
match: null
|
|
271650
|
+
};
|
|
271651
|
+
const prevIdx = (this.storage.activeMatchIndex - 1 + matches2.length) % matches2.length;
|
|
271652
|
+
this.storage.activeMatchIndex = prevIdx;
|
|
271653
|
+
const match$1 = matches2[prevIdx];
|
|
271654
|
+
editor.commands.goToSearchResult(match$1);
|
|
271655
|
+
return {
|
|
271656
|
+
activeMatchIndex: prevIdx,
|
|
271657
|
+
match: match$1
|
|
271658
|
+
};
|
|
271659
|
+
},
|
|
271660
|
+
replaceSearchMatch: (replacement) => ({ state, dispatch, editor, commands: commands$1 }) => {
|
|
271661
|
+
const matches2 = this.storage.searchResults;
|
|
271662
|
+
const activeIdx = this.storage.activeMatchIndex;
|
|
271663
|
+
if (!matches2 || activeIdx < 0 || activeIdx >= matches2.length)
|
|
271664
|
+
return {
|
|
271665
|
+
matches: matches2 || [],
|
|
271666
|
+
activeMatchIndex: activeIdx
|
|
271667
|
+
};
|
|
271668
|
+
const match$1 = matches2[activeIdx];
|
|
271669
|
+
const from$1 = match$1.ranges[0].from;
|
|
271670
|
+
const to = match$1.ranges[match$1.ranges.length - 1].to;
|
|
271671
|
+
const tr = state.tr;
|
|
271672
|
+
if (replacement)
|
|
271673
|
+
tr.replace(from$1, to, new Slice(Fragment.from(state.schema.text(replacement)), 0, 0));
|
|
271674
|
+
else
|
|
271675
|
+
tr.replace(from$1, to, Slice.empty);
|
|
271676
|
+
if (dispatch)
|
|
271677
|
+
dispatch(tr);
|
|
271678
|
+
state.tr;
|
|
271679
|
+
const result = commands$1.setSearchSession(this.storage.query, {
|
|
271680
|
+
caseSensitive: this.storage.caseSensitive,
|
|
271681
|
+
ignoreDiacritics: this.storage.ignoreDiacritics,
|
|
271682
|
+
highlight: this.storage.highlightEnabled
|
|
271683
|
+
});
|
|
271684
|
+
if (result.matches.length > 0) {
|
|
271685
|
+
const newIdx = Math.min(activeIdx, result.matches.length - 1);
|
|
271686
|
+
this.storage.activeMatchIndex = newIdx;
|
|
271687
|
+
result.activeMatchIndex = newIdx;
|
|
271688
|
+
const nextMatch$1 = result.matches[newIdx];
|
|
271689
|
+
if (nextMatch$1)
|
|
271690
|
+
commands$1.goToSearchResult(nextMatch$1);
|
|
271691
|
+
}
|
|
271692
|
+
return result;
|
|
271693
|
+
},
|
|
271694
|
+
replaceAllSearchMatches: (replacement) => ({ state, dispatch, commands: commands$1 }) => {
|
|
271695
|
+
const matches2 = this.storage.searchResults;
|
|
271696
|
+
if (!matches2 || matches2.length === 0)
|
|
271697
|
+
return { replacedCount: 0 };
|
|
271698
|
+
const { schema } = state;
|
|
271699
|
+
const tr = state.tr;
|
|
271700
|
+
const count2 = matches2.length;
|
|
271701
|
+
for (let i4 = matches2.length - 1;i4 >= 0; i4--) {
|
|
271702
|
+
const match$1 = matches2[i4];
|
|
271703
|
+
const from$1 = match$1.ranges[0].from;
|
|
271704
|
+
const to = match$1.ranges[match$1.ranges.length - 1].to;
|
|
271705
|
+
if (replacement)
|
|
271706
|
+
tr.replace(from$1, to, new Slice(Fragment.from(schema.text(replacement)), 0, 0));
|
|
271707
|
+
else
|
|
271708
|
+
tr.replace(from$1, to, Slice.empty);
|
|
271709
|
+
}
|
|
271710
|
+
if (dispatch)
|
|
271711
|
+
dispatch(tr);
|
|
271712
|
+
commands$1.clearSearchSession();
|
|
271713
|
+
return { replacedCount: count2 };
|
|
270268
271714
|
}
|
|
270269
271715
|
};
|
|
270270
271716
|
}
|
|
@@ -270287,75 +271733,49 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270287
271733
|
name: "permissionRanges",
|
|
270288
271734
|
addStorage() {
|
|
270289
271735
|
return {
|
|
270290
|
-
|
|
270291
|
-
|
|
271736
|
+
allRanges: [],
|
|
271737
|
+
allowedRanges: [],
|
|
271738
|
+
hasAllowedRanges: false,
|
|
271739
|
+
ranges: []
|
|
270292
271740
|
};
|
|
270293
271741
|
},
|
|
270294
271742
|
addPmPlugins() {
|
|
270295
271743
|
const editor = this.editor;
|
|
270296
271744
|
const storage = this.storage;
|
|
270297
|
-
|
|
270298
|
-
const getAllowedIdentifiers = () => buildAllowedIdentifierSet(editor);
|
|
270299
|
-
const toggleEditableIfAllowed = (hasAllowedRanges) => {
|
|
270300
|
-
if (!editor || editor.isDestroyed)
|
|
270301
|
-
return;
|
|
270302
|
-
if (editor.options.documentMode !== "viewing")
|
|
270303
|
-
return;
|
|
270304
|
-
if (hasAllowedRanges && !editor.isEditable)
|
|
270305
|
-
editor.setEditable(true, false);
|
|
270306
|
-
else if (!hasAllowedRanges && editor.isEditable)
|
|
270307
|
-
editor.setEditable(false, false);
|
|
270308
|
-
};
|
|
270309
|
-
const updateEditableState = (hasAllowedRanges) => {
|
|
270310
|
-
const nextValue = Boolean(hasAllowedRanges);
|
|
270311
|
-
const previousValue = storage.hasAllowedRanges;
|
|
270312
|
-
storage.hasAllowedRanges = nextValue;
|
|
270313
|
-
if (previousValue === nextValue)
|
|
270314
|
-
return;
|
|
270315
|
-
toggleEditableIfAllowed(nextValue);
|
|
270316
|
-
};
|
|
270317
|
-
if (editor && typeof editor.setDocumentMode === "function") {
|
|
270318
|
-
originalSetDocumentMode = editor.setDocumentMode.bind(editor);
|
|
270319
|
-
editor.setDocumentMode = (mode, caller) => {
|
|
270320
|
-
originalSetDocumentMode(mode, caller);
|
|
270321
|
-
const state = editor.state;
|
|
270322
|
-
if (!state)
|
|
270323
|
-
return;
|
|
270324
|
-
const pluginState = PERMISSION_PLUGIN_KEY.getState(state);
|
|
270325
|
-
if (pluginState)
|
|
270326
|
-
toggleEditableIfAllowed(pluginState.hasAllowedRanges);
|
|
270327
|
-
};
|
|
270328
|
-
}
|
|
271745
|
+
const getAllowedIdentifiers = () => buildAllowedIdentifierSetFromEditor(editor);
|
|
270329
271746
|
return [new Plugin({
|
|
270330
271747
|
key: PERMISSION_PLUGIN_KEY,
|
|
270331
271748
|
state: {
|
|
270332
271749
|
init(_$1, state) {
|
|
270333
271750
|
const permissionTypeInfo = getPermissionTypeInfo(state.schema);
|
|
270334
|
-
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;
|
|
270335
271756
|
storage.ranges = permissionState.ranges;
|
|
270336
|
-
|
|
271757
|
+
applyEffectiveEditability(editor, { refilterRanges: false });
|
|
270337
271758
|
return permissionState;
|
|
270338
271759
|
},
|
|
270339
271760
|
apply(tr, value, _oldState, newState) {
|
|
270340
|
-
|
|
270341
|
-
|
|
270342
|
-
|
|
270343
|
-
|
|
270344
|
-
|
|
270345
|
-
|
|
270346
|
-
|
|
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 });
|
|
270347
271771
|
return permissionState;
|
|
270348
271772
|
}
|
|
270349
271773
|
},
|
|
270350
|
-
view() {
|
|
270351
|
-
return { destroy() {
|
|
270352
|
-
if (editor && originalSetDocumentMode)
|
|
270353
|
-
editor.setDocumentMode = originalSetDocumentMode;
|
|
270354
|
-
} };
|
|
270355
|
-
},
|
|
270356
271774
|
appendTransaction(transactions, oldState, newState) {
|
|
270357
271775
|
if (!transactions.some((tr$1) => tr$1.docChanged))
|
|
270358
271776
|
return null;
|
|
271777
|
+
if (transactions.some((tr$1) => tr$1.getMeta?.("permissionRangeMutation")))
|
|
271778
|
+
return null;
|
|
270359
271779
|
if (transactions.some((tr$1) => tr$1.getMeta?.(ySyncPluginKey)))
|
|
270360
271780
|
return null;
|
|
270361
271781
|
const permTypes = getPermissionTypeInfo(newState.schema);
|
|
@@ -270415,11 +271835,15 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270415
271835
|
return true;
|
|
270416
271836
|
if (tr.getMeta?.(ySyncPluginKey))
|
|
270417
271837
|
return true;
|
|
270418
|
-
if (
|
|
271838
|
+
if (tr.getMeta?.("permissionRangeMutation"))
|
|
271839
|
+
return true;
|
|
271840
|
+
if (!editor)
|
|
270419
271841
|
return true;
|
|
270420
|
-
|
|
270421
|
-
if (!pluginState?.hasAllowedRanges)
|
|
271842
|
+
if (!isReadOnlyProtectionRuntimeEnforced(editor))
|
|
270422
271843
|
return true;
|
|
271844
|
+
const activeRanges = storage.allowedRanges ?? storage.ranges;
|
|
271845
|
+
if (!activeRanges?.length)
|
|
271846
|
+
return false;
|
|
270423
271847
|
const changedRanges = collectChangedRanges(tr);
|
|
270424
271848
|
if (!changedRanges.length)
|
|
270425
271849
|
return true;
|
|
@@ -270427,12 +271851,35 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
270427
271851
|
if (!permTypes.startTypes.length || !permTypes.endTypes.length)
|
|
270428
271852
|
return true;
|
|
270429
271853
|
return changedRanges.every((range) => {
|
|
270430
|
-
return isRangeAllowed(trimPermissionTagsFromRange(state.doc, range, permTypes.allTypeSet),
|
|
271854
|
+
return isRangeAllowed(trimPermissionTagsFromRange(state.doc, range, permTypes.allTypeSet), activeRanges);
|
|
270431
271855
|
});
|
|
270432
271856
|
}
|
|
270433
271857
|
})];
|
|
270434
271858
|
}
|
|
270435
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
|
+
});
|
|
270436
271883
|
FONT_FAMILY_FALLBACKS2 = Object.freeze({
|
|
270437
271884
|
swiss: "Arial, sans-serif",
|
|
270438
271885
|
roman: "Times New Roman, serif",
|
|
@@ -279224,7 +280671,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279224
280671
|
stylesPartDescriptor = {
|
|
279225
280672
|
id: STYLES_PART_ID,
|
|
279226
280673
|
ensurePart(editor) {
|
|
279227
|
-
const converter = getConverter$
|
|
280674
|
+
const converter = getConverter$52(editor);
|
|
279228
280675
|
if (converter?.convertedXml[STYLES_PART_ID])
|
|
279229
280676
|
return converter.convertedXml[STYLES_PART_ID];
|
|
279230
280677
|
return {
|
|
@@ -279239,7 +280686,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279239
280686
|
},
|
|
279240
280687
|
afterCommit(ctx$1) {
|
|
279241
280688
|
if (ctx$1.source.startsWith("collab:remote:")) {
|
|
279242
|
-
const converter = getConverter$
|
|
280689
|
+
const converter = getConverter$52(ctx$1.editor);
|
|
279243
280690
|
if (converter)
|
|
279244
280691
|
try {
|
|
279245
280692
|
converter.translatedLinkedStyles = translateStyleDefinitions(converter.convertedXml);
|
|
@@ -279459,6 +280906,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279459
280906
|
KIND_ORDER = ["header", "footer"];
|
|
279460
280907
|
HEADER_FILE_PATTERN2 = /header(\d+)\.xml$/;
|
|
279461
280908
|
FOOTER_FILE_PATTERN2 = /footer(\d+)\.xml$/;
|
|
280909
|
+
SETTINGS_PART = SETTINGS_PART_PATH;
|
|
279462
280910
|
SPECIAL_NOTE_TYPES = new Set(["separator", "continuationSeparator"]);
|
|
279463
280911
|
RESTART_POLICY_TO_OOXML = {
|
|
279464
280912
|
continuous: "continuous",
|
|
@@ -279831,6 +281279,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279831
281279
|
this.setOptions(resolvedOptions);
|
|
279832
281280
|
this.#createConverter();
|
|
279833
281281
|
initPartsRuntime(this);
|
|
281282
|
+
this.#initProtectionState();
|
|
279834
281283
|
this.#initMedia();
|
|
279835
281284
|
const shouldMountRenderer = this.#shouldMountRenderer();
|
|
279836
281285
|
if (shouldMountRenderer) {
|
|
@@ -279855,6 +281304,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279855
281304
|
if (Boolean(this.options.markdown || this.options.html || this.options.loadFromSchema || this.options.jsonOverride || this.options.mode === "html" || this.options.mode === "text"))
|
|
279856
281305
|
this.migrateListsToV2();
|
|
279857
281306
|
this.setDocumentMode(this.options.documentMode, "init");
|
|
281307
|
+
this.#emitProtectionInit();
|
|
279858
281308
|
this.initializeCollaborationData();
|
|
279859
281309
|
if (!this.options.ydoc && !this.options.isChildEditor)
|
|
279860
281310
|
this.#initComments();
|
|
@@ -279878,18 +281328,42 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279878
281328
|
this.converter = undefined;
|
|
279879
281329
|
if (this.storage.image)
|
|
279880
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
|
+
}
|
|
279881
281337
|
this.#sourcePath = null;
|
|
279882
281338
|
this.options.initialState = null;
|
|
279883
281339
|
this.options.content = "";
|
|
279884
281340
|
this.options.fileSource = null;
|
|
279885
281341
|
this._state = undefined;
|
|
279886
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
|
+
}
|
|
279887
281360
|
#init() {
|
|
279888
281361
|
this.#createExtensionService();
|
|
279889
281362
|
this.#createCommandService();
|
|
279890
281363
|
this.#createSchema();
|
|
279891
281364
|
this.#createConverter();
|
|
279892
281365
|
initPartsRuntime(this);
|
|
281366
|
+
this.#initProtectionState();
|
|
279893
281367
|
this.#initMedia();
|
|
279894
281368
|
this.on("beforeCreate", this.options.onBeforeCreate);
|
|
279895
281369
|
this.emit("beforeCreate", { editor: this });
|
|
@@ -279933,6 +281407,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
279933
281407
|
if (Boolean(this.options.markdown || this.options.html || this.options.loadFromSchema || this.options.jsonOverride || this.options.mode === "html" || this.options.mode === "text"))
|
|
279934
281408
|
this.migrateListsToV2();
|
|
279935
281409
|
this.setDocumentMode(this.options.documentMode, "init");
|
|
281410
|
+
this.#emitProtectionInit();
|
|
279936
281411
|
if (!this.options.ydoc && !this.options.isChildEditor)
|
|
279937
281412
|
this.#initComments();
|
|
279938
281413
|
if (shouldMountRenderer) {
|
|
@@ -280131,6 +281606,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280131
281606
|
if (pm)
|
|
280132
281607
|
pm.classList.remove("view-mode");
|
|
280133
281608
|
}
|
|
281609
|
+
applyEffectiveEditability(this);
|
|
280134
281610
|
}
|
|
280135
281611
|
blur() {
|
|
280136
281612
|
this.view?.dom?.blur();
|
|
@@ -281379,7 +282855,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
281379
282855
|
EXCLUDED_PLUGIN_KEY_REF_LIST = [
|
|
281380
282856
|
TrackChangesBasePluginKey,
|
|
281381
282857
|
CommentsPluginKey,
|
|
281382
|
-
customSearchHighlightsKey,
|
|
281383
282858
|
AiPluginKey,
|
|
281384
282859
|
CustomSelectionPluginKey,
|
|
281385
282860
|
LinkedStylesPluginKey,
|
|
@@ -284119,6 +285594,16 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
284119
285594
|
event: "commentsUpdate",
|
|
284120
285595
|
handler: handleCommentsUpdate
|
|
284121
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
|
+
});
|
|
284122
285607
|
}
|
|
284123
285608
|
#setupCollaborationCursors() {
|
|
284124
285609
|
this.#remoteCursorManager?.setup();
|
|
@@ -286145,6 +287630,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
286145
287630
|
this.#errorBannerMessage = null;
|
|
286146
287631
|
}
|
|
286147
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;
|
|
286148
287636
|
if (this.#documentMode !== "viewing")
|
|
286149
287637
|
return false;
|
|
286150
287638
|
if (!!this.#editor?.storage?.permissionRanges?.hasAllowedRanges)
|
|
@@ -286317,8 +287805,8 @@ var init_zipper_YmNpPIyc_es = __esm(() => {
|
|
|
286317
287805
|
|
|
286318
287806
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
286319
287807
|
var init_super_editor_es = __esm(() => {
|
|
286320
|
-
|
|
286321
|
-
|
|
287808
|
+
init_src_sOP3agXO_es();
|
|
287809
|
+
init_SuperConverter_CMIR0kxi_es();
|
|
286322
287810
|
init_jszip_ChlR43oI_es();
|
|
286323
287811
|
init_xml_js_40FWvL78_es();
|
|
286324
287812
|
init_constants_Qqwopz80_es();
|