@superdoc-dev/cli 0.2.0-next.123 → 0.2.0-next.125
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 +1118 -221
- package/package.json +8 -8
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-Gw0CeXiy.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);
|
|
@@ -201620,7 +202240,7 @@ var Node$13 = class Node$14 {
|
|
|
201620
202240
|
pmStart: start$1,
|
|
201621
202241
|
pmEnd: (typeof attrs.pmEnd === "number" ? attrs.pmEnd : undefined) ?? (start$1 != null ? start$1 + 1 : undefined)
|
|
201622
202242
|
};
|
|
201623
|
-
}, TWIPS_PER_INCH$1 = 1440, PX_PER_PT2, VALID_TRACKED_MODES, DEFAULT_HYPERLINK_CONFIG, ATOMIC_INLINE_TYPES, TOKEN_INLINE_TYPES, twipsToPx$1 = (value) => value / TWIPS_PER_INCH$1 * 96, ptToPx = (pt) => {
|
|
202243
|
+
}, SUBSCRIPT_SUPERSCRIPT_SCALE2 = 0.65, TWIPS_PER_INCH$1 = 1440, PX_PER_PT2, VALID_TRACKED_MODES, DEFAULT_HYPERLINK_CONFIG, ATOMIC_INLINE_TYPES, TOKEN_INLINE_TYPES, twipsToPx$1 = (value) => value / TWIPS_PER_INCH$1 * 96, ptToPx = (pt) => {
|
|
201624
202244
|
if (pt == null || !Number.isFinite(pt))
|
|
201625
202245
|
return;
|
|
201626
202246
|
return pt * PX_PER_PT2;
|
|
@@ -203504,6 +204124,8 @@ var Node$13 = class Node$14 {
|
|
|
203504
204124
|
textRun.strike ? 1 : 0,
|
|
203505
204125
|
textRun.highlight ?? "",
|
|
203506
204126
|
textRun.letterSpacing != null ? textRun.letterSpacing : "",
|
|
204127
|
+
textRun.vertAlign ?? "",
|
|
204128
|
+
textRun.baselineShift != null ? textRun.baselineShift : "",
|
|
203507
204129
|
textRun.token ?? "",
|
|
203508
204130
|
textRun.trackedChange ? 1 : 0,
|
|
203509
204131
|
textRun.comments?.length ?? 0
|
|
@@ -203685,6 +204307,8 @@ var Node$13 = class Node$14 {
|
|
|
203685
204307
|
hash$3 = hashString(hash$3, getRunUnderlineStyle(run2));
|
|
203686
204308
|
hash$3 = hashString(hash$3, getRunUnderlineColor(run2));
|
|
203687
204309
|
hash$3 = hashString(hash$3, getRunBooleanProp(run2, "strike") ? "1" : "");
|
|
204310
|
+
hash$3 = hashString(hash$3, getRunStringProp(run2, "vertAlign"));
|
|
204311
|
+
hash$3 = hashNumber(hash$3, getRunNumberProp(run2, "baselineShift"));
|
|
203688
204312
|
}
|
|
203689
204313
|
}
|
|
203690
204314
|
}
|
|
@@ -203748,6 +204372,14 @@ var Node$13 = class Node$14 {
|
|
|
203748
204372
|
decorations.push("line-through");
|
|
203749
204373
|
if (decorations.length > 0)
|
|
203750
204374
|
element3.style.textDecorationLine = decorations.join(" ");
|
|
204375
|
+
if (run2.baselineShift != null && Number.isFinite(run2.baselineShift))
|
|
204376
|
+
element3.style.verticalAlign = `${run2.baselineShift}pt`;
|
|
204377
|
+
else if (run2.vertAlign === "superscript")
|
|
204378
|
+
element3.style.verticalAlign = "super";
|
|
204379
|
+
else if (run2.vertAlign === "subscript")
|
|
204380
|
+
element3.style.verticalAlign = "sub";
|
|
204381
|
+
else if (run2.vertAlign === "baseline")
|
|
204382
|
+
element3.style.verticalAlign = "baseline";
|
|
203751
204383
|
}, CLIP_PATH_PREFIXES, readClipPathValue = (value) => {
|
|
203752
204384
|
if (typeof value !== "string")
|
|
203753
204385
|
return "";
|
|
@@ -204226,6 +204858,8 @@ var Node$13 = class Node$14 {
|
|
|
204226
204858
|
delete run2.highlight;
|
|
204227
204859
|
delete run2.link;
|
|
204228
204860
|
delete run2.letterSpacing;
|
|
204861
|
+
delete run2.vertAlign;
|
|
204862
|
+
delete run2.baselineShift;
|
|
204229
204863
|
}, applyFormatChangeMarks = (run2, config2, hyperlinkConfig, applyMarksToRun$1, themeColors, enableComments = true) => {
|
|
204230
204864
|
const tracked = run2.trackedChange;
|
|
204231
204865
|
if (!tracked || tracked.kind !== "format")
|
|
@@ -204830,9 +205464,14 @@ var Node$13 = class Node$14 {
|
|
|
204830
205464
|
fontFamily = resolveDocxFontFamily(runProps.fontFamily, converterContext.docx) || defaultFontFamily;
|
|
204831
205465
|
else
|
|
204832
205466
|
fontFamily = runProps.fontFamily?.ascii || runProps.fontFamily?.hAnsi || runProps.fontFamily?.eastAsia || defaultFontFamily;
|
|
205467
|
+
const vertAlign = runProps.vertAlign;
|
|
205468
|
+
const hasPosition = runProps.position != null && Number.isFinite(runProps.position);
|
|
205469
|
+
let fontSize = runProps.fontSize ? ptToPx(runProps.fontSize / 2) : defaultFontSizePx;
|
|
205470
|
+
if (!hasPosition && (vertAlign === "superscript" || vertAlign === "subscript"))
|
|
205471
|
+
fontSize *= SUBSCRIPT_SUPERSCRIPT_SCALE2;
|
|
204833
205472
|
return {
|
|
204834
205473
|
fontFamily: toCssFontFamily(fontFamily),
|
|
204835
|
-
fontSize
|
|
205474
|
+
fontSize,
|
|
204836
205475
|
bold: runProps.bold,
|
|
204837
205476
|
italic: runProps.italic,
|
|
204838
205477
|
underline: runProps.underline && runProps.underline["w:val"] && runProps.underline["w:val"] !== "none" ? {
|
|
@@ -204846,7 +205485,9 @@ var Node$13 = class Node$14 {
|
|
|
204846
205485
|
allCaps: runProps?.textTransform === "uppercase",
|
|
204847
205486
|
letterSpacing: runProps.letterSpacing ? twipsToPx$1(runProps.letterSpacing) : undefined,
|
|
204848
205487
|
lang: runProps.lang?.val || undefined,
|
|
204849
|
-
vanish: runProps.vanish
|
|
205488
|
+
vanish: runProps.vanish,
|
|
205489
|
+
vertAlign,
|
|
205490
|
+
baselineShift: hasPosition ? runProps.position / 2 : undefined
|
|
204850
205491
|
};
|
|
204851
205492
|
}, VALID_LINK_TARGETS, toTrimmedString = (value) => {
|
|
204852
205493
|
if (typeof value !== "string")
|
|
@@ -205295,6 +205936,18 @@ var Node$13 = class Node$14 {
|
|
|
205295
205936
|
if (transform === "uppercase" || transform === "lowercase" || transform === "capitalize" || transform === "none")
|
|
205296
205937
|
run2.textTransform = transform;
|
|
205297
205938
|
}
|
|
205939
|
+
if (typeof attrs.vertAlign === "string") {
|
|
205940
|
+
const va = attrs.vertAlign;
|
|
205941
|
+
if (va === "superscript" || va === "subscript" || va === "baseline")
|
|
205942
|
+
run2.vertAlign = va;
|
|
205943
|
+
}
|
|
205944
|
+
if (attrs.position != null && typeof attrs.position === "string") {
|
|
205945
|
+
const parsed = parseFloat(attrs.position);
|
|
205946
|
+
if (Number.isFinite(parsed))
|
|
205947
|
+
run2.baselineShift = parsed;
|
|
205948
|
+
}
|
|
205949
|
+
if (run2.baselineShift == null && (run2.vertAlign === "superscript" || run2.vertAlign === "subscript"))
|
|
205950
|
+
run2.fontSize *= SUBSCRIPT_SUPERSCRIPT_SCALE2;
|
|
205298
205951
|
}, DEFAULT_HYPERLINK_CONFIG$1, applyMarksToRun = (run2, marks, hyperlinkConfig = DEFAULT_HYPERLINK_CONFIG$1, themeColors, backgroundColor, enableComments = true) => {
|
|
205299
205952
|
if (!enableComments && "comments" in run2 && run2.comments)
|
|
205300
205953
|
delete run2.comments;
|
|
@@ -212133,7 +212786,7 @@ var Node$13 = class Node$14 {
|
|
|
212133
212786
|
this.#hoverRegion = null;
|
|
212134
212787
|
this.#overlayManager = null;
|
|
212135
212788
|
}
|
|
212136
|
-
}, DEFAULT_SEMANTIC_FOOTNOTE_HEADING_STYLE,
|
|
212789
|
+
}, DEFAULT_SEMANTIC_FOOTNOTE_HEADING_STYLE, DEFAULT_PAGE_SIZE, DEFAULT_MARGINS, DEFAULT_PAGE_GAP = 24, DEFAULT_HORIZONTAL_PAGE_GAP = 20, layoutDebugEnabled, perfLog = (...args$1) => {
|
|
212137
212790
|
if (!layoutDebugEnabled)
|
|
212138
212791
|
return;
|
|
212139
212792
|
console.log(...args$1);
|
|
@@ -217138,9 +217791,9 @@ var Node$13 = class Node$14 {
|
|
|
217138
217791
|
return false;
|
|
217139
217792
|
return Boolean(checker(attrs));
|
|
217140
217793
|
}, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
|
|
217141
|
-
var
|
|
217794
|
+
var init_src_Gw0CeXiy_es = __esm(() => {
|
|
217142
217795
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
217143
|
-
|
|
217796
|
+
init_SuperConverter_Cw5CEerM_es();
|
|
217144
217797
|
init_jszip_ChlR43oI_es();
|
|
217145
217798
|
init_uuid_qzgm05fK_es();
|
|
217146
217799
|
init_constants_CMPtQbp7_es();
|
|
@@ -225692,8 +226345,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
225692
226345
|
justify: "both"
|
|
225693
226346
|
};
|
|
225694
226347
|
groupedCache = /* @__PURE__ */ new WeakMap;
|
|
225695
|
-
|
|
225696
|
-
|
|
226348
|
+
SUPPORTED_DELETE_NODE_TYPES3 = new Set(DELETABLE_BLOCK_NODE_TYPES2);
|
|
226349
|
+
REJECTED_DELETE_NODE_TYPES3 = new Set(["tableRow", "tableCell"]);
|
|
226350
|
+
RANGE_DELETE_SAFE_NODE_TYPES = new Set(["passthroughBlock", "passthroughInline"]);
|
|
225697
226351
|
ORDERED_PRESET_CONFIG = {
|
|
225698
226352
|
decimal: {
|
|
225699
226353
|
numFmt: "decimal",
|
|
@@ -237928,7 +238582,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
237928
238582
|
painter.paint(layout, this.#painterHost, mapping ?? undefined);
|
|
237929
238583
|
perfLog(`[Perf] painter.paint: ${(perfNow() - painterPaintStart).toFixed(2)}ms`);
|
|
237930
238584
|
const painterPostStart = perfNow();
|
|
237931
|
-
this.#applyVertAlignToLayout();
|
|
237932
238585
|
this.#rebuildDomPositionIndex();
|
|
237933
238586
|
this.#syncDecorations();
|
|
237934
238587
|
this.#domIndexObserverManager?.resume();
|
|
@@ -239208,75 +239861,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
239208
239861
|
return false;
|
|
239209
239862
|
return this.#documentMode === "viewing";
|
|
239210
239863
|
}
|
|
239211
|
-
#applyVertAlignToLayout() {
|
|
239212
|
-
const doc$2 = this.#editor?.state?.doc;
|
|
239213
|
-
if (!doc$2 || !this.#painterHost)
|
|
239214
|
-
return;
|
|
239215
|
-
try {
|
|
239216
|
-
this.#painterHost.querySelectorAll(".superdoc-line span[data-pm-start]").forEach((span) => {
|
|
239217
|
-
try {
|
|
239218
|
-
if (span.closest(".superdoc-page-header, .superdoc-page-footer"))
|
|
239219
|
-
return;
|
|
239220
|
-
const pmStart = Number(span.dataset.pmStart ?? "NaN");
|
|
239221
|
-
if (!Number.isFinite(pmStart))
|
|
239222
|
-
return;
|
|
239223
|
-
const pos = Math.max(0, Math.min(pmStart, doc$2.content.size));
|
|
239224
|
-
const $pos = doc$2.resolve(pos);
|
|
239225
|
-
let runNode = null;
|
|
239226
|
-
for (let depth = $pos.depth;depth >= 0; depth--) {
|
|
239227
|
-
const node3 = $pos.node(depth);
|
|
239228
|
-
if (node3.type.name === "run") {
|
|
239229
|
-
runNode = node3;
|
|
239230
|
-
break;
|
|
239231
|
-
}
|
|
239232
|
-
}
|
|
239233
|
-
let vertAlign = runNode?.attrs?.runProperties?.vertAlign ?? null;
|
|
239234
|
-
let position4 = runNode?.attrs?.runProperties?.position ?? null;
|
|
239235
|
-
let fontSizeHalfPts = runNode?.attrs?.runProperties?.fontSize ?? null;
|
|
239236
|
-
if (!vertAlign && position4 == null && runNode)
|
|
239237
|
-
runNode.forEach((child) => {
|
|
239238
|
-
if (!child.isText || !child.marks?.length)
|
|
239239
|
-
return;
|
|
239240
|
-
const rpr = decodeRPrFromMarks(child.marks);
|
|
239241
|
-
if (rpr.vertAlign && !vertAlign)
|
|
239242
|
-
vertAlign = rpr.vertAlign;
|
|
239243
|
-
if (rpr.position != null && position4 == null)
|
|
239244
|
-
position4 = rpr.position;
|
|
239245
|
-
if (rpr.fontSize != null && fontSizeHalfPts == null)
|
|
239246
|
-
fontSizeHalfPts = rpr.fontSize;
|
|
239247
|
-
});
|
|
239248
|
-
if (vertAlign == null && position4 == null)
|
|
239249
|
-
return;
|
|
239250
|
-
const styleEntries = [];
|
|
239251
|
-
if (position4 != null && Number.isFinite(position4)) {
|
|
239252
|
-
const pts = halfPointToPoints(position4);
|
|
239253
|
-
if (Number.isFinite(pts))
|
|
239254
|
-
styleEntries.push(`vertical-align: ${pts}pt`);
|
|
239255
|
-
} else if (vertAlign === "superscript" || vertAlign === "subscript") {
|
|
239256
|
-
styleEntries.push(`vertical-align: ${vertAlign === "superscript" ? "super" : "sub"}`);
|
|
239257
|
-
if (fontSizeHalfPts != null && Number.isFinite(fontSizeHalfPts)) {
|
|
239258
|
-
const scaledPts = halfPointToPoints(fontSizeHalfPts * SUBSCRIPT_SUPERSCRIPT_SCALE2);
|
|
239259
|
-
if (Number.isFinite(scaledPts))
|
|
239260
|
-
styleEntries.push(`font-size: ${scaledPts}pt`);
|
|
239261
|
-
else
|
|
239262
|
-
styleEntries.push(`font-size: ${SUBSCRIPT_SUPERSCRIPT_SCALE2 * 100}%`);
|
|
239263
|
-
} else
|
|
239264
|
-
styleEntries.push(`font-size: ${SUBSCRIPT_SUPERSCRIPT_SCALE2 * 100}%`);
|
|
239265
|
-
} else if (vertAlign === "baseline")
|
|
239266
|
-
styleEntries.push("vertical-align: baseline");
|
|
239267
|
-
if (!styleEntries.length)
|
|
239268
|
-
return;
|
|
239269
|
-
const existing = span.getAttribute("style");
|
|
239270
|
-
const merged = existing ? `${existing}; ${styleEntries.join("; ")}` : styleEntries.join("; ");
|
|
239271
|
-
span.setAttribute("style", merged);
|
|
239272
|
-
} catch (error) {
|
|
239273
|
-
console.error("Failed to apply vertical alignment to span:", error);
|
|
239274
|
-
}
|
|
239275
|
-
});
|
|
239276
|
-
} catch (error) {
|
|
239277
|
-
console.error("Failed to apply vertical alignment to layout:", error);
|
|
239278
|
-
}
|
|
239279
|
-
}
|
|
239280
239864
|
};
|
|
239281
239865
|
Color = Extension.create({
|
|
239282
239866
|
name: "color",
|
|
@@ -250808,8 +251392,8 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
|
|
|
250808
251392
|
|
|
250809
251393
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
250810
251394
|
var init_super_editor_es = __esm(() => {
|
|
250811
|
-
|
|
250812
|
-
|
|
251395
|
+
init_src_Gw0CeXiy_es();
|
|
251396
|
+
init_SuperConverter_Cw5CEerM_es();
|
|
250813
251397
|
init_jszip_ChlR43oI_es();
|
|
250814
251398
|
init_xml_js_DLE8mr0n_es();
|
|
250815
251399
|
init_constants_CMPtQbp7_es();
|
|
@@ -252258,7 +252842,18 @@ var OBJECT_REPLACEMENT_CHAR2 = "";
|
|
|
252258
252842
|
|
|
252259
252843
|
// ../../packages/super-editor/src/document-api-adapters/helpers/adapter-utils.ts
|
|
252260
252844
|
function findTextBlockCandidates2(index2, blockId) {
|
|
252261
|
-
|
|
252845
|
+
const primary = index2.candidates.filter((c) => c.nodeId === blockId && isTextBlockCandidate2(c));
|
|
252846
|
+
if (primary.length > 0)
|
|
252847
|
+
return primary;
|
|
252848
|
+
try {
|
|
252849
|
+
const resolved = findBlockByNodeIdOnly2(index2, blockId);
|
|
252850
|
+
if (isTextBlockCandidate2(resolved))
|
|
252851
|
+
return [resolved];
|
|
252852
|
+
} catch (e) {
|
|
252853
|
+
if (e instanceof DocumentApiAdapterError3 && e.code === "AMBIGUOUS_TARGET")
|
|
252854
|
+
throw e;
|
|
252855
|
+
}
|
|
252856
|
+
return [];
|
|
252262
252857
|
}
|
|
252263
252858
|
function assertUnambiguous2(matches2, blockId) {
|
|
252264
252859
|
if (matches2.length > 1) {
|
|
@@ -319805,8 +320400,32 @@ function resolveBlockInsertionPos2(editor, anchorBlockId, position5, stepId) {
|
|
|
319805
320400
|
}
|
|
319806
320401
|
return position5 === "before" ? candidate.pos : candidate.end;
|
|
319807
320402
|
}
|
|
320403
|
+
function resolveCreateAnchor2(editor, target, position5, stepId) {
|
|
320404
|
+
const index3 = getBlockIndex2(editor);
|
|
320405
|
+
let candidate;
|
|
320406
|
+
try {
|
|
320407
|
+
candidate = findBlockByNodeIdOnly2(index3, target.nodeId);
|
|
320408
|
+
} catch (e) {
|
|
320409
|
+
if (e instanceof Error && "code" in e) {
|
|
320410
|
+
throw planError2(e.code, e.message, stepId, e.details);
|
|
320411
|
+
}
|
|
320412
|
+
throw e;
|
|
320413
|
+
}
|
|
320414
|
+
if (target.nodeType && candidate.nodeType !== target.nodeType) {
|
|
320415
|
+
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}.`;
|
|
320416
|
+
throw planError2("INVALID_TARGET", `Expected ${target.nodeType}:${target.nodeId} but found ${candidate.nodeType}:${candidate.nodeId}.`, stepId, {
|
|
320417
|
+
requestedNodeType: target.nodeType,
|
|
320418
|
+
actualNodeType: candidate.nodeType,
|
|
320419
|
+
nodeId: target.nodeId,
|
|
320420
|
+
remediation
|
|
320421
|
+
});
|
|
320422
|
+
}
|
|
320423
|
+
const pos = position5 === "before" ? candidate.pos : candidate.end;
|
|
320424
|
+
return { pos, anchor: candidate };
|
|
320425
|
+
}
|
|
319808
320426
|
var init_create_insertion = __esm(() => {
|
|
319809
320427
|
init_index_cache();
|
|
320428
|
+
init_node_address_resolver();
|
|
319810
320429
|
init_errors4();
|
|
319811
320430
|
});
|
|
319812
320431
|
|
|
@@ -324397,13 +325016,14 @@ var init_tracked_change_refs = __esm(() => {
|
|
|
324397
325016
|
});
|
|
324398
325017
|
|
|
324399
325018
|
// ../../packages/super-editor/src/document-api-adapters/plan-engine/create-wrappers.ts
|
|
324400
|
-
function resolveCreateInsertPosition2(editor, at
|
|
325019
|
+
function resolveCreateInsertPosition2(editor, at) {
|
|
324401
325020
|
const location3 = at ?? { kind: "documentEnd" };
|
|
324402
325021
|
if (location3.kind === "documentStart")
|
|
324403
325022
|
return 0;
|
|
324404
325023
|
if (location3.kind === "documentEnd")
|
|
324405
325024
|
return editor.state.doc.content.size;
|
|
324406
|
-
|
|
325025
|
+
const { pos } = resolveCreateAnchor2(editor, location3.target, location3.kind);
|
|
325026
|
+
return pos;
|
|
324407
325027
|
}
|
|
324408
325028
|
function resolveCreatedBlock2(editor, nodeType, blockId) {
|
|
324409
325029
|
const index3 = getBlockIndex2(editor);
|
|
@@ -324463,7 +325083,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324463
325083
|
if (mode === "tracked") {
|
|
324464
325084
|
ensureTrackedCapability2(editor, { operation: "create.paragraph" });
|
|
324465
325085
|
}
|
|
324466
|
-
const insertAt = resolveCreateInsertPosition2(editor, input2.at
|
|
325086
|
+
const insertAt = resolveCreateInsertPosition2(editor, input2.at);
|
|
324467
325087
|
if (options?.dryRun) {
|
|
324468
325088
|
const canInsert = editor.can().insertParagraphAt?.({
|
|
324469
325089
|
pos: insertAt,
|
|
@@ -324494,6 +325114,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324494
325114
|
};
|
|
324495
325115
|
}
|
|
324496
325116
|
const paragraphId = v42();
|
|
325117
|
+
let canonicalId = paragraphId;
|
|
324497
325118
|
let trackedChangeRefs;
|
|
324498
325119
|
const receipt2 = executeDomainCommand2(editor, () => {
|
|
324499
325120
|
const didApply = insertParagraphAt2({
|
|
@@ -324506,6 +325127,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324506
325127
|
clearIndexCache2(editor);
|
|
324507
325128
|
try {
|
|
324508
325129
|
const paragraph3 = resolveCreatedBlock2(editor, "paragraph", paragraphId);
|
|
325130
|
+
canonicalId = paragraph3.nodeId;
|
|
324509
325131
|
if (mode === "tracked") {
|
|
324510
325132
|
trackedChangeRefs = collectTrackInsertRefsInRange2(editor, paragraph3.pos, paragraph3.end);
|
|
324511
325133
|
}
|
|
@@ -324525,7 +325147,7 @@ function createParagraphWrapper2(editor, input2, options) {
|
|
|
324525
325147
|
}
|
|
324526
325148
|
};
|
|
324527
325149
|
}
|
|
324528
|
-
return buildParagraphCreateSuccess2(
|
|
325150
|
+
return buildParagraphCreateSuccess2(canonicalId, trackedChangeRefs);
|
|
324529
325151
|
}
|
|
324530
325152
|
function createHeadingWrapper2(editor, input2, options) {
|
|
324531
325153
|
const insertHeadingAt2 = requireEditorCommand2(editor.commands?.insertHeadingAt, "create.heading");
|
|
@@ -324533,7 +325155,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324533
325155
|
if (mode === "tracked") {
|
|
324534
325156
|
ensureTrackedCapability2(editor, { operation: "create.heading" });
|
|
324535
325157
|
}
|
|
324536
|
-
const insertAt = resolveCreateInsertPosition2(editor, input2.at
|
|
325158
|
+
const insertAt = resolveCreateInsertPosition2(editor, input2.at);
|
|
324537
325159
|
if (options?.dryRun) {
|
|
324538
325160
|
const canInsert = editor.can().insertHeadingAt?.({
|
|
324539
325161
|
pos: insertAt,
|
|
@@ -324565,6 +325187,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324565
325187
|
};
|
|
324566
325188
|
}
|
|
324567
325189
|
const headingId = v42();
|
|
325190
|
+
let canonicalId = headingId;
|
|
324568
325191
|
let trackedChangeRefs;
|
|
324569
325192
|
const receipt2 = executeDomainCommand2(editor, () => {
|
|
324570
325193
|
const didApply = insertHeadingAt2({
|
|
@@ -324578,6 +325201,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324578
325201
|
clearIndexCache2(editor);
|
|
324579
325202
|
try {
|
|
324580
325203
|
const heading4 = resolveCreatedBlock2(editor, "heading", headingId);
|
|
325204
|
+
canonicalId = heading4.nodeId;
|
|
324581
325205
|
if (mode === "tracked") {
|
|
324582
325206
|
trackedChangeRefs = collectTrackInsertRefsInRange2(editor, heading4.pos, heading4.end);
|
|
324583
325207
|
}
|
|
@@ -324597,7 +325221,7 @@ function createHeadingWrapper2(editor, input2, options) {
|
|
|
324597
325221
|
}
|
|
324598
325222
|
};
|
|
324599
325223
|
}
|
|
324600
|
-
return buildHeadingCreateSuccess2(
|
|
325224
|
+
return buildHeadingCreateSuccess2(canonicalId, trackedChangeRefs);
|
|
324601
325225
|
}
|
|
324602
325226
|
var init_create_wrappers = __esm(() => {
|
|
324603
325227
|
init_wrapper();
|
|
@@ -324610,15 +325234,21 @@ var init_create_wrappers = __esm(() => {
|
|
|
324610
325234
|
});
|
|
324611
325235
|
|
|
324612
325236
|
// ../../packages/super-editor/src/document-api-adapters/plan-engine/blocks-wrappers.ts
|
|
324613
|
-
function
|
|
324614
|
-
if (
|
|
324615
|
-
|
|
324616
|
-
|
|
324617
|
-
if (
|
|
324618
|
-
|
|
324619
|
-
|
|
324620
|
-
|
|
324621
|
-
|
|
325237
|
+
function extractTextPreview2(node4) {
|
|
325238
|
+
if (!node4.isTextblock)
|
|
325239
|
+
return null;
|
|
325240
|
+
const text9 = node4.textContent;
|
|
325241
|
+
if (text9.length <= TEXT_PREVIEW_MAX_LENGTH2)
|
|
325242
|
+
return text9;
|
|
325243
|
+
return text9.slice(0, TEXT_PREVIEW_MAX_LENGTH2);
|
|
325244
|
+
}
|
|
325245
|
+
function toBlockSummary2(candidate, ordinal) {
|
|
325246
|
+
return {
|
|
325247
|
+
ordinal,
|
|
325248
|
+
nodeId: candidate.nodeId,
|
|
325249
|
+
nodeType: candidate.nodeType,
|
|
325250
|
+
textPreview: extractTextPreview2(candidate.node)
|
|
325251
|
+
};
|
|
324622
325252
|
}
|
|
324623
325253
|
function resolveSdBlockId2(candidate) {
|
|
324624
325254
|
const sdBlockId = candidate.node.attrs?.sdBlockId;
|
|
@@ -324626,6 +325256,16 @@ function resolveSdBlockId2(candidate) {
|
|
|
324626
325256
|
return sdBlockId;
|
|
324627
325257
|
throw new DocumentApiAdapterError3("INTERNAL_ERROR", "Resolved block candidate is missing sdBlockId attribute. This indicates a schema/extension invariant violation.", { attrs: candidate.node.attrs });
|
|
324628
325258
|
}
|
|
325259
|
+
function validateDeleteTargetNodeType2(nodeType) {
|
|
325260
|
+
if (REJECTED_DELETE_NODE_TYPES4.has(nodeType)) {
|
|
325261
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { nodeType });
|
|
325262
|
+
}
|
|
325263
|
+
if (!SUPPORTED_DELETE_NODE_TYPES4.has(nodeType)) {
|
|
325264
|
+
throw new DocumentApiAdapterError3("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, {
|
|
325265
|
+
nodeType
|
|
325266
|
+
});
|
|
325267
|
+
}
|
|
325268
|
+
}
|
|
324629
325269
|
function validateCommandLayerUniqueness2(editor, sdBlockId) {
|
|
324630
325270
|
const getBlockNodeById = editor.helpers?.blockNode?.getBlockNodeById;
|
|
324631
325271
|
if (typeof getBlockNodeById !== "function") {
|
|
@@ -324639,30 +325279,163 @@ function validateCommandLayerUniqueness2(editor, sdBlockId) {
|
|
|
324639
325279
|
throw new DocumentApiAdapterError3("AMBIGUOUS_TARGET", `Multiple blocks share sdBlockId "${sdBlockId}" at the command layer.`, { sdBlockId, count: matches3.length });
|
|
324640
325280
|
}
|
|
324641
325281
|
}
|
|
325282
|
+
function collectTopLevelBlocks2(editor) {
|
|
325283
|
+
const doc4 = editor.state.doc;
|
|
325284
|
+
const results = [];
|
|
325285
|
+
let offset2 = 0;
|
|
325286
|
+
for (let i4 = 0;i4 < doc4.childCount; i4++) {
|
|
325287
|
+
const child = doc4.child(i4);
|
|
325288
|
+
const nodeType = mapBlockNodeType2(child);
|
|
325289
|
+
const pos = offset2;
|
|
325290
|
+
if (nodeType) {
|
|
325291
|
+
const nodeId = resolveBlockNodeId2(child, pos, nodeType);
|
|
325292
|
+
if (nodeId) {
|
|
325293
|
+
results.push({ node: child, pos, end: pos + child.nodeSize, nodeType, nodeId });
|
|
325294
|
+
}
|
|
325295
|
+
}
|
|
325296
|
+
offset2 += child.nodeSize;
|
|
325297
|
+
}
|
|
325298
|
+
return results;
|
|
325299
|
+
}
|
|
325300
|
+
function blocksListWrapper2(editor, input2) {
|
|
325301
|
+
const topLevel = collectTopLevelBlocks2(editor);
|
|
325302
|
+
const filtered = input2?.nodeTypes ? topLevel.filter((b2) => input2.nodeTypes.includes(b2.nodeType)) : topLevel;
|
|
325303
|
+
const total = filtered.length;
|
|
325304
|
+
const offset2 = input2?.offset ?? 0;
|
|
325305
|
+
const limit = input2?.limit ?? total;
|
|
325306
|
+
const paged = filtered.slice(offset2, offset2 + limit);
|
|
325307
|
+
const blocks2 = paged.map((candidate, i4) => ({
|
|
325308
|
+
ordinal: offset2 + i4,
|
|
325309
|
+
nodeId: candidate.nodeId,
|
|
325310
|
+
nodeType: candidate.nodeType,
|
|
325311
|
+
textPreview: extractTextPreview2(candidate.node),
|
|
325312
|
+
isEmpty: candidate.node.textContent.length === 0
|
|
325313
|
+
}));
|
|
325314
|
+
return { total, blocks: blocks2, revision: getRevision2(editor) };
|
|
325315
|
+
}
|
|
324642
325316
|
function blocksDeleteWrapper2(editor, input2, options) {
|
|
324643
325317
|
rejectTrackedMode2("blocks.delete", options);
|
|
324644
325318
|
const index3 = getBlockIndex2(editor);
|
|
324645
325319
|
const candidate = findBlockByIdStrict2(index3, input2.target);
|
|
324646
|
-
|
|
325320
|
+
validateDeleteTargetNodeType2(candidate.nodeType);
|
|
325321
|
+
const topLevel = collectTopLevelBlocks2(editor);
|
|
325322
|
+
const candidateOrdinal = topLevel.findIndex((b2) => b2.nodeId === candidate.nodeId && b2.nodeType === candidate.nodeType);
|
|
325323
|
+
const deletedBlock = toBlockSummary2(candidate, candidateOrdinal);
|
|
324647
325324
|
const sdBlockId = resolveSdBlockId2(candidate);
|
|
324648
325325
|
const deleteBlockNodeById = requireEditorCommand2(editor.commands?.deleteBlockNodeById, "blocks.delete");
|
|
324649
325326
|
validateCommandLayerUniqueness2(editor, sdBlockId);
|
|
324650
325327
|
if (options?.dryRun) {
|
|
324651
|
-
return { success: true, deleted: input2.target };
|
|
325328
|
+
return { success: true, deleted: input2.target, deletedBlock };
|
|
324652
325329
|
}
|
|
324653
325330
|
const receipt2 = executeDomainCommand2(editor, () => {
|
|
324654
325331
|
const didApply = deleteBlockNodeById(sdBlockId);
|
|
324655
|
-
if (didApply)
|
|
325332
|
+
if (didApply)
|
|
324656
325333
|
clearIndexCache2(editor);
|
|
324657
|
-
}
|
|
324658
325334
|
return didApply;
|
|
324659
325335
|
}, { expectedRevision: options?.expectedRevision });
|
|
324660
325336
|
if (receipt2.steps[0]?.effect !== "changed") {
|
|
324661
325337
|
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
325338
|
}
|
|
324663
|
-
return { success: true, deleted: input2.target };
|
|
325339
|
+
return { success: true, deleted: input2.target, deletedBlock };
|
|
325340
|
+
}
|
|
325341
|
+
function hasSectionBreak2(candidate) {
|
|
325342
|
+
const attrs = candidate.node.attrs;
|
|
325343
|
+
const pPr = attrs?.paragraphProperties;
|
|
325344
|
+
return pPr?.sectPr != null && typeof pPr.sectPr === "object";
|
|
325345
|
+
}
|
|
325346
|
+
function resolveTopLevelOrdinal2(topLevel, candidate, label) {
|
|
325347
|
+
const idx = topLevel.findIndex((b2) => b2.nodeId === candidate.nodeId && b2.nodeType === candidate.nodeType);
|
|
325348
|
+
if (idx !== -1)
|
|
325349
|
+
return idx;
|
|
325350
|
+
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 });
|
|
325351
|
+
}
|
|
325352
|
+
function resolveRangeEndpoint2(index3, address2, label) {
|
|
325353
|
+
const key2 = `${address2.nodeType}:${address2.nodeId}`;
|
|
325354
|
+
if (index3.ambiguous.has(key2)) {
|
|
325355
|
+
throw new DocumentApiAdapterError3("AMBIGUOUS_TARGET", `Multiple blocks share key "${key2}".`, {
|
|
325356
|
+
target: address2
|
|
325357
|
+
});
|
|
325358
|
+
}
|
|
325359
|
+
const candidate = index3.byId.get(key2);
|
|
325360
|
+
if (candidate)
|
|
325361
|
+
return candidate;
|
|
325362
|
+
const mismatch = index3.candidates.find((c) => c.nodeId === address2.nodeId);
|
|
325363
|
+
if (mismatch) {
|
|
325364
|
+
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 });
|
|
325365
|
+
}
|
|
325366
|
+
throw new DocumentApiAdapterError3("TARGET_NOT_FOUND", `Block "${key2}" was not found.`, {
|
|
325367
|
+
target: address2
|
|
325368
|
+
});
|
|
325369
|
+
}
|
|
325370
|
+
function rejectUnmappedNodesInRange2(doc4, rangeBlocks) {
|
|
325371
|
+
if (rangeBlocks.length === 0)
|
|
325372
|
+
return;
|
|
325373
|
+
const rangeFrom = rangeBlocks[0].pos;
|
|
325374
|
+
const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
|
|
325375
|
+
const recognizedPositions = new Set(rangeBlocks.map((b2) => b2.pos));
|
|
325376
|
+
let offset2 = 0;
|
|
325377
|
+
for (let i4 = 0;i4 < doc4.childCount; i4++) {
|
|
325378
|
+
const child = doc4.child(i4);
|
|
325379
|
+
const childEnd = offset2 + child.nodeSize;
|
|
325380
|
+
if (childEnd > rangeFrom && offset2 < rangeTo && !recognizedPositions.has(offset2)) {
|
|
325381
|
+
if (!RANGE_DELETE_SAFE_NODE_TYPES2.has(child.type.name)) {
|
|
325382
|
+
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 });
|
|
325383
|
+
}
|
|
325384
|
+
}
|
|
325385
|
+
offset2 = childEnd;
|
|
325386
|
+
}
|
|
325387
|
+
}
|
|
325388
|
+
function blocksDeleteRangeWrapper2(editor, input2, options) {
|
|
325389
|
+
rejectTrackedMode2("blocks.deleteRange", options);
|
|
325390
|
+
const topLevel = collectTopLevelBlocks2(editor);
|
|
325391
|
+
const index3 = getBlockIndex2(editor);
|
|
325392
|
+
const startCandidate = resolveRangeEndpoint2(index3, input2.start, "start");
|
|
325393
|
+
const endCandidate = resolveRangeEndpoint2(index3, input2.end, "end");
|
|
325394
|
+
const startOrdinal = resolveTopLevelOrdinal2(topLevel, startCandidate, "start");
|
|
325395
|
+
const endOrdinal = resolveTopLevelOrdinal2(topLevel, endCandidate, "end");
|
|
325396
|
+
if (startOrdinal > endOrdinal) {
|
|
325397
|
+
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 });
|
|
325398
|
+
}
|
|
325399
|
+
const rangeBlocks = topLevel.slice(startOrdinal, endOrdinal + 1);
|
|
325400
|
+
rejectUnmappedNodesInRange2(editor.state.doc, rangeBlocks);
|
|
325401
|
+
for (const block of rangeBlocks) {
|
|
325402
|
+
if (hasSectionBreak2(block)) {
|
|
325403
|
+
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 });
|
|
325404
|
+
}
|
|
325405
|
+
}
|
|
325406
|
+
const deletedBlocks = rangeBlocks.map((c, i4) => toBlockSummary2(c, startOrdinal + i4));
|
|
325407
|
+
const revisionBefore = getRevision2(editor);
|
|
325408
|
+
if (options?.dryRun) {
|
|
325409
|
+
return {
|
|
325410
|
+
success: true,
|
|
325411
|
+
deletedCount: rangeBlocks.length,
|
|
325412
|
+
deletedBlocks,
|
|
325413
|
+
revision: { before: revisionBefore, after: revisionBefore },
|
|
325414
|
+
dryRun: true
|
|
325415
|
+
};
|
|
325416
|
+
}
|
|
325417
|
+
const rangeFrom = rangeBlocks[0].pos;
|
|
325418
|
+
const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
|
|
325419
|
+
const receipt2 = executeDomainCommand2(editor, () => {
|
|
325420
|
+
const tr = editor.state.tr;
|
|
325421
|
+
tr.delete(rangeFrom, rangeTo);
|
|
325422
|
+
editor.dispatch(tr);
|
|
325423
|
+
clearIndexCache2(editor);
|
|
325424
|
+
return true;
|
|
325425
|
+
}, { expectedRevision: options?.expectedRevision });
|
|
325426
|
+
if (receipt2.steps[0]?.effect !== "changed") {
|
|
325427
|
+
throw new DocumentApiAdapterError3("INTERNAL_ERROR", "blocks.deleteRange command returned false despite passing all pre-apply checks.", { start: input2.start, end: input2.end });
|
|
325428
|
+
}
|
|
325429
|
+
const revisionAfter = getRevision2(editor);
|
|
325430
|
+
return {
|
|
325431
|
+
success: true,
|
|
325432
|
+
deletedCount: rangeBlocks.length,
|
|
325433
|
+
deletedBlocks,
|
|
325434
|
+
revision: { before: revisionBefore, after: revisionAfter },
|
|
325435
|
+
dryRun: false
|
|
325436
|
+
};
|
|
324664
325437
|
}
|
|
324665
|
-
var
|
|
325438
|
+
var SUPPORTED_DELETE_NODE_TYPES4, REJECTED_DELETE_NODE_TYPES4, TEXT_PREVIEW_MAX_LENGTH2 = 80, RANGE_DELETE_SAFE_NODE_TYPES2;
|
|
324666
325439
|
var init_blocks_wrappers = __esm(() => {
|
|
324667
325440
|
init_src();
|
|
324668
325441
|
init_index_cache();
|
|
@@ -324670,8 +325443,10 @@ var init_blocks_wrappers = __esm(() => {
|
|
|
324670
325443
|
init_errors3();
|
|
324671
325444
|
init_mutation_helpers();
|
|
324672
325445
|
init_plan_wrappers();
|
|
324673
|
-
|
|
324674
|
-
|
|
325446
|
+
init_revision_tracker();
|
|
325447
|
+
SUPPORTED_DELETE_NODE_TYPES4 = new Set(DELETABLE_BLOCK_NODE_TYPES);
|
|
325448
|
+
REJECTED_DELETE_NODE_TYPES4 = new Set(["tableRow", "tableCell"]);
|
|
325449
|
+
RANGE_DELETE_SAFE_NODE_TYPES2 = new Set(["passthroughBlock", "passthroughInline"]);
|
|
324675
325450
|
});
|
|
324676
325451
|
|
|
324677
325452
|
// ../../packages/super-editor/src/document-api-adapters/helpers/list-sequence-helpers.ts
|
|
@@ -332608,10 +333383,15 @@ function createHistoryAdapter2(editor) {
|
|
|
332608
333383
|
});
|
|
332609
333384
|
}
|
|
332610
333385
|
const revBefore = getRevision2(editor);
|
|
333386
|
+
const depth = getUndoDepth2(editor);
|
|
333387
|
+
if (depth === 0) {
|
|
333388
|
+
return { noop: true, reason: "EMPTY_UNDO_STACK", revision: { before: revBefore, after: revBefore } };
|
|
333389
|
+
}
|
|
332611
333390
|
const success = Boolean(editor.commands.undo());
|
|
332612
333391
|
const revAfter = getRevision2(editor);
|
|
332613
333392
|
return {
|
|
332614
333393
|
noop: !success,
|
|
333394
|
+
reason: success ? undefined : "NO_EFFECT",
|
|
332615
333395
|
revision: { before: revBefore, after: revAfter }
|
|
332616
333396
|
};
|
|
332617
333397
|
},
|
|
@@ -332622,10 +333402,15 @@ function createHistoryAdapter2(editor) {
|
|
|
332622
333402
|
});
|
|
332623
333403
|
}
|
|
332624
333404
|
const revBefore = getRevision2(editor);
|
|
333405
|
+
const depth = getRedoDepth2(editor);
|
|
333406
|
+
if (depth === 0) {
|
|
333407
|
+
return { noop: true, reason: "EMPTY_REDO_STACK", revision: { before: revBefore, after: revBefore } };
|
|
333408
|
+
}
|
|
332625
333409
|
const success = Boolean(editor.commands.redo());
|
|
332626
333410
|
const revAfter = getRevision2(editor);
|
|
332627
333411
|
return {
|
|
332628
333412
|
noop: !success,
|
|
333413
|
+
reason: success ? undefined : "NO_EFFECT",
|
|
332629
333414
|
revision: { before: revBefore, after: revAfter }
|
|
332630
333415
|
};
|
|
332631
333416
|
}
|
|
@@ -333286,7 +334071,7 @@ function createTableOfContentsWrapper2(editor, input2, options) {
|
|
|
333286
334071
|
} else if (at.kind === "documentEnd") {
|
|
333287
334072
|
pos = editor.state.doc.content.size;
|
|
333288
334073
|
} else {
|
|
333289
|
-
pos =
|
|
334074
|
+
pos = resolveCreateAnchor2(editor, at.target, at.kind).pos;
|
|
333290
334075
|
}
|
|
333291
334076
|
const config41 = input2.config ? applyTocPatchTyped2(DEFAULT_TOC_CONFIG2, input2.config) : DEFAULT_TOC_CONFIG2;
|
|
333292
334077
|
const instruction = serializeTocInstruction2(config41);
|
|
@@ -333778,9 +334563,9 @@ function resolveImageInsertPosition2(editor, location3) {
|
|
|
333778
334563
|
return editor.state.doc.content.size;
|
|
333779
334564
|
case "before":
|
|
333780
334565
|
case "after":
|
|
333781
|
-
return
|
|
334566
|
+
return resolveCreateAnchor2(editor, location3.target, location3.kind).pos;
|
|
333782
334567
|
case "inParagraph": {
|
|
333783
|
-
const pos =
|
|
334568
|
+
const { pos } = resolveCreateAnchor2(editor, location3.target, "before");
|
|
333784
334569
|
return pos + 1 + (location3.offset ?? 0);
|
|
333785
334570
|
}
|
|
333786
334571
|
default: {
|
|
@@ -340216,7 +341001,9 @@ function assembleDocumentApiAdapters2(editor) {
|
|
|
340216
341001
|
rejectAll: (input2, options) => trackChangesRejectAllWrapper2(editor, input2, options)
|
|
340217
341002
|
},
|
|
340218
341003
|
blocks: {
|
|
340219
|
-
|
|
341004
|
+
list: (input2) => blocksListWrapper2(editor, input2),
|
|
341005
|
+
delete: (input2, options) => blocksDeleteWrapper2(editor, input2, options),
|
|
341006
|
+
deleteRange: (input2, options) => blocksDeleteRangeWrapper2(editor, input2, options)
|
|
340220
341007
|
},
|
|
340221
341008
|
create: {
|
|
340222
341009
|
paragraph: (input2, options) => createParagraphWrapper2(editor, input2, options),
|
|
@@ -394398,7 +395185,7 @@ function mapListsError(operationId, error2, code10) {
|
|
|
394398
395185
|
return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
|
|
394399
395186
|
}
|
|
394400
395187
|
if (code10 === "INVALID_TARGET") {
|
|
394401
|
-
return new CliError("
|
|
395188
|
+
return new CliError("INVALID_TARGET", message, { operationId, details });
|
|
394402
395189
|
}
|
|
394403
395190
|
if (code10 === "TRACK_CHANGE_COMMAND_UNAVAILABLE" || code10 === "CAPABILITY_UNAVAILABLE") {
|
|
394404
395191
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", message, { operationId, details });
|
|
@@ -394473,9 +395260,12 @@ function mapCreateError(operationId, error2, code10) {
|
|
|
394473
395260
|
if (code10 === "TARGET_NOT_FOUND") {
|
|
394474
395261
|
return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
|
|
394475
395262
|
}
|
|
394476
|
-
if (code10 === "AMBIGUOUS_TARGET"
|
|
395263
|
+
if (code10 === "AMBIGUOUS_TARGET") {
|
|
394477
395264
|
return new CliError("INVALID_ARGUMENT", message, { operationId, details });
|
|
394478
395265
|
}
|
|
395266
|
+
if (code10 === "INVALID_TARGET") {
|
|
395267
|
+
return new CliError("INVALID_TARGET", message, { operationId, details });
|
|
395268
|
+
}
|
|
394479
395269
|
if (code10 === "TRACK_CHANGE_COMMAND_UNAVAILABLE") {
|
|
394480
395270
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", message, { operationId, details });
|
|
394481
395271
|
}
|
|
@@ -394609,7 +395399,7 @@ function mapFailedReceipt(operationId, result2) {
|
|
|
394609
395399
|
}
|
|
394610
395400
|
if (family === "lists") {
|
|
394611
395401
|
if (failureCode === "INVALID_TARGET") {
|
|
394612
|
-
return new CliError("
|
|
395402
|
+
return new CliError("INVALID_TARGET", failureMessage, { operationId, failure });
|
|
394613
395403
|
}
|
|
394614
395404
|
if (failureCode === "CAPABILITY_UNAVAILABLE") {
|
|
394615
395405
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", failureMessage, { operationId, failure });
|
|
@@ -394636,7 +395426,7 @@ function mapFailedReceipt(operationId, result2) {
|
|
|
394636
395426
|
return new CliError("TRACK_CHANGE_COMMAND_UNAVAILABLE", failureMessage, { operationId, failure });
|
|
394637
395427
|
}
|
|
394638
395428
|
if (failureCode === "INVALID_TARGET") {
|
|
394639
|
-
return new CliError("
|
|
395429
|
+
return new CliError("INVALID_TARGET", failureMessage, { operationId, failure });
|
|
394640
395430
|
}
|
|
394641
395431
|
return new CliError("COMMAND_FAILED", failureMessage, { operationId, failure });
|
|
394642
395432
|
}
|
|
@@ -394873,41 +395663,18 @@ function validateCreateParagraphLocation(value2, path3) {
|
|
|
394873
395663
|
return { kind: kind2 };
|
|
394874
395664
|
}
|
|
394875
395665
|
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.`);
|
|
395666
|
+
if (obj.nodeId != null) {
|
|
395667
|
+
throw new CliError("VALIDATION_ERROR", `${path3}: bare "nodeId" shorthand is not supported. Use "target" with an explicit { kind: "block", nodeType, nodeId }.`);
|
|
394880
395668
|
}
|
|
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
|
-
};
|
|
395669
|
+
expectOnlyKeys(obj, ["kind", "target"], path3);
|
|
395670
|
+
if (obj.target == null) {
|
|
395671
|
+
throw new CliError("VALIDATION_ERROR", `${path3} must include a "target" BlockNodeAddress.`);
|
|
394897
395672
|
}
|
|
394898
|
-
|
|
394899
|
-
|
|
394900
|
-
|
|
394901
|
-
if (kind2 === "before") {
|
|
394902
|
-
return {
|
|
394903
|
-
kind: "before",
|
|
394904
|
-
target: target2
|
|
394905
|
-
};
|
|
395673
|
+
const target2 = validateNodeAddress(obj.target, `${path3}.target`);
|
|
395674
|
+
if (target2.kind !== "block") {
|
|
395675
|
+
throw new CliError("VALIDATION_ERROR", `${path3}.target.kind must be "block".`);
|
|
394906
395676
|
}
|
|
394907
|
-
return {
|
|
394908
|
-
kind: "after",
|
|
394909
|
-
target: target2
|
|
394910
|
-
};
|
|
395677
|
+
return { kind: kind2, target: target2 };
|
|
394911
395678
|
}
|
|
394912
395679
|
throw new CliError("VALIDATION_ERROR", `${path3}.kind must be one of: documentStart, documentEnd, before, after.`);
|
|
394913
395680
|
}
|
|
@@ -396219,7 +396986,7 @@ var init_helper_commands = __esm(() => {
|
|
|
396219
396986
|
description: "Apply strikethrough formatting to a text range.",
|
|
396220
396987
|
category: "format",
|
|
396221
396988
|
mutates: true,
|
|
396222
|
-
examples: ["superdoc format strikethrough --
|
|
396989
|
+
examples: ["superdoc format strikethrough --block-id p1 --start 0 --end 5"]
|
|
396223
396990
|
},
|
|
396224
396991
|
{
|
|
396225
396992
|
tokens: ["track-changes", "accept"],
|
|
@@ -396268,9 +397035,7 @@ var init_helper_commands = __esm(() => {
|
|
|
396268
397035
|
description: "Add a new comment thread anchored to a text range.",
|
|
396269
397036
|
category: "comments",
|
|
396270
397037
|
mutates: true,
|
|
396271
|
-
examples: [
|
|
396272
|
-
`superdoc comments add --target '{"kind":"text","blockId":"p1","range":{"start":0,"end":5}}' --text "Review this"`
|
|
396273
|
-
]
|
|
397038
|
+
examples: ['superdoc comments add --block-id p1 --start 0 --end 5 --text "Review this"']
|
|
396274
397039
|
},
|
|
396275
397040
|
{
|
|
396276
397041
|
tokens: ["comments", "reply"],
|
|
@@ -396298,7 +397063,7 @@ var init_helper_commands = __esm(() => {
|
|
|
396298
397063
|
category: "comments",
|
|
396299
397064
|
mutates: true,
|
|
396300
397065
|
examples: [
|
|
396301
|
-
`superdoc comments move --id c1 --target '{"kind":"text","blockId":"p2","range":{"start":0,"end":5}}'`
|
|
397066
|
+
`superdoc comments move --id c1 --target-json '{"kind":"text","blockId":"p2","range":{"start":0,"end":5}}'`
|
|
396302
397067
|
]
|
|
396303
397068
|
},
|
|
396304
397069
|
{
|
|
@@ -396331,6 +397096,111 @@ var init_helper_commands = __esm(() => {
|
|
|
396331
397096
|
];
|
|
396332
397097
|
});
|
|
396333
397098
|
|
|
397099
|
+
// src/cli/command-examples.ts
|
|
397100
|
+
var DOC_COMMAND_EXAMPLES;
|
|
397101
|
+
var init_command_examples = __esm(() => {
|
|
397102
|
+
DOC_COMMAND_EXAMPLES = {
|
|
397103
|
+
find: [
|
|
397104
|
+
'superdoc find --type text --pattern "quarterly revenue" --limit 5',
|
|
397105
|
+
`superdoc find --select-json '{"type":"node","nodeType":"heading"}'`
|
|
397106
|
+
],
|
|
397107
|
+
"query.match": [
|
|
397108
|
+
`superdoc query match --select-json '{"type":"text","pattern":"Introduction"}' --require exactlyOne`,
|
|
397109
|
+
`superdoc query match --select-json '{"type":"node","nodeType":"paragraph"}' --require any --limit 3`
|
|
397110
|
+
],
|
|
397111
|
+
getNode: [`superdoc get-node --address-json '{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}'`],
|
|
397112
|
+
getNodeById: ["superdoc get-node-by-id --id abc123"],
|
|
397113
|
+
getText: ["superdoc get-text"],
|
|
397114
|
+
info: ["superdoc info"],
|
|
397115
|
+
insert: [
|
|
397116
|
+
'superdoc insert --value "Hello, world!"',
|
|
397117
|
+
'superdoc insert --block-id abc123 --value "Appended text"',
|
|
397118
|
+
'superdoc insert --type markdown --value "## New Section"'
|
|
397119
|
+
],
|
|
397120
|
+
replace: [
|
|
397121
|
+
'superdoc replace --block-id abc123 --start 0 --end 5 --text "Updated"',
|
|
397122
|
+
'superdoc replace --block-id abc123 --start 0 --end 5 --text "Updated" --dry-run',
|
|
397123
|
+
'superdoc replace --block-id abc123 --start 0 --end 5 --text "Updated" --expected-revision 3'
|
|
397124
|
+
],
|
|
397125
|
+
delete: [
|
|
397126
|
+
"superdoc delete --block-id abc123 --start 0 --end 10",
|
|
397127
|
+
"superdoc delete --block-id abc123 --start 0 --end 10 --dry-run"
|
|
397128
|
+
],
|
|
397129
|
+
"blocks.list": [
|
|
397130
|
+
"superdoc blocks list",
|
|
397131
|
+
"superdoc blocks list --limit 20",
|
|
397132
|
+
"superdoc blocks list --offset 10 --limit 10",
|
|
397133
|
+
`superdoc blocks list --node-types-json '["paragraph","heading"]'`
|
|
397134
|
+
],
|
|
397135
|
+
"blocks.delete": [
|
|
397136
|
+
"superdoc blocks delete --node-type paragraph --node-id abc123",
|
|
397137
|
+
"superdoc blocks delete --node-type paragraph --node-id abc123 --dry-run"
|
|
397138
|
+
],
|
|
397139
|
+
"blocks.deleteRange": [
|
|
397140
|
+
`superdoc blocks delete-range --start-json '{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}' --end-json '{"kind":"block","nodeType":"paragraph","nodeId":"def456"}'`,
|
|
397141
|
+
`superdoc blocks delete-range --start-json '{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}' --end-json '{"kind":"block","nodeType":"paragraph","nodeId":"def456"}' --dry-run`
|
|
397142
|
+
],
|
|
397143
|
+
"create.paragraph": [
|
|
397144
|
+
'superdoc create paragraph --text "A new paragraph."',
|
|
397145
|
+
'superdoc create paragraph --at document-end --text "Last paragraph."',
|
|
397146
|
+
`superdoc create paragraph --at-json '{"kind":"after","target":{"kind":"block","nodeType":"paragraph","nodeId":"abc123"}}'`
|
|
397147
|
+
],
|
|
397148
|
+
"create.heading": [
|
|
397149
|
+
`superdoc create heading --input-json '{"level":2,"text":"Section Title"}'`,
|
|
397150
|
+
`superdoc create heading --input-json '{"level":1,"text":"Document Title","at":{"kind":"documentStart"}}'`
|
|
397151
|
+
],
|
|
397152
|
+
"create.image": ['superdoc create image --src "https://example.com/photo.png" --alt "Photo caption"'],
|
|
397153
|
+
"lists.list": ["superdoc lists list", "superdoc lists list --kind ordered"],
|
|
397154
|
+
"lists.get": [`superdoc lists get --address-json '{"kind":"block","nodeType":"listItem","nodeId":"li1"}'`],
|
|
397155
|
+
"lists.insert": [
|
|
397156
|
+
'superdoc lists insert --node-id abc123 --position after --text "New list item"',
|
|
397157
|
+
"superdoc lists insert --node-id abc123 --position before"
|
|
397158
|
+
],
|
|
397159
|
+
"lists.indent": ["superdoc lists indent --node-id abc123"],
|
|
397160
|
+
"lists.outdent": ["superdoc lists outdent --node-id abc123"],
|
|
397161
|
+
"lists.create": [
|
|
397162
|
+
`superdoc lists create --input-json '{"mode":"empty","at":{"kind":"block","nodeType":"paragraph","nodeId":"abc123"},"kind":"ordered"}'`
|
|
397163
|
+
],
|
|
397164
|
+
"lists.attach": [
|
|
397165
|
+
`superdoc lists attach --input-json '{"target":{"kind":"block","nodeType":"listItem","nodeId":"abc123"},"direction":"above"}'`
|
|
397166
|
+
],
|
|
397167
|
+
"lists.detach": ["superdoc lists detach --node-id abc123"],
|
|
397168
|
+
"lists.join": [
|
|
397169
|
+
`superdoc lists join --input-json '{"target":{"kind":"block","nodeType":"listItem","nodeId":"abc123"},"direction":"above"}'`
|
|
397170
|
+
],
|
|
397171
|
+
"lists.separate": ["superdoc lists separate --node-id abc123"],
|
|
397172
|
+
"lists.setLevel": ["superdoc lists set-level --node-id abc123 --level 2"],
|
|
397173
|
+
"lists.setValue": ["superdoc lists set-value --node-id abc123 --value-json 5"],
|
|
397174
|
+
"lists.convertToText": ["superdoc lists convert-to-text --node-id abc123"],
|
|
397175
|
+
"lists.setType": [
|
|
397176
|
+
`superdoc lists set-type --target-json '{"kind":"block","nodeType":"listItem","nodeId":"abc123"}' --kind bullet`
|
|
397177
|
+
],
|
|
397178
|
+
"format.apply": [`superdoc format apply --block-id abc123 --start 0 --end 10 --inline-json '{"bold":true}'`],
|
|
397179
|
+
"comments.create": ['superdoc comments create --block-id abc123 --start 0 --end 5 --text "Review this section"'],
|
|
397180
|
+
"comments.list": ["superdoc comments list"],
|
|
397181
|
+
"comments.get": ["superdoc comments get --id comment-123"],
|
|
397182
|
+
"comments.patch": ['superdoc comments patch --id comment-123 --text "Updated wording."'],
|
|
397183
|
+
"comments.delete": ["superdoc comments delete --id comment-123"],
|
|
397184
|
+
"trackChanges.list": ["superdoc track-changes list"],
|
|
397185
|
+
"trackChanges.get": ["superdoc track-changes get --id tc-123"],
|
|
397186
|
+
"trackChanges.decide": [`superdoc track-changes decide --decision accept --target-json '{"id":"tc-123"}'`],
|
|
397187
|
+
"history.get": ["superdoc history get"],
|
|
397188
|
+
"history.undo": ["superdoc history undo"],
|
|
397189
|
+
"history.redo": ["superdoc history redo"],
|
|
397190
|
+
"mutations.apply": [
|
|
397191
|
+
`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"}}}]'`
|
|
397192
|
+
],
|
|
397193
|
+
"mutations.preview": [
|
|
397194
|
+
`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"}}}]'`
|
|
397195
|
+
],
|
|
397196
|
+
"create.tableOfContents": [
|
|
397197
|
+
"superdoc create table-of-contents",
|
|
397198
|
+
`superdoc create table-of-contents --at-json '{"kind":"documentStart"}'`
|
|
397199
|
+
],
|
|
397200
|
+
"capabilities.get": ["superdoc capabilities"]
|
|
397201
|
+
};
|
|
397202
|
+
});
|
|
397203
|
+
|
|
396334
397204
|
// src/cli/commands.ts
|
|
396335
397205
|
function buildDocBackedSpec(docApiId, cliOpId) {
|
|
396336
397206
|
const tokens = cliCommandTokens(cliOpId);
|
|
@@ -396346,7 +397216,7 @@ function buildDocBackedSpec(docApiId, cliOpId) {
|
|
|
396346
397216
|
requiresDocumentContext: cliRequiresDocumentContext(cliOpId),
|
|
396347
397217
|
alias: false,
|
|
396348
397218
|
canonicalKey: key3,
|
|
396349
|
-
examples: []
|
|
397219
|
+
examples: DOC_COMMAND_EXAMPLES[docApiId] ?? []
|
|
396350
397220
|
};
|
|
396351
397221
|
}
|
|
396352
397222
|
function buildCliOnlySpec(cliOnlyOp, cliOpId) {
|
|
@@ -396382,6 +397252,13 @@ function buildAllSpecs() {
|
|
|
396382
397252
|
}
|
|
396383
397253
|
function buildHelpText() {
|
|
396384
397254
|
const lines = ["Usage: superdoc <command> [options]", ""];
|
|
397255
|
+
lines.push("Common tasks:");
|
|
397256
|
+
lines.push(" Find mutation target → query match");
|
|
397257
|
+
lines.push(" Insert between list items → lists insert");
|
|
397258
|
+
lines.push(" Create a paragraph → create paragraph");
|
|
397259
|
+
lines.push(" Insert inline text → insert");
|
|
397260
|
+
lines.push(" Batch formatting changes → mutations apply");
|
|
397261
|
+
lines.push("");
|
|
396385
397262
|
const categories = new Map;
|
|
396386
397263
|
for (const spec of CLI_COMMAND_SPECS) {
|
|
396387
397264
|
if (spec.alias)
|
|
@@ -396423,6 +397300,7 @@ var init_commands = __esm(() => {
|
|
|
396423
397300
|
init_src();
|
|
396424
397301
|
init_operation_set();
|
|
396425
397302
|
init_helper_commands();
|
|
397303
|
+
init_command_examples();
|
|
396426
397304
|
init_operation_set();
|
|
396427
397305
|
CLI_ONLY_OVERRIDES = {
|
|
396428
397306
|
open: { mutates: true, examples: ["superdoc open my-doc.docx", "superdoc open my-doc.docx --session my-session"] },
|
|
@@ -396716,8 +397594,7 @@ var init_operation_params = __esm(() => {
|
|
|
396716
397594
|
name: "dryRun",
|
|
396717
397595
|
kind: "flag",
|
|
396718
397596
|
flag: "dry-run",
|
|
396719
|
-
type: "boolean"
|
|
396720
|
-
agentVisible: false
|
|
397597
|
+
type: "boolean"
|
|
396721
397598
|
};
|
|
396722
397599
|
CHANGE_MODE_PARAM = {
|
|
396723
397600
|
name: "changeMode",
|
|
@@ -396730,8 +397607,7 @@ var init_operation_params = __esm(() => {
|
|
|
396730
397607
|
name: "expectedRevision",
|
|
396731
397608
|
kind: "flag",
|
|
396732
397609
|
flag: "expected-revision",
|
|
396733
|
-
type: "number"
|
|
396734
|
-
agentVisible: false
|
|
397610
|
+
type: "number"
|
|
396735
397611
|
};
|
|
396736
397612
|
USER_NAME_PARAM = {
|
|
396737
397613
|
name: "userName",
|
|
@@ -396745,7 +397621,7 @@ var init_operation_params = __esm(() => {
|
|
|
396745
397621
|
flag: "user-email",
|
|
396746
397622
|
type: "string"
|
|
396747
397623
|
};
|
|
396748
|
-
AGENT_HIDDEN_PARAM_NAMES = new Set(["out"
|
|
397624
|
+
AGENT_HIDDEN_PARAM_NAMES = new Set(["out"]);
|
|
396749
397625
|
OPERATION_CONSTRAINTS = {
|
|
396750
397626
|
"doc.find": {
|
|
396751
397627
|
requiresOneOf: [["type", "query"]],
|
|
@@ -396877,10 +397753,19 @@ var init_operation_params = __esm(() => {
|
|
|
396877
397753
|
{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" },
|
|
396878
397754
|
...LIST_TARGET_FLAT_PARAMS
|
|
396879
397755
|
],
|
|
397756
|
+
"doc.blocks.list": [
|
|
397757
|
+
{ name: "offset", kind: "flag", flag: "offset", type: "number" },
|
|
397758
|
+
{ name: "limit", kind: "flag", flag: "limit", type: "number" },
|
|
397759
|
+
{ name: "nodeTypes", kind: "jsonFlag", flag: "node-types-json", type: "json" }
|
|
397760
|
+
],
|
|
396880
397761
|
"doc.blocks.delete": [
|
|
396881
397762
|
{ name: "nodeType", kind: "flag", flag: "node-type", type: "string" },
|
|
396882
397763
|
{ name: "nodeId", kind: "flag", flag: "node-id", type: "string" }
|
|
396883
397764
|
],
|
|
397765
|
+
"doc.blocks.deleteRange": [
|
|
397766
|
+
{ name: "start", kind: "jsonFlag", flag: "start-json", type: "json" },
|
|
397767
|
+
{ name: "end", kind: "jsonFlag", flag: "end-json", type: "json" }
|
|
397768
|
+
],
|
|
396884
397769
|
"doc.create.paragraph": [{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" }],
|
|
396885
397770
|
"doc.create.heading": [{ name: "input", kind: "jsonFlag", flag: "input-json", type: "json" }]
|
|
396886
397771
|
};
|
|
@@ -397396,6 +398281,7 @@ var init_introspection_dispatch = __esm(() => {
|
|
|
397396
398281
|
document: {
|
|
397397
398282
|
path: metadata.sourcePath,
|
|
397398
398283
|
source: metadata.source,
|
|
398284
|
+
sourceByteLength: metadata.sourceSnapshot?.size ?? null,
|
|
397399
398285
|
byteLength: byteLength3,
|
|
397400
398286
|
revision: metadata.revision
|
|
397401
398287
|
},
|
|
@@ -397410,6 +398296,9 @@ var init_introspection_dispatch = __esm(() => {
|
|
|
397410
398296
|
`Context: ${metadata.contextId}`,
|
|
397411
398297
|
`Default: ${activeSessionId ?? "<none>"}`,
|
|
397412
398298
|
`Document: ${metadata.sourcePath ?? "<stdin>"}`,
|
|
398299
|
+
`Source: ${metadata.source}`,
|
|
398300
|
+
metadata.sourceSnapshot ? `Source size: ${metadata.sourceSnapshot.size} bytes` : undefined,
|
|
398301
|
+
`Working size: ${byteLength3} bytes`,
|
|
397413
398302
|
`Session Type: ${metadata.sessionType}`,
|
|
397414
398303
|
metadata.collaboration ? `Collab Doc ID: ${metadata.collaboration.documentId}` : undefined,
|
|
397415
398304
|
`Revision: ${metadata.revision}`,
|
|
@@ -397475,13 +398364,19 @@ function ensureBlockTarget(value2, path3) {
|
|
|
397475
398364
|
async function buildFlatInput(parsed, commandName) {
|
|
397476
398365
|
const text9 = getStringOption(parsed, "text");
|
|
397477
398366
|
const at = parseAtFlag(getStringOption(parsed, "at"), commandName);
|
|
398367
|
+
const atJson = await resolveJsonInput(parsed, "at");
|
|
397478
398368
|
const beforePayload = await resolveJsonInput(parsed, "before-address");
|
|
397479
398369
|
const afterPayload = await resolveJsonInput(parsed, "after-address");
|
|
397480
|
-
|
|
397481
|
-
|
|
398370
|
+
const locationForms = [at, atJson, beforePayload, afterPayload].filter((v) => v != null);
|
|
398371
|
+
if (locationForms.length > 1) {
|
|
398372
|
+
throw new CliError("INVALID_ARGUMENT", `${commandName}: use only one of --at, --at-json, --before-address-json, or --after-address-json.`);
|
|
397482
398373
|
}
|
|
397483
|
-
if (
|
|
397484
|
-
|
|
398374
|
+
if (atJson != null) {
|
|
398375
|
+
const validated = validateCreateParagraphInput({ at: atJson, text: text9 }, "input");
|
|
398376
|
+
if (!validated.at) {
|
|
398377
|
+
throw new CliError("VALIDATION_ERROR", `${commandName}: --at-json produced an empty location. Provide a valid location object.`);
|
|
398378
|
+
}
|
|
398379
|
+
return validated;
|
|
397485
398380
|
}
|
|
397486
398381
|
if (beforePayload != null) {
|
|
397487
398382
|
return {
|
|
@@ -397509,7 +398404,7 @@ async function buildFlatInput(parsed, commandName) {
|
|
|
397509
398404
|
async function resolveCreateParagraphInput(parsed, commandName) {
|
|
397510
398405
|
const inputJson = await resolveJsonInput(parsed, "input");
|
|
397511
398406
|
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;
|
|
398407
|
+
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
398408
|
if (inputProvided && hasFlatFlags) {
|
|
397514
398409
|
throw new CliError("INVALID_ARGUMENT", `${commandName}: --input-json/--input-file cannot be combined with flat create flags.`);
|
|
397515
398410
|
}
|
|
@@ -398066,6 +398961,8 @@ async function parseWrapperOperationInput(operationId, tokens, commandName, opti
|
|
|
398066
398961
|
{ name: "input-file", type: "string" },
|
|
398067
398962
|
{ name: "text", type: "string" },
|
|
398068
398963
|
{ name: "at", type: "string" },
|
|
398964
|
+
{ name: "at-json", type: "string" },
|
|
398965
|
+
{ name: "at-file", type: "string" },
|
|
398069
398966
|
{ name: "before-address-json", type: "string" },
|
|
398070
398967
|
{ name: "before-address-file", type: "string" },
|
|
398071
398968
|
{ name: "after-address-json", type: "string" },
|
|
@@ -398321,7 +399218,7 @@ async function runOpen(tokens, context) {
|
|
|
398321
399218
|
document: {
|
|
398322
399219
|
path: metadata.sourcePath,
|
|
398323
399220
|
source: metadata.source,
|
|
398324
|
-
byteLength:
|
|
399221
|
+
byteLength: opened.meta.byteLength,
|
|
398325
399222
|
revision: metadata.revision
|
|
398326
399223
|
},
|
|
398327
399224
|
dirty: metadata.dirty,
|