@superdoc-dev/cli 0.7.0-next.13 → 0.7.0-next.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1003 -564
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -1241,7 +1241,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
1241
1241
|
INTENT_GROUP_META = {
|
|
1242
1242
|
search: {
|
|
1243
1243
|
toolName: "superdoc_search",
|
|
1244
|
-
description: "
|
|
1244
|
+
description: "Find text patterns or nodes in the document and get ref handles for targeting edits and formatting. " + "Refs expire after any mutation that changes the document. Re-search before the next edit when using individual tools (superdoc_edit, superdoc_format). " + 'Within a superdoc_mutations batch, selectors in "where" clauses resolve automatically at compile time; no manual re-searching needed between steps. ' + "Text search returns handle.ref covering only the matched substring. Node search finds blocks by type (paragraph, heading, table, listItem, etc.). " + 'The "require" parameter controls match cardinality: "first" returns one match, "all" returns every match, "exactlyOne" fails if not exactly one match. ' + 'Supports scoping via "within" to search inside a single block. ' + "Do NOT use regex or markdown formatting markers (#, **, etc.) in search patterns; patterns are plain text only. " + "Do NOT use this tool when you already have a ref from superdoc_get_content blocks or superdoc_create; use that ref directly.",
|
|
1245
1245
|
inputExamples: [
|
|
1246
1246
|
{ select: { type: "text", pattern: "Introduction" }, require: "first" },
|
|
1247
1247
|
{ select: { type: "text", pattern: "total amount" }, require: "all" },
|
|
@@ -1255,9 +1255,10 @@ var init_operation_definitions = __esm(() => {
|
|
|
1255
1255
|
},
|
|
1256
1256
|
get_content: {
|
|
1257
1257
|
toolName: "superdoc_get_content",
|
|
1258
|
-
description: "Read document content in various formats. Call this first in any workflow to understand document structure before making edits. " + 'Action "blocks" returns structured block data with nodeId, nodeType, textPreview, formatting properties (fontFamily, fontSize, color, bold, underline, alignment), and ref handles for immediate use with superdoc_edit or superdoc_format. ' + 'Action "text" and "markdown" return the full document as plain text or Markdown. Action "html" returns HTML. ' + 'Action "info" returns document metadata: word count, paragraph count, page count, outline, available styles, and capability flags. ' + 'The "blocks" action supports pagination via "offset" and "limit", and filtering via "nodeTypes". Other actions ignore these parameters. ' + "This tool never modifies the document. " + "Do NOT call superdoc_edit or superdoc_format without first reading blocks to get valid refs and formatting reference values.",
|
|
1258
|
+
description: "Read document content in various formats. Call this first in any workflow to understand document structure before making edits. " + 'Action "blocks" returns structured block data with nodeId, nodeType, textPreview, optional full text when includeText:true, formatting properties (fontFamily, fontSize, color, bold, underline, alignment), and ref handles for immediate use with superdoc_edit or superdoc_format. ' + 'When you need to evaluate or rewrite existing paragraphs or clauses, prefer action "blocks" with includeText:true so you can identify the correct block and then target it by nodeId. ' + 'Action "text" and "markdown" return the full document as plain text or Markdown. Action "html" returns HTML. ' + 'Action "info" returns document metadata: word count, paragraph count, page count, outline, available styles, and capability flags. ' + 'The "blocks" action supports pagination via "offset" and "limit", and filtering via "nodeTypes". Other actions ignore these parameters. ' + "This tool never modifies the document. " + "Do NOT call superdoc_edit or superdoc_format without first reading blocks to get valid refs and formatting reference values.",
|
|
1259
1259
|
inputExamples: [
|
|
1260
1260
|
{ action: "blocks" },
|
|
1261
|
+
{ action: "blocks", includeText: true, offset: 0, limit: 20 },
|
|
1261
1262
|
{ action: "blocks", offset: 0, limit: 20, nodeTypes: ["heading", "paragraph"] },
|
|
1262
1263
|
{ action: "text" },
|
|
1263
1264
|
{ action: "info" }
|
|
@@ -1265,18 +1266,36 @@ var init_operation_definitions = __esm(() => {
|
|
|
1265
1266
|
},
|
|
1266
1267
|
edit: {
|
|
1267
1268
|
toolName: "superdoc_edit",
|
|
1268
|
-
description: "
|
|
1269
|
+
description: "The primary tool for inserting content into documents. " + 'ALWAYS use action "insert" with type "markdown" to create headings, paragraphs, or any block content — this is faster and creates proper document structure in one call. Do NOT use superdoc_create for headings or paragraphs. ' + "The markdown parser creates headings from # markers (# = Heading1, ## = Heading2), bold from **text**, italic from *text*, and numbered/bullet lists. " + 'Position markdown inserts with "target" (a BlockNodeAddress like {kind:"block", nodeType, nodeId}) and "placement" (before, after, insideStart, insideEnd). Without a target, content appends at the end of the document. ' + "IMPORTANT: After a markdown insert, analyze the document context (what kind of document, how titles and body text are styled) and follow up with ONE superdoc_mutations call to format inserted blocks so they look like they belong. " + 'Each format.apply step accepts "inline" (fontFamily, fontSize, bold, underline, color), "alignment", and "scope" in the same step. ' + 'Use scope: "block" so formatting covers the entire paragraph. ' + "Copy the exact property values from the existing get_content blocks (fontFamily, fontSize, color, alignment, bold, underline). Do NOT invent values — use what the blocks show. " + 'Also supports replace, delete, and undo/redo. For replace and delete, pass a "ref" from superdoc_search or superdoc_get_content blocks. ' + "A search ref covers only the matched substring; a block ref covers the entire block text, so use block refs when rewriting or shortening whole paragraphs. " + 'For multi-step redlines or whole-clause rewrites, prefer superdoc_mutations with where:{by:"block", nodeType, nodeId} from superdoc_get_content action "blocks" includeText:true rather than relying on text selectors. ' + "Refs expire after any mutation; always re-search before the next edit. " + "For 2+ edits that must succeed or fail atomically, use superdoc_mutations instead. " + 'Supports "dryRun" to preview changes and "changeMode: tracked" to record edits as tracked changes (not supported for markdown/html inserts). ' + 'Do NOT build "target" objects manually when a ref is available; prefer "ref" for simpler, more reliable targeting.',
|
|
1269
1270
|
inputExamples: [
|
|
1271
|
+
{
|
|
1272
|
+
action: "insert",
|
|
1273
|
+
type: "markdown",
|
|
1274
|
+
target: { kind: "block", nodeType: "paragraph", nodeId: "<nodeId>" },
|
|
1275
|
+
placement: "before",
|
|
1276
|
+
value: `# Executive Summary
|
|
1277
|
+
|
|
1278
|
+
This agreement sets forth the principal terms...`
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
action: "insert",
|
|
1282
|
+
type: "markdown",
|
|
1283
|
+
value: `# Section Title
|
|
1284
|
+
|
|
1285
|
+
Paragraph content here.
|
|
1286
|
+
|
|
1287
|
+
# Another Section
|
|
1288
|
+
|
|
1289
|
+
More content with **bold** and *italic*.`
|
|
1290
|
+
},
|
|
1270
1291
|
{ action: "replace", ref: "<handle.ref>", text: "new text here" },
|
|
1271
|
-
{ action: "insert", value: "Appended paragraph.", placement: "insideEnd" },
|
|
1272
|
-
{ action: "insert", ref: "<block.ref>", value: "Inserted before.", placement: "before" },
|
|
1273
1292
|
{ action: "delete", ref: "<handle.ref>" },
|
|
1274
1293
|
{ action: "undo" }
|
|
1275
1294
|
]
|
|
1276
1295
|
},
|
|
1277
1296
|
create: {
|
|
1278
1297
|
toolName: "superdoc_create",
|
|
1279
|
-
description:
|
|
1298
|
+
description: 'IMPORTANT: For headings and paragraphs, use superdoc_edit with type "markdown" instead — it is faster, creates proper styles, and handles positioning via target + placement. ' + "Only use superdoc_create for tables or when markdown cannot express the content. " + "Creates a single paragraph, heading, or table. Returns nodeId and ref for the created block. " + "After creating, the returned ref is valid for ONE immediate superdoc_format call. For subsequent operations, re-fetch blocks with superdoc_get_content to get fresh refs (refs expire after any mutation). " + 'When the user asks for a "heading", use action "heading" with a level (default 1). Use action "paragraph" for regular body text. ' + 'Position with "at": {kind:"documentEnd"} (default), {kind:"documentStart"}, or {kind:"after"/"before", target:{kind:"block", nodeType, nodeId}} for relative placement. ' + 'When creating multiple items in sequence, use the previous response nodeId as the next "at" target to maintain correct ordering. ' + 'Do NOT use newlines in "text" to create multiple paragraphs; call this tool separately for each one.',
|
|
1280
1299
|
inputExamples: [
|
|
1281
1300
|
{ action: "paragraph", text: "New paragraph content.", at: { kind: "documentEnd" } },
|
|
1282
1301
|
{
|
|
@@ -1295,7 +1314,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
1295
1314
|
},
|
|
1296
1315
|
format: {
|
|
1297
1316
|
toolName: "superdoc_format",
|
|
1298
|
-
description: "Change text and paragraph formatting.
|
|
1317
|
+
description: "Change text and paragraph formatting. " + 'To format multiple items at once, use superdoc_mutations with format.apply steps instead of calling this tool repeatedly. Use require "all" with a node selector to format every heading or paragraph in one batch. ' + "Use this tool for single-item formatting when you have a valid ref or nodeId. " + 'Action "inline" applies character formatting (bold, italic, underline, color, fontSize, fontFamily, highlight, strike, vertAlign) to a text range via "ref". ' + 'Action "set_style" applies a named paragraph style by styleId (get available styles from superdoc_get_content info). ' + 'Actions "set_alignment", "set_indentation", "set_spacing", "set_direction", and "set_flow_options" change paragraph-level properties and require a block target: {kind:"block", nodeType:"paragraph", nodeId:"<nodeId>"}, NOT a ref. ' + 'Use "set_flow_options" with pageBreakBefore:true to start a paragraph on a new page. ' + 'Supports "dryRun" and "changeMode: tracked" for inline formatting. Paragraph-level actions do NOT support tracked changes. ' + "Do NOT use a search ref for paragraph-level actions; they require a block target with nodeId. " + 'Do NOT use {kind:"block", start:{kind:"nodeEdge",...}} or selection-like structures for paragraph actions. ONLY {kind:"block", nodeType, nodeId} is accepted. ' + "Do NOT issue multiple superdoc_format calls in parallel; each call invalidates refs for subsequent calls.",
|
|
1299
1318
|
inputExamples: [
|
|
1300
1319
|
{ action: "inline", ref: "<handle.ref>", inline: { bold: true } },
|
|
1301
1320
|
{
|
|
@@ -1373,7 +1392,7 @@ var init_operation_definitions = __esm(() => {
|
|
|
1373
1392
|
section: { toolName: "superdoc_section", description: "Page layout, margins, columns" },
|
|
1374
1393
|
mutations: {
|
|
1375
1394
|
toolName: "superdoc_mutations",
|
|
1376
|
-
description: "All steps succeed or all fail; no partial application. " + "Execute multiple
|
|
1395
|
+
description: "All steps succeed or all fail; no partial application. " + "Execute multiple operations atomically in one batch. Use this for any workflow needing 2+ changes. " + "Supported step types: text (text.rewrite, text.insert, text.delete), format (format.apply), create (create.heading, create.paragraph, create.table), assert. " + 'Each step has an id, an op, a "where" clause for targeting ({by:"select", select:{...}, require:"first"|"exactlyOne"|"all"} or {by:"ref", ref:"..."} or {by:"block", nodeType:"paragraph", nodeId:"..."}), and "args" with operation-specific parameters. ' + 'Use {by:"block", nodeType, nodeId} when you want to rewrite, delete, format, or anchor against a whole known block from superdoc_get_content action "blocks" without relying on text matching. ' + 'For full-paragraph or full-clause rewrites, first call superdoc_get_content with action:"blocks" and includeText:true, then rewrite the matching block by nodeId. ' + 'Use {by:"select"} only for substring edits, discovery, or insertion relative to a sentence fragment; do NOT use a shortened text selector to replace an entire known block. ' + 'For create steps, "where" targets an existing anchor block and args.position ("before" or "after") controls placement. Sequential creates targeting the same anchor maintain correct order via internal position mapping. ' + 'For format.apply with require "all", use a node selector to format every heading or paragraph at once: {by:"select", select:{type:"node", nodeType:"heading"}, require:"all"}. ' + "Selectors resolve at compile time (before execution). This means format.apply steps CANNOT target content created by earlier create steps in the same batch. Split creates and formatting into separate batches: first a mutations call with creates, then a mutations call with format.apply. " + 'Action "preview" dry-runs the plan. Action "apply" executes it. ' + "If a selector matches nothing, the failure reports the step id plus selector details so you can retry with a shorter or more distinctive anchor. " + "Do NOT create two steps that target overlapping text in the same block; combine them into a single text.rewrite step.",
|
|
1377
1396
|
inputExamples: [
|
|
1378
1397
|
{
|
|
1379
1398
|
action: "apply",
|
|
@@ -1393,6 +1412,29 @@ var init_operation_definitions = __esm(() => {
|
|
|
1393
1412
|
args: {}
|
|
1394
1413
|
}
|
|
1395
1414
|
]
|
|
1415
|
+
},
|
|
1416
|
+
{
|
|
1417
|
+
action: "apply",
|
|
1418
|
+
steps: [
|
|
1419
|
+
{
|
|
1420
|
+
id: "r1",
|
|
1421
|
+
op: "text.rewrite",
|
|
1422
|
+
where: { by: "block", nodeType: "paragraph", nodeId: "<nodeId>" },
|
|
1423
|
+
args: { replacement: { text: "Updated clause text." } }
|
|
1424
|
+
},
|
|
1425
|
+
{
|
|
1426
|
+
id: "f1",
|
|
1427
|
+
op: "format.apply",
|
|
1428
|
+
where: { by: "select", select: { type: "node", nodeType: "heading" }, require: "all" },
|
|
1429
|
+
args: { inline: { color: "#FF0000" } }
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
id: "f2",
|
|
1433
|
+
op: "format.apply",
|
|
1434
|
+
where: { by: "select", select: { type: "text", pattern: "Confidential Information" }, require: "all" },
|
|
1435
|
+
args: { inline: { bold: true } }
|
|
1436
|
+
}
|
|
1437
|
+
]
|
|
1396
1438
|
}
|
|
1397
1439
|
]
|
|
1398
1440
|
}
|
|
@@ -1735,8 +1777,8 @@ var init_operation_definitions = __esm(() => {
|
|
|
1735
1777
|
},
|
|
1736
1778
|
"blocks.list": {
|
|
1737
1779
|
memberPath: "blocks.list",
|
|
1738
|
-
description: "List top-level blocks in document order with IDs, types, and text
|
|
1739
|
-
expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, isEmpty), and the current document revision.",
|
|
1780
|
+
description: "List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Supports pagination via offset/limit and optional nodeType filtering.",
|
|
1781
|
+
expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, optional text, isEmpty), and the current document revision.",
|
|
1740
1782
|
requiresDocumentContext: true,
|
|
1741
1783
|
metadata: readOperation({
|
|
1742
1784
|
throws: ["INVALID_INPUT"]
|
|
@@ -9737,6 +9779,10 @@ var init_schemas = __esm(() => {
|
|
|
9737
9779
|
type: "array",
|
|
9738
9780
|
items: { enum: [...blockNodeTypeValues] },
|
|
9739
9781
|
description: "Filter by block types (e.g. ['paragraph', 'heading']). Omit for all types."
|
|
9782
|
+
},
|
|
9783
|
+
includeText: {
|
|
9784
|
+
type: "boolean",
|
|
9785
|
+
description: "When true, includes the full flattened block text in each block entry."
|
|
9740
9786
|
}
|
|
9741
9787
|
}),
|
|
9742
9788
|
output: objectSchema({
|
|
@@ -9748,6 +9794,10 @@ var init_schemas = __esm(() => {
|
|
|
9748
9794
|
nodeId: { type: "string", description: "Block ID for targeting with other tools." },
|
|
9749
9795
|
nodeType: { enum: [...blockNodeTypeValues] },
|
|
9750
9796
|
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] },
|
|
9797
|
+
text: {
|
|
9798
|
+
oneOf: [{ type: "string" }, { type: "null" }],
|
|
9799
|
+
description: "Full flattened block text when requested with includeText."
|
|
9800
|
+
},
|
|
9751
9801
|
isEmpty: { type: "boolean" },
|
|
9752
9802
|
styleId: { oneOf: [{ type: "string" }, { type: "null" }], description: "Named paragraph style." },
|
|
9753
9803
|
fontFamily: { type: "string", description: "Font family from first text run." },
|
|
@@ -11097,13 +11147,27 @@ var init_schemas = __esm(() => {
|
|
|
11097
11147
|
by: { const: "target", type: "string" },
|
|
11098
11148
|
target: selectionTargetSchema
|
|
11099
11149
|
}, ["by", "target"]);
|
|
11100
|
-
const
|
|
11101
|
-
|
|
11102
|
-
|
|
11103
|
-
|
|
11104
|
-
|
|
11105
|
-
|
|
11106
|
-
|
|
11150
|
+
const blockWhereSchema = objectSchema({
|
|
11151
|
+
by: { const: "block", type: "string" },
|
|
11152
|
+
nodeType: { enum: [...blockNodeTypeValues] },
|
|
11153
|
+
nodeId: { type: "string" }
|
|
11154
|
+
}, ["by", "nodeType", "nodeId"]);
|
|
11155
|
+
const stepWhereSchema = {
|
|
11156
|
+
oneOf: [selectWhereSchema, refWhereSchema, targetWhereSchema, blockWhereSchema]
|
|
11157
|
+
};
|
|
11158
|
+
const insertWhereSchema = {
|
|
11159
|
+
oneOf: [
|
|
11160
|
+
objectSchema({
|
|
11161
|
+
by: { const: "select", type: "string" },
|
|
11162
|
+
select: { oneOf: [textSelectorSchema, nodeSelectorSchema] },
|
|
11163
|
+
within: blockNodeAddressSchema,
|
|
11164
|
+
require: { enum: ["first", "exactlyOne"] }
|
|
11165
|
+
}, ["by", "select", "require"]),
|
|
11166
|
+
refWhereSchema,
|
|
11167
|
+
targetWhereSchema,
|
|
11168
|
+
blockWhereSchema
|
|
11169
|
+
]
|
|
11170
|
+
};
|
|
11107
11171
|
const assertWhereSchema = objectSchema({
|
|
11108
11172
|
by: { const: "select", type: "string" },
|
|
11109
11173
|
select: { oneOf: [textSelectorSchema, nodeSelectorSchema] },
|
|
@@ -11171,9 +11235,22 @@ var init_schemas = __esm(() => {
|
|
|
11171
11235
|
id: { type: "string" },
|
|
11172
11236
|
op: { const: "format.apply", type: "string" },
|
|
11173
11237
|
where: stepWhereSchema,
|
|
11174
|
-
args:
|
|
11175
|
-
|
|
11176
|
-
|
|
11238
|
+
args: {
|
|
11239
|
+
...objectSchema({
|
|
11240
|
+
inline: buildInlineRunPatchSchema(),
|
|
11241
|
+
alignment: {
|
|
11242
|
+
type: "string",
|
|
11243
|
+
enum: ["left", "center", "right", "justify"],
|
|
11244
|
+
description: "Set paragraph alignment on the target block(s). Can be combined with inline formatting in the same step."
|
|
11245
|
+
},
|
|
11246
|
+
scope: {
|
|
11247
|
+
type: "string",
|
|
11248
|
+
enum: ["match", "block"],
|
|
11249
|
+
description: 'When "block", inline formatting expands to cover the entire parent paragraph(s), not just the matched text. Use "block" after markdown inserts to format whole paragraphs with a short identifying pattern. Default: "match".'
|
|
11250
|
+
}
|
|
11251
|
+
}, []),
|
|
11252
|
+
minProperties: 1
|
|
11253
|
+
}
|
|
11177
11254
|
}, ["id", "op", "where", "args"]);
|
|
11178
11255
|
const assertStepSchema = objectSchema({
|
|
11179
11256
|
id: { type: "string" },
|
|
@@ -14408,22 +14485,35 @@ function validateInsertInput(input) {
|
|
|
14408
14485
|
}
|
|
14409
14486
|
}
|
|
14410
14487
|
function validateTextInsertInput(input) {
|
|
14411
|
-
|
|
14412
|
-
|
|
14488
|
+
const contentType = typeof input.type === "string" ? input.type : "text";
|
|
14489
|
+
const isRichContent = contentType === "markdown" || contentType === "html";
|
|
14490
|
+
if ("placement" in input && input.placement !== undefined && !isRichContent) {
|
|
14491
|
+
throw new DocumentApiValidationError("INVALID_INPUT", '"placement" is only valid with structural content input or markdown/html inserts, not with plain "value".', { field: "placement" });
|
|
14413
14492
|
}
|
|
14414
14493
|
if ("nestingPolicy" in input && input.nestingPolicy !== undefined) {
|
|
14415
14494
|
throw new DocumentApiValidationError("INVALID_INPUT", '"nestingPolicy" is only valid with structural content input, not with "value".', { field: "nestingPolicy" });
|
|
14416
14495
|
}
|
|
14417
14496
|
assertNoUnknownFields(input, TEXT_INSERT_ALLOWED_KEYS, "insert");
|
|
14497
|
+
if (isRichContent && "placement" in input && input.placement !== undefined) {
|
|
14498
|
+
if (typeof input.placement !== "string" || !PLACEMENT_VALUES.has(input.placement)) {
|
|
14499
|
+
throw new DocumentApiValidationError("INVALID_INPUT", `placement must be one of: before, after, insideStart, insideEnd. Got "${String(input.placement)}".`, { field: "placement", value: input.placement });
|
|
14500
|
+
}
|
|
14501
|
+
}
|
|
14418
14502
|
const { target, ref: ref2, value, type } = input;
|
|
14419
14503
|
if (target !== undefined && ref2 !== undefined) {
|
|
14420
14504
|
throw new DocumentApiValidationError("INVALID_INPUT", 'Insert input must provide either "target" or "ref", not both.', { fields: ["target", "ref"] });
|
|
14421
14505
|
}
|
|
14422
|
-
if (target !== undefined
|
|
14423
|
-
|
|
14424
|
-
|
|
14425
|
-
|
|
14426
|
-
|
|
14506
|
+
if (target !== undefined) {
|
|
14507
|
+
if (isRichContent) {
|
|
14508
|
+
if (!isSelectionTarget(target) && !isBlockNodeAddress(target)) {
|
|
14509
|
+
throw new DocumentApiValidationError("INVALID_TARGET", "target must be a SelectionTarget or BlockNodeAddress for markdown/html inserts.", { field: "target", value: target });
|
|
14510
|
+
}
|
|
14511
|
+
} else if (!isSelectionTarget(target)) {
|
|
14512
|
+
throw new DocumentApiValidationError("INVALID_TARGET", "target must be a SelectionTarget object.", {
|
|
14513
|
+
field: "target",
|
|
14514
|
+
value: target
|
|
14515
|
+
});
|
|
14516
|
+
}
|
|
14427
14517
|
}
|
|
14428
14518
|
if (ref2 !== undefined && (typeof ref2 !== "string" || ref2 === "")) {
|
|
14429
14519
|
throw new DocumentApiValidationError("INVALID_TARGET", "ref must be a non-empty string.", {
|
|
@@ -14487,7 +14577,7 @@ var init_insert = __esm(() => {
|
|
|
14487
14577
|
init_selection_target_validator();
|
|
14488
14578
|
init_fragment_validator();
|
|
14489
14579
|
init_story_validator();
|
|
14490
|
-
TEXT_INSERT_ALLOWED_KEYS = new Set(["value", "type", "target", "ref", "in"]);
|
|
14580
|
+
TEXT_INSERT_ALLOWED_KEYS = new Set(["value", "type", "target", "ref", "in", "placement"]);
|
|
14491
14581
|
STRUCTURAL_INSERT_ALLOWED_KEYS = new Set(["content", "target", "placement", "nestingPolicy", "in"]);
|
|
14492
14582
|
VALID_INSERT_TYPES = new Set(["text", "markdown", "html"]);
|
|
14493
14583
|
});
|
|
@@ -15347,6 +15437,11 @@ function validateBlocksListInput(input) {
|
|
|
15347
15437
|
}
|
|
15348
15438
|
}
|
|
15349
15439
|
}
|
|
15440
|
+
if (input.includeText != null && typeof input.includeText !== "boolean") {
|
|
15441
|
+
throw new DocumentApiValidationError("INVALID_INPUT", "blocks.list includeText must be a boolean.", {
|
|
15442
|
+
fields: ["includeText"]
|
|
15443
|
+
});
|
|
15444
|
+
}
|
|
15350
15445
|
}
|
|
15351
15446
|
function validateBlocksDeleteInput(input) {
|
|
15352
15447
|
if (!input || typeof input !== "object") {
|
|
@@ -65398,7 +65493,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
|
|
|
65398
65493
|
emptyOptions2 = {};
|
|
65399
65494
|
});
|
|
65400
65495
|
|
|
65401
|
-
// ../../packages/superdoc/dist/chunks/SuperConverter-
|
|
65496
|
+
// ../../packages/superdoc/dist/chunks/SuperConverter-w6yaFRT5.es.js
|
|
65402
65497
|
function getExtensionConfigField(extension$1, field, context = { name: "" }) {
|
|
65403
65498
|
const fieldValue = extension$1.config[field];
|
|
65404
65499
|
if (typeof fieldValue === "function")
|
|
@@ -68822,19 +68917,36 @@ function validateInsertInput2(input) {
|
|
|
68822
68917
|
validateTextInsertInput2(input);
|
|
68823
68918
|
}
|
|
68824
68919
|
function validateTextInsertInput2(input) {
|
|
68825
|
-
|
|
68826
|
-
|
|
68920
|
+
const contentType = typeof input.type === "string" ? input.type : "text";
|
|
68921
|
+
const isRichContent = contentType === "markdown" || contentType === "html";
|
|
68922
|
+
if ("placement" in input && input.placement !== undefined && !isRichContent)
|
|
68923
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", '"placement" is only valid with structural content input or markdown/html inserts, not with plain "value".', { field: "placement" });
|
|
68827
68924
|
if ("nestingPolicy" in input && input.nestingPolicy !== undefined)
|
|
68828
68925
|
throw new DocumentApiValidationError2("INVALID_INPUT", '"nestingPolicy" is only valid with structural content input, not with "value".', { field: "nestingPolicy" });
|
|
68829
68926
|
assertNoUnknownFields3(input, TEXT_INSERT_ALLOWED_KEYS2, "insert");
|
|
68927
|
+
if (isRichContent && "placement" in input && input.placement !== undefined) {
|
|
68928
|
+
if (typeof input.placement !== "string" || !PLACEMENT_VALUES2.has(input.placement))
|
|
68929
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", `placement must be one of: before, after, insideStart, insideEnd. Got "${String(input.placement)}".`, {
|
|
68930
|
+
field: "placement",
|
|
68931
|
+
value: input.placement
|
|
68932
|
+
});
|
|
68933
|
+
}
|
|
68830
68934
|
const { target, ref: ref$1, value, type } = input;
|
|
68831
68935
|
if (target !== undefined && ref$1 !== undefined)
|
|
68832
68936
|
throw new DocumentApiValidationError2("INVALID_INPUT", 'Insert input must provide either "target" or "ref", not both.', { fields: ["target", "ref"] });
|
|
68833
|
-
if (target !== undefined
|
|
68834
|
-
|
|
68835
|
-
|
|
68836
|
-
|
|
68837
|
-
|
|
68937
|
+
if (target !== undefined) {
|
|
68938
|
+
if (isRichContent) {
|
|
68939
|
+
if (!isSelectionTarget2(target) && !isBlockNodeAddress2(target))
|
|
68940
|
+
throw new DocumentApiValidationError2("INVALID_TARGET", "target must be a SelectionTarget or BlockNodeAddress for markdown/html inserts.", {
|
|
68941
|
+
field: "target",
|
|
68942
|
+
value: target
|
|
68943
|
+
});
|
|
68944
|
+
} else if (!isSelectionTarget2(target))
|
|
68945
|
+
throw new DocumentApiValidationError2("INVALID_TARGET", "target must be a SelectionTarget object.", {
|
|
68946
|
+
field: "target",
|
|
68947
|
+
value: target
|
|
68948
|
+
});
|
|
68949
|
+
}
|
|
68838
68950
|
if (ref$1 !== undefined && (typeof ref$1 !== "string" || ref$1 === ""))
|
|
68839
68951
|
throw new DocumentApiValidationError2("INVALID_TARGET", "ref must be a non-empty string.", {
|
|
68840
68952
|
field: "ref",
|
|
@@ -69673,6 +69785,8 @@ function validateBlocksListInput2(input) {
|
|
|
69673
69785
|
nodeType: nt
|
|
69674
69786
|
});
|
|
69675
69787
|
}
|
|
69788
|
+
if (input.includeText != null && typeof input.includeText !== "boolean")
|
|
69789
|
+
throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.list includeText must be a boolean.", { fields: ["includeText"] });
|
|
69676
69790
|
}
|
|
69677
69791
|
function validateBlocksDeleteInput2(input) {
|
|
69678
69792
|
if (!input || typeof input !== "object")
|
|
@@ -117089,7 +117203,7 @@ var isRegExp = (value) => {
|
|
|
117089
117203
|
state.kern = kernNode.attributes["w:val"];
|
|
117090
117204
|
}
|
|
117091
117205
|
}, SuperConverter;
|
|
117092
|
-
var
|
|
117206
|
+
var init_SuperConverter_w6yaFRT5_es = __esm(() => {
|
|
117093
117207
|
init_rolldown_runtime_Bg48TavK_es();
|
|
117094
117208
|
init_jszip_C49i9kUs_es();
|
|
117095
117209
|
init_xml_js_CqGKpaft_es();
|
|
@@ -120363,8 +120477,8 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
120363
120477
|
},
|
|
120364
120478
|
"blocks.list": {
|
|
120365
120479
|
memberPath: "blocks.list",
|
|
120366
|
-
description: "List top-level blocks in document order with IDs, types, and text
|
|
120367
|
-
expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, isEmpty), and the current document revision.",
|
|
120480
|
+
description: "List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Supports pagination via offset/limit and optional nodeType filtering.",
|
|
120481
|
+
expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, optional text, isEmpty), and the current document revision.",
|
|
120368
120482
|
requiresDocumentContext: true,
|
|
120369
120483
|
metadata: readOperation2({ throws: ["INVALID_INPUT"] }),
|
|
120370
120484
|
referenceDocPath: "blocks/list.mdx",
|
|
@@ -128278,6 +128392,10 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
128278
128392
|
type: "array",
|
|
128279
128393
|
items: { enum: [...blockNodeTypeValues2] },
|
|
128280
128394
|
description: "Filter by block types (e.g. ['paragraph', 'heading']). Omit for all types."
|
|
128395
|
+
},
|
|
128396
|
+
includeText: {
|
|
128397
|
+
type: "boolean",
|
|
128398
|
+
description: "When true, includes the full flattened block text in each block entry."
|
|
128281
128399
|
}
|
|
128282
128400
|
}), objectSchema2({
|
|
128283
128401
|
total: { type: "number" },
|
|
@@ -128291,6 +128409,10 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
128291
128409
|
},
|
|
128292
128410
|
nodeType: { enum: [...blockNodeTypeValues2] },
|
|
128293
128411
|
textPreview: { oneOf: [{ type: "string" }, { type: "null" }] },
|
|
128412
|
+
text: {
|
|
128413
|
+
oneOf: [{ type: "string" }, { type: "null" }],
|
|
128414
|
+
description: "Full flattened block text when requested with includeText."
|
|
128415
|
+
},
|
|
128294
128416
|
isEmpty: { type: "boolean" },
|
|
128295
128417
|
styleId: {
|
|
128296
128418
|
oneOf: [{ type: "string" }, { type: "null" }],
|
|
@@ -129449,7 +129571,57 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
129449
129571
|
const queryMatchMetaSchema = objectSchema2({ effectiveResolved: { type: "boolean" } }, ["effectiveResolved"]);
|
|
129450
129572
|
return discoveryResultSchema2({ oneOf: [textMatchItemSchema, nodeMatchItemSchema] }, queryMatchMetaSchema);
|
|
129451
129573
|
})(), { ...(() => {
|
|
129574
|
+
const selectWhereSchema = objectSchema2({
|
|
129575
|
+
by: {
|
|
129576
|
+
const: "select",
|
|
129577
|
+
type: "string"
|
|
129578
|
+
},
|
|
129579
|
+
select: { oneOf: [textSelectorSchema2, nodeSelectorSchema2] },
|
|
129580
|
+
within: blockNodeAddressSchema2,
|
|
129581
|
+
require: { enum: [
|
|
129582
|
+
"first",
|
|
129583
|
+
"exactlyOne",
|
|
129584
|
+
"all"
|
|
129585
|
+
] }
|
|
129586
|
+
}, [
|
|
129587
|
+
"by",
|
|
129588
|
+
"select",
|
|
129589
|
+
"require"
|
|
129590
|
+
]);
|
|
129591
|
+
const refWhereSchema = objectSchema2({
|
|
129592
|
+
by: {
|
|
129593
|
+
const: "ref",
|
|
129594
|
+
type: "string"
|
|
129595
|
+
},
|
|
129596
|
+
ref: { type: "string" },
|
|
129597
|
+
within: blockNodeAddressSchema2
|
|
129598
|
+
}, ["by", "ref"]);
|
|
129599
|
+
const targetWhereSchema = objectSchema2({
|
|
129600
|
+
by: {
|
|
129601
|
+
const: "target",
|
|
129602
|
+
type: "string"
|
|
129603
|
+
},
|
|
129604
|
+
target: selectionTargetSchema2
|
|
129605
|
+
}, ["by", "target"]);
|
|
129606
|
+
const blockWhereSchema = objectSchema2({
|
|
129607
|
+
by: {
|
|
129608
|
+
const: "block",
|
|
129609
|
+
type: "string"
|
|
129610
|
+
},
|
|
129611
|
+
nodeType: { enum: [...blockNodeTypeValues2] },
|
|
129612
|
+
nodeId: { type: "string" }
|
|
129613
|
+
}, [
|
|
129614
|
+
"by",
|
|
129615
|
+
"nodeType",
|
|
129616
|
+
"nodeId"
|
|
129617
|
+
]);
|
|
129452
129618
|
const stepWhereSchema = { oneOf: [
|
|
129619
|
+
selectWhereSchema,
|
|
129620
|
+
refWhereSchema,
|
|
129621
|
+
targetWhereSchema,
|
|
129622
|
+
blockWhereSchema
|
|
129623
|
+
] };
|
|
129624
|
+
const insertWhereSchema = { oneOf: [
|
|
129453
129625
|
objectSchema2({
|
|
129454
129626
|
by: {
|
|
129455
129627
|
const: "select",
|
|
@@ -129457,45 +129629,16 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
129457
129629
|
},
|
|
129458
129630
|
select: { oneOf: [textSelectorSchema2, nodeSelectorSchema2] },
|
|
129459
129631
|
within: blockNodeAddressSchema2,
|
|
129460
|
-
require: { enum: [
|
|
129461
|
-
"first",
|
|
129462
|
-
"exactlyOne",
|
|
129463
|
-
"all"
|
|
129464
|
-
] }
|
|
129632
|
+
require: { enum: ["first", "exactlyOne"] }
|
|
129465
129633
|
}, [
|
|
129466
129634
|
"by",
|
|
129467
129635
|
"select",
|
|
129468
129636
|
"require"
|
|
129469
129637
|
]),
|
|
129470
|
-
|
|
129471
|
-
|
|
129472
|
-
|
|
129473
|
-
type: "string"
|
|
129474
|
-
},
|
|
129475
|
-
ref: { type: "string" },
|
|
129476
|
-
within: blockNodeAddressSchema2
|
|
129477
|
-
}, ["by", "ref"]),
|
|
129478
|
-
objectSchema2({
|
|
129479
|
-
by: {
|
|
129480
|
-
const: "target",
|
|
129481
|
-
type: "string"
|
|
129482
|
-
},
|
|
129483
|
-
target: selectionTargetSchema2
|
|
129484
|
-
}, ["by", "target"])
|
|
129638
|
+
refWhereSchema,
|
|
129639
|
+
targetWhereSchema,
|
|
129640
|
+
blockWhereSchema
|
|
129485
129641
|
] };
|
|
129486
|
-
const insertWhereSchema = objectSchema2({
|
|
129487
|
-
by: {
|
|
129488
|
-
const: "select",
|
|
129489
|
-
type: "string"
|
|
129490
|
-
},
|
|
129491
|
-
select: { oneOf: [textSelectorSchema2, nodeSelectorSchema2] },
|
|
129492
|
-
within: blockNodeAddressSchema2,
|
|
129493
|
-
require: { enum: ["first", "exactlyOne"] }
|
|
129494
|
-
}, [
|
|
129495
|
-
"by",
|
|
129496
|
-
"select",
|
|
129497
|
-
"require"
|
|
129498
|
-
]);
|
|
129499
129642
|
const assertWhereSchema = objectSchema2({
|
|
129500
129643
|
by: {
|
|
129501
129644
|
const: "select",
|
|
@@ -129626,7 +129769,27 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
129626
129769
|
type: "string"
|
|
129627
129770
|
},
|
|
129628
129771
|
where: stepWhereSchema,
|
|
129629
|
-
args:
|
|
129772
|
+
args: {
|
|
129773
|
+
...objectSchema2({
|
|
129774
|
+
inline: buildInlineRunPatchSchema2(),
|
|
129775
|
+
alignment: {
|
|
129776
|
+
type: "string",
|
|
129777
|
+
enum: [
|
|
129778
|
+
"left",
|
|
129779
|
+
"center",
|
|
129780
|
+
"right",
|
|
129781
|
+
"justify"
|
|
129782
|
+
],
|
|
129783
|
+
description: "Set paragraph alignment on the target block(s). Can be combined with inline formatting in the same step."
|
|
129784
|
+
},
|
|
129785
|
+
scope: {
|
|
129786
|
+
type: "string",
|
|
129787
|
+
enum: ["match", "block"],
|
|
129788
|
+
description: 'When "block", inline formatting expands to cover the entire parent paragraph(s), not just the matched text. Use "block" after markdown inserts to format whole paragraphs with a short identifying pattern. Default: "match".'
|
|
129789
|
+
}
|
|
129790
|
+
}, []),
|
|
129791
|
+
minProperties: 1
|
|
129792
|
+
}
|
|
129630
129793
|
}, [
|
|
129631
129794
|
"id",
|
|
129632
129795
|
"op",
|
|
@@ -131595,7 +131758,8 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
131595
131758
|
"type",
|
|
131596
131759
|
"target",
|
|
131597
131760
|
"ref",
|
|
131598
|
-
"in"
|
|
131761
|
+
"in",
|
|
131762
|
+
"placement"
|
|
131599
131763
|
]);
|
|
131600
131764
|
STRUCTURAL_INSERT_ALLOWED_KEYS2 = new Set([
|
|
131601
131765
|
"content",
|
|
@@ -154285,7 +154449,7 @@ var init_SuperConverter_CWhofwLf_es = __esm(() => {
|
|
|
154285
154449
|
};
|
|
154286
154450
|
});
|
|
154287
154451
|
|
|
154288
|
-
// ../../packages/superdoc/dist/chunks/create-headless-toolbar-
|
|
154452
|
+
// ../../packages/superdoc/dist/chunks/create-headless-toolbar-CHK8yJic.es.js
|
|
154289
154453
|
function parseSizeUnit(val = "0") {
|
|
154290
154454
|
const length3 = val.toString() || "0";
|
|
154291
154455
|
const value = Number.parseFloat(length3);
|
|
@@ -155896,8 +156060,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
|
|
|
155896
156060
|
return false;
|
|
155897
156061
|
return Boolean(checker(attrs));
|
|
155898
156062
|
};
|
|
155899
|
-
var
|
|
155900
|
-
|
|
156063
|
+
var init_create_headless_toolbar_CHK8yJic_es = __esm(() => {
|
|
156064
|
+
init_SuperConverter_w6yaFRT5_es();
|
|
155901
156065
|
init_constants_CGhJRd87_es();
|
|
155902
156066
|
init_dist_B8HfvhaK_es();
|
|
155903
156067
|
CSS_DIMENSION_REGEX = /[\d-.]+(\w+)$/;
|
|
@@ -204335,7 +204499,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
|
|
|
204335
204499
|
init_remark_gfm_BhnWr3yf_es();
|
|
204336
204500
|
});
|
|
204337
204501
|
|
|
204338
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
204502
|
+
// ../../packages/superdoc/dist/chunks/src-966rF_JP.es.js
|
|
204339
204503
|
function deleteProps(obj, propOrProps) {
|
|
204340
204504
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
204341
204505
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -220808,6 +220972,9 @@ function isRefWhere(where) {
|
|
|
220808
220972
|
function isTargetWhere(where) {
|
|
220809
220973
|
return where.by === "target";
|
|
220810
220974
|
}
|
|
220975
|
+
function isBlockWhere(where) {
|
|
220976
|
+
return where.by === "block";
|
|
220977
|
+
}
|
|
220811
220978
|
function validateCreateStepPosition(step3) {
|
|
220812
220979
|
const args$1 = step3.args;
|
|
220813
220980
|
if (args$1.position === undefined || args$1.position === null) {
|
|
@@ -221237,6 +221404,67 @@ function resolveTargetWhereClause(editor, step3, where) {
|
|
|
221237
221404
|
capturedStyle
|
|
221238
221405
|
};
|
|
221239
221406
|
}
|
|
221407
|
+
function buildWholeBlockRangeTarget(editor, step3, candidate) {
|
|
221408
|
+
if (isTextBlockCandidate(candidate)) {
|
|
221409
|
+
const blockText = getBlockText(editor, candidate);
|
|
221410
|
+
return buildRangeTarget(editor, step3, {
|
|
221411
|
+
blockId: candidate.nodeId,
|
|
221412
|
+
from: 0,
|
|
221413
|
+
to: blockText.length,
|
|
221414
|
+
text: blockText,
|
|
221415
|
+
marks: [],
|
|
221416
|
+
blockPos: candidate.pos
|
|
221417
|
+
}, candidate);
|
|
221418
|
+
}
|
|
221419
|
+
return {
|
|
221420
|
+
kind: "range",
|
|
221421
|
+
stepId: step3.id,
|
|
221422
|
+
op: step3.op,
|
|
221423
|
+
blockId: candidate.nodeId,
|
|
221424
|
+
from: 0,
|
|
221425
|
+
to: 0,
|
|
221426
|
+
absFrom: candidate.pos,
|
|
221427
|
+
absTo: candidate.end,
|
|
221428
|
+
text: "",
|
|
221429
|
+
marks: [],
|
|
221430
|
+
capturedStyle: undefined
|
|
221431
|
+
};
|
|
221432
|
+
}
|
|
221433
|
+
function resolveBlockWhereClause(editor, index2, step3, where) {
|
|
221434
|
+
const key2 = `${where.nodeType}:${where.nodeId}`;
|
|
221435
|
+
if (index2.ambiguous.has(key2))
|
|
221436
|
+
throw planError("AMBIGUOUS_TARGET", `block "${key2}" matched multiple blocks`, step3.id, {
|
|
221437
|
+
stepId: step3.id,
|
|
221438
|
+
stepOp: step3.op,
|
|
221439
|
+
whereBy: "block",
|
|
221440
|
+
target: {
|
|
221441
|
+
nodeType: where.nodeType,
|
|
221442
|
+
nodeId: where.nodeId
|
|
221443
|
+
}
|
|
221444
|
+
});
|
|
221445
|
+
const candidate = index2.byId.get(key2);
|
|
221446
|
+
if (!candidate)
|
|
221447
|
+
throw planError("TARGET_NOT_FOUND", `block "${key2}" was not found`, step3.id, {
|
|
221448
|
+
stepId: step3.id,
|
|
221449
|
+
stepOp: step3.op,
|
|
221450
|
+
whereBy: "block",
|
|
221451
|
+
target: {
|
|
221452
|
+
nodeType: where.nodeType,
|
|
221453
|
+
nodeId: where.nodeId
|
|
221454
|
+
}
|
|
221455
|
+
});
|
|
221456
|
+
if (!isCreateOp(step3.op) && !isTextBlockCandidate(candidate))
|
|
221457
|
+
throw planError("INVALID_TARGET", `step "${step3.op}" requires a text-bearing block for where.by "block", but "${where.nodeType}" is not text-bearing`, step3.id, {
|
|
221458
|
+
stepId: step3.id,
|
|
221459
|
+
stepOp: step3.op,
|
|
221460
|
+
whereBy: "block",
|
|
221461
|
+
target: {
|
|
221462
|
+
nodeType: where.nodeType,
|
|
221463
|
+
nodeId: where.nodeId
|
|
221464
|
+
}
|
|
221465
|
+
});
|
|
221466
|
+
return buildWholeBlockRangeTarget(editor, step3, candidate);
|
|
221467
|
+
}
|
|
221240
221468
|
function captureStyleAtAbsoluteRange(editor, absFrom, absTo) {
|
|
221241
221469
|
const doc$12 = editor.state.doc;
|
|
221242
221470
|
const allRuns = [];
|
|
@@ -221273,9 +221501,12 @@ function resolveStepTargets(editor, index2, step3) {
|
|
|
221273
221501
|
const refWhere = isRefWhere(where) ? where : undefined;
|
|
221274
221502
|
const selectWhere = isSelectWhere(where) ? where : undefined;
|
|
221275
221503
|
const targetWhere = isTargetWhere(where) ? where : undefined;
|
|
221504
|
+
const blockWhere = isBlockWhere(where) ? where : undefined;
|
|
221276
221505
|
let targets;
|
|
221277
221506
|
if (targetWhere)
|
|
221278
221507
|
targets = [resolveTargetWhereClause(editor, step3, targetWhere)];
|
|
221508
|
+
else if (blockWhere)
|
|
221509
|
+
targets = [resolveBlockWhereClause(editor, index2, step3, blockWhere)];
|
|
221279
221510
|
else if (refWhere)
|
|
221280
221511
|
targets = resolveRefTargets(editor, index2, step3, refWhere);
|
|
221281
221512
|
else if (selectWhere) {
|
|
@@ -221318,7 +221549,7 @@ function resolveStepTargets(editor, index2, step3) {
|
|
|
221318
221549
|
return true;
|
|
221319
221550
|
return t.blockId !== prev.blockId || t.from !== prev.from || t.to !== prev.to;
|
|
221320
221551
|
});
|
|
221321
|
-
if (targetWhere)
|
|
221552
|
+
if (targetWhere || blockWhere)
|
|
221322
221553
|
return targets;
|
|
221323
221554
|
if (refWhere) {
|
|
221324
221555
|
if (targets.length === 0)
|
|
@@ -221344,22 +221575,33 @@ function buildMatchNotFoundDetails(step3, editor) {
|
|
|
221344
221575
|
const within$1 = "within" in where ? where.within : undefined;
|
|
221345
221576
|
let textPreview;
|
|
221346
221577
|
if (editor) {
|
|
221347
|
-
const
|
|
221348
|
-
const len3 = Math.min(
|
|
221349
|
-
if (len3 > 0)
|
|
221578
|
+
const rawDocSize = editor.state.doc.content?.size;
|
|
221579
|
+
const len3 = typeof rawDocSize === "number" ? Math.min(rawDocSize, 300) : 300;
|
|
221580
|
+
if (len3 > 0 && typeof editor.state.doc.textBetween === "function")
|
|
221350
221581
|
textPreview = editor.state.doc.textBetween(0, len3, `
|
|
221351
221582
|
`, `
|
|
221352
221583
|
`);
|
|
221353
221584
|
}
|
|
221354
221585
|
return {
|
|
221586
|
+
stepId: step3.id,
|
|
221587
|
+
stepOp: step3.op,
|
|
221588
|
+
whereBy: where.by,
|
|
221355
221589
|
selectorType: select2?.type ?? "unknown",
|
|
221356
221590
|
selectorPattern: select2?.pattern ?? "",
|
|
221357
221591
|
selectorMode: select2?.mode ?? "contains",
|
|
221358
|
-
searchScope: within$1?.
|
|
221592
|
+
searchScope: within$1?.nodeId ? `${within$1.nodeType ?? "block"}:${within$1.nodeId}` : "document",
|
|
221359
221593
|
candidateCount: 0,
|
|
221360
221594
|
...textPreview ? { textPreview } : {}
|
|
221361
221595
|
};
|
|
221362
221596
|
}
|
|
221597
|
+
function buildMatchNotFoundMessage(step3) {
|
|
221598
|
+
const where = step3.where;
|
|
221599
|
+
const select2 = "select" in where ? where.select : undefined;
|
|
221600
|
+
const within$1 = "within" in where ? where.within : undefined;
|
|
221601
|
+
const selectorDescription = select2?.type === "node" ? `node selector for "${select2.nodeType ?? "unknown"}"` : `text selector for "${select2?.pattern ?? ""}"`;
|
|
221602
|
+
const scopeDescription = within$1?.nodeId ? ` within ${within$1.nodeType ?? "block"}:${within$1.nodeId}` : "";
|
|
221603
|
+
return `step "${step3.id}" (${step3.op}) matched zero ranges for ${selectorDescription}${scopeDescription}`;
|
|
221604
|
+
}
|
|
221363
221605
|
function applyCardinalityCheck(step3, targets, editor) {
|
|
221364
221606
|
const where = step3.where;
|
|
221365
221607
|
if (!("require" in where) || where.require === undefined)
|
|
@@ -221367,15 +221609,15 @@ function applyCardinalityCheck(step3, targets, editor) {
|
|
|
221367
221609
|
const require$1 = where.require;
|
|
221368
221610
|
if (require$1 === "first") {
|
|
221369
221611
|
if (targets.length === 0)
|
|
221370
|
-
throw planError("MATCH_NOT_FOUND",
|
|
221612
|
+
throw planError("MATCH_NOT_FOUND", buildMatchNotFoundMessage(step3), step3.id, buildMatchNotFoundDetails(step3, editor));
|
|
221371
221613
|
} else if (require$1 === "exactlyOne") {
|
|
221372
221614
|
if (targets.length === 0)
|
|
221373
|
-
throw planError("MATCH_NOT_FOUND",
|
|
221615
|
+
throw planError("MATCH_NOT_FOUND", buildMatchNotFoundMessage(step3), step3.id, buildMatchNotFoundDetails(step3, editor));
|
|
221374
221616
|
if (targets.length > 1)
|
|
221375
221617
|
throw planError("AMBIGUOUS_MATCH", `selector matched ${targets.length} ranges, expected exactly one`, step3.id, { matchCount: targets.length });
|
|
221376
221618
|
} else if (require$1 === "all") {
|
|
221377
221619
|
if (targets.length === 0)
|
|
221378
|
-
throw planError("MATCH_NOT_FOUND",
|
|
221620
|
+
throw planError("MATCH_NOT_FOUND", buildMatchNotFoundMessage(step3), step3.id, buildMatchNotFoundDetails(step3, editor));
|
|
221379
221621
|
}
|
|
221380
221622
|
}
|
|
221381
221623
|
function normalizeOpForMatrix(op) {
|
|
@@ -221587,6 +221829,360 @@ function compilePlan(editor, steps) {
|
|
|
221587
221829
|
compiledRevision
|
|
221588
221830
|
};
|
|
221589
221831
|
}
|
|
221832
|
+
function resolveParagraphBlock(editor, target) {
|
|
221833
|
+
const candidate = findBlockByIdStrict(getBlockIndex(editor), target);
|
|
221834
|
+
if (!PARAGRAPH_NODE_TYPES.has(candidate.nodeType))
|
|
221835
|
+
throw new DocumentApiAdapterError("INVALID_TARGET", `format.paragraph.* / styles.paragraph.* operations require a paragraph, heading, or listItem target. Got "${candidate.nodeType}".`, { nodeType: candidate.nodeType });
|
|
221836
|
+
return candidate;
|
|
221837
|
+
}
|
|
221838
|
+
function successResult(target) {
|
|
221839
|
+
return {
|
|
221840
|
+
success: true,
|
|
221841
|
+
target,
|
|
221842
|
+
resolution: { target }
|
|
221843
|
+
};
|
|
221844
|
+
}
|
|
221845
|
+
function noOpResult(operation) {
|
|
221846
|
+
return {
|
|
221847
|
+
success: false,
|
|
221848
|
+
failure: {
|
|
221849
|
+
code: "NO_OP",
|
|
221850
|
+
message: `${operation} produced no changes.`
|
|
221851
|
+
}
|
|
221852
|
+
};
|
|
221853
|
+
}
|
|
221854
|
+
function getPreservedCharacterStyleAttrs(mark2) {
|
|
221855
|
+
const styleId = mark2.attrs?.[TEXT_STYLE_CHARACTER_STYLE_ATTR];
|
|
221856
|
+
if (typeof styleId !== "string" || styleId.length === 0)
|
|
221857
|
+
return null;
|
|
221858
|
+
return { [TEXT_STYLE_CHARACTER_STYLE_ATTR]: styleId };
|
|
221859
|
+
}
|
|
221860
|
+
function hasTextStyleDirectFormatting(mark2) {
|
|
221861
|
+
return Object.entries(mark2.attrs ?? {}).some(([key2, value]) => key2 !== TEXT_STYLE_CHARACTER_STYLE_ATTR && value != null);
|
|
221862
|
+
}
|
|
221863
|
+
function clearTextStyleDirectFormatting(tr, from$1, to, mark2) {
|
|
221864
|
+
const preservedCharacterStyle = getPreservedCharacterStyleAttrs(mark2);
|
|
221865
|
+
const hadDirectFormatting = hasTextStyleDirectFormatting(mark2);
|
|
221866
|
+
if (!hadDirectFormatting && preservedCharacterStyle)
|
|
221867
|
+
return false;
|
|
221868
|
+
tr.removeMark?.(from$1, to, mark2);
|
|
221869
|
+
if (hadDirectFormatting && preservedCharacterStyle && mark2.type?.create && tr.addMark)
|
|
221870
|
+
tr.addMark(from$1, to, mark2.type.create(preservedCharacterStyle));
|
|
221871
|
+
return true;
|
|
221872
|
+
}
|
|
221873
|
+
function clearDirectFormattingInBlock(tr, pos, nodeSize2) {
|
|
221874
|
+
if (!tr.doc?.nodesBetween || !tr.removeMark || nodeSize2 <= 2)
|
|
221875
|
+
return false;
|
|
221876
|
+
let changed = false;
|
|
221877
|
+
tr.doc.nodesBetween(pos + 1, pos + nodeSize2 - 1, (node3, nodePos) => {
|
|
221878
|
+
if (!node3.isText || !Array.isArray(node3.marks) || node3.marks.length === 0 || typeof node3.nodeSize !== "number")
|
|
221879
|
+
return true;
|
|
221880
|
+
node3.marks.forEach((mark2) => {
|
|
221881
|
+
const markName = mark2?.type?.name;
|
|
221882
|
+
if (!markName || !DIRECT_FORMATTING_MARK_NAMES.has(markName))
|
|
221883
|
+
return;
|
|
221884
|
+
if (markName === "textStyle") {
|
|
221885
|
+
changed = clearTextStyleDirectFormatting(tr, nodePos, nodePos + node3.nodeSize, mark2) || changed;
|
|
221886
|
+
return;
|
|
221887
|
+
}
|
|
221888
|
+
tr.removeMark(nodePos, nodePos + node3.nodeSize, mark2);
|
|
221889
|
+
changed = true;
|
|
221890
|
+
});
|
|
221891
|
+
return true;
|
|
221892
|
+
});
|
|
221893
|
+
return changed;
|
|
221894
|
+
}
|
|
221895
|
+
function mutateParagraphProperties(editor, candidate, operation, target, transform, options, extras) {
|
|
221896
|
+
if (options?.dryRun)
|
|
221897
|
+
return successResult(target);
|
|
221898
|
+
if (executeDomainCommand(editor, () => {
|
|
221899
|
+
const node3 = editor.state.doc.nodeAt(candidate.pos);
|
|
221900
|
+
if (!node3)
|
|
221901
|
+
return false;
|
|
221902
|
+
const existing = node3.attrs.paragraphProperties ?? {};
|
|
221903
|
+
const updated = transform({ ...existing });
|
|
221904
|
+
if (JSON.stringify(existing) === JSON.stringify(updated))
|
|
221905
|
+
return false;
|
|
221906
|
+
const tr = editor.state.tr;
|
|
221907
|
+
if (extras?.clearDirectFormatting)
|
|
221908
|
+
clearDirectFormattingInBlock(tr, candidate.pos, node3.nodeSize);
|
|
221909
|
+
tr.setNodeMarkup(candidate.pos, undefined, {
|
|
221910
|
+
...node3.attrs,
|
|
221911
|
+
paragraphProperties: updated
|
|
221912
|
+
});
|
|
221913
|
+
editor.dispatch(tr);
|
|
221914
|
+
clearIndexCache(editor);
|
|
221915
|
+
return true;
|
|
221916
|
+
}, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
|
|
221917
|
+
return noOpResult(operation);
|
|
221918
|
+
return successResult(target);
|
|
221919
|
+
}
|
|
221920
|
+
function mergeDefinedFields(existing, patch3) {
|
|
221921
|
+
const result = { ...existing ?? {} };
|
|
221922
|
+
for (const [key2, value] of Object.entries(patch3))
|
|
221923
|
+
if (value !== undefined)
|
|
221924
|
+
result[key2] = value;
|
|
221925
|
+
return result;
|
|
221926
|
+
}
|
|
221927
|
+
function mergeIndentationFields(existing, patch3) {
|
|
221928
|
+
const result = mergeDefinedFields(existing, patch3);
|
|
221929
|
+
const firstLineWasUpdated = patch3.firstLine !== undefined;
|
|
221930
|
+
const hangingWasUpdated = patch3.hanging !== undefined;
|
|
221931
|
+
if (firstLineWasUpdated && !hangingWasUpdated)
|
|
221932
|
+
delete result.hanging;
|
|
221933
|
+
if (hangingWasUpdated && !firstLineWasUpdated)
|
|
221934
|
+
delete result.firstLine;
|
|
221935
|
+
return result;
|
|
221936
|
+
}
|
|
221937
|
+
function deleteKey(obj, key2) {
|
|
221938
|
+
const result = { ...obj };
|
|
221939
|
+
delete result[key2];
|
|
221940
|
+
return Object.keys(result).length > 0 ? result : undefined;
|
|
221941
|
+
}
|
|
221942
|
+
function addOrReplaceTabStop(existing, entry) {
|
|
221943
|
+
return [...(existing ?? []).filter((t) => t.tab.pos !== entry.tab.pos), entry].sort((a2, b$1) => a2.tab.pos - b$1.tab.pos);
|
|
221944
|
+
}
|
|
221945
|
+
function removeTabStop(existing, position4) {
|
|
221946
|
+
const filtered = (existing ?? []).filter((t) => t.tab.pos !== position4);
|
|
221947
|
+
return filtered.length > 0 ? filtered : undefined;
|
|
221948
|
+
}
|
|
221949
|
+
function paragraphsSetStyleWrapper(editor, input2, options) {
|
|
221950
|
+
rejectTrackedMode("styles.paragraph.setStyle", options);
|
|
221951
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "styles.paragraph.setStyle", input2.target, (pPr) => ({
|
|
221952
|
+
...pPr,
|
|
221953
|
+
styleId: input2.styleId
|
|
221954
|
+
}), options, { clearDirectFormatting: true });
|
|
221955
|
+
}
|
|
221956
|
+
function paragraphsClearStyleWrapper(editor, input2, options) {
|
|
221957
|
+
rejectTrackedMode("styles.paragraph.clearStyle", options);
|
|
221958
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "styles.paragraph.clearStyle", input2.target, (pPr) => {
|
|
221959
|
+
const result = { ...pPr };
|
|
221960
|
+
delete result.styleId;
|
|
221961
|
+
return result;
|
|
221962
|
+
}, options);
|
|
221963
|
+
}
|
|
221964
|
+
function paragraphsResetDirectFormattingWrapper(editor, input2, options) {
|
|
221965
|
+
rejectTrackedMode("format.paragraph.resetDirectFormatting", options);
|
|
221966
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.resetDirectFormatting", input2.target, (pPr) => {
|
|
221967
|
+
const result = {};
|
|
221968
|
+
if (pPr.styleId !== undefined)
|
|
221969
|
+
result.styleId = pPr.styleId;
|
|
221970
|
+
if (pPr.numberingProperties !== undefined)
|
|
221971
|
+
result.numberingProperties = pPr.numberingProperties;
|
|
221972
|
+
if (pPr.sectPr !== undefined)
|
|
221973
|
+
result.sectPr = pPr.sectPr;
|
|
221974
|
+
return result;
|
|
221975
|
+
}, options);
|
|
221976
|
+
}
|
|
221977
|
+
function paragraphsSetAlignmentWrapper(editor, input2, options) {
|
|
221978
|
+
rejectTrackedMode("format.paragraph.setAlignment", options);
|
|
221979
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setAlignment", input2.target, (pPr) => ({
|
|
221980
|
+
...pPr,
|
|
221981
|
+
justification: ALIGNMENT_TO_JUSTIFICATION[input2.alignment]
|
|
221982
|
+
}), options);
|
|
221983
|
+
}
|
|
221984
|
+
function paragraphsClearAlignmentWrapper(editor, input2, options) {
|
|
221985
|
+
rejectTrackedMode("format.paragraph.clearAlignment", options);
|
|
221986
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearAlignment", input2.target, (pPr) => {
|
|
221987
|
+
const result = { ...pPr };
|
|
221988
|
+
delete result.justification;
|
|
221989
|
+
return result;
|
|
221990
|
+
}, options);
|
|
221991
|
+
}
|
|
221992
|
+
function paragraphsSetIndentationWrapper(editor, input2, options) {
|
|
221993
|
+
rejectTrackedMode("format.paragraph.setIndentation", options);
|
|
221994
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setIndentation", input2.target, (pPr) => ({
|
|
221995
|
+
...pPr,
|
|
221996
|
+
indent: mergeIndentationFields(pPr.indent, {
|
|
221997
|
+
left: input2.left,
|
|
221998
|
+
right: input2.right,
|
|
221999
|
+
firstLine: input2.firstLine,
|
|
222000
|
+
hanging: input2.hanging
|
|
222001
|
+
})
|
|
222002
|
+
}), options);
|
|
222003
|
+
}
|
|
222004
|
+
function paragraphsClearIndentationWrapper(editor, input2, options) {
|
|
222005
|
+
rejectTrackedMode("format.paragraph.clearIndentation", options);
|
|
222006
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearIndentation", input2.target, (pPr) => {
|
|
222007
|
+
const result = { ...pPr };
|
|
222008
|
+
delete result.indent;
|
|
222009
|
+
return result;
|
|
222010
|
+
}, options);
|
|
222011
|
+
}
|
|
222012
|
+
function paragraphsSetSpacingWrapper(editor, input2, options) {
|
|
222013
|
+
rejectTrackedMode("format.paragraph.setSpacing", options);
|
|
222014
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setSpacing", input2.target, (pPr) => ({
|
|
222015
|
+
...pPr,
|
|
222016
|
+
spacing: mergeDefinedFields(pPr.spacing, {
|
|
222017
|
+
before: input2.before,
|
|
222018
|
+
after: input2.after,
|
|
222019
|
+
line: input2.line,
|
|
222020
|
+
lineRule: input2.lineRule
|
|
222021
|
+
})
|
|
222022
|
+
}), options);
|
|
222023
|
+
}
|
|
222024
|
+
function paragraphsClearSpacingWrapper(editor, input2, options) {
|
|
222025
|
+
rejectTrackedMode("format.paragraph.clearSpacing", options);
|
|
222026
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearSpacing", input2.target, (pPr) => {
|
|
222027
|
+
const result = { ...pPr };
|
|
222028
|
+
delete result.spacing;
|
|
222029
|
+
return result;
|
|
222030
|
+
}, options);
|
|
222031
|
+
}
|
|
222032
|
+
function paragraphsSetKeepOptionsWrapper(editor, input2, options) {
|
|
222033
|
+
rejectTrackedMode("format.paragraph.setKeepOptions", options);
|
|
222034
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setKeepOptions", input2.target, (pPr) => {
|
|
222035
|
+
const result = { ...pPr };
|
|
222036
|
+
if (input2.keepNext !== undefined)
|
|
222037
|
+
result.keepNext = input2.keepNext;
|
|
222038
|
+
if (input2.keepLines !== undefined)
|
|
222039
|
+
result.keepLines = input2.keepLines;
|
|
222040
|
+
if (input2.widowControl !== undefined)
|
|
222041
|
+
result.widowControl = input2.widowControl;
|
|
222042
|
+
return result;
|
|
222043
|
+
}, options);
|
|
222044
|
+
}
|
|
222045
|
+
function paragraphsSetOutlineLevelWrapper(editor, input2, options) {
|
|
222046
|
+
rejectTrackedMode("format.paragraph.setOutlineLevel", options);
|
|
222047
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setOutlineLevel", input2.target, (pPr) => {
|
|
222048
|
+
if (input2.outlineLevel === null) {
|
|
222049
|
+
const result = { ...pPr };
|
|
222050
|
+
delete result.outlineLvl;
|
|
222051
|
+
return result;
|
|
222052
|
+
}
|
|
222053
|
+
return {
|
|
222054
|
+
...pPr,
|
|
222055
|
+
outlineLvl: input2.outlineLevel
|
|
222056
|
+
};
|
|
222057
|
+
}, options);
|
|
222058
|
+
}
|
|
222059
|
+
function paragraphsSetFlowOptionsWrapper(editor, input2, options) {
|
|
222060
|
+
rejectTrackedMode("format.paragraph.setFlowOptions", options);
|
|
222061
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setFlowOptions", input2.target, (pPr) => {
|
|
222062
|
+
const result = { ...pPr };
|
|
222063
|
+
if (input2.contextualSpacing !== undefined)
|
|
222064
|
+
result.contextualSpacing = input2.contextualSpacing;
|
|
222065
|
+
if (input2.pageBreakBefore !== undefined)
|
|
222066
|
+
result.pageBreakBefore = input2.pageBreakBefore;
|
|
222067
|
+
if (input2.suppressAutoHyphens !== undefined)
|
|
222068
|
+
result.suppressAutoHyphens = input2.suppressAutoHyphens;
|
|
222069
|
+
return result;
|
|
222070
|
+
}, options);
|
|
222071
|
+
}
|
|
222072
|
+
function paragraphsSetTabStopWrapper(editor, input2, options) {
|
|
222073
|
+
rejectTrackedMode("format.paragraph.setTabStop", options);
|
|
222074
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setTabStop", input2.target, (pPr) => {
|
|
222075
|
+
const entry = { tab: {
|
|
222076
|
+
pos: input2.position,
|
|
222077
|
+
tabType: input2.alignment,
|
|
222078
|
+
...input2.leader !== undefined && { leader: input2.leader }
|
|
222079
|
+
} };
|
|
222080
|
+
return {
|
|
222081
|
+
...pPr,
|
|
222082
|
+
tabStops: addOrReplaceTabStop(pPr.tabStops, entry)
|
|
222083
|
+
};
|
|
222084
|
+
}, options);
|
|
222085
|
+
}
|
|
222086
|
+
function paragraphsClearTabStopWrapper(editor, input2, options) {
|
|
222087
|
+
rejectTrackedMode("format.paragraph.clearTabStop", options);
|
|
222088
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearTabStop", input2.target, (pPr) => {
|
|
222089
|
+
const updated = removeTabStop(pPr.tabStops, input2.position);
|
|
222090
|
+
if (updated === undefined) {
|
|
222091
|
+
const result = { ...pPr };
|
|
222092
|
+
delete result.tabStops;
|
|
222093
|
+
return result;
|
|
222094
|
+
}
|
|
222095
|
+
return {
|
|
222096
|
+
...pPr,
|
|
222097
|
+
tabStops: updated
|
|
222098
|
+
};
|
|
222099
|
+
}, options);
|
|
222100
|
+
}
|
|
222101
|
+
function paragraphsClearAllTabStopsWrapper(editor, input2, options) {
|
|
222102
|
+
rejectTrackedMode("format.paragraph.clearAllTabStops", options);
|
|
222103
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearAllTabStops", input2.target, (pPr) => {
|
|
222104
|
+
const result = { ...pPr };
|
|
222105
|
+
delete result.tabStops;
|
|
222106
|
+
return result;
|
|
222107
|
+
}, options);
|
|
222108
|
+
}
|
|
222109
|
+
function paragraphsSetBorderWrapper(editor, input2, options) {
|
|
222110
|
+
rejectTrackedMode("format.paragraph.setBorder", options);
|
|
222111
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setBorder", input2.target, (pPr) => {
|
|
222112
|
+
const existing = pPr.borders ?? {};
|
|
222113
|
+
const border = { val: input2.style };
|
|
222114
|
+
if (input2.color !== undefined)
|
|
222115
|
+
border.color = input2.color;
|
|
222116
|
+
if (input2.size !== undefined)
|
|
222117
|
+
border.size = input2.size;
|
|
222118
|
+
if (input2.space !== undefined)
|
|
222119
|
+
border.space = input2.space;
|
|
222120
|
+
return {
|
|
222121
|
+
...pPr,
|
|
222122
|
+
borders: {
|
|
222123
|
+
...existing,
|
|
222124
|
+
[input2.side]: border
|
|
222125
|
+
}
|
|
222126
|
+
};
|
|
222127
|
+
}, options);
|
|
222128
|
+
}
|
|
222129
|
+
function paragraphsClearBorderWrapper(editor, input2, options) {
|
|
222130
|
+
rejectTrackedMode("format.paragraph.clearBorder", options);
|
|
222131
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearBorder", input2.target, (pPr) => {
|
|
222132
|
+
if (input2.side === "all") {
|
|
222133
|
+
const result = { ...pPr };
|
|
222134
|
+
delete result.borders;
|
|
222135
|
+
return result;
|
|
222136
|
+
}
|
|
222137
|
+
const updated = deleteKey(pPr.borders ?? {}, input2.side);
|
|
222138
|
+
if (updated === undefined) {
|
|
222139
|
+
const result = { ...pPr };
|
|
222140
|
+
delete result.borders;
|
|
222141
|
+
return result;
|
|
222142
|
+
}
|
|
222143
|
+
return {
|
|
222144
|
+
...pPr,
|
|
222145
|
+
borders: updated
|
|
222146
|
+
};
|
|
222147
|
+
}, options);
|
|
222148
|
+
}
|
|
222149
|
+
function paragraphsSetShadingWrapper(editor, input2, options) {
|
|
222150
|
+
rejectTrackedMode("format.paragraph.setShading", options);
|
|
222151
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setShading", input2.target, (pPr) => ({
|
|
222152
|
+
...pPr,
|
|
222153
|
+
shading: mergeDefinedFields(pPr.shading, {
|
|
222154
|
+
fill: input2.fill,
|
|
222155
|
+
color: input2.color,
|
|
222156
|
+
val: input2.pattern
|
|
222157
|
+
})
|
|
222158
|
+
}), options);
|
|
222159
|
+
}
|
|
222160
|
+
function paragraphsClearShadingWrapper(editor, input2, options) {
|
|
222161
|
+
rejectTrackedMode("format.paragraph.clearShading", options);
|
|
222162
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearShading", input2.target, (pPr) => {
|
|
222163
|
+
const result = { ...pPr };
|
|
222164
|
+
delete result.shading;
|
|
222165
|
+
return result;
|
|
222166
|
+
}, options);
|
|
222167
|
+
}
|
|
222168
|
+
function paragraphsSetDirectionWrapper(editor, input2, options) {
|
|
222169
|
+
rejectTrackedMode("format.paragraph.setDirection", options);
|
|
222170
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setDirection", input2.target, (pPr) => {
|
|
222171
|
+
const result = { ...pPr };
|
|
222172
|
+
result.rightToLeft = input2.direction === "rtl";
|
|
222173
|
+
if (input2.alignmentPolicy === "matchDirection")
|
|
222174
|
+
result.justification = input2.direction === "rtl" ? "right" : "left";
|
|
222175
|
+
return result;
|
|
222176
|
+
}, options);
|
|
222177
|
+
}
|
|
222178
|
+
function paragraphsClearDirectionWrapper(editor, input2, options) {
|
|
222179
|
+
rejectTrackedMode("format.paragraph.clearDirection", options);
|
|
222180
|
+
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearDirection", input2.target, (pPr) => {
|
|
222181
|
+
const result = { ...pPr };
|
|
222182
|
+
delete result.rightToLeft;
|
|
222183
|
+
return result;
|
|
222184
|
+
}, options);
|
|
222185
|
+
}
|
|
221590
222186
|
function resolveBlockInsertionPos(editor, anchorBlockId, position4, stepId) {
|
|
221591
222187
|
const candidate = getBlockIndex(editor).candidates.find((c) => c.nodeId === anchorBlockId);
|
|
221592
222188
|
if (!candidate)
|
|
@@ -222168,8 +222764,59 @@ function executeTextDelete(_editor, tr, target, _step, mapping) {
|
|
|
222168
222764
|
tr.delete(absFrom, absTo);
|
|
222169
222765
|
return { changed: true };
|
|
222170
222766
|
}
|
|
222767
|
+
function applyAlignmentToRange(tr, absFrom, absTo, alignment$1) {
|
|
222768
|
+
const justification = ALIGNMENT_TO_JUSTIFICATION[alignment$1];
|
|
222769
|
+
if (!justification)
|
|
222770
|
+
return false;
|
|
222771
|
+
let changed = false;
|
|
222772
|
+
tr.doc.nodesBetween(absFrom, absTo, (node3, pos) => {
|
|
222773
|
+
if (!node3.isTextblock)
|
|
222774
|
+
return;
|
|
222775
|
+
const existing = node3.attrs.paragraphProperties;
|
|
222776
|
+
if (existing?.justification === justification)
|
|
222777
|
+
return;
|
|
222778
|
+
const updated = {
|
|
222779
|
+
...existing ?? {},
|
|
222780
|
+
justification
|
|
222781
|
+
};
|
|
222782
|
+
tr.setNodeMarkup(pos, undefined, {
|
|
222783
|
+
...node3.attrs,
|
|
222784
|
+
paragraphProperties: updated
|
|
222785
|
+
});
|
|
222786
|
+
changed = true;
|
|
222787
|
+
});
|
|
222788
|
+
return changed;
|
|
222789
|
+
}
|
|
222790
|
+
function expandToBlockBoundaries$1(doc$12, from$1, to) {
|
|
222791
|
+
let expandedFrom = from$1;
|
|
222792
|
+
let expandedTo = to;
|
|
222793
|
+
doc$12.nodesBetween(from$1, to, (node3, pos) => {
|
|
222794
|
+
if (!node3.isTextblock)
|
|
222795
|
+
return;
|
|
222796
|
+
const blockContentStart = pos + 1;
|
|
222797
|
+
const blockContentEnd = pos + node3.nodeSize - 1;
|
|
222798
|
+
expandedFrom = Math.min(expandedFrom, blockContentStart);
|
|
222799
|
+
expandedTo = Math.max(expandedTo, blockContentEnd);
|
|
222800
|
+
});
|
|
222801
|
+
return {
|
|
222802
|
+
from: expandedFrom,
|
|
222803
|
+
to: expandedTo
|
|
222804
|
+
};
|
|
222805
|
+
}
|
|
222171
222806
|
function executeStyleApply3(editor, tr, target, step3, mapping) {
|
|
222172
|
-
|
|
222807
|
+
let absFrom = mapping.map(target.absFrom);
|
|
222808
|
+
let absTo = mapping.map(target.absTo);
|
|
222809
|
+
if (step3.args.scope === "block") {
|
|
222810
|
+
const expanded = expandToBlockBoundaries$1(tr.doc, absFrom, absTo);
|
|
222811
|
+
absFrom = expanded.from;
|
|
222812
|
+
absTo = expanded.to;
|
|
222813
|
+
}
|
|
222814
|
+
let changed = false;
|
|
222815
|
+
if (step3.args.inline)
|
|
222816
|
+
changed = applyInlinePatchToRange(editor, tr, absFrom, absTo, step3.args.inline) || changed;
|
|
222817
|
+
if (step3.args.alignment)
|
|
222818
|
+
changed = applyAlignmentToRange(tr, absFrom, absTo, step3.args.alignment) || changed;
|
|
222819
|
+
return { changed };
|
|
222173
222820
|
}
|
|
222174
222821
|
function validateMappedSpanContiguity(target, mapping, stepId) {
|
|
222175
222822
|
let lastMappedEnd = -1;
|
|
@@ -222237,7 +222884,19 @@ function executeSpanStyleApply(editor, tr, target, step3, mapping) {
|
|
|
222237
222884
|
validateMappedSpanContiguity(target, mapping, step3.id);
|
|
222238
222885
|
const firstSeg = target.segments[0];
|
|
222239
222886
|
const lastSeg = target.segments[target.segments.length - 1];
|
|
222240
|
-
|
|
222887
|
+
let absFrom = mapping.map(firstSeg.absFrom, 1);
|
|
222888
|
+
let absTo = mapping.map(lastSeg.absTo, -1);
|
|
222889
|
+
if (step3.args.scope === "block") {
|
|
222890
|
+
const expanded = expandToBlockBoundaries$1(tr.doc, absFrom, absTo);
|
|
222891
|
+
absFrom = expanded.from;
|
|
222892
|
+
absTo = expanded.to;
|
|
222893
|
+
}
|
|
222894
|
+
let changed = false;
|
|
222895
|
+
if (step3.args.inline)
|
|
222896
|
+
changed = applyInlinePatchToRange(editor, tr, absFrom, absTo, step3.args.inline) || changed;
|
|
222897
|
+
if (step3.args.alignment)
|
|
222898
|
+
changed = applyAlignmentToRange(tr, absFrom, absTo, step3.args.alignment) || changed;
|
|
222899
|
+
return { changed };
|
|
222241
222900
|
}
|
|
222242
222901
|
function getReplacementText(replacement) {
|
|
222243
222902
|
if (replacement.blocks !== undefined)
|
|
@@ -224392,14 +225051,44 @@ function insertStructuredInner(editor, input2, options) {
|
|
|
224392
225051
|
if (isStructuralInsertInput2(input2))
|
|
224393
225052
|
return executeStructuralInsertWrapper(editor, input2, options);
|
|
224394
225053
|
const contentType = input2.type ?? "text";
|
|
224395
|
-
const { value,
|
|
225054
|
+
const { value, ref: ref$1 } = input2;
|
|
225055
|
+
const rawTarget = input2.target;
|
|
225056
|
+
const placement2 = input2.placement;
|
|
224396
225057
|
if ((options?.changeMode ?? "direct") === "tracked")
|
|
224397
225058
|
throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `Tracked mode is not supported for type: '${contentType}' insert operations.`);
|
|
224398
225059
|
let resolvedRange;
|
|
224399
225060
|
let effectiveTarget;
|
|
224400
225061
|
if (ref$1 !== undefined && ref$1 === "")
|
|
224401
225062
|
throw new DocumentApiAdapterError("INVALID_TARGET", "ref must be a non-empty string.", { ref: ref$1 });
|
|
224402
|
-
if (
|
|
225063
|
+
if (rawTarget && typeof rawTarget === "object" && "kind" in rawTarget && rawTarget.kind === "block") {
|
|
225064
|
+
const blockTarget = rawTarget;
|
|
225065
|
+
let resolved;
|
|
225066
|
+
try {
|
|
225067
|
+
resolved = resolveInsertTarget(editor, blockTarget);
|
|
225068
|
+
} catch (err) {
|
|
225069
|
+
if (err instanceof DocumentApiAdapterError)
|
|
225070
|
+
throw err;
|
|
225071
|
+
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Cannot resolve insert target for block "${blockTarget.nodeId}".`);
|
|
225072
|
+
}
|
|
225073
|
+
let insertPos;
|
|
225074
|
+
if (resolved.targetNode && resolved.targetNodePos !== undefined)
|
|
225075
|
+
insertPos = resolvePlacement(editor.state.doc, resolved.targetNodePos, resolved.targetNode, placement2);
|
|
225076
|
+
else
|
|
225077
|
+
insertPos = resolved.insertPos;
|
|
225078
|
+
resolvedRange = {
|
|
225079
|
+
from: insertPos,
|
|
225080
|
+
to: insertPos
|
|
225081
|
+
};
|
|
225082
|
+
effectiveTarget = {
|
|
225083
|
+
kind: "text",
|
|
225084
|
+
blockId: blockTarget.nodeId,
|
|
225085
|
+
range: {
|
|
225086
|
+
start: 0,
|
|
225087
|
+
end: 0
|
|
225088
|
+
}
|
|
225089
|
+
};
|
|
225090
|
+
} else if (rawTarget) {
|
|
225091
|
+
const target = rawTarget;
|
|
224403
225092
|
const resolved = resolveSelectionTarget(editor, target);
|
|
224404
225093
|
resolvedRange = {
|
|
224405
225094
|
from: resolved.absFrom,
|
|
@@ -224484,7 +225173,7 @@ function insertStructuredInner(editor, input2, options) {
|
|
|
224484
225173
|
text: readTextAtResolvedRange(editor, resolvedRange)
|
|
224485
225174
|
});
|
|
224486
225175
|
const { from: from$1, to } = resolvedRange;
|
|
224487
|
-
if (
|
|
225176
|
+
if (rawTarget && from$1 !== to)
|
|
224488
225177
|
return {
|
|
224489
225178
|
success: false,
|
|
224490
225179
|
resolution,
|
|
@@ -225080,7 +225769,45 @@ function extractTextPreview(node3) {
|
|
|
225080
225769
|
return text5;
|
|
225081
225770
|
return text5.slice(0, TEXT_PREVIEW_MAX_LENGTH);
|
|
225082
225771
|
}
|
|
225083
|
-
function
|
|
225772
|
+
function extractBlockText$1(node3) {
|
|
225773
|
+
if (!node3.isTextblock)
|
|
225774
|
+
return null;
|
|
225775
|
+
return node3.textContent;
|
|
225776
|
+
}
|
|
225777
|
+
function buildStyleContext(editor) {
|
|
225778
|
+
const styleProps = readTranslatedLinkedStyles(editor);
|
|
225779
|
+
if (!styleProps)
|
|
225780
|
+
return null;
|
|
225781
|
+
return {
|
|
225782
|
+
styles: styleProps.styles ?? {},
|
|
225783
|
+
docDefaultsFontSizeHp: typeof styleProps.docDefaults?.runProperties?.fontSize === "number" ? styleProps.docDefaults.runProperties.fontSize : undefined
|
|
225784
|
+
};
|
|
225785
|
+
}
|
|
225786
|
+
function resolveBlockFontSizePt(styleCtx, styleId) {
|
|
225787
|
+
if (!styleCtx)
|
|
225788
|
+
return OOXML_DEFAULT_FONT_SIZE_PT;
|
|
225789
|
+
let currentId = styleId ?? "Normal";
|
|
225790
|
+
const visited = /* @__PURE__ */ new Set;
|
|
225791
|
+
while (currentId && !visited.has(currentId)) {
|
|
225792
|
+
visited.add(currentId);
|
|
225793
|
+
const style2 = styleCtx.styles[currentId];
|
|
225794
|
+
if (!style2)
|
|
225795
|
+
break;
|
|
225796
|
+
const fs = style2.runProperties?.fontSize;
|
|
225797
|
+
if (typeof fs === "number")
|
|
225798
|
+
return fs / 2;
|
|
225799
|
+
currentId = style2.basedOn ?? "";
|
|
225800
|
+
}
|
|
225801
|
+
if (!visited.has("Normal")) {
|
|
225802
|
+
const fs = styleCtx.styles["Normal"]?.runProperties?.fontSize;
|
|
225803
|
+
if (typeof fs === "number")
|
|
225804
|
+
return fs / 2;
|
|
225805
|
+
}
|
|
225806
|
+
if (typeof styleCtx.docDefaultsFontSizeHp === "number")
|
|
225807
|
+
return styleCtx.docDefaultsFontSizeHp / 2;
|
|
225808
|
+
return OOXML_DEFAULT_FONT_SIZE_PT;
|
|
225809
|
+
}
|
|
225810
|
+
function extractBlockFormatting(node3, styleCtx) {
|
|
225084
225811
|
const pProps = node3.attrs.paragraphProperties;
|
|
225085
225812
|
const styleId = pProps?.styleId ?? null;
|
|
225086
225813
|
let fontFamily;
|
|
@@ -225126,7 +225853,7 @@ function extractBlockFormatting(node3) {
|
|
|
225126
225853
|
return {
|
|
225127
225854
|
...styleId ? { styleId } : {},
|
|
225128
225855
|
...fontFamily ? { fontFamily } : {},
|
|
225129
|
-
...fontSize !== undefined ? { fontSize } : {},
|
|
225856
|
+
...fontSize !== undefined ? { fontSize } : styleCtx ? { fontSize: resolveBlockFontSizePt(styleCtx, styleId) } : {},
|
|
225130
225857
|
...bold2 ? { bold: bold2 } : {},
|
|
225131
225858
|
...underline ? { underline } : {},
|
|
225132
225859
|
...color2 ? { color: color2 } : {},
|
|
@@ -225198,10 +225925,12 @@ function blocksListWrapper(editor, input2) {
|
|
|
225198
225925
|
const limit = input2?.limit ?? total;
|
|
225199
225926
|
const paged = filtered.slice(offset$1, offset$1 + limit);
|
|
225200
225927
|
const rev = getRevision(editor);
|
|
225928
|
+
const styleCtx = buildStyleContext(editor);
|
|
225201
225929
|
return {
|
|
225202
225930
|
total,
|
|
225203
225931
|
blocks: paged.map((candidate, i4) => {
|
|
225204
225932
|
const textLength = computeTextContentLength(candidate.node);
|
|
225933
|
+
const fullText = input2?.includeText ? extractBlockText$1(candidate.node) : undefined;
|
|
225205
225934
|
const ref$1 = textLength > 0 ? encodeV4Ref({
|
|
225206
225935
|
v: 4,
|
|
225207
225936
|
rev,
|
|
@@ -225220,8 +225949,9 @@ function blocksListWrapper(editor, input2) {
|
|
|
225220
225949
|
nodeId: candidate.nodeId,
|
|
225221
225950
|
nodeType: candidate.nodeType,
|
|
225222
225951
|
textPreview: extractTextPreview(candidate.node),
|
|
225952
|
+
...fullText !== undefined ? { text: fullText } : {},
|
|
225223
225953
|
isEmpty: textLength === 0,
|
|
225224
|
-
...extractBlockFormatting(candidate.node),
|
|
225954
|
+
...extractBlockFormatting(candidate.node, styleCtx),
|
|
225225
225955
|
...ref$1 ? { ref: ref$1 } : {}
|
|
225226
225956
|
};
|
|
225227
225957
|
}),
|
|
@@ -226844,360 +227574,6 @@ function stylesApplyAdapter(editor, input2, options) {
|
|
|
226844
227574
|
}
|
|
226845
227575
|
}).result;
|
|
226846
227576
|
}
|
|
226847
|
-
function resolveParagraphBlock(editor, target) {
|
|
226848
|
-
const candidate = findBlockByIdStrict(getBlockIndex(editor), target);
|
|
226849
|
-
if (!PARAGRAPH_NODE_TYPES.has(candidate.nodeType))
|
|
226850
|
-
throw new DocumentApiAdapterError("INVALID_TARGET", `format.paragraph.* / styles.paragraph.* operations require a paragraph, heading, or listItem target. Got "${candidate.nodeType}".`, { nodeType: candidate.nodeType });
|
|
226851
|
-
return candidate;
|
|
226852
|
-
}
|
|
226853
|
-
function successResult(target) {
|
|
226854
|
-
return {
|
|
226855
|
-
success: true,
|
|
226856
|
-
target,
|
|
226857
|
-
resolution: { target }
|
|
226858
|
-
};
|
|
226859
|
-
}
|
|
226860
|
-
function noOpResult(operation) {
|
|
226861
|
-
return {
|
|
226862
|
-
success: false,
|
|
226863
|
-
failure: {
|
|
226864
|
-
code: "NO_OP",
|
|
226865
|
-
message: `${operation} produced no changes.`
|
|
226866
|
-
}
|
|
226867
|
-
};
|
|
226868
|
-
}
|
|
226869
|
-
function getPreservedCharacterStyleAttrs(mark2) {
|
|
226870
|
-
const styleId = mark2.attrs?.[TEXT_STYLE_CHARACTER_STYLE_ATTR];
|
|
226871
|
-
if (typeof styleId !== "string" || styleId.length === 0)
|
|
226872
|
-
return null;
|
|
226873
|
-
return { [TEXT_STYLE_CHARACTER_STYLE_ATTR]: styleId };
|
|
226874
|
-
}
|
|
226875
|
-
function hasTextStyleDirectFormatting(mark2) {
|
|
226876
|
-
return Object.entries(mark2.attrs ?? {}).some(([key2, value]) => key2 !== TEXT_STYLE_CHARACTER_STYLE_ATTR && value != null);
|
|
226877
|
-
}
|
|
226878
|
-
function clearTextStyleDirectFormatting(tr, from$1, to, mark2) {
|
|
226879
|
-
const preservedCharacterStyle = getPreservedCharacterStyleAttrs(mark2);
|
|
226880
|
-
const hadDirectFormatting = hasTextStyleDirectFormatting(mark2);
|
|
226881
|
-
if (!hadDirectFormatting && preservedCharacterStyle)
|
|
226882
|
-
return false;
|
|
226883
|
-
tr.removeMark?.(from$1, to, mark2);
|
|
226884
|
-
if (hadDirectFormatting && preservedCharacterStyle && mark2.type?.create && tr.addMark)
|
|
226885
|
-
tr.addMark(from$1, to, mark2.type.create(preservedCharacterStyle));
|
|
226886
|
-
return true;
|
|
226887
|
-
}
|
|
226888
|
-
function clearDirectFormattingInBlock(tr, pos, nodeSize2) {
|
|
226889
|
-
if (!tr.doc?.nodesBetween || !tr.removeMark || nodeSize2 <= 2)
|
|
226890
|
-
return false;
|
|
226891
|
-
let changed = false;
|
|
226892
|
-
tr.doc.nodesBetween(pos + 1, pos + nodeSize2 - 1, (node3, nodePos) => {
|
|
226893
|
-
if (!node3.isText || !Array.isArray(node3.marks) || node3.marks.length === 0 || typeof node3.nodeSize !== "number")
|
|
226894
|
-
return true;
|
|
226895
|
-
node3.marks.forEach((mark2) => {
|
|
226896
|
-
const markName = mark2?.type?.name;
|
|
226897
|
-
if (!markName || !DIRECT_FORMATTING_MARK_NAMES.has(markName))
|
|
226898
|
-
return;
|
|
226899
|
-
if (markName === "textStyle") {
|
|
226900
|
-
changed = clearTextStyleDirectFormatting(tr, nodePos, nodePos + node3.nodeSize, mark2) || changed;
|
|
226901
|
-
return;
|
|
226902
|
-
}
|
|
226903
|
-
tr.removeMark(nodePos, nodePos + node3.nodeSize, mark2);
|
|
226904
|
-
changed = true;
|
|
226905
|
-
});
|
|
226906
|
-
return true;
|
|
226907
|
-
});
|
|
226908
|
-
return changed;
|
|
226909
|
-
}
|
|
226910
|
-
function mutateParagraphProperties(editor, candidate, operation, target, transform, options, extras) {
|
|
226911
|
-
if (options?.dryRun)
|
|
226912
|
-
return successResult(target);
|
|
226913
|
-
if (executeDomainCommand(editor, () => {
|
|
226914
|
-
const node3 = editor.state.doc.nodeAt(candidate.pos);
|
|
226915
|
-
if (!node3)
|
|
226916
|
-
return false;
|
|
226917
|
-
const existing = node3.attrs.paragraphProperties ?? {};
|
|
226918
|
-
const updated = transform({ ...existing });
|
|
226919
|
-
if (JSON.stringify(existing) === JSON.stringify(updated))
|
|
226920
|
-
return false;
|
|
226921
|
-
const tr = editor.state.tr;
|
|
226922
|
-
if (extras?.clearDirectFormatting)
|
|
226923
|
-
clearDirectFormattingInBlock(tr, candidate.pos, node3.nodeSize);
|
|
226924
|
-
tr.setNodeMarkup(candidate.pos, undefined, {
|
|
226925
|
-
...node3.attrs,
|
|
226926
|
-
paragraphProperties: updated
|
|
226927
|
-
});
|
|
226928
|
-
editor.dispatch(tr);
|
|
226929
|
-
clearIndexCache(editor);
|
|
226930
|
-
return true;
|
|
226931
|
-
}, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
|
|
226932
|
-
return noOpResult(operation);
|
|
226933
|
-
return successResult(target);
|
|
226934
|
-
}
|
|
226935
|
-
function mergeDefinedFields(existing, patch3) {
|
|
226936
|
-
const result = { ...existing ?? {} };
|
|
226937
|
-
for (const [key2, value] of Object.entries(patch3))
|
|
226938
|
-
if (value !== undefined)
|
|
226939
|
-
result[key2] = value;
|
|
226940
|
-
return result;
|
|
226941
|
-
}
|
|
226942
|
-
function mergeIndentationFields(existing, patch3) {
|
|
226943
|
-
const result = mergeDefinedFields(existing, patch3);
|
|
226944
|
-
const firstLineWasUpdated = patch3.firstLine !== undefined;
|
|
226945
|
-
const hangingWasUpdated = patch3.hanging !== undefined;
|
|
226946
|
-
if (firstLineWasUpdated && !hangingWasUpdated)
|
|
226947
|
-
delete result.hanging;
|
|
226948
|
-
if (hangingWasUpdated && !firstLineWasUpdated)
|
|
226949
|
-
delete result.firstLine;
|
|
226950
|
-
return result;
|
|
226951
|
-
}
|
|
226952
|
-
function deleteKey(obj, key2) {
|
|
226953
|
-
const result = { ...obj };
|
|
226954
|
-
delete result[key2];
|
|
226955
|
-
return Object.keys(result).length > 0 ? result : undefined;
|
|
226956
|
-
}
|
|
226957
|
-
function addOrReplaceTabStop(existing, entry) {
|
|
226958
|
-
return [...(existing ?? []).filter((t) => t.tab.pos !== entry.tab.pos), entry].sort((a2, b$1) => a2.tab.pos - b$1.tab.pos);
|
|
226959
|
-
}
|
|
226960
|
-
function removeTabStop(existing, position4) {
|
|
226961
|
-
const filtered = (existing ?? []).filter((t) => t.tab.pos !== position4);
|
|
226962
|
-
return filtered.length > 0 ? filtered : undefined;
|
|
226963
|
-
}
|
|
226964
|
-
function paragraphsSetStyleWrapper(editor, input2, options) {
|
|
226965
|
-
rejectTrackedMode("styles.paragraph.setStyle", options);
|
|
226966
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "styles.paragraph.setStyle", input2.target, (pPr) => ({
|
|
226967
|
-
...pPr,
|
|
226968
|
-
styleId: input2.styleId
|
|
226969
|
-
}), options, { clearDirectFormatting: true });
|
|
226970
|
-
}
|
|
226971
|
-
function paragraphsClearStyleWrapper(editor, input2, options) {
|
|
226972
|
-
rejectTrackedMode("styles.paragraph.clearStyle", options);
|
|
226973
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "styles.paragraph.clearStyle", input2.target, (pPr) => {
|
|
226974
|
-
const result = { ...pPr };
|
|
226975
|
-
delete result.styleId;
|
|
226976
|
-
return result;
|
|
226977
|
-
}, options);
|
|
226978
|
-
}
|
|
226979
|
-
function paragraphsResetDirectFormattingWrapper(editor, input2, options) {
|
|
226980
|
-
rejectTrackedMode("format.paragraph.resetDirectFormatting", options);
|
|
226981
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.resetDirectFormatting", input2.target, (pPr) => {
|
|
226982
|
-
const result = {};
|
|
226983
|
-
if (pPr.styleId !== undefined)
|
|
226984
|
-
result.styleId = pPr.styleId;
|
|
226985
|
-
if (pPr.numberingProperties !== undefined)
|
|
226986
|
-
result.numberingProperties = pPr.numberingProperties;
|
|
226987
|
-
if (pPr.sectPr !== undefined)
|
|
226988
|
-
result.sectPr = pPr.sectPr;
|
|
226989
|
-
return result;
|
|
226990
|
-
}, options);
|
|
226991
|
-
}
|
|
226992
|
-
function paragraphsSetAlignmentWrapper(editor, input2, options) {
|
|
226993
|
-
rejectTrackedMode("format.paragraph.setAlignment", options);
|
|
226994
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setAlignment", input2.target, (pPr) => ({
|
|
226995
|
-
...pPr,
|
|
226996
|
-
justification: ALIGNMENT_TO_JUSTIFICATION[input2.alignment]
|
|
226997
|
-
}), options);
|
|
226998
|
-
}
|
|
226999
|
-
function paragraphsClearAlignmentWrapper(editor, input2, options) {
|
|
227000
|
-
rejectTrackedMode("format.paragraph.clearAlignment", options);
|
|
227001
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearAlignment", input2.target, (pPr) => {
|
|
227002
|
-
const result = { ...pPr };
|
|
227003
|
-
delete result.justification;
|
|
227004
|
-
return result;
|
|
227005
|
-
}, options);
|
|
227006
|
-
}
|
|
227007
|
-
function paragraphsSetIndentationWrapper(editor, input2, options) {
|
|
227008
|
-
rejectTrackedMode("format.paragraph.setIndentation", options);
|
|
227009
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setIndentation", input2.target, (pPr) => ({
|
|
227010
|
-
...pPr,
|
|
227011
|
-
indent: mergeIndentationFields(pPr.indent, {
|
|
227012
|
-
left: input2.left,
|
|
227013
|
-
right: input2.right,
|
|
227014
|
-
firstLine: input2.firstLine,
|
|
227015
|
-
hanging: input2.hanging
|
|
227016
|
-
})
|
|
227017
|
-
}), options);
|
|
227018
|
-
}
|
|
227019
|
-
function paragraphsClearIndentationWrapper(editor, input2, options) {
|
|
227020
|
-
rejectTrackedMode("format.paragraph.clearIndentation", options);
|
|
227021
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearIndentation", input2.target, (pPr) => {
|
|
227022
|
-
const result = { ...pPr };
|
|
227023
|
-
delete result.indent;
|
|
227024
|
-
return result;
|
|
227025
|
-
}, options);
|
|
227026
|
-
}
|
|
227027
|
-
function paragraphsSetSpacingWrapper(editor, input2, options) {
|
|
227028
|
-
rejectTrackedMode("format.paragraph.setSpacing", options);
|
|
227029
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setSpacing", input2.target, (pPr) => ({
|
|
227030
|
-
...pPr,
|
|
227031
|
-
spacing: mergeDefinedFields(pPr.spacing, {
|
|
227032
|
-
before: input2.before,
|
|
227033
|
-
after: input2.after,
|
|
227034
|
-
line: input2.line,
|
|
227035
|
-
lineRule: input2.lineRule
|
|
227036
|
-
})
|
|
227037
|
-
}), options);
|
|
227038
|
-
}
|
|
227039
|
-
function paragraphsClearSpacingWrapper(editor, input2, options) {
|
|
227040
|
-
rejectTrackedMode("format.paragraph.clearSpacing", options);
|
|
227041
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearSpacing", input2.target, (pPr) => {
|
|
227042
|
-
const result = { ...pPr };
|
|
227043
|
-
delete result.spacing;
|
|
227044
|
-
return result;
|
|
227045
|
-
}, options);
|
|
227046
|
-
}
|
|
227047
|
-
function paragraphsSetKeepOptionsWrapper(editor, input2, options) {
|
|
227048
|
-
rejectTrackedMode("format.paragraph.setKeepOptions", options);
|
|
227049
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setKeepOptions", input2.target, (pPr) => {
|
|
227050
|
-
const result = { ...pPr };
|
|
227051
|
-
if (input2.keepNext !== undefined)
|
|
227052
|
-
result.keepNext = input2.keepNext;
|
|
227053
|
-
if (input2.keepLines !== undefined)
|
|
227054
|
-
result.keepLines = input2.keepLines;
|
|
227055
|
-
if (input2.widowControl !== undefined)
|
|
227056
|
-
result.widowControl = input2.widowControl;
|
|
227057
|
-
return result;
|
|
227058
|
-
}, options);
|
|
227059
|
-
}
|
|
227060
|
-
function paragraphsSetOutlineLevelWrapper(editor, input2, options) {
|
|
227061
|
-
rejectTrackedMode("format.paragraph.setOutlineLevel", options);
|
|
227062
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setOutlineLevel", input2.target, (pPr) => {
|
|
227063
|
-
if (input2.outlineLevel === null) {
|
|
227064
|
-
const result = { ...pPr };
|
|
227065
|
-
delete result.outlineLvl;
|
|
227066
|
-
return result;
|
|
227067
|
-
}
|
|
227068
|
-
return {
|
|
227069
|
-
...pPr,
|
|
227070
|
-
outlineLvl: input2.outlineLevel
|
|
227071
|
-
};
|
|
227072
|
-
}, options);
|
|
227073
|
-
}
|
|
227074
|
-
function paragraphsSetFlowOptionsWrapper(editor, input2, options) {
|
|
227075
|
-
rejectTrackedMode("format.paragraph.setFlowOptions", options);
|
|
227076
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setFlowOptions", input2.target, (pPr) => {
|
|
227077
|
-
const result = { ...pPr };
|
|
227078
|
-
if (input2.contextualSpacing !== undefined)
|
|
227079
|
-
result.contextualSpacing = input2.contextualSpacing;
|
|
227080
|
-
if (input2.pageBreakBefore !== undefined)
|
|
227081
|
-
result.pageBreakBefore = input2.pageBreakBefore;
|
|
227082
|
-
if (input2.suppressAutoHyphens !== undefined)
|
|
227083
|
-
result.suppressAutoHyphens = input2.suppressAutoHyphens;
|
|
227084
|
-
return result;
|
|
227085
|
-
}, options);
|
|
227086
|
-
}
|
|
227087
|
-
function paragraphsSetTabStopWrapper(editor, input2, options) {
|
|
227088
|
-
rejectTrackedMode("format.paragraph.setTabStop", options);
|
|
227089
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setTabStop", input2.target, (pPr) => {
|
|
227090
|
-
const entry = { tab: {
|
|
227091
|
-
pos: input2.position,
|
|
227092
|
-
tabType: input2.alignment,
|
|
227093
|
-
...input2.leader !== undefined && { leader: input2.leader }
|
|
227094
|
-
} };
|
|
227095
|
-
return {
|
|
227096
|
-
...pPr,
|
|
227097
|
-
tabStops: addOrReplaceTabStop(pPr.tabStops, entry)
|
|
227098
|
-
};
|
|
227099
|
-
}, options);
|
|
227100
|
-
}
|
|
227101
|
-
function paragraphsClearTabStopWrapper(editor, input2, options) {
|
|
227102
|
-
rejectTrackedMode("format.paragraph.clearTabStop", options);
|
|
227103
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearTabStop", input2.target, (pPr) => {
|
|
227104
|
-
const updated = removeTabStop(pPr.tabStops, input2.position);
|
|
227105
|
-
if (updated === undefined) {
|
|
227106
|
-
const result = { ...pPr };
|
|
227107
|
-
delete result.tabStops;
|
|
227108
|
-
return result;
|
|
227109
|
-
}
|
|
227110
|
-
return {
|
|
227111
|
-
...pPr,
|
|
227112
|
-
tabStops: updated
|
|
227113
|
-
};
|
|
227114
|
-
}, options);
|
|
227115
|
-
}
|
|
227116
|
-
function paragraphsClearAllTabStopsWrapper(editor, input2, options) {
|
|
227117
|
-
rejectTrackedMode("format.paragraph.clearAllTabStops", options);
|
|
227118
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearAllTabStops", input2.target, (pPr) => {
|
|
227119
|
-
const result = { ...pPr };
|
|
227120
|
-
delete result.tabStops;
|
|
227121
|
-
return result;
|
|
227122
|
-
}, options);
|
|
227123
|
-
}
|
|
227124
|
-
function paragraphsSetBorderWrapper(editor, input2, options) {
|
|
227125
|
-
rejectTrackedMode("format.paragraph.setBorder", options);
|
|
227126
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setBorder", input2.target, (pPr) => {
|
|
227127
|
-
const existing = pPr.borders ?? {};
|
|
227128
|
-
const border = { val: input2.style };
|
|
227129
|
-
if (input2.color !== undefined)
|
|
227130
|
-
border.color = input2.color;
|
|
227131
|
-
if (input2.size !== undefined)
|
|
227132
|
-
border.size = input2.size;
|
|
227133
|
-
if (input2.space !== undefined)
|
|
227134
|
-
border.space = input2.space;
|
|
227135
|
-
return {
|
|
227136
|
-
...pPr,
|
|
227137
|
-
borders: {
|
|
227138
|
-
...existing,
|
|
227139
|
-
[input2.side]: border
|
|
227140
|
-
}
|
|
227141
|
-
};
|
|
227142
|
-
}, options);
|
|
227143
|
-
}
|
|
227144
|
-
function paragraphsClearBorderWrapper(editor, input2, options) {
|
|
227145
|
-
rejectTrackedMode("format.paragraph.clearBorder", options);
|
|
227146
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearBorder", input2.target, (pPr) => {
|
|
227147
|
-
if (input2.side === "all") {
|
|
227148
|
-
const result = { ...pPr };
|
|
227149
|
-
delete result.borders;
|
|
227150
|
-
return result;
|
|
227151
|
-
}
|
|
227152
|
-
const updated = deleteKey(pPr.borders ?? {}, input2.side);
|
|
227153
|
-
if (updated === undefined) {
|
|
227154
|
-
const result = { ...pPr };
|
|
227155
|
-
delete result.borders;
|
|
227156
|
-
return result;
|
|
227157
|
-
}
|
|
227158
|
-
return {
|
|
227159
|
-
...pPr,
|
|
227160
|
-
borders: updated
|
|
227161
|
-
};
|
|
227162
|
-
}, options);
|
|
227163
|
-
}
|
|
227164
|
-
function paragraphsSetShadingWrapper(editor, input2, options) {
|
|
227165
|
-
rejectTrackedMode("format.paragraph.setShading", options);
|
|
227166
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setShading", input2.target, (pPr) => ({
|
|
227167
|
-
...pPr,
|
|
227168
|
-
shading: mergeDefinedFields(pPr.shading, {
|
|
227169
|
-
fill: input2.fill,
|
|
227170
|
-
color: input2.color,
|
|
227171
|
-
val: input2.pattern
|
|
227172
|
-
})
|
|
227173
|
-
}), options);
|
|
227174
|
-
}
|
|
227175
|
-
function paragraphsClearShadingWrapper(editor, input2, options) {
|
|
227176
|
-
rejectTrackedMode("format.paragraph.clearShading", options);
|
|
227177
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearShading", input2.target, (pPr) => {
|
|
227178
|
-
const result = { ...pPr };
|
|
227179
|
-
delete result.shading;
|
|
227180
|
-
return result;
|
|
227181
|
-
}, options);
|
|
227182
|
-
}
|
|
227183
|
-
function paragraphsSetDirectionWrapper(editor, input2, options) {
|
|
227184
|
-
rejectTrackedMode("format.paragraph.setDirection", options);
|
|
227185
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.setDirection", input2.target, (pPr) => {
|
|
227186
|
-
const result = { ...pPr };
|
|
227187
|
-
result.rightToLeft = input2.direction === "rtl";
|
|
227188
|
-
if (input2.alignmentPolicy === "matchDirection")
|
|
227189
|
-
result.justification = input2.direction === "rtl" ? "right" : "left";
|
|
227190
|
-
return result;
|
|
227191
|
-
}, options);
|
|
227192
|
-
}
|
|
227193
|
-
function paragraphsClearDirectionWrapper(editor, input2, options) {
|
|
227194
|
-
rejectTrackedMode("format.paragraph.clearDirection", options);
|
|
227195
|
-
return mutateParagraphProperties(editor, resolveParagraphBlock(editor, input2.target), "format.paragraph.clearDirection", input2.target, (pPr) => {
|
|
227196
|
-
const result = { ...pPr };
|
|
227197
|
-
delete result.rightToLeft;
|
|
227198
|
-
return result;
|
|
227199
|
-
}, options);
|
|
227200
|
-
}
|
|
227201
227577
|
function collectTrackInsertRefsInRange(editor, from$1, to) {
|
|
227202
227578
|
if (to <= from$1)
|
|
227203
227579
|
return;
|
|
@@ -233302,7 +233678,7 @@ function executeTextStep(ctx$1, targets, step3, rangeExecutor, spanExecutor) {
|
|
|
233302
233678
|
};
|
|
233303
233679
|
}
|
|
233304
233680
|
function ensureFormatStepCapabilities(ctx$1, step3) {
|
|
233305
|
-
const inlineKeys = Object.keys(step3.args.inline);
|
|
233681
|
+
const inlineKeys = step3.args.inline ? Object.keys(step3.args.inline) : [];
|
|
233306
233682
|
const capabilityIssue = getInlinePropertyCapabilityIssue(ctx$1.editor, inlineKeys, step3.op);
|
|
233307
233683
|
if (capabilityIssue)
|
|
233308
233684
|
throw planError(capabilityIssue.code, capabilityIssue.message, step3.id, capabilityIssue.details);
|
|
@@ -245509,6 +245885,14 @@ function getDelimiterValue(properties, name, fallback) {
|
|
|
245509
245885
|
return fallback;
|
|
245510
245886
|
return property.attributes?.["m:val"] ?? "";
|
|
245511
245887
|
}
|
|
245888
|
+
function isPlaceholderHidden(plcHide) {
|
|
245889
|
+
if (!plcHide)
|
|
245890
|
+
return false;
|
|
245891
|
+
const val = plcHide.attributes?.["m:val"];
|
|
245892
|
+
if (val === undefined)
|
|
245893
|
+
return true;
|
|
245894
|
+
return val === "1" || val === "true";
|
|
245895
|
+
}
|
|
245512
245896
|
function convertChildNodes(children, doc$12) {
|
|
245513
245897
|
const fragment2 = doc$12.createDocumentFragment();
|
|
245514
245898
|
for (const child of children) {
|
|
@@ -273901,7 +274285,7 @@ var Node$13 = class Node$14 {
|
|
|
273901
274285
|
console.warn("Failed to initialize developer tools:", error3);
|
|
273902
274286
|
}
|
|
273903
274287
|
}
|
|
273904
|
-
}, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, DEBUG_TEXT_REWRITE, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, FALLBACK_STORE_KEY = "__documentApiComments", REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SETTINGS_PART, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.26.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
|
|
274288
|
+
}, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, DEBUG_TEXT_REWRITE, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, OOXML_DEFAULT_FONT_SIZE_PT = 10, FALLBACK_STORE_KEY = "__documentApiComments", REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, 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, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SETTINGS_PART, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.26.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
|
|
273905
274289
|
const extensionLike = extension3;
|
|
273906
274290
|
const config2 = extensionLike?.config;
|
|
273907
274291
|
const ExtensionCtor = extensionLike?.constructor;
|
|
@@ -277239,7 +277623,7 @@ var Node$13 = class Node$14 {
|
|
|
277239
277623
|
}
|
|
277240
277624
|
element3.style.textAlign = resolveTextAlign(attrs?.alignment, rtl);
|
|
277241
277625
|
return rtl;
|
|
277242
|
-
}, shouldUseSegmentPositioning = (hasExplicitPositioning, hasSegments, isRtl) => hasExplicitPositioning && hasSegments && !isRtl, MATHML_NS$
|
|
277626
|
+
}, shouldUseSegmentPositioning = (hasExplicitPositioning, hasSegments, isRtl) => hasExplicitPositioning && hasSegments && !isRtl, MATHML_NS$18 = "http://www.w3.org/1998/Math/MathML", OPERATOR_CHARS, STY_TO_VARIANT, SCR_TO_VARIANT, convertMathRun = (node3, doc$12) => {
|
|
277243
277627
|
const elements = node3.elements ?? [];
|
|
277244
277628
|
let text5 = "";
|
|
277245
277629
|
for (const child of elements)
|
|
@@ -277253,66 +277637,66 @@ var Node$13 = class Node$14 {
|
|
|
277253
277637
|
return null;
|
|
277254
277638
|
const variant = resolveMathVariant(elements.find((el$1) => el$1.name === "m:rPr"));
|
|
277255
277639
|
const tag = classifyMathText(text5);
|
|
277256
|
-
const el = doc$12.createElementNS(MATHML_NS$
|
|
277640
|
+
const el = doc$12.createElementNS(MATHML_NS$18, tag);
|
|
277257
277641
|
el.textContent = text5;
|
|
277258
277642
|
if (variant)
|
|
277259
277643
|
el.setAttribute("mathvariant", variant);
|
|
277260
277644
|
return el;
|
|
277261
|
-
}, MATHML_NS$
|
|
277645
|
+
}, MATHML_NS$17 = "http://www.w3.org/1998/Math/MathML", convertFraction = (node3, doc$12, convertChildren) => {
|
|
277262
277646
|
const elements = node3.elements ?? [];
|
|
277263
277647
|
const num = elements.find((e) => e.name === "m:num");
|
|
277264
277648
|
const den = elements.find((e) => e.name === "m:den");
|
|
277265
|
-
const frac = doc$12.createElementNS(MATHML_NS$
|
|
277266
|
-
const numRow = doc$12.createElementNS(MATHML_NS$
|
|
277649
|
+
const frac = doc$12.createElementNS(MATHML_NS$17, "mfrac");
|
|
277650
|
+
const numRow = doc$12.createElementNS(MATHML_NS$17, "mrow");
|
|
277267
277651
|
numRow.appendChild(convertChildren(num?.elements ?? []));
|
|
277268
277652
|
frac.appendChild(numRow);
|
|
277269
|
-
const denRow = doc$12.createElementNS(MATHML_NS$
|
|
277653
|
+
const denRow = doc$12.createElementNS(MATHML_NS$17, "mrow");
|
|
277270
277654
|
denRow.appendChild(convertChildren(den?.elements ?? []));
|
|
277271
277655
|
frac.appendChild(denRow);
|
|
277272
277656
|
return frac;
|
|
277273
|
-
}, MATHML_NS$
|
|
277657
|
+
}, MATHML_NS$16 = "http://www.w3.org/1998/Math/MathML", convertBar = (node3, doc$12, convertChildren) => {
|
|
277274
277658
|
const elements = node3.elements ?? [];
|
|
277275
277659
|
const isUnder = elements.find((e) => e.name === "m:barPr")?.elements?.find((e) => e.name === "m:pos")?.attributes?.["m:val"] !== "top";
|
|
277276
277660
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277277
|
-
const wrapper = doc$12.createElementNS(MATHML_NS$
|
|
277661
|
+
const wrapper = doc$12.createElementNS(MATHML_NS$16, isUnder ? "munder" : "mover");
|
|
277278
277662
|
const baseContent = convertChildren(base5?.elements ?? []);
|
|
277279
|
-
const mrow = doc$12.createElementNS(MATHML_NS$
|
|
277663
|
+
const mrow = doc$12.createElementNS(MATHML_NS$16, "mrow");
|
|
277280
277664
|
mrow.appendChild(baseContent);
|
|
277281
277665
|
wrapper.appendChild(mrow);
|
|
277282
|
-
const accent = doc$12.createElementNS(MATHML_NS$
|
|
277666
|
+
const accent = doc$12.createElementNS(MATHML_NS$16, "mo");
|
|
277283
277667
|
accent.setAttribute("stretchy", "true");
|
|
277284
277668
|
accent.textContent = "‾";
|
|
277285
277669
|
wrapper.appendChild(accent);
|
|
277286
277670
|
return wrapper;
|
|
277287
|
-
}, MATHML_NS$
|
|
277671
|
+
}, MATHML_NS$15 = "http://www.w3.org/1998/Math/MathML", FUNCTION_APPLY_OPERATOR = "", convertFunction = (node3, doc$12, convertChildren) => {
|
|
277288
277672
|
const elements = node3.elements ?? [];
|
|
277289
277673
|
const functionName = elements.find((element3) => element3.name === "m:fName");
|
|
277290
277674
|
const argument = elements.find((element3) => element3.name === "m:e");
|
|
277291
|
-
const wrapper = doc$12.createElementNS(MATHML_NS$
|
|
277292
|
-
const functionNameRow = doc$12.createElementNS(MATHML_NS$
|
|
277675
|
+
const wrapper = doc$12.createElementNS(MATHML_NS$15, "mrow");
|
|
277676
|
+
const functionNameRow = doc$12.createElementNS(MATHML_NS$15, "mrow");
|
|
277293
277677
|
functionNameRow.appendChild(convertChildren(functionName?.elements ?? []));
|
|
277294
277678
|
forceNormalMathVariant(functionNameRow);
|
|
277295
277679
|
if (functionNameRow.childNodes.length > 0)
|
|
277296
277680
|
wrapper.appendChild(functionNameRow);
|
|
277297
|
-
const argumentRow = doc$12.createElementNS(MATHML_NS$
|
|
277681
|
+
const argumentRow = doc$12.createElementNS(MATHML_NS$15, "mrow");
|
|
277298
277682
|
argumentRow.appendChild(convertChildren(argument?.elements ?? []));
|
|
277299
277683
|
if (functionNameRow.childNodes.length > 0 && argumentRow.childNodes.length > 0) {
|
|
277300
|
-
const applyOperator = doc$12.createElementNS(MATHML_NS$
|
|
277684
|
+
const applyOperator = doc$12.createElementNS(MATHML_NS$15, "mo");
|
|
277301
277685
|
applyOperator.textContent = FUNCTION_APPLY_OPERATOR;
|
|
277302
277686
|
wrapper.appendChild(applyOperator);
|
|
277303
277687
|
}
|
|
277304
277688
|
if (argumentRow.childNodes.length > 0)
|
|
277305
277689
|
wrapper.appendChild(argumentRow);
|
|
277306
277690
|
return wrapper.childNodes.length > 0 ? wrapper : null;
|
|
277307
|
-
}, MATHML_NS$
|
|
277691
|
+
}, MATHML_NS$14 = "http://www.w3.org/1998/Math/MathML", DEFAULT_BEGIN_DELIMITER = "(", DEFAULT_END_DELIMITER = ")", DEFAULT_SEPARATOR_DELIMITER = "│", convertDelimiter = (node3, doc$12, convertChildren) => {
|
|
277308
277692
|
const elements = node3.elements ?? [];
|
|
277309
277693
|
const delimiterProps = elements.find((element3) => element3.name === "m:dPr");
|
|
277310
277694
|
const expressions = elements.filter((element3) => element3.name === "m:e");
|
|
277311
277695
|
const beginDelimiter = getDelimiterValue(delimiterProps, "m:begChr", DEFAULT_BEGIN_DELIMITER);
|
|
277312
277696
|
const endDelimiter = getDelimiterValue(delimiterProps, "m:endChr", DEFAULT_END_DELIMITER);
|
|
277313
277697
|
const separatorDelimiter = getDelimiterValue(delimiterProps, "m:sepChr", DEFAULT_SEPARATOR_DELIMITER);
|
|
277314
|
-
const wrapper = doc$12.createElementNS(MATHML_NS$
|
|
277315
|
-
const begin = doc$12.createElementNS(MATHML_NS$
|
|
277698
|
+
const wrapper = doc$12.createElementNS(MATHML_NS$14, "mrow");
|
|
277699
|
+
const begin = doc$12.createElementNS(MATHML_NS$14, "mo");
|
|
277316
277700
|
begin.textContent = beginDelimiter;
|
|
277317
277701
|
wrapper.appendChild(begin);
|
|
277318
277702
|
let renderedCount = 0;
|
|
@@ -277321,60 +277705,60 @@ var Node$13 = class Node$14 {
|
|
|
277321
277705
|
if (fragment2.childNodes.length === 0)
|
|
277322
277706
|
continue;
|
|
277323
277707
|
if (renderedCount > 0) {
|
|
277324
|
-
const separator = doc$12.createElementNS(MATHML_NS$
|
|
277708
|
+
const separator = doc$12.createElementNS(MATHML_NS$14, "mo");
|
|
277325
277709
|
separator.textContent = separatorDelimiter;
|
|
277326
277710
|
wrapper.appendChild(separator);
|
|
277327
277711
|
}
|
|
277328
|
-
const group = doc$12.createElementNS(MATHML_NS$
|
|
277712
|
+
const group = doc$12.createElementNS(MATHML_NS$14, "mrow");
|
|
277329
277713
|
group.appendChild(fragment2);
|
|
277330
277714
|
wrapper.appendChild(group);
|
|
277331
277715
|
renderedCount++;
|
|
277332
277716
|
}
|
|
277333
|
-
const end$1 = doc$12.createElementNS(MATHML_NS$
|
|
277717
|
+
const end$1 = doc$12.createElementNS(MATHML_NS$14, "mo");
|
|
277334
277718
|
end$1.textContent = endDelimiter;
|
|
277335
277719
|
wrapper.appendChild(end$1);
|
|
277336
277720
|
return wrapper;
|
|
277337
|
-
}, MATHML_NS$
|
|
277721
|
+
}, MATHML_NS$13 = "http://www.w3.org/1998/Math/MathML", convertSubscript = (node3, doc$12, convertChildren) => {
|
|
277338
277722
|
const elements = node3.elements ?? [];
|
|
277339
277723
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277340
277724
|
const sub = elements.find((e) => e.name === "m:sub");
|
|
277341
|
-
const msub = doc$12.createElementNS(MATHML_NS$
|
|
277342
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277725
|
+
const msub = doc$12.createElementNS(MATHML_NS$13, "msub");
|
|
277726
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$13, "mrow");
|
|
277343
277727
|
baseRow.appendChild(convertChildren(base5?.elements ?? []));
|
|
277344
277728
|
msub.appendChild(baseRow);
|
|
277345
|
-
const subRow = doc$12.createElementNS(MATHML_NS$
|
|
277729
|
+
const subRow = doc$12.createElementNS(MATHML_NS$13, "mrow");
|
|
277346
277730
|
subRow.appendChild(convertChildren(sub?.elements ?? []));
|
|
277347
277731
|
msub.appendChild(subRow);
|
|
277348
277732
|
return msub;
|
|
277349
|
-
}, MATHML_NS$
|
|
277733
|
+
}, MATHML_NS$12 = "http://www.w3.org/1998/Math/MathML", convertSuperscript = (node3, doc$12, convertChildren) => {
|
|
277350
277734
|
const elements = node3.elements ?? [];
|
|
277351
277735
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277352
277736
|
const sup = elements.find((e) => e.name === "m:sup");
|
|
277353
|
-
const msup = doc$12.createElementNS(MATHML_NS$
|
|
277354
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277737
|
+
const msup = doc$12.createElementNS(MATHML_NS$12, "msup");
|
|
277738
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$12, "mrow");
|
|
277355
277739
|
baseRow.appendChild(convertChildren(base5?.elements ?? []));
|
|
277356
277740
|
msup.appendChild(baseRow);
|
|
277357
|
-
const supRow = doc$12.createElementNS(MATHML_NS$
|
|
277741
|
+
const supRow = doc$12.createElementNS(MATHML_NS$12, "mrow");
|
|
277358
277742
|
supRow.appendChild(convertChildren(sup?.elements ?? []));
|
|
277359
277743
|
msup.appendChild(supRow);
|
|
277360
277744
|
return msup;
|
|
277361
|
-
}, MATHML_NS$
|
|
277745
|
+
}, MATHML_NS$11 = "http://www.w3.org/1998/Math/MathML", convertSubSuperscript = (node3, doc$12, convertChildren) => {
|
|
277362
277746
|
const elements = node3.elements ?? [];
|
|
277363
277747
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277364
277748
|
const sub = elements.find((e) => e.name === "m:sub");
|
|
277365
277749
|
const sup = elements.find((e) => e.name === "m:sup");
|
|
277366
|
-
const msubsup = doc$12.createElementNS(MATHML_NS$
|
|
277367
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277750
|
+
const msubsup = doc$12.createElementNS(MATHML_NS$11, "msubsup");
|
|
277751
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$11, "mrow");
|
|
277368
277752
|
baseRow.appendChild(convertChildren(base5?.elements ?? []));
|
|
277369
277753
|
msubsup.appendChild(baseRow);
|
|
277370
|
-
const subRow = doc$12.createElementNS(MATHML_NS$
|
|
277754
|
+
const subRow = doc$12.createElementNS(MATHML_NS$11, "mrow");
|
|
277371
277755
|
subRow.appendChild(convertChildren(sub?.elements ?? []));
|
|
277372
277756
|
msubsup.appendChild(subRow);
|
|
277373
|
-
const supRow = doc$12.createElementNS(MATHML_NS$
|
|
277757
|
+
const supRow = doc$12.createElementNS(MATHML_NS$11, "mrow");
|
|
277374
277758
|
supRow.appendChild(convertChildren(sup?.elements ?? []));
|
|
277375
277759
|
msubsup.appendChild(supRow);
|
|
277376
277760
|
return msubsup;
|
|
277377
|
-
}, MATHML_NS$
|
|
277761
|
+
}, MATHML_NS$10 = "http://www.w3.org/1998/Math/MathML", DEFAULT_ACCENT_CHAR = "̂", COMBINING_TO_SPACING, convertAccent = (node3, doc$12, convertChildren) => {
|
|
277378
277762
|
const elements = node3.elements ?? [];
|
|
277379
277763
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277380
277764
|
if (!base5)
|
|
@@ -277382,37 +277766,37 @@ var Node$13 = class Node$14 {
|
|
|
277382
277766
|
const chr = elements.find((e) => e.name === "m:accPr")?.elements?.find((e) => e.name === "m:chr");
|
|
277383
277767
|
const rawVal = chr?.attributes?.["m:val"];
|
|
277384
277768
|
const accentChar = chr === undefined ? DEFAULT_ACCENT_CHAR : rawVal && rawVal.length > 0 ? rawVal : "";
|
|
277385
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277769
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$10, "mrow");
|
|
277386
277770
|
baseRow.appendChild(convertChildren(base5.elements ?? []));
|
|
277387
277771
|
if (!accentChar)
|
|
277388
277772
|
return baseRow;
|
|
277389
277773
|
const renderChar = COMBINING_TO_SPACING[accentChar] ?? accentChar;
|
|
277390
|
-
const mover = doc$12.createElementNS(MATHML_NS$
|
|
277774
|
+
const mover = doc$12.createElementNS(MATHML_NS$10, "mover");
|
|
277391
277775
|
mover.setAttribute("accent", "true");
|
|
277392
277776
|
mover.appendChild(baseRow);
|
|
277393
|
-
const mo = doc$12.createElementNS(MATHML_NS$
|
|
277777
|
+
const mo = doc$12.createElementNS(MATHML_NS$10, "mo");
|
|
277394
277778
|
mo.setAttribute("stretchy", "true");
|
|
277395
277779
|
mo.textContent = renderChar;
|
|
277396
277780
|
mover.appendChild(mo);
|
|
277397
277781
|
return mover;
|
|
277398
|
-
}, MATHML_NS$
|
|
277782
|
+
}, MATHML_NS$9 = "http://www.w3.org/1998/Math/MathML", convertPreSubSuperscript = (node3, doc$12, convertChildren) => {
|
|
277399
277783
|
const elements = node3.elements ?? [];
|
|
277400
277784
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277401
277785
|
const sub = elements.find((e) => e.name === "m:sub");
|
|
277402
277786
|
const sup = elements.find((e) => e.name === "m:sup");
|
|
277403
|
-
const mmultiscripts = doc$12.createElementNS(MATHML_NS$
|
|
277404
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277787
|
+
const mmultiscripts = doc$12.createElementNS(MATHML_NS$9, "mmultiscripts");
|
|
277788
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$9, "mrow");
|
|
277405
277789
|
baseRow.appendChild(convertChildren(base5?.elements ?? []));
|
|
277406
277790
|
mmultiscripts.appendChild(baseRow);
|
|
277407
|
-
mmultiscripts.appendChild(doc$12.createElementNS(MATHML_NS$
|
|
277408
|
-
const subRow = doc$12.createElementNS(MATHML_NS$
|
|
277791
|
+
mmultiscripts.appendChild(doc$12.createElementNS(MATHML_NS$9, "mprescripts"));
|
|
277792
|
+
const subRow = doc$12.createElementNS(MATHML_NS$9, "mrow");
|
|
277409
277793
|
subRow.appendChild(convertChildren(sub?.elements ?? []));
|
|
277410
277794
|
mmultiscripts.appendChild(subRow);
|
|
277411
|
-
const supRow = doc$12.createElementNS(MATHML_NS$
|
|
277795
|
+
const supRow = doc$12.createElementNS(MATHML_NS$9, "mrow");
|
|
277412
277796
|
supRow.appendChild(convertChildren(sup?.elements ?? []));
|
|
277413
277797
|
mmultiscripts.appendChild(supRow);
|
|
277414
277798
|
return mmultiscripts;
|
|
277415
|
-
}, MATHML_NS$
|
|
277799
|
+
}, MATHML_NS$8 = "http://www.w3.org/1998/Math/MathML", stripAlignmentMarkers = (nodes) => nodes.map((node3) => {
|
|
277416
277800
|
if (node3?.type === "text" && typeof node3.text === "string" && node3.text.includes("&"))
|
|
277417
277801
|
return {
|
|
277418
277802
|
...node3,
|
|
@@ -277426,12 +277810,12 @@ var Node$13 = class Node$14 {
|
|
|
277426
277810
|
return node3;
|
|
277427
277811
|
}), convertEquationArray = (node3, doc$12, convertChildren) => {
|
|
277428
277812
|
const rows = (node3.elements ?? []).filter((e) => e.name === "m:e");
|
|
277429
|
-
const mtable = doc$12.createElementNS(MATHML_NS$
|
|
277813
|
+
const mtable = doc$12.createElementNS(MATHML_NS$8, "mtable");
|
|
277430
277814
|
mtable.setAttribute("columnalign", "left");
|
|
277431
277815
|
for (const row2 of rows) {
|
|
277432
|
-
const mtr = doc$12.createElementNS(MATHML_NS$
|
|
277433
|
-
const mtd = doc$12.createElementNS(MATHML_NS$
|
|
277434
|
-
const mrow = doc$12.createElementNS(MATHML_NS$
|
|
277816
|
+
const mtr = doc$12.createElementNS(MATHML_NS$8, "mtr");
|
|
277817
|
+
const mtd = doc$12.createElementNS(MATHML_NS$8, "mtd");
|
|
277818
|
+
const mrow = doc$12.createElementNS(MATHML_NS$8, "mrow");
|
|
277435
277819
|
const cleanedChildren = stripAlignmentMarkers(row2.elements ?? []);
|
|
277436
277820
|
mrow.appendChild(convertChildren(cleanedChildren));
|
|
277437
277821
|
mtd.appendChild(mrow);
|
|
@@ -277439,7 +277823,7 @@ var Node$13 = class Node$14 {
|
|
|
277439
277823
|
mtable.appendChild(mtr);
|
|
277440
277824
|
}
|
|
277441
277825
|
return mtable.childNodes.length > 0 ? mtable : null;
|
|
277442
|
-
}, MATHML_NS$
|
|
277826
|
+
}, MATHML_NS$7 = "http://www.w3.org/1998/Math/MathML", convertRadical = (node3, doc$12, convertChildren) => {
|
|
277443
277827
|
const elements = node3.elements ?? [];
|
|
277444
277828
|
const radPr = elements.find((e) => e.name === "m:radPr");
|
|
277445
277829
|
const deg = elements.find((e) => e.name === "m:deg");
|
|
@@ -277447,45 +277831,45 @@ var Node$13 = class Node$14 {
|
|
|
277447
277831
|
const degHideEl = radPr?.elements?.find((e) => e.name === "m:degHide");
|
|
277448
277832
|
const degHideVal = degHideEl?.attributes?.["m:val"];
|
|
277449
277833
|
if (degHideEl !== undefined && degHideVal !== "0" && degHideVal !== "false" && degHideVal !== "off" || !deg || (deg.elements ?? []).length === 0) {
|
|
277450
|
-
const msqrt = doc$12.createElementNS(MATHML_NS$
|
|
277451
|
-
const radicandRow$1 = doc$12.createElementNS(MATHML_NS$
|
|
277834
|
+
const msqrt = doc$12.createElementNS(MATHML_NS$7, "msqrt");
|
|
277835
|
+
const radicandRow$1 = doc$12.createElementNS(MATHML_NS$7, "mrow");
|
|
277452
277836
|
radicandRow$1.appendChild(convertChildren(radicand?.elements ?? []));
|
|
277453
277837
|
msqrt.appendChild(radicandRow$1);
|
|
277454
277838
|
return msqrt;
|
|
277455
277839
|
}
|
|
277456
|
-
const mroot = doc$12.createElementNS(MATHML_NS$
|
|
277457
|
-
const radicandRow = doc$12.createElementNS(MATHML_NS$
|
|
277840
|
+
const mroot = doc$12.createElementNS(MATHML_NS$7, "mroot");
|
|
277841
|
+
const radicandRow = doc$12.createElementNS(MATHML_NS$7, "mrow");
|
|
277458
277842
|
radicandRow.appendChild(convertChildren(radicand?.elements ?? []));
|
|
277459
277843
|
mroot.appendChild(radicandRow);
|
|
277460
|
-
const degRow = doc$12.createElementNS(MATHML_NS$
|
|
277844
|
+
const degRow = doc$12.createElementNS(MATHML_NS$7, "mrow");
|
|
277461
277845
|
degRow.appendChild(convertChildren(deg?.elements ?? []));
|
|
277462
277846
|
mroot.appendChild(degRow);
|
|
277463
277847
|
return mroot;
|
|
277464
|
-
}, MATHML_NS$
|
|
277848
|
+
}, MATHML_NS$6 = "http://www.w3.org/1998/Math/MathML", convertLowerLimit = (node3, doc$12, convertChildren) => {
|
|
277465
277849
|
const elements = node3.elements ?? [];
|
|
277466
277850
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277467
277851
|
const lim = elements.find((e) => e.name === "m:lim");
|
|
277468
|
-
const munder = doc$12.createElementNS(MATHML_NS$
|
|
277469
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277852
|
+
const munder = doc$12.createElementNS(MATHML_NS$6, "munder");
|
|
277853
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$6, "mrow");
|
|
277470
277854
|
baseRow.appendChild(convertChildren(base5?.elements ?? []));
|
|
277471
277855
|
munder.appendChild(baseRow);
|
|
277472
|
-
const limRow = doc$12.createElementNS(MATHML_NS$
|
|
277856
|
+
const limRow = doc$12.createElementNS(MATHML_NS$6, "mrow");
|
|
277473
277857
|
limRow.appendChild(convertChildren(lim?.elements ?? []));
|
|
277474
277858
|
munder.appendChild(limRow);
|
|
277475
277859
|
return munder;
|
|
277476
|
-
}, MATHML_NS$
|
|
277860
|
+
}, MATHML_NS$5 = "http://www.w3.org/1998/Math/MathML", convertUpperLimit = (node3, doc$12, convertChildren) => {
|
|
277477
277861
|
const elements = node3.elements ?? [];
|
|
277478
277862
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
277479
277863
|
const lim = elements.find((e) => e.name === "m:lim");
|
|
277480
|
-
const mover = doc$12.createElementNS(MATHML_NS$
|
|
277481
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277864
|
+
const mover = doc$12.createElementNS(MATHML_NS$5, "mover");
|
|
277865
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$5, "mrow");
|
|
277482
277866
|
baseRow.appendChild(convertChildren(base5?.elements ?? []));
|
|
277483
277867
|
mover.appendChild(baseRow);
|
|
277484
|
-
const limRow = doc$12.createElementNS(MATHML_NS$
|
|
277868
|
+
const limRow = doc$12.createElementNS(MATHML_NS$5, "mrow");
|
|
277485
277869
|
limRow.appendChild(convertChildren(lim?.elements ?? []));
|
|
277486
277870
|
mover.appendChild(limRow);
|
|
277487
277871
|
return mover;
|
|
277488
|
-
}, MATHML_NS$
|
|
277872
|
+
}, MATHML_NS$4 = "http://www.w3.org/1998/Math/MathML", DEFAULT_NARY_CHAR = "∫", INTEGRAL_CHARS, convertNary = (node3, doc$12, convertChildren) => {
|
|
277489
277873
|
const elements = node3.elements ?? [];
|
|
277490
277874
|
const naryPr = elements.find((e) => e.name === "m:naryPr");
|
|
277491
277875
|
const sub = elements.find((e) => e.name === "m:sub");
|
|
@@ -277512,7 +277896,7 @@ var Node$13 = class Node$14 {
|
|
|
277512
277896
|
const hasSub = renderSubChildren.length > 0 || sub !== undefined && !subHidden;
|
|
277513
277897
|
const hasSup = renderSupChildren.length > 0 || sup !== undefined && !supHidden;
|
|
277514
277898
|
const growOff = grow !== undefined && !isStOnOffTrue(grow);
|
|
277515
|
-
const mo = doc$12.createElementNS(MATHML_NS$
|
|
277899
|
+
const mo = doc$12.createElementNS(MATHML_NS$4, "mo");
|
|
277516
277900
|
mo.textContent = opChar;
|
|
277517
277901
|
if (growOff) {
|
|
277518
277902
|
mo.setAttribute("largeop", "false");
|
|
@@ -277521,38 +277905,38 @@ var Node$13 = class Node$14 {
|
|
|
277521
277905
|
let operatorEl;
|
|
277522
277906
|
if (hasSub && hasSup) {
|
|
277523
277907
|
const tag = isUndOvr ? "munderover" : "msubsup";
|
|
277524
|
-
operatorEl = doc$12.createElementNS(MATHML_NS$
|
|
277908
|
+
operatorEl = doc$12.createElementNS(MATHML_NS$4, tag);
|
|
277525
277909
|
operatorEl.appendChild(mo);
|
|
277526
|
-
const subRow = doc$12.createElementNS(MATHML_NS$
|
|
277910
|
+
const subRow = doc$12.createElementNS(MATHML_NS$4, "mrow");
|
|
277527
277911
|
subRow.appendChild(convertChildren(renderSubChildren));
|
|
277528
277912
|
operatorEl.appendChild(subRow);
|
|
277529
|
-
const supRow = doc$12.createElementNS(MATHML_NS$
|
|
277913
|
+
const supRow = doc$12.createElementNS(MATHML_NS$4, "mrow");
|
|
277530
277914
|
supRow.appendChild(convertChildren(renderSupChildren));
|
|
277531
277915
|
operatorEl.appendChild(supRow);
|
|
277532
277916
|
} else if (hasSub) {
|
|
277533
277917
|
const tag = isUndOvr ? "munder" : "msub";
|
|
277534
|
-
operatorEl = doc$12.createElementNS(MATHML_NS$
|
|
277918
|
+
operatorEl = doc$12.createElementNS(MATHML_NS$4, tag);
|
|
277535
277919
|
operatorEl.appendChild(mo);
|
|
277536
|
-
const subRow = doc$12.createElementNS(MATHML_NS$
|
|
277920
|
+
const subRow = doc$12.createElementNS(MATHML_NS$4, "mrow");
|
|
277537
277921
|
subRow.appendChild(convertChildren(renderSubChildren));
|
|
277538
277922
|
operatorEl.appendChild(subRow);
|
|
277539
277923
|
} else if (hasSup) {
|
|
277540
277924
|
const tag = isUndOvr ? "mover" : "msup";
|
|
277541
|
-
operatorEl = doc$12.createElementNS(MATHML_NS$
|
|
277925
|
+
operatorEl = doc$12.createElementNS(MATHML_NS$4, tag);
|
|
277542
277926
|
operatorEl.appendChild(mo);
|
|
277543
|
-
const supRow = doc$12.createElementNS(MATHML_NS$
|
|
277927
|
+
const supRow = doc$12.createElementNS(MATHML_NS$4, "mrow");
|
|
277544
277928
|
supRow.appendChild(convertChildren(renderSupChildren));
|
|
277545
277929
|
operatorEl.appendChild(supRow);
|
|
277546
277930
|
} else
|
|
277547
277931
|
operatorEl = mo;
|
|
277548
|
-
const wrapper = doc$12.createElementNS(MATHML_NS$
|
|
277932
|
+
const wrapper = doc$12.createElementNS(MATHML_NS$4, "mrow");
|
|
277549
277933
|
wrapper.appendChild(operatorEl);
|
|
277550
|
-
const bodyRow = doc$12.createElementNS(MATHML_NS$
|
|
277934
|
+
const bodyRow = doc$12.createElementNS(MATHML_NS$4, "mrow");
|
|
277551
277935
|
bodyRow.appendChild(convertChildren(body?.elements ?? []));
|
|
277552
277936
|
if (bodyRow.childNodes.length > 0)
|
|
277553
277937
|
wrapper.appendChild(bodyRow);
|
|
277554
277938
|
return wrapper;
|
|
277555
|
-
}, MATHML_NS$
|
|
277939
|
+
}, MATHML_NS$3 = "http://www.w3.org/1998/Math/MathML", convertPhantom = (node3, doc$12, convertChildren) => {
|
|
277556
277940
|
const elements = node3.elements ?? [];
|
|
277557
277941
|
const phantPr = elements.find((e) => e.name === "m:phantPr");
|
|
277558
277942
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
@@ -277565,11 +277949,11 @@ var Node$13 = class Node$14 {
|
|
|
277565
277949
|
const hasZeroDimension = zeroWid || zeroAsc || zeroDesc;
|
|
277566
277950
|
const content3 = convertChildren(base5?.elements ?? []);
|
|
277567
277951
|
if (!isVisible$1 && !hasZeroDimension) {
|
|
277568
|
-
const mphantom = doc$12.createElementNS(MATHML_NS$
|
|
277952
|
+
const mphantom = doc$12.createElementNS(MATHML_NS$3, "mphantom");
|
|
277569
277953
|
mphantom.appendChild(content3);
|
|
277570
277954
|
return mphantom;
|
|
277571
277955
|
}
|
|
277572
|
-
const mpadded = doc$12.createElementNS(MATHML_NS$
|
|
277956
|
+
const mpadded = doc$12.createElementNS(MATHML_NS$3, "mpadded");
|
|
277573
277957
|
const isZeroVal = (el) => el && (isOnOffTrue(el.attributes?.["m:val"]) || !el.attributes);
|
|
277574
277958
|
if (isZeroVal(zeroWid))
|
|
277575
277959
|
mpadded.setAttribute("width", "0");
|
|
@@ -277578,13 +277962,13 @@ var Node$13 = class Node$14 {
|
|
|
277578
277962
|
if (isZeroVal(zeroDesc))
|
|
277579
277963
|
mpadded.setAttribute("depth", "0");
|
|
277580
277964
|
if (!isVisible$1) {
|
|
277581
|
-
const mphantom = doc$12.createElementNS(MATHML_NS$
|
|
277965
|
+
const mphantom = doc$12.createElementNS(MATHML_NS$3, "mphantom");
|
|
277582
277966
|
mphantom.appendChild(content3);
|
|
277583
277967
|
mpadded.appendChild(mphantom);
|
|
277584
277968
|
} else
|
|
277585
277969
|
mpadded.appendChild(content3);
|
|
277586
277970
|
return mpadded;
|
|
277587
|
-
}, MATHML_NS$
|
|
277971
|
+
}, MATHML_NS$2 = "http://www.w3.org/1998/Math/MathML", DEFAULT_GROUP_CHAR = "⏟", VERT_JC_SHIFT_EM = 1, convertGroupCharacter = (node3, doc$12, convertChildren) => {
|
|
277588
277972
|
const elements = node3.elements ?? [];
|
|
277589
277973
|
const groupChrPr = elements.find((e) => e.name === "m:groupChrPr");
|
|
277590
277974
|
const base5 = elements.find((e) => e.name === "m:e");
|
|
@@ -277594,11 +277978,11 @@ var Node$13 = class Node$14 {
|
|
|
277594
277978
|
const groupChar = chr ? chr.attributes?.["m:val"] ?? "" : DEFAULT_GROUP_CHAR;
|
|
277595
277979
|
const position4 = pos?.attributes?.["m:val"] ?? "bot";
|
|
277596
277980
|
const vertJustify = vertJc ? vertJc.attributes?.["m:val"] ?? "bot" : null;
|
|
277597
|
-
const wrapper = doc$12.createElementNS(MATHML_NS$
|
|
277598
|
-
const baseRow = doc$12.createElementNS(MATHML_NS$
|
|
277981
|
+
const wrapper = doc$12.createElementNS(MATHML_NS$2, position4 === "top" ? "mover" : "munder");
|
|
277982
|
+
const baseRow = doc$12.createElementNS(MATHML_NS$2, "mrow");
|
|
277599
277983
|
baseRow.appendChild(convertChildren(base5?.elements ?? []));
|
|
277600
277984
|
wrapper.appendChild(baseRow);
|
|
277601
|
-
const mo = doc$12.createElementNS(MATHML_NS$
|
|
277985
|
+
const mo = doc$12.createElementNS(MATHML_NS$2, "mo");
|
|
277602
277986
|
mo.setAttribute("stretchy", "true");
|
|
277603
277987
|
mo.textContent = groupChar;
|
|
277604
277988
|
wrapper.appendChild(mo);
|
|
@@ -277610,6 +277994,31 @@ var Node$13 = class Node$14 {
|
|
|
277610
277994
|
}
|
|
277611
277995
|
}
|
|
277612
277996
|
return wrapper;
|
|
277997
|
+
}, MATHML_NS$1 = "http://www.w3.org/1998/Math/MathML", EMPTY_CELL_PLACEHOLDER = "□", convertMatrix = (node3, doc$12, convertChildren) => {
|
|
277998
|
+
const elements = node3.elements ?? [];
|
|
277999
|
+
const rows = elements.filter((e) => e.name === "m:mr");
|
|
278000
|
+
const plcHide = elements.find((e) => e.name === "m:mPr")?.elements?.find((e) => e.name === "m:plcHide");
|
|
278001
|
+
const hidePlaceholders = isPlaceholderHidden(plcHide);
|
|
278002
|
+
const mtable = doc$12.createElementNS(MATHML_NS$1, "mtable");
|
|
278003
|
+
for (const row2 of rows) {
|
|
278004
|
+
const mtr = doc$12.createElementNS(MATHML_NS$1, "mtr");
|
|
278005
|
+
const cells = row2.elements?.filter((e) => e.name === "m:e") ?? [];
|
|
278006
|
+
for (const cell2 of cells) {
|
|
278007
|
+
const mtd = doc$12.createElementNS(MATHML_NS$1, "mtd");
|
|
278008
|
+
const mrow = doc$12.createElementNS(MATHML_NS$1, "mrow");
|
|
278009
|
+
const fragment2 = convertChildren(cell2.elements ?? []);
|
|
278010
|
+
if (fragment2.childNodes.length === 0 && !hidePlaceholders) {
|
|
278011
|
+
const placeholder = doc$12.createElementNS(MATHML_NS$1, "mi");
|
|
278012
|
+
placeholder.textContent = EMPTY_CELL_PLACEHOLDER;
|
|
278013
|
+
mrow.appendChild(placeholder);
|
|
278014
|
+
} else
|
|
278015
|
+
mrow.appendChild(fragment2);
|
|
278016
|
+
mtd.appendChild(mrow);
|
|
278017
|
+
mtr.appendChild(mtd);
|
|
278018
|
+
}
|
|
278019
|
+
mtable.appendChild(mtr);
|
|
278020
|
+
}
|
|
278021
|
+
return mtable.childNodes.length > 0 ? mtable : null;
|
|
277613
278022
|
}, MATHML_NS = "http://www.w3.org/1998/Math/MathML", MATH_OBJECT_REGISTRY, ARGUMENT_ELEMENTS, LIST_MARKER_GAP$1 = 8, DEFAULT_PAGE_HEIGHT_PX = 1056, DEFAULT_VIRTUALIZED_PAGE_GAP = 72, LINK_DATASET_KEYS, MAX_HREF_LENGTH = 2048, SAFE_ANCHOR_PATTERN, MAX_DATA_URL_LENGTH, VALID_IMAGE_DATA_URL, MAX_RESIZE_MULTIPLIER = 3, FALLBACK_MAX_DIMENSION = 1000, MIN_IMAGE_DIMENSION = 20, AMBIGUOUS_LINK_PATTERNS, linkMetrics, TRACK_CHANGE_BASE_CLASS, TRACK_CHANGE_MODIFIER_CLASS, LINK_TARGET_SET, normalizeAnchor$1 = (value) => {
|
|
277614
278023
|
if (typeof value !== "string")
|
|
277615
278024
|
return null;
|
|
@@ -287725,12 +288134,12 @@ var Node$13 = class Node$14 {
|
|
|
287725
288134
|
return;
|
|
287726
288135
|
console.log(...args$1);
|
|
287727
288136
|
}, HEADER_FOOTER_INIT_BUDGET_MS = 200, MAX_ZOOM_WARNING_THRESHOLD = 10, MAX_SELECTION_RECTS_PER_USER = 100, SEMANTIC_RESIZE_DEBOUNCE_MS = 120, MIN_SEMANTIC_CONTENT_WIDTH_PX = 1, GLOBAL_PERFORMANCE, PresentationEditor, ICONS, TEXTS, tableActionsOptions;
|
|
287728
|
-
var
|
|
288137
|
+
var init_src_966rF_JP_es = __esm(() => {
|
|
287729
288138
|
init_rolldown_runtime_Bg48TavK_es();
|
|
287730
|
-
|
|
288139
|
+
init_SuperConverter_w6yaFRT5_es();
|
|
287731
288140
|
init_jszip_C49i9kUs_es();
|
|
287732
288141
|
init_uuid_qzgm05fK_es();
|
|
287733
|
-
|
|
288142
|
+
init_create_headless_toolbar_CHK8yJic_es();
|
|
287734
288143
|
init_constants_CGhJRd87_es();
|
|
287735
288144
|
init_dist_B8HfvhaK_es();
|
|
287736
288145
|
init_unified_Dsuw2be5_es();
|
|
@@ -310196,6 +310605,27 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
310196
310605
|
["text.insert::text.insert::same_target", "reject"]
|
|
310197
310606
|
]);
|
|
310198
310607
|
MATRIX_EXEMPT_OPS = new Set(["assert"]);
|
|
310608
|
+
PARAGRAPH_NODE_TYPES = new Set([
|
|
310609
|
+
"paragraph",
|
|
310610
|
+
"heading",
|
|
310611
|
+
"listItem"
|
|
310612
|
+
]);
|
|
310613
|
+
DIRECT_FORMATTING_MARK_NAMES = new Set([
|
|
310614
|
+
"textStyle",
|
|
310615
|
+
"bold",
|
|
310616
|
+
"italic",
|
|
310617
|
+
"underline",
|
|
310618
|
+
"strike",
|
|
310619
|
+
"subscript",
|
|
310620
|
+
"superscript",
|
|
310621
|
+
"highlight"
|
|
310622
|
+
]);
|
|
310623
|
+
ALIGNMENT_TO_JUSTIFICATION = {
|
|
310624
|
+
left: "left",
|
|
310625
|
+
center: "center",
|
|
310626
|
+
right: "right",
|
|
310627
|
+
justify: "both"
|
|
310628
|
+
};
|
|
310199
310629
|
DEFAULT_INLINE_POLICY = {
|
|
310200
310630
|
mode: "preserve",
|
|
310201
310631
|
onNonUniform: "majority"
|
|
@@ -310723,27 +311153,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
310723
311153
|
underline: new Set(["color", "w:color"]),
|
|
310724
311154
|
borders: new Set(["color"])
|
|
310725
311155
|
};
|
|
310726
|
-
PARAGRAPH_NODE_TYPES = new Set([
|
|
310727
|
-
"paragraph",
|
|
310728
|
-
"heading",
|
|
310729
|
-
"listItem"
|
|
310730
|
-
]);
|
|
310731
|
-
DIRECT_FORMATTING_MARK_NAMES = new Set([
|
|
310732
|
-
"textStyle",
|
|
310733
|
-
"bold",
|
|
310734
|
-
"italic",
|
|
310735
|
-
"underline",
|
|
310736
|
-
"strike",
|
|
310737
|
-
"subscript",
|
|
310738
|
-
"superscript",
|
|
310739
|
-
"highlight"
|
|
310740
|
-
]);
|
|
310741
|
-
ALIGNMENT_TO_JUSTIFICATION = {
|
|
310742
|
-
left: "left",
|
|
310743
|
-
center: "center",
|
|
310744
|
-
right: "right",
|
|
310745
|
-
justify: "both"
|
|
310746
|
-
};
|
|
310747
311156
|
ORDERED_PRESET_CONFIG = {
|
|
310748
311157
|
decimal: {
|
|
310749
311158
|
numFmt: "decimal",
|
|
@@ -313503,6 +313912,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
313503
313912
|
"m:func": convertFunction,
|
|
313504
313913
|
"m:limLow": convertLowerLimit,
|
|
313505
313914
|
"m:limUpp": convertUpperLimit,
|
|
313915
|
+
"m:m": convertMatrix,
|
|
313506
313916
|
"m:nary": convertNary,
|
|
313507
313917
|
"m:phant": convertPhantom,
|
|
313508
313918
|
"m:rad": convertRadical,
|
|
@@ -313512,8 +313922,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
313512
313922
|
"m:sPre": convertPreSubSuperscript,
|
|
313513
313923
|
"m:borderBox": null,
|
|
313514
313924
|
"m:box": null,
|
|
313515
|
-
"m:groupChr": convertGroupCharacter
|
|
313516
|
-
"m:m": null
|
|
313925
|
+
"m:groupChr": convertGroupCharacter
|
|
313517
313926
|
};
|
|
313518
313927
|
ARGUMENT_ELEMENTS = new Set([
|
|
313519
313928
|
"m:e",
|
|
@@ -322485,11 +322894,11 @@ var init_zipper_DbkgrypV_es = __esm(() => {
|
|
|
322485
322894
|
|
|
322486
322895
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
322487
322896
|
var init_super_editor_es = __esm(() => {
|
|
322488
|
-
|
|
322489
|
-
|
|
322897
|
+
init_src_966rF_JP_es();
|
|
322898
|
+
init_SuperConverter_w6yaFRT5_es();
|
|
322490
322899
|
init_jszip_C49i9kUs_es();
|
|
322491
322900
|
init_xml_js_CqGKpaft_es();
|
|
322492
|
-
|
|
322901
|
+
init_create_headless_toolbar_CHK8yJic_es();
|
|
322493
322902
|
init_constants_CGhJRd87_es();
|
|
322494
322903
|
init_dist_B8HfvhaK_es();
|
|
322495
322904
|
init_unified_Dsuw2be5_es();
|
|
@@ -375057,6 +375466,31 @@ function extractConstValues(variants) {
|
|
|
375057
375466
|
}
|
|
375058
375467
|
return values2;
|
|
375059
375468
|
}
|
|
375469
|
+
function isNestedValidationMessage(path2, message) {
|
|
375470
|
+
return message.startsWith(`${path2}.`) || message.startsWith(`${path2}[`);
|
|
375471
|
+
}
|
|
375472
|
+
function selectRepeatedActionableOneOfError(path2, errors2) {
|
|
375473
|
+
const counts = new Map;
|
|
375474
|
+
for (const error4 of errors2) {
|
|
375475
|
+
counts.set(error4, (counts.get(error4) ?? 0) + 1);
|
|
375476
|
+
}
|
|
375477
|
+
let bestMessage = null;
|
|
375478
|
+
let bestScore = 0;
|
|
375479
|
+
for (const [message, count2] of counts.entries()) {
|
|
375480
|
+
if (count2 < 2)
|
|
375481
|
+
continue;
|
|
375482
|
+
const nested = isNestedValidationMessage(path2, message);
|
|
375483
|
+
const isShapeError = message.includes(" is not allowed by schema.") || message.includes(" is required.");
|
|
375484
|
+
if (!nested && !isShapeError)
|
|
375485
|
+
continue;
|
|
375486
|
+
const score = count2 * 10 + (nested ? 2 : 0) + (isShapeError ? 1 : 0);
|
|
375487
|
+
if (score > bestScore) {
|
|
375488
|
+
bestScore = score;
|
|
375489
|
+
bestMessage = message;
|
|
375490
|
+
}
|
|
375491
|
+
}
|
|
375492
|
+
return bestMessage;
|
|
375493
|
+
}
|
|
375060
375494
|
function validateValueAgainstTypeSpec(value2, schema, path2) {
|
|
375061
375495
|
if ("const" in schema) {
|
|
375062
375496
|
if (value2 !== schema.const) {
|
|
@@ -375076,8 +375510,9 @@ function validateValueAgainstTypeSpec(value2, schema, path2) {
|
|
|
375076
375510
|
}
|
|
375077
375511
|
}
|
|
375078
375512
|
const allowedValues = extractConstValues(variants);
|
|
375079
|
-
const
|
|
375080
|
-
|
|
375513
|
+
const selectedError = selectRepeatedActionableOneOfError(path2, errors2);
|
|
375514
|
+
const message = allowedValues.length > 0 ? `${path2} must be one of: ${allowedValues.join(", ")}.` : selectedError ?? `${path2} must match one of the allowed schema variants.`;
|
|
375515
|
+
throw new CliError("VALIDATION_ERROR", message, { errors: errors2, selectedError });
|
|
375081
375516
|
}
|
|
375082
375517
|
if (schema.type === "json")
|
|
375083
375518
|
return;
|
|
@@ -375156,7 +375591,11 @@ function validateResponseValueAgainstTypeSpec(value2, schema, path2) {
|
|
|
375156
375591
|
errors2.push(error4 instanceof Error ? error4.message : String(error4));
|
|
375157
375592
|
}
|
|
375158
375593
|
}
|
|
375159
|
-
|
|
375594
|
+
const selectedError = selectRepeatedActionableOneOfError(path2, errors2);
|
|
375595
|
+
throw new CliError("VALIDATION_ERROR", selectedError ?? `${path2} must match one of the allowed schema variants.`, {
|
|
375596
|
+
errors: errors2,
|
|
375597
|
+
selectedError
|
|
375598
|
+
});
|
|
375160
375599
|
}
|
|
375161
375600
|
if (schema.type === "json")
|
|
375162
375601
|
return;
|