@superdoc-dev/cli 0.2.0-next.6 → 0.2.0-next.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1193 -267
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -408,7 +408,7 @@ var init_args = __esm(() => {
|
|
|
408
408
|
});
|
|
409
409
|
|
|
410
410
|
// ../../packages/document-api/src/types/base.ts
|
|
411
|
-
var NODE_KINDS, NODE_TYPES, BLOCK_NODE_TYPES, INLINE_NODE_TYPES;
|
|
411
|
+
var NODE_KINDS, NODE_TYPES, BLOCK_NODE_TYPES, DELETABLE_BLOCK_NODE_TYPES, INLINE_NODE_TYPES;
|
|
412
412
|
var init_base = __esm(() => {
|
|
413
413
|
NODE_KINDS = ["block", "inline"];
|
|
414
414
|
NODE_TYPES = [
|
|
@@ -438,6 +438,13 @@ var init_base = __esm(() => {
|
|
|
438
438
|
"image",
|
|
439
439
|
"sdt"
|
|
440
440
|
];
|
|
441
|
+
DELETABLE_BLOCK_NODE_TYPES = [
|
|
442
|
+
"paragraph",
|
|
443
|
+
"heading",
|
|
444
|
+
"listItem",
|
|
445
|
+
"table",
|
|
446
|
+
"sdt"
|
|
447
|
+
];
|
|
441
448
|
INLINE_NODE_TYPES = [
|
|
442
449
|
"run",
|
|
443
450
|
"bookmark",
|
|
@@ -480,7 +487,6 @@ function buildDiscoveryResult(params) {
|
|
|
480
487
|
page: params.page
|
|
481
488
|
};
|
|
482
489
|
}
|
|
483
|
-
|
|
484
490
|
// ../../packages/document-api/src/types/index.ts
|
|
485
491
|
var init_types = __esm(() => {
|
|
486
492
|
init_base();
|
|
@@ -542,6 +548,9 @@ var init_operation_definitions = __esm(() => {
|
|
|
542
548
|
"TARGET_MOVED",
|
|
543
549
|
"PLAN_CONFLICT_OVERLAP",
|
|
544
550
|
"INVALID_STEP_COMBINATION",
|
|
551
|
+
"REVISION_CHANGED_SINCE_COMPILE",
|
|
552
|
+
"INVALID_INSERTION_CONTEXT",
|
|
553
|
+
"DOCUMENT_IDENTITY_CONFLICT",
|
|
545
554
|
"CAPABILITY_UNAVAILABLE"
|
|
546
555
|
];
|
|
547
556
|
T_QUERY_MATCH = ["MATCH_NOT_FOUND", "AMBIGUOUS_MATCH", "INVALID_INPUT", "INTERNAL_ERROR"];
|
|
@@ -638,6 +647,27 @@ var init_operation_definitions = __esm(() => {
|
|
|
638
647
|
referenceDocPath: "delete.mdx",
|
|
639
648
|
referenceGroup: "core"
|
|
640
649
|
},
|
|
650
|
+
"blocks.delete": {
|
|
651
|
+
memberPath: "blocks.delete",
|
|
652
|
+
description: "Delete an entire block node (paragraph, heading, list item, table, image, or sdt) deterministically.",
|
|
653
|
+
requiresDocumentContext: true,
|
|
654
|
+
metadata: mutationOperation({
|
|
655
|
+
idempotency: "conditional",
|
|
656
|
+
supportsDryRun: true,
|
|
657
|
+
supportsTrackedMode: false,
|
|
658
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
659
|
+
throws: [
|
|
660
|
+
"TARGET_NOT_FOUND",
|
|
661
|
+
"AMBIGUOUS_TARGET",
|
|
662
|
+
"CAPABILITY_UNAVAILABLE",
|
|
663
|
+
"INVALID_TARGET",
|
|
664
|
+
"INVALID_INPUT",
|
|
665
|
+
"INTERNAL_ERROR"
|
|
666
|
+
]
|
|
667
|
+
}),
|
|
668
|
+
referenceDocPath: "blocks/delete.mdx",
|
|
669
|
+
referenceGroup: "blocks"
|
|
670
|
+
},
|
|
641
671
|
"format.apply": {
|
|
642
672
|
memberPath: "format.apply",
|
|
643
673
|
description: "Apply explicit inline style changes (bold, italic, underline, strike) to the target range using boolean patch semantics.",
|
|
@@ -1400,7 +1430,7 @@ function buildInternalContractSchemas() {
|
|
|
1400
1430
|
operations
|
|
1401
1431
|
};
|
|
1402
1432
|
}
|
|
1403
|
-
var nodeTypeValues, blockNodeTypeValues, inlineNodeTypeValues, knownTargetKindValues, SHARED_DEFS, rangeSchema, positionSchema, inlineAnchorSchema, targetKindSchema, textAddressSchema, textTargetSchema, blockNodeAddressSchema, paragraphAddressSchema, headingAddressSchema, listItemAddressSchema, inlineNodeAddressSchema, nodeAddressSchema, commentAddressSchema, trackedChangeAddressSchema, entityAddressSchema, resolvedHandleSchema, pageInfoSchema, receiptSuccessSchema, textMutationRangeSchema, textMutationResolutionSchema, textMutationSuccessSchema, matchRunSchema, matchBlockSchema, trackChangeRefSchema, createParagraphSuccessSchema, createHeadingSuccessSchema, headingLevelSchema, listsInsertSuccessSchema, listsMutateItemSuccessSchema, listsExitSuccessSchema, nodeSummarySchema, nodeInfoSchema, matchContextSchema, unknownNodeDiagnosticSchema, textSelectorSchema, nodeSelectorSchema, selectorShorthandSchema, selectSchema, findInputSchema, findItemDomainSchema, findOutputSchema, documentInfoCountsSchema, documentInfoOutlineItemSchema, documentInfoCapabilitiesSchema, documentInfoSchema, listKindSchema, listInsertPositionSchema, listItemInfoSchema, listItemDomainItemSchema, listsListResultSchema, commentInfoSchema, commentDomainItemSchema, commentsListResultSchema, trackChangeInfoSchema, trackChangeDomainItemSchema, trackChangesListResultSchema, capabilityReasonCodeSchema, capabilityReasonsSchema, capabilityFlagSchema, operationRuntimeCapabilitySchema, operationCapabilitiesSchema, formatCapabilitiesSchema, capabilitiesOutputSchema, strictEmptyObjectSchema, insertInputSchema, operationSchemas;
|
|
1433
|
+
var nodeTypeValues, blockNodeTypeValues, deletableBlockNodeTypeValues, inlineNodeTypeValues, knownTargetKindValues, SHARED_DEFS, rangeSchema, positionSchema, inlineAnchorSchema, targetKindSchema, textAddressSchema, textTargetSchema, blockNodeAddressSchema, deletableBlockNodeAddressSchema, paragraphAddressSchema, headingAddressSchema, listItemAddressSchema, inlineNodeAddressSchema, nodeAddressSchema, commentAddressSchema, trackedChangeAddressSchema, entityAddressSchema, resolvedHandleSchema, pageInfoSchema, receiptSuccessSchema, textMutationRangeSchema, textMutationResolutionSchema, textMutationSuccessSchema, matchRunSchema, matchBlockSchema, trackChangeRefSchema, createParagraphSuccessSchema, createHeadingSuccessSchema, headingLevelSchema, listsInsertSuccessSchema, listsMutateItemSuccessSchema, listsExitSuccessSchema, nodeSummarySchema, nodeInfoSchema, matchContextSchema, unknownNodeDiagnosticSchema, textSelectorSchema, nodeSelectorSchema, selectorShorthandSchema, selectSchema, findInputSchema, findItemDomainSchema, findOutputSchema, documentInfoCountsSchema, documentInfoOutlineItemSchema, documentInfoCapabilitiesSchema, documentInfoSchema, listKindSchema, listInsertPositionSchema, listItemInfoSchema, listItemDomainItemSchema, listsListResultSchema, commentInfoSchema, commentDomainItemSchema, commentsListResultSchema, trackChangeInfoSchema, trackChangeDomainItemSchema, trackChangesListResultSchema, capabilityReasonCodeSchema, capabilityReasonsSchema, capabilityFlagSchema, operationRuntimeCapabilitySchema, operationCapabilitiesSchema, formatCapabilitiesSchema, capabilitiesOutputSchema, strictEmptyObjectSchema, insertInputSchema, operationSchemas;
|
|
1404
1434
|
var init_schemas = __esm(() => {
|
|
1405
1435
|
init_command_catalog();
|
|
1406
1436
|
init_types2();
|
|
@@ -1409,6 +1439,7 @@ var init_schemas = __esm(() => {
|
|
|
1409
1439
|
init_format();
|
|
1410
1440
|
nodeTypeValues = NODE_TYPES;
|
|
1411
1441
|
blockNodeTypeValues = BLOCK_NODE_TYPES;
|
|
1442
|
+
deletableBlockNodeTypeValues = DELETABLE_BLOCK_NODE_TYPES;
|
|
1412
1443
|
inlineNodeTypeValues = INLINE_NODE_TYPES;
|
|
1413
1444
|
knownTargetKindValues = [
|
|
1414
1445
|
"text",
|
|
@@ -1456,6 +1487,11 @@ var init_schemas = __esm(() => {
|
|
|
1456
1487
|
nodeType: { enum: [...blockNodeTypeValues] },
|
|
1457
1488
|
nodeId: { type: "string" }
|
|
1458
1489
|
}, ["kind", "nodeType", "nodeId"]),
|
|
1490
|
+
DeletableBlockNodeAddress: objectSchema({
|
|
1491
|
+
kind: { const: "block" },
|
|
1492
|
+
nodeType: { enum: [...deletableBlockNodeTypeValues] },
|
|
1493
|
+
nodeId: { type: "string" }
|
|
1494
|
+
}, ["kind", "nodeType", "nodeId"]),
|
|
1459
1495
|
ParagraphAddress: objectSchema({
|
|
1460
1496
|
kind: { const: "block" },
|
|
1461
1497
|
nodeType: { const: "paragraph" },
|
|
@@ -1562,6 +1598,7 @@ var init_schemas = __esm(() => {
|
|
|
1562
1598
|
textAddressSchema = ref("TextAddress");
|
|
1563
1599
|
textTargetSchema = ref("TextTarget");
|
|
1564
1600
|
blockNodeAddressSchema = ref("BlockNodeAddress");
|
|
1601
|
+
deletableBlockNodeAddressSchema = ref("DeletableBlockNodeAddress");
|
|
1565
1602
|
paragraphAddressSchema = ref("ParagraphAddress");
|
|
1566
1603
|
headingAddressSchema = ref("HeadingAddress");
|
|
1567
1604
|
listItemAddressSchema = ref("ListItemAddress");
|
|
@@ -1770,6 +1807,7 @@ var init_schemas = __esm(() => {
|
|
|
1770
1807
|
capabilityReasonCodeSchema = {
|
|
1771
1808
|
enum: [
|
|
1772
1809
|
"COMMAND_UNAVAILABLE",
|
|
1810
|
+
"HELPER_UNAVAILABLE",
|
|
1773
1811
|
"OPERATION_UNAVAILABLE",
|
|
1774
1812
|
"TRACKED_MODE_UNAVAILABLE",
|
|
1775
1813
|
"DRY_RUN_UNAVAILABLE",
|
|
@@ -1906,6 +1944,20 @@ var init_schemas = __esm(() => {
|
|
|
1906
1944
|
success: textMutationSuccessSchema,
|
|
1907
1945
|
failure: textMutationFailureSchemaFor("format.align")
|
|
1908
1946
|
},
|
|
1947
|
+
"blocks.delete": {
|
|
1948
|
+
input: objectSchema({
|
|
1949
|
+
target: deletableBlockNodeAddressSchema
|
|
1950
|
+
}, ["target"]),
|
|
1951
|
+
output: objectSchema({
|
|
1952
|
+
success: { const: true },
|
|
1953
|
+
deleted: deletableBlockNodeAddressSchema
|
|
1954
|
+
}, ["success", "deleted"]),
|
|
1955
|
+
success: objectSchema({
|
|
1956
|
+
success: { const: true },
|
|
1957
|
+
deleted: deletableBlockNodeAddressSchema
|
|
1958
|
+
}, ["success", "deleted"]),
|
|
1959
|
+
failure: preApplyFailureResultSchemaFor("blocks.delete")
|
|
1960
|
+
},
|
|
1909
1961
|
"create.paragraph": {
|
|
1910
1962
|
input: objectSchema({
|
|
1911
1963
|
at: {
|
|
@@ -2178,6 +2230,11 @@ var init_reference_doc_map = __esm(() => {
|
|
|
2178
2230
|
description: "Primary read and write operations.",
|
|
2179
2231
|
pagePath: "core/index.mdx"
|
|
2180
2232
|
},
|
|
2233
|
+
blocks: {
|
|
2234
|
+
title: "Blocks",
|
|
2235
|
+
description: "Block-level structural operations.",
|
|
2236
|
+
pagePath: "blocks/index.mdx"
|
|
2237
|
+
},
|
|
2181
2238
|
capabilities: {
|
|
2182
2239
|
title: "Capabilities",
|
|
2183
2240
|
description: "Runtime support discovery for capability-aware branching.",
|
|
@@ -2246,6 +2303,7 @@ var CAPABILITY_REASON_CODES;
|
|
|
2246
2303
|
var init_capabilities = __esm(() => {
|
|
2247
2304
|
CAPABILITY_REASON_CODES = [
|
|
2248
2305
|
"COMMAND_UNAVAILABLE",
|
|
2306
|
+
"HELPER_UNAVAILABLE",
|
|
2249
2307
|
"OPERATION_UNAVAILABLE",
|
|
2250
2308
|
"TRACKED_MODE_UNAVAILABLE",
|
|
2251
2309
|
"DRY_RUN_UNAVAILABLE",
|
|
@@ -2605,6 +2663,51 @@ var init_create = __esm(() => {
|
|
|
2605
2663
|
init_errors2();
|
|
2606
2664
|
});
|
|
2607
2665
|
|
|
2666
|
+
// ../../packages/document-api/src/blocks/blocks.ts
|
|
2667
|
+
function validateBlocksDeleteInput(input) {
|
|
2668
|
+
if (!input || typeof input !== "object") {
|
|
2669
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.delete requires an input object.", {
|
|
2670
|
+
fields: ["input"]
|
|
2671
|
+
});
|
|
2672
|
+
}
|
|
2673
|
+
if (!input.target) {
|
|
2674
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.delete requires a target.", {
|
|
2675
|
+
fields: ["target"]
|
|
2676
|
+
});
|
|
2677
|
+
}
|
|
2678
|
+
if (input.target.kind !== "block") {
|
|
2679
|
+
throw new DocumentApiValidationError("INVALID_INPUT", 'blocks.delete target must have kind "block".', {
|
|
2680
|
+
fields: ["target.kind"]
|
|
2681
|
+
});
|
|
2682
|
+
}
|
|
2683
|
+
if (!input.target.nodeId || typeof input.target.nodeId !== "string") {
|
|
2684
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.delete target requires a nodeId string.", {
|
|
2685
|
+
fields: ["target.nodeId"]
|
|
2686
|
+
});
|
|
2687
|
+
}
|
|
2688
|
+
const { nodeType } = input.target;
|
|
2689
|
+
if (REJECTED_DELETE_NODE_TYPES.has(nodeType)) {
|
|
2690
|
+
throw new DocumentApiValidationError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { fields: ["target.nodeType"], nodeType });
|
|
2691
|
+
}
|
|
2692
|
+
if (!SUPPORTED_DELETE_NODE_TYPES.has(nodeType)) {
|
|
2693
|
+
throw new DocumentApiValidationError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, {
|
|
2694
|
+
fields: ["target.nodeType"],
|
|
2695
|
+
nodeType
|
|
2696
|
+
});
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
function executeBlocksDelete(adapter, input, options) {
|
|
2700
|
+
validateBlocksDeleteInput(input);
|
|
2701
|
+
return adapter.delete(input, normalizeMutationOptions(options));
|
|
2702
|
+
}
|
|
2703
|
+
var SUPPORTED_DELETE_NODE_TYPES, REJECTED_DELETE_NODE_TYPES;
|
|
2704
|
+
var init_blocks = __esm(() => {
|
|
2705
|
+
init_base();
|
|
2706
|
+
init_errors2();
|
|
2707
|
+
SUPPORTED_DELETE_NODE_TYPES = new Set(DELETABLE_BLOCK_NODE_TYPES);
|
|
2708
|
+
REJECTED_DELETE_NODE_TYPES = new Set(["tableRow", "tableCell"]);
|
|
2709
|
+
});
|
|
2710
|
+
|
|
2608
2711
|
// ../../packages/document-api/src/track-changes/track-changes.ts
|
|
2609
2712
|
function executeTrackChangesList(adapter, input) {
|
|
2610
2713
|
return adapter.list(input);
|
|
@@ -2657,6 +2760,7 @@ function buildDispatchTable(api) {
|
|
|
2657
2760
|
insert: (input, options) => api.insert(input, options),
|
|
2658
2761
|
replace: (input, options) => api.replace(input, options),
|
|
2659
2762
|
delete: (input, options) => api.delete(input, options),
|
|
2763
|
+
"blocks.delete": (input, options) => api.blocks.delete(input, options),
|
|
2660
2764
|
"format.apply": (input, options) => api.format.apply(input, options),
|
|
2661
2765
|
"format.fontSize": (input, options) => api.format.fontSize(input, options),
|
|
2662
2766
|
"format.fontFamily": (input, options) => api.format.fontFamily(input, options),
|
|
@@ -2780,6 +2884,11 @@ function createDocumentApi(adapters) {
|
|
|
2780
2884
|
return executeTrackChangesDecide(adapters.trackChanges, input, options);
|
|
2781
2885
|
}
|
|
2782
2886
|
},
|
|
2887
|
+
blocks: {
|
|
2888
|
+
delete(input, options) {
|
|
2889
|
+
return executeBlocksDelete(adapters.blocks, input, options);
|
|
2890
|
+
}
|
|
2891
|
+
},
|
|
2783
2892
|
create: {
|
|
2784
2893
|
paragraph(input, options) {
|
|
2785
2894
|
return executeCreateParagraph(adapters.create, input, options);
|
|
@@ -2847,6 +2956,7 @@ var init_src = __esm(() => {
|
|
|
2847
2956
|
init_lists();
|
|
2848
2957
|
init_replace();
|
|
2849
2958
|
init_create();
|
|
2959
|
+
init_blocks();
|
|
2850
2960
|
init_track_changes();
|
|
2851
2961
|
init_capabilities();
|
|
2852
2962
|
init_format();
|
|
@@ -3481,6 +3591,7 @@ var init_operation_hints = __esm(() => {
|
|
|
3481
3591
|
insert: "inserted text",
|
|
3482
3592
|
replace: "replaced text",
|
|
3483
3593
|
delete: "deleted text",
|
|
3594
|
+
"blocks.delete": "deleted block",
|
|
3484
3595
|
"format.apply": "applied style",
|
|
3485
3596
|
"format.fontSize": "set font size",
|
|
3486
3597
|
"format.fontFamily": "set font family",
|
|
@@ -3518,6 +3629,7 @@ var init_operation_hints = __esm(() => {
|
|
|
3518
3629
|
insert: "mutationReceipt",
|
|
3519
3630
|
replace: "mutationReceipt",
|
|
3520
3631
|
delete: "mutationReceipt",
|
|
3632
|
+
"blocks.delete": "plain",
|
|
3521
3633
|
"format.apply": "mutationReceipt",
|
|
3522
3634
|
"format.fontSize": "mutationReceipt",
|
|
3523
3635
|
"format.fontFamily": "mutationReceipt",
|
|
@@ -3555,6 +3667,7 @@ var init_operation_hints = __esm(() => {
|
|
|
3555
3667
|
insert: null,
|
|
3556
3668
|
replace: null,
|
|
3557
3669
|
delete: null,
|
|
3670
|
+
"blocks.delete": "result",
|
|
3558
3671
|
"format.apply": null,
|
|
3559
3672
|
"format.fontSize": null,
|
|
3560
3673
|
"format.fontFamily": null,
|
|
@@ -3602,6 +3715,7 @@ var init_operation_hints = __esm(() => {
|
|
|
3602
3715
|
insert: "textMutation",
|
|
3603
3716
|
replace: "textMutation",
|
|
3604
3717
|
delete: "textMutation",
|
|
3718
|
+
"blocks.delete": "blocks",
|
|
3605
3719
|
"format.apply": "textMutation",
|
|
3606
3720
|
"format.fontSize": "textMutation",
|
|
3607
3721
|
"format.fontFamily": "textMutation",
|
|
@@ -87393,9 +87507,9 @@ var init_remark_gfm_RDxetNVS_es = __esm(() => {
|
|
|
87393
87507
|
emptyOptions4 = {};
|
|
87394
87508
|
});
|
|
87395
87509
|
|
|
87396
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
87397
|
-
var
|
|
87398
|
-
__export(
|
|
87510
|
+
// ../../packages/superdoc/dist/chunks/src-0UjFcd91.es.js
|
|
87511
|
+
var exports_src_0UjFcd91_es = {};
|
|
87512
|
+
__export(exports_src_0UjFcd91_es, {
|
|
87399
87513
|
zt: () => defineMark,
|
|
87400
87514
|
z: () => cM,
|
|
87401
87515
|
yt: () => removeAwarenessStates,
|
|
@@ -94586,6 +94700,31 @@ function executeCreateHeading2(adapter, input2, options) {
|
|
|
94586
94700
|
validateCreateLocation2(normalized.at, "create.heading");
|
|
94587
94701
|
return adapter.heading(normalized, normalizeMutationOptions2(options));
|
|
94588
94702
|
}
|
|
94703
|
+
function validateBlocksDeleteInput2(input2) {
|
|
94704
|
+
if (!input2 || typeof input2 !== "object")
|
|
94705
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.delete requires an input object.", { fields: ["input"] });
|
|
94706
|
+
if (!input2.target)
|
|
94707
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.delete requires a target.", { fields: ["target"] });
|
|
94708
|
+
if (input2.target.kind !== "block")
|
|
94709
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", 'blocks.delete target must have kind "block".', { fields: ["target.kind"] });
|
|
94710
|
+
if (!input2.target.nodeId || typeof input2.target.nodeId !== "string")
|
|
94711
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.delete target requires a nodeId string.", { fields: ["target.nodeId"] });
|
|
94712
|
+
const { nodeType } = input2.target;
|
|
94713
|
+
if (REJECTED_DELETE_NODE_TYPES2.has(nodeType))
|
|
94714
|
+
throw new DocumentApiValidationError2("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, {
|
|
94715
|
+
fields: ["target.nodeType"],
|
|
94716
|
+
nodeType
|
|
94717
|
+
});
|
|
94718
|
+
if (!SUPPORTED_DELETE_NODE_TYPES2.has(nodeType))
|
|
94719
|
+
throw new DocumentApiValidationError2("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, {
|
|
94720
|
+
fields: ["target.nodeType"],
|
|
94721
|
+
nodeType
|
|
94722
|
+
});
|
|
94723
|
+
}
|
|
94724
|
+
function executeBlocksDelete2(adapter, input2, options) {
|
|
94725
|
+
validateBlocksDeleteInput2(input2);
|
|
94726
|
+
return adapter.delete(input2, normalizeMutationOptions2(options));
|
|
94727
|
+
}
|
|
94589
94728
|
function executeTrackChangesList2(adapter, input2) {
|
|
94590
94729
|
return adapter.list(input2);
|
|
94591
94730
|
}
|
|
@@ -94635,6 +94774,7 @@ function buildDispatchTable2(api) {
|
|
|
94635
94774
|
insert: (input2, options) => api.insert(input2, options),
|
|
94636
94775
|
replace: (input2, options) => api.replace(input2, options),
|
|
94637
94776
|
delete: (input2, options) => api.delete(input2, options),
|
|
94777
|
+
"blocks.delete": (input2, options) => api.blocks.delete(input2, options),
|
|
94638
94778
|
"format.apply": (input2, options) => api.format.apply(input2, options),
|
|
94639
94779
|
"format.fontSize": (input2, options) => api.format.fontSize(input2, options),
|
|
94640
94780
|
"format.fontFamily": (input2, options) => api.format.fontFamily(input2, options),
|
|
@@ -94760,6 +94900,9 @@ function createDocumentApi2(adapters) {
|
|
|
94760
94900
|
return executeTrackChangesDecide2(adapters.trackChanges, input2, options);
|
|
94761
94901
|
}
|
|
94762
94902
|
},
|
|
94903
|
+
blocks: { delete(input2, options) {
|
|
94904
|
+
return executeBlocksDelete2(adapters.blocks, input2, options);
|
|
94905
|
+
} },
|
|
94763
94906
|
create: {
|
|
94764
94907
|
paragraph(input2, options) {
|
|
94765
94908
|
return executeCreateParagraph2(adapters.create, input2, options);
|
|
@@ -94825,6 +94968,12 @@ function hasAllCommands(editor, operationId) {
|
|
|
94825
94968
|
return true;
|
|
94826
94969
|
return required.every((command$1) => hasCommand(editor, command$1));
|
|
94827
94970
|
}
|
|
94971
|
+
function hasRequiredHelpers(editor, operationId) {
|
|
94972
|
+
const check = REQUIRED_HELPERS[operationId];
|
|
94973
|
+
if (!check)
|
|
94974
|
+
return true;
|
|
94975
|
+
return check(editor);
|
|
94976
|
+
}
|
|
94828
94977
|
function hasMarkCapability(editor, markName) {
|
|
94829
94978
|
return Boolean(editor.schema?.marks?.[markName]);
|
|
94830
94979
|
}
|
|
@@ -94866,7 +95015,7 @@ function isOperationAvailable(editor, operationId) {
|
|
|
94866
95015
|
return MARK_KEYS2.some((key$1) => hasMarkCapability(editor, STYLE_MARK_SCHEMA_NAMES[key$1] ?? key$1));
|
|
94867
95016
|
if (INLINE_FORMAT_OPERATIONS.has(operationId))
|
|
94868
95017
|
return hasAllCommands(editor, operationId) && hasMarkCapability(editor, "textStyle");
|
|
94869
|
-
return hasAllCommands(editor, operationId);
|
|
95018
|
+
return hasAllCommands(editor, operationId) && hasRequiredHelpers(editor, operationId);
|
|
94870
95019
|
}
|
|
94871
95020
|
function isCommandBackedAvailability(operationId) {
|
|
94872
95021
|
return !isMarkBackedOperation(operationId) && !INLINE_FORMAT_OPERATIONS.has(operationId);
|
|
@@ -94880,8 +95029,12 @@ function buildOperationCapabilities(editor) {
|
|
|
94880
95029
|
const dryRun = metadata.supportsDryRun && available;
|
|
94881
95030
|
const reasons = [];
|
|
94882
95031
|
if (!available) {
|
|
94883
|
-
if (isCommandBackedAvailability(operationId))
|
|
94884
|
-
|
|
95032
|
+
if (isCommandBackedAvailability(operationId)) {
|
|
95033
|
+
if (!hasAllCommands(editor, operationId))
|
|
95034
|
+
pushReason(reasons, "COMMAND_UNAVAILABLE");
|
|
95035
|
+
if (!hasRequiredHelpers(editor, operationId))
|
|
95036
|
+
pushReason(reasons, "HELPER_UNAVAILABLE");
|
|
95037
|
+
}
|
|
94885
95038
|
pushReason(reasons, "OPERATION_UNAVAILABLE");
|
|
94886
95039
|
}
|
|
94887
95040
|
if (metadata.supportsTrackedMode && !tracked)
|
|
@@ -95391,7 +95544,8 @@ function buildBlockIndex(editor) {
|
|
|
95391
95544
|
});
|
|
95392
95545
|
return {
|
|
95393
95546
|
candidates,
|
|
95394
|
-
byId
|
|
95547
|
+
byId,
|
|
95548
|
+
ambiguous
|
|
95395
95549
|
};
|
|
95396
95550
|
}
|
|
95397
95551
|
function findBlockById(index2, address2) {
|
|
@@ -95399,6 +95553,15 @@ function findBlockById(index2, address2) {
|
|
|
95399
95553
|
return;
|
|
95400
95554
|
return index2.byId.get(`${address2.nodeType}:${address2.nodeId}`);
|
|
95401
95555
|
}
|
|
95556
|
+
function findBlockByIdStrict(index2, address2) {
|
|
95557
|
+
const key$1 = `${address2.nodeType}:${address2.nodeId}`;
|
|
95558
|
+
if (index2.ambiguous.has(key$1))
|
|
95559
|
+
throw new DocumentApiAdapterError("AMBIGUOUS_TARGET", `Multiple blocks share key "${key$1}".`, { target: address2 });
|
|
95560
|
+
const candidate = index2.byId.get(key$1);
|
|
95561
|
+
if (!candidate)
|
|
95562
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Block "${key$1}" was not found.`, { target: address2 });
|
|
95563
|
+
return candidate;
|
|
95564
|
+
}
|
|
95402
95565
|
function isTextBlockCandidate(candidate) {
|
|
95403
95566
|
const node3 = candidate.node;
|
|
95404
95567
|
return Boolean(node3?.inlineContent || node3?.isTextblock);
|
|
@@ -95479,9 +95642,11 @@ function checkRevision(editor, expectedRevision) {
|
|
|
95479
95642
|
return;
|
|
95480
95643
|
const current = getRevision(editor);
|
|
95481
95644
|
if (expectedRevision !== current)
|
|
95482
|
-
throw new PlanError("REVISION_MISMATCH", `REVISION_MISMATCH — expected revision "${expectedRevision}" but document is at "${current}"
|
|
95645
|
+
throw new PlanError("REVISION_MISMATCH", `REVISION_MISMATCH — expected revision "${expectedRevision}" but document is at "${current}". Re-run query.match to obtain a fresh ref.`, undefined, {
|
|
95483
95646
|
expectedRevision,
|
|
95484
|
-
currentRevision: current
|
|
95647
|
+
currentRevision: current,
|
|
95648
|
+
refStability: "ephemeral",
|
|
95649
|
+
remediation: "Re-run query.match() to obtain a fresh ref valid for the current revision."
|
|
95485
95650
|
});
|
|
95486
95651
|
}
|
|
95487
95652
|
function resolveSegmentPosition(targetOffset, segmentStart, segmentLength, docFrom, docTo) {
|
|
@@ -95737,7 +95902,9 @@ function captureRunsInRange(editor, blockPos, from$12, to) {
|
|
|
95737
95902
|
return;
|
|
95738
95903
|
}
|
|
95739
95904
|
if (node3.isLeaf) {
|
|
95905
|
+
const start$1 = offset$1;
|
|
95740
95906
|
offset$1 += 1;
|
|
95907
|
+
maybePushRun(start$1, offset$1, []);
|
|
95741
95908
|
return;
|
|
95742
95909
|
}
|
|
95743
95910
|
let isFirstChild = true;
|
|
@@ -96175,12 +96342,69 @@ function executeBlockSelector(index2, query2, diagnostics) {
|
|
|
96175
96342
|
function isAssertStep(step) {
|
|
96176
96343
|
return step.op === "assert";
|
|
96177
96344
|
}
|
|
96345
|
+
function isCreateOp(op) {
|
|
96346
|
+
return op === "create.heading" || op === "create.paragraph";
|
|
96347
|
+
}
|
|
96178
96348
|
function isSelectWhere(where) {
|
|
96179
96349
|
return where.by === "select";
|
|
96180
96350
|
}
|
|
96181
96351
|
function isRefWhere(where) {
|
|
96182
96352
|
return where.by === "ref";
|
|
96183
96353
|
}
|
|
96354
|
+
function validateCreateStepPosition(step) {
|
|
96355
|
+
const args$1 = step.args;
|
|
96356
|
+
if (args$1.position === undefined || args$1.position === null) {
|
|
96357
|
+
args$1.position = "after";
|
|
96358
|
+
return;
|
|
96359
|
+
}
|
|
96360
|
+
if (!VALID_CREATE_POSITIONS.includes(args$1.position))
|
|
96361
|
+
throw planError("INVALID_INPUT", `create step requires args.position to be 'before' or 'after'`, step.id, {
|
|
96362
|
+
receivedPosition: args$1.position,
|
|
96363
|
+
allowedValues: [...VALID_CREATE_POSITIONS],
|
|
96364
|
+
default: "after"
|
|
96365
|
+
});
|
|
96366
|
+
}
|
|
96367
|
+
function resolveCreateAnchorFromTargets(targets, position4, stepId) {
|
|
96368
|
+
const target = targets[0];
|
|
96369
|
+
if (!target)
|
|
96370
|
+
throw planError("INVALID_INPUT", "create step has no resolved targets", stepId);
|
|
96371
|
+
if (target.kind === "range")
|
|
96372
|
+
return target.blockId;
|
|
96373
|
+
const segments = target.segments;
|
|
96374
|
+
if (!segments.length)
|
|
96375
|
+
throw planError("INVALID_INPUT", "span target has no segments", stepId);
|
|
96376
|
+
return position4 === "before" ? segments[0].blockId : segments[segments.length - 1].blockId;
|
|
96377
|
+
}
|
|
96378
|
+
function validateInsertionContext(editor, index2, step, stepIndex, anchorBlockId, position4) {
|
|
96379
|
+
const candidate = index2.candidates.find((c$3) => c$3.nodeId === anchorBlockId);
|
|
96380
|
+
if (!candidate)
|
|
96381
|
+
return;
|
|
96382
|
+
const paragraphType = editor.state.schema?.nodes?.paragraph;
|
|
96383
|
+
if (!paragraphType)
|
|
96384
|
+
return;
|
|
96385
|
+
const resolvedPos = editor.state.doc.resolve(candidate.pos);
|
|
96386
|
+
const parent = resolvedPos.parent;
|
|
96387
|
+
const anchorIndex = resolvedPos.index();
|
|
96388
|
+
const insertionIndex = position4 === "before" ? anchorIndex : anchorIndex + 1;
|
|
96389
|
+
if (!(typeof parent.canReplaceWith === "function" ? parent.canReplaceWith(insertionIndex, insertionIndex, paragraphType) : parent.type.contentMatch.matchType(paragraphType))) {
|
|
96390
|
+
const allowedChildTypes = [];
|
|
96391
|
+
const match$1 = parent.type.contentMatch;
|
|
96392
|
+
for (const nodeType of Object.values(editor.state.schema.nodes))
|
|
96393
|
+
if (match$1.matchType(nodeType))
|
|
96394
|
+
allowedChildTypes.push(nodeType.name);
|
|
96395
|
+
throw planError("INVALID_INSERTION_CONTEXT", `Cannot create ${step.op} inside ${parent.type.name}`, step.id, {
|
|
96396
|
+
stepIndex,
|
|
96397
|
+
stepId: step.id,
|
|
96398
|
+
operation: step.op,
|
|
96399
|
+
anchorBlockId,
|
|
96400
|
+
parentType: parent.type.name,
|
|
96401
|
+
allowedChildTypes,
|
|
96402
|
+
insertionIndex,
|
|
96403
|
+
requestedChildType: "paragraph",
|
|
96404
|
+
requestedSemanticType: step.op === "create.heading" ? "heading" : "paragraph"
|
|
96405
|
+
});
|
|
96406
|
+
}
|
|
96407
|
+
}
|
|
96184
96408
|
function isV3Ref(payload) {
|
|
96185
96409
|
return typeof payload === "object" && payload !== null && "v" in payload && payload.v === 3;
|
|
96186
96410
|
}
|
|
@@ -96415,9 +96639,13 @@ function decodeTextRefPayload(encoded, stepId) {
|
|
|
96415
96639
|
function resolveV3TextRef(editor, index2, step, refData) {
|
|
96416
96640
|
const currentRevision = getRevision(editor);
|
|
96417
96641
|
if (refData.rev !== currentRevision)
|
|
96418
|
-
throw planError("REVISION_MISMATCH", `
|
|
96642
|
+
throw planError("REVISION_MISMATCH", `Text ref is ephemeral and revision-scoped. Re-run query.match to obtain a fresh handle.ref for revision ${currentRevision}.`, step.id, {
|
|
96419
96643
|
refRevision: refData.rev,
|
|
96420
|
-
currentRevision
|
|
96644
|
+
currentRevision,
|
|
96645
|
+
refStability: "ephemeral",
|
|
96646
|
+
refScope: refData.scope,
|
|
96647
|
+
blockId: refData.segments?.[0]?.blockId,
|
|
96648
|
+
remediation: `Re-run query.match() to obtain a fresh ref valid for the current revision.`
|
|
96421
96649
|
});
|
|
96422
96650
|
if (!refData.segments?.length)
|
|
96423
96651
|
return [];
|
|
@@ -96508,7 +96736,11 @@ function resolveStepTargets(editor, index2, step) {
|
|
|
96508
96736
|
});
|
|
96509
96737
|
if (refWhere) {
|
|
96510
96738
|
if (targets.length === 0)
|
|
96511
|
-
throw planError("MATCH_NOT_FOUND", `ref "${refWhere.ref}" did not resolve to any targets`, step.id
|
|
96739
|
+
throw planError("MATCH_NOT_FOUND", `ref "${refWhere.ref}" did not resolve to any targets`, step.id, {
|
|
96740
|
+
selectorType: "ref",
|
|
96741
|
+
selectorPattern: refWhere.ref,
|
|
96742
|
+
candidateCount: 0
|
|
96743
|
+
});
|
|
96512
96744
|
if (targets.length > 1)
|
|
96513
96745
|
throw planError("AMBIGUOUS_MATCH", `ref "${refWhere.ref}" resolved to ${targets.length} targets`, step.id, { matchCount: targets.length });
|
|
96514
96746
|
return targets;
|
|
@@ -96520,6 +96752,18 @@ function resolveStepTargets(editor, index2, step) {
|
|
|
96520
96752
|
targets = [targets[0]];
|
|
96521
96753
|
return targets;
|
|
96522
96754
|
}
|
|
96755
|
+
function buildMatchNotFoundDetails(step) {
|
|
96756
|
+
const where = step.where;
|
|
96757
|
+
const select2 = "select" in where ? where.select : undefined;
|
|
96758
|
+
const within$1 = "within" in where ? where.within : undefined;
|
|
96759
|
+
return {
|
|
96760
|
+
selectorType: select2?.type ?? "unknown",
|
|
96761
|
+
selectorPattern: select2?.pattern ?? "",
|
|
96762
|
+
selectorMode: select2?.mode ?? "contains",
|
|
96763
|
+
searchScope: within$1?.blockId ?? "document",
|
|
96764
|
+
candidateCount: 0
|
|
96765
|
+
};
|
|
96766
|
+
}
|
|
96523
96767
|
function applyCardinalityCheck(step, targets) {
|
|
96524
96768
|
const where = step.where;
|
|
96525
96769
|
if (!("require" in where) || where.require === undefined)
|
|
@@ -96527,62 +96771,131 @@ function applyCardinalityCheck(step, targets) {
|
|
|
96527
96771
|
const require$1 = where.require;
|
|
96528
96772
|
if (require$1 === "first") {
|
|
96529
96773
|
if (targets.length === 0)
|
|
96530
|
-
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges", step.id);
|
|
96774
|
+
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges", step.id, buildMatchNotFoundDetails(step));
|
|
96531
96775
|
} else if (require$1 === "exactlyOne") {
|
|
96532
96776
|
if (targets.length === 0)
|
|
96533
|
-
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges", step.id);
|
|
96777
|
+
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges", step.id, buildMatchNotFoundDetails(step));
|
|
96534
96778
|
if (targets.length > 1)
|
|
96535
96779
|
throw planError("AMBIGUOUS_MATCH", `selector matched ${targets.length} ranges, expected exactly one`, step.id, { matchCount: targets.length });
|
|
96536
96780
|
} else if (require$1 === "all") {
|
|
96537
96781
|
if (targets.length === 0)
|
|
96538
|
-
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges", step.id);
|
|
96539
|
-
}
|
|
96540
|
-
}
|
|
96541
|
-
function
|
|
96542
|
-
|
|
96543
|
-
|
|
96544
|
-
|
|
96545
|
-
|
|
96546
|
-
|
|
96547
|
-
|
|
96548
|
-
|
|
96549
|
-
|
|
96550
|
-
|
|
96551
|
-
|
|
96552
|
-
|
|
96553
|
-
|
|
96554
|
-
|
|
96555
|
-
|
|
96556
|
-
|
|
96782
|
+
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges", step.id, buildMatchNotFoundDetails(step));
|
|
96783
|
+
}
|
|
96784
|
+
}
|
|
96785
|
+
function normalizeOpForMatrix(op) {
|
|
96786
|
+
return op.startsWith("create.") ? "create.*" : op;
|
|
96787
|
+
}
|
|
96788
|
+
function classifyOverlap(stepA, stepB) {
|
|
96789
|
+
const rangesA = extractBlockRanges(stepA);
|
|
96790
|
+
const rangesB = extractBlockRanges(stepB);
|
|
96791
|
+
const opA = normalizeOpForMatrix(stepA.step.op);
|
|
96792
|
+
const opB = normalizeOpForMatrix(stepB.step.op);
|
|
96793
|
+
const isCreateA = opA === "create.*";
|
|
96794
|
+
const isCreateB = opB === "create.*";
|
|
96795
|
+
for (const [blockId, aEntries] of rangesA) {
|
|
96796
|
+
const bEntries = rangesB.get(blockId);
|
|
96797
|
+
if (!bEntries)
|
|
96798
|
+
continue;
|
|
96799
|
+
for (const a2 of aEntries)
|
|
96800
|
+
for (const b$1 of bEntries) {
|
|
96801
|
+
if (isCreateA || isCreateB)
|
|
96802
|
+
return {
|
|
96803
|
+
overlapClass: "same_block",
|
|
96804
|
+
blockId,
|
|
96805
|
+
rangeA: a2,
|
|
96806
|
+
rangeB: b$1
|
|
96807
|
+
};
|
|
96808
|
+
if (a2.to <= b$1.from || b$1.to <= a2.from)
|
|
96809
|
+
continue;
|
|
96810
|
+
if (a2.from === b$1.from && a2.to === b$1.to)
|
|
96811
|
+
return {
|
|
96812
|
+
overlapClass: "same_target",
|
|
96813
|
+
blockId,
|
|
96814
|
+
rangeA: a2,
|
|
96815
|
+
rangeB: b$1
|
|
96816
|
+
};
|
|
96817
|
+
return {
|
|
96818
|
+
overlapClass: "overlapping",
|
|
96557
96819
|
blockId,
|
|
96558
|
-
rangeA:
|
|
96559
|
-
|
|
96560
|
-
|
|
96561
|
-
|
|
96562
|
-
rangeB: {
|
|
96563
|
-
from: curr.from,
|
|
96564
|
-
to: curr.to
|
|
96565
|
-
}
|
|
96566
|
-
});
|
|
96567
|
-
}
|
|
96820
|
+
rangeA: a2,
|
|
96821
|
+
rangeB: b$1
|
|
96822
|
+
};
|
|
96823
|
+
}
|
|
96568
96824
|
}
|
|
96569
96825
|
}
|
|
96570
|
-
function
|
|
96571
|
-
|
|
96572
|
-
|
|
96573
|
-
|
|
96574
|
-
|
|
96826
|
+
function extractBlockRanges(compiled) {
|
|
96827
|
+
const result = /* @__PURE__ */ new Map;
|
|
96828
|
+
for (const target of compiled.targets)
|
|
96829
|
+
if (target.kind === "range")
|
|
96830
|
+
pushBlockRange(result, target.blockId, target.from, target.to);
|
|
96831
|
+
else
|
|
96832
|
+
for (const seg of target.segments)
|
|
96833
|
+
pushBlockRange(result, seg.blockId, seg.from, seg.to);
|
|
96834
|
+
return result;
|
|
96835
|
+
}
|
|
96836
|
+
function pushBlockRange(map$22, blockId, from$12, to) {
|
|
96837
|
+
let entries = map$22.get(blockId);
|
|
96838
|
+
if (!entries) {
|
|
96839
|
+
entries = [];
|
|
96840
|
+
map$22.set(blockId, entries);
|
|
96575
96841
|
}
|
|
96576
|
-
|
|
96577
|
-
stepId,
|
|
96842
|
+
entries.push({
|
|
96578
96843
|
from: from$12,
|
|
96579
96844
|
to
|
|
96580
96845
|
});
|
|
96581
96846
|
}
|
|
96847
|
+
function validateStepInteractions(steps) {
|
|
96848
|
+
for (let i$1 = 0;i$1 < steps.length; i$1++)
|
|
96849
|
+
for (let j2 = i$1 + 1;j2 < steps.length; j2++) {
|
|
96850
|
+
const stepA = steps[i$1];
|
|
96851
|
+
const stepB = steps[j2];
|
|
96852
|
+
if (MATRIX_EXEMPT_OPS.has(stepA.step.op) || MATRIX_EXEMPT_OPS.has(stepB.step.op))
|
|
96853
|
+
continue;
|
|
96854
|
+
const overlap = classifyOverlap(stepA, stepB);
|
|
96855
|
+
if (!overlap)
|
|
96856
|
+
continue;
|
|
96857
|
+
const matrixKey = `${normalizeOpForMatrix(stepA.step.op)}::${normalizeOpForMatrix(stepB.step.op)}::${overlap.overlapClass}`;
|
|
96858
|
+
const verdict = STEP_INTERACTION_MATRIX.get(matrixKey) ?? "reject";
|
|
96859
|
+
if (verdict === "reject")
|
|
96860
|
+
throw planError("PLAN_CONFLICT_OVERLAP", `steps "${stepA.step.id}" and "${stepB.step.id}" target overlapping ranges in block "${overlap.blockId}"`, stepB.step.id, {
|
|
96861
|
+
blockId: overlap.blockId,
|
|
96862
|
+
stepIdA: stepA.step.id,
|
|
96863
|
+
stepIdB: stepB.step.id,
|
|
96864
|
+
opKeyA: stepA.step.op,
|
|
96865
|
+
opKeyB: stepB.step.op,
|
|
96866
|
+
rangeA: overlap.rangeA,
|
|
96867
|
+
rangeB: overlap.rangeB,
|
|
96868
|
+
overlapRegion: {
|
|
96869
|
+
from: Math.max(overlap.rangeA.from, overlap.rangeB.from),
|
|
96870
|
+
to: Math.min(overlap.rangeA.to, overlap.rangeB.to)
|
|
96871
|
+
},
|
|
96872
|
+
matrixVerdict: verdict,
|
|
96873
|
+
matrixKey
|
|
96874
|
+
});
|
|
96875
|
+
}
|
|
96876
|
+
}
|
|
96877
|
+
function assertNoDuplicateBlockIds(index2) {
|
|
96878
|
+
const seen = /* @__PURE__ */ new Map;
|
|
96879
|
+
const duplicates = [];
|
|
96880
|
+
for (const candidate of index2.candidates) {
|
|
96881
|
+
const count = seen.get(candidate.nodeId) ?? 0;
|
|
96882
|
+
seen.set(candidate.nodeId, count + 1);
|
|
96883
|
+
if (count === 1)
|
|
96884
|
+
duplicates.push(candidate.nodeId);
|
|
96885
|
+
}
|
|
96886
|
+
if (duplicates.length > 0)
|
|
96887
|
+
throw planError("DOCUMENT_IDENTITY_CONFLICT", "Document contains blocks with duplicate identities. This must be resolved before mutations can be applied.", undefined, {
|
|
96888
|
+
duplicateBlockIds: duplicates,
|
|
96889
|
+
blockCount: duplicates.length,
|
|
96890
|
+
remediation: "Re-import the document or call document.repair() to assign unique identities."
|
|
96891
|
+
});
|
|
96892
|
+
}
|
|
96582
96893
|
function compilePlan(editor, steps) {
|
|
96583
96894
|
if (steps.length > 200)
|
|
96584
96895
|
throw planError("INVALID_INPUT", `plan contains ${steps.length} steps, maximum is 200`);
|
|
96896
|
+
const compiledRevision = getRevision(editor);
|
|
96585
96897
|
const index2 = getBlockIndex(editor);
|
|
96898
|
+
assertNoDuplicateBlockIds(index2);
|
|
96586
96899
|
const mutationSteps = [];
|
|
96587
96900
|
const assertSteps = [];
|
|
96588
96901
|
const seenIds = /* @__PURE__ */ new Set;
|
|
@@ -96594,28 +96907,45 @@ function compilePlan(editor, steps) {
|
|
|
96594
96907
|
seenIds.add(step.id);
|
|
96595
96908
|
}
|
|
96596
96909
|
let totalTargets = 0;
|
|
96910
|
+
let stepIndex = 0;
|
|
96597
96911
|
for (const step of steps) {
|
|
96598
96912
|
if (isAssertStep(step)) {
|
|
96599
96913
|
assertSteps.push(step);
|
|
96914
|
+
stepIndex++;
|
|
96600
96915
|
continue;
|
|
96601
96916
|
}
|
|
96602
96917
|
if (!hasStepExecutor(step.op))
|
|
96603
96918
|
throw planError("INVALID_INPUT", `unknown step op "${step.op}"`, step.id);
|
|
96919
|
+
if (isCreateOp(step.op))
|
|
96920
|
+
validateCreateStepPosition(step);
|
|
96604
96921
|
const targets = resolveStepTargets(editor, index2, step);
|
|
96922
|
+
if (isCreateOp(step.op) && targets.length > 0) {
|
|
96923
|
+
const position4 = step.args.position ?? "after";
|
|
96924
|
+
const anchorBlockId = resolveCreateAnchorFromTargets(targets, position4, step.id);
|
|
96925
|
+
validateInsertionContext(editor, index2, step, stepIndex, anchorBlockId, position4);
|
|
96926
|
+
}
|
|
96605
96927
|
totalTargets += targets.length;
|
|
96606
96928
|
mutationSteps.push({
|
|
96607
96929
|
step,
|
|
96608
96930
|
targets
|
|
96609
96931
|
});
|
|
96932
|
+
stepIndex++;
|
|
96610
96933
|
}
|
|
96611
96934
|
if (totalTargets > 500)
|
|
96612
96935
|
throw planError("INVALID_INPUT", `plan resolved ${totalTargets} total targets, maximum is 500`);
|
|
96613
|
-
|
|
96936
|
+
validateStepInteractions(mutationSteps);
|
|
96614
96937
|
return {
|
|
96615
96938
|
mutationSteps,
|
|
96616
|
-
assertSteps
|
|
96939
|
+
assertSteps,
|
|
96940
|
+
compiledRevision
|
|
96617
96941
|
};
|
|
96618
96942
|
}
|
|
96943
|
+
function resolveBlockInsertionPos(editor, anchorBlockId, position4, stepId) {
|
|
96944
|
+
const candidate = getBlockIndex(editor).candidates.find((c$3) => c$3.nodeId === anchorBlockId);
|
|
96945
|
+
if (!candidate)
|
|
96946
|
+
throw planError("TARGET_NOT_FOUND", `block "${anchorBlockId}" not found`, stepId);
|
|
96947
|
+
return position4 === "before" ? candidate.pos : candidate.end;
|
|
96948
|
+
}
|
|
96619
96949
|
function applyDirectMutationMeta(tr) {
|
|
96620
96950
|
tr.setMeta("inputType", "programmatic");
|
|
96621
96951
|
tr.setMeta("skipTrackChanges", true);
|
|
@@ -96668,11 +96998,33 @@ function buildMarksFromSetMarks(editor, setMarks) {
|
|
|
96668
96998
|
marks.push(schema.marks.strike.create());
|
|
96669
96999
|
return marks;
|
|
96670
97000
|
}
|
|
96671
|
-
function
|
|
96672
|
-
const
|
|
96673
|
-
|
|
96674
|
-
|
|
96675
|
-
|
|
97001
|
+
function applyInlineMarkPatches(editor, tr, absFrom, absTo, inline) {
|
|
97002
|
+
const { schema } = editor.state;
|
|
97003
|
+
let changed = false;
|
|
97004
|
+
const markEntries = [
|
|
97005
|
+
[inline.bold, schema.marks.bold],
|
|
97006
|
+
[inline.italic, schema.marks.italic],
|
|
97007
|
+
[inline.underline, schema.marks.underline],
|
|
97008
|
+
[inline.strike, schema.marks.strike]
|
|
97009
|
+
];
|
|
97010
|
+
for (const [value, markType] of markEntries) {
|
|
97011
|
+
if (value === undefined || !markType)
|
|
97012
|
+
continue;
|
|
97013
|
+
if (value)
|
|
97014
|
+
tr.addMark(absFrom, absTo, markType.create());
|
|
97015
|
+
else
|
|
97016
|
+
tr.removeMark(absFrom, absTo, markType);
|
|
97017
|
+
changed = true;
|
|
97018
|
+
}
|
|
97019
|
+
return changed;
|
|
97020
|
+
}
|
|
97021
|
+
function resolveCreateAnchorBlockId(target, position4, stepId) {
|
|
97022
|
+
if (target.kind === "range")
|
|
97023
|
+
return target.blockId;
|
|
97024
|
+
const segments = target.segments;
|
|
97025
|
+
if (!segments.length)
|
|
97026
|
+
throw planError("INVALID_INPUT", "span target has no segments", stepId);
|
|
97027
|
+
return position4 === "before" ? segments[0].blockId : segments[segments.length - 1].blockId;
|
|
96676
97028
|
}
|
|
96677
97029
|
function executeTextRewrite(editor, tr, target, step, mapping) {
|
|
96678
97030
|
const absFrom = mapping.map(target.absFrom);
|
|
@@ -96713,42 +97065,7 @@ function executeTextDelete(_editor, tr, target, _step, mapping) {
|
|
|
96713
97065
|
return { changed: true };
|
|
96714
97066
|
}
|
|
96715
97067
|
function executeStyleApply2(editor, tr, target, step, mapping) {
|
|
96716
|
-
|
|
96717
|
-
const absTo = mapping.map(target.absTo);
|
|
96718
|
-
const { schema } = editor.state;
|
|
96719
|
-
let changed = false;
|
|
96720
|
-
const markEntries = [
|
|
96721
|
-
[
|
|
96722
|
-
"bold",
|
|
96723
|
-
step.args.inline.bold,
|
|
96724
|
-
schema.marks.bold
|
|
96725
|
-
],
|
|
96726
|
-
[
|
|
96727
|
-
"italic",
|
|
96728
|
-
step.args.inline.italic,
|
|
96729
|
-
schema.marks.italic
|
|
96730
|
-
],
|
|
96731
|
-
[
|
|
96732
|
-
"underline",
|
|
96733
|
-
step.args.inline.underline,
|
|
96734
|
-
schema.marks.underline
|
|
96735
|
-
],
|
|
96736
|
-
[
|
|
96737
|
-
"strike",
|
|
96738
|
-
step.args.inline.strike,
|
|
96739
|
-
schema.marks.strike
|
|
96740
|
-
]
|
|
96741
|
-
];
|
|
96742
|
-
for (const [, value, markType] of markEntries) {
|
|
96743
|
-
if (value === undefined || !markType)
|
|
96744
|
-
continue;
|
|
96745
|
-
if (value)
|
|
96746
|
-
tr.addMark(absFrom, absTo, markType.create());
|
|
96747
|
-
else
|
|
96748
|
-
tr.removeMark(absFrom, absTo, markType);
|
|
96749
|
-
changed = true;
|
|
96750
|
-
}
|
|
96751
|
-
return { changed };
|
|
97068
|
+
return { changed: applyInlineMarkPatches(editor, tr, mapping.map(target.absFrom), mapping.map(target.absTo), step.args.inline) };
|
|
96752
97069
|
}
|
|
96753
97070
|
function validateMappedSpanContiguity(target, mapping, stepId) {
|
|
96754
97071
|
let lastMappedEnd = -1;
|
|
@@ -96814,44 +97131,9 @@ function executeSpanTextDelete(_editor, tr, target, step, mapping) {
|
|
|
96814
97131
|
}
|
|
96815
97132
|
function executeSpanStyleApply(editor, tr, target, step, mapping) {
|
|
96816
97133
|
validateMappedSpanContiguity(target, mapping, step.id);
|
|
96817
|
-
const { schema } = editor.state;
|
|
96818
|
-
let changed = false;
|
|
96819
97134
|
const firstSeg = target.segments[0];
|
|
96820
97135
|
const lastSeg = target.segments[target.segments.length - 1];
|
|
96821
|
-
|
|
96822
|
-
const absTo = mapping.map(lastSeg.absTo, -1);
|
|
96823
|
-
const markEntries = [
|
|
96824
|
-
[
|
|
96825
|
-
"bold",
|
|
96826
|
-
step.args.inline.bold,
|
|
96827
|
-
schema.marks.bold
|
|
96828
|
-
],
|
|
96829
|
-
[
|
|
96830
|
-
"italic",
|
|
96831
|
-
step.args.inline.italic,
|
|
96832
|
-
schema.marks.italic
|
|
96833
|
-
],
|
|
96834
|
-
[
|
|
96835
|
-
"underline",
|
|
96836
|
-
step.args.inline.underline,
|
|
96837
|
-
schema.marks.underline
|
|
96838
|
-
],
|
|
96839
|
-
[
|
|
96840
|
-
"strike",
|
|
96841
|
-
step.args.inline.strike,
|
|
96842
|
-
schema.marks.strike
|
|
96843
|
-
]
|
|
96844
|
-
];
|
|
96845
|
-
for (const [, value, markType] of markEntries) {
|
|
96846
|
-
if (value === undefined || !markType)
|
|
96847
|
-
continue;
|
|
96848
|
-
if (value)
|
|
96849
|
-
tr.addMark(absFrom, absTo, markType.create());
|
|
96850
|
-
else
|
|
96851
|
-
tr.removeMark(absFrom, absTo, markType);
|
|
96852
|
-
changed = true;
|
|
96853
|
-
}
|
|
96854
|
-
return { changed };
|
|
97136
|
+
return { changed: applyInlineMarkPatches(editor, tr, mapping.map(firstSeg.absFrom, 1), mapping.map(lastSeg.absTo, -1), step.args.inline) };
|
|
96855
97137
|
}
|
|
96856
97138
|
function getReplacementText(replacement) {
|
|
96857
97139
|
if (replacement.blocks !== undefined)
|
|
@@ -96984,7 +97266,8 @@ function buildAssertIndex(doc$2) {
|
|
|
96984
97266
|
});
|
|
96985
97267
|
return {
|
|
96986
97268
|
candidates,
|
|
96987
|
-
byId
|
|
97269
|
+
byId,
|
|
97270
|
+
ambiguous
|
|
96988
97271
|
};
|
|
96989
97272
|
}
|
|
96990
97273
|
function resolveAssertScope(index2, select2, within$1) {
|
|
@@ -97051,10 +97334,12 @@ function executeAssertStep(_editor, tr, step) {
|
|
|
97051
97334
|
}
|
|
97052
97335
|
function executeCreateStep(editor, tr, step, targets, mapping) {
|
|
97053
97336
|
const target = targets[0];
|
|
97054
|
-
if (!target
|
|
97055
|
-
throw planError("INVALID_INPUT", `${step.op} step requires
|
|
97337
|
+
if (!target)
|
|
97338
|
+
throw planError("INVALID_INPUT", `${step.op} step requires at least one target`, step.id);
|
|
97056
97339
|
const args$1 = step.args;
|
|
97057
|
-
const
|
|
97340
|
+
const position4 = args$1.position ?? "after";
|
|
97341
|
+
const anchorPos = resolveBlockInsertionPos(editor, resolveCreateAnchorBlockId(target, position4, step.id), position4, step.id);
|
|
97342
|
+
const pos = mapping.map(anchorPos);
|
|
97058
97343
|
const paragraphType = editor.state.schema?.nodes?.paragraph;
|
|
97059
97344
|
if (!paragraphType)
|
|
97060
97345
|
throw planError("INVALID_INPUT", "paragraph node type not in schema", step.id);
|
|
@@ -97074,6 +97359,7 @@ function executeCreateStep(editor, tr, step, targets, mapping) {
|
|
|
97074
97359
|
if (!node3)
|
|
97075
97360
|
throw planError("INVALID_INPUT", `could not create ${step.op} node`, step.id);
|
|
97076
97361
|
tr.insert(pos, node3);
|
|
97362
|
+
assertNoPostInsertDuplicateIds(tr.doc, step.id);
|
|
97077
97363
|
return {
|
|
97078
97364
|
stepId: step.id,
|
|
97079
97365
|
op: step.op,
|
|
@@ -97085,6 +97371,31 @@ function executeCreateStep(editor, tr, step, targets, mapping) {
|
|
|
97085
97371
|
}
|
|
97086
97372
|
};
|
|
97087
97373
|
}
|
|
97374
|
+
function assertNoPostInsertDuplicateIds(doc$2, stepId) {
|
|
97375
|
+
const seen = /* @__PURE__ */ new Set;
|
|
97376
|
+
const duplicateSet = /* @__PURE__ */ new Set;
|
|
97377
|
+
doc$2.descendants((node3) => {
|
|
97378
|
+
if (!node3.isTextblock)
|
|
97379
|
+
return true;
|
|
97380
|
+
const attrs = node3.attrs ?? {};
|
|
97381
|
+
const id2 = typeof attrs.paraId === "string" && attrs.paraId || typeof attrs.sdBlockId === "string" && attrs.sdBlockId || typeof attrs.nodeId === "string" && attrs.nodeId;
|
|
97382
|
+
if (!id2)
|
|
97383
|
+
return true;
|
|
97384
|
+
if (seen.has(id2))
|
|
97385
|
+
duplicateSet.add(id2);
|
|
97386
|
+
else
|
|
97387
|
+
seen.add(id2);
|
|
97388
|
+
return true;
|
|
97389
|
+
});
|
|
97390
|
+
if (duplicateSet.size > 0) {
|
|
97391
|
+
const duplicates = [...duplicateSet];
|
|
97392
|
+
throw planError("INTERNAL_ERROR", `create step produced duplicate block identities: [${duplicates.join(", ")}]`, stepId, {
|
|
97393
|
+
source: "executor:checkPostInsertIdentityUniqueness",
|
|
97394
|
+
invariant: "post-insert block IDs must be unique",
|
|
97395
|
+
duplicateBlockIds: duplicates
|
|
97396
|
+
});
|
|
97397
|
+
}
|
|
97398
|
+
}
|
|
97088
97399
|
function runMutationsOnTransaction(editor, tr, compiled, options) {
|
|
97089
97400
|
const mapping = tr.mapping;
|
|
97090
97401
|
const stepOutcomes = [];
|
|
@@ -97142,6 +97453,14 @@ function executeCompiledPlan(editor, compiled, options = {}) {
|
|
|
97142
97453
|
const startTime = performance.now();
|
|
97143
97454
|
const revisionBefore = getRevision(editor);
|
|
97144
97455
|
checkRevision(editor, options.expectedRevision);
|
|
97456
|
+
if (compiled.compiledRevision !== revisionBefore)
|
|
97457
|
+
throw planError("REVISION_CHANGED_SINCE_COMPILE", `Document revision changed between compile and execute. Compiled at "${compiled.compiledRevision}", now at "${revisionBefore}".`, undefined, {
|
|
97458
|
+
compiledRevision: compiled.compiledRevision,
|
|
97459
|
+
currentRevision: revisionBefore,
|
|
97460
|
+
stepCount: compiled.mutationSteps.length,
|
|
97461
|
+
failedAtStep: "pre-execution",
|
|
97462
|
+
remediation: "Re-compile the plan against the current document state."
|
|
97463
|
+
});
|
|
97145
97464
|
const tr = editor.state.tr;
|
|
97146
97465
|
if ((options.changeMode ?? "direct") === "tracked")
|
|
97147
97466
|
applyTrackedMutationMeta(tr);
|
|
@@ -97361,7 +97680,8 @@ function executeDomainCommand(editor, handler2, options) {
|
|
|
97361
97680
|
},
|
|
97362
97681
|
targets: []
|
|
97363
97682
|
}],
|
|
97364
|
-
assertSteps: []
|
|
97683
|
+
assertSteps: [],
|
|
97684
|
+
compiledRevision: getRevision(editor)
|
|
97365
97685
|
}, { expectedRevision: options?.expectedRevision });
|
|
97366
97686
|
}
|
|
97367
97687
|
function validateWriteRequest(request, resolved) {
|
|
@@ -97457,7 +97777,8 @@ function writeWrapper(editor, request, options) {
|
|
|
97457
97777
|
step: stepDef,
|
|
97458
97778
|
targets: [toCompiledTarget(stepId, op, resolved)]
|
|
97459
97779
|
}],
|
|
97460
|
-
assertSteps: []
|
|
97780
|
+
assertSteps: [],
|
|
97781
|
+
compiledRevision: getRevision(editor)
|
|
97461
97782
|
}, {
|
|
97462
97783
|
changeMode: mode,
|
|
97463
97784
|
expectedRevision: options?.expectedRevision
|
|
@@ -97522,7 +97843,8 @@ function styleApplyWrapper(editor, input2, options) {
|
|
|
97522
97843
|
marks: []
|
|
97523
97844
|
}]
|
|
97524
97845
|
}],
|
|
97525
|
-
assertSteps: []
|
|
97846
|
+
assertSteps: [],
|
|
97847
|
+
compiledRevision: getRevision(editor)
|
|
97526
97848
|
}, {
|
|
97527
97849
|
changeMode: mode,
|
|
97528
97850
|
expectedRevision: options?.expectedRevision
|
|
@@ -98358,6 +98680,58 @@ function createCommentsWrapper(editor) {
|
|
|
98358
98680
|
list: (query2) => listCommentsHandler(editor, query2)
|
|
98359
98681
|
};
|
|
98360
98682
|
}
|
|
98683
|
+
function validateTargetNodeType(nodeType) {
|
|
98684
|
+
if (REJECTED_NODE_TYPES.has(nodeType))
|
|
98685
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { nodeType });
|
|
98686
|
+
if (!SUPPORTED_NODE_TYPES.has(nodeType))
|
|
98687
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, { nodeType });
|
|
98688
|
+
}
|
|
98689
|
+
function resolveSdBlockId(candidate) {
|
|
98690
|
+
const sdBlockId = candidate.node.attrs?.sdBlockId;
|
|
98691
|
+
if (typeof sdBlockId === "string" && sdBlockId.length > 0)
|
|
98692
|
+
return sdBlockId;
|
|
98693
|
+
throw new DocumentApiAdapterError("INTERNAL_ERROR", "Resolved block candidate is missing sdBlockId attribute. This indicates a schema/extension invariant violation.", { attrs: candidate.node.attrs });
|
|
98694
|
+
}
|
|
98695
|
+
function validateCommandLayerUniqueness(editor, sdBlockId) {
|
|
98696
|
+
const getBlockNodeById = editor.helpers?.blockNode?.getBlockNodeById;
|
|
98697
|
+
if (typeof getBlockNodeById !== "function")
|
|
98698
|
+
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "blocks.delete requires the blockNode helper to be registered.", { reason: "missing_helper" });
|
|
98699
|
+
const matches2 = getBlockNodeById(sdBlockId);
|
|
98700
|
+
if (!matches2 || Array.isArray(matches2) && matches2.length === 0)
|
|
98701
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Block with sdBlockId "${sdBlockId}" was not found at the command layer.`, { sdBlockId });
|
|
98702
|
+
if (Array.isArray(matches2) && matches2.length > 1)
|
|
98703
|
+
throw new DocumentApiAdapterError("AMBIGUOUS_TARGET", `Multiple blocks share sdBlockId "${sdBlockId}" at the command layer.`, {
|
|
98704
|
+
sdBlockId,
|
|
98705
|
+
count: matches2.length
|
|
98706
|
+
});
|
|
98707
|
+
}
|
|
98708
|
+
function blocksDeleteWrapper(editor, input2, options) {
|
|
98709
|
+
rejectTrackedMode("blocks.delete", options);
|
|
98710
|
+
const candidate = findBlockByIdStrict(getBlockIndex(editor), input2.target);
|
|
98711
|
+
validateTargetNodeType(candidate.nodeType);
|
|
98712
|
+
const sdBlockId = resolveSdBlockId(candidate);
|
|
98713
|
+
const deleteBlockNodeById = requireEditorCommand(editor.commands?.deleteBlockNodeById, "blocks.delete");
|
|
98714
|
+
validateCommandLayerUniqueness(editor, sdBlockId);
|
|
98715
|
+
if (options?.dryRun)
|
|
98716
|
+
return {
|
|
98717
|
+
success: true,
|
|
98718
|
+
deleted: input2.target
|
|
98719
|
+
};
|
|
98720
|
+
if (executeDomainCommand(editor, () => {
|
|
98721
|
+
const didApply = deleteBlockNodeById(sdBlockId);
|
|
98722
|
+
if (didApply)
|
|
98723
|
+
clearIndexCache(editor);
|
|
98724
|
+
return didApply;
|
|
98725
|
+
}, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
|
|
98726
|
+
throw new DocumentApiAdapterError("INTERNAL_ERROR", "blocks.delete command returned false despite passing all pre-apply checks. This is an internal invariant violation.", {
|
|
98727
|
+
sdBlockId,
|
|
98728
|
+
target: input2.target
|
|
98729
|
+
});
|
|
98730
|
+
return {
|
|
98731
|
+
success: true,
|
|
98732
|
+
deleted: input2.target
|
|
98733
|
+
};
|
|
98734
|
+
}
|
|
98361
98735
|
function getRawTrackedMarks(editor) {
|
|
98362
98736
|
try {
|
|
98363
98737
|
const marks = getTrackChanges(editor.state);
|
|
@@ -98492,10 +98866,7 @@ function resolveCreateInsertPosition(editor, at, operationLabel) {
|
|
|
98492
98866
|
return 0;
|
|
98493
98867
|
if (location$1.kind === "documentEnd")
|
|
98494
98868
|
return editor.state.doc.content.size;
|
|
98495
|
-
|
|
98496
|
-
if (!target)
|
|
98497
|
-
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Create ${operationLabel} target block was not found.`, { target: location$1.target });
|
|
98498
|
-
return location$1.kind === "before" ? target.pos : target.end;
|
|
98869
|
+
return resolveBlockInsertionPos(editor, location$1.target.nodeId, location$1.kind);
|
|
98499
98870
|
}
|
|
98500
98871
|
function resolveCreatedBlock(editor, nodeType, blockId) {
|
|
98501
98872
|
const index2 = getBlockIndex(editor);
|
|
@@ -98604,7 +98975,10 @@ function createParagraphWrapper(editor, input2, options) {
|
|
|
98604
98975
|
const paragraph2 = resolveCreatedBlock(editor, "paragraph", paragraphId);
|
|
98605
98976
|
if (mode === "tracked")
|
|
98606
98977
|
trackedChangeRefs = collectTrackInsertRefsInRange(editor, paragraph2.pos, paragraph2.end);
|
|
98607
|
-
} catch {
|
|
98978
|
+
} catch (e) {
|
|
98979
|
+
if (!(e instanceof DocumentApiAdapterError))
|
|
98980
|
+
throw e;
|
|
98981
|
+
}
|
|
98608
98982
|
}
|
|
98609
98983
|
return didApply;
|
|
98610
98984
|
}, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
|
|
@@ -98670,7 +99044,10 @@ function createHeadingWrapper(editor, input2, options) {
|
|
|
98670
99044
|
const heading3 = resolveCreatedBlock(editor, "heading", headingId);
|
|
98671
99045
|
if (mode === "tracked")
|
|
98672
99046
|
trackedChangeRefs = collectTrackInsertRefsInRange(editor, heading3.pos, heading3.end);
|
|
98673
|
-
} catch {
|
|
99047
|
+
} catch (e) {
|
|
99048
|
+
if (!(e instanceof DocumentApiAdapterError))
|
|
99049
|
+
throw e;
|
|
99050
|
+
}
|
|
98674
99051
|
}
|
|
98675
99052
|
return didApply;
|
|
98676
99053
|
}, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
|
|
@@ -100029,15 +100406,16 @@ function trackChangesRejectAllWrapper(editor, _input, options) {
|
|
|
100029
100406
|
return { success: true };
|
|
100030
100407
|
}
|
|
100031
100408
|
function previewPlan(editor, input2) {
|
|
100032
|
-
const evaluatedRevision = getRevision(editor);
|
|
100033
100409
|
checkRevision(editor, input2.expectedRevision);
|
|
100034
100410
|
if (!input2.steps?.length)
|
|
100035
100411
|
throw planError("INVALID_INPUT", "plan must contain at least one step");
|
|
100036
100412
|
const failures = [];
|
|
100037
100413
|
const stepPreviews = [];
|
|
100038
100414
|
let currentPhase = "compile";
|
|
100415
|
+
let evaluatedRevision = getRevision(editor);
|
|
100039
100416
|
try {
|
|
100040
100417
|
const compiled = compilePlan(editor, input2.steps);
|
|
100418
|
+
evaluatedRevision = compiled.compiledRevision;
|
|
100041
100419
|
currentPhase = "execute";
|
|
100042
100420
|
const tr = editor.state.tr;
|
|
100043
100421
|
const { stepOutcomes, assertFailures } = runMutationsOnTransaction(editor, tr, compiled, { throwOnAssertFailure: false });
|
|
@@ -100449,7 +100827,13 @@ function queryMatchAdapter(editor, input2) {
|
|
|
100449
100827
|
const paginatedMatches = isTextSelector ? applyPagination(rawMatches, userOffset, input2.limit) : rawMatches;
|
|
100450
100828
|
if (require$1 === "first" || require$1 === "exactlyOne" || require$1 === "all") {
|
|
100451
100829
|
if (totalMatches === 0)
|
|
100452
|
-
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges"
|
|
100830
|
+
throw planError("MATCH_NOT_FOUND", "selector matched zero ranges", undefined, {
|
|
100831
|
+
selectorType: input2.select?.type ?? "unknown",
|
|
100832
|
+
selectorPattern: input2.select?.pattern ?? "",
|
|
100833
|
+
selectorMode: input2.select?.mode ?? "contains",
|
|
100834
|
+
searchScope: (input2.within?.kind === "block" ? input2.within.nodeId : undefined) ?? "document",
|
|
100835
|
+
candidateCount: 0
|
|
100836
|
+
});
|
|
100453
100837
|
}
|
|
100454
100838
|
if (require$1 === "exactlyOne" && totalMatches > 1)
|
|
100455
100839
|
throw planError("AMBIGUOUS_MATCH", `selector matched ${totalMatches} ranges, expected exactly one`, undefined, { matchCount: totalMatches });
|
|
@@ -100458,7 +100842,11 @@ function queryMatchAdapter(editor, input2) {
|
|
|
100458
100842
|
if (isTextSelector && raw.textRanges?.length) {
|
|
100459
100843
|
const blocks2 = buildMatchBlocks(editor, raw.textRanges, evaluatedRevision, id2);
|
|
100460
100844
|
if (blocks2.length === 0)
|
|
100461
|
-
throw planError("INTERNAL_ERROR", `text match produced no blocks for ${id2}
|
|
100845
|
+
throw planError("INTERNAL_ERROR", `text match produced no blocks for ${id2}`, undefined, {
|
|
100846
|
+
source: "query-match-adapter:buildMatchEntries",
|
|
100847
|
+
invariant: "text match must have at least one block after zero-width filtering",
|
|
100848
|
+
context: { matchId: id2 }
|
|
100849
|
+
});
|
|
100462
100850
|
const snippetResult = buildBlocksSnippet(editor, blocks2);
|
|
100463
100851
|
return {
|
|
100464
100852
|
id: id2,
|
|
@@ -100681,6 +101069,7 @@ function getDocumentApiAdapters(editor) {
|
|
|
100681
101069
|
acceptAll: (input2, options) => trackChangesAcceptAllWrapper(editor, input2, options),
|
|
100682
101070
|
rejectAll: (input2, options) => trackChangesRejectAllWrapper(editor, input2, options)
|
|
100683
101071
|
},
|
|
101072
|
+
blocks: { delete: (input2, options) => blocksDeleteWrapper(editor, input2, options) },
|
|
100684
101073
|
create: {
|
|
100685
101074
|
paragraph: (input2, options) => createParagraphWrapper(editor, input2, options),
|
|
100686
101075
|
heading: (input2, options) => createHeadingWrapper(editor, input2, options)
|
|
@@ -134736,7 +135125,7 @@ var Node$13 = class Node$14 {
|
|
|
134736
135125
|
console.warn("Failed to initialize developer tools:", error);
|
|
134737
135126
|
}
|
|
134738
135127
|
}
|
|
134739
|
-
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, NODE_TYPES2, BLOCK_NODE_TYPES2, INLINE_NODE_TYPES2, MARK_KEYS2, MARK_KEY_SET2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_QUERY_MATCH2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG2, DocumentApiValidationError2, ALIGNMENTS2, ALIGNMENT_SET2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, FONT_SIZE_ALLOWED_KEYS2, FONT_FAMILY_ALLOWED_KEYS2, COLOR_ALLOWED_KEYS2, ALIGN_ALLOWED_KEYS2, nodeTypeValues2, blockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, listsExitSuccessSchema2, nodeSummarySchema2, nodeInfoSchema2, matchContextSchema2, unknownNodeDiagnosticSchema2, textSelectorSchema2, nodeSelectorSchema2, findItemDomainSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, listKindSchema2, listInsertPositionSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, formatCapabilitiesSchema2, GROUP_METADATA2, CAPABILITY_REASON_CODES2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, INSERT_INPUT_ALLOWED_KEYS2, REPLACE_INPUT_ALLOWED_KEYS2, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, STYLE_MARK_SCHEMA_NAMES, INLINE_FORMAT_OPERATIONS, SUPPORTED_STEP_OPS, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, DocumentApiAdapterError, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, ALIAS_ELIGIBLE_TYPES, cacheByEditor, PlanError, revisionMap, subscribedEditors, registry, CORE_MARK_NAMES, METADATA_MARK_NAMES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, REF_HANDLERS, DEFAULT_INLINE_POLICY, OBJECT_REPLACEMENT_CHAR = "", STUB_WHERE, MARK_KEY_TO_SCHEMA_NAME, FALLBACK_STORE_KEY = "__documentApiComments", DERIVED_ID_LENGTH = 24, groupedCache, CSS_NAMED_COLORS, registered = false, empty_exports, init_empty, PIXELS_PER_INCH$1 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, ContextMenuPluginKey, MENU_OFFSET_X = 0, MENU_OFFSET_Y = 28, CONTEXT_MENU_OFFSET_X = 10, CONTEXT_MENU_OFFSET_Y = 10, SLASH_COOLDOWN_MS = 5000, ContextMenu, SearchQuery = class {
|
|
135128
|
+
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, NODE_TYPES2, BLOCK_NODE_TYPES2, DELETABLE_BLOCK_NODE_TYPES2, INLINE_NODE_TYPES2, MARK_KEYS2, MARK_KEY_SET2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_QUERY_MATCH2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG2, DocumentApiValidationError2, ALIGNMENTS2, ALIGNMENT_SET2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, FONT_SIZE_ALLOWED_KEYS2, FONT_FAMILY_ALLOWED_KEYS2, COLOR_ALLOWED_KEYS2, ALIGN_ALLOWED_KEYS2, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, listsExitSuccessSchema2, nodeSummarySchema2, nodeInfoSchema2, matchContextSchema2, unknownNodeDiagnosticSchema2, textSelectorSchema2, nodeSelectorSchema2, findItemDomainSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, listKindSchema2, listInsertPositionSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, formatCapabilitiesSchema2, GROUP_METADATA2, CAPABILITY_REASON_CODES2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, INSERT_INPUT_ALLOWED_KEYS2, REPLACE_INPUT_ALLOWED_KEYS2, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, STYLE_MARK_SCHEMA_NAMES, INLINE_FORMAT_OPERATIONS, SUPPORTED_STEP_OPS, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, DocumentApiAdapterError, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, ALIAS_ELIGIBLE_TYPES, cacheByEditor, PlanError, revisionMap, subscribedEditors, registry, CORE_MARK_NAMES, METADATA_MARK_NAMES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, OBJECT_REPLACEMENT_CHAR = "", STUB_WHERE, MARK_KEY_TO_SCHEMA_NAME, FALLBACK_STORE_KEY = "__documentApiComments", SUPPORTED_NODE_TYPES, REJECTED_NODE_TYPES, DERIVED_ID_LENGTH = 24, groupedCache, CSS_NAMED_COLORS, registered = false, empty_exports, init_empty, PIXELS_PER_INCH$1 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, ContextMenuPluginKey, MENU_OFFSET_X = 0, MENU_OFFSET_Y = 28, CONTEXT_MENU_OFFSET_X = 10, CONTEXT_MENU_OFFSET_Y = 10, SLASH_COOLDOWN_MS = 5000, ContextMenu, SearchQuery = class {
|
|
134740
135129
|
constructor(config2) {
|
|
134741
135130
|
this.search = config2.search;
|
|
134742
135131
|
this.caseSensitive = !!config2.caseSensitive;
|
|
@@ -152807,7 +153196,7 @@ var Node$13 = class Node$14 {
|
|
|
152807
153196
|
trackedChanges: context.trackedChanges ?? []
|
|
152808
153197
|
});
|
|
152809
153198
|
}, _hoisted_1$6, _hoisted_2$1, _hoisted_3, _hoisted_4, ContextMenu_default, _hoisted_1$5, BasicUpload_default, _hoisted_1$4, MIN_WIDTH = 200, PPI = 96, alignment = "flex-end", Ruler_default, GenericPopover_default, _hoisted_1$3, RESIZE_HANDLE_WIDTH_PX = 9, RESIZE_HANDLE_OFFSET_PX = 4, DRAG_OVERLAY_EXTENSION_PX = 1000, MIN_DRAG_OVERLAY_WIDTH_PX = 2000, THROTTLE_INTERVAL_MS = 16, MIN_RESIZE_DELTA_PX = 1, TableResizeOverlay_default, _hoisted_1$2, OVERLAY_EXPANSION_PX = 2000, RESIZE_HANDLE_SIZE_PX = 12, MOUSE_MOVE_THROTTLE_MS = 16, DIMENSION_CHANGE_THRESHOLD_PX = 1, Z_INDEX_OVERLAY = 10, Z_INDEX_HANDLE = 15, Z_INDEX_GUIDELINE = 20, ImageResizeOverlay_default, LINK_CLICK_DEBOUNCE_MS = 300, CURSOR_UPDATE_TIMEOUT_MS = 10, LinkClickHandler_default, _hoisted_1$1, _hoisted_2, DOCX2 = "application/vnd.openxmlformats-officedocument.wordprocessingml.document", TABLE_RESIZE_HOVER_THRESHOLD = 8, TABLE_RESIZE_THROTTLE_MS = 16, SuperEditor_default, _hoisted_1, SuperInput_default, SlashMenu, Extensions;
|
|
152810
|
-
var
|
|
153199
|
+
var init_src_0UjFcd91_es = __esm(() => {
|
|
152811
153200
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
152812
153201
|
init_SuperConverter_BxBclpFg_es();
|
|
152813
153202
|
init_jszip_ChlR43oI_es();
|
|
@@ -160886,6 +161275,13 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
160886
161275
|
"image",
|
|
160887
161276
|
"sdt"
|
|
160888
161277
|
];
|
|
161278
|
+
DELETABLE_BLOCK_NODE_TYPES2 = [
|
|
161279
|
+
"paragraph",
|
|
161280
|
+
"heading",
|
|
161281
|
+
"listItem",
|
|
161282
|
+
"table",
|
|
161283
|
+
"sdt"
|
|
161284
|
+
];
|
|
160889
161285
|
INLINE_NODE_TYPES2 = [
|
|
160890
161286
|
"run",
|
|
160891
161287
|
"bookmark",
|
|
@@ -160920,6 +161316,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
160920
161316
|
"TARGET_MOVED",
|
|
160921
161317
|
"PLAN_CONFLICT_OVERLAP",
|
|
160922
161318
|
"INVALID_STEP_COMBINATION",
|
|
161319
|
+
"REVISION_CHANGED_SINCE_COMPILE",
|
|
161320
|
+
"INVALID_INSERTION_CONTEXT",
|
|
161321
|
+
"DOCUMENT_IDENTITY_CONFLICT",
|
|
160923
161322
|
"CAPABILITY_UNAVAILABLE"
|
|
160924
161323
|
];
|
|
160925
161324
|
T_QUERY_MATCH2 = [
|
|
@@ -161021,6 +161420,27 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
161021
161420
|
referenceDocPath: "delete.mdx",
|
|
161022
161421
|
referenceGroup: "core"
|
|
161023
161422
|
},
|
|
161423
|
+
"blocks.delete": {
|
|
161424
|
+
memberPath: "blocks.delete",
|
|
161425
|
+
description: "Delete an entire block node (paragraph, heading, list item, table, image, or sdt) deterministically.",
|
|
161426
|
+
requiresDocumentContext: true,
|
|
161427
|
+
metadata: mutationOperation2({
|
|
161428
|
+
idempotency: "conditional",
|
|
161429
|
+
supportsDryRun: true,
|
|
161430
|
+
supportsTrackedMode: false,
|
|
161431
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
161432
|
+
throws: [
|
|
161433
|
+
"TARGET_NOT_FOUND",
|
|
161434
|
+
"AMBIGUOUS_TARGET",
|
|
161435
|
+
"CAPABILITY_UNAVAILABLE",
|
|
161436
|
+
"INVALID_TARGET",
|
|
161437
|
+
"INVALID_INPUT",
|
|
161438
|
+
"INTERNAL_ERROR"
|
|
161439
|
+
]
|
|
161440
|
+
}),
|
|
161441
|
+
referenceDocPath: "blocks/delete.mdx",
|
|
161442
|
+
referenceGroup: "blocks"
|
|
161443
|
+
},
|
|
161024
161444
|
"format.apply": {
|
|
161025
161445
|
memberPath: "format.apply",
|
|
161026
161446
|
description: "Apply explicit inline style changes (bold, italic, underline, strike) to the target range using boolean patch semantics.",
|
|
@@ -161446,6 +161866,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
161446
161866
|
ALIGN_ALLOWED_KEYS2 = new Set(["target", "alignment"]);
|
|
161447
161867
|
nodeTypeValues2 = NODE_TYPES2;
|
|
161448
161868
|
blockNodeTypeValues2 = BLOCK_NODE_TYPES2;
|
|
161869
|
+
deletableBlockNodeTypeValues2 = DELETABLE_BLOCK_NODE_TYPES2;
|
|
161449
161870
|
inlineNodeTypeValues2 = INLINE_NODE_TYPES2;
|
|
161450
161871
|
objectSchema2({
|
|
161451
161872
|
start: { type: "integer" },
|
|
@@ -161482,6 +161903,14 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
161482
161903
|
"kind",
|
|
161483
161904
|
"nodeType",
|
|
161484
161905
|
"nodeId"
|
|
161906
|
+
]), objectSchema2({
|
|
161907
|
+
kind: { const: "block" },
|
|
161908
|
+
nodeType: { enum: [...deletableBlockNodeTypeValues2] },
|
|
161909
|
+
nodeId: { type: "string" }
|
|
161910
|
+
}, [
|
|
161911
|
+
"kind",
|
|
161912
|
+
"nodeType",
|
|
161913
|
+
"nodeId"
|
|
161485
161914
|
]), objectSchema2({
|
|
161486
161915
|
kind: { const: "block" },
|
|
161487
161916
|
nodeType: { const: "paragraph" },
|
|
@@ -161633,6 +162062,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
161633
162062
|
textAddressSchema2 = ref$1("TextAddress");
|
|
161634
162063
|
textTargetSchema2 = ref$1("TextTarget");
|
|
161635
162064
|
blockNodeAddressSchema2 = ref$1("BlockNodeAddress");
|
|
162065
|
+
deletableBlockNodeAddressSchema2 = ref$1("DeletableBlockNodeAddress");
|
|
161636
162066
|
paragraphAddressSchema2 = ref$1("ParagraphAddress");
|
|
161637
162067
|
headingAddressSchema2 = ref$1("HeadingAddress");
|
|
161638
162068
|
listItemAddressSchema2 = ref$1("ListItemAddress");
|
|
@@ -161890,6 +162320,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
161890
162320
|
}, ["address", "type"]));
|
|
161891
162321
|
capabilityReasonsSchema2 = arraySchema2({ enum: [
|
|
161892
162322
|
"COMMAND_UNAVAILABLE",
|
|
162323
|
+
"HELPER_UNAVAILABLE",
|
|
161893
162324
|
"OPERATION_UNAVAILABLE",
|
|
161894
162325
|
"TRACKED_MODE_UNAVAILABLE",
|
|
161895
162326
|
"DRY_RUN_UNAVAILABLE",
|
|
@@ -161979,7 +162410,13 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
161979
162410
|
}, ["target", "value"]), textMutationResultSchemaFor2("format.color"), textMutationFailureSchemaFor2("format.color"), objectSchema2({
|
|
161980
162411
|
target: textAddressSchema2,
|
|
161981
162412
|
alignment: { oneOf: [{ enum: [...ALIGNMENTS2] }, { type: "null" }] }
|
|
161982
|
-
}, ["target", "alignment"]), textMutationResultSchemaFor2("format.align"), textMutationFailureSchemaFor2("format.align"), objectSchema2({
|
|
162413
|
+
}, ["target", "alignment"]), textMutationResultSchemaFor2("format.align"), textMutationFailureSchemaFor2("format.align"), objectSchema2({ target: deletableBlockNodeAddressSchema2 }, ["target"]), objectSchema2({
|
|
162414
|
+
success: { const: true },
|
|
162415
|
+
deleted: deletableBlockNodeAddressSchema2
|
|
162416
|
+
}, ["success", "deleted"]), objectSchema2({
|
|
162417
|
+
success: { const: true },
|
|
162418
|
+
deleted: deletableBlockNodeAddressSchema2
|
|
162419
|
+
}, ["success", "deleted"]), preApplyFailureResultSchemaFor2("blocks.delete"), objectSchema2({
|
|
161983
162420
|
at: { oneOf: [
|
|
161984
162421
|
objectSchema2({ kind: { const: "documentStart" } }, ["kind"]),
|
|
161985
162422
|
objectSchema2({ kind: { const: "documentEnd" } }, ["kind"]),
|
|
@@ -162157,6 +162594,11 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162157
162594
|
description: "Primary read and write operations.",
|
|
162158
162595
|
pagePath: "core/index.mdx"
|
|
162159
162596
|
},
|
|
162597
|
+
blocks: {
|
|
162598
|
+
title: "Blocks",
|
|
162599
|
+
description: "Block-level structural operations.",
|
|
162600
|
+
pagePath: "blocks/index.mdx"
|
|
162601
|
+
},
|
|
162160
162602
|
capabilities: {
|
|
162161
162603
|
title: "Capabilities",
|
|
162162
162604
|
description: "Runtime support discovery for capability-aware branching.",
|
|
@@ -162205,6 +162647,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162205
162647
|
}));
|
|
162206
162648
|
CAPABILITY_REASON_CODES2 = [
|
|
162207
162649
|
"COMMAND_UNAVAILABLE",
|
|
162650
|
+
"HELPER_UNAVAILABLE",
|
|
162208
162651
|
"OPERATION_UNAVAILABLE",
|
|
162209
162652
|
"TRACKED_MODE_UNAVAILABLE",
|
|
162210
162653
|
"DRY_RUN_UNAVAILABLE",
|
|
@@ -162225,6 +162668,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162225
162668
|
DELETE_INPUT_ALLOWED_KEYS2 = new Set(["target"]);
|
|
162226
162669
|
INSERT_INPUT_ALLOWED_KEYS2 = new Set(["text", "target"]);
|
|
162227
162670
|
REPLACE_INPUT_ALLOWED_KEYS2 = new Set(["text", "target"]);
|
|
162671
|
+
SUPPORTED_DELETE_NODE_TYPES2 = new Set(DELETABLE_BLOCK_NODE_TYPES2);
|
|
162672
|
+
REJECTED_DELETE_NODE_TYPES2 = new Set(["tableRow", "tableCell"]);
|
|
162228
162673
|
REQUIRED_COMMANDS = {
|
|
162229
162674
|
"format.fontSize": [
|
|
162230
162675
|
"setTextSelection",
|
|
@@ -162254,6 +162699,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162254
162699
|
"lists.outdent": ["setTextSelection", "decreaseListIndent"],
|
|
162255
162700
|
"lists.restart": ["setTextSelection", "restartNumbering"],
|
|
162256
162701
|
"lists.exit": ["exitListItemAt"],
|
|
162702
|
+
"blocks.delete": ["deleteBlockNodeById"],
|
|
162257
162703
|
"comments.create": [
|
|
162258
162704
|
"addComment",
|
|
162259
162705
|
"setTextSelection",
|
|
@@ -162274,6 +162720,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162274
162720
|
]
|
|
162275
162721
|
};
|
|
162276
162722
|
VALID_CAPABILITY_REASON_CODES = new Set(CAPABILITY_REASON_CODES2);
|
|
162723
|
+
REQUIRED_HELPERS = { "blocks.delete": (editor) => typeof editor.helpers?.blockNode?.getBlockNodeById === "function" };
|
|
162277
162724
|
STYLE_MARK_SCHEMA_NAMES = {
|
|
162278
162725
|
bold: "bold",
|
|
162279
162726
|
italic: "italic",
|
|
@@ -162385,6 +162832,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162385
162832
|
"commentRangeStart",
|
|
162386
162833
|
"commentRangeEnd"
|
|
162387
162834
|
]);
|
|
162835
|
+
VALID_CREATE_POSITIONS = ["before", "after"];
|
|
162388
162836
|
REF_HANDLERS = [
|
|
162389
162837
|
{
|
|
162390
162838
|
prefix: "text:",
|
|
@@ -162407,6 +162855,34 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162407
162855
|
handler: resolveBlockRef
|
|
162408
162856
|
}
|
|
162409
162857
|
];
|
|
162858
|
+
STEP_INTERACTION_MATRIX = new Map([
|
|
162859
|
+
["text.rewrite::format.apply::same_target", "allow"],
|
|
162860
|
+
["text.rewrite::text.rewrite::same_target", "reject"],
|
|
162861
|
+
["text.rewrite::text.delete::overlapping", "reject"],
|
|
162862
|
+
["text.rewrite::create.*::same_block", "allow"],
|
|
162863
|
+
["text.rewrite::text.insert::same_target", "reject"],
|
|
162864
|
+
["format.apply::format.apply::same_target", "allow"],
|
|
162865
|
+
["format.apply::text.rewrite::same_target", "reject"],
|
|
162866
|
+
["format.apply::text.delete::overlapping", "reject"],
|
|
162867
|
+
["format.apply::create.*::same_block", "allow"],
|
|
162868
|
+
["format.apply::text.insert::same_target", "allow"],
|
|
162869
|
+
["text.delete::text.rewrite::overlapping", "reject"],
|
|
162870
|
+
["text.delete::text.delete::overlapping", "reject"],
|
|
162871
|
+
["text.delete::format.apply::overlapping", "reject"],
|
|
162872
|
+
["text.delete::create.*::same_block", "allow"],
|
|
162873
|
+
["text.delete::text.insert::overlapping", "reject"],
|
|
162874
|
+
["create.*::text.rewrite::same_block", "allow"],
|
|
162875
|
+
["create.*::format.apply::same_block", "allow"],
|
|
162876
|
+
["create.*::text.delete::same_block", "allow"],
|
|
162877
|
+
["create.*::create.*::same_block", "allow"],
|
|
162878
|
+
["create.*::text.insert::same_block", "allow"],
|
|
162879
|
+
["text.insert::format.apply::same_target", "allow"],
|
|
162880
|
+
["text.insert::text.rewrite::same_target", "reject"],
|
|
162881
|
+
["text.insert::text.delete::overlapping", "reject"],
|
|
162882
|
+
["text.insert::create.*::same_block", "allow"],
|
|
162883
|
+
["text.insert::text.insert::same_target", "reject"]
|
|
162884
|
+
]);
|
|
162885
|
+
MATRIX_EXEMPT_OPS = new Set(["assert"]);
|
|
162410
162886
|
DEFAULT_INLINE_POLICY = {
|
|
162411
162887
|
mode: "preserve",
|
|
162412
162888
|
onNonUniform: "majority"
|
|
@@ -162426,6 +162902,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
162426
162902
|
underline: "underline",
|
|
162427
162903
|
strike: "strike"
|
|
162428
162904
|
};
|
|
162905
|
+
SUPPORTED_NODE_TYPES = new Set(DELETABLE_BLOCK_NODE_TYPES2);
|
|
162906
|
+
REJECTED_NODE_TYPES = new Set(["tableRow", "tableCell"]);
|
|
162429
162907
|
groupedCache = /* @__PURE__ */ new WeakMap;
|
|
162430
162908
|
CSS_NAMED_COLORS = {
|
|
162431
162909
|
aliceblue: "#f0f8ff",
|
|
@@ -184421,8 +184899,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
184421
184899
|
return isObjectLike_default(value) && hasOwnProperty$8.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
|
|
184422
184900
|
};
|
|
184423
184901
|
stubFalse_default = stubFalse;
|
|
184424
|
-
freeExports$2 = typeof
|
|
184425
|
-
freeModule$2 = freeExports$2 && typeof
|
|
184902
|
+
freeExports$2 = typeof exports_src_0UjFcd91_es == "object" && exports_src_0UjFcd91_es && !exports_src_0UjFcd91_es.nodeType && exports_src_0UjFcd91_es;
|
|
184903
|
+
freeModule$2 = freeExports$2 && typeof module_src_0UjFcd91_es == "object" && module_src_0UjFcd91_es && !module_src_0UjFcd91_es.nodeType && module_src_0UjFcd91_es;
|
|
184426
184904
|
Buffer$1 = freeModule$2 && freeModule$2.exports === freeExports$2 ? _root_default.Buffer : undefined;
|
|
184427
184905
|
isBuffer_default = (Buffer$1 ? Buffer$1.isBuffer : undefined) || stubFalse_default;
|
|
184428
184906
|
typedArrayTags = {};
|
|
@@ -184430,8 +184908,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
184430
184908
|
typedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$2] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag] = typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$3] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag$1] = false;
|
|
184431
184909
|
_baseIsTypedArray_default = baseIsTypedArray;
|
|
184432
184910
|
_baseUnary_default = baseUnary;
|
|
184433
|
-
freeExports$1 = typeof
|
|
184434
|
-
freeModule$1 = freeExports$1 && typeof
|
|
184911
|
+
freeExports$1 = typeof exports_src_0UjFcd91_es == "object" && exports_src_0UjFcd91_es && !exports_src_0UjFcd91_es.nodeType && exports_src_0UjFcd91_es;
|
|
184912
|
+
freeModule$1 = freeExports$1 && typeof module_src_0UjFcd91_es == "object" && module_src_0UjFcd91_es && !module_src_0UjFcd91_es.nodeType && module_src_0UjFcd91_es;
|
|
184435
184913
|
freeProcess = freeModule$1 && freeModule$1.exports === freeExports$1 && _freeGlobal_default.process;
|
|
184436
184914
|
_nodeUtil_default = function() {
|
|
184437
184915
|
try {
|
|
@@ -184536,8 +185014,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
184536
185014
|
Stack.prototype.has = _stackHas_default;
|
|
184537
185015
|
Stack.prototype.set = _stackSet_default;
|
|
184538
185016
|
_Stack_default = Stack;
|
|
184539
|
-
freeExports = typeof
|
|
184540
|
-
freeModule = freeExports && typeof
|
|
185017
|
+
freeExports = typeof exports_src_0UjFcd91_es == "object" && exports_src_0UjFcd91_es && !exports_src_0UjFcd91_es.nodeType && exports_src_0UjFcd91_es;
|
|
185018
|
+
freeModule = freeExports && typeof module_src_0UjFcd91_es == "object" && module_src_0UjFcd91_es && !module_src_0UjFcd91_es.nodeType && module_src_0UjFcd91_es;
|
|
184541
185019
|
Buffer4 = freeModule && freeModule.exports === freeExports ? _root_default.Buffer : undefined;
|
|
184542
185020
|
allocUnsafe = Buffer4 ? Buffer4.allocUnsafe : undefined;
|
|
184543
185021
|
_cloneBuffer_default = cloneBuffer;
|
|
@@ -192156,7 +192634,7 @@ var init_zipper_BJHqrQMq_es = __esm(() => {
|
|
|
192156
192634
|
|
|
192157
192635
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
192158
192636
|
var init_super_editor_es = __esm(() => {
|
|
192159
|
-
|
|
192637
|
+
init_src_0UjFcd91_es();
|
|
192160
192638
|
init_SuperConverter_BxBclpFg_es();
|
|
192161
192639
|
init_jszip_ChlR43oI_es();
|
|
192162
192640
|
init_xml_js_DLE8mr0n_es();
|
|
@@ -192186,6 +192664,12 @@ function hasAllCommands2(editor, operationId) {
|
|
|
192186
192664
|
return true;
|
|
192187
192665
|
return required.every((command2) => hasCommand2(editor, command2));
|
|
192188
192666
|
}
|
|
192667
|
+
function hasRequiredHelpers2(editor, operationId) {
|
|
192668
|
+
const check = REQUIRED_HELPERS2[operationId];
|
|
192669
|
+
if (!check)
|
|
192670
|
+
return true;
|
|
192671
|
+
return check(editor);
|
|
192672
|
+
}
|
|
192189
192673
|
function hasMarkCapability2(editor, markName) {
|
|
192190
192674
|
return Boolean(editor.schema?.marks?.[markName]);
|
|
192191
192675
|
}
|
|
@@ -192230,7 +192714,7 @@ function isOperationAvailable2(editor, operationId) {
|
|
|
192230
192714
|
if (INLINE_FORMAT_OPERATIONS2.has(operationId)) {
|
|
192231
192715
|
return hasAllCommands2(editor, operationId) && hasMarkCapability2(editor, "textStyle");
|
|
192232
192716
|
}
|
|
192233
|
-
return hasAllCommands2(editor, operationId);
|
|
192717
|
+
return hasAllCommands2(editor, operationId) && hasRequiredHelpers2(editor, operationId);
|
|
192234
192718
|
}
|
|
192235
192719
|
function isCommandBackedAvailability2(operationId) {
|
|
192236
192720
|
return !isMarkBackedOperation2(operationId) && !INLINE_FORMAT_OPERATIONS2.has(operationId);
|
|
@@ -192245,7 +192729,12 @@ function buildOperationCapabilities2(editor) {
|
|
|
192245
192729
|
const reasons = [];
|
|
192246
192730
|
if (!available) {
|
|
192247
192731
|
if (isCommandBackedAvailability2(operationId)) {
|
|
192248
|
-
|
|
192732
|
+
if (!hasAllCommands2(editor, operationId)) {
|
|
192733
|
+
pushReason2(reasons, "COMMAND_UNAVAILABLE");
|
|
192734
|
+
}
|
|
192735
|
+
if (!hasRequiredHelpers2(editor, operationId)) {
|
|
192736
|
+
pushReason2(reasons, "HELPER_UNAVAILABLE");
|
|
192737
|
+
}
|
|
192249
192738
|
}
|
|
192250
192739
|
pushReason2(reasons, "OPERATION_UNAVAILABLE");
|
|
192251
192740
|
}
|
|
@@ -192308,7 +192797,7 @@ function getDocumentApiCapabilities2(editor) {
|
|
|
192308
192797
|
planEngine: buildPlanEngineCapabilities2()
|
|
192309
192798
|
};
|
|
192310
192799
|
}
|
|
192311
|
-
var REQUIRED_COMMANDS2, VALID_CAPABILITY_REASON_CODES2, STYLE_MARK_SCHEMA_NAMES2, INLINE_FORMAT_OPERATIONS2, SUPPORTED_STEP_OPS2, SUPPORTED_NON_UNIFORM_STRATEGIES2, SUPPORTED_SET_MARKS2, REGEX_MAX_PATTERN_LENGTH2 = 1024;
|
|
192800
|
+
var REQUIRED_COMMANDS2, VALID_CAPABILITY_REASON_CODES2, REQUIRED_HELPERS2, STYLE_MARK_SCHEMA_NAMES2, INLINE_FORMAT_OPERATIONS2, SUPPORTED_STEP_OPS2, SUPPORTED_NON_UNIFORM_STRATEGIES2, SUPPORTED_SET_MARKS2, REGEX_MAX_PATTERN_LENGTH2 = 1024;
|
|
192312
192801
|
var init_capabilities_adapter = __esm(() => {
|
|
192313
192802
|
init_src();
|
|
192314
192803
|
REQUIRED_COMMANDS2 = {
|
|
@@ -192324,6 +192813,7 @@ var init_capabilities_adapter = __esm(() => {
|
|
|
192324
192813
|
"lists.outdent": ["setTextSelection", "decreaseListIndent"],
|
|
192325
192814
|
"lists.restart": ["setTextSelection", "restartNumbering"],
|
|
192326
192815
|
"lists.exit": ["exitListItemAt"],
|
|
192816
|
+
"blocks.delete": ["deleteBlockNodeById"],
|
|
192327
192817
|
"comments.create": ["addComment", "setTextSelection", "addCommentReply"],
|
|
192328
192818
|
"comments.patch": ["editComment", "moveComment", "resolveComment", "setCommentInternal"],
|
|
192329
192819
|
"comments.delete": ["removeComment"],
|
|
@@ -192335,6 +192825,9 @@ var init_capabilities_adapter = __esm(() => {
|
|
|
192335
192825
|
]
|
|
192336
192826
|
};
|
|
192337
192827
|
VALID_CAPABILITY_REASON_CODES2 = new Set(CAPABILITY_REASON_CODES);
|
|
192828
|
+
REQUIRED_HELPERS2 = {
|
|
192829
|
+
"blocks.delete": (editor) => typeof editor.helpers?.blockNode?.getBlockNodeById === "function"
|
|
192830
|
+
};
|
|
192338
192831
|
STYLE_MARK_SCHEMA_NAMES2 = {
|
|
192339
192832
|
bold: "bold",
|
|
192340
192833
|
italic: "italic",
|
|
@@ -192830,7 +193323,7 @@ function addNode2(child, target) {
|
|
|
192830
193323
|
else
|
|
192831
193324
|
target.push(child);
|
|
192832
193325
|
}
|
|
192833
|
-
function
|
|
193326
|
+
function addRange2($start, $end, depth, target) {
|
|
192834
193327
|
let node3 = ($end || $start).node(depth);
|
|
192835
193328
|
let startIndex = 0, endIndex = $end ? $end.index(depth) : node3.childCount;
|
|
192836
193329
|
if ($start) {
|
|
@@ -192855,28 +193348,28 @@ function replaceThreeWay2($from, $start, $end, $to, depth) {
|
|
|
192855
193348
|
let openStart = $from.depth > depth && joinable2($from, $start, depth + 1);
|
|
192856
193349
|
let openEnd = $to.depth > depth && joinable2($end, $to, depth + 1);
|
|
192857
193350
|
let content2 = [];
|
|
192858
|
-
|
|
193351
|
+
addRange2(null, $from, depth, content2);
|
|
192859
193352
|
if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {
|
|
192860
193353
|
checkJoin2(openStart, openEnd);
|
|
192861
193354
|
addNode2(close2(openStart, replaceThreeWay2($from, $start, $end, $to, depth + 1)), content2);
|
|
192862
193355
|
} else {
|
|
192863
193356
|
if (openStart)
|
|
192864
193357
|
addNode2(close2(openStart, replaceTwoWay2($from, $start, depth + 1)), content2);
|
|
192865
|
-
|
|
193358
|
+
addRange2($start, $end, depth, content2);
|
|
192866
193359
|
if (openEnd)
|
|
192867
193360
|
addNode2(close2(openEnd, replaceTwoWay2($end, $to, depth + 1)), content2);
|
|
192868
193361
|
}
|
|
192869
|
-
|
|
193362
|
+
addRange2($to, null, depth, content2);
|
|
192870
193363
|
return new Fragment4(content2);
|
|
192871
193364
|
}
|
|
192872
193365
|
function replaceTwoWay2($from, $to, depth) {
|
|
192873
193366
|
let content2 = [];
|
|
192874
|
-
|
|
193367
|
+
addRange2(null, $from, depth, content2);
|
|
192875
193368
|
if ($from.depth > depth) {
|
|
192876
193369
|
let type = joinable2($from, $to, depth + 1);
|
|
192877
193370
|
addNode2(close2(type, replaceTwoWay2($from, $to, depth + 1)), content2);
|
|
192878
193371
|
}
|
|
192879
|
-
|
|
193372
|
+
addRange2($to, null, depth, content2);
|
|
192880
193373
|
return new Fragment4(content2);
|
|
192881
193374
|
}
|
|
192882
193375
|
function prepareSliceForReplace2(slice2, $along) {
|
|
@@ -197394,13 +197887,28 @@ function buildBlockIndex2(editor) {
|
|
|
197394
197887
|
registerKey(`${nodeType}:${aliasId}`, candidate);
|
|
197395
197888
|
}
|
|
197396
197889
|
});
|
|
197397
|
-
return { candidates, byId };
|
|
197890
|
+
return { candidates, byId, ambiguous };
|
|
197398
197891
|
}
|
|
197399
197892
|
function findBlockById2(index2, address2) {
|
|
197400
197893
|
if (address2.kind !== "block")
|
|
197401
197894
|
return;
|
|
197402
197895
|
return index2.byId.get(`${address2.nodeType}:${address2.nodeId}`);
|
|
197403
197896
|
}
|
|
197897
|
+
function findBlockByIdStrict2(index2, address2) {
|
|
197898
|
+
const key2 = `${address2.nodeType}:${address2.nodeId}`;
|
|
197899
|
+
if (index2.ambiguous.has(key2)) {
|
|
197900
|
+
throw new DocumentApiAdapterError3("AMBIGUOUS_TARGET", `Multiple blocks share key "${key2}".`, {
|
|
197901
|
+
target: address2
|
|
197902
|
+
});
|
|
197903
|
+
}
|
|
197904
|
+
const candidate = index2.byId.get(key2);
|
|
197905
|
+
if (!candidate) {
|
|
197906
|
+
throw new DocumentApiAdapterError3("TARGET_NOT_FOUND", `Block "${key2}" was not found.`, {
|
|
197907
|
+
target: address2
|
|
197908
|
+
});
|
|
197909
|
+
}
|
|
197910
|
+
return candidate;
|
|
197911
|
+
}
|
|
197404
197912
|
function isTextBlockCandidate2(candidate) {
|
|
197405
197913
|
const node3 = candidate.node;
|
|
197406
197914
|
return Boolean(node3?.inlineContent || node3?.isTextblock);
|
|
@@ -197528,7 +198036,12 @@ function checkRevision2(editor, expectedRevision) {
|
|
|
197528
198036
|
return;
|
|
197529
198037
|
const current = getRevision2(editor);
|
|
197530
198038
|
if (expectedRevision !== current) {
|
|
197531
|
-
throw new PlanError2("REVISION_MISMATCH", `REVISION_MISMATCH — expected revision "${expectedRevision}" but document is at "${current}"
|
|
198039
|
+
throw new PlanError2("REVISION_MISMATCH", `REVISION_MISMATCH — expected revision "${expectedRevision}" but document is at "${current}". Re-run query.match to obtain a fresh ref.`, undefined, {
|
|
198040
|
+
expectedRevision,
|
|
198041
|
+
currentRevision: current,
|
|
198042
|
+
refStability: "ephemeral",
|
|
198043
|
+
remediation: "Re-run query.match() to obtain a fresh ref valid for the current revision."
|
|
198044
|
+
});
|
|
197532
198045
|
}
|
|
197533
198046
|
}
|
|
197534
198047
|
var revisionMap2, subscribedEditors2;
|
|
@@ -197790,7 +198303,9 @@ function captureRunsInRange2(editor, blockPos, from3, to) {
|
|
|
197790
198303
|
return;
|
|
197791
198304
|
}
|
|
197792
198305
|
if (node3.isLeaf) {
|
|
198306
|
+
const start2 = offset2;
|
|
197793
198307
|
offset2 += 1;
|
|
198308
|
+
maybePushRun(start2, offset2, []);
|
|
197794
198309
|
return;
|
|
197795
198310
|
}
|
|
197796
198311
|
let isFirstChild = true;
|
|
@@ -198303,12 +198818,73 @@ var init_block_strategy = __esm(() => {
|
|
|
198303
198818
|
function isAssertStep2(step) {
|
|
198304
198819
|
return step.op === "assert";
|
|
198305
198820
|
}
|
|
198821
|
+
function isCreateOp2(op) {
|
|
198822
|
+
return op === "create.heading" || op === "create.paragraph";
|
|
198823
|
+
}
|
|
198306
198824
|
function isSelectWhere2(where) {
|
|
198307
198825
|
return where.by === "select";
|
|
198308
198826
|
}
|
|
198309
198827
|
function isRefWhere2(where) {
|
|
198310
198828
|
return where.by === "ref";
|
|
198311
198829
|
}
|
|
198830
|
+
function validateCreateStepPosition2(step) {
|
|
198831
|
+
const args3 = step.args;
|
|
198832
|
+
if (args3.position === undefined || args3.position === null) {
|
|
198833
|
+
args3.position = "after";
|
|
198834
|
+
return;
|
|
198835
|
+
}
|
|
198836
|
+
if (!VALID_CREATE_POSITIONS2.includes(args3.position)) {
|
|
198837
|
+
throw planError2("INVALID_INPUT", `create step requires args.position to be 'before' or 'after'`, step.id, {
|
|
198838
|
+
receivedPosition: args3.position,
|
|
198839
|
+
allowedValues: [...VALID_CREATE_POSITIONS2],
|
|
198840
|
+
default: "after"
|
|
198841
|
+
});
|
|
198842
|
+
}
|
|
198843
|
+
}
|
|
198844
|
+
function resolveCreateAnchorFromTargets2(targets, position4, stepId) {
|
|
198845
|
+
const target = targets[0];
|
|
198846
|
+
if (!target)
|
|
198847
|
+
throw planError2("INVALID_INPUT", "create step has no resolved targets", stepId);
|
|
198848
|
+
if (target.kind === "range")
|
|
198849
|
+
return target.blockId;
|
|
198850
|
+
const segments = target.segments;
|
|
198851
|
+
if (!segments.length)
|
|
198852
|
+
throw planError2("INVALID_INPUT", "span target has no segments", stepId);
|
|
198853
|
+
return position4 === "before" ? segments[0].blockId : segments[segments.length - 1].blockId;
|
|
198854
|
+
}
|
|
198855
|
+
function validateInsertionContext2(editor, index2, step, stepIndex, anchorBlockId, position4) {
|
|
198856
|
+
const candidate = index2.candidates.find((c2) => c2.nodeId === anchorBlockId);
|
|
198857
|
+
if (!candidate)
|
|
198858
|
+
return;
|
|
198859
|
+
const paragraphType = editor.state.schema?.nodes?.paragraph;
|
|
198860
|
+
if (!paragraphType)
|
|
198861
|
+
return;
|
|
198862
|
+
const resolvedPos = editor.state.doc.resolve(candidate.pos);
|
|
198863
|
+
const parent = resolvedPos.parent;
|
|
198864
|
+
const anchorIndex = resolvedPos.index();
|
|
198865
|
+
const insertionIndex = position4 === "before" ? anchorIndex : anchorIndex + 1;
|
|
198866
|
+
const canInsert = typeof parent.canReplaceWith === "function" ? parent.canReplaceWith(insertionIndex, insertionIndex, paragraphType) : parent.type.contentMatch.matchType(paragraphType);
|
|
198867
|
+
if (!canInsert) {
|
|
198868
|
+
const allowedChildTypes = [];
|
|
198869
|
+
const match2 = parent.type.contentMatch;
|
|
198870
|
+
for (const nodeType of Object.values(editor.state.schema.nodes)) {
|
|
198871
|
+
if (match2.matchType(nodeType)) {
|
|
198872
|
+
allowedChildTypes.push(nodeType.name);
|
|
198873
|
+
}
|
|
198874
|
+
}
|
|
198875
|
+
throw planError2("INVALID_INSERTION_CONTEXT", `Cannot create ${step.op} inside ${parent.type.name}`, step.id, {
|
|
198876
|
+
stepIndex,
|
|
198877
|
+
stepId: step.id,
|
|
198878
|
+
operation: step.op,
|
|
198879
|
+
anchorBlockId,
|
|
198880
|
+
parentType: parent.type.name,
|
|
198881
|
+
allowedChildTypes,
|
|
198882
|
+
insertionIndex,
|
|
198883
|
+
requestedChildType: "paragraph",
|
|
198884
|
+
requestedSemanticType: step.op === "create.heading" ? "heading" : "paragraph"
|
|
198885
|
+
});
|
|
198886
|
+
}
|
|
198887
|
+
}
|
|
198312
198888
|
function isV3Ref2(payload) {
|
|
198313
198889
|
return typeof payload === "object" && payload !== null && "v" in payload && payload.v === 3;
|
|
198314
198890
|
}
|
|
@@ -198536,7 +199112,14 @@ function decodeTextRefPayload2(encoded, stepId) {
|
|
|
198536
199112
|
function resolveV3TextRef2(editor, index2, step, refData) {
|
|
198537
199113
|
const currentRevision = getRevision2(editor);
|
|
198538
199114
|
if (refData.rev !== currentRevision) {
|
|
198539
|
-
throw planError2("REVISION_MISMATCH", `
|
|
199115
|
+
throw planError2("REVISION_MISMATCH", `Text ref is ephemeral and revision-scoped. Re-run query.match to obtain a fresh handle.ref for revision ${currentRevision}.`, step.id, {
|
|
199116
|
+
refRevision: refData.rev,
|
|
199117
|
+
currentRevision,
|
|
199118
|
+
refStability: "ephemeral",
|
|
199119
|
+
refScope: refData.scope,
|
|
199120
|
+
blockId: refData.segments?.[0]?.blockId,
|
|
199121
|
+
remediation: `Re-run query.match() to obtain a fresh ref valid for the current revision.`
|
|
199122
|
+
});
|
|
198540
199123
|
}
|
|
198541
199124
|
if (!refData.segments?.length)
|
|
198542
199125
|
return [];
|
|
@@ -198635,7 +199218,11 @@ function resolveStepTargets2(editor, index2, step) {
|
|
|
198635
199218
|
});
|
|
198636
199219
|
if (refWhere) {
|
|
198637
199220
|
if (targets.length === 0) {
|
|
198638
|
-
throw planError2("MATCH_NOT_FOUND", `ref "${refWhere.ref}" did not resolve to any targets`, step.id
|
|
199221
|
+
throw planError2("MATCH_NOT_FOUND", `ref "${refWhere.ref}" did not resolve to any targets`, step.id, {
|
|
199222
|
+
selectorType: "ref",
|
|
199223
|
+
selectorPattern: refWhere.ref,
|
|
199224
|
+
candidateCount: 0
|
|
199225
|
+
});
|
|
198639
199226
|
}
|
|
198640
199227
|
if (targets.length > 1) {
|
|
198641
199228
|
throw planError2("AMBIGUOUS_MATCH", `ref "${refWhere.ref}" resolved to ${targets.length} targets`, step.id, {
|
|
@@ -198654,6 +199241,18 @@ function resolveStepTargets2(editor, index2, step) {
|
|
|
198654
199241
|
}
|
|
198655
199242
|
return targets;
|
|
198656
199243
|
}
|
|
199244
|
+
function buildMatchNotFoundDetails2(step) {
|
|
199245
|
+
const where = step.where;
|
|
199246
|
+
const select2 = "select" in where ? where.select : undefined;
|
|
199247
|
+
const within2 = "within" in where ? where.within : undefined;
|
|
199248
|
+
return {
|
|
199249
|
+
selectorType: select2?.type ?? "unknown",
|
|
199250
|
+
selectorPattern: select2?.pattern ?? "",
|
|
199251
|
+
selectorMode: select2?.mode ?? "contains",
|
|
199252
|
+
searchScope: within2?.blockId ?? "document",
|
|
199253
|
+
candidateCount: 0
|
|
199254
|
+
};
|
|
199255
|
+
}
|
|
198657
199256
|
function applyCardinalityCheck2(step, targets) {
|
|
198658
199257
|
const where = step.where;
|
|
198659
199258
|
if (!("require" in where) || where.require === undefined)
|
|
@@ -198661,11 +199260,11 @@ function applyCardinalityCheck2(step, targets) {
|
|
|
198661
199260
|
const require2 = where.require;
|
|
198662
199261
|
if (require2 === "first") {
|
|
198663
199262
|
if (targets.length === 0) {
|
|
198664
|
-
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges", step.id);
|
|
199263
|
+
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges", step.id, buildMatchNotFoundDetails2(step));
|
|
198665
199264
|
}
|
|
198666
199265
|
} else if (require2 === "exactlyOne") {
|
|
198667
199266
|
if (targets.length === 0) {
|
|
198668
|
-
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges", step.id);
|
|
199267
|
+
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges", step.id, buildMatchNotFoundDetails2(step));
|
|
198669
199268
|
}
|
|
198670
199269
|
if (targets.length > 1) {
|
|
198671
199270
|
throw planError2("AMBIGUOUS_MATCH", `selector matched ${targets.length} ranges, expected exactly one`, step.id, {
|
|
@@ -198674,47 +199273,119 @@ function applyCardinalityCheck2(step, targets) {
|
|
|
198674
199273
|
}
|
|
198675
199274
|
} else if (require2 === "all") {
|
|
198676
199275
|
if (targets.length === 0) {
|
|
198677
|
-
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges", step.id);
|
|
199276
|
+
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges", step.id, buildMatchNotFoundDetails2(step));
|
|
198678
199277
|
}
|
|
198679
199278
|
}
|
|
198680
199279
|
}
|
|
198681
|
-
function
|
|
198682
|
-
|
|
198683
|
-
|
|
198684
|
-
|
|
198685
|
-
|
|
198686
|
-
|
|
198687
|
-
|
|
198688
|
-
|
|
198689
|
-
|
|
199280
|
+
function normalizeOpForMatrix2(op) {
|
|
199281
|
+
return op.startsWith("create.") ? "create.*" : op;
|
|
199282
|
+
}
|
|
199283
|
+
function classifyOverlap2(stepA, stepB) {
|
|
199284
|
+
const rangesA = extractBlockRanges2(stepA);
|
|
199285
|
+
const rangesB = extractBlockRanges2(stepB);
|
|
199286
|
+
const opA = normalizeOpForMatrix2(stepA.step.op);
|
|
199287
|
+
const opB = normalizeOpForMatrix2(stepB.step.op);
|
|
199288
|
+
const isCreateA = opA === "create.*";
|
|
199289
|
+
const isCreateB = opB === "create.*";
|
|
199290
|
+
for (const [blockId, aEntries] of rangesA) {
|
|
199291
|
+
const bEntries = rangesB.get(blockId);
|
|
199292
|
+
if (!bEntries)
|
|
199293
|
+
continue;
|
|
199294
|
+
for (const a2 of aEntries) {
|
|
199295
|
+
for (const b3 of bEntries) {
|
|
199296
|
+
if (isCreateA || isCreateB) {
|
|
199297
|
+
return { overlapClass: "same_block", blockId, rangeA: a2, rangeB: b3 };
|
|
198690
199298
|
}
|
|
199299
|
+
if (a2.to <= b3.from || b3.to <= a2.from)
|
|
199300
|
+
continue;
|
|
199301
|
+
if (a2.from === b3.from && a2.to === b3.to) {
|
|
199302
|
+
return { overlapClass: "same_target", blockId, rangeA: a2, rangeB: b3 };
|
|
199303
|
+
}
|
|
199304
|
+
return { overlapClass: "overlapping", blockId, rangeA: a2, rangeB: b3 };
|
|
198691
199305
|
}
|
|
198692
199306
|
}
|
|
198693
199307
|
}
|
|
198694
|
-
|
|
198695
|
-
|
|
198696
|
-
|
|
198697
|
-
|
|
198698
|
-
|
|
198699
|
-
|
|
198700
|
-
|
|
199308
|
+
return;
|
|
199309
|
+
}
|
|
199310
|
+
function extractBlockRanges2(compiled) {
|
|
199311
|
+
const result = new Map;
|
|
199312
|
+
for (const target of compiled.targets) {
|
|
199313
|
+
if (target.kind === "range") {
|
|
199314
|
+
pushBlockRange2(result, target.blockId, target.from, target.to);
|
|
199315
|
+
} else {
|
|
199316
|
+
for (const seg of target.segments) {
|
|
199317
|
+
pushBlockRange2(result, seg.blockId, seg.from, seg.to);
|
|
198701
199318
|
}
|
|
198702
199319
|
}
|
|
198703
199320
|
}
|
|
199321
|
+
return result;
|
|
199322
|
+
}
|
|
199323
|
+
function pushBlockRange2(map6, blockId, from3, to) {
|
|
199324
|
+
let entries = map6.get(blockId);
|
|
199325
|
+
if (!entries) {
|
|
199326
|
+
entries = [];
|
|
199327
|
+
map6.set(blockId, entries);
|
|
199328
|
+
}
|
|
199329
|
+
entries.push({ from: from3, to });
|
|
198704
199330
|
}
|
|
198705
|
-
function
|
|
198706
|
-
let
|
|
198707
|
-
|
|
198708
|
-
|
|
198709
|
-
|
|
199331
|
+
function validateStepInteractions2(steps) {
|
|
199332
|
+
for (let i4 = 0;i4 < steps.length; i4++) {
|
|
199333
|
+
for (let j2 = i4 + 1;j2 < steps.length; j2++) {
|
|
199334
|
+
const stepA = steps[i4];
|
|
199335
|
+
const stepB = steps[j2];
|
|
199336
|
+
if (MATRIX_EXEMPT_OPS2.has(stepA.step.op) || MATRIX_EXEMPT_OPS2.has(stepB.step.op))
|
|
199337
|
+
continue;
|
|
199338
|
+
const overlap = classifyOverlap2(stepA, stepB);
|
|
199339
|
+
if (!overlap)
|
|
199340
|
+
continue;
|
|
199341
|
+
const opA = normalizeOpForMatrix2(stepA.step.op);
|
|
199342
|
+
const opB = normalizeOpForMatrix2(stepB.step.op);
|
|
199343
|
+
const matrixKey = `${opA}::${opB}::${overlap.overlapClass}`;
|
|
199344
|
+
const verdict = STEP_INTERACTION_MATRIX2.get(matrixKey) ?? "reject";
|
|
199345
|
+
if (verdict === "reject") {
|
|
199346
|
+
throw planError2("PLAN_CONFLICT_OVERLAP", `steps "${stepA.step.id}" and "${stepB.step.id}" target overlapping ranges in block "${overlap.blockId}"`, stepB.step.id, {
|
|
199347
|
+
blockId: overlap.blockId,
|
|
199348
|
+
stepIdA: stepA.step.id,
|
|
199349
|
+
stepIdB: stepB.step.id,
|
|
199350
|
+
opKeyA: stepA.step.op,
|
|
199351
|
+
opKeyB: stepB.step.op,
|
|
199352
|
+
rangeA: overlap.rangeA,
|
|
199353
|
+
rangeB: overlap.rangeB,
|
|
199354
|
+
overlapRegion: {
|
|
199355
|
+
from: Math.max(overlap.rangeA.from, overlap.rangeB.from),
|
|
199356
|
+
to: Math.min(overlap.rangeA.to, overlap.rangeB.to)
|
|
199357
|
+
},
|
|
199358
|
+
matrixVerdict: verdict,
|
|
199359
|
+
matrixKey
|
|
199360
|
+
});
|
|
199361
|
+
}
|
|
199362
|
+
}
|
|
199363
|
+
}
|
|
199364
|
+
}
|
|
199365
|
+
function assertNoDuplicateBlockIds2(index2) {
|
|
199366
|
+
const seen = new Map;
|
|
199367
|
+
const duplicates = [];
|
|
199368
|
+
for (const candidate of index2.candidates) {
|
|
199369
|
+
const count = seen.get(candidate.nodeId) ?? 0;
|
|
199370
|
+
seen.set(candidate.nodeId, count + 1);
|
|
199371
|
+
if (count === 1)
|
|
199372
|
+
duplicates.push(candidate.nodeId);
|
|
199373
|
+
}
|
|
199374
|
+
if (duplicates.length > 0) {
|
|
199375
|
+
throw planError2("DOCUMENT_IDENTITY_CONFLICT", "Document contains blocks with duplicate identities. This must be resolved before mutations can be applied.", undefined, {
|
|
199376
|
+
duplicateBlockIds: duplicates,
|
|
199377
|
+
blockCount: duplicates.length,
|
|
199378
|
+
remediation: "Re-import the document or call document.repair() to assign unique identities."
|
|
199379
|
+
});
|
|
198710
199380
|
}
|
|
198711
|
-
blockRanges.push({ stepId, from: from3, to });
|
|
198712
199381
|
}
|
|
198713
199382
|
function compilePlan2(editor, steps) {
|
|
198714
199383
|
if (steps.length > MAX_PLAN_STEPS) {
|
|
198715
199384
|
throw planError2("INVALID_INPUT", `plan contains ${steps.length} steps, maximum is ${MAX_PLAN_STEPS}`);
|
|
198716
199385
|
}
|
|
199386
|
+
const compiledRevision = getRevision2(editor);
|
|
198717
199387
|
const index2 = getBlockIndex2(editor);
|
|
199388
|
+
assertNoDuplicateBlockIds2(index2);
|
|
198718
199389
|
const mutationSteps = [];
|
|
198719
199390
|
const assertSteps = [];
|
|
198720
199391
|
const seenIds = new Set;
|
|
@@ -198728,25 +199399,36 @@ function compilePlan2(editor, steps) {
|
|
|
198728
199399
|
seenIds.add(step.id);
|
|
198729
199400
|
}
|
|
198730
199401
|
let totalTargets = 0;
|
|
199402
|
+
let stepIndex = 0;
|
|
198731
199403
|
for (const step of steps) {
|
|
198732
199404
|
if (isAssertStep2(step)) {
|
|
198733
199405
|
assertSteps.push(step);
|
|
199406
|
+
stepIndex++;
|
|
198734
199407
|
continue;
|
|
198735
199408
|
}
|
|
198736
199409
|
if (!hasStepExecutor2(step.op)) {
|
|
198737
199410
|
throw planError2("INVALID_INPUT", `unknown step op "${step.op}"`, step.id);
|
|
198738
199411
|
}
|
|
199412
|
+
if (isCreateOp2(step.op)) {
|
|
199413
|
+
validateCreateStepPosition2(step);
|
|
199414
|
+
}
|
|
198739
199415
|
const targets = resolveStepTargets2(editor, index2, step);
|
|
199416
|
+
if (isCreateOp2(step.op) && targets.length > 0) {
|
|
199417
|
+
const position4 = step.args.position ?? "after";
|
|
199418
|
+
const anchorBlockId = resolveCreateAnchorFromTargets2(targets, position4, step.id);
|
|
199419
|
+
validateInsertionContext2(editor, index2, step, stepIndex, anchorBlockId, position4);
|
|
199420
|
+
}
|
|
198740
199421
|
totalTargets += targets.length;
|
|
198741
199422
|
mutationSteps.push({ step, targets });
|
|
199423
|
+
stepIndex++;
|
|
198742
199424
|
}
|
|
198743
199425
|
if (totalTargets > MAX_PLAN_RESOLVED_TARGETS) {
|
|
198744
199426
|
throw planError2("INVALID_INPUT", `plan resolved ${totalTargets} total targets, maximum is ${MAX_PLAN_RESOLVED_TARGETS}`);
|
|
198745
199427
|
}
|
|
198746
|
-
|
|
198747
|
-
return { mutationSteps, assertSteps };
|
|
199428
|
+
validateStepInteractions2(mutationSteps);
|
|
199429
|
+
return { mutationSteps, assertSteps, compiledRevision };
|
|
198748
199430
|
}
|
|
198749
|
-
var REF_HANDLERS2;
|
|
199431
|
+
var VALID_CREATE_POSITIONS2, REF_HANDLERS2, STEP_INTERACTION_MATRIX2, MATRIX_EXEMPT_OPS2;
|
|
198750
199432
|
var init_compiler = __esm(() => {
|
|
198751
199433
|
init_src();
|
|
198752
199434
|
init_errors4();
|
|
@@ -198757,6 +199439,7 @@ var init_compiler = __esm(() => {
|
|
|
198757
199439
|
init_text_strategy();
|
|
198758
199440
|
init_block_strategy();
|
|
198759
199441
|
init_node_address_resolver();
|
|
199442
|
+
VALID_CREATE_POSITIONS2 = ["before", "after"];
|
|
198760
199443
|
REF_HANDLERS2 = [
|
|
198761
199444
|
{ prefix: "text:", handler: resolveTextRef2 },
|
|
198762
199445
|
{
|
|
@@ -198773,6 +199456,48 @@ var init_compiler = __esm(() => {
|
|
|
198773
199456
|
},
|
|
198774
199457
|
{ prefix: "", handler: resolveBlockRef2 }
|
|
198775
199458
|
];
|
|
199459
|
+
STEP_INTERACTION_MATRIX2 = new Map([
|
|
199460
|
+
["text.rewrite::format.apply::same_target", "allow"],
|
|
199461
|
+
["text.rewrite::text.rewrite::same_target", "reject"],
|
|
199462
|
+
["text.rewrite::text.delete::overlapping", "reject"],
|
|
199463
|
+
["text.rewrite::create.*::same_block", "allow"],
|
|
199464
|
+
["text.rewrite::text.insert::same_target", "reject"],
|
|
199465
|
+
["format.apply::format.apply::same_target", "allow"],
|
|
199466
|
+
["format.apply::text.rewrite::same_target", "reject"],
|
|
199467
|
+
["format.apply::text.delete::overlapping", "reject"],
|
|
199468
|
+
["format.apply::create.*::same_block", "allow"],
|
|
199469
|
+
["format.apply::text.insert::same_target", "allow"],
|
|
199470
|
+
["text.delete::text.rewrite::overlapping", "reject"],
|
|
199471
|
+
["text.delete::text.delete::overlapping", "reject"],
|
|
199472
|
+
["text.delete::format.apply::overlapping", "reject"],
|
|
199473
|
+
["text.delete::create.*::same_block", "allow"],
|
|
199474
|
+
["text.delete::text.insert::overlapping", "reject"],
|
|
199475
|
+
["create.*::text.rewrite::same_block", "allow"],
|
|
199476
|
+
["create.*::format.apply::same_block", "allow"],
|
|
199477
|
+
["create.*::text.delete::same_block", "allow"],
|
|
199478
|
+
["create.*::create.*::same_block", "allow"],
|
|
199479
|
+
["create.*::text.insert::same_block", "allow"],
|
|
199480
|
+
["text.insert::format.apply::same_target", "allow"],
|
|
199481
|
+
["text.insert::text.rewrite::same_target", "reject"],
|
|
199482
|
+
["text.insert::text.delete::overlapping", "reject"],
|
|
199483
|
+
["text.insert::create.*::same_block", "allow"],
|
|
199484
|
+
["text.insert::text.insert::same_target", "reject"]
|
|
199485
|
+
]);
|
|
199486
|
+
MATRIX_EXEMPT_OPS2 = new Set(["assert"]);
|
|
199487
|
+
});
|
|
199488
|
+
|
|
199489
|
+
// ../../packages/super-editor/src/document-api-adapters/plan-engine/create-insertion.ts
|
|
199490
|
+
function resolveBlockInsertionPos2(editor, anchorBlockId, position4, stepId) {
|
|
199491
|
+
const index2 = getBlockIndex2(editor);
|
|
199492
|
+
const candidate = index2.candidates.find((c2) => c2.nodeId === anchorBlockId);
|
|
199493
|
+
if (!candidate) {
|
|
199494
|
+
throw planError2("TARGET_NOT_FOUND", `block "${anchorBlockId}" not found`, stepId);
|
|
199495
|
+
}
|
|
199496
|
+
return position4 === "before" ? candidate.pos : candidate.end;
|
|
199497
|
+
}
|
|
199498
|
+
var init_create_insertion = __esm(() => {
|
|
199499
|
+
init_index_cache();
|
|
199500
|
+
init_errors4();
|
|
198776
199501
|
});
|
|
198777
199502
|
|
|
198778
199503
|
// ../../packages/super-editor/src/document-api-adapters/helpers/transaction-meta.ts
|
|
@@ -198840,12 +199565,36 @@ function buildMarksFromSetMarks2(editor, setMarks) {
|
|
|
198840
199565
|
marks.push(schema.marks.strike.create());
|
|
198841
199566
|
return marks;
|
|
198842
199567
|
}
|
|
198843
|
-
function
|
|
198844
|
-
const
|
|
198845
|
-
|
|
198846
|
-
|
|
198847
|
-
|
|
198848
|
-
|
|
199568
|
+
function applyInlineMarkPatches2(editor, tr, absFrom, absTo, inline) {
|
|
199569
|
+
const { schema } = editor.state;
|
|
199570
|
+
let changed = false;
|
|
199571
|
+
const markEntries = [
|
|
199572
|
+
[inline.bold, schema.marks.bold],
|
|
199573
|
+
[inline.italic, schema.marks.italic],
|
|
199574
|
+
[inline.underline, schema.marks.underline],
|
|
199575
|
+
[inline.strike, schema.marks.strike]
|
|
199576
|
+
];
|
|
199577
|
+
for (const [value, markType] of markEntries) {
|
|
199578
|
+
if (value === undefined || !markType)
|
|
199579
|
+
continue;
|
|
199580
|
+
if (value) {
|
|
199581
|
+
tr.addMark(absFrom, absTo, markType.create());
|
|
199582
|
+
} else {
|
|
199583
|
+
tr.removeMark(absFrom, absTo, markType);
|
|
199584
|
+
}
|
|
199585
|
+
changed = true;
|
|
199586
|
+
}
|
|
199587
|
+
return changed;
|
|
199588
|
+
}
|
|
199589
|
+
function resolveCreateAnchorBlockId2(target, position4, stepId) {
|
|
199590
|
+
if (target.kind === "range") {
|
|
199591
|
+
return target.blockId;
|
|
199592
|
+
}
|
|
199593
|
+
const segments = target.segments;
|
|
199594
|
+
if (!segments.length) {
|
|
199595
|
+
throw planError2("INVALID_INPUT", "span target has no segments", stepId);
|
|
199596
|
+
}
|
|
199597
|
+
return position4 === "before" ? segments[0].blockId : segments[segments.length - 1].blockId;
|
|
198849
199598
|
}
|
|
198850
199599
|
function executeTextRewrite2(editor, tr, target, step, mapping) {
|
|
198851
199600
|
const absFrom = mapping.map(target.absFrom);
|
|
@@ -198892,25 +199641,7 @@ function executeTextDelete2(_editor, tr, target, _step, mapping) {
|
|
|
198892
199641
|
function executeStyleApply3(editor, tr, target, step, mapping) {
|
|
198893
199642
|
const absFrom = mapping.map(target.absFrom);
|
|
198894
199643
|
const absTo = mapping.map(target.absTo);
|
|
198895
|
-
|
|
198896
|
-
let changed = false;
|
|
198897
|
-
const markEntries = [
|
|
198898
|
-
["bold", step.args.inline.bold, schema.marks.bold],
|
|
198899
|
-
["italic", step.args.inline.italic, schema.marks.italic],
|
|
198900
|
-
["underline", step.args.inline.underline, schema.marks.underline],
|
|
198901
|
-
["strike", step.args.inline.strike, schema.marks.strike]
|
|
198902
|
-
];
|
|
198903
|
-
for (const [, value, markType] of markEntries) {
|
|
198904
|
-
if (value === undefined || !markType)
|
|
198905
|
-
continue;
|
|
198906
|
-
if (value) {
|
|
198907
|
-
tr.addMark(absFrom, absTo, markType.create());
|
|
198908
|
-
} else {
|
|
198909
|
-
tr.removeMark(absFrom, absTo, markType);
|
|
198910
|
-
}
|
|
198911
|
-
changed = true;
|
|
198912
|
-
}
|
|
198913
|
-
return { changed };
|
|
199644
|
+
return { changed: applyInlineMarkPatches2(editor, tr, absFrom, absTo, step.args.inline) };
|
|
198914
199645
|
}
|
|
198915
199646
|
function validateMappedSpanContiguity2(target, mapping, stepId) {
|
|
198916
199647
|
let lastMappedEnd = -1;
|
|
@@ -198981,29 +199712,11 @@ function executeSpanTextDelete2(_editor, tr, target, step, mapping) {
|
|
|
198981
199712
|
}
|
|
198982
199713
|
function executeSpanStyleApply2(editor, tr, target, step, mapping) {
|
|
198983
199714
|
validateMappedSpanContiguity2(target, mapping, step.id);
|
|
198984
|
-
const { schema } = editor.state;
|
|
198985
|
-
let changed = false;
|
|
198986
199715
|
const firstSeg = target.segments[0];
|
|
198987
199716
|
const lastSeg = target.segments[target.segments.length - 1];
|
|
198988
199717
|
const absFrom = mapping.map(firstSeg.absFrom, 1);
|
|
198989
199718
|
const absTo = mapping.map(lastSeg.absTo, -1);
|
|
198990
|
-
|
|
198991
|
-
["bold", step.args.inline.bold, schema.marks.bold],
|
|
198992
|
-
["italic", step.args.inline.italic, schema.marks.italic],
|
|
198993
|
-
["underline", step.args.inline.underline, schema.marks.underline],
|
|
198994
|
-
["strike", step.args.inline.strike, schema.marks.strike]
|
|
198995
|
-
];
|
|
198996
|
-
for (const [, value, markType] of markEntries) {
|
|
198997
|
-
if (value === undefined || !markType)
|
|
198998
|
-
continue;
|
|
198999
|
-
if (value) {
|
|
199000
|
-
tr.addMark(absFrom, absTo, markType.create());
|
|
199001
|
-
} else {
|
|
199002
|
-
tr.removeMark(absFrom, absTo, markType);
|
|
199003
|
-
}
|
|
199004
|
-
changed = true;
|
|
199005
|
-
}
|
|
199006
|
-
return { changed };
|
|
199719
|
+
return { changed: applyInlineMarkPatches2(editor, tr, absFrom, absTo, step.args.inline) };
|
|
199007
199720
|
}
|
|
199008
199721
|
function getReplacementText2(replacement) {
|
|
199009
199722
|
if (replacement.blocks !== undefined) {
|
|
@@ -199146,7 +199859,7 @@ function buildAssertIndex2(doc4) {
|
|
|
199146
199859
|
}
|
|
199147
199860
|
return true;
|
|
199148
199861
|
});
|
|
199149
|
-
return { candidates, byId };
|
|
199862
|
+
return { candidates, byId, ambiguous };
|
|
199150
199863
|
}
|
|
199151
199864
|
function resolveAssertScope2(index2, select2, within2) {
|
|
199152
199865
|
if (!within2)
|
|
@@ -199202,11 +199915,14 @@ function executeAssertStep2(_editor, tr, step) {
|
|
|
199202
199915
|
}
|
|
199203
199916
|
function executeCreateStep2(editor, tr, step, targets, mapping) {
|
|
199204
199917
|
const target = targets[0];
|
|
199205
|
-
if (!target
|
|
199206
|
-
throw planError2("INVALID_INPUT", `${step.op} step requires
|
|
199918
|
+
if (!target) {
|
|
199919
|
+
throw planError2("INVALID_INPUT", `${step.op} step requires at least one target`, step.id);
|
|
199207
199920
|
}
|
|
199208
199921
|
const args3 = step.args;
|
|
199209
|
-
const
|
|
199922
|
+
const position4 = args3.position ?? "after";
|
|
199923
|
+
const anchorBlockId = resolveCreateAnchorBlockId2(target, position4, step.id);
|
|
199924
|
+
const anchorPos = resolveBlockInsertionPos2(editor, anchorBlockId, position4, step.id);
|
|
199925
|
+
const pos = mapping.map(anchorPos);
|
|
199210
199926
|
const paragraphType = editor.state.schema?.nodes?.paragraph;
|
|
199211
199927
|
if (!paragraphType) {
|
|
199212
199928
|
throw planError2("INVALID_INPUT", "paragraph node type not in schema", step.id);
|
|
@@ -199229,6 +199945,7 @@ function executeCreateStep2(editor, tr, step, targets, mapping) {
|
|
|
199229
199945
|
throw planError2("INVALID_INPUT", `could not create ${step.op} node`, step.id);
|
|
199230
199946
|
}
|
|
199231
199947
|
tr.insert(pos, node3);
|
|
199948
|
+
assertNoPostInsertDuplicateIds2(tr.doc, step.id);
|
|
199232
199949
|
return {
|
|
199233
199950
|
stepId: step.id,
|
|
199234
199951
|
op: step.op,
|
|
@@ -199237,6 +199954,32 @@ function executeCreateStep2(editor, tr, step, targets, mapping) {
|
|
|
199237
199954
|
data: { domain: "text", resolutions: [] }
|
|
199238
199955
|
};
|
|
199239
199956
|
}
|
|
199957
|
+
function assertNoPostInsertDuplicateIds2(doc4, stepId) {
|
|
199958
|
+
const seen = new Set;
|
|
199959
|
+
const duplicateSet = new Set;
|
|
199960
|
+
doc4.descendants((node3) => {
|
|
199961
|
+
if (!node3.isTextblock)
|
|
199962
|
+
return true;
|
|
199963
|
+
const attrs = node3.attrs ?? {};
|
|
199964
|
+
const id2 = typeof attrs.paraId === "string" && attrs.paraId || typeof attrs.sdBlockId === "string" && attrs.sdBlockId || typeof attrs.nodeId === "string" && attrs.nodeId;
|
|
199965
|
+
if (!id2)
|
|
199966
|
+
return true;
|
|
199967
|
+
if (seen.has(id2)) {
|
|
199968
|
+
duplicateSet.add(id2);
|
|
199969
|
+
} else {
|
|
199970
|
+
seen.add(id2);
|
|
199971
|
+
}
|
|
199972
|
+
return true;
|
|
199973
|
+
});
|
|
199974
|
+
if (duplicateSet.size > 0) {
|
|
199975
|
+
const duplicates = [...duplicateSet];
|
|
199976
|
+
throw planError2("INTERNAL_ERROR", `create step produced duplicate block identities: [${duplicates.join(", ")}]`, stepId, {
|
|
199977
|
+
source: "executor:checkPostInsertIdentityUniqueness",
|
|
199978
|
+
invariant: "post-insert block IDs must be unique",
|
|
199979
|
+
duplicateBlockIds: duplicates
|
|
199980
|
+
});
|
|
199981
|
+
}
|
|
199982
|
+
}
|
|
199240
199983
|
function runMutationsOnTransaction2(editor, tr, compiled, options) {
|
|
199241
199984
|
const mapping = tr.mapping;
|
|
199242
199985
|
const stepOutcomes = [];
|
|
@@ -199285,6 +200028,15 @@ function executeCompiledPlan2(editor, compiled, options = {}) {
|
|
|
199285
200028
|
const startTime = performance.now();
|
|
199286
200029
|
const revisionBefore = getRevision2(editor);
|
|
199287
200030
|
checkRevision2(editor, options.expectedRevision);
|
|
200031
|
+
if (compiled.compiledRevision !== revisionBefore) {
|
|
200032
|
+
throw planError2("REVISION_CHANGED_SINCE_COMPILE", `Document revision changed between compile and execute. Compiled at "${compiled.compiledRevision}", now at "${revisionBefore}".`, undefined, {
|
|
200033
|
+
compiledRevision: compiled.compiledRevision,
|
|
200034
|
+
currentRevision: revisionBefore,
|
|
200035
|
+
stepCount: compiled.mutationSteps.length,
|
|
200036
|
+
failedAtStep: "pre-execution",
|
|
200037
|
+
remediation: "Re-compile the plan against the current document state."
|
|
200038
|
+
});
|
|
200039
|
+
}
|
|
199288
200040
|
const tr = editor.state.tr;
|
|
199289
200041
|
const changeMode = options.changeMode ?? "direct";
|
|
199290
200042
|
if (changeMode === "tracked") {
|
|
@@ -199325,6 +200077,7 @@ var init_executor = __esm(() => {
|
|
|
199325
200077
|
init_revision_tracker();
|
|
199326
200078
|
init_compiler();
|
|
199327
200079
|
init_index_cache();
|
|
200080
|
+
init_create_insertion();
|
|
199328
200081
|
init_style_resolver();
|
|
199329
200082
|
init_node_address_resolver();
|
|
199330
200083
|
init_adapter_utils();
|
|
@@ -199494,7 +200247,11 @@ function executeDomainCommand2(editor, handler2, options) {
|
|
|
199494
200247
|
args: {},
|
|
199495
200248
|
_handler: handler2
|
|
199496
200249
|
};
|
|
199497
|
-
const compiled = {
|
|
200250
|
+
const compiled = {
|
|
200251
|
+
mutationSteps: [{ step, targets: [] }],
|
|
200252
|
+
assertSteps: [],
|
|
200253
|
+
compiledRevision: getRevision2(editor)
|
|
200254
|
+
};
|
|
199498
200255
|
return executeCompiledPlan2(editor, compiled, { expectedRevision: options?.expectedRevision });
|
|
199499
200256
|
}
|
|
199500
200257
|
function validateWriteRequest2(request, resolved) {
|
|
@@ -199570,7 +200327,8 @@ function writeWrapper2(editor, request, options) {
|
|
|
199570
200327
|
const target = toCompiledTarget2(stepId, op, resolved);
|
|
199571
200328
|
const compiled = {
|
|
199572
200329
|
mutationSteps: [{ step, targets: [target] }],
|
|
199573
|
-
assertSteps: []
|
|
200330
|
+
assertSteps: [],
|
|
200331
|
+
compiledRevision: getRevision2(editor)
|
|
199574
200332
|
};
|
|
199575
200333
|
const receipt2 = executeCompiledPlan2(editor, compiled, {
|
|
199576
200334
|
changeMode: mode,
|
|
@@ -199634,7 +200392,8 @@ function styleApplyWrapper2(editor, input2, options) {
|
|
|
199634
200392
|
};
|
|
199635
200393
|
const compiled = {
|
|
199636
200394
|
mutationSteps: [{ step, targets: [target] }],
|
|
199637
|
-
assertSteps: []
|
|
200395
|
+
assertSteps: [],
|
|
200396
|
+
compiledRevision: getRevision2(editor)
|
|
199638
200397
|
};
|
|
199639
200398
|
const receipt2 = executeCompiledPlan2(editor, compiled, {
|
|
199640
200399
|
changeMode: mode,
|
|
@@ -199646,6 +200405,7 @@ var STUB_WHERE2, MARK_KEY_TO_SCHEMA_NAME2;
|
|
|
199646
200405
|
var init_plan_wrappers = __esm(() => {
|
|
199647
200406
|
init_wrapper();
|
|
199648
200407
|
init_executor();
|
|
200408
|
+
init_revision_tracker();
|
|
199649
200409
|
init_errors3();
|
|
199650
200410
|
init_adapter_utils();
|
|
199651
200411
|
init_mutation_helpers();
|
|
@@ -200505,6 +201265,71 @@ var init_comments_wrappers = __esm(() => {
|
|
|
200505
201265
|
init_comment_target_resolver();
|
|
200506
201266
|
});
|
|
200507
201267
|
|
|
201268
|
+
// ../../packages/super-editor/src/document-api-adapters/plan-engine/blocks-wrappers.ts
|
|
201269
|
+
function validateTargetNodeType2(nodeType) {
|
|
201270
|
+
if (REJECTED_NODE_TYPES2.has(nodeType)) {
|
|
201271
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { nodeType });
|
|
201272
|
+
}
|
|
201273
|
+
if (!SUPPORTED_NODE_TYPES2.has(nodeType)) {
|
|
201274
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, {
|
|
201275
|
+
nodeType
|
|
201276
|
+
});
|
|
201277
|
+
}
|
|
201278
|
+
}
|
|
201279
|
+
function resolveSdBlockId2(candidate) {
|
|
201280
|
+
const sdBlockId = candidate.node.attrs?.sdBlockId;
|
|
201281
|
+
if (typeof sdBlockId === "string" && sdBlockId.length > 0)
|
|
201282
|
+
return sdBlockId;
|
|
201283
|
+
throw new DocumentApiAdapterError3("INTERNAL_ERROR", "Resolved block candidate is missing sdBlockId attribute. This indicates a schema/extension invariant violation.", { attrs: candidate.node.attrs });
|
|
201284
|
+
}
|
|
201285
|
+
function validateCommandLayerUniqueness2(editor, sdBlockId) {
|
|
201286
|
+
const getBlockNodeById = editor.helpers?.blockNode?.getBlockNodeById;
|
|
201287
|
+
if (typeof getBlockNodeById !== "function") {
|
|
201288
|
+
throw new DocumentApiAdapterError3("CAPABILITY_UNAVAILABLE", "blocks.delete requires the blockNode helper to be registered.", { reason: "missing_helper" });
|
|
201289
|
+
}
|
|
201290
|
+
const matches3 = getBlockNodeById(sdBlockId);
|
|
201291
|
+
if (!matches3 || Array.isArray(matches3) && matches3.length === 0) {
|
|
201292
|
+
throw new DocumentApiAdapterError3("TARGET_NOT_FOUND", `Block with sdBlockId "${sdBlockId}" was not found at the command layer.`, { sdBlockId });
|
|
201293
|
+
}
|
|
201294
|
+
if (Array.isArray(matches3) && matches3.length > 1) {
|
|
201295
|
+
throw new DocumentApiAdapterError3("AMBIGUOUS_TARGET", `Multiple blocks share sdBlockId "${sdBlockId}" at the command layer.`, { sdBlockId, count: matches3.length });
|
|
201296
|
+
}
|
|
201297
|
+
}
|
|
201298
|
+
function blocksDeleteWrapper2(editor, input2, options) {
|
|
201299
|
+
rejectTrackedMode2("blocks.delete", options);
|
|
201300
|
+
const index2 = getBlockIndex2(editor);
|
|
201301
|
+
const candidate = findBlockByIdStrict2(index2, input2.target);
|
|
201302
|
+
validateTargetNodeType2(candidate.nodeType);
|
|
201303
|
+
const sdBlockId = resolveSdBlockId2(candidate);
|
|
201304
|
+
const deleteBlockNodeById = requireEditorCommand2(editor.commands?.deleteBlockNodeById, "blocks.delete");
|
|
201305
|
+
validateCommandLayerUniqueness2(editor, sdBlockId);
|
|
201306
|
+
if (options?.dryRun) {
|
|
201307
|
+
return { success: true, deleted: input2.target };
|
|
201308
|
+
}
|
|
201309
|
+
const receipt2 = executeDomainCommand2(editor, () => {
|
|
201310
|
+
const didApply = deleteBlockNodeById(sdBlockId);
|
|
201311
|
+
if (didApply) {
|
|
201312
|
+
clearIndexCache2(editor);
|
|
201313
|
+
}
|
|
201314
|
+
return didApply;
|
|
201315
|
+
}, { expectedRevision: options?.expectedRevision });
|
|
201316
|
+
if (receipt2.steps[0]?.effect !== "changed") {
|
|
201317
|
+
throw new DocumentApiAdapterError3("INTERNAL_ERROR", "blocks.delete command returned false despite passing all pre-apply checks. This is an internal invariant violation.", { sdBlockId, target: input2.target });
|
|
201318
|
+
}
|
|
201319
|
+
return { success: true, deleted: input2.target };
|
|
201320
|
+
}
|
|
201321
|
+
var SUPPORTED_NODE_TYPES2, REJECTED_NODE_TYPES2;
|
|
201322
|
+
var init_blocks_wrappers = __esm(() => {
|
|
201323
|
+
init_src();
|
|
201324
|
+
init_index_cache();
|
|
201325
|
+
init_node_address_resolver();
|
|
201326
|
+
init_errors3();
|
|
201327
|
+
init_mutation_helpers();
|
|
201328
|
+
init_plan_wrappers();
|
|
201329
|
+
SUPPORTED_NODE_TYPES2 = new Set(DELETABLE_BLOCK_NODE_TYPES);
|
|
201330
|
+
REJECTED_NODE_TYPES2 = new Set(["tableRow", "tableCell"]);
|
|
201331
|
+
});
|
|
201332
|
+
|
|
200508
201333
|
// ../../packages/super-editor/src/extensions/track-changes/trackChangesHelpers/documentHelpers.js
|
|
200509
201334
|
var flatten3 = (node3, descend = true) => {
|
|
200510
201335
|
if (!node3) {
|
|
@@ -200701,14 +201526,7 @@ function resolveCreateInsertPosition2(editor, at, operationLabel) {
|
|
|
200701
201526
|
return 0;
|
|
200702
201527
|
if (location3.kind === "documentEnd")
|
|
200703
201528
|
return editor.state.doc.content.size;
|
|
200704
|
-
|
|
200705
|
-
const target = findBlockById2(index2, location3.target);
|
|
200706
|
-
if (!target) {
|
|
200707
|
-
throw new DocumentApiAdapterError3("TARGET_NOT_FOUND", `Create ${operationLabel} target block was not found.`, {
|
|
200708
|
-
target: location3.target
|
|
200709
|
-
});
|
|
200710
|
-
}
|
|
200711
|
-
return location3.kind === "before" ? target.pos : target.end;
|
|
201529
|
+
return resolveBlockInsertionPos2(editor, location3.target.nodeId, location3.kind);
|
|
200712
201530
|
}
|
|
200713
201531
|
function resolveCreatedBlock2(editor, nodeType, blockId) {
|
|
200714
201532
|
const index2 = getBlockIndex2(editor);
|
|
@@ -200814,7 +201632,10 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
200814
201632
|
if (mode === "tracked") {
|
|
200815
201633
|
trackedChangeRefs = collectTrackInsertRefsInRange2(editor, paragraph2.pos, paragraph2.end);
|
|
200816
201634
|
}
|
|
200817
|
-
} catch {
|
|
201635
|
+
} catch (e) {
|
|
201636
|
+
if (!(e instanceof DocumentApiAdapterError3))
|
|
201637
|
+
throw e;
|
|
201638
|
+
}
|
|
200818
201639
|
}
|
|
200819
201640
|
return didApply;
|
|
200820
201641
|
}, { expectedRevision: options?.expectedRevision });
|
|
@@ -200883,7 +201704,10 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
200883
201704
|
if (mode === "tracked") {
|
|
200884
201705
|
trackedChangeRefs = collectTrackInsertRefsInRange2(editor, heading3.pos, heading3.end);
|
|
200885
201706
|
}
|
|
200886
|
-
} catch {
|
|
201707
|
+
} catch (e) {
|
|
201708
|
+
if (!(e instanceof DocumentApiAdapterError3))
|
|
201709
|
+
throw e;
|
|
201710
|
+
}
|
|
200887
201711
|
}
|
|
200888
201712
|
return didApply;
|
|
200889
201713
|
}, { expectedRevision: options?.expectedRevision });
|
|
@@ -200901,7 +201725,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
200901
201725
|
var init_create_wrappers = __esm(() => {
|
|
200902
201726
|
init_wrapper();
|
|
200903
201727
|
init_index_cache();
|
|
200904
|
-
|
|
201728
|
+
init_create_insertion();
|
|
200905
201729
|
init_tracked_change_refs();
|
|
200906
201730
|
init_errors3();
|
|
200907
201731
|
init_mutation_helpers();
|
|
@@ -235326,7 +236150,6 @@ var init_track_changes_wrappers = __esm(() => {
|
|
|
235326
236150
|
|
|
235327
236151
|
// ../../packages/super-editor/src/document-api-adapters/plan-engine/preview.ts
|
|
235328
236152
|
function previewPlan2(editor, input2) {
|
|
235329
|
-
const evaluatedRevision = getRevision2(editor);
|
|
235330
236153
|
checkRevision2(editor, input2.expectedRevision);
|
|
235331
236154
|
if (!input2.steps?.length) {
|
|
235332
236155
|
throw planError2("INVALID_INPUT", "plan must contain at least one step");
|
|
@@ -235334,8 +236157,10 @@ function previewPlan2(editor, input2) {
|
|
|
235334
236157
|
const failures = [];
|
|
235335
236158
|
const stepPreviews = [];
|
|
235336
236159
|
let currentPhase = "compile";
|
|
236160
|
+
let evaluatedRevision = getRevision2(editor);
|
|
235337
236161
|
try {
|
|
235338
236162
|
const compiled = compilePlan2(editor, input2.steps);
|
|
236163
|
+
evaluatedRevision = compiled.compiledRevision;
|
|
235339
236164
|
currentPhase = "execute";
|
|
235340
236165
|
const tr = editor.state.tr;
|
|
235341
236166
|
const { stepOutcomes, assertFailures } = runMutationsOnTransaction2(editor, tr, compiled, {
|
|
@@ -235903,7 +236728,13 @@ function queryMatchAdapter2(editor, input2) {
|
|
|
235903
236728
|
const paginatedMatches = isTextSelector ? applyPagination2(rawMatches, userOffset, input2.limit) : rawMatches;
|
|
235904
236729
|
if (require2 === "first" || require2 === "exactlyOne" || require2 === "all") {
|
|
235905
236730
|
if (totalMatches === 0) {
|
|
235906
|
-
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges"
|
|
236731
|
+
throw planError2("MATCH_NOT_FOUND", "selector matched zero ranges", undefined, {
|
|
236732
|
+
selectorType: input2.select?.type ?? "unknown",
|
|
236733
|
+
selectorPattern: input2.select?.pattern ?? "",
|
|
236734
|
+
selectorMode: input2.select?.mode ?? "contains",
|
|
236735
|
+
searchScope: (input2.within?.kind === "block" ? input2.within.nodeId : undefined) ?? "document",
|
|
236736
|
+
candidateCount: 0
|
|
236737
|
+
});
|
|
235907
236738
|
}
|
|
235908
236739
|
}
|
|
235909
236740
|
if (require2 === "exactlyOne" && totalMatches > 1) {
|
|
@@ -235916,7 +236747,11 @@ function queryMatchAdapter2(editor, input2) {
|
|
|
235916
236747
|
if (isTextSelector && raw.textRanges?.length) {
|
|
235917
236748
|
const blocks2 = buildMatchBlocks2(editor, raw.textRanges, evaluatedRevision, id2);
|
|
235918
236749
|
if (blocks2.length === 0) {
|
|
235919
|
-
throw planError2("INTERNAL_ERROR", `text match produced no blocks for ${id2}
|
|
236750
|
+
throw planError2("INTERNAL_ERROR", `text match produced no blocks for ${id2}`, undefined, {
|
|
236751
|
+
source: "query-match-adapter:buildMatchEntries",
|
|
236752
|
+
invariant: "text match must have at least one block after zero-width filtering",
|
|
236753
|
+
context: { matchId: id2 }
|
|
236754
|
+
});
|
|
235920
236755
|
}
|
|
235921
236756
|
const snippetResult = buildBlocksSnippet2(editor, blocks2);
|
|
235922
236757
|
const segments = blocks2.map((b4) => ({ blockId: b4.blockId, start: b4.range.start, end: b4.range.end }));
|
|
@@ -236151,6 +236986,9 @@ function getDocumentApiAdapters2(editor) {
|
|
|
236151
236986
|
acceptAll: (input2, options) => trackChangesAcceptAllWrapper2(editor, input2, options),
|
|
236152
236987
|
rejectAll: (input2, options) => trackChangesRejectAllWrapper2(editor, input2, options)
|
|
236153
236988
|
},
|
|
236989
|
+
blocks: {
|
|
236990
|
+
delete: (input2, options) => blocksDeleteWrapper2(editor, input2, options)
|
|
236991
|
+
},
|
|
236154
236992
|
create: {
|
|
236155
236993
|
paragraph: (input2, options) => createParagraphWrapper2(editor, input2, options),
|
|
236156
236994
|
heading: (input2, options) => createHeadingWrapper2(editor, input2, options)
|
|
@@ -236177,6 +237015,7 @@ function getDocumentApiAdapters2(editor) {
|
|
|
236177
237015
|
var init_document_api_adapters = __esm(() => {
|
|
236178
237016
|
init_capabilities_adapter();
|
|
236179
237017
|
init_comments_wrappers();
|
|
237018
|
+
init_blocks_wrappers();
|
|
236180
237019
|
init_create_wrappers();
|
|
236181
237020
|
init_find_adapter();
|
|
236182
237021
|
init_plan_wrappers();
|
|
@@ -239126,6 +239965,9 @@ function mapListsError(operationId, error, code7) {
|
|
|
239126
239965
|
function mapTextMutationError(operationId, error, code7) {
|
|
239127
239966
|
const message = extractErrorMessage(error);
|
|
239128
239967
|
const details = extractErrorDetails(error);
|
|
239968
|
+
const planEngineError = tryMapPlanEngineError(operationId, error, code7);
|
|
239969
|
+
if (planEngineError)
|
|
239970
|
+
return planEngineError;
|
|
239129
239971
|
if (code7 === "TARGET_NOT_FOUND") {
|
|
239130
239972
|
return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
|
|
239131
239973
|
}
|
|
@@ -239145,15 +239987,48 @@ function mapTextMutationError(operationId, error, code7) {
|
|
|
239145
239987
|
function mapCreateError(operationId, error, code7) {
|
|
239146
239988
|
const message = extractErrorMessage(error);
|
|
239147
239989
|
const details = extractErrorDetails(error);
|
|
239990
|
+
const planEngineError = tryMapPlanEngineError(operationId, error, code7);
|
|
239991
|
+
if (planEngineError)
|
|
239992
|
+
return planEngineError;
|
|
239148
239993
|
if (code7 === "TARGET_NOT_FOUND") {
|
|
239149
239994
|
return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
|
|
239150
239995
|
}
|
|
239151
239996
|
if (code7 === "AMBIGUOUS_TARGET" || code7 === "INVALID_TARGET") {
|
|
239152
239997
|
return new CliError("INVALID_ARGUMENT", message, { operationId, details });
|
|
239153
239998
|
}
|
|
239154
|
-
if (code7 === "TRACK_CHANGE_COMMAND_UNAVAILABLE"
|
|
239999
|
+
if (code7 === "TRACK_CHANGE_COMMAND_UNAVAILABLE") {
|
|
239155
240000
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", message, { operationId, details });
|
|
239156
240001
|
}
|
|
240002
|
+
if (code7 === "CAPABILITY_UNAVAILABLE") {
|
|
240003
|
+
const reason = details?.reason;
|
|
240004
|
+
if (reason === "tracked_mode_unsupported") {
|
|
240005
|
+
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", message, { operationId, details });
|
|
240006
|
+
}
|
|
240007
|
+
return new CliError("COMMAND_FAILED", message, { operationId, details });
|
|
240008
|
+
}
|
|
240009
|
+
if (code7 === "COMMAND_UNAVAILABLE") {
|
|
240010
|
+
return new CliError("COMMAND_FAILED", message, { operationId, details });
|
|
240011
|
+
}
|
|
240012
|
+
if (error instanceof CliError)
|
|
240013
|
+
return error;
|
|
240014
|
+
return new CliError("COMMAND_FAILED", message, { operationId, details });
|
|
240015
|
+
}
|
|
240016
|
+
function mapBlocksError(operationId, error, code7) {
|
|
240017
|
+
const message = extractErrorMessage(error);
|
|
240018
|
+
const details = extractErrorDetails(error);
|
|
240019
|
+
if (code7 === "TARGET_NOT_FOUND") {
|
|
240020
|
+
return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
|
|
240021
|
+
}
|
|
240022
|
+
if (code7 === "AMBIGUOUS_TARGET" || code7 === "INVALID_TARGET" || code7 === "INVALID_INPUT") {
|
|
240023
|
+
return new CliError("INVALID_ARGUMENT", message, { operationId, details });
|
|
240024
|
+
}
|
|
240025
|
+
if (code7 === "CAPABILITY_UNAVAILABLE") {
|
|
240026
|
+
const reason = details?.reason;
|
|
240027
|
+
if (reason === "tracked_mode_unsupported") {
|
|
240028
|
+
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", message, { operationId, details });
|
|
240029
|
+
}
|
|
240030
|
+
return new CliError("COMMAND_FAILED", message, { operationId, details });
|
|
240031
|
+
}
|
|
239157
240032
|
if (code7 === "COMMAND_UNAVAILABLE") {
|
|
239158
240033
|
return new CliError("COMMAND_FAILED", message, { operationId, details });
|
|
239159
240034
|
}
|
|
@@ -239171,6 +240046,14 @@ function mapQueryError(operationId, error, code7) {
|
|
|
239171
240046
|
return error;
|
|
239172
240047
|
return new CliError("COMMAND_FAILED", message, { operationId, details });
|
|
239173
240048
|
}
|
|
240049
|
+
function tryMapPlanEngineError(operationId, error, code7) {
|
|
240050
|
+
if (!code7 || !PLAN_ENGINE_PASSTHROUGH_CODES.has(code7))
|
|
240051
|
+
return null;
|
|
240052
|
+
return new CliError(code7, extractErrorMessage(error), {
|
|
240053
|
+
operationId,
|
|
240054
|
+
details: extractErrorDetails(error)
|
|
240055
|
+
});
|
|
240056
|
+
}
|
|
239174
240057
|
function mapInvokeError(operationId, error) {
|
|
239175
240058
|
if (error instanceof CliError)
|
|
239176
240059
|
return error;
|
|
@@ -239195,6 +240078,9 @@ function mapFailedReceipt(operationId, result) {
|
|
|
239195
240078
|
}
|
|
239196
240079
|
const failureCode = failure.code;
|
|
239197
240080
|
const failureMessage = failure.message ?? `${operationId}: operation failed.`;
|
|
240081
|
+
if (failureCode && PLAN_ENGINE_PASSTHROUGH_CODES.has(failureCode)) {
|
|
240082
|
+
return new CliError(failureCode, failureMessage, { operationId, failure });
|
|
240083
|
+
}
|
|
239198
240084
|
if (family === "trackChanges") {
|
|
239199
240085
|
if (failureCode === "TRACK_CHANGE_COMMAND_UNAVAILABLE") {
|
|
239200
240086
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", failureMessage, { operationId, failure });
|
|
@@ -239231,6 +240117,12 @@ function mapFailedReceipt(operationId, result) {
|
|
|
239231
240117
|
}
|
|
239232
240118
|
return new CliError("COMMAND_FAILED", failureMessage, { operationId, failure });
|
|
239233
240119
|
}
|
|
240120
|
+
if (family === "blocks") {
|
|
240121
|
+
if (failureCode === "INVALID_TARGET") {
|
|
240122
|
+
return new CliError("INVALID_ARGUMENT", failureMessage, { operationId, failure });
|
|
240123
|
+
}
|
|
240124
|
+
return new CliError("COMMAND_FAILED", failureMessage, { operationId, failure });
|
|
240125
|
+
}
|
|
239234
240126
|
if (family === "create") {
|
|
239235
240127
|
if (failureCode === "TRACK_CHANGE_COMMAND_UNAVAILABLE") {
|
|
239236
240128
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", failureMessage, { operationId, failure });
|
|
@@ -239242,18 +240134,35 @@ function mapFailedReceipt(operationId, result) {
|
|
|
239242
240134
|
}
|
|
239243
240135
|
return new CliError("COMMAND_FAILED", failureMessage, { operationId, failure });
|
|
239244
240136
|
}
|
|
239245
|
-
var FAMILY_MAPPERS;
|
|
240137
|
+
var PLAN_ENGINE_PASSTHROUGH_CODES, FAMILY_MAPPERS;
|
|
239246
240138
|
var init_error_mapping = __esm(() => {
|
|
239247
240139
|
init_operation_hints();
|
|
239248
240140
|
init_errors();
|
|
240141
|
+
PLAN_ENGINE_PASSTHROUGH_CODES = new Set([
|
|
240142
|
+
"REVISION_MISMATCH",
|
|
240143
|
+
"REVISION_CHANGED_SINCE_COMPILE",
|
|
240144
|
+
"PLAN_CONFLICT_OVERLAP",
|
|
240145
|
+
"DOCUMENT_IDENTITY_CONFLICT",
|
|
240146
|
+
"INVALID_INSERTION_CONTEXT",
|
|
240147
|
+
"INVALID_INPUT",
|
|
240148
|
+
"INVALID_STEP_COMBINATION",
|
|
240149
|
+
"MATCH_NOT_FOUND",
|
|
240150
|
+
"PRECONDITION_FAILED",
|
|
240151
|
+
"CROSS_BLOCK_MATCH",
|
|
240152
|
+
"SPAN_FRAGMENTED"
|
|
240153
|
+
]);
|
|
239249
240154
|
FAMILY_MAPPERS = {
|
|
239250
240155
|
trackChanges: mapTrackChangesError,
|
|
239251
240156
|
comments: mapCommentsError,
|
|
239252
240157
|
lists: mapListsError,
|
|
239253
240158
|
textMutation: mapTextMutationError,
|
|
239254
240159
|
create: mapCreateError,
|
|
240160
|
+
blocks: mapBlocksError,
|
|
239255
240161
|
query: mapQueryError,
|
|
239256
|
-
general: (operationId, error) => {
|
|
240162
|
+
general: (operationId, error, code7) => {
|
|
240163
|
+
const planEngineError = tryMapPlanEngineError(operationId, error, code7);
|
|
240164
|
+
if (planEngineError)
|
|
240165
|
+
return planEngineError;
|
|
239257
240166
|
if (error instanceof CliError)
|
|
239258
240167
|
return error;
|
|
239259
240168
|
return new CliError("COMMAND_FAILED", extractErrorMessage(error), { operationId });
|
|
@@ -240140,6 +241049,18 @@ function normalizeFlatTargetFlags(operationId, apiInput) {
|
|
|
240140
241049
|
}
|
|
240141
241050
|
return apiInput;
|
|
240142
241051
|
}
|
|
241052
|
+
if (operationId === "blocks.delete") {
|
|
241053
|
+
const nodeType = apiInput.nodeType;
|
|
241054
|
+
const nodeId = apiInput.nodeId;
|
|
241055
|
+
if (typeof nodeType === "string" && typeof nodeId === "string") {
|
|
241056
|
+
const { nodeType: _4, nodeId: _n, ...rest } = apiInput;
|
|
241057
|
+
return {
|
|
241058
|
+
...rest,
|
|
241059
|
+
target: { kind: "block", nodeType, nodeId }
|
|
241060
|
+
};
|
|
241061
|
+
}
|
|
241062
|
+
return apiInput;
|
|
241063
|
+
}
|
|
240143
241064
|
if (LIST_TARGET_OPERATIONS.has(operationId)) {
|
|
240144
241065
|
const nodeId = apiInput.nodeId;
|
|
240145
241066
|
if (typeof nodeId === "string") {
|
|
@@ -240927,6 +241848,7 @@ function buildHelpText() {
|
|
|
240927
241848
|
"mutation",
|
|
240928
241849
|
"format",
|
|
240929
241850
|
"create",
|
|
241851
|
+
"blocks",
|
|
240930
241852
|
"lists",
|
|
240931
241853
|
"comments",
|
|
240932
241854
|
"trackChanges",
|
|
@@ -241368,6 +242290,10 @@ var init_operation_params = __esm(() => {
|
|
|
241368
242290
|
...LIST_TARGET_FLAT_PARAMS
|
|
241369
242291
|
],
|
|
241370
242292
|
"doc.lists.exit": [{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" }, ...LIST_TARGET_FLAT_PARAMS],
|
|
242293
|
+
"doc.blocks.delete": [
|
|
242294
|
+
{ name: "nodeType", kind: "flag", flag: "node-type", type: "string" },
|
|
242295
|
+
{ name: "nodeId", kind: "flag", flag: "node-id", type: "string" }
|
|
242296
|
+
],
|
|
241371
242297
|
"doc.create.paragraph": [{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" }],
|
|
241372
242298
|
"doc.create.heading": [{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" }]
|
|
241373
242299
|
};
|