@superdoc-dev/cli 0.2.0-next.123 → 0.2.0-next.124
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/README.md +128 -22
- package/dist/index.js +1081 -147
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1306,7 +1306,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
1306
1306
|
},
|
|
1307
1307
|
find: {
|
|
1308
1308
|
memberPath: "find",
|
|
1309
|
-
description: "Search the document for text or node matches using SDM/1 selectors.",
|
|
1309
|
+
description: "Search the document for text or node matches using SDM/1 selectors. Returns discovery-grade results — for mutation targeting, use query.match instead.",
|
|
1310
1310
|
expectedResult: "Returns an SDFindResult envelope ({ total, limit, offset, items }). Each item is an SDNodeResult ({ node, address }).",
|
|
1311
1311
|
requiresDocumentContext: true,
|
|
1312
1312
|
metadata: readOperation({
|
|
@@ -1406,7 +1406,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
1406
1406
|
},
|
|
1407
1407
|
insert: {
|
|
1408
1408
|
memberPath: "insert",
|
|
1409
|
-
description: "Insert content at a
|
|
1409
|
+
description: "Insert inline content at a text position within an existing block, or at the end of the document when target is omitted. " + "This is NOT for creating sibling blocks — use create.paragraph, create.heading, or lists.insert for that. " + "Accepts two input shapes: legacy string-based (value + type) or structural SDFragment (content). " + "Supports text (default), markdown, and html content types via the `type` field in legacy mode. " + "Structural mode accepts an SDFragment with typed nodes (paragraphs, tables, images, etc.).",
|
|
1410
1410
|
expectedResult: "Returns a TextMutationReceipt with applied status; receipt reports NO_OP if the insertion point is invalid or content is empty.",
|
|
1411
1411
|
requiresDocumentContext: true,
|
|
1412
1412
|
metadata: mutationOperation({
|
|
@@ -1495,10 +1495,22 @@ var init_operation_definitions = __esm(() => {
|
|
|
1495
1495
|
referenceDocPath: "delete.mdx",
|
|
1496
1496
|
referenceGroup: "core"
|
|
1497
1497
|
},
|
|
1498
|
+
"blocks.list": {
|
|
1499
|
+
memberPath: "blocks.list",
|
|
1500
|
+
description: "List top-level blocks in document order with IDs, types, and text previews. Supports pagination via offset/limit and optional nodeType filtering.",
|
|
1501
|
+
expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, isEmpty), and the current document revision.",
|
|
1502
|
+
requiresDocumentContext: true,
|
|
1503
|
+
metadata: readOperation({
|
|
1504
|
+
throws: ["INVALID_INPUT"]
|
|
1505
|
+
}),
|
|
1506
|
+
referenceDocPath: "blocks/list.mdx",
|
|
1507
|
+
referenceGroup: "blocks",
|
|
1508
|
+
essential: true
|
|
1509
|
+
},
|
|
1498
1510
|
"blocks.delete": {
|
|
1499
1511
|
memberPath: "blocks.delete",
|
|
1500
1512
|
description: "Delete an entire block node (paragraph, heading, list item, table, image, or sdt) deterministically.",
|
|
1501
|
-
expectedResult: "Returns a BlocksDeleteResult receipt confirming the block was removed
|
|
1513
|
+
expectedResult: "Returns a BlocksDeleteResult receipt confirming the block was removed, including a deletedBlock summary with ordinal, nodeType, and textPreview.",
|
|
1502
1514
|
requiresDocumentContext: true,
|
|
1503
1515
|
metadata: mutationOperation({
|
|
1504
1516
|
idempotency: "conditional",
|
|
@@ -1517,6 +1529,28 @@ var init_operation_definitions = __esm(() => {
|
|
|
1517
1529
|
referenceDocPath: "blocks/delete.mdx",
|
|
1518
1530
|
referenceGroup: "blocks"
|
|
1519
1531
|
},
|
|
1532
|
+
"blocks.deleteRange": {
|
|
1533
|
+
memberPath: "blocks.deleteRange",
|
|
1534
|
+
description: "Delete a contiguous range of top-level blocks between two endpoints (inclusive). Both endpoints must be direct children of the document node. Supports dry-run preview.",
|
|
1535
|
+
expectedResult: "Returns a BlocksDeleteRangeResult with deletedCount, deletedBlocks array (each with ordinal, nodeId, nodeType, textPreview), before/after revision, and dryRun flag.",
|
|
1536
|
+
requiresDocumentContext: true,
|
|
1537
|
+
metadata: mutationOperation({
|
|
1538
|
+
idempotency: "conditional",
|
|
1539
|
+
supportsDryRun: true,
|
|
1540
|
+
supportsTrackedMode: false,
|
|
1541
|
+
possibleFailureCodes: NONE_FAILURES,
|
|
1542
|
+
throws: [
|
|
1543
|
+
"TARGET_NOT_FOUND",
|
|
1544
|
+
"AMBIGUOUS_TARGET",
|
|
1545
|
+
"INVALID_TARGET",
|
|
1546
|
+
"INVALID_INPUT",
|
|
1547
|
+
"CAPABILITY_UNAVAILABLE",
|
|
1548
|
+
"INTERNAL_ERROR"
|
|
1549
|
+
]
|
|
1550
|
+
}),
|
|
1551
|
+
referenceDocPath: "blocks/delete-range.mdx",
|
|
1552
|
+
referenceGroup: "blocks"
|
|
1553
|
+
},
|
|
1520
1554
|
"format.apply": {
|
|
1521
1555
|
memberPath: "format.apply",
|
|
1522
1556
|
description: "Apply inline run-property patch changes to the target range with explicit set/clear semantics.",
|
|
@@ -1551,7 +1585,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
1551
1585
|
},
|
|
1552
1586
|
"create.paragraph": {
|
|
1553
1587
|
memberPath: "create.paragraph",
|
|
1554
|
-
description: "Create a
|
|
1588
|
+
description: "Create a standalone paragraph at the target position. To add a list item, use lists.insert instead.",
|
|
1555
1589
|
expectedResult: "Returns a CreateParagraphResult with the new paragraph block ID and address.",
|
|
1556
1590
|
requiresDocumentContext: true,
|
|
1557
1591
|
metadata: mutationOperation({
|
|
@@ -2185,7 +2219,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
2185
2219
|
},
|
|
2186
2220
|
"lists.insert": {
|
|
2187
2221
|
memberPath: "lists.insert",
|
|
2188
|
-
description: "Insert a new list
|
|
2222
|
+
description: "Insert a new list item before or after an existing list item. The new item inherits the target list context.",
|
|
2189
2223
|
expectedResult: "Returns a ListsInsertResult with the new list item address and block ID.",
|
|
2190
2224
|
requiresDocumentContext: true,
|
|
2191
2225
|
metadata: mutationOperation({
|
|
@@ -2702,7 +2736,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
2702
2736
|
},
|
|
2703
2737
|
"query.match": {
|
|
2704
2738
|
memberPath: "query.match",
|
|
2705
|
-
description: "Deterministic selector-based search
|
|
2739
|
+
description: "Deterministic selector-based search returning mutation-grade addresses and text ranges. Use this to discover targets before any mutation.",
|
|
2706
2740
|
expectedResult: "Returns a QueryMatchOutput with the resolved target address and cardinality metadata.",
|
|
2707
2741
|
requiresDocumentContext: true,
|
|
2708
2742
|
metadata: readOperation({
|
|
@@ -3559,7 +3593,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
3559
3593
|
"history.undo": {
|
|
3560
3594
|
memberPath: "history.undo",
|
|
3561
3595
|
description: "Undo the most recent history-safe mutation in the active editor.",
|
|
3562
|
-
expectedResult: "Returns a HistoryActionResult with noop flag
|
|
3596
|
+
expectedResult: "Returns a HistoryActionResult with noop flag, reason (EMPTY_UNDO_STACK | NO_EFFECT when noop), and revision before/after.",
|
|
3563
3597
|
requiresDocumentContext: true,
|
|
3564
3598
|
metadata: mutationOperation({
|
|
3565
3599
|
idempotency: "non-idempotent",
|
|
@@ -3575,7 +3609,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
3575
3609
|
"history.redo": {
|
|
3576
3610
|
memberPath: "history.redo",
|
|
3577
3611
|
description: "Redo the most recently undone action in the active editor.",
|
|
3578
|
-
expectedResult: "Returns a HistoryActionResult with noop flag
|
|
3612
|
+
expectedResult: "Returns a HistoryActionResult with noop flag, reason (EMPTY_REDO_STACK | NO_EFFECT when noop), and revision before/after.",
|
|
3579
3613
|
requiresDocumentContext: true,
|
|
3580
3614
|
metadata: mutationOperation({
|
|
3581
3615
|
idempotency: "non-idempotent",
|
|
@@ -8622,20 +8656,85 @@ var init_schemas = __esm(() => {
|
|
|
8622
8656
|
failure: textMutationFailureSchemaFor("format.apply")
|
|
8623
8657
|
},
|
|
8624
8658
|
...formatInlineAliasOperationSchemas,
|
|
8659
|
+
"blocks.list": {
|
|
8660
|
+
input: objectSchema({
|
|
8661
|
+
offset: { type: "number", minimum: 0 },
|
|
8662
|
+
limit: { type: "number", minimum: 1 },
|
|
8663
|
+
nodeTypes: { type: "array", items: { enum: [...blockNodeTypeValues] } }
|
|
8664
|
+
}),
|
|
8665
|
+
output: objectSchema({
|
|
8666
|
+
total: { type: "number" },
|
|
8667
|
+
blocks: {
|
|
8668
|
+
type: "array",
|
|
8669
|
+
items: objectSchema({
|
|
8670
|
+
ordinal: { type: "number" },
|
|
8671
|
+
nodeId: { type: "string" },
|
|
8672
|
+
nodeType: { enum: [...blockNodeTypeValues] },
|
|
8673
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] },
|
|
8674
|
+
isEmpty: { type: "boolean" }
|
|
8675
|
+
}, ["ordinal", "nodeId", "nodeType", "textPreview", "isEmpty"])
|
|
8676
|
+
},
|
|
8677
|
+
revision: { type: "string" }
|
|
8678
|
+
}, ["total", "blocks", "revision"])
|
|
8679
|
+
},
|
|
8625
8680
|
"blocks.delete": {
|
|
8626
8681
|
input: objectSchema({
|
|
8627
8682
|
target: deletableBlockNodeAddressSchema
|
|
8628
8683
|
}, ["target"]),
|
|
8629
8684
|
output: objectSchema({
|
|
8630
8685
|
success: { const: true },
|
|
8631
|
-
deleted: deletableBlockNodeAddressSchema
|
|
8686
|
+
deleted: deletableBlockNodeAddressSchema,
|
|
8687
|
+
deletedBlock: objectSchema({
|
|
8688
|
+
ordinal: { type: "number" },
|
|
8689
|
+
nodeId: { type: "string" },
|
|
8690
|
+
nodeType: { type: "string" },
|
|
8691
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] }
|
|
8692
|
+
})
|
|
8632
8693
|
}, ["success", "deleted"]),
|
|
8633
8694
|
success: objectSchema({
|
|
8634
8695
|
success: { const: true },
|
|
8635
|
-
deleted: deletableBlockNodeAddressSchema
|
|
8696
|
+
deleted: deletableBlockNodeAddressSchema,
|
|
8697
|
+
deletedBlock: objectSchema({
|
|
8698
|
+
ordinal: { type: "number" },
|
|
8699
|
+
nodeId: { type: "string" },
|
|
8700
|
+
nodeType: { type: "string" },
|
|
8701
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] }
|
|
8702
|
+
})
|
|
8636
8703
|
}, ["success", "deleted"]),
|
|
8637
8704
|
failure: preApplyFailureResultSchemaFor("blocks.delete")
|
|
8638
8705
|
},
|
|
8706
|
+
"blocks.deleteRange": {
|
|
8707
|
+
input: objectSchema({
|
|
8708
|
+
start: blockNodeAddressSchema,
|
|
8709
|
+
end: blockNodeAddressSchema
|
|
8710
|
+
}, ["start", "end"]),
|
|
8711
|
+
output: objectSchema({
|
|
8712
|
+
success: { const: true },
|
|
8713
|
+
deletedCount: { type: "number" },
|
|
8714
|
+
deletedBlocks: {
|
|
8715
|
+
type: "array",
|
|
8716
|
+
items: objectSchema({
|
|
8717
|
+
ordinal: { type: "number" },
|
|
8718
|
+
nodeId: { type: "string" },
|
|
8719
|
+
nodeType: { type: "string" },
|
|
8720
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] }
|
|
8721
|
+
}, ["ordinal", "nodeId", "nodeType", "textPreview"])
|
|
8722
|
+
},
|
|
8723
|
+
revision: objectSchema({
|
|
8724
|
+
before: { type: "string" },
|
|
8725
|
+
after: { type: "string" }
|
|
8726
|
+
}, ["before", "after"]),
|
|
8727
|
+
dryRun: { type: "boolean" }
|
|
8728
|
+
}, ["success", "deletedCount", "deletedBlocks", "revision", "dryRun"]),
|
|
8729
|
+
success: objectSchema({
|
|
8730
|
+
success: { const: true },
|
|
8731
|
+
deletedCount: { type: "number" },
|
|
8732
|
+
deletedBlocks: { type: "array" },
|
|
8733
|
+
revision: objectSchema({ before: { type: "string" }, after: { type: "string" } }, ["before", "after"]),
|
|
8734
|
+
dryRun: { type: "boolean" }
|
|
8735
|
+
}, ["success", "deletedCount", "deletedBlocks", "revision", "dryRun"]),
|
|
8736
|
+
failure: preApplyFailureResultSchemaFor("blocks.deleteRange")
|
|
8737
|
+
},
|
|
8639
8738
|
"styles.paragraph.setStyle": {
|
|
8640
8739
|
input: objectSchema({ target: paragraphTargetSchema, styleId: { type: "string", minLength: 1 } }, [
|
|
8641
8740
|
"target",
|
|
@@ -12940,6 +13039,35 @@ var init_create = __esm(() => {
|
|
|
12940
13039
|
});
|
|
12941
13040
|
|
|
12942
13041
|
// ../../packages/document-api/src/blocks/blocks.ts
|
|
13042
|
+
function validateBlocksListInput(input) {
|
|
13043
|
+
if (!input)
|
|
13044
|
+
return;
|
|
13045
|
+
if (input.offset != null && (typeof input.offset !== "number" || input.offset < 0)) {
|
|
13046
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.list offset must be a non-negative number.", {
|
|
13047
|
+
fields: ["offset"]
|
|
13048
|
+
});
|
|
13049
|
+
}
|
|
13050
|
+
if (input.limit != null && (typeof input.limit !== "number" || input.limit < 1)) {
|
|
13051
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.list limit must be a positive number.", {
|
|
13052
|
+
fields: ["limit"]
|
|
13053
|
+
});
|
|
13054
|
+
}
|
|
13055
|
+
if (input.nodeTypes != null) {
|
|
13056
|
+
if (!Array.isArray(input.nodeTypes) || input.nodeTypes.length === 0) {
|
|
13057
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.list nodeTypes must be a non-empty array.", {
|
|
13058
|
+
fields: ["nodeTypes"]
|
|
13059
|
+
});
|
|
13060
|
+
}
|
|
13061
|
+
for (const nt of input.nodeTypes) {
|
|
13062
|
+
if (!VALID_BLOCK_NODE_TYPES.has(nt)) {
|
|
13063
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `blocks.list nodeTypes contains unknown type "${nt}".`, {
|
|
13064
|
+
fields: ["nodeTypes"],
|
|
13065
|
+
nodeType: nt
|
|
13066
|
+
});
|
|
13067
|
+
}
|
|
13068
|
+
}
|
|
13069
|
+
}
|
|
13070
|
+
}
|
|
12943
13071
|
function validateBlocksDeleteInput(input) {
|
|
12944
13072
|
if (!input || typeof input !== "object") {
|
|
12945
13073
|
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.delete requires an input object.", {
|
|
@@ -12972,16 +13100,57 @@ function validateBlocksDeleteInput(input) {
|
|
|
12972
13100
|
});
|
|
12973
13101
|
}
|
|
12974
13102
|
}
|
|
13103
|
+
function validateBlockNodeAddress(address2, label) {
|
|
13104
|
+
if (!address2 || typeof address2 !== "object") {
|
|
13105
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `blocks.deleteRange requires a ${label} address.`, {
|
|
13106
|
+
fields: [label]
|
|
13107
|
+
});
|
|
13108
|
+
}
|
|
13109
|
+
const addr = address2;
|
|
13110
|
+
if (addr.kind !== "block") {
|
|
13111
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `blocks.deleteRange ${label} must have kind "block".`, {
|
|
13112
|
+
fields: [`${label}.kind`]
|
|
13113
|
+
});
|
|
13114
|
+
}
|
|
13115
|
+
if (!addr.nodeId || typeof addr.nodeId !== "string") {
|
|
13116
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `blocks.deleteRange ${label} requires a nodeId string.`, {
|
|
13117
|
+
fields: [`${label}.nodeId`]
|
|
13118
|
+
});
|
|
13119
|
+
}
|
|
13120
|
+
if (!addr.nodeType || typeof addr.nodeType !== "string") {
|
|
13121
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `blocks.deleteRange ${label} requires a nodeType string.`, {
|
|
13122
|
+
fields: [`${label}.nodeType`]
|
|
13123
|
+
});
|
|
13124
|
+
}
|
|
13125
|
+
}
|
|
13126
|
+
function validateBlocksDeleteRangeInput(input) {
|
|
13127
|
+
if (!input || typeof input !== "object") {
|
|
13128
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.deleteRange requires an input object.", {
|
|
13129
|
+
fields: ["input"]
|
|
13130
|
+
});
|
|
13131
|
+
}
|
|
13132
|
+
validateBlockNodeAddress(input.start, "start");
|
|
13133
|
+
validateBlockNodeAddress(input.end, "end");
|
|
13134
|
+
}
|
|
13135
|
+
function executeBlocksList(adapter, input) {
|
|
13136
|
+
validateBlocksListInput(input);
|
|
13137
|
+
return adapter.list(input);
|
|
13138
|
+
}
|
|
12975
13139
|
function executeBlocksDelete(adapter, input, options) {
|
|
12976
13140
|
validateBlocksDeleteInput(input);
|
|
12977
13141
|
return adapter.delete(input, normalizeMutationOptions(options));
|
|
12978
13142
|
}
|
|
12979
|
-
|
|
13143
|
+
function executeBlocksDeleteRange(adapter, input, options) {
|
|
13144
|
+
validateBlocksDeleteRangeInput(input);
|
|
13145
|
+
return adapter.deleteRange(input, normalizeMutationOptions(options));
|
|
13146
|
+
}
|
|
13147
|
+
var SUPPORTED_DELETE_NODE_TYPES, REJECTED_DELETE_NODE_TYPES, VALID_BLOCK_NODE_TYPES;
|
|
12980
13148
|
var init_blocks = __esm(() => {
|
|
12981
13149
|
init_base();
|
|
12982
13150
|
init_errors2();
|
|
12983
13151
|
SUPPORTED_DELETE_NODE_TYPES = new Set(DELETABLE_BLOCK_NODE_TYPES);
|
|
12984
13152
|
REJECTED_DELETE_NODE_TYPES = new Set(["tableRow", "tableCell"]);
|
|
13153
|
+
VALID_BLOCK_NODE_TYPES = new Set(BLOCK_NODE_TYPES);
|
|
12985
13154
|
});
|
|
12986
13155
|
|
|
12987
13156
|
// ../../packages/document-api/src/track-changes/track-changes.ts
|
|
@@ -13051,7 +13220,9 @@ function buildDispatchTable(api) {
|
|
|
13051
13220
|
insert: (input, options) => api.insert(input, options),
|
|
13052
13221
|
replace: (input, options) => api.replace(input, options),
|
|
13053
13222
|
delete: (input, options) => api.delete(input, options),
|
|
13223
|
+
"blocks.list": (input) => api.blocks.list(input),
|
|
13054
13224
|
"blocks.delete": (input, options) => api.blocks.delete(input, options),
|
|
13225
|
+
"blocks.deleteRange": (input, options) => api.blocks.deleteRange(input, options),
|
|
13055
13226
|
"format.apply": (input, options) => api.format.apply(input, options),
|
|
13056
13227
|
...formatInlineAliasDispatch,
|
|
13057
13228
|
"styles.paragraph.setStyle": (input, options) => api.styles.paragraph.setStyle(input, options),
|
|
@@ -15147,8 +15318,14 @@ function createDocumentApi(adapters) {
|
|
|
15147
15318
|
}
|
|
15148
15319
|
},
|
|
15149
15320
|
blocks: {
|
|
15321
|
+
list(input) {
|
|
15322
|
+
return executeBlocksList(adapters.blocks, input);
|
|
15323
|
+
},
|
|
15150
15324
|
delete(input, options) {
|
|
15151
15325
|
return executeBlocksDelete(adapters.blocks, input, options);
|
|
15326
|
+
},
|
|
15327
|
+
deleteRange(input, options) {
|
|
15328
|
+
return executeBlocksDeleteRange(adapters.blocks, input, options);
|
|
15152
15329
|
}
|
|
15153
15330
|
},
|
|
15154
15331
|
create: {
|
|
@@ -16685,7 +16862,9 @@ var init_operation_hints = __esm(() => {
|
|
|
16685
16862
|
insert: "inserted text",
|
|
16686
16863
|
replace: "replaced text",
|
|
16687
16864
|
delete: "deleted text",
|
|
16865
|
+
"blocks.list": "listed blocks",
|
|
16688
16866
|
"blocks.delete": "deleted block",
|
|
16867
|
+
"blocks.deleteRange": "deleted block range",
|
|
16689
16868
|
"format.apply": "applied style",
|
|
16690
16869
|
...buildFormatInlineAliasRecord("applied style"),
|
|
16691
16870
|
...buildParagraphRecord("updated paragraph formatting"),
|
|
@@ -16818,7 +16997,9 @@ var init_operation_hints = __esm(() => {
|
|
|
16818
16997
|
insert: "mutationReceipt",
|
|
16819
16998
|
replace: "mutationReceipt",
|
|
16820
16999
|
delete: "mutationReceipt",
|
|
17000
|
+
"blocks.list": "plain",
|
|
16821
17001
|
"blocks.delete": "plain",
|
|
17002
|
+
"blocks.deleteRange": "plain",
|
|
16822
17003
|
"format.apply": "mutationReceipt",
|
|
16823
17004
|
...buildFormatInlineAliasRecord("mutationReceipt"),
|
|
16824
17005
|
...buildParagraphRecord("plain"),
|
|
@@ -16951,7 +17132,9 @@ var init_operation_hints = __esm(() => {
|
|
|
16951
17132
|
insert: null,
|
|
16952
17133
|
replace: null,
|
|
16953
17134
|
delete: null,
|
|
17135
|
+
"blocks.list": "result",
|
|
16954
17136
|
"blocks.delete": "result",
|
|
17137
|
+
"blocks.deleteRange": "result",
|
|
16955
17138
|
"format.apply": null,
|
|
16956
17139
|
...buildFormatInlineAliasRecord(null),
|
|
16957
17140
|
...buildParagraphRecord("result"),
|
|
@@ -17100,7 +17283,9 @@ var init_operation_hints = __esm(() => {
|
|
|
17100
17283
|
insert: "textMutation",
|
|
17101
17284
|
replace: "textMutation",
|
|
17102
17285
|
delete: "textMutation",
|
|
17286
|
+
"blocks.list": "blocks",
|
|
17103
17287
|
"blocks.delete": "blocks",
|
|
17288
|
+
"blocks.deleteRange": "blocks",
|
|
17104
17289
|
"format.apply": "textMutation",
|
|
17105
17290
|
...buildFormatInlineAliasRecord("textMutation"),
|
|
17106
17291
|
...buildParagraphRecord("textMutation"),
|
|
@@ -17230,10 +17415,11 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
17230
17415
|
description: "Open a document and create a persistent editing session. Optionally override the document body with contentOverride + overrideType (markdown, html, or text).",
|
|
17231
17416
|
requiresDocumentContext: false,
|
|
17232
17417
|
intentName: "open_document",
|
|
17233
|
-
sdkMetadata: { mutates:
|
|
17418
|
+
sdkMetadata: { mutates: true, idempotency: "non-idempotent", supportsTrackedMode: false, supportsDryRun: false },
|
|
17234
17419
|
outputSchema: {
|
|
17235
17420
|
type: "object",
|
|
17236
17421
|
properties: {
|
|
17422
|
+
active: { type: "boolean" },
|
|
17237
17423
|
contextId: { type: "string" },
|
|
17238
17424
|
sessionType: { type: "string" },
|
|
17239
17425
|
document: {
|
|
@@ -17241,9 +17427,11 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
17241
17427
|
properties: {
|
|
17242
17428
|
path: { type: "string" },
|
|
17243
17429
|
source: { type: "string" },
|
|
17430
|
+
byteLength: { type: "number" },
|
|
17244
17431
|
revision: { type: "number" }
|
|
17245
17432
|
}
|
|
17246
17433
|
},
|
|
17434
|
+
dirty: { type: "boolean" },
|
|
17247
17435
|
collaboration: {
|
|
17248
17436
|
type: "object",
|
|
17249
17437
|
properties: {
|
|
@@ -17258,9 +17446,11 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
17258
17446
|
bootstrapApplied: { type: "boolean" },
|
|
17259
17447
|
bootstrapSource: { type: "string" }
|
|
17260
17448
|
}
|
|
17261
|
-
}
|
|
17449
|
+
},
|
|
17450
|
+
openedAt: { type: "string" },
|
|
17451
|
+
updatedAt: { type: "string" }
|
|
17262
17452
|
},
|
|
17263
|
-
required: ["contextId", "sessionType"]
|
|
17453
|
+
required: ["active", "contextId", "sessionType"]
|
|
17264
17454
|
}
|
|
17265
17455
|
},
|
|
17266
17456
|
save: {
|
|
@@ -17307,7 +17497,7 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
17307
17497
|
description: "Close the active editing session and clean up resources.",
|
|
17308
17498
|
requiresDocumentContext: false,
|
|
17309
17499
|
intentName: "close_document",
|
|
17310
|
-
sdkMetadata: { mutates:
|
|
17500
|
+
sdkMetadata: { mutates: true, idempotency: "conditional", supportsTrackedMode: false, supportsDryRun: false },
|
|
17311
17501
|
outputSchema: {
|
|
17312
17502
|
type: "object",
|
|
17313
17503
|
properties: {
|
|
@@ -17338,19 +17528,35 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
17338
17528
|
outputSchema: {
|
|
17339
17529
|
type: "object",
|
|
17340
17530
|
properties: {
|
|
17531
|
+
active: { type: "boolean" },
|
|
17341
17532
|
contextId: { type: "string" },
|
|
17533
|
+
activeSessionId: { type: "string" },
|
|
17534
|
+
requestedSessionId: { type: "string" },
|
|
17535
|
+
projectRoot: { type: "string" },
|
|
17342
17536
|
sessionType: { type: "string" },
|
|
17343
17537
|
dirty: { type: "boolean" },
|
|
17344
|
-
revision: { type: "number" },
|
|
17345
17538
|
document: {
|
|
17346
17539
|
type: "object",
|
|
17347
17540
|
properties: {
|
|
17348
17541
|
path: { type: "string" },
|
|
17349
|
-
source: { type: "string" }
|
|
17542
|
+
source: { type: "string" },
|
|
17543
|
+
sourceByteLength: { oneOf: [{ type: "number" }, { type: "null" }] },
|
|
17544
|
+
byteLength: { type: "number" },
|
|
17545
|
+
revision: { type: "number" }
|
|
17350
17546
|
}
|
|
17351
|
-
}
|
|
17547
|
+
},
|
|
17548
|
+
collaboration: {
|
|
17549
|
+
type: "object",
|
|
17550
|
+
properties: {
|
|
17551
|
+
documentId: { type: "string" },
|
|
17552
|
+
url: { type: "string" }
|
|
17553
|
+
}
|
|
17554
|
+
},
|
|
17555
|
+
openedAt: { type: "string" },
|
|
17556
|
+
updatedAt: { type: "string" },
|
|
17557
|
+
lastSavedAt: { type: "string" }
|
|
17352
17558
|
},
|
|
17353
|
-
required: ["
|
|
17559
|
+
required: ["active"]
|
|
17354
17560
|
}
|
|
17355
17561
|
},
|
|
17356
17562
|
describe: {
|
|
@@ -17464,7 +17670,7 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
17464
17670
|
description: "Close a specific editing session by ID.",
|
|
17465
17671
|
requiresDocumentContext: false,
|
|
17466
17672
|
intentName: "close_session",
|
|
17467
|
-
sdkMetadata: { mutates:
|
|
17673
|
+
sdkMetadata: { mutates: true, idempotency: "conditional", supportsTrackedMode: false, supportsDryRun: false },
|
|
17468
17674
|
outputSchema: {
|
|
17469
17675
|
type: "object",
|
|
17470
17676
|
properties: {
|
|
@@ -17492,7 +17698,7 @@ var init_cli_only_operation_definitions = __esm(() => {
|
|
|
17492
17698
|
description: "Set the default session for subsequent commands.",
|
|
17493
17699
|
requiresDocumentContext: false,
|
|
17494
17700
|
intentName: "set_default_session",
|
|
17495
|
-
sdkMetadata: { mutates:
|
|
17701
|
+
sdkMetadata: { mutates: true, idempotency: "conditional", supportsTrackedMode: false, supportsDryRun: false },
|
|
17496
17702
|
outputSchema: {
|
|
17497
17703
|
type: "object",
|
|
17498
17704
|
properties: {
|
|
@@ -38237,7 +38443,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
|
|
|
38237
38443
|
emptyOptions2 = {};
|
|
38238
38444
|
});
|
|
38239
38445
|
|
|
38240
|
-
// ../../packages/superdoc/dist/chunks/SuperConverter-
|
|
38446
|
+
// ../../packages/superdoc/dist/chunks/SuperConverter-Cw5CEerM.es.js
|
|
38241
38447
|
function getExtensionConfigField(extension$1, field, context = { name: "" }) {
|
|
38242
38448
|
const fieldValue = extension$1.config[field];
|
|
38243
38449
|
if (typeof fieldValue === "function")
|
|
@@ -41780,6 +41986,24 @@ function executeCreateTableOfContents2(adapter, input, options) {
|
|
|
41780
41986
|
validateTargetOnlyCreateLocation2(at, "create.tableOfContents");
|
|
41781
41987
|
return adapter.tableOfContents(normalized, normalizeMutationOptions2(options));
|
|
41782
41988
|
}
|
|
41989
|
+
function validateBlocksListInput2(input) {
|
|
41990
|
+
if (!input)
|
|
41991
|
+
return;
|
|
41992
|
+
if (input.offset != null && (typeof input.offset !== "number" || input.offset < 0))
|
|
41993
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.list offset must be a non-negative number.", { fields: ["offset"] });
|
|
41994
|
+
if (input.limit != null && (typeof input.limit !== "number" || input.limit < 1))
|
|
41995
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.list limit must be a positive number.", { fields: ["limit"] });
|
|
41996
|
+
if (input.nodeTypes != null) {
|
|
41997
|
+
if (!Array.isArray(input.nodeTypes) || input.nodeTypes.length === 0)
|
|
41998
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.list nodeTypes must be a non-empty array.", { fields: ["nodeTypes"] });
|
|
41999
|
+
for (const nt of input.nodeTypes)
|
|
42000
|
+
if (!VALID_BLOCK_NODE_TYPES2.has(nt))
|
|
42001
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `blocks.list nodeTypes contains unknown type "${nt}".`, {
|
|
42002
|
+
fields: ["nodeTypes"],
|
|
42003
|
+
nodeType: nt
|
|
42004
|
+
});
|
|
42005
|
+
}
|
|
42006
|
+
}
|
|
41783
42007
|
function validateBlocksDeleteInput2(input) {
|
|
41784
42008
|
if (!input || typeof input !== "object")
|
|
41785
42009
|
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.delete requires an input object.", { fields: ["input"] });
|
|
@@ -41801,10 +42025,35 @@ function validateBlocksDeleteInput2(input) {
|
|
|
41801
42025
|
nodeType
|
|
41802
42026
|
});
|
|
41803
42027
|
}
|
|
42028
|
+
function validateBlockNodeAddress2(address2, label) {
|
|
42029
|
+
if (!address2 || typeof address2 !== "object")
|
|
42030
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `blocks.deleteRange requires a ${label} address.`, { fields: [label] });
|
|
42031
|
+
const addr = address2;
|
|
42032
|
+
if (addr.kind !== "block")
|
|
42033
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `blocks.deleteRange ${label} must have kind "block".`, { fields: [`${label}.kind`] });
|
|
42034
|
+
if (!addr.nodeId || typeof addr.nodeId !== "string")
|
|
42035
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `blocks.deleteRange ${label} requires a nodeId string.`, { fields: [`${label}.nodeId`] });
|
|
42036
|
+
if (!addr.nodeType || typeof addr.nodeType !== "string")
|
|
42037
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `blocks.deleteRange ${label} requires a nodeType string.`, { fields: [`${label}.nodeType`] });
|
|
42038
|
+
}
|
|
42039
|
+
function validateBlocksDeleteRangeInput2(input) {
|
|
42040
|
+
if (!input || typeof input !== "object")
|
|
42041
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.deleteRange requires an input object.", { fields: ["input"] });
|
|
42042
|
+
validateBlockNodeAddress2(input.start, "start");
|
|
42043
|
+
validateBlockNodeAddress2(input.end, "end");
|
|
42044
|
+
}
|
|
42045
|
+
function executeBlocksList2(adapter, input) {
|
|
42046
|
+
validateBlocksListInput2(input);
|
|
42047
|
+
return adapter.list(input);
|
|
42048
|
+
}
|
|
41804
42049
|
function executeBlocksDelete2(adapter, input, options) {
|
|
41805
42050
|
validateBlocksDeleteInput2(input);
|
|
41806
42051
|
return adapter.delete(input, normalizeMutationOptions2(options));
|
|
41807
42052
|
}
|
|
42053
|
+
function executeBlocksDeleteRange2(adapter, input, options) {
|
|
42054
|
+
validateBlocksDeleteRangeInput2(input);
|
|
42055
|
+
return adapter.deleteRange(input, normalizeMutationOptions2(options));
|
|
42056
|
+
}
|
|
41808
42057
|
function executeTrackChangesList2(adapter, input) {
|
|
41809
42058
|
return adapter.list(input);
|
|
41810
42059
|
}
|
|
@@ -41865,7 +42114,9 @@ function buildDispatchTable2(api) {
|
|
|
41865
42114
|
insert: (input, options) => api.insert(input, options),
|
|
41866
42115
|
replace: (input, options) => api.replace(input, options),
|
|
41867
42116
|
delete: (input, options) => api.delete(input, options),
|
|
42117
|
+
"blocks.list": (input) => api.blocks.list(input),
|
|
41868
42118
|
"blocks.delete": (input, options) => api.blocks.delete(input, options),
|
|
42119
|
+
"blocks.deleteRange": (input, options) => api.blocks.deleteRange(input, options),
|
|
41869
42120
|
"format.apply": (input, options) => api.format.apply(input, options),
|
|
41870
42121
|
...formatInlineAliasDispatch,
|
|
41871
42122
|
"styles.paragraph.setStyle": (input, options) => api.styles.paragraph.setStyle(input, options),
|
|
@@ -43678,9 +43929,17 @@ function createDocumentApi2(adapters) {
|
|
|
43678
43929
|
return executeTrackChangesDecide2(adapters.trackChanges, input, options);
|
|
43679
43930
|
}
|
|
43680
43931
|
},
|
|
43681
|
-
blocks: {
|
|
43682
|
-
|
|
43683
|
-
|
|
43932
|
+
blocks: {
|
|
43933
|
+
list(input) {
|
|
43934
|
+
return executeBlocksList2(adapters.blocks, input);
|
|
43935
|
+
},
|
|
43936
|
+
delete(input, options) {
|
|
43937
|
+
return executeBlocksDelete2(adapters.blocks, input, options);
|
|
43938
|
+
},
|
|
43939
|
+
deleteRange(input, options) {
|
|
43940
|
+
return executeBlocksDeleteRange2(adapters.blocks, input, options);
|
|
43941
|
+
}
|
|
43942
|
+
},
|
|
43684
43943
|
create: {
|
|
43685
43944
|
paragraph(input, options) {
|
|
43686
43945
|
return executeCreateParagraph2(adapters.create, input, options);
|
|
@@ -62721,7 +62980,7 @@ var isRegExp = (value) => {
|
|
|
62721
62980
|
tracked: false,
|
|
62722
62981
|
carrier: runAttributeCarrier2(runPropertyKey ?? key),
|
|
62723
62982
|
schema
|
|
62724
|
-
}), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_NOT_FOUND_COMMAND_TRACKED2, T_IMAGE_COMMAND2, T_CC_READ2, T_CC_MUTATION2, T_CC_TYPED2, T_CC_TYPED_READ2, T_CC_RAW2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_PARAGRAPH_MUTATION2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, T_HEADER_FOOTER_MUTATION2, T_REF_READ_LIST2, T_REF_MUTATION2, T_REF_MUTATION_REMOVE2, T_REF_INSERT2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG3, PARAGRAPH_ALIGNMENTS2, TAB_STOP_ALIGNMENTS2, TAB_STOP_LEADERS2, BORDER_SIDES2, CLEAR_BORDER_SIDES2, LINE_RULES2, PARAGRAPH_BLOCK_TYPES2, SET_STYLE_KEYS2, CLEAR_STYLE_KEYS2, RESET_DIRECT_FORMATTING_KEYS2, SET_ALIGNMENT_KEYS2, CLEAR_ALIGNMENT_KEYS2, SET_INDENTATION_KEYS2, CLEAR_INDENTATION_KEYS2, SET_SPACING_KEYS2, CLEAR_SPACING_KEYS2, SET_KEEP_OPTIONS_KEYS2, SET_OUTLINE_LEVEL_KEYS2, SET_FLOW_OPTIONS_KEYS2, SET_TAB_STOP_KEYS2, CLEAR_TAB_STOP_KEYS2, CLEAR_ALL_TAB_STOPS_KEYS2, SET_BORDER_KEYS2, CLEAR_BORDER_KEYS2, SET_SHADING_KEYS2, CLEAR_SHADING_KEYS2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUES2, ST_UNDERLINE_VALUE_SET2, ST_VERTICAL_ALIGN_RUN2, ST_EM2, ST_TEXT_ALIGNMENT2, ST_TEXT_DIRECTION2, ST_TEXTBOX_TIGHT_WRAP2, ST_TEXT_TRANSFORM2, ST_JUSTIFICATION2, FONT_FAMILY_SCHEMA2, COLOR_SCHEMA2, SPACING_SCHEMA2, INDENT_SCHEMA2, UNDERLINE_SCHEMA2, BORDER_PROPERTIES_SCHEMA2, SHADING_SCHEMA2, LANG_SCHEMA2, EAST_ASIAN_LAYOUT_SCHEMA2, FIT_TEXT_SCHEMA2, NUMBERING_PROPERTIES_SCHEMA2, FRAME_PR_SCHEMA2, PARAGRAPH_BORDERS_SCHEMA2, TAB_STOP_SCHEMA2, PROPERTY_REGISTRY3, ALLOWED_KEYS_BY_CHANNEL2, PROPERTY_INDEX2, EXCLUDED_KEYS2, INPUT_ALLOWED_KEYS2, TARGET_ALLOWED_KEYS2, OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, Z_ORDER_RELATIVE_HEIGHT_MAX2 = 4294967295, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, paragraphTargetSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, textSelectorSchema2, nodeSelectorSchema2, sdSelectorSchema2, sdAddressSchema2, sdMutationResolutionSchema2, sdMutationSuccessSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, paragraphMutationTargetSchema2, paragraphMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, tocMutationFailureSchema2, tocMutationSuccessSchema2, tocEntryMutationFailureSchema2, tocEntryMutationSuccessSchema2, hyperlinkTargetSchema2, hyperlinkReadPropertiesSchema2, hyperlinkSpecSchema2, hyperlinkPatchSchema2, hyperlinkDomainSchema2, hyperlinkMutationSuccessSchema2, hyperlinkMutationFailureSchema2, contentControlTargetSchema2, contentControlMutationSuccessSchema2, contentControlMutationFailureSchema2, ccListResultSchema2, ccInfoSchema2, refFailureSchema2, bookmarkAddressSchema2, bookmarkMutation2, footnoteAddressSchema2, footnoteConfigScopeSchema2, footnoteNumberingSchema2, footnoteMutation2, footnoteConfig2, crossRefAddressSchema2, crossRefTargetSchema2, crossRefDisplaySchema2, crossRefMutation2, indexAddressSchema2, indexEntryAddressSchema2, indexConfigSchema2, indexEntryDataSchema2, indexEntryPatchSchema2, indexMutation2, indexEntryMutation2, captionAddressSchema2, captionMutation2, captionConfig2, fieldAddressSchema2, fieldMutation2, citationAddressSchema2, citationSourceAddressSchema2, bibliographyAddressSchema2, citationMutation2, citationSourceMutation2, bibliographyMutation2, citationPersonSchema2, citationSourceFieldsSchema2, tocCreateLocationSchema2, authoritiesAddressSchema2, authorityEntryAddressSchema2, authoritiesConfigSchema2, authorityEntryDataSchema2, authorityEntryPatchSchema2, authoritiesMutation2, authorityEntryMutation2, GROUP_METADATA2, STEP_OP_CATALOG_UNFROZEN2, PUBLIC_STEP_OP_CATALOG_UNFROZEN2, PUBLIC_MUTATION_STEP_OP_IDS2, PUBLIC_MUTATION_STEP_OP_SET2, CAPABILITY_REASON_CODES2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, CONTENT_KIND_SET2, INLINE_KIND_SET2, LEGACY_TOP_LEVEL_TYPES2, LEGACY_INSERT_ALLOWED_KEYS2, STRUCTURAL_INSERT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, LEGACY_REPLACE_ALLOWED_KEYS2, STRUCTURAL_REPLACE_ALLOWED_KEYS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, TABLE_LOCATOR_OPS2, ROW_LOCATOR_OPS2, COLUMN_LOCATOR_OPS2, MERGE_RANGE_LOCATOR_OPS2, HEADER_FOOTER_KINDS$1, HEADER_FOOTER_VARIANTS$1, DEFAULT_SECTIONS_LIST_LIMIT2 = 250, SECTION_BREAK_TYPES3, SECTION_ORIENTATIONS2, SECTION_VERTICAL_ALIGNS2, SECTION_DIRECTIONS2, HEADER_FOOTER_KINDS3, HEADER_FOOTER_VARIANTS3, LINE_NUMBER_RESTARTS2, PAGE_NUMBER_FORMATS2, PAGE_BORDER_DISPLAYS2, PAGE_BORDER_OFFSET_FROM_VALUES2, PAGE_BORDER_Z_ORDER_VALUES2, VALID_WRAP_TYPES2, VALID_WRAP_SIDES2, VALID_IMAGE_SIZE_UNITS2, PATCH_FIELDS2, ADAPTER_GATED_PREFIXES2, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$215) => ({
|
|
62983
|
+
}), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_NOT_FOUND_COMMAND_TRACKED2, T_IMAGE_COMMAND2, T_CC_READ2, T_CC_MUTATION2, T_CC_TYPED2, T_CC_TYPED_READ2, T_CC_RAW2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_PARAGRAPH_MUTATION2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, T_HEADER_FOOTER_MUTATION2, T_REF_READ_LIST2, T_REF_MUTATION2, T_REF_MUTATION_REMOVE2, T_REF_INSERT2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG3, PARAGRAPH_ALIGNMENTS2, TAB_STOP_ALIGNMENTS2, TAB_STOP_LEADERS2, BORDER_SIDES2, CLEAR_BORDER_SIDES2, LINE_RULES2, PARAGRAPH_BLOCK_TYPES2, SET_STYLE_KEYS2, CLEAR_STYLE_KEYS2, RESET_DIRECT_FORMATTING_KEYS2, SET_ALIGNMENT_KEYS2, CLEAR_ALIGNMENT_KEYS2, SET_INDENTATION_KEYS2, CLEAR_INDENTATION_KEYS2, SET_SPACING_KEYS2, CLEAR_SPACING_KEYS2, SET_KEEP_OPTIONS_KEYS2, SET_OUTLINE_LEVEL_KEYS2, SET_FLOW_OPTIONS_KEYS2, SET_TAB_STOP_KEYS2, CLEAR_TAB_STOP_KEYS2, CLEAR_ALL_TAB_STOPS_KEYS2, SET_BORDER_KEYS2, CLEAR_BORDER_KEYS2, SET_SHADING_KEYS2, CLEAR_SHADING_KEYS2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUES2, ST_UNDERLINE_VALUE_SET2, ST_VERTICAL_ALIGN_RUN2, ST_EM2, ST_TEXT_ALIGNMENT2, ST_TEXT_DIRECTION2, ST_TEXTBOX_TIGHT_WRAP2, ST_TEXT_TRANSFORM2, ST_JUSTIFICATION2, FONT_FAMILY_SCHEMA2, COLOR_SCHEMA2, SPACING_SCHEMA2, INDENT_SCHEMA2, UNDERLINE_SCHEMA2, BORDER_PROPERTIES_SCHEMA2, SHADING_SCHEMA2, LANG_SCHEMA2, EAST_ASIAN_LAYOUT_SCHEMA2, FIT_TEXT_SCHEMA2, NUMBERING_PROPERTIES_SCHEMA2, FRAME_PR_SCHEMA2, PARAGRAPH_BORDERS_SCHEMA2, TAB_STOP_SCHEMA2, PROPERTY_REGISTRY3, ALLOWED_KEYS_BY_CHANNEL2, PROPERTY_INDEX2, EXCLUDED_KEYS2, INPUT_ALLOWED_KEYS2, TARGET_ALLOWED_KEYS2, OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, Z_ORDER_RELATIVE_HEIGHT_MAX2 = 4294967295, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, paragraphTargetSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, textSelectorSchema2, nodeSelectorSchema2, sdSelectorSchema2, sdAddressSchema2, sdMutationResolutionSchema2, sdMutationSuccessSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, paragraphMutationTargetSchema2, paragraphMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, tocMutationFailureSchema2, tocMutationSuccessSchema2, tocEntryMutationFailureSchema2, tocEntryMutationSuccessSchema2, hyperlinkTargetSchema2, hyperlinkReadPropertiesSchema2, hyperlinkSpecSchema2, hyperlinkPatchSchema2, hyperlinkDomainSchema2, hyperlinkMutationSuccessSchema2, hyperlinkMutationFailureSchema2, contentControlTargetSchema2, contentControlMutationSuccessSchema2, contentControlMutationFailureSchema2, ccListResultSchema2, ccInfoSchema2, refFailureSchema2, bookmarkAddressSchema2, bookmarkMutation2, footnoteAddressSchema2, footnoteConfigScopeSchema2, footnoteNumberingSchema2, footnoteMutation2, footnoteConfig2, crossRefAddressSchema2, crossRefTargetSchema2, crossRefDisplaySchema2, crossRefMutation2, indexAddressSchema2, indexEntryAddressSchema2, indexConfigSchema2, indexEntryDataSchema2, indexEntryPatchSchema2, indexMutation2, indexEntryMutation2, captionAddressSchema2, captionMutation2, captionConfig2, fieldAddressSchema2, fieldMutation2, citationAddressSchema2, citationSourceAddressSchema2, bibliographyAddressSchema2, citationMutation2, citationSourceMutation2, bibliographyMutation2, citationPersonSchema2, citationSourceFieldsSchema2, tocCreateLocationSchema2, authoritiesAddressSchema2, authorityEntryAddressSchema2, authoritiesConfigSchema2, authorityEntryDataSchema2, authorityEntryPatchSchema2, authoritiesMutation2, authorityEntryMutation2, GROUP_METADATA2, STEP_OP_CATALOG_UNFROZEN2, PUBLIC_STEP_OP_CATALOG_UNFROZEN2, PUBLIC_MUTATION_STEP_OP_IDS2, PUBLIC_MUTATION_STEP_OP_SET2, CAPABILITY_REASON_CODES2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, CONTENT_KIND_SET2, INLINE_KIND_SET2, LEGACY_TOP_LEVEL_TYPES2, LEGACY_INSERT_ALLOWED_KEYS2, STRUCTURAL_INSERT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, LEGACY_REPLACE_ALLOWED_KEYS2, STRUCTURAL_REPLACE_ALLOWED_KEYS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, VALID_BLOCK_NODE_TYPES2, TABLE_LOCATOR_OPS2, ROW_LOCATOR_OPS2, COLUMN_LOCATOR_OPS2, MERGE_RANGE_LOCATOR_OPS2, HEADER_FOOTER_KINDS$1, HEADER_FOOTER_VARIANTS$1, DEFAULT_SECTIONS_LIST_LIMIT2 = 250, SECTION_BREAK_TYPES3, SECTION_ORIENTATIONS2, SECTION_VERTICAL_ALIGNS2, SECTION_DIRECTIONS2, HEADER_FOOTER_KINDS3, HEADER_FOOTER_VARIANTS3, LINE_NUMBER_RESTARTS2, PAGE_NUMBER_FORMATS2, PAGE_BORDER_DISPLAYS2, PAGE_BORDER_OFFSET_FROM_VALUES2, PAGE_BORDER_Z_ORDER_VALUES2, VALID_WRAP_TYPES2, VALID_WRAP_SIDES2, VALID_IMAGE_SIZE_UNITS2, PATCH_FIELDS2, ADAPTER_GATED_PREFIXES2, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$215) => ({
|
|
62725
62984
|
handlerName,
|
|
62726
62985
|
handler: (params) => {
|
|
62727
62986
|
const { nodes } = params;
|
|
@@ -74601,7 +74860,7 @@ var isRegExp = (value) => {
|
|
|
74601
74860
|
state.kern = kernNode.attributes["w:val"];
|
|
74602
74861
|
}
|
|
74603
74862
|
}, SuperConverter;
|
|
74604
|
-
var
|
|
74863
|
+
var init_SuperConverter_Cw5CEerM_es = __esm(() => {
|
|
74605
74864
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
74606
74865
|
init_jszip_ChlR43oI_es();
|
|
74607
74866
|
init_xml_js_DLE8mr0n_es();
|
|
@@ -77533,7 +77792,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
77533
77792
|
},
|
|
77534
77793
|
find: {
|
|
77535
77794
|
memberPath: "find",
|
|
77536
|
-
description: "Search the document for text or node matches using SDM/1 selectors.",
|
|
77795
|
+
description: "Search the document for text or node matches using SDM/1 selectors. Returns discovery-grade results — for mutation targeting, use query.match instead.",
|
|
77537
77796
|
expectedResult: "Returns an SDFindResult envelope ({ total, limit, offset, items }). Each item is an SDNodeResult ({ node, address }).",
|
|
77538
77797
|
requiresDocumentContext: true,
|
|
77539
77798
|
metadata: readOperation2({
|
|
@@ -77637,7 +77896,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
77637
77896
|
},
|
|
77638
77897
|
insert: {
|
|
77639
77898
|
memberPath: "insert",
|
|
77640
|
-
description: "Insert content at a
|
|
77899
|
+
description: "Insert inline content at a text position within an existing block, or at the end of the document when target is omitted. This is NOT for creating sibling blocks — use create.paragraph, create.heading, or lists.insert for that. Accepts two input shapes: legacy string-based (value + type) or structural SDFragment (content). Supports text (default), markdown, and html content types via the `type` field in legacy mode. Structural mode accepts an SDFragment with typed nodes (paragraphs, tables, images, etc.).",
|
|
77641
77900
|
expectedResult: "Returns a TextMutationReceipt with applied status; receipt reports NO_OP if the insertion point is invalid or content is empty.",
|
|
77642
77901
|
requiresDocumentContext: true,
|
|
77643
77902
|
metadata: mutationOperation2({
|
|
@@ -77726,10 +77985,20 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
77726
77985
|
referenceDocPath: "delete.mdx",
|
|
77727
77986
|
referenceGroup: "core"
|
|
77728
77987
|
},
|
|
77988
|
+
"blocks.list": {
|
|
77989
|
+
memberPath: "blocks.list",
|
|
77990
|
+
description: "List top-level blocks in document order with IDs, types, and text previews. Supports pagination via offset/limit and optional nodeType filtering.",
|
|
77991
|
+
expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, isEmpty), and the current document revision.",
|
|
77992
|
+
requiresDocumentContext: true,
|
|
77993
|
+
metadata: readOperation2({ throws: ["INVALID_INPUT"] }),
|
|
77994
|
+
referenceDocPath: "blocks/list.mdx",
|
|
77995
|
+
referenceGroup: "blocks",
|
|
77996
|
+
essential: true
|
|
77997
|
+
},
|
|
77729
77998
|
"blocks.delete": {
|
|
77730
77999
|
memberPath: "blocks.delete",
|
|
77731
78000
|
description: "Delete an entire block node (paragraph, heading, list item, table, image, or sdt) deterministically.",
|
|
77732
|
-
expectedResult: "Returns a BlocksDeleteResult receipt confirming the block was removed
|
|
78001
|
+
expectedResult: "Returns a BlocksDeleteResult receipt confirming the block was removed, including a deletedBlock summary with ordinal, nodeType, and textPreview.",
|
|
77733
78002
|
requiresDocumentContext: true,
|
|
77734
78003
|
metadata: mutationOperation2({
|
|
77735
78004
|
idempotency: "conditional",
|
|
@@ -77748,6 +78017,28 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
77748
78017
|
referenceDocPath: "blocks/delete.mdx",
|
|
77749
78018
|
referenceGroup: "blocks"
|
|
77750
78019
|
},
|
|
78020
|
+
"blocks.deleteRange": {
|
|
78021
|
+
memberPath: "blocks.deleteRange",
|
|
78022
|
+
description: "Delete a contiguous range of top-level blocks between two endpoints (inclusive). Both endpoints must be direct children of the document node. Supports dry-run preview.",
|
|
78023
|
+
expectedResult: "Returns a BlocksDeleteRangeResult with deletedCount, deletedBlocks array (each with ordinal, nodeId, nodeType, textPreview), before/after revision, and dryRun flag.",
|
|
78024
|
+
requiresDocumentContext: true,
|
|
78025
|
+
metadata: mutationOperation2({
|
|
78026
|
+
idempotency: "conditional",
|
|
78027
|
+
supportsDryRun: true,
|
|
78028
|
+
supportsTrackedMode: false,
|
|
78029
|
+
possibleFailureCodes: NONE_FAILURES2,
|
|
78030
|
+
throws: [
|
|
78031
|
+
"TARGET_NOT_FOUND",
|
|
78032
|
+
"AMBIGUOUS_TARGET",
|
|
78033
|
+
"INVALID_TARGET",
|
|
78034
|
+
"INVALID_INPUT",
|
|
78035
|
+
"CAPABILITY_UNAVAILABLE",
|
|
78036
|
+
"INTERNAL_ERROR"
|
|
78037
|
+
]
|
|
78038
|
+
}),
|
|
78039
|
+
referenceDocPath: "blocks/delete-range.mdx",
|
|
78040
|
+
referenceGroup: "blocks"
|
|
78041
|
+
},
|
|
77751
78042
|
"format.apply": {
|
|
77752
78043
|
memberPath: "format.apply",
|
|
77753
78044
|
description: "Apply inline run-property patch changes to the target range with explicit set/clear semantics.",
|
|
@@ -77791,7 +78082,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
77791
78082
|
},
|
|
77792
78083
|
"create.paragraph": {
|
|
77793
78084
|
memberPath: "create.paragraph",
|
|
77794
|
-
description: "Create a
|
|
78085
|
+
description: "Create a standalone paragraph at the target position. To add a list item, use lists.insert instead.",
|
|
77795
78086
|
expectedResult: "Returns a CreateParagraphResult with the new paragraph block ID and address.",
|
|
77796
78087
|
requiresDocumentContext: true,
|
|
77797
78088
|
metadata: mutationOperation2({
|
|
@@ -78497,7 +78788,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
78497
78788
|
},
|
|
78498
78789
|
"lists.insert": {
|
|
78499
78790
|
memberPath: "lists.insert",
|
|
78500
|
-
description: "Insert a new list
|
|
78791
|
+
description: "Insert a new list item before or after an existing list item. The new item inherits the target list context.",
|
|
78501
78792
|
expectedResult: "Returns a ListsInsertResult with the new list item address and block ID.",
|
|
78502
78793
|
requiresDocumentContext: true,
|
|
78503
78794
|
metadata: mutationOperation2({
|
|
@@ -79123,7 +79414,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
79123
79414
|
},
|
|
79124
79415
|
"query.match": {
|
|
79125
79416
|
memberPath: "query.match",
|
|
79126
|
-
description: "Deterministic selector-based search
|
|
79417
|
+
description: "Deterministic selector-based search returning mutation-grade addresses and text ranges. Use this to discover targets before any mutation.",
|
|
79127
79418
|
expectedResult: "Returns a QueryMatchOutput with the resolved target address and cardinality metadata.",
|
|
79128
79419
|
requiresDocumentContext: true,
|
|
79129
79420
|
metadata: readOperation2({
|
|
@@ -80014,7 +80305,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
80014
80305
|
"history.undo": {
|
|
80015
80306
|
memberPath: "history.undo",
|
|
80016
80307
|
description: "Undo the most recent history-safe mutation in the active editor.",
|
|
80017
|
-
expectedResult: "Returns a HistoryActionResult with noop flag
|
|
80308
|
+
expectedResult: "Returns a HistoryActionResult with noop flag, reason (EMPTY_UNDO_STACK | NO_EFFECT when noop), and revision before/after.",
|
|
80018
80309
|
requiresDocumentContext: true,
|
|
80019
80310
|
metadata: mutationOperation2({
|
|
80020
80311
|
idempotency: "non-idempotent",
|
|
@@ -80030,7 +80321,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
80030
80321
|
"history.redo": {
|
|
80031
80322
|
memberPath: "history.redo",
|
|
80032
80323
|
description: "Redo the most recently undone action in the active editor.",
|
|
80033
|
-
expectedResult: "Returns a HistoryActionResult with noop flag
|
|
80324
|
+
expectedResult: "Returns a HistoryActionResult with noop flag, reason (EMPTY_REDO_STACK | NO_EFFECT when noop), and revision before/after.",
|
|
80034
80325
|
requiresDocumentContext: true,
|
|
80035
80326
|
metadata: mutationOperation2({
|
|
80036
80327
|
idempotency: "non-idempotent",
|
|
@@ -84569,13 +84860,107 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
84569
84860
|
}, ["target", "text"]), sdMutationResultSchemaFor2("replace"), sdMutationFailureSchemaFor2("replace"), objectSchema2({ target: textAddressSchema2 }, ["target"]), textMutationResultSchemaFor2("delete"), textMutationFailureSchemaFor2("delete"), objectSchema2({
|
|
84570
84861
|
target: textAddressSchema2,
|
|
84571
84862
|
inline: buildInlineRunPatchSchema2()
|
|
84572
|
-
}, ["target", "inline"]), textMutationResultSchemaFor2("format.apply"), textMutationFailureSchemaFor2("format.apply"), { ...formatInlineAliasOperationSchemas2 }, objectSchema2({
|
|
84863
|
+
}, ["target", "inline"]), textMutationResultSchemaFor2("format.apply"), textMutationFailureSchemaFor2("format.apply"), { ...formatInlineAliasOperationSchemas2 }, objectSchema2({
|
|
84864
|
+
offset: {
|
|
84865
|
+
type: "number",
|
|
84866
|
+
minimum: 0
|
|
84867
|
+
},
|
|
84868
|
+
limit: {
|
|
84869
|
+
type: "number",
|
|
84870
|
+
minimum: 1
|
|
84871
|
+
},
|
|
84872
|
+
nodeTypes: {
|
|
84873
|
+
type: "array",
|
|
84874
|
+
items: { enum: [...blockNodeTypeValues2] }
|
|
84875
|
+
}
|
|
84876
|
+
}), objectSchema2({
|
|
84877
|
+
total: { type: "number" },
|
|
84878
|
+
blocks: {
|
|
84879
|
+
type: "array",
|
|
84880
|
+
items: objectSchema2({
|
|
84881
|
+
ordinal: { type: "number" },
|
|
84882
|
+
nodeId: { type: "string" },
|
|
84883
|
+
nodeType: { enum: [...blockNodeTypeValues2] },
|
|
84884
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] },
|
|
84885
|
+
isEmpty: { type: "boolean" }
|
|
84886
|
+
}, [
|
|
84887
|
+
"ordinal",
|
|
84888
|
+
"nodeId",
|
|
84889
|
+
"nodeType",
|
|
84890
|
+
"textPreview",
|
|
84891
|
+
"isEmpty"
|
|
84892
|
+
])
|
|
84893
|
+
},
|
|
84894
|
+
revision: { type: "string" }
|
|
84895
|
+
}, [
|
|
84896
|
+
"total",
|
|
84897
|
+
"blocks",
|
|
84898
|
+
"revision"
|
|
84899
|
+
]), objectSchema2({ target: deletableBlockNodeAddressSchema2 }, ["target"]), objectSchema2({
|
|
84573
84900
|
success: { const: true },
|
|
84574
|
-
deleted: deletableBlockNodeAddressSchema2
|
|
84901
|
+
deleted: deletableBlockNodeAddressSchema2,
|
|
84902
|
+
deletedBlock: objectSchema2({
|
|
84903
|
+
ordinal: { type: "number" },
|
|
84904
|
+
nodeId: { type: "string" },
|
|
84905
|
+
nodeType: { type: "string" },
|
|
84906
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] }
|
|
84907
|
+
})
|
|
84575
84908
|
}, ["success", "deleted"]), objectSchema2({
|
|
84576
84909
|
success: { const: true },
|
|
84577
|
-
deleted: deletableBlockNodeAddressSchema2
|
|
84910
|
+
deleted: deletableBlockNodeAddressSchema2,
|
|
84911
|
+
deletedBlock: objectSchema2({
|
|
84912
|
+
ordinal: { type: "number" },
|
|
84913
|
+
nodeId: { type: "string" },
|
|
84914
|
+
nodeType: { type: "string" },
|
|
84915
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] }
|
|
84916
|
+
})
|
|
84578
84917
|
}, ["success", "deleted"]), preApplyFailureResultSchemaFor2("blocks.delete"), objectSchema2({
|
|
84918
|
+
start: blockNodeAddressSchema2,
|
|
84919
|
+
end: blockNodeAddressSchema2
|
|
84920
|
+
}, ["start", "end"]), objectSchema2({
|
|
84921
|
+
success: { const: true },
|
|
84922
|
+
deletedCount: { type: "number" },
|
|
84923
|
+
deletedBlocks: {
|
|
84924
|
+
type: "array",
|
|
84925
|
+
items: objectSchema2({
|
|
84926
|
+
ordinal: { type: "number" },
|
|
84927
|
+
nodeId: { type: "string" },
|
|
84928
|
+
nodeType: { type: "string" },
|
|
84929
|
+
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] }
|
|
84930
|
+
}, [
|
|
84931
|
+
"ordinal",
|
|
84932
|
+
"nodeId",
|
|
84933
|
+
"nodeType",
|
|
84934
|
+
"textPreview"
|
|
84935
|
+
])
|
|
84936
|
+
},
|
|
84937
|
+
revision: objectSchema2({
|
|
84938
|
+
before: { type: "string" },
|
|
84939
|
+
after: { type: "string" }
|
|
84940
|
+
}, ["before", "after"]),
|
|
84941
|
+
dryRun: { type: "boolean" }
|
|
84942
|
+
}, [
|
|
84943
|
+
"success",
|
|
84944
|
+
"deletedCount",
|
|
84945
|
+
"deletedBlocks",
|
|
84946
|
+
"revision",
|
|
84947
|
+
"dryRun"
|
|
84948
|
+
]), objectSchema2({
|
|
84949
|
+
success: { const: true },
|
|
84950
|
+
deletedCount: { type: "number" },
|
|
84951
|
+
deletedBlocks: { type: "array" },
|
|
84952
|
+
revision: objectSchema2({
|
|
84953
|
+
before: { type: "string" },
|
|
84954
|
+
after: { type: "string" }
|
|
84955
|
+
}, ["before", "after"]),
|
|
84956
|
+
dryRun: { type: "boolean" }
|
|
84957
|
+
}, [
|
|
84958
|
+
"success",
|
|
84959
|
+
"deletedCount",
|
|
84960
|
+
"deletedBlocks",
|
|
84961
|
+
"revision",
|
|
84962
|
+
"dryRun"
|
|
84963
|
+
]), preApplyFailureResultSchemaFor2("blocks.deleteRange"), objectSchema2({
|
|
84579
84964
|
target: paragraphTargetSchema2,
|
|
84580
84965
|
styleId: {
|
|
84581
84966
|
type: "string",
|
|
@@ -87232,6 +87617,7 @@ var init_SuperConverter_BeR1rqZz_es = __esm(() => {
|
|
|
87232
87617
|
];
|
|
87233
87618
|
SUPPORTED_DELETE_NODE_TYPES2 = new Set(DELETABLE_BLOCK_NODE_TYPES2);
|
|
87234
87619
|
REJECTED_DELETE_NODE_TYPES2 = new Set(["tableRow", "tableCell"]);
|
|
87620
|
+
VALID_BLOCK_NODE_TYPES2 = new Set(BLOCK_NODE_TYPES2);
|
|
87235
87621
|
TABLE_LOCATOR_OPS2 = new Set([
|
|
87236
87622
|
"tables.delete",
|
|
87237
87623
|
"tables.clearContents",
|
|
@@ -134686,7 +135072,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
|
|
|
134686
135072
|
init_remark_gfm_z_sDF4ss_es();
|
|
134687
135073
|
});
|
|
134688
135074
|
|
|
134689
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
135075
|
+
// ../../packages/superdoc/dist/chunks/src-BV6PERs7.es.js
|
|
134690
135076
|
function deleteProps(obj, propOrProps) {
|
|
134691
135077
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
134692
135078
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -143217,7 +143603,18 @@ function buildTextMutationResolution(input2) {
|
|
|
143217
143603
|
};
|
|
143218
143604
|
}
|
|
143219
143605
|
function findTextBlockCandidates(index2, blockId) {
|
|
143220
|
-
|
|
143606
|
+
const primary = index2.candidates.filter((c) => c.nodeId === blockId && isTextBlockCandidate(c));
|
|
143607
|
+
if (primary.length > 0)
|
|
143608
|
+
return primary;
|
|
143609
|
+
try {
|
|
143610
|
+
const resolved = findBlockByNodeIdOnly(index2, blockId);
|
|
143611
|
+
if (isTextBlockCandidate(resolved))
|
|
143612
|
+
return [resolved];
|
|
143613
|
+
} catch (e) {
|
|
143614
|
+
if (e instanceof DocumentApiAdapterError && e.code === "AMBIGUOUS_TARGET")
|
|
143615
|
+
throw e;
|
|
143616
|
+
}
|
|
143617
|
+
return [];
|
|
143221
143618
|
}
|
|
143222
143619
|
function assertUnambiguous(matches2, blockId) {
|
|
143223
143620
|
if (matches2.length > 1)
|
|
@@ -148095,6 +148492,30 @@ function resolveBlockInsertionPos(editor, anchorBlockId, position4, stepId) {
|
|
|
148095
148492
|
throw planError("TARGET_NOT_FOUND", `block "${anchorBlockId}" not found`, stepId);
|
|
148096
148493
|
return position4 === "before" ? candidate.pos : candidate.end;
|
|
148097
148494
|
}
|
|
148495
|
+
function resolveCreateAnchor(editor, target, position4, stepId) {
|
|
148496
|
+
const index2 = getBlockIndex(editor);
|
|
148497
|
+
let candidate;
|
|
148498
|
+
try {
|
|
148499
|
+
candidate = findBlockByNodeIdOnly(index2, target.nodeId);
|
|
148500
|
+
} catch (e) {
|
|
148501
|
+
if (e instanceof Error && "code" in e)
|
|
148502
|
+
throw planError(e.code, e.message, stepId, e.details);
|
|
148503
|
+
throw e;
|
|
148504
|
+
}
|
|
148505
|
+
if (target.nodeType && candidate.nodeType !== target.nodeType) {
|
|
148506
|
+
const remediation = candidate.nodeType === "listItem" ? "Use lists.insert to add an item to a list sequence." : `The block is a ${candidate.nodeType}, not a ${target.nodeType}.`;
|
|
148507
|
+
throw planError("INVALID_TARGET", `Expected ${target.nodeType}:${target.nodeId} but found ${candidate.nodeType}:${candidate.nodeId}.`, stepId, {
|
|
148508
|
+
requestedNodeType: target.nodeType,
|
|
148509
|
+
actualNodeType: candidate.nodeType,
|
|
148510
|
+
nodeId: target.nodeId,
|
|
148511
|
+
remediation
|
|
148512
|
+
});
|
|
148513
|
+
}
|
|
148514
|
+
return {
|
|
148515
|
+
pos: position4 === "before" ? candidate.pos : candidate.end,
|
|
148516
|
+
anchor: candidate
|
|
148517
|
+
};
|
|
148518
|
+
}
|
|
148098
148519
|
function applyDirectMutationMeta(tr) {
|
|
148099
148520
|
tr.setMeta("inputType", "programmatic");
|
|
148100
148521
|
tr.setMeta("skipTrackChanges", true);
|
|
@@ -152399,13 +152820,14 @@ function collectTrackInsertRefsInRange(editor, from$1, to) {
|
|
|
152399
152820
|
entityId: id2
|
|
152400
152821
|
}));
|
|
152401
152822
|
}
|
|
152402
|
-
function resolveCreateInsertPosition(editor, at
|
|
152823
|
+
function resolveCreateInsertPosition(editor, at) {
|
|
152403
152824
|
const location$1 = at ?? { kind: "documentEnd" };
|
|
152404
152825
|
if (location$1.kind === "documentStart")
|
|
152405
152826
|
return 0;
|
|
152406
152827
|
if (location$1.kind === "documentEnd")
|
|
152407
152828
|
return editor.state.doc.content.size;
|
|
152408
|
-
|
|
152829
|
+
const { pos } = resolveCreateAnchor(editor, location$1.target, location$1.kind);
|
|
152830
|
+
return pos;
|
|
152409
152831
|
}
|
|
152410
152832
|
function resolveCreatedBlock(editor, nodeType, blockId) {
|
|
152411
152833
|
const index2 = getBlockIndex(editor);
|
|
@@ -152468,7 +152890,7 @@ function createParagraphWrapper(editor, input2, options) {
|
|
|
152468
152890
|
const mode = options?.changeMode ?? "direct";
|
|
152469
152891
|
if (mode === "tracked")
|
|
152470
152892
|
ensureTrackedCapability(editor, { operation: "create.paragraph" });
|
|
152471
|
-
const insertAt = resolveCreateInsertPosition(editor, input2.at
|
|
152893
|
+
const insertAt = resolveCreateInsertPosition(editor, input2.at);
|
|
152472
152894
|
if (options?.dryRun) {
|
|
152473
152895
|
if (!editor.can().insertParagraphAt?.({
|
|
152474
152896
|
pos: insertAt,
|
|
@@ -152500,6 +152922,7 @@ function createParagraphWrapper(editor, input2, options) {
|
|
|
152500
152922
|
};
|
|
152501
152923
|
}
|
|
152502
152924
|
const paragraphId = v4_default();
|
|
152925
|
+
let canonicalId = paragraphId;
|
|
152503
152926
|
let trackedChangeRefs;
|
|
152504
152927
|
if (executeDomainCommand(editor, () => {
|
|
152505
152928
|
const didApply = insertParagraphAt$1({
|
|
@@ -152512,6 +152935,7 @@ function createParagraphWrapper(editor, input2, options) {
|
|
|
152512
152935
|
clearIndexCache(editor);
|
|
152513
152936
|
try {
|
|
152514
152937
|
const paragraph2 = resolveCreatedBlock(editor, "paragraph", paragraphId);
|
|
152938
|
+
canonicalId = paragraph2.nodeId;
|
|
152515
152939
|
if (mode === "tracked")
|
|
152516
152940
|
trackedChangeRefs = collectTrackInsertRefsInRange(editor, paragraph2.pos, paragraph2.end);
|
|
152517
152941
|
} catch (e) {
|
|
@@ -152528,14 +152952,14 @@ function createParagraphWrapper(editor, input2, options) {
|
|
|
152528
152952
|
message: "Paragraph creation could not be applied at the requested location."
|
|
152529
152953
|
}
|
|
152530
152954
|
};
|
|
152531
|
-
return buildParagraphCreateSuccess(
|
|
152955
|
+
return buildParagraphCreateSuccess(canonicalId, trackedChangeRefs);
|
|
152532
152956
|
}
|
|
152533
152957
|
function createHeadingWrapper(editor, input2, options) {
|
|
152534
152958
|
const insertHeadingAt$1 = requireEditorCommand(editor.commands?.insertHeadingAt, "create.heading");
|
|
152535
152959
|
const mode = options?.changeMode ?? "direct";
|
|
152536
152960
|
if (mode === "tracked")
|
|
152537
152961
|
ensureTrackedCapability(editor, { operation: "create.heading" });
|
|
152538
|
-
const insertAt = resolveCreateInsertPosition(editor, input2.at
|
|
152962
|
+
const insertAt = resolveCreateInsertPosition(editor, input2.at);
|
|
152539
152963
|
if (options?.dryRun) {
|
|
152540
152964
|
if (!editor.can().insertHeadingAt?.({
|
|
152541
152965
|
pos: insertAt,
|
|
@@ -152568,6 +152992,7 @@ function createHeadingWrapper(editor, input2, options) {
|
|
|
152568
152992
|
};
|
|
152569
152993
|
}
|
|
152570
152994
|
const headingId = v4_default();
|
|
152995
|
+
let canonicalId = headingId;
|
|
152571
152996
|
let trackedChangeRefs;
|
|
152572
152997
|
if (executeDomainCommand(editor, () => {
|
|
152573
152998
|
const didApply = insertHeadingAt$1({
|
|
@@ -152581,6 +153006,7 @@ function createHeadingWrapper(editor, input2, options) {
|
|
|
152581
153006
|
clearIndexCache(editor);
|
|
152582
153007
|
try {
|
|
152583
153008
|
const heading3 = resolveCreatedBlock(editor, "heading", headingId);
|
|
153009
|
+
canonicalId = heading3.nodeId;
|
|
152584
153010
|
if (mode === "tracked")
|
|
152585
153011
|
trackedChangeRefs = collectTrackInsertRefsInRange(editor, heading3.pos, heading3.end);
|
|
152586
153012
|
} catch (e) {
|
|
@@ -152597,13 +153023,23 @@ function createHeadingWrapper(editor, input2, options) {
|
|
|
152597
153023
|
message: "Heading creation could not be applied at the requested location."
|
|
152598
153024
|
}
|
|
152599
153025
|
};
|
|
152600
|
-
return buildHeadingCreateSuccess(
|
|
153026
|
+
return buildHeadingCreateSuccess(canonicalId, trackedChangeRefs);
|
|
152601
153027
|
}
|
|
152602
|
-
function
|
|
152603
|
-
if (
|
|
152604
|
-
|
|
152605
|
-
|
|
152606
|
-
|
|
153028
|
+
function extractTextPreview(node3) {
|
|
153029
|
+
if (!node3.isTextblock)
|
|
153030
|
+
return null;
|
|
153031
|
+
const text5 = node3.textContent;
|
|
153032
|
+
if (text5.length <= TEXT_PREVIEW_MAX_LENGTH)
|
|
153033
|
+
return text5;
|
|
153034
|
+
return text5.slice(0, TEXT_PREVIEW_MAX_LENGTH);
|
|
153035
|
+
}
|
|
153036
|
+
function toBlockSummary(candidate, ordinal) {
|
|
153037
|
+
return {
|
|
153038
|
+
ordinal,
|
|
153039
|
+
nodeId: candidate.nodeId,
|
|
153040
|
+
nodeType: candidate.nodeType,
|
|
153041
|
+
textPreview: extractTextPreview(candidate.node)
|
|
153042
|
+
};
|
|
152607
153043
|
}
|
|
152608
153044
|
function resolveSdBlockId(candidate) {
|
|
152609
153045
|
const sdBlockId = candidate.node.attrs?.sdBlockId;
|
|
@@ -152611,6 +153047,12 @@ function resolveSdBlockId(candidate) {
|
|
|
152611
153047
|
return sdBlockId;
|
|
152612
153048
|
throw new DocumentApiAdapterError("INTERNAL_ERROR", "Resolved block candidate is missing sdBlockId attribute. This indicates a schema/extension invariant violation.", { attrs: candidate.node.attrs });
|
|
152613
153049
|
}
|
|
153050
|
+
function validateDeleteTargetNodeType(nodeType) {
|
|
153051
|
+
if (REJECTED_DELETE_NODE_TYPES3.has(nodeType))
|
|
153052
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { nodeType });
|
|
153053
|
+
if (!SUPPORTED_DELETE_NODE_TYPES3.has(nodeType))
|
|
153054
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, { nodeType });
|
|
153055
|
+
}
|
|
152614
153056
|
function validateCommandLayerUniqueness(editor, sdBlockId) {
|
|
152615
153057
|
const getBlockNodeById = editor.helpers?.blockNode?.getBlockNodeById;
|
|
152616
153058
|
if (typeof getBlockNodeById !== "function")
|
|
@@ -152624,17 +153066,60 @@ function validateCommandLayerUniqueness(editor, sdBlockId) {
|
|
|
152624
153066
|
count: matches2.length
|
|
152625
153067
|
});
|
|
152626
153068
|
}
|
|
153069
|
+
function collectTopLevelBlocks(editor) {
|
|
153070
|
+
const doc$2 = editor.state.doc;
|
|
153071
|
+
const results = [];
|
|
153072
|
+
let offset$1 = 0;
|
|
153073
|
+
for (let i$1 = 0;i$1 < doc$2.childCount; i$1++) {
|
|
153074
|
+
const child = doc$2.child(i$1);
|
|
153075
|
+
const nodeType = mapBlockNodeType(child);
|
|
153076
|
+
const pos = offset$1;
|
|
153077
|
+
if (nodeType) {
|
|
153078
|
+
const nodeId = resolveBlockNodeId(child, pos, nodeType);
|
|
153079
|
+
if (nodeId)
|
|
153080
|
+
results.push({
|
|
153081
|
+
node: child,
|
|
153082
|
+
pos,
|
|
153083
|
+
end: pos + child.nodeSize,
|
|
153084
|
+
nodeType,
|
|
153085
|
+
nodeId
|
|
153086
|
+
});
|
|
153087
|
+
}
|
|
153088
|
+
offset$1 += child.nodeSize;
|
|
153089
|
+
}
|
|
153090
|
+
return results;
|
|
153091
|
+
}
|
|
153092
|
+
function blocksListWrapper(editor, input2) {
|
|
153093
|
+
const topLevel = collectTopLevelBlocks(editor);
|
|
153094
|
+
const filtered = input2?.nodeTypes ? topLevel.filter((b$1) => input2.nodeTypes.includes(b$1.nodeType)) : topLevel;
|
|
153095
|
+
const total = filtered.length;
|
|
153096
|
+
const offset$1 = input2?.offset ?? 0;
|
|
153097
|
+
const limit = input2?.limit ?? total;
|
|
153098
|
+
return {
|
|
153099
|
+
total,
|
|
153100
|
+
blocks: filtered.slice(offset$1, offset$1 + limit).map((candidate, i$1) => ({
|
|
153101
|
+
ordinal: offset$1 + i$1,
|
|
153102
|
+
nodeId: candidate.nodeId,
|
|
153103
|
+
nodeType: candidate.nodeType,
|
|
153104
|
+
textPreview: extractTextPreview(candidate.node),
|
|
153105
|
+
isEmpty: candidate.node.textContent.length === 0
|
|
153106
|
+
})),
|
|
153107
|
+
revision: getRevision(editor)
|
|
153108
|
+
};
|
|
153109
|
+
}
|
|
152627
153110
|
function blocksDeleteWrapper(editor, input2, options) {
|
|
152628
153111
|
rejectTrackedMode("blocks.delete", options);
|
|
152629
153112
|
const candidate = findBlockByIdStrict(getBlockIndex(editor), input2.target);
|
|
152630
|
-
|
|
153113
|
+
validateDeleteTargetNodeType(candidate.nodeType);
|
|
153114
|
+
const deletedBlock = toBlockSummary(candidate, collectTopLevelBlocks(editor).findIndex((b$1) => b$1.nodeId === candidate.nodeId && b$1.nodeType === candidate.nodeType));
|
|
152631
153115
|
const sdBlockId = resolveSdBlockId(candidate);
|
|
152632
153116
|
const deleteBlockNodeById = requireEditorCommand(editor.commands?.deleteBlockNodeById, "blocks.delete");
|
|
152633
153117
|
validateCommandLayerUniqueness(editor, sdBlockId);
|
|
152634
153118
|
if (options?.dryRun)
|
|
152635
153119
|
return {
|
|
152636
153120
|
success: true,
|
|
152637
|
-
deleted: input2.target
|
|
153121
|
+
deleted: input2.target,
|
|
153122
|
+
deletedBlock
|
|
152638
153123
|
};
|
|
152639
153124
|
if (executeDomainCommand(editor, () => {
|
|
152640
153125
|
const didApply = deleteBlockNodeById(sdBlockId);
|
|
@@ -152648,7 +153133,116 @@ function blocksDeleteWrapper(editor, input2, options) {
|
|
|
152648
153133
|
});
|
|
152649
153134
|
return {
|
|
152650
153135
|
success: true,
|
|
152651
|
-
deleted: input2.target
|
|
153136
|
+
deleted: input2.target,
|
|
153137
|
+
deletedBlock
|
|
153138
|
+
};
|
|
153139
|
+
}
|
|
153140
|
+
function hasSectionBreak(candidate) {
|
|
153141
|
+
const pPr = candidate.node.attrs?.paragraphProperties;
|
|
153142
|
+
return pPr?.sectPr != null && typeof pPr.sectPr === "object";
|
|
153143
|
+
}
|
|
153144
|
+
function resolveTopLevelOrdinal(topLevel, candidate, label) {
|
|
153145
|
+
const idx = topLevel.findIndex((b$1) => b$1.nodeId === candidate.nodeId && b$1.nodeType === candidate.nodeType);
|
|
153146
|
+
if (idx !== -1)
|
|
153147
|
+
return idx;
|
|
153148
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange ${label} resolved to a nested block (not a direct document child). Only top-level blocks are supported.`, {
|
|
153149
|
+
nodeId: candidate.nodeId,
|
|
153150
|
+
nodeType: candidate.nodeType
|
|
153151
|
+
});
|
|
153152
|
+
}
|
|
153153
|
+
function resolveRangeEndpoint(index2, address2, label) {
|
|
153154
|
+
const key$1 = `${address2.nodeType}:${address2.nodeId}`;
|
|
153155
|
+
if (index2.ambiguous.has(key$1))
|
|
153156
|
+
throw new DocumentApiAdapterError("AMBIGUOUS_TARGET", `Multiple blocks share key "${key$1}".`, { target: address2 });
|
|
153157
|
+
const candidate = index2.byId.get(key$1);
|
|
153158
|
+
if (candidate)
|
|
153159
|
+
return candidate;
|
|
153160
|
+
const mismatch = index2.candidates.find((c) => c.nodeId === address2.nodeId);
|
|
153161
|
+
if (mismatch)
|
|
153162
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange ${label} expected ${address2.nodeType}:${address2.nodeId} but resolved to ${mismatch.nodeType}.`, {
|
|
153163
|
+
expected: address2.nodeType,
|
|
153164
|
+
actual: mismatch.nodeType,
|
|
153165
|
+
nodeId: address2.nodeId
|
|
153166
|
+
});
|
|
153167
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Block "${key$1}" was not found.`, { target: address2 });
|
|
153168
|
+
}
|
|
153169
|
+
function rejectUnmappedNodesInRange(doc$2, rangeBlocks) {
|
|
153170
|
+
if (rangeBlocks.length === 0)
|
|
153171
|
+
return;
|
|
153172
|
+
const rangeFrom = rangeBlocks[0].pos;
|
|
153173
|
+
const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
|
|
153174
|
+
const recognizedPositions = new Set(rangeBlocks.map((b$1) => b$1.pos));
|
|
153175
|
+
let offset$1 = 0;
|
|
153176
|
+
for (let i$1 = 0;i$1 < doc$2.childCount; i$1++) {
|
|
153177
|
+
const child = doc$2.child(i$1);
|
|
153178
|
+
const childEnd = offset$1 + child.nodeSize;
|
|
153179
|
+
if (childEnd > rangeFrom && offset$1 < rangeTo && !recognizedPositions.has(offset$1)) {
|
|
153180
|
+
if (!RANGE_DELETE_SAFE_NODE_TYPES.has(child.type.name))
|
|
153181
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange cannot delete range: unrecognized node "${child.type.name}" at position ${offset$1} would be silently removed.`, {
|
|
153182
|
+
pmNodeType: child.type.name,
|
|
153183
|
+
pos: offset$1
|
|
153184
|
+
});
|
|
153185
|
+
}
|
|
153186
|
+
offset$1 = childEnd;
|
|
153187
|
+
}
|
|
153188
|
+
}
|
|
153189
|
+
function blocksDeleteRangeWrapper(editor, input2, options) {
|
|
153190
|
+
rejectTrackedMode("blocks.deleteRange", options);
|
|
153191
|
+
const topLevel = collectTopLevelBlocks(editor);
|
|
153192
|
+
const index2 = getBlockIndex(editor);
|
|
153193
|
+
const startCandidate = resolveRangeEndpoint(index2, input2.start, "start");
|
|
153194
|
+
const endCandidate = resolveRangeEndpoint(index2, input2.end, "end");
|
|
153195
|
+
const startOrdinal = resolveTopLevelOrdinal(topLevel, startCandidate, "start");
|
|
153196
|
+
const endOrdinal = resolveTopLevelOrdinal(topLevel, endCandidate, "end");
|
|
153197
|
+
if (startOrdinal > endOrdinal)
|
|
153198
|
+
throw new DocumentApiAdapterError("INVALID_INPUT", `blocks.deleteRange start ordinal (${startOrdinal}) is after end ordinal (${endOrdinal}). The start must precede or equal the end.`, {
|
|
153199
|
+
startOrdinal,
|
|
153200
|
+
endOrdinal
|
|
153201
|
+
});
|
|
153202
|
+
const rangeBlocks = topLevel.slice(startOrdinal, endOrdinal + 1);
|
|
153203
|
+
rejectUnmappedNodesInRange(editor.state.doc, rangeBlocks);
|
|
153204
|
+
for (const block of rangeBlocks)
|
|
153205
|
+
if (hasSectionBreak(block))
|
|
153206
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange cannot delete a range that includes a section break (block "${block.nodeId}" at ordinal ${topLevel.indexOf(block)}).`, {
|
|
153207
|
+
nodeId: block.nodeId,
|
|
153208
|
+
nodeType: block.nodeType
|
|
153209
|
+
});
|
|
153210
|
+
const deletedBlocks = rangeBlocks.map((c, i$1) => toBlockSummary(c, startOrdinal + i$1));
|
|
153211
|
+
const revisionBefore = getRevision(editor);
|
|
153212
|
+
if (options?.dryRun)
|
|
153213
|
+
return {
|
|
153214
|
+
success: true,
|
|
153215
|
+
deletedCount: rangeBlocks.length,
|
|
153216
|
+
deletedBlocks,
|
|
153217
|
+
revision: {
|
|
153218
|
+
before: revisionBefore,
|
|
153219
|
+
after: revisionBefore
|
|
153220
|
+
},
|
|
153221
|
+
dryRun: true
|
|
153222
|
+
};
|
|
153223
|
+
const rangeFrom = rangeBlocks[0].pos;
|
|
153224
|
+
const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
|
|
153225
|
+
if (executeDomainCommand(editor, () => {
|
|
153226
|
+
const tr = editor.state.tr;
|
|
153227
|
+
tr.delete(rangeFrom, rangeTo);
|
|
153228
|
+
editor.dispatch(tr);
|
|
153229
|
+
clearIndexCache(editor);
|
|
153230
|
+
return true;
|
|
153231
|
+
}, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
|
|
153232
|
+
throw new DocumentApiAdapterError("INTERNAL_ERROR", "blocks.deleteRange command returned false despite passing all pre-apply checks.", {
|
|
153233
|
+
start: input2.start,
|
|
153234
|
+
end: input2.end
|
|
153235
|
+
});
|
|
153236
|
+
const revisionAfter = getRevision(editor);
|
|
153237
|
+
return {
|
|
153238
|
+
success: true,
|
|
153239
|
+
deletedCount: rangeBlocks.length,
|
|
153240
|
+
deletedBlocks,
|
|
153241
|
+
revision: {
|
|
153242
|
+
before: revisionBefore,
|
|
153243
|
+
after: revisionAfter
|
|
153244
|
+
},
|
|
153245
|
+
dryRun: false
|
|
152652
153246
|
};
|
|
152653
153247
|
}
|
|
152654
153248
|
function resolveBlock(editor, nodeId) {
|
|
@@ -159290,10 +159884,20 @@ function createHistoryAdapter(editor) {
|
|
|
159290
159884
|
if (typeof editor.commands?.undo !== "function")
|
|
159291
159885
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "history.undo command is not available.", { reason: "missing_command" });
|
|
159292
159886
|
const revBefore = getRevision(editor);
|
|
159887
|
+
if (getUndoDepth(editor) === 0)
|
|
159888
|
+
return {
|
|
159889
|
+
noop: true,
|
|
159890
|
+
reason: "EMPTY_UNDO_STACK",
|
|
159891
|
+
revision: {
|
|
159892
|
+
before: revBefore,
|
|
159893
|
+
after: revBefore
|
|
159894
|
+
}
|
|
159895
|
+
};
|
|
159293
159896
|
const success = Boolean(editor.commands.undo());
|
|
159294
159897
|
const revAfter = getRevision(editor);
|
|
159295
159898
|
return {
|
|
159296
159899
|
noop: !success,
|
|
159900
|
+
reason: success ? undefined : "NO_EFFECT",
|
|
159297
159901
|
revision: {
|
|
159298
159902
|
before: revBefore,
|
|
159299
159903
|
after: revAfter
|
|
@@ -159304,10 +159908,20 @@ function createHistoryAdapter(editor) {
|
|
|
159304
159908
|
if (typeof editor.commands?.redo !== "function")
|
|
159305
159909
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "history.redo command is not available.", { reason: "missing_command" });
|
|
159306
159910
|
const revBefore = getRevision(editor);
|
|
159911
|
+
if (getRedoDepth(editor) === 0)
|
|
159912
|
+
return {
|
|
159913
|
+
noop: true,
|
|
159914
|
+
reason: "EMPTY_REDO_STACK",
|
|
159915
|
+
revision: {
|
|
159916
|
+
before: revBefore,
|
|
159917
|
+
after: revBefore
|
|
159918
|
+
}
|
|
159919
|
+
};
|
|
159307
159920
|
const success = Boolean(editor.commands.redo());
|
|
159308
159921
|
const revAfter = getRevision(editor);
|
|
159309
159922
|
return {
|
|
159310
159923
|
noop: !success,
|
|
159924
|
+
reason: success ? undefined : "NO_EFFECT",
|
|
159311
159925
|
revision: {
|
|
159312
159926
|
before: revBefore,
|
|
159313
159927
|
after: revAfter
|
|
@@ -159951,7 +160565,7 @@ function createTableOfContentsWrapper(editor, input2, options) {
|
|
|
159951
160565
|
else if (at.kind === "documentEnd")
|
|
159952
160566
|
pos = editor.state.doc.content.size;
|
|
159953
160567
|
else
|
|
159954
|
-
pos =
|
|
160568
|
+
pos = resolveCreateAnchor(editor, at.target, at.kind).pos;
|
|
159955
160569
|
const config2 = input2.config ? applyTocPatchTyped(DEFAULT_TOC_CONFIG, input2.config) : DEFAULT_TOC_CONFIG;
|
|
159956
160570
|
const instruction = serializeTocInstruction(config2);
|
|
159957
160571
|
const content3 = materializeTocContent(editor.state.doc, withRightAlign(config2, input2.config?.rightAlignPageNumbers), editor);
|
|
@@ -160535,9 +161149,11 @@ function resolveImageInsertPosition(editor, location$1) {
|
|
|
160535
161149
|
return editor.state.doc.content.size;
|
|
160536
161150
|
case "before":
|
|
160537
161151
|
case "after":
|
|
160538
|
-
return
|
|
160539
|
-
case "inParagraph":
|
|
160540
|
-
|
|
161152
|
+
return resolveCreateAnchor(editor, location$1.target, location$1.kind).pos;
|
|
161153
|
+
case "inParagraph": {
|
|
161154
|
+
const { pos } = resolveCreateAnchor(editor, location$1.target, "before");
|
|
161155
|
+
return pos + 1 + (location$1.offset ?? 0);
|
|
161156
|
+
}
|
|
160541
161157
|
default:
|
|
160542
161158
|
throw new DocumentApiAdapterError("INVALID_TARGET", `Unknown image location kind: "${location$1.kind}".`);
|
|
160543
161159
|
}
|
|
@@ -166977,7 +167593,11 @@ function assembleDocumentApiAdapters(editor) {
|
|
|
166977
167593
|
acceptAll: (input2, options) => trackChangesAcceptAllWrapper(editor, input2, options),
|
|
166978
167594
|
rejectAll: (input2, options) => trackChangesRejectAllWrapper(editor, input2, options)
|
|
166979
167595
|
},
|
|
166980
|
-
blocks: {
|
|
167596
|
+
blocks: {
|
|
167597
|
+
list: (input2) => blocksListWrapper(editor, input2),
|
|
167598
|
+
delete: (input2, options) => blocksDeleteWrapper(editor, input2, options),
|
|
167599
|
+
deleteRange: (input2, options) => blocksDeleteRangeWrapper(editor, input2, options)
|
|
167600
|
+
},
|
|
166981
167601
|
create: {
|
|
166982
167602
|
paragraph: (input2, options) => createParagraphWrapper(editor, input2, options),
|
|
166983
167603
|
heading: (input2, options) => createHeadingWrapper(editor, input2, options),
|
|
@@ -198446,7 +199066,7 @@ var Node$13 = class Node$14 {
|
|
|
198446
199066
|
console.warn("Failed to initialize developer tools:", error);
|
|
198447
199067
|
}
|
|
198448
199068
|
}
|
|
198449
|
-
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, STUB_WHERE, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, ALIGNMENT_TO_JUSTIFICATION, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_NODE_TYPES, REJECTED_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, CSS_NAMED_COLORS, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, DEFAULT_LEVEL = 1, SWITCH_PATTERN, DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, DEFAULT_MIME_TYPE = "application/octet-stream", simpleHash2 = (str) => {
|
|
199069
|
+
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, STUB_WHERE, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, ALIGNMENT_TO_JUSTIFICATION, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, CSS_NAMED_COLORS, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, DEFAULT_LEVEL = 1, SWITCH_PATTERN, DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, DEFAULT_MIME_TYPE = "application/octet-stream", simpleHash2 = (str) => {
|
|
198450
199070
|
let hash$3 = 0;
|
|
198451
199071
|
for (let i$1 = 0;i$1 < str.length; i$1++) {
|
|
198452
199072
|
const char = str.charCodeAt(i$1);
|
|
@@ -217138,9 +217758,9 @@ var Node$13 = class Node$14 {
|
|
|
217138
217758
|
return false;
|
|
217139
217759
|
return Boolean(checker(attrs));
|
|
217140
217760
|
}, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
|
|
217141
|
-
var
|
|
217761
|
+
var init_src_BV6PERs7_es = __esm(() => {
|
|
217142
217762
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
217143
|
-
|
|
217763
|
+
init_SuperConverter_Cw5CEerM_es();
|
|
217144
217764
|
init_jszip_ChlR43oI_es();
|
|
217145
217765
|
init_uuid_qzgm05fK_es();
|
|
217146
217766
|
init_constants_CMPtQbp7_es();
|
|
@@ -225692,8 +226312,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
225692
226312
|
justify: "both"
|
|
225693
226313
|
};
|
|
225694
226314
|
groupedCache = /* @__PURE__ */ new WeakMap;
|
|
225695
|
-
|
|
225696
|
-
|
|
226315
|
+
SUPPORTED_DELETE_NODE_TYPES3 = new Set(DELETABLE_BLOCK_NODE_TYPES2);
|
|
226316
|
+
REJECTED_DELETE_NODE_TYPES3 = new Set(["tableRow", "tableCell"]);
|
|
226317
|
+
RANGE_DELETE_SAFE_NODE_TYPES = new Set(["passthroughBlock", "passthroughInline"]);
|
|
225697
226318
|
ORDERED_PRESET_CONFIG = {
|
|
225698
226319
|
decimal: {
|
|
225699
226320
|
numFmt: "decimal",
|
|
@@ -250808,8 +251429,8 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
|
|
|
250808
251429
|
|
|
250809
251430
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
250810
251431
|
var init_super_editor_es = __esm(() => {
|
|
250811
|
-
|
|
250812
|
-
|
|
251432
|
+
init_src_BV6PERs7_es();
|
|
251433
|
+
init_SuperConverter_Cw5CEerM_es();
|
|
250813
251434
|
init_jszip_ChlR43oI_es();
|
|
250814
251435
|
init_xml_js_DLE8mr0n_es();
|
|
250815
251436
|
init_constants_CMPtQbp7_es();
|
|
@@ -252258,7 +252879,18 @@ var OBJECT_REPLACEMENT_CHAR2 = "";
|
|
|
252258
252879
|
|
|
252259
252880
|
// ../../packages/super-editor/src/document-api-adapters/helpers/adapter-utils.ts
|
|
252260
252881
|
function findTextBlockCandidates2(index2, blockId) {
|
|
252261
|
-
|
|
252882
|
+
const primary = index2.candidates.filter((c) => c.nodeId === blockId && isTextBlockCandidate2(c));
|
|
252883
|
+
if (primary.length > 0)
|
|
252884
|
+
return primary;
|
|
252885
|
+
try {
|
|
252886
|
+
const resolved = findBlockByNodeIdOnly2(index2, blockId);
|
|
252887
|
+
if (isTextBlockCandidate2(resolved))
|
|
252888
|
+
return [resolved];
|
|
252889
|
+
} catch (e) {
|
|
252890
|
+
if (e instanceof DocumentApiAdapterError3 && e.code === "AMBIGUOUS_TARGET")
|
|
252891
|
+
throw e;
|
|
252892
|
+
}
|
|
252893
|
+
return [];
|
|
252262
252894
|
}
|
|
252263
252895
|
function assertUnambiguous2(matches2, blockId) {
|
|
252264
252896
|
if (matches2.length > 1) {
|
|
@@ -319805,8 +320437,32 @@ function resolveBlockInsertionPos2(editor, anchorBlockId, position5, stepId) {
|
|
|
319805
320437
|
}
|
|
319806
320438
|
return position5 === "before" ? candidate.pos : candidate.end;
|
|
319807
320439
|
}
|
|
320440
|
+
function resolveCreateAnchor2(editor, target, position5, stepId) {
|
|
320441
|
+
const index3 = getBlockIndex2(editor);
|
|
320442
|
+
let candidate;
|
|
320443
|
+
try {
|
|
320444
|
+
candidate = findBlockByNodeIdOnly2(index3, target.nodeId);
|
|
320445
|
+
} catch (e) {
|
|
320446
|
+
if (e instanceof Error && "code" in e) {
|
|
320447
|
+
throw planError2(e.code, e.message, stepId, e.details);
|
|
320448
|
+
}
|
|
320449
|
+
throw e;
|
|
320450
|
+
}
|
|
320451
|
+
if (target.nodeType && candidate.nodeType !== target.nodeType) {
|
|
320452
|
+
const remediation = candidate.nodeType === "listItem" ? "Use lists.insert to add an item to a list sequence." : `The block is a ${candidate.nodeType}, not a ${target.nodeType}.`;
|
|
320453
|
+
throw planError2("INVALID_TARGET", `Expected ${target.nodeType}:${target.nodeId} but found ${candidate.nodeType}:${candidate.nodeId}.`, stepId, {
|
|
320454
|
+
requestedNodeType: target.nodeType,
|
|
320455
|
+
actualNodeType: candidate.nodeType,
|
|
320456
|
+
nodeId: target.nodeId,
|
|
320457
|
+
remediation
|
|
320458
|
+
});
|
|
320459
|
+
}
|
|
320460
|
+
const pos = position5 === "before" ? candidate.pos : candidate.end;
|
|
320461
|
+
return { pos, anchor: candidate };
|
|
320462
|
+
}
|
|
319808
320463
|
var init_create_insertion = __esm(() => {
|
|
319809
320464
|
init_index_cache();
|
|
320465
|
+
init_node_address_resolver();
|
|
319810
320466
|
init_errors4();
|
|
319811
320467
|
});
|
|
319812
320468
|
|
|
@@ -324397,13 +325053,14 @@ var init_tracked_change_refs = __esm(() => {
|
|
|
324397
325053
|
});
|
|
324398
325054
|
|
|
324399
325055
|
// ../../packages/super-editor/src/document-api-adapters/plan-engine/create-wrappers.ts
|
|
324400
|
-
function resolveCreateInsertPosition2(editor, at
|
|
325056
|
+
function resolveCreateInsertPosition2(editor, at) {
|
|
324401
325057
|
const location3 = at ?? { kind: "documentEnd" };
|
|
324402
325058
|
if (location3.kind === "documentStart")
|
|
324403
325059
|
return 0;
|
|
324404
325060
|
if (location3.kind === "documentEnd")
|
|
324405
325061
|
return editor.state.doc.content.size;
|
|
324406
|
-
|
|
325062
|
+
const { pos } = resolveCreateAnchor2(editor, location3.target, location3.kind);
|
|
325063
|
+
return pos;
|
|
324407
325064
|
}
|
|
324408
325065
|
function resolveCreatedBlock2(editor, nodeType, blockId) {
|
|
324409
325066
|
const index3 = getBlockIndex2(editor);
|
|
@@ -324463,7 +325120,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324463
325120
|
if (mode === "tracked") {
|
|
324464
325121
|
ensureTrackedCapability2(editor, { operation: "create.paragraph" });
|
|
324465
325122
|
}
|
|
324466
|
-
const insertAt = resolveCreateInsertPosition2(editor, input2.at
|
|
325123
|
+
const insertAt = resolveCreateInsertPosition2(editor, input2.at);
|
|
324467
325124
|
if (options?.dryRun) {
|
|
324468
325125
|
const canInsert = editor.can().insertParagraphAt?.({
|
|
324469
325126
|
pos: insertAt,
|
|
@@ -324494,6 +325151,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324494
325151
|
};
|
|
324495
325152
|
}
|
|
324496
325153
|
const paragraphId = v42();
|
|
325154
|
+
let canonicalId = paragraphId;
|
|
324497
325155
|
let trackedChangeRefs;
|
|
324498
325156
|
const receipt2 = executeDomainCommand2(editor, () => {
|
|
324499
325157
|
const didApply = insertParagraphAt2({
|
|
@@ -324506,6 +325164,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324506
325164
|
clearIndexCache2(editor);
|
|
324507
325165
|
try {
|
|
324508
325166
|
const paragraph3 = resolveCreatedBlock2(editor, "paragraph", paragraphId);
|
|
325167
|
+
canonicalId = paragraph3.nodeId;
|
|
324509
325168
|
if (mode === "tracked") {
|
|
324510
325169
|
trackedChangeRefs = collectTrackInsertRefsInRange2(editor, paragraph3.pos, paragraph3.end);
|
|
324511
325170
|
}
|
|
@@ -324525,7 +325184,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324525
325184
|
}
|
|
324526
325185
|
};
|
|
324527
325186
|
}
|
|
324528
|
-
return buildParagraphCreateSuccess2(
|
|
325187
|
+
return buildParagraphCreateSuccess2(canonicalId, trackedChangeRefs);
|
|
324529
325188
|
}
|
|
324530
325189
|
function createHeadingWrapper2(editor, input2, options) {
|
|
324531
325190
|
const insertHeadingAt2 = requireEditorCommand2(editor.commands?.insertHeadingAt, "create.heading");
|
|
@@ -324533,7 +325192,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324533
325192
|
if (mode === "tracked") {
|
|
324534
325193
|
ensureTrackedCapability2(editor, { operation: "create.heading" });
|
|
324535
325194
|
}
|
|
324536
|
-
const insertAt = resolveCreateInsertPosition2(editor, input2.at
|
|
325195
|
+
const insertAt = resolveCreateInsertPosition2(editor, input2.at);
|
|
324537
325196
|
if (options?.dryRun) {
|
|
324538
325197
|
const canInsert = editor.can().insertHeadingAt?.({
|
|
324539
325198
|
pos: insertAt,
|
|
@@ -324565,6 +325224,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324565
325224
|
};
|
|
324566
325225
|
}
|
|
324567
325226
|
const headingId = v42();
|
|
325227
|
+
let canonicalId = headingId;
|
|
324568
325228
|
let trackedChangeRefs;
|
|
324569
325229
|
const receipt2 = executeDomainCommand2(editor, () => {
|
|
324570
325230
|
const didApply = insertHeadingAt2({
|
|
@@ -324578,6 +325238,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324578
325238
|
clearIndexCache2(editor);
|
|
324579
325239
|
try {
|
|
324580
325240
|
const heading4 = resolveCreatedBlock2(editor, "heading", headingId);
|
|
325241
|
+
canonicalId = heading4.nodeId;
|
|
324581
325242
|
if (mode === "tracked") {
|
|
324582
325243
|
trackedChangeRefs = collectTrackInsertRefsInRange2(editor, heading4.pos, heading4.end);
|
|
324583
325244
|
}
|
|
@@ -324597,7 +325258,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324597
325258
|
}
|
|
324598
325259
|
};
|
|
324599
325260
|
}
|
|
324600
|
-
return buildHeadingCreateSuccess2(
|
|
325261
|
+
return buildHeadingCreateSuccess2(canonicalId, trackedChangeRefs);
|
|
324601
325262
|
}
|
|
324602
325263
|
var init_create_wrappers = __esm(() => {
|
|
324603
325264
|
init_wrapper();
|
|
@@ -324610,15 +325271,21 @@ var init_create_wrappers = __esm(() => {
|
|
|
324610
325271
|
});
|
|
324611
325272
|
|
|
324612
325273
|
// ../../packages/super-editor/src/document-api-adapters/plan-engine/blocks-wrappers.ts
|
|
324613
|
-
function
|
|
324614
|
-
if (
|
|
324615
|
-
|
|
324616
|
-
|
|
324617
|
-
if (
|
|
324618
|
-
|
|
324619
|
-
|
|
324620
|
-
|
|
324621
|
-
|
|
325274
|
+
function extractTextPreview2(node4) {
|
|
325275
|
+
if (!node4.isTextblock)
|
|
325276
|
+
return null;
|
|
325277
|
+
const text9 = node4.textContent;
|
|
325278
|
+
if (text9.length <= TEXT_PREVIEW_MAX_LENGTH2)
|
|
325279
|
+
return text9;
|
|
325280
|
+
return text9.slice(0, TEXT_PREVIEW_MAX_LENGTH2);
|
|
325281
|
+
}
|
|
325282
|
+
function toBlockSummary2(candidate, ordinal) {
|
|
325283
|
+
return {
|
|
325284
|
+
ordinal,
|
|
325285
|
+
nodeId: candidate.nodeId,
|
|
325286
|
+
nodeType: candidate.nodeType,
|
|
325287
|
+
textPreview: extractTextPreview2(candidate.node)
|
|
325288
|
+
};
|
|
324622
325289
|
}
|
|
324623
325290
|
function resolveSdBlockId2(candidate) {
|
|
324624
325291
|
const sdBlockId = candidate.node.attrs?.sdBlockId;
|
|
@@ -324626,6 +325293,16 @@ function resolveSdBlockId2(candidate) {
|
|
|
324626
325293
|
return sdBlockId;
|
|
324627
325294
|
throw new DocumentApiAdapterError3("INTERNAL_ERROR", "Resolved block candidate is missing sdBlockId attribute. This indicates a schema/extension invariant violation.", { attrs: candidate.node.attrs });
|
|
324628
325295
|
}
|
|
325296
|
+
function validateDeleteTargetNodeType2(nodeType) {
|
|
325297
|
+
if (REJECTED_DELETE_NODE_TYPES4.has(nodeType)) {
|
|
325298
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { nodeType });
|
|
325299
|
+
}
|
|
325300
|
+
if (!SUPPORTED_DELETE_NODE_TYPES4.has(nodeType)) {
|
|
325301
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, {
|
|
325302
|
+
nodeType
|
|
325303
|
+
});
|
|
325304
|
+
}
|
|
325305
|
+
}
|
|
324629
325306
|
function validateCommandLayerUniqueness2(editor, sdBlockId) {
|
|
324630
325307
|
const getBlockNodeById = editor.helpers?.blockNode?.getBlockNodeById;
|
|
324631
325308
|
if (typeof getBlockNodeById !== "function") {
|
|
@@ -324639,30 +325316,163 @@ function validateCommandLayerUniqueness2(editor, sdBlockId) {
|
|
|
324639
325316
|
throw new DocumentApiAdapterError3("AMBIGUOUS_TARGET", `Multiple blocks share sdBlockId "${sdBlockId}" at the command layer.`, { sdBlockId, count: matches3.length });
|
|
324640
325317
|
}
|
|
324641
325318
|
}
|
|
325319
|
+
function collectTopLevelBlocks2(editor) {
|
|
325320
|
+
const doc4 = editor.state.doc;
|
|
325321
|
+
const results = [];
|
|
325322
|
+
let offset2 = 0;
|
|
325323
|
+
for (let i4 = 0;i4 < doc4.childCount; i4++) {
|
|
325324
|
+
const child = doc4.child(i4);
|
|
325325
|
+
const nodeType = mapBlockNodeType2(child);
|
|
325326
|
+
const pos = offset2;
|
|
325327
|
+
if (nodeType) {
|
|
325328
|
+
const nodeId = resolveBlockNodeId2(child, pos, nodeType);
|
|
325329
|
+
if (nodeId) {
|
|
325330
|
+
results.push({ node: child, pos, end: pos + child.nodeSize, nodeType, nodeId });
|
|
325331
|
+
}
|
|
325332
|
+
}
|
|
325333
|
+
offset2 += child.nodeSize;
|
|
325334
|
+
}
|
|
325335
|
+
return results;
|
|
325336
|
+
}
|
|
325337
|
+
function blocksListWrapper2(editor, input2) {
|
|
325338
|
+
const topLevel = collectTopLevelBlocks2(editor);
|
|
325339
|
+
const filtered = input2?.nodeTypes ? topLevel.filter((b2) => input2.nodeTypes.includes(b2.nodeType)) : topLevel;
|
|
325340
|
+
const total = filtered.length;
|
|
325341
|
+
const offset2 = input2?.offset ?? 0;
|
|
325342
|
+
const limit = input2?.limit ?? total;
|
|
325343
|
+
const paged = filtered.slice(offset2, offset2 + limit);
|
|
325344
|
+
const blocks2 = paged.map((candidate, i4) => ({
|
|
325345
|
+
ordinal: offset2 + i4,
|
|
325346
|
+
nodeId: candidate.nodeId,
|
|
325347
|
+
nodeType: candidate.nodeType,
|
|
325348
|
+
textPreview: extractTextPreview2(candidate.node),
|
|
325349
|
+
isEmpty: candidate.node.textContent.length === 0
|
|
325350
|
+
}));
|
|
325351
|
+
return { total, blocks: blocks2, revision: getRevision2(editor) };
|
|
325352
|
+
}
|
|
324642
325353
|
function blocksDeleteWrapper2(editor, input2, options) {
|
|
324643
325354
|
rejectTrackedMode2("blocks.delete", options);
|
|
324644
325355
|
const index3 = getBlockIndex2(editor);
|
|
324645
325356
|
const candidate = findBlockByIdStrict2(index3, input2.target);
|
|
324646
|
-
|
|
325357
|
+
validateDeleteTargetNodeType2(candidate.nodeType);
|
|
325358
|
+
const topLevel = collectTopLevelBlocks2(editor);
|
|
325359
|
+
const candidateOrdinal = topLevel.findIndex((b2) => b2.nodeId === candidate.nodeId && b2.nodeType === candidate.nodeType);
|
|
325360
|
+
const deletedBlock = toBlockSummary2(candidate, candidateOrdinal);
|
|
324647
325361
|
const sdBlockId = resolveSdBlockId2(candidate);
|
|
324648
325362
|
const deleteBlockNodeById = requireEditorCommand2(editor.commands?.deleteBlockNodeById, "blocks.delete");
|
|
324649
325363
|
validateCommandLayerUniqueness2(editor, sdBlockId);
|
|
324650
325364
|
if (options?.dryRun) {
|
|
324651
|
-
return { success: true, deleted: input2.target };
|
|
325365
|
+
return { success: true, deleted: input2.target, deletedBlock };
|
|
324652
325366
|
}
|
|
324653
325367
|
const receipt2 = executeDomainCommand2(editor, () => {
|
|
324654
325368
|
const didApply = deleteBlockNodeById(sdBlockId);
|
|
324655
|
-
if (didApply)
|
|
325369
|
+
if (didApply)
|
|
324656
325370
|
clearIndexCache2(editor);
|
|
324657
|
-
}
|
|
324658
325371
|
return didApply;
|
|
324659
325372
|
}, { expectedRevision: options?.expectedRevision });
|
|
324660
325373
|
if (receipt2.steps[0]?.effect !== "changed") {
|
|
324661
325374
|
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 });
|
|
324662
325375
|
}
|
|
324663
|
-
return { success: true, deleted: input2.target };
|
|
325376
|
+
return { success: true, deleted: input2.target, deletedBlock };
|
|
325377
|
+
}
|
|
325378
|
+
function hasSectionBreak2(candidate) {
|
|
325379
|
+
const attrs = candidate.node.attrs;
|
|
325380
|
+
const pPr = attrs?.paragraphProperties;
|
|
325381
|
+
return pPr?.sectPr != null && typeof pPr.sectPr === "object";
|
|
325382
|
+
}
|
|
325383
|
+
function resolveTopLevelOrdinal2(topLevel, candidate, label) {
|
|
325384
|
+
const idx = topLevel.findIndex((b2) => b2.nodeId === candidate.nodeId && b2.nodeType === candidate.nodeType);
|
|
325385
|
+
if (idx !== -1)
|
|
325386
|
+
return idx;
|
|
325387
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.deleteRange ${label} resolved to a nested block (not a direct document child). Only top-level blocks are supported.`, { nodeId: candidate.nodeId, nodeType: candidate.nodeType });
|
|
325388
|
+
}
|
|
325389
|
+
function resolveRangeEndpoint2(index3, address2, label) {
|
|
325390
|
+
const key2 = `${address2.nodeType}:${address2.nodeId}`;
|
|
325391
|
+
if (index3.ambiguous.has(key2)) {
|
|
325392
|
+
throw new DocumentApiAdapterError3("AMBIGUOUS_TARGET", `Multiple blocks share key "${key2}".`, {
|
|
325393
|
+
target: address2
|
|
325394
|
+
});
|
|
325395
|
+
}
|
|
325396
|
+
const candidate = index3.byId.get(key2);
|
|
325397
|
+
if (candidate)
|
|
325398
|
+
return candidate;
|
|
325399
|
+
const mismatch = index3.candidates.find((c) => c.nodeId === address2.nodeId);
|
|
325400
|
+
if (mismatch) {
|
|
325401
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.deleteRange ${label} expected ${address2.nodeType}:${address2.nodeId} but resolved to ${mismatch.nodeType}.`, { expected: address2.nodeType, actual: mismatch.nodeType, nodeId: address2.nodeId });
|
|
325402
|
+
}
|
|
325403
|
+
throw new DocumentApiAdapterError3("TARGET_NOT_FOUND", `Block "${key2}" was not found.`, {
|
|
325404
|
+
target: address2
|
|
325405
|
+
});
|
|
325406
|
+
}
|
|
325407
|
+
function rejectUnmappedNodesInRange2(doc4, rangeBlocks) {
|
|
325408
|
+
if (rangeBlocks.length === 0)
|
|
325409
|
+
return;
|
|
325410
|
+
const rangeFrom = rangeBlocks[0].pos;
|
|
325411
|
+
const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
|
|
325412
|
+
const recognizedPositions = new Set(rangeBlocks.map((b2) => b2.pos));
|
|
325413
|
+
let offset2 = 0;
|
|
325414
|
+
for (let i4 = 0;i4 < doc4.childCount; i4++) {
|
|
325415
|
+
const child = doc4.child(i4);
|
|
325416
|
+
const childEnd = offset2 + child.nodeSize;
|
|
325417
|
+
if (childEnd > rangeFrom && offset2 < rangeTo && !recognizedPositions.has(offset2)) {
|
|
325418
|
+
if (!RANGE_DELETE_SAFE_NODE_TYPES2.has(child.type.name)) {
|
|
325419
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.deleteRange cannot delete range: unrecognized node "${child.type.name}" at position ${offset2} would be silently removed.`, { pmNodeType: child.type.name, pos: offset2 });
|
|
325420
|
+
}
|
|
325421
|
+
}
|
|
325422
|
+
offset2 = childEnd;
|
|
325423
|
+
}
|
|
325424
|
+
}
|
|
325425
|
+
function blocksDeleteRangeWrapper2(editor, input2, options) {
|
|
325426
|
+
rejectTrackedMode2("blocks.deleteRange", options);
|
|
325427
|
+
const topLevel = collectTopLevelBlocks2(editor);
|
|
325428
|
+
const index3 = getBlockIndex2(editor);
|
|
325429
|
+
const startCandidate = resolveRangeEndpoint2(index3, input2.start, "start");
|
|
325430
|
+
const endCandidate = resolveRangeEndpoint2(index3, input2.end, "end");
|
|
325431
|
+
const startOrdinal = resolveTopLevelOrdinal2(topLevel, startCandidate, "start");
|
|
325432
|
+
const endOrdinal = resolveTopLevelOrdinal2(topLevel, endCandidate, "end");
|
|
325433
|
+
if (startOrdinal > endOrdinal) {
|
|
325434
|
+
throw new DocumentApiAdapterError3("INVALID_INPUT", `blocks.deleteRange start ordinal (${startOrdinal}) is after end ordinal (${endOrdinal}). The start must precede or equal the end.`, { startOrdinal, endOrdinal });
|
|
325435
|
+
}
|
|
325436
|
+
const rangeBlocks = topLevel.slice(startOrdinal, endOrdinal + 1);
|
|
325437
|
+
rejectUnmappedNodesInRange2(editor.state.doc, rangeBlocks);
|
|
325438
|
+
for (const block of rangeBlocks) {
|
|
325439
|
+
if (hasSectionBreak2(block)) {
|
|
325440
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.deleteRange cannot delete a range that includes a section break (block "${block.nodeId}" at ordinal ${topLevel.indexOf(block)}).`, { nodeId: block.nodeId, nodeType: block.nodeType });
|
|
325441
|
+
}
|
|
325442
|
+
}
|
|
325443
|
+
const deletedBlocks = rangeBlocks.map((c, i4) => toBlockSummary2(c, startOrdinal + i4));
|
|
325444
|
+
const revisionBefore = getRevision2(editor);
|
|
325445
|
+
if (options?.dryRun) {
|
|
325446
|
+
return {
|
|
325447
|
+
success: true,
|
|
325448
|
+
deletedCount: rangeBlocks.length,
|
|
325449
|
+
deletedBlocks,
|
|
325450
|
+
revision: { before: revisionBefore, after: revisionBefore },
|
|
325451
|
+
dryRun: true
|
|
325452
|
+
};
|
|
325453
|
+
}
|
|
325454
|
+
const rangeFrom = rangeBlocks[0].pos;
|
|
325455
|
+
const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
|
|
325456
|
+
const receipt2 = executeDomainCommand2(editor, () => {
|
|
325457
|
+
const tr = editor.state.tr;
|
|
325458
|
+
tr.delete(rangeFrom, rangeTo);
|
|
325459
|
+
editor.dispatch(tr);
|
|
325460
|
+
clearIndexCache2(editor);
|
|
325461
|
+
return true;
|
|
325462
|
+
}, { expectedRevision: options?.expectedRevision });
|
|
325463
|
+
if (receipt2.steps[0]?.effect !== "changed") {
|
|
325464
|
+
throw new DocumentApiAdapterError3("INTERNAL_ERROR", "blocks.deleteRange command returned false despite passing all pre-apply checks.", { start: input2.start, end: input2.end });
|
|
325465
|
+
}
|
|
325466
|
+
const revisionAfter = getRevision2(editor);
|
|
325467
|
+
return {
|
|
325468
|
+
success: true,
|
|
325469
|
+
deletedCount: rangeBlocks.length,
|
|
325470
|
+
deletedBlocks,
|
|
325471
|
+
revision: { before: revisionBefore, after: revisionAfter },
|
|
325472
|
+
dryRun: false
|
|
325473
|
+
};
|
|
324664
325474
|
}
|
|
324665
|
-
var
|
|
325475
|
+
var SUPPORTED_DELETE_NODE_TYPES4, REJECTED_DELETE_NODE_TYPES4, TEXT_PREVIEW_MAX_LENGTH2 = 80, RANGE_DELETE_SAFE_NODE_TYPES2;
|
|
324666
325476
|
var init_blocks_wrappers = __esm(() => {
|
|
324667
325477
|
init_src();
|
|
324668
325478
|
init_index_cache();
|
|
@@ -324670,8 +325480,10 @@ var init_blocks_wrappers = __esm(() => {
|
|
|
324670
325480
|
init_errors3();
|
|
324671
325481
|
init_mutation_helpers();
|
|
324672
325482
|
init_plan_wrappers();
|
|
324673
|
-
|
|
324674
|
-
|
|
325483
|
+
init_revision_tracker();
|
|
325484
|
+
SUPPORTED_DELETE_NODE_TYPES4 = new Set(DELETABLE_BLOCK_NODE_TYPES);
|
|
325485
|
+
REJECTED_DELETE_NODE_TYPES4 = new Set(["tableRow", "tableCell"]);
|
|
325486
|
+
RANGE_DELETE_SAFE_NODE_TYPES2 = new Set(["passthroughBlock", "passthroughInline"]);
|
|
324675
325487
|
});
|
|
324676
325488
|
|
|
324677
325489
|
// ../../packages/super-editor/src/document-api-adapters/helpers/list-sequence-helpers.ts
|
|
@@ -332608,10 +333420,15 @@ function createHistoryAdapter2(editor) {
|
|
|
332608
333420
|
});
|
|
332609
333421
|
}
|
|
332610
333422
|
const revBefore = getRevision2(editor);
|
|
333423
|
+
const depth = getUndoDepth2(editor);
|
|
333424
|
+
if (depth === 0) {
|
|
333425
|
+
return { noop: true, reason: "EMPTY_UNDO_STACK", revision: { before: revBefore, after: revBefore } };
|
|
333426
|
+
}
|
|
332611
333427
|
const success = Boolean(editor.commands.undo());
|
|
332612
333428
|
const revAfter = getRevision2(editor);
|
|
332613
333429
|
return {
|
|
332614
333430
|
noop: !success,
|
|
333431
|
+
reason: success ? undefined : "NO_EFFECT",
|
|
332615
333432
|
revision: { before: revBefore, after: revAfter }
|
|
332616
333433
|
};
|
|
332617
333434
|
},
|
|
@@ -332622,10 +333439,15 @@ function createHistoryAdapter2(editor) {
|
|
|
332622
333439
|
});
|
|
332623
333440
|
}
|
|
332624
333441
|
const revBefore = getRevision2(editor);
|
|
333442
|
+
const depth = getRedoDepth2(editor);
|
|
333443
|
+
if (depth === 0) {
|
|
333444
|
+
return { noop: true, reason: "EMPTY_REDO_STACK", revision: { before: revBefore, after: revBefore } };
|
|
333445
|
+
}
|
|
332625
333446
|
const success = Boolean(editor.commands.redo());
|
|
332626
333447
|
const revAfter = getRevision2(editor);
|
|
332627
333448
|
return {
|
|
332628
333449
|
noop: !success,
|
|
333450
|
+
reason: success ? undefined : "NO_EFFECT",
|
|
332629
333451
|
revision: { before: revBefore, after: revAfter }
|
|
332630
333452
|
};
|
|
332631
333453
|
}
|
|
@@ -333286,7 +334108,7 @@ function createTableOfContentsWrapper2(editor, input2, options) {
|
|
|
333286
334108
|
} else if (at.kind === "documentEnd") {
|
|
333287
334109
|
pos = editor.state.doc.content.size;
|
|
333288
334110
|
} else {
|
|
333289
|
-
pos =
|
|
334111
|
+
pos = resolveCreateAnchor2(editor, at.target, at.kind).pos;
|
|
333290
334112
|
}
|
|
333291
334113
|
const config41 = input2.config ? applyTocPatchTyped2(DEFAULT_TOC_CONFIG2, input2.config) : DEFAULT_TOC_CONFIG2;
|
|
333292
334114
|
const instruction = serializeTocInstruction2(config41);
|
|
@@ -333778,9 +334600,9 @@ function resolveImageInsertPosition2(editor, location3) {
|
|
|
333778
334600
|
return editor.state.doc.content.size;
|
|
333779
334601
|
case "before":
|
|
333780
334602
|
case "after":
|
|
333781
|
-
return
|
|
334603
|
+
return resolveCreateAnchor2(editor, location3.target, location3.kind).pos;
|
|
333782
334604
|
case "inParagraph": {
|
|
333783
|
-
const pos =
|
|
334605
|
+
const { pos } = resolveCreateAnchor2(editor, location3.target, "before");
|
|
333784
334606
|
return pos + 1 + (location3.offset ?? 0);
|
|
333785
334607
|
}
|
|
333786
334608
|
default: {
|
|
@@ -340216,7 +341038,9 @@ function assembleDocumentApiAdapters2(editor) {
|
|
|
340216
341038
|
rejectAll: (input2, options) => trackChangesRejectAllWrapper2(editor, input2, options)
|
|
340217
341039
|
},
|
|
340218
341040
|
blocks: {
|
|
340219
|
-
|
|
341041
|
+
list: (input2) => blocksListWrapper2(editor, input2),
|
|
341042
|
+
delete: (input2, options) => blocksDeleteWrapper2(editor, input2, options),
|
|
341043
|
+
deleteRange: (input2, options) => blocksDeleteRangeWrapper2(editor, input2, options)
|
|
340220
341044
|
},
|
|
340221
341045
|
create: {
|
|
340222
341046
|
paragraph: (input2, options) => createParagraphWrapper2(editor, input2, options),
|
|
@@ -394398,7 +395222,7 @@ function mapListsError(operationId, error2, code10) {
|
|
|
394398
395222
|
return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
|
|
394399
395223
|
}
|
|
394400
395224
|
if (code10 === "INVALID_TARGET") {
|
|
394401
|
-
return new CliError("
|
|
395225
|
+
return new CliError("INVALID_TARGET", message, { operationId, details });
|
|
394402
395226
|
}
|
|
394403
395227
|
if (code10 === "TRACK_CHANGE_COMMAND_UNAVAILABLE" || code10 === "CAPABILITY_UNAVAILABLE") {
|
|
394404
395228
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", message, { operationId, details });
|
|
@@ -394473,9 +395297,12 @@ function mapCreateError(operationId, error2, code10) {
|
|
|
394473
395297
|
if (code10 === "TARGET_NOT_FOUND") {
|
|
394474
395298
|
return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
|
|
394475
395299
|
}
|
|
394476
|
-
if (code10 === "AMBIGUOUS_TARGET"
|
|
395300
|
+
if (code10 === "AMBIGUOUS_TARGET") {
|
|
394477
395301
|
return new CliError("INVALID_ARGUMENT", message, { operationId, details });
|
|
394478
395302
|
}
|
|
395303
|
+
if (code10 === "INVALID_TARGET") {
|
|
395304
|
+
return new CliError("INVALID_TARGET", message, { operationId, details });
|
|
395305
|
+
}
|
|
394479
395306
|
if (code10 === "TRACK_CHANGE_COMMAND_UNAVAILABLE") {
|
|
394480
395307
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", message, { operationId, details });
|
|
394481
395308
|
}
|
|
@@ -394609,7 +395436,7 @@ function mapFailedReceipt(operationId, result2) {
|
|
|
394609
395436
|
}
|
|
394610
395437
|
if (family === "lists") {
|
|
394611
395438
|
if (failureCode === "INVALID_TARGET") {
|
|
394612
|
-
return new CliError("
|
|
395439
|
+
return new CliError("INVALID_TARGET", failureMessage, { operationId, failure });
|
|
394613
395440
|
}
|
|
394614
395441
|
if (failureCode === "CAPABILITY_UNAVAILABLE") {
|
|
394615
395442
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", failureMessage, { operationId, failure });
|
|
@@ -394636,7 +395463,7 @@ function mapFailedReceipt(operationId, result2) {
|
|
|
394636
395463
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", failureMessage, { operationId, failure });
|
|
394637
395464
|
}
|
|
394638
395465
|
if (failureCode === "INVALID_TARGET") {
|
|
394639
|
-
return new CliError("
|
|
395466
|
+
return new CliError("INVALID_TARGET", failureMessage, { operationId, failure });
|
|
394640
395467
|
}
|
|
394641
395468
|
return new CliError("COMMAND_FAILED", failureMessage, { operationId, failure });
|
|
394642
395469
|
}
|
|
@@ -394873,41 +395700,18 @@ function validateCreateParagraphLocation(value2, path3) {
|
|
|
394873
395700
|
return { kind: kind2 };
|
|
394874
395701
|
}
|
|
394875
395702
|
if (kind2 === "before" || kind2 === "after") {
|
|
394876
|
-
|
|
394877
|
-
|
|
394878
|
-
if (hasTarget === hasNodeId) {
|
|
394879
|
-
throw new CliError("VALIDATION_ERROR", `${path3} must include exactly one of target or nodeId.`);
|
|
395703
|
+
if (obj.nodeId != null) {
|
|
395704
|
+
throw new CliError("VALIDATION_ERROR", `${path3}: bare "nodeId" shorthand is not supported. Use "target" with an explicit { kind: "block", nodeType, nodeId }.`);
|
|
394880
395705
|
}
|
|
394881
|
-
|
|
394882
|
-
|
|
394883
|
-
|
|
394884
|
-
if (target3.kind !== "block") {
|
|
394885
|
-
throw new CliError("VALIDATION_ERROR", `${path3}.target.kind must be "block".`);
|
|
394886
|
-
}
|
|
394887
|
-
if (kind2 === "before") {
|
|
394888
|
-
return {
|
|
394889
|
-
kind: "before",
|
|
394890
|
-
target: target3
|
|
394891
|
-
};
|
|
394892
|
-
}
|
|
394893
|
-
return {
|
|
394894
|
-
kind: "after",
|
|
394895
|
-
target: target3
|
|
394896
|
-
};
|
|
395706
|
+
expectOnlyKeys(obj, ["kind", "target"], path3);
|
|
395707
|
+
if (obj.target == null) {
|
|
395708
|
+
throw new CliError("VALIDATION_ERROR", `${path3} must include a "target" BlockNodeAddress.`);
|
|
394897
395709
|
}
|
|
394898
|
-
|
|
394899
|
-
|
|
394900
|
-
|
|
394901
|
-
if (kind2 === "before") {
|
|
394902
|
-
return {
|
|
394903
|
-
kind: "before",
|
|
394904
|
-
target: target2
|
|
394905
|
-
};
|
|
395710
|
+
const target2 = validateNodeAddress(obj.target, `${path3}.target`);
|
|
395711
|
+
if (target2.kind !== "block") {
|
|
395712
|
+
throw new CliError("VALIDATION_ERROR", `${path3}.target.kind must be "block".`);
|
|
394906
395713
|
}
|
|
394907
|
-
return {
|
|
394908
|
-
kind: "after",
|
|
394909
|
-
target: target2
|
|
394910
|
-
};
|
|
395714
|
+
return { kind: kind2, target: target2 };
|
|
394911
395715
|
}
|
|
394912
395716
|
throw new CliError("VALIDATION_ERROR", `${path3}.kind must be one of: documentStart, documentEnd, before, after.`);
|
|
394913
395717
|
}
|
|
@@ -396219,7 +397023,7 @@ var init_helper_commands = __esm(() => {
|
|
|
396219
397023
|
description: "Apply strikethrough formatting to a text range.",
|
|
396220
397024
|
category: "format",
|
|
396221
397025
|
mutates: true,
|
|
396222
|
-
examples: ["superdoc format strikethrough --
|
|
397026
|
+
examples: ["superdoc format strikethrough --block-id p1 --start 0 --end 5"]
|
|
396223
397027
|
},
|
|
396224
397028
|
{
|
|
396225
397029
|
tokens: ["track-changes", "accept"],
|
|
@@ -396268,9 +397072,7 @@ var init_helper_commands = __esm(() => {
|
|
|
396268
397072
|
description: "Add a new comment thread anchored to a text range.",
|
|
396269
397073
|
category: "comments",
|
|
396270
397074
|
mutates: true,
|
|
396271
|
-
examples: [
|
|
396272
|
-
`superdoc comments add --target '{"kind":"text","blockId":"p1","range":{"start":0,"end":5}}' --text "Review this"`
|
|
396273
|
-
]
|
|
397075
|
+
examples: ['superdoc comments add --block-id p1 --start 0 --end 5 --text "Review this"']
|
|
396274
397076
|
},
|
|
396275
397077
|
{
|
|
396276
397078
|
tokens: ["comments", "reply"],
|
|
@@ -396298,7 +397100,7 @@ var init_helper_commands = __esm(() => {
|
|
|
396298
397100
|
category: "comments",
|
|
396299
397101
|
mutates: true,
|
|
396300
397102
|
examples: [
|
|
396301
|
-
`superdoc comments move --id c1 --target '{"kind":"text","blockId":"p2","range":{"start":0,"end":5}}'`
|
|
397103
|
+
`superdoc comments move --id c1 --target-json '{"kind":"text","blockId":"p2","range":{"start":0,"end":5}}'`
|
|
396302
397104
|
]
|
|
396303
397105
|
},
|
|
396304
397106
|
{
|
|
@@ -396331,6 +397133,111 @@ var init_helper_commands = __esm(() => {
|
|
|
396331
397133
|
];
|
|
396332
397134
|
});
|
|
396333
397135
|
|
|
397136
|
+
// src/cli/command-examples.ts
|
|
397137
|
+
var DOC_COMMAND_EXAMPLES;
|
|
397138
|
+
var init_command_examples = __esm(() => {
|
|
397139
|
+
DOC_COMMAND_EXAMPLES = {
|
|
397140
|
+
find: [
|
|
397141
|
+
'superdoc find --type text --pattern "quarterly revenue" --limit 5',
|
|
397142
|
+
`superdoc find --select-json '{"type":"node","nodeType":"heading"}'`
|
|
397143
|
+
],
|
|
397144
|
+
"query.match": [
|
|
397145
|
+
`superdoc query match --select-json '{"type":"text","pattern":"Introduction"}' --require exactlyOne`,
|
|
397146
|
+
`superdoc query match --select-json '{"type":"node","nodeType":"paragraph"}' --require any --limit 3`
|
|
397147
|
+
],
|
|
397148
|
+
getNode: [`superdoc get-node --address-json '{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}'`],
|
|
397149
|
+
getNodeById: ["superdoc get-node-by-id --id abc123"],
|
|
397150
|
+
getText: ["superdoc get-text"],
|
|
397151
|
+
info: ["superdoc info"],
|
|
397152
|
+
insert: [
|
|
397153
|
+
'superdoc insert --value "Hello, world!"',
|
|
397154
|
+
'superdoc insert --block-id abc123 --value "Appended text"',
|
|
397155
|
+
'superdoc insert --type markdown --value "## New Section"'
|
|
397156
|
+
],
|
|
397157
|
+
replace: [
|
|
397158
|
+
'superdoc replace --block-id abc123 --start 0 --end 5 --text "Updated"',
|
|
397159
|
+
'superdoc replace --block-id abc123 --start 0 --end 5 --text "Updated" --dry-run',
|
|
397160
|
+
'superdoc replace --block-id abc123 --start 0 --end 5 --text "Updated" --expected-revision 3'
|
|
397161
|
+
],
|
|
397162
|
+
delete: [
|
|
397163
|
+
"superdoc delete --block-id abc123 --start 0 --end 10",
|
|
397164
|
+
"superdoc delete --block-id abc123 --start 0 --end 10 --dry-run"
|
|
397165
|
+
],
|
|
397166
|
+
"blocks.list": [
|
|
397167
|
+
"superdoc blocks list",
|
|
397168
|
+
"superdoc blocks list --limit 20",
|
|
397169
|
+
"superdoc blocks list --offset 10 --limit 10",
|
|
397170
|
+
`superdoc blocks list --node-types-json '["paragraph","heading"]'`
|
|
397171
|
+
],
|
|
397172
|
+
"blocks.delete": [
|
|
397173
|
+
"superdoc blocks delete --node-type paragraph --node-id abc123",
|
|
397174
|
+
"superdoc blocks delete --node-type paragraph --node-id abc123 --dry-run"
|
|
397175
|
+
],
|
|
397176
|
+
"blocks.deleteRange": [
|
|
397177
|
+
`superdoc blocks delete-range --start-json '{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}' --end-json '{"kind":"block","nodeType":"paragraph","nodeId":"def456"}'`,
|
|
397178
|
+
`superdoc blocks delete-range --start-json '{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}' --end-json '{"kind":"block","nodeType":"paragraph","nodeId":"def456"}' --dry-run`
|
|
397179
|
+
],
|
|
397180
|
+
"create.paragraph": [
|
|
397181
|
+
'superdoc create paragraph --text "A new paragraph."',
|
|
397182
|
+
'superdoc create paragraph --at document-end --text "Last paragraph."',
|
|
397183
|
+
`superdoc create paragraph --at-json '{"kind":"after","target":{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}}'`
|
|
397184
|
+
],
|
|
397185
|
+
"create.heading": [
|
|
397186
|
+
`superdoc create heading --input-json '{"level":2,"text":"Section Title"}'`,
|
|
397187
|
+
`superdoc create heading --input-json '{"level":1,"text":"Document Title","at":{"kind":"documentStart"}}'`
|
|
397188
|
+
],
|
|
397189
|
+
"create.image": ['superdoc create image --src "https://example.com/photo.png" --alt "Photo caption"'],
|
|
397190
|
+
"lists.list": ["superdoc lists list", "superdoc lists list --kind ordered"],
|
|
397191
|
+
"lists.get": [`superdoc lists get --address-json '{"kind":"block","nodeType":"listItem","nodeId":"li1"}'`],
|
|
397192
|
+
"lists.insert": [
|
|
397193
|
+
'superdoc lists insert --node-id abc123 --position after --text "New list item"',
|
|
397194
|
+
"superdoc lists insert --node-id abc123 --position before"
|
|
397195
|
+
],
|
|
397196
|
+
"lists.indent": ["superdoc lists indent --node-id abc123"],
|
|
397197
|
+
"lists.outdent": ["superdoc lists outdent --node-id abc123"],
|
|
397198
|
+
"lists.create": [
|
|
397199
|
+
`superdoc lists create --input-json '{"mode":"empty","at":{"kind":"block","nodeType":"paragraph","nodeId":"abc123"},"kind":"ordered"}'`
|
|
397200
|
+
],
|
|
397201
|
+
"lists.attach": [
|
|
397202
|
+
`superdoc lists attach --input-json '{"target":{"kind":"block","nodeType":"listItem","nodeId":"abc123"},"direction":"above"}'`
|
|
397203
|
+
],
|
|
397204
|
+
"lists.detach": ["superdoc lists detach --node-id abc123"],
|
|
397205
|
+
"lists.join": [
|
|
397206
|
+
`superdoc lists join --input-json '{"target":{"kind":"block","nodeType":"listItem","nodeId":"abc123"},"direction":"above"}'`
|
|
397207
|
+
],
|
|
397208
|
+
"lists.separate": ["superdoc lists separate --node-id abc123"],
|
|
397209
|
+
"lists.setLevel": ["superdoc lists set-level --node-id abc123 --level 2"],
|
|
397210
|
+
"lists.setValue": ["superdoc lists set-value --node-id abc123 --value-json 5"],
|
|
397211
|
+
"lists.convertToText": ["superdoc lists convert-to-text --node-id abc123"],
|
|
397212
|
+
"lists.setType": [
|
|
397213
|
+
`superdoc lists set-type --target-json '{"kind":"block","nodeType":"listItem","nodeId":"abc123"}' --kind bullet`
|
|
397214
|
+
],
|
|
397215
|
+
"format.apply": [`superdoc format apply --block-id abc123 --start 0 --end 10 --inline-json '{"bold":true}'`],
|
|
397216
|
+
"comments.create": ['superdoc comments create --block-id abc123 --start 0 --end 5 --text "Review this section"'],
|
|
397217
|
+
"comments.list": ["superdoc comments list"],
|
|
397218
|
+
"comments.get": ["superdoc comments get --id comment-123"],
|
|
397219
|
+
"comments.patch": ['superdoc comments patch --id comment-123 --text "Updated wording."'],
|
|
397220
|
+
"comments.delete": ["superdoc comments delete --id comment-123"],
|
|
397221
|
+
"trackChanges.list": ["superdoc track-changes list"],
|
|
397222
|
+
"trackChanges.get": ["superdoc track-changes get --id tc-123"],
|
|
397223
|
+
"trackChanges.decide": [`superdoc track-changes decide --decision accept --target-json '{"id":"tc-123"}'`],
|
|
397224
|
+
"history.get": ["superdoc history get"],
|
|
397225
|
+
"history.undo": ["superdoc history undo"],
|
|
397226
|
+
"history.redo": ["superdoc history redo"],
|
|
397227
|
+
"mutations.apply": [
|
|
397228
|
+
`superdoc mutations apply --atomic true --change-mode direct --steps-json '[{"id":"s1","op":"text.rewrite","where":{"by":"select","select":{"type":"text","pattern":"old"},"require":"first"},"args":{"replacement":{"text":"new"}}}]'`
|
|
397229
|
+
],
|
|
397230
|
+
"mutations.preview": [
|
|
397231
|
+
`superdoc mutations preview --atomic true --change-mode direct --steps-json '[{"id":"s1","op":"text.rewrite","where":{"by":"select","select":{"type":"text","pattern":"old"},"require":"first"},"args":{"replacement":{"text":"new"}}}]'`
|
|
397232
|
+
],
|
|
397233
|
+
"create.tableOfContents": [
|
|
397234
|
+
"superdoc create table-of-contents",
|
|
397235
|
+
`superdoc create table-of-contents --at-json '{"kind":"documentStart"}'`
|
|
397236
|
+
],
|
|
397237
|
+
"capabilities.get": ["superdoc capabilities"]
|
|
397238
|
+
};
|
|
397239
|
+
});
|
|
397240
|
+
|
|
396334
397241
|
// src/cli/commands.ts
|
|
396335
397242
|
function buildDocBackedSpec(docApiId, cliOpId) {
|
|
396336
397243
|
const tokens = cliCommandTokens(cliOpId);
|
|
@@ -396346,7 +397253,7 @@ function buildDocBackedSpec(docApiId, cliOpId) {
|
|
|
396346
397253
|
requiresDocumentContext: cliRequiresDocumentContext(cliOpId),
|
|
396347
397254
|
alias: false,
|
|
396348
397255
|
canonicalKey: key3,
|
|
396349
|
-
examples: []
|
|
397256
|
+
examples: DOC_COMMAND_EXAMPLES[docApiId] ?? []
|
|
396350
397257
|
};
|
|
396351
397258
|
}
|
|
396352
397259
|
function buildCliOnlySpec(cliOnlyOp, cliOpId) {
|
|
@@ -396382,6 +397289,13 @@ function buildAllSpecs() {
|
|
|
396382
397289
|
}
|
|
396383
397290
|
function buildHelpText() {
|
|
396384
397291
|
const lines = ["Usage: superdoc <command> [options]", ""];
|
|
397292
|
+
lines.push("Common tasks:");
|
|
397293
|
+
lines.push(" Find mutation target → query match");
|
|
397294
|
+
lines.push(" Insert between list items → lists insert");
|
|
397295
|
+
lines.push(" Create a paragraph → create paragraph");
|
|
397296
|
+
lines.push(" Insert inline text → insert");
|
|
397297
|
+
lines.push(" Batch formatting changes → mutations apply");
|
|
397298
|
+
lines.push("");
|
|
396385
397299
|
const categories = new Map;
|
|
396386
397300
|
for (const spec of CLI_COMMAND_SPECS) {
|
|
396387
397301
|
if (spec.alias)
|
|
@@ -396423,6 +397337,7 @@ var init_commands = __esm(() => {
|
|
|
396423
397337
|
init_src();
|
|
396424
397338
|
init_operation_set();
|
|
396425
397339
|
init_helper_commands();
|
|
397340
|
+
init_command_examples();
|
|
396426
397341
|
init_operation_set();
|
|
396427
397342
|
CLI_ONLY_OVERRIDES = {
|
|
396428
397343
|
open: { mutates: true, examples: ["superdoc open my-doc.docx", "superdoc open my-doc.docx --session my-session"] },
|
|
@@ -396716,8 +397631,7 @@ var init_operation_params = __esm(() => {
|
|
|
396716
397631
|
name: "dryRun",
|
|
396717
397632
|
kind: "flag",
|
|
396718
397633
|
flag: "dry-run",
|
|
396719
|
-
type: "boolean"
|
|
396720
|
-
agentVisible: false
|
|
397634
|
+
type: "boolean"
|
|
396721
397635
|
};
|
|
396722
397636
|
CHANGE_MODE_PARAM = {
|
|
396723
397637
|
name: "changeMode",
|
|
@@ -396730,8 +397644,7 @@ var init_operation_params = __esm(() => {
|
|
|
396730
397644
|
name: "expectedRevision",
|
|
396731
397645
|
kind: "flag",
|
|
396732
397646
|
flag: "expected-revision",
|
|
396733
|
-
type: "number"
|
|
396734
|
-
agentVisible: false
|
|
397647
|
+
type: "number"
|
|
396735
397648
|
};
|
|
396736
397649
|
USER_NAME_PARAM = {
|
|
396737
397650
|
name: "userName",
|
|
@@ -396745,7 +397658,7 @@ var init_operation_params = __esm(() => {
|
|
|
396745
397658
|
flag: "user-email",
|
|
396746
397659
|
type: "string"
|
|
396747
397660
|
};
|
|
396748
|
-
AGENT_HIDDEN_PARAM_NAMES = new Set(["out"
|
|
397661
|
+
AGENT_HIDDEN_PARAM_NAMES = new Set(["out"]);
|
|
396749
397662
|
OPERATION_CONSTRAINTS = {
|
|
396750
397663
|
"doc.find": {
|
|
396751
397664
|
requiresOneOf: [["type", "query"]],
|
|
@@ -396877,10 +397790,19 @@ var init_operation_params = __esm(() => {
|
|
|
396877
397790
|
{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" },
|
|
396878
397791
|
...LIST_TARGET_FLAT_PARAMS
|
|
396879
397792
|
],
|
|
397793
|
+
"doc.blocks.list": [
|
|
397794
|
+
{ name: "offset", kind: "flag", flag: "offset", type: "number" },
|
|
397795
|
+
{ name: "limit", kind: "flag", flag: "limit", type: "number" },
|
|
397796
|
+
{ name: "nodeTypes", kind: "jsonFlag", flag: "node-types-json", type: "json" }
|
|
397797
|
+
],
|
|
396880
397798
|
"doc.blocks.delete": [
|
|
396881
397799
|
{ name: "nodeType", kind: "flag", flag: "node-type", type: "string" },
|
|
396882
397800
|
{ name: "nodeId", kind: "flag", flag: "node-id", type: "string" }
|
|
396883
397801
|
],
|
|
397802
|
+
"doc.blocks.deleteRange": [
|
|
397803
|
+
{ name: "start", kind: "jsonFlag", flag: "start-json", type: "json" },
|
|
397804
|
+
{ name: "end", kind: "jsonFlag", flag: "end-json", type: "json" }
|
|
397805
|
+
],
|
|
396884
397806
|
"doc.create.paragraph": [{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" }],
|
|
396885
397807
|
"doc.create.heading": [{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" }]
|
|
396886
397808
|
};
|
|
@@ -397396,6 +398318,7 @@ var init_introspection_dispatch = __esm(() => {
|
|
|
397396
398318
|
document: {
|
|
397397
398319
|
path: metadata.sourcePath,
|
|
397398
398320
|
source: metadata.source,
|
|
398321
|
+
sourceByteLength: metadata.sourceSnapshot?.size ?? null,
|
|
397399
398322
|
byteLength: byteLength3,
|
|
397400
398323
|
revision: metadata.revision
|
|
397401
398324
|
},
|
|
@@ -397410,6 +398333,9 @@ var init_introspection_dispatch = __esm(() => {
|
|
|
397410
398333
|
`Context: ${metadata.contextId}`,
|
|
397411
398334
|
`Default: ${activeSessionId ?? "<none>"}`,
|
|
397412
398335
|
`Document: ${metadata.sourcePath ?? "<stdin>"}`,
|
|
398336
|
+
`Source: ${metadata.source}`,
|
|
398337
|
+
metadata.sourceSnapshot ? `Source size: ${metadata.sourceSnapshot.size} bytes` : undefined,
|
|
398338
|
+
`Working size: ${byteLength3} bytes`,
|
|
397413
398339
|
`Session Type: ${metadata.sessionType}`,
|
|
397414
398340
|
metadata.collaboration ? `Collab Doc ID: ${metadata.collaboration.documentId}` : undefined,
|
|
397415
398341
|
`Revision: ${metadata.revision}`,
|
|
@@ -397475,13 +398401,19 @@ function ensureBlockTarget(value2, path3) {
|
|
|
397475
398401
|
async function buildFlatInput(parsed, commandName) {
|
|
397476
398402
|
const text9 = getStringOption(parsed, "text");
|
|
397477
398403
|
const at = parseAtFlag(getStringOption(parsed, "at"), commandName);
|
|
398404
|
+
const atJson = await resolveJsonInput(parsed, "at");
|
|
397478
398405
|
const beforePayload = await resolveJsonInput(parsed, "before-address");
|
|
397479
398406
|
const afterPayload = await resolveJsonInput(parsed, "after-address");
|
|
397480
|
-
|
|
397481
|
-
|
|
398407
|
+
const locationForms = [at, atJson, beforePayload, afterPayload].filter((v) => v != null);
|
|
398408
|
+
if (locationForms.length > 1) {
|
|
398409
|
+
throw new CliError("INVALID_ARGUMENT", `${commandName}: use only one of --at, --at-json, --before-address-json, or --after-address-json.`);
|
|
397482
398410
|
}
|
|
397483
|
-
if (
|
|
397484
|
-
|
|
398411
|
+
if (atJson != null) {
|
|
398412
|
+
const validated = validateCreateParagraphInput({ at: atJson, text: text9 }, "input");
|
|
398413
|
+
if (!validated.at) {
|
|
398414
|
+
throw new CliError("VALIDATION_ERROR", `${commandName}: --at-json produced an empty location. Provide a valid location object.`);
|
|
398415
|
+
}
|
|
398416
|
+
return validated;
|
|
397485
398417
|
}
|
|
397486
398418
|
if (beforePayload != null) {
|
|
397487
398419
|
return {
|
|
@@ -397509,7 +398441,7 @@ async function buildFlatInput(parsed, commandName) {
|
|
|
397509
398441
|
async function resolveCreateParagraphInput(parsed, commandName) {
|
|
397510
398442
|
const inputJson = await resolveJsonInput(parsed, "input");
|
|
397511
398443
|
const inputProvided = inputJson !== undefined;
|
|
397512
|
-
const hasFlatFlags = getStringOption(parsed, "text") != null || getStringOption(parsed, "at") != null || getStringOption(parsed, "before-address-json") != null || getStringOption(parsed, "before-address-file") != null || getStringOption(parsed, "after-address-json") != null || getStringOption(parsed, "after-address-file") != null;
|
|
398444
|
+
const hasFlatFlags = getStringOption(parsed, "text") != null || getStringOption(parsed, "at") != null || getStringOption(parsed, "at-json") != null || getStringOption(parsed, "at-file") != null || getStringOption(parsed, "before-address-json") != null || getStringOption(parsed, "before-address-file") != null || getStringOption(parsed, "after-address-json") != null || getStringOption(parsed, "after-address-file") != null;
|
|
397513
398445
|
if (inputProvided && hasFlatFlags) {
|
|
397514
398446
|
throw new CliError("INVALID_ARGUMENT", `${commandName}: --input-json/--input-file cannot be combined with flat create flags.`);
|
|
397515
398447
|
}
|
|
@@ -398066,6 +398998,8 @@ async function parseWrapperOperationInput(operationId, tokens, commandName, opti
|
|
|
398066
398998
|
{ name: "input-file", type: "string" },
|
|
398067
398999
|
{ name: "text", type: "string" },
|
|
398068
399000
|
{ name: "at", type: "string" },
|
|
399001
|
+
{ name: "at-json", type: "string" },
|
|
399002
|
+
{ name: "at-file", type: "string" },
|
|
398069
399003
|
{ name: "before-address-json", type: "string" },
|
|
398070
399004
|
{ name: "before-address-file", type: "string" },
|
|
398071
399005
|
{ name: "after-address-json", type: "string" },
|
|
@@ -398321,7 +399255,7 @@ async function runOpen(tokens, context) {
|
|
|
398321
399255
|
document: {
|
|
398322
399256
|
path: metadata.sourcePath,
|
|
398323
399257
|
source: metadata.source,
|
|
398324
|
-
byteLength:
|
|
399258
|
+
byteLength: opened.meta.byteLength,
|
|
398325
399259
|
revision: metadata.revision
|
|
398326
399260
|
},
|
|
398327
399261
|
dirty: metadata.dirty,
|