@superdoc-dev/cli 0.5.0-next.42 → 0.5.0-next.44
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 +1311 -543
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -1217,9 +1217,168 @@ function formatInlineAliasExpectedResult(key) {
|
|
|
1217
1217
|
function projectFromDefinitions(fn) {
|
|
1218
1218
|
return Object.fromEntries(OPERATION_IDS.map((id) => [id, fn(id, OPERATION_DEFINITIONS[id])]));
|
|
1219
1219
|
}
|
|
1220
|
-
var NONE_FAILURES, NONE_THROWS, T_NOT_FOUND, T_NOT_FOUND_CAPABLE, T_PLAN_ENGINE, T_NOT_FOUND_COMMAND, T_IMAGE_COMMAND, T_CC_READ, T_CC_MUTATION, T_CC_TYPED, T_CC_TYPED_READ, T_CC_RAW, T_QUERY_MATCH, T_SECTION_CREATE, T_SECTION_READ, T_PARAGRAPH_MUTATION, T_SECTION_MUTATION, T_SECTION_SETTINGS_MUTATION, T_HEADER_FOOTER_MUTATION, T_STORY, T_REF_READ_LIST, T_REF_MUTATION, T_REF_MUTATION_REMOVE, T_REF_INSERT, T_PROTECTION_READ, T_PROTECTION_MUTATION, T_PERM_RANGE_READ, T_PERM_RANGE_MUTATION, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS, OPERATION_DEFINITIONS, OPERATION_IDS, SINGLETON_OPERATION_IDS, NAMESPACED_OPERATION_IDS;
|
|
1220
|
+
var INTENT_GROUP_META, NONE_FAILURES, NONE_THROWS, T_NOT_FOUND, T_NOT_FOUND_CAPABLE, T_PLAN_ENGINE, T_NOT_FOUND_COMMAND, T_IMAGE_COMMAND, T_CC_READ, T_CC_MUTATION, T_CC_TYPED, T_CC_TYPED_READ, T_CC_RAW, T_QUERY_MATCH, T_SECTION_CREATE, T_SECTION_READ, T_PARAGRAPH_MUTATION, T_SECTION_MUTATION, T_SECTION_SETTINGS_MUTATION, T_HEADER_FOOTER_MUTATION, T_STORY, T_REF_READ_LIST, T_REF_MUTATION, T_REF_MUTATION_REMOVE, T_REF_INSERT, T_PROTECTION_READ, T_PROTECTION_MUTATION, T_PERM_RANGE_READ, T_PERM_RANGE_MUTATION, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS, OPERATION_DEFINITIONS, OPERATION_IDS, SINGLETON_OPERATION_IDS, NAMESPACED_OPERATION_IDS;
|
|
1221
1221
|
var init_operation_definitions = __esm(() => {
|
|
1222
1222
|
init_inline_run_patch();
|
|
1223
|
+
INTENT_GROUP_META = {
|
|
1224
|
+
search: {
|
|
1225
|
+
toolName: "superdoc_search",
|
|
1226
|
+
description: "Refs expire after any mutation; always re-search before the next edit. " + "Find text patterns or nodes in the document and get ref handles for targeting edits and formatting. " + "Use this to locate content before calling superdoc_edit or superdoc_format. " + "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.",
|
|
1227
|
+
inputExamples: [
|
|
1228
|
+
{ select: { type: "text", pattern: "Introduction" }, require: "first" },
|
|
1229
|
+
{ select: { type: "text", pattern: "total amount" }, require: "all" },
|
|
1230
|
+
{ select: { type: "node", nodeType: "heading" }, require: "all" },
|
|
1231
|
+
{
|
|
1232
|
+
select: { type: "text", pattern: "contract" },
|
|
1233
|
+
within: { kind: "block", nodeType: "paragraph", nodeId: "abc123" },
|
|
1234
|
+
require: "first"
|
|
1235
|
+
}
|
|
1236
|
+
]
|
|
1237
|
+
},
|
|
1238
|
+
get_content: {
|
|
1239
|
+
toolName: "superdoc_get_content",
|
|
1240
|
+
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.",
|
|
1241
|
+
inputExamples: [
|
|
1242
|
+
{ action: "blocks" },
|
|
1243
|
+
{ action: "blocks", offset: 0, limit: 20, nodeTypes: ["heading", "paragraph"] },
|
|
1244
|
+
{ action: "text" },
|
|
1245
|
+
{ action: "info" }
|
|
1246
|
+
]
|
|
1247
|
+
},
|
|
1248
|
+
edit: {
|
|
1249
|
+
toolName: "superdoc_edit",
|
|
1250
|
+
description: "Refs expire after any mutation; always re-search before the next edit. " + "Modify document text: insert new content, replace existing text, delete a range, or undo/redo. " + "Use this for single text modifications. For 2+ edits that must succeed or fail atomically, use superdoc_mutations instead. " + '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. ' + 'Insert supports plain text (default), markdown, or html via the "type" parameter. Use "placement" (before, after, insideStart, insideEnd) to control position relative to the target. ' + 'Supports "dryRun" to preview changes and "changeMode: tracked" to record edits as tracked changes. ' + 'Do NOT build "target" objects manually when a ref is available; prefer "ref" for simpler, more reliable targeting.',
|
|
1251
|
+
inputExamples: [
|
|
1252
|
+
{ action: "replace", ref: "<handle.ref>", text: "new text here" },
|
|
1253
|
+
{ action: "insert", value: "Appended paragraph.", placement: "insideEnd" },
|
|
1254
|
+
{ action: "insert", ref: "<block.ref>", value: "Inserted before.", placement: "before" },
|
|
1255
|
+
{ action: "delete", ref: "<handle.ref>" },
|
|
1256
|
+
{ action: "undo" }
|
|
1257
|
+
]
|
|
1258
|
+
},
|
|
1259
|
+
create: {
|
|
1260
|
+
toolName: "superdoc_create",
|
|
1261
|
+
description: "You MUST call superdoc_format after this tool to match document styling. " + "Create a single paragraph, heading, or table in the document. Returns a nodeId for chaining subsequent creates and for use as a block target in superdoc_format. " + 'When the user asks for a "heading", use action "heading" with a level (default 1). Use action "paragraph" only when the user asks for regular body text. ' + 'Before creating, call superdoc_get_content blocks to read formatting from regular body text paragraphs (non-empty, non-title blocks with alignment "justify" or "left"). ' + 'After creating, re-fetch blocks with superdoc_get_content to get a fresh ref for the new block, then apply TWO format calls: (1) superdoc_format action "inline" for character styling, AND (2) superdoc_format action "set_alignment" with the block target for paragraph alignment. Both calls are REQUIRED. ' + 'For body paragraphs: inline {bold:false, underline:false, fontFamily, fontSize, color from body blocks}, alignment "justify". Ignore underline:true from blocks data for body text; it is a style artifact. For headings: inline {bold:true, underline:true, fontSize scaled up, fontFamily, color}, alignment "center". ' + '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.',
|
|
1262
|
+
inputExamples: [
|
|
1263
|
+
{ action: "paragraph", text: "New paragraph content.", at: { kind: "documentEnd" } },
|
|
1264
|
+
{
|
|
1265
|
+
action: "heading",
|
|
1266
|
+
text: "Section Title",
|
|
1267
|
+
level: 2,
|
|
1268
|
+
at: { kind: "after", target: { kind: "block", nodeType: "paragraph", nodeId: "<nodeId>" } }
|
|
1269
|
+
},
|
|
1270
|
+
{
|
|
1271
|
+
action: "paragraph",
|
|
1272
|
+
text: "Chained item.",
|
|
1273
|
+
at: { kind: "after", target: { kind: "block", nodeType: "paragraph", nodeId: "<previousNodeId>" } }
|
|
1274
|
+
},
|
|
1275
|
+
{ action: "table", rows: 3, columns: 4, at: { kind: "documentEnd" } }
|
|
1276
|
+
]
|
|
1277
|
+
},
|
|
1278
|
+
format: {
|
|
1279
|
+
toolName: "superdoc_format",
|
|
1280
|
+
description: "Change text and paragraph formatting. Use this after superdoc_create to style new content, or with a search ref to restyle existing text. " + '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. Format one block at a time. " + "Do NOT hardcode formatting values; always read them from superdoc_get_content blocks and replicate.",
|
|
1281
|
+
inputExamples: [
|
|
1282
|
+
{ action: "inline", ref: "<handle.ref>", inline: { bold: true } },
|
|
1283
|
+
{
|
|
1284
|
+
action: "inline",
|
|
1285
|
+
ref: "<create.ref>",
|
|
1286
|
+
inline: { fontFamily: "Calibri", fontSize: 11, color: "#000000", bold: false }
|
|
1287
|
+
},
|
|
1288
|
+
{
|
|
1289
|
+
action: "set_alignment",
|
|
1290
|
+
target: { kind: "block", nodeType: "paragraph", nodeId: "<nodeId>" },
|
|
1291
|
+
alignment: "center"
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
action: "set_flow_options",
|
|
1295
|
+
target: { kind: "block", nodeType: "paragraph", nodeId: "<nodeId>" },
|
|
1296
|
+
pageBreakBefore: true
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
action: "set_spacing",
|
|
1300
|
+
target: { kind: "block", nodeType: "paragraph", nodeId: "<nodeId>" },
|
|
1301
|
+
lineSpacing: { rule: "auto", value: 1.5 }
|
|
1302
|
+
}
|
|
1303
|
+
]
|
|
1304
|
+
},
|
|
1305
|
+
table: { toolName: "superdoc_table", description: "Table structure and cell operations" },
|
|
1306
|
+
list: {
|
|
1307
|
+
toolName: "superdoc_list",
|
|
1308
|
+
description: "Create and manipulate bullet and numbered lists. " + 'To create a list: first create all paragraphs at the SAME location using superdoc_create (chain each using the previous nodeId as the "at" target). ' + 'Then call action "create" with mode:"fromParagraphs", a preset ("disc" for bullet, "decimal" for numbered), and a range target: {from:{kind:"block", nodeType:"paragraph", nodeId:"<first>"}, to:{kind:"block", nodeType:"paragraph", nodeId:"<last>"}}. ' + "The range converts ALL paragraphs between from and to into list items. Make sure no other content exists between them. " + 'Action "set_type" converts between bullet and ordered (target any item in the list, kind:"ordered" or "bullet"). ' + 'Action "insert" adds a new item before/after a target list item. ' + 'Actions "indent" and "outdent" change nesting level; "set_level" jumps to a specific level (0-8). ' + 'Action "detach" converts a list item back to a plain paragraph. ' + "Do NOT target paragraphs with indent/outdent/set_type; these actions require a listItem target.",
|
|
1309
|
+
inputExamples: [
|
|
1310
|
+
{
|
|
1311
|
+
action: "create",
|
|
1312
|
+
mode: "fromParagraphs",
|
|
1313
|
+
preset: "disc",
|
|
1314
|
+
target: {
|
|
1315
|
+
from: { kind: "block", nodeType: "paragraph", nodeId: "<firstId>" },
|
|
1316
|
+
to: { kind: "block", nodeType: "paragraph", nodeId: "<lastId>" }
|
|
1317
|
+
}
|
|
1318
|
+
},
|
|
1319
|
+
{ action: "set_type", target: { kind: "block", nodeType: "listItem", nodeId: "<itemId>" }, kind: "ordered" },
|
|
1320
|
+
{
|
|
1321
|
+
action: "insert",
|
|
1322
|
+
target: { kind: "block", nodeType: "listItem", nodeId: "<itemId>" },
|
|
1323
|
+
position: "after",
|
|
1324
|
+
text: "New list item"
|
|
1325
|
+
},
|
|
1326
|
+
{ action: "indent", target: { kind: "block", nodeType: "listItem", nodeId: "<itemId>" } }
|
|
1327
|
+
]
|
|
1328
|
+
},
|
|
1329
|
+
comment: {
|
|
1330
|
+
toolName: "superdoc_comment",
|
|
1331
|
+
description: "Manage document comment threads: create, read, update, and delete. " + 'To create a comment, first use superdoc_search to find the target text, then pass action "create" with the comment text and a target: {kind:"text", blockId:"<blockId>", range:{start:<N>, end:<N>}} using the blockId and highlightRange from the search result. ' + 'For threaded replies, pass "parentId" with the parent comment ID. ' + 'Action "list" returns all comments with optional pagination (limit, offset) and filtering (includeResolved:true to include resolved). ' + 'Action "get" retrieves a single comment by ID. Action "update" changes status to "resolved" or marks as internal. Action "delete" removes a comment or reply by ID. ' + 'Do NOT pass "ref", "id", or "parentId" when creating a new top-level comment; only "action", "text", and "target" are needed.',
|
|
1332
|
+
inputExamples: [
|
|
1333
|
+
{
|
|
1334
|
+
action: "create",
|
|
1335
|
+
text: "Please review this section.",
|
|
1336
|
+
target: { kind: "text", blockId: "<blockId>", range: { start: 5, end: 25 } }
|
|
1337
|
+
},
|
|
1338
|
+
{ action: "list", limit: 20, offset: 0 },
|
|
1339
|
+
{ action: "update", id: "<commentId>", status: "resolved" },
|
|
1340
|
+
{ action: "delete", id: "<commentId>" }
|
|
1341
|
+
]
|
|
1342
|
+
},
|
|
1343
|
+
track_changes: {
|
|
1344
|
+
toolName: "superdoc_track_changes",
|
|
1345
|
+
description: "Review and resolve tracked changes (insertions, deletions, format changes) in the document. " + 'Action "list" returns all tracked changes with optional filtering by type (insert, delete, format) and pagination (limit, offset). Each change includes an ID, type, author, timestamp, and content preview. ' + 'Action "decide" accepts or rejects changes. Pass decision:"accept" to apply the change permanently, or decision:"reject" to discard it. ' + 'Target a single change with {id:"<changeId>"} or all changes at once with {scope:"all"}. ' + "Do NOT use this tool unless the document has tracked changes. Use superdoc_get_content info to check the tracked change count first.",
|
|
1346
|
+
inputExamples: [
|
|
1347
|
+
{ action: "list" },
|
|
1348
|
+
{ action: "list", type: "insert", limit: 10 },
|
|
1349
|
+
{ action: "decide", decision: "accept", target: { id: "<changeId>" } },
|
|
1350
|
+
{ action: "decide", decision: "reject", target: { scope: "all" } }
|
|
1351
|
+
]
|
|
1352
|
+
},
|
|
1353
|
+
link: { toolName: "superdoc_link", description: "Manage hyperlinks" },
|
|
1354
|
+
image: { toolName: "superdoc_image", description: "Image placement and properties" },
|
|
1355
|
+
section: { toolName: "superdoc_section", description: "Page layout, margins, columns" },
|
|
1356
|
+
mutations: {
|
|
1357
|
+
toolName: "superdoc_mutations",
|
|
1358
|
+
description: "All steps succeed or all fail; no partial application. " + "Execute multiple text edits atomically in a single batch. Use this INSTEAD OF multiple sequential superdoc_edit calls when you need 2+ text changes that should succeed or fail together. " + 'Each step has an id (e.g. "s1"), an op (text.rewrite, text.insert, text.delete, format.apply, assert), a "where" clause for targeting ({by:"select", select:{...}, require:"first"|"exactlyOne"|"all"} or {by:"ref", ref:"..."}), and "args" with operation-specific parameters. ' + 'Action "preview" dry-runs the plan without modifying the document. Action "apply" executes it. ' + "CRITICAL: split mutations by phase. Text mutations (text.rewrite, text.insert, text.delete) go in one call. Formatting (format.apply) goes in a separate call with fresh refs from a new superdoc_search. " + "Do NOT create two steps that target overlapping text in the same block; combine them into a single text.rewrite step. Overlapping steps fail with PLAN_CONFLICT_OVERLAP. " + "Do NOT use this for single edits; use superdoc_edit instead. " + "Do NOT mix text mutations and formatting in the same call.",
|
|
1359
|
+
inputExamples: [
|
|
1360
|
+
{
|
|
1361
|
+
action: "apply",
|
|
1362
|
+
atomic: true,
|
|
1363
|
+
changeMode: "direct",
|
|
1364
|
+
steps: [
|
|
1365
|
+
{
|
|
1366
|
+
id: "s1",
|
|
1367
|
+
op: "text.rewrite",
|
|
1368
|
+
where: { by: "select", select: { type: "text", pattern: "old term" }, require: "all" },
|
|
1369
|
+
args: { replacement: { text: "new term" } }
|
|
1370
|
+
},
|
|
1371
|
+
{
|
|
1372
|
+
id: "s2",
|
|
1373
|
+
op: "text.delete",
|
|
1374
|
+
where: { by: "select", select: { type: "text", pattern: " (deprecated)" }, require: "all" },
|
|
1375
|
+
args: {}
|
|
1376
|
+
}
|
|
1377
|
+
]
|
|
1378
|
+
}
|
|
1379
|
+
]
|
|
1380
|
+
}
|
|
1381
|
+
};
|
|
1223
1382
|
NONE_FAILURES = [];
|
|
1224
1383
|
NONE_THROWS = [];
|
|
1225
1384
|
T_NOT_FOUND = ["TARGET_NOT_FOUND"];
|
|
@@ -2151,7 +2310,9 @@ var init_operation_definitions = __esm(() => {
|
|
|
2151
2310
|
throws: T_PARAGRAPH_MUTATION
|
|
2152
2311
|
}),
|
|
2153
2312
|
referenceDocPath: "format/paragraph/set-flow-options.mdx",
|
|
2154
|
-
referenceGroup: "format.paragraph"
|
|
2313
|
+
referenceGroup: "format.paragraph",
|
|
2314
|
+
intentGroup: "format",
|
|
2315
|
+
intentAction: "set_flow_options"
|
|
2155
2316
|
},
|
|
2156
2317
|
"format.paragraph.setTabStop": {
|
|
2157
2318
|
memberPath: "format.paragraph.setTabStop",
|
|
@@ -3055,7 +3216,9 @@ var init_operation_definitions = __esm(() => {
|
|
|
3055
3216
|
throws: [...T_NOT_FOUND_COMMAND, "INVALID_TARGET", "AMBIGUOUS_TARGET"]
|
|
3056
3217
|
}),
|
|
3057
3218
|
referenceDocPath: "create/table.mdx",
|
|
3058
|
-
referenceGroup: "create"
|
|
3219
|
+
referenceGroup: "create",
|
|
3220
|
+
intentGroup: "create",
|
|
3221
|
+
intentAction: "table"
|
|
3059
3222
|
},
|
|
3060
3223
|
"tables.convertFromText": {
|
|
3061
3224
|
memberPath: "tables.convertFromText",
|
|
@@ -7469,7 +7632,7 @@ function optionalTargetLocatorWithPayload(payloadProperties, payloadRequired = [
|
|
|
7469
7632
|
objectSchema({
|
|
7470
7633
|
ref: {
|
|
7471
7634
|
type: "string",
|
|
7472
|
-
description: "Handle ref
|
|
7635
|
+
description: "Handle ref from superdoc_search result (pass handle.ref value directly). Preferred over building a target object."
|
|
7473
7636
|
},
|
|
7474
7637
|
...payloadProperties
|
|
7475
7638
|
}, ["ref", ...payloadRequired]),
|
|
@@ -8386,13 +8549,21 @@ var init_schemas = __esm(() => {
|
|
|
8386
8549
|
success: { const: true },
|
|
8387
8550
|
paragraph: paragraphAddressSchema,
|
|
8388
8551
|
insertionPoint: textAddressSchema,
|
|
8389
|
-
trackedChangeRefs: arraySchema(trackChangeRefSchema)
|
|
8552
|
+
trackedChangeRefs: arraySchema(trackChangeRefSchema),
|
|
8553
|
+
ref: {
|
|
8554
|
+
type: "string",
|
|
8555
|
+
description: "Ref handle for the created block. Pass directly to superdoc_format or superdoc_edit ref param without searching."
|
|
8556
|
+
}
|
|
8390
8557
|
}, ["success", "paragraph", "insertionPoint"]);
|
|
8391
8558
|
createHeadingSuccessSchema = objectSchema({
|
|
8392
8559
|
success: { const: true },
|
|
8393
8560
|
heading: headingAddressSchema,
|
|
8394
8561
|
insertionPoint: textAddressSchema,
|
|
8395
|
-
trackedChangeRefs: arraySchema(trackChangeRefSchema)
|
|
8562
|
+
trackedChangeRefs: arraySchema(trackChangeRefSchema),
|
|
8563
|
+
ref: {
|
|
8564
|
+
type: "string",
|
|
8565
|
+
description: "Ref handle for the created block. Pass directly to superdoc_format or superdoc_edit ref param without searching."
|
|
8566
|
+
}
|
|
8396
8567
|
}, ["success", "heading", "insertionPoint"]);
|
|
8397
8568
|
headingLevelSchema = { type: "integer", minimum: 1, maximum: 6 };
|
|
8398
8569
|
listsInsertSuccessSchema = objectSchema({
|
|
@@ -9492,8 +9663,13 @@ var init_schemas = __esm(() => {
|
|
|
9492
9663
|
fontFamily: { type: "string", description: "Font family from first text run." },
|
|
9493
9664
|
fontSize: { type: "number", description: "Font size from first text run." },
|
|
9494
9665
|
bold: { type: "boolean", description: "True if text is bold." },
|
|
9666
|
+
color: { type: "string", description: "Text color when explicitly set (e.g. '#000000')." },
|
|
9495
9667
|
alignment: { type: "string", description: "Paragraph alignment." },
|
|
9496
|
-
headingLevel: { type: "number", description: "Heading level (1-6)." }
|
|
9668
|
+
headingLevel: { type: "number", description: "Heading level (1-6)." },
|
|
9669
|
+
ref: {
|
|
9670
|
+
type: "string",
|
|
9671
|
+
description: "Ref handle for this block. Pass directly to superdoc_format or superdoc_edit ref param. Only present for non-empty blocks."
|
|
9672
|
+
}
|
|
9497
9673
|
}, ["ordinal", "nodeId", "nodeType"])
|
|
9498
9674
|
},
|
|
9499
9675
|
revision: { type: "string" }
|
|
@@ -15031,6 +15207,23 @@ var init_create = __esm(() => {
|
|
|
15031
15207
|
});
|
|
15032
15208
|
|
|
15033
15209
|
// ../../packages/document-api/src/blocks/blocks.ts
|
|
15210
|
+
function normalizeBlocksListInput(input) {
|
|
15211
|
+
if (!input)
|
|
15212
|
+
return input;
|
|
15213
|
+
if (input.limit != null && input.limit === 0) {
|
|
15214
|
+
const { limit: _, ...rest } = input;
|
|
15215
|
+
input = Object.keys(rest).length > 0 ? rest : undefined;
|
|
15216
|
+
if (!input)
|
|
15217
|
+
return input;
|
|
15218
|
+
}
|
|
15219
|
+
if (Array.isArray(input.nodeTypes) && input.nodeTypes.length === 0) {
|
|
15220
|
+
const { nodeTypes: _, ...rest } = input;
|
|
15221
|
+
input = Object.keys(rest).length > 0 ? rest : undefined;
|
|
15222
|
+
if (!input)
|
|
15223
|
+
return input;
|
|
15224
|
+
}
|
|
15225
|
+
return input;
|
|
15226
|
+
}
|
|
15034
15227
|
function validateBlocksListInput(input) {
|
|
15035
15228
|
if (!input)
|
|
15036
15229
|
return;
|
|
@@ -15125,8 +15318,9 @@ function validateBlocksDeleteRangeInput(input) {
|
|
|
15125
15318
|
validateBlockNodeAddress(input.end, "end");
|
|
15126
15319
|
}
|
|
15127
15320
|
function executeBlocksList(adapter, input) {
|
|
15128
|
-
|
|
15129
|
-
|
|
15321
|
+
const normalized = normalizeBlocksListInput(input);
|
|
15322
|
+
validateBlocksListInput(normalized);
|
|
15323
|
+
return adapter.list(normalized);
|
|
15130
15324
|
}
|
|
15131
15325
|
function executeBlocksDelete(adapter, input, options) {
|
|
15132
15326
|
validateBlocksDeleteInput(input);
|
|
@@ -65039,7 +65233,7 @@ var init_remark_gfm_BUJjZJLy_es = __esm(() => {
|
|
|
65039
65233
|
emptyOptions2 = {};
|
|
65040
65234
|
});
|
|
65041
65235
|
|
|
65042
|
-
// ../../packages/superdoc/dist/chunks/SuperConverter-
|
|
65236
|
+
// ../../packages/superdoc/dist/chunks/SuperConverter-DerEPM5g.es.js
|
|
65043
65237
|
function getExtensionConfigField(extension$1, field, context = { name: "" }) {
|
|
65044
65238
|
const fieldValue = extension$1.config[field];
|
|
65045
65239
|
if (typeof fieldValue === "function")
|
|
@@ -66850,7 +67044,7 @@ function optionalTargetLocatorWithPayload2(payloadProperties, payloadRequired =
|
|
|
66850
67044
|
objectSchema2({
|
|
66851
67045
|
ref: {
|
|
66852
67046
|
type: "string",
|
|
66853
|
-
description: "Handle ref
|
|
67047
|
+
description: "Handle ref from superdoc_search result (pass handle.ref value directly). Preferred over building a target object."
|
|
66854
67048
|
},
|
|
66855
67049
|
...payloadProperties
|
|
66856
67050
|
}, ["ref", ...payloadRequired]),
|
|
@@ -69277,6 +69471,23 @@ function executeCreateTableOfContents2(adapter, input, options) {
|
|
|
69277
69471
|
};
|
|
69278
69472
|
return adapter.tableOfContents(normalized, normalizeMutationOptions2(options));
|
|
69279
69473
|
}
|
|
69474
|
+
function normalizeBlocksListInput2(input) {
|
|
69475
|
+
if (!input)
|
|
69476
|
+
return input;
|
|
69477
|
+
if (input.limit != null && input.limit === 0) {
|
|
69478
|
+
const { limit: _, ...rest } = input;
|
|
69479
|
+
input = Object.keys(rest).length > 0 ? rest : undefined;
|
|
69480
|
+
if (!input)
|
|
69481
|
+
return input;
|
|
69482
|
+
}
|
|
69483
|
+
if (Array.isArray(input.nodeTypes) && input.nodeTypes.length === 0) {
|
|
69484
|
+
const { nodeTypes: _, ...rest } = input;
|
|
69485
|
+
input = Object.keys(rest).length > 0 ? rest : undefined;
|
|
69486
|
+
if (!input)
|
|
69487
|
+
return input;
|
|
69488
|
+
}
|
|
69489
|
+
return input;
|
|
69490
|
+
}
|
|
69280
69491
|
function validateBlocksListInput2(input) {
|
|
69281
69492
|
if (!input)
|
|
69282
69493
|
return;
|
|
@@ -69334,8 +69545,9 @@ function validateBlocksDeleteRangeInput2(input) {
|
|
|
69334
69545
|
validateBlockNodeAddress2(input.end, "end");
|
|
69335
69546
|
}
|
|
69336
69547
|
function executeBlocksList2(adapter, input) {
|
|
69337
|
-
|
|
69338
|
-
|
|
69548
|
+
const normalized = normalizeBlocksListInput2(input);
|
|
69549
|
+
validateBlocksListInput2(normalized);
|
|
69550
|
+
return adapter.list(normalized);
|
|
69339
69551
|
}
|
|
69340
69552
|
function executeBlocksDelete2(adapter, input, options) {
|
|
69341
69553
|
validateBlocksDeleteInput2(input);
|
|
@@ -85929,18 +86141,21 @@ function sanitizeHtml(html2, forbiddenTags = [
|
|
|
85929
86141
|
}
|
|
85930
86142
|
const container = resolvedDocument.createElement("div");
|
|
85931
86143
|
container.innerHTML = html2;
|
|
86144
|
+
const domNode = resolvedDocument.defaultView?.Node ?? globalThis.Node;
|
|
86145
|
+
const COMMENT_NODE = domNode?.COMMENT_NODE ?? 8;
|
|
86146
|
+
const ELEMENT_NODE = domNode?.ELEMENT_NODE ?? 1;
|
|
85932
86147
|
const stripWordListConditionalPrefixes = (root2) => {
|
|
85933
86148
|
const stripFromNode = (node3) => {
|
|
85934
86149
|
if (!node3?.childNodes)
|
|
85935
86150
|
return;
|
|
85936
86151
|
for (let i$1 = 0;i$1 < node3.childNodes.length; i$1 += 1) {
|
|
85937
86152
|
const current = node3.childNodes[i$1];
|
|
85938
|
-
if (current?.nodeType ===
|
|
86153
|
+
if (current?.nodeType === COMMENT_NODE && current.nodeValue?.includes("[if !supportLists]")) {
|
|
85939
86154
|
const nodesToStrip = [];
|
|
85940
86155
|
let endifComment = null;
|
|
85941
86156
|
for (let j = i$1 + 1;j < node3.childNodes.length; j += 1) {
|
|
85942
86157
|
const next = node3.childNodes[j];
|
|
85943
|
-
if (next?.nodeType ===
|
|
86158
|
+
if (next?.nodeType === COMMENT_NODE && next.nodeValue?.includes("[endif]")) {
|
|
85944
86159
|
endifComment = next;
|
|
85945
86160
|
break;
|
|
85946
86161
|
}
|
|
@@ -85958,7 +86173,7 @@ function sanitizeHtml(html2, forbiddenTags = [
|
|
|
85958
86173
|
i$1 -= 1;
|
|
85959
86174
|
continue;
|
|
85960
86175
|
}
|
|
85961
|
-
if (current?.nodeType ===
|
|
86176
|
+
if (current?.nodeType === ELEMENT_NODE)
|
|
85962
86177
|
stripFromNode(current);
|
|
85963
86178
|
}
|
|
85964
86179
|
};
|
|
@@ -86293,16 +86508,18 @@ function hasPreservableContent(element, knownTags) {
|
|
|
86293
86508
|
function createDocFromHTML(content$2, editor, options = {}) {
|
|
86294
86509
|
const { isImport = false } = options;
|
|
86295
86510
|
let parsedContent;
|
|
86511
|
+
let domDocument = options.document ?? editor?.options?.document ?? editor?.options?.mockDocument ?? (typeof document !== "undefined" ? document : null);
|
|
86296
86512
|
if (typeof content$2 === "string") {
|
|
86297
|
-
const domDocument = options.document ?? editor?.options?.document ?? editor?.options?.mockDocument ?? (typeof document !== "undefined" ? document : null);
|
|
86298
86513
|
const tempDiv = htmlHandler(stripHtmlStyles(content$2, domDocument), editor, domDocument);
|
|
86299
86514
|
if (isImport)
|
|
86300
86515
|
tempDiv.dataset.superdocImport = "true";
|
|
86301
86516
|
parsedContent = tempDiv;
|
|
86302
86517
|
} else
|
|
86303
86518
|
parsedContent = content$2;
|
|
86304
|
-
|
|
86305
|
-
|
|
86519
|
+
const domElement = parsedContent?.ownerDocument?.defaultView?.Element ?? domDocument?.defaultView?.Element ?? globalThis.Element;
|
|
86520
|
+
const parsedElement = (options.onUnsupportedContent || options.warnOnUnsupportedContent) && domElement && parsedContent instanceof domElement ? parsedContent : null;
|
|
86521
|
+
if (parsedElement) {
|
|
86522
|
+
const unsupported = detectUnsupportedContent(parsedElement, editor.schema);
|
|
86306
86523
|
if (unsupported.length > 0)
|
|
86307
86524
|
if (options.onUnsupportedContent)
|
|
86308
86525
|
options.onUnsupportedContent(unsupported);
|
|
@@ -116546,7 +116763,7 @@ var isRegExp = (value) => {
|
|
|
116546
116763
|
if (id2)
|
|
116547
116764
|
return trackedChanges.filter(({ mark }) => mark.attrs.id === id2);
|
|
116548
116765
|
return trackedChanges;
|
|
116549
|
-
}, DERIVED_ID_LENGTH = 24, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES2, VALID_APPEARANCES, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache, BIBLIOGRAPHY_NAMESPACE_URI = "http://schemas.openxmlformats.org/officeDocument/2006/bibliography", CUSTOM_XML_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", CUSTOM_XML_PROPS_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", DEFAULT_SELECTED_STYLE = "/APA.XSL", DEFAULT_STYLE_NAME = "APA", DEFAULT_VERSION = "6", API_TO_OOXML_SOURCE_TYPE, OOXML_TO_API_SOURCE_TYPE, SIMPLE_FIELD_TO_XML_TAG, XML_TAG_TO_SIMPLE_FIELD, import_lib2, FONT_FAMILY_FALLBACKS, DEFAULT_GENERIC_FALLBACK = "sans-serif", DEFAULT_FONT_SIZE_PT = 10, CURRENT_APP_VERSION = "1.23.
|
|
116766
|
+
}, DERIVED_ID_LENGTH = 24, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES2, VALID_APPEARANCES, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache, BIBLIOGRAPHY_NAMESPACE_URI = "http://schemas.openxmlformats.org/officeDocument/2006/bibliography", CUSTOM_XML_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", CUSTOM_XML_PROPS_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", DEFAULT_SELECTED_STYLE = "/APA.XSL", DEFAULT_STYLE_NAME = "APA", DEFAULT_VERSION = "6", API_TO_OOXML_SOURCE_TYPE, OOXML_TO_API_SOURCE_TYPE, SIMPLE_FIELD_TO_XML_TAG, XML_TAG_TO_SIMPLE_FIELD, import_lib2, FONT_FAMILY_FALLBACKS, DEFAULT_GENERIC_FALLBACK = "sans-serif", DEFAULT_FONT_SIZE_PT = 10, CURRENT_APP_VERSION = "1.23.1", collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
|
|
116550
116767
|
if (!runProps?.elements?.length || !state)
|
|
116551
116768
|
return;
|
|
116552
116769
|
const fontsNode = runProps.elements.find((el) => el.name === "w:rFonts");
|
|
@@ -116580,7 +116797,7 @@ var isRegExp = (value) => {
|
|
|
116580
116797
|
state.kern = kernNode.attributes["w:val"];
|
|
116581
116798
|
}
|
|
116582
116799
|
}, SuperConverter;
|
|
116583
|
-
var
|
|
116800
|
+
var init_SuperConverter_DerEPM5g_es = __esm(() => {
|
|
116584
116801
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
116585
116802
|
init_jszip_ChlR43oI_es();
|
|
116586
116803
|
init_xml_js_40FWvL78_es();
|
|
@@ -120525,7 +120742,9 @@ var init_SuperConverter_C6rVgqDZ_es = __esm(() => {
|
|
|
120525
120742
|
throws: T_PARAGRAPH_MUTATION2
|
|
120526
120743
|
}),
|
|
120527
120744
|
referenceDocPath: "format/paragraph/set-flow-options.mdx",
|
|
120528
|
-
referenceGroup: "format.paragraph"
|
|
120745
|
+
referenceGroup: "format.paragraph",
|
|
120746
|
+
intentGroup: "format",
|
|
120747
|
+
intentAction: "set_flow_options"
|
|
120529
120748
|
},
|
|
120530
120749
|
"format.paragraph.setTabStop": {
|
|
120531
120750
|
memberPath: "format.paragraph.setTabStop",
|
|
@@ -121622,7 +121841,9 @@ var init_SuperConverter_C6rVgqDZ_es = __esm(() => {
|
|
|
121622
121841
|
]
|
|
121623
121842
|
}),
|
|
121624
121843
|
referenceDocPath: "create/table.mdx",
|
|
121625
|
-
referenceGroup: "create"
|
|
121844
|
+
referenceGroup: "create",
|
|
121845
|
+
intentGroup: "create",
|
|
121846
|
+
intentAction: "table"
|
|
121626
121847
|
},
|
|
121627
121848
|
"tables.convertFromText": {
|
|
121628
121849
|
memberPath: "tables.convertFromText",
|
|
@@ -126141,7 +126362,11 @@ var init_SuperConverter_C6rVgqDZ_es = __esm(() => {
|
|
|
126141
126362
|
success: { const: true },
|
|
126142
126363
|
paragraph: paragraphAddressSchema2,
|
|
126143
126364
|
insertionPoint: textAddressSchema2,
|
|
126144
|
-
trackedChangeRefs: arraySchema2(trackChangeRefSchema2)
|
|
126365
|
+
trackedChangeRefs: arraySchema2(trackChangeRefSchema2),
|
|
126366
|
+
ref: {
|
|
126367
|
+
type: "string",
|
|
126368
|
+
description: "Ref handle for the created block. Pass directly to superdoc_format or superdoc_edit ref param without searching."
|
|
126369
|
+
}
|
|
126145
126370
|
}, [
|
|
126146
126371
|
"success",
|
|
126147
126372
|
"paragraph",
|
|
@@ -126151,7 +126376,11 @@ var init_SuperConverter_C6rVgqDZ_es = __esm(() => {
|
|
|
126151
126376
|
success: { const: true },
|
|
126152
126377
|
heading: headingAddressSchema2,
|
|
126153
126378
|
insertionPoint: textAddressSchema2,
|
|
126154
|
-
trackedChangeRefs: arraySchema2(trackChangeRefSchema2)
|
|
126379
|
+
trackedChangeRefs: arraySchema2(trackChangeRefSchema2),
|
|
126380
|
+
ref: {
|
|
126381
|
+
type: "string",
|
|
126382
|
+
description: "Ref handle for the created block. Pass directly to superdoc_format or superdoc_edit ref param without searching."
|
|
126383
|
+
}
|
|
126155
126384
|
}, [
|
|
126156
126385
|
"success",
|
|
126157
126386
|
"heading",
|
|
@@ -127664,6 +127893,10 @@ var init_SuperConverter_C6rVgqDZ_es = __esm(() => {
|
|
|
127664
127893
|
type: "boolean",
|
|
127665
127894
|
description: "True if text is bold."
|
|
127666
127895
|
},
|
|
127896
|
+
color: {
|
|
127897
|
+
type: "string",
|
|
127898
|
+
description: "Text color when explicitly set (e.g. '#000000')."
|
|
127899
|
+
},
|
|
127667
127900
|
alignment: {
|
|
127668
127901
|
type: "string",
|
|
127669
127902
|
description: "Paragraph alignment."
|
|
@@ -127671,6 +127904,10 @@ var init_SuperConverter_C6rVgqDZ_es = __esm(() => {
|
|
|
127671
127904
|
headingLevel: {
|
|
127672
127905
|
type: "number",
|
|
127673
127906
|
description: "Heading level (1-6)."
|
|
127907
|
+
},
|
|
127908
|
+
ref: {
|
|
127909
|
+
type: "string",
|
|
127910
|
+
description: "Ref handle for this block. Pass directly to superdoc_format or superdoc_edit ref param. Only present for non-empty blocks."
|
|
127674
127911
|
}
|
|
127675
127912
|
}, [
|
|
127676
127913
|
"ordinal",
|
|
@@ -173461,7 +173698,7 @@ var init_remark_gfm_DCND_V_3_es = __esm(() => {
|
|
|
173461
173698
|
init_remark_gfm_BUJjZJLy_es();
|
|
173462
173699
|
});
|
|
173463
173700
|
|
|
173464
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
173701
|
+
// ../../packages/superdoc/dist/chunks/src-sJ2EXqLW.es.js
|
|
173465
173702
|
function deleteProps(obj, propOrProps) {
|
|
173466
173703
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
173467
173704
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -174098,7 +174335,7 @@ function prosemirrorToYXmlFragment(doc$12, xmlFragment) {
|
|
|
174098
174335
|
}
|
|
174099
174336
|
function getSuperdocVersion() {
|
|
174100
174337
|
try {
|
|
174101
|
-
return "1.23.
|
|
174338
|
+
return "1.23.1";
|
|
174102
174339
|
} catch {
|
|
174103
174340
|
return "unknown";
|
|
174104
174341
|
}
|
|
@@ -176153,6 +176390,39 @@ function tableSeparatorNeeds$1(doc$12, pos) {
|
|
|
176153
176390
|
after: !nodeAfter || nodeAfter.type.name === "table"
|
|
176154
176391
|
};
|
|
176155
176392
|
}
|
|
176393
|
+
function computeParagraphContentBounds(paragraphPos, paragraphNode) {
|
|
176394
|
+
if (!Number.isFinite(paragraphPos) || !paragraphNode || !Number.isFinite(paragraphNode.nodeSize))
|
|
176395
|
+
return null;
|
|
176396
|
+
let from$1 = paragraphPos + 1;
|
|
176397
|
+
let to = paragraphPos + paragraphNode.nodeSize - 1;
|
|
176398
|
+
if (paragraphNode.firstChild?.type?.name === "run")
|
|
176399
|
+
from$1 = paragraphPos + 2;
|
|
176400
|
+
if (paragraphNode.lastChild?.type?.name === "run")
|
|
176401
|
+
to = paragraphPos + paragraphNode.nodeSize - 2;
|
|
176402
|
+
if (to < from$1)
|
|
176403
|
+
to = from$1;
|
|
176404
|
+
return {
|
|
176405
|
+
from: from$1,
|
|
176406
|
+
to
|
|
176407
|
+
};
|
|
176408
|
+
}
|
|
176409
|
+
function computeToggleListSelectionRange({ selectionWasCollapsed, affectedParagraphCount, firstParagraphPos, lastParagraphPos, firstNode, lastNode }) {
|
|
176410
|
+
if (affectedParagraphCount <= 0)
|
|
176411
|
+
return null;
|
|
176412
|
+
const firstBounds = computeParagraphContentBounds(firstParagraphPos, firstNode);
|
|
176413
|
+
const lastBounds = computeParagraphContentBounds(lastParagraphPos, lastNode);
|
|
176414
|
+
if (!firstBounds || !lastBounds)
|
|
176415
|
+
return null;
|
|
176416
|
+
if (selectionWasCollapsed && affectedParagraphCount === 1)
|
|
176417
|
+
return {
|
|
176418
|
+
from: lastBounds.to,
|
|
176419
|
+
to: lastBounds.to
|
|
176420
|
+
};
|
|
176421
|
+
return {
|
|
176422
|
+
from: firstBounds.from,
|
|
176423
|
+
to: lastBounds.to
|
|
176424
|
+
};
|
|
176425
|
+
}
|
|
176156
176426
|
function numFmtIsBullet(numFmt) {
|
|
176157
176427
|
if (numFmt == null)
|
|
176158
176428
|
return false;
|
|
@@ -182066,10 +182336,11 @@ function replaceCommand(wrap5, moveForward) {
|
|
|
182066
182336
|
return true;
|
|
182067
182337
|
};
|
|
182068
182338
|
}
|
|
182069
|
-
function
|
|
182070
|
-
|
|
182071
|
-
|
|
182072
|
-
|
|
182339
|
+
function buildSdtBlockSelector(escapedSdtId) {
|
|
182340
|
+
return `.${DOM_CLASS_NAMES.BLOCK_SDT}[${DATA_ATTRS.SDT_ID}="${escapedSdtId}"]`;
|
|
182341
|
+
}
|
|
182342
|
+
function buildAnnotationSelector() {
|
|
182343
|
+
return `.${DOM_CLASS_NAMES.ANNOTATION}[${DATA_ATTRS.PM_START}]`;
|
|
182073
182344
|
}
|
|
182074
182345
|
function isPresenting(editor) {
|
|
182075
182346
|
const presentationCtx = editor?.presentationEditor;
|
|
@@ -195810,6 +196081,21 @@ function collectTrackInsertRefsInRange(editor, from$1, to) {
|
|
|
195810
196081
|
entityId: id2
|
|
195811
196082
|
}));
|
|
195812
196083
|
}
|
|
196084
|
+
function mintBlockRef(editor, storyKey, nodeId, textLength) {
|
|
196085
|
+
return encodeV4Ref({
|
|
196086
|
+
v: 4,
|
|
196087
|
+
rev: getRevision(editor),
|
|
196088
|
+
storyKey,
|
|
196089
|
+
scope: "block",
|
|
196090
|
+
matchId: `create:${nodeId}`,
|
|
196091
|
+
segments: [{
|
|
196092
|
+
blockId: nodeId,
|
|
196093
|
+
start: 0,
|
|
196094
|
+
end: textLength
|
|
196095
|
+
}],
|
|
196096
|
+
blockIndex: 0
|
|
196097
|
+
});
|
|
196098
|
+
}
|
|
195813
196099
|
function resolveCreateInsertPosition(editor, at) {
|
|
195814
196100
|
const location$1 = at ?? { kind: "documentEnd" };
|
|
195815
196101
|
if (location$1.kind === "documentStart")
|
|
@@ -195837,7 +196123,7 @@ function resolveCreatedBlock(editor, nodeType, blockId) {
|
|
|
195837
196123
|
return fallback;
|
|
195838
196124
|
throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Created ${nodeType} could not be resolved after insertion.`, { [`${nodeType}Id`]: blockId });
|
|
195839
196125
|
}
|
|
195840
|
-
function buildParagraphCreateSuccess(paragraphNodeId, trackedChangeRefs, story) {
|
|
196126
|
+
function buildParagraphCreateSuccess(paragraphNodeId, trackedChangeRefs, story, ref$1) {
|
|
195841
196127
|
return {
|
|
195842
196128
|
success: true,
|
|
195843
196129
|
paragraph: {
|
|
@@ -195855,10 +196141,11 @@ function buildParagraphCreateSuccess(paragraphNodeId, trackedChangeRefs, story)
|
|
|
195855
196141
|
},
|
|
195856
196142
|
...story && { story }
|
|
195857
196143
|
},
|
|
195858
|
-
trackedChangeRefs
|
|
196144
|
+
trackedChangeRefs,
|
|
196145
|
+
...ref$1 ? { ref: ref$1 } : {}
|
|
195859
196146
|
};
|
|
195860
196147
|
}
|
|
195861
|
-
function buildHeadingCreateSuccess(headingNodeId, trackedChangeRefs, story) {
|
|
196148
|
+
function buildHeadingCreateSuccess(headingNodeId, trackedChangeRefs, story, ref$1) {
|
|
195862
196149
|
return {
|
|
195863
196150
|
success: true,
|
|
195864
196151
|
heading: {
|
|
@@ -195876,7 +196163,8 @@ function buildHeadingCreateSuccess(headingNodeId, trackedChangeRefs, story) {
|
|
|
195876
196163
|
},
|
|
195877
196164
|
...story && { story }
|
|
195878
196165
|
},
|
|
195879
|
-
trackedChangeRefs
|
|
196166
|
+
trackedChangeRefs,
|
|
196167
|
+
...ref$1 ? { ref: ref$1 } : {}
|
|
195880
196168
|
};
|
|
195881
196169
|
}
|
|
195882
196170
|
function createParagraphWrapper(editor, input2, options) {
|
|
@@ -195952,7 +196240,9 @@ function createParagraphWrapper(editor, input2, options) {
|
|
|
195952
196240
|
if (runtime.commit)
|
|
195953
196241
|
runtime.commit(editor);
|
|
195954
196242
|
const nonBodyStory = runtime.kind !== "body" ? runtime.locator : undefined;
|
|
195955
|
-
|
|
196243
|
+
const textLen = input2.text?.length ?? 0;
|
|
196244
|
+
const ref$1 = textLen > 0 ? mintBlockRef(storyEditor, runtime.storyKey, canonicalId, textLen) : undefined;
|
|
196245
|
+
return buildParagraphCreateSuccess(canonicalId, trackedChangeRefs, nonBodyStory, ref$1);
|
|
195956
196246
|
} finally {
|
|
195957
196247
|
disposeEphemeralWriteRuntime(runtime);
|
|
195958
196248
|
}
|
|
@@ -196032,7 +196322,9 @@ function createHeadingWrapper(editor, input2, options) {
|
|
|
196032
196322
|
if (runtime.commit)
|
|
196033
196323
|
runtime.commit(editor);
|
|
196034
196324
|
const nonBodyStory = runtime.kind !== "body" ? runtime.locator : undefined;
|
|
196035
|
-
|
|
196325
|
+
const textLen = input2.text?.length ?? 0;
|
|
196326
|
+
const ref$1 = textLen > 0 ? mintBlockRef(storyEditor, runtime.storyKey, canonicalId, textLen) : undefined;
|
|
196327
|
+
return buildHeadingCreateSuccess(canonicalId, trackedChangeRefs, nonBodyStory, ref$1);
|
|
196036
196328
|
} finally {
|
|
196037
196329
|
disposeEphemeralWriteRuntime(runtime);
|
|
196038
196330
|
}
|
|
@@ -196051,6 +196343,8 @@ function extractBlockFormatting(node3) {
|
|
|
196051
196343
|
let fontFamily;
|
|
196052
196344
|
let fontSize;
|
|
196053
196345
|
let bold2;
|
|
196346
|
+
let underline;
|
|
196347
|
+
let color2;
|
|
196054
196348
|
node3.descendants((child) => {
|
|
196055
196349
|
if (fontFamily !== undefined)
|
|
196056
196350
|
return false;
|
|
@@ -196058,19 +196352,28 @@ function extractBlockFormatting(node3) {
|
|
|
196058
196352
|
if (!child.isText || marks.length === 0)
|
|
196059
196353
|
return;
|
|
196060
196354
|
for (const mark2 of marks) {
|
|
196355
|
+
const markName = mark2.type.name;
|
|
196061
196356
|
const attrs = mark2.attrs;
|
|
196062
|
-
if (
|
|
196063
|
-
fontFamily
|
|
196064
|
-
|
|
196065
|
-
|
|
196066
|
-
|
|
196067
|
-
|
|
196357
|
+
if (markName === "textStyle") {
|
|
196358
|
+
if (typeof attrs.fontFamily === "string" && attrs.fontFamily)
|
|
196359
|
+
fontFamily = attrs.fontFamily;
|
|
196360
|
+
if (attrs.fontSize != null) {
|
|
196361
|
+
const raw = typeof attrs.fontSize === "string" ? parseFloat(attrs.fontSize) : attrs.fontSize;
|
|
196362
|
+
if (typeof raw === "number" && Number.isFinite(raw))
|
|
196363
|
+
fontSize = raw;
|
|
196364
|
+
}
|
|
196365
|
+
if (typeof attrs.color === "string" && attrs.color)
|
|
196366
|
+
color2 = attrs.color;
|
|
196068
196367
|
}
|
|
196069
|
-
if (attrs.
|
|
196368
|
+
if (markName === "bold" && attrs.value === true)
|
|
196070
196369
|
bold2 = true;
|
|
196370
|
+
if (markName === "underline")
|
|
196371
|
+
underline = true;
|
|
196071
196372
|
}
|
|
196072
196373
|
return false;
|
|
196073
196374
|
});
|
|
196375
|
+
if (color2 === "auto")
|
|
196376
|
+
color2 = undefined;
|
|
196074
196377
|
let headingLevel;
|
|
196075
196378
|
if (typeof styleId === "string") {
|
|
196076
196379
|
const m$1 = HEADING_PATTERN.exec(styleId);
|
|
@@ -196082,6 +196385,8 @@ function extractBlockFormatting(node3) {
|
|
|
196082
196385
|
...fontFamily ? { fontFamily } : {},
|
|
196083
196386
|
...fontSize !== undefined ? { fontSize } : {},
|
|
196084
196387
|
...bold2 ? { bold: bold2 } : {},
|
|
196388
|
+
...underline ? { underline } : {},
|
|
196389
|
+
...color2 ? { color: color2 } : {},
|
|
196085
196390
|
...pProps?.justification ? { alignment: pProps.justification } : {},
|
|
196086
196391
|
...headingLevel ? { headingLevel } : {}
|
|
196087
196392
|
};
|
|
@@ -196148,17 +196453,36 @@ function blocksListWrapper(editor, input2) {
|
|
|
196148
196453
|
const total = filtered.length;
|
|
196149
196454
|
const offset$1 = input2?.offset ?? 0;
|
|
196150
196455
|
const limit = input2?.limit ?? total;
|
|
196456
|
+
const paged = filtered.slice(offset$1, offset$1 + limit);
|
|
196457
|
+
const rev = getRevision(editor);
|
|
196151
196458
|
return {
|
|
196152
196459
|
total,
|
|
196153
|
-
blocks:
|
|
196154
|
-
|
|
196155
|
-
|
|
196156
|
-
|
|
196157
|
-
|
|
196158
|
-
|
|
196159
|
-
|
|
196160
|
-
|
|
196161
|
-
|
|
196460
|
+
blocks: paged.map((candidate, i4) => {
|
|
196461
|
+
const textLength = computeTextContentLength(candidate.node);
|
|
196462
|
+
const ref$1 = textLength > 0 ? encodeV4Ref({
|
|
196463
|
+
v: 4,
|
|
196464
|
+
rev,
|
|
196465
|
+
storyKey: "body",
|
|
196466
|
+
scope: "block",
|
|
196467
|
+
matchId: candidate.nodeId,
|
|
196468
|
+
segments: [{
|
|
196469
|
+
blockId: candidate.nodeId,
|
|
196470
|
+
start: 0,
|
|
196471
|
+
end: textLength
|
|
196472
|
+
}],
|
|
196473
|
+
blockIndex: offset$1 + i4
|
|
196474
|
+
}) : undefined;
|
|
196475
|
+
return {
|
|
196476
|
+
ordinal: offset$1 + i4,
|
|
196477
|
+
nodeId: candidate.nodeId,
|
|
196478
|
+
nodeType: candidate.nodeType,
|
|
196479
|
+
textPreview: extractTextPreview(candidate.node),
|
|
196480
|
+
isEmpty: textLength === 0,
|
|
196481
|
+
...extractBlockFormatting(candidate.node),
|
|
196482
|
+
...ref$1 ? { ref: ref$1 } : {}
|
|
196483
|
+
};
|
|
196484
|
+
}),
|
|
196485
|
+
revision: rev
|
|
196162
196486
|
};
|
|
196163
196487
|
}
|
|
196164
196488
|
function blocksDeleteWrapper(editor, input2, options) {
|
|
@@ -211889,6 +212213,235 @@ function preferFullRestoredWhenPartial(current, previousRanges, doc$12, docSize)
|
|
|
211889
212213
|
return current;
|
|
211890
212214
|
return currentSpan.from >= restoredSpan.from && currentSpan.to <= restoredSpan.to && restoredSpan.to - restoredSpan.from > currentSpan.to - currentSpan.from ? restored : current;
|
|
211891
212215
|
}
|
|
212216
|
+
function resolveAnnotationDisplayLabel(annotation, contentEl) {
|
|
212217
|
+
const existingLabel = annotation.dataset[DATASET_KEYS.DISPLAY_LABEL];
|
|
212218
|
+
const existingLabelSource = annotation.dataset[DISPLAY_LABEL_SOURCE_KEY];
|
|
212219
|
+
if (existingLabel !== undefined && existingLabelSource !== DISPLAY_LABEL_SOURCE.DERIVED)
|
|
212220
|
+
return {
|
|
212221
|
+
source: DISPLAY_LABEL_SOURCE.CANONICAL,
|
|
212222
|
+
value: existingLabel
|
|
212223
|
+
};
|
|
212224
|
+
const derivedLabel = contentEl?.textContent?.trim() ?? "";
|
|
212225
|
+
if (derivedLabel.length === 0)
|
|
212226
|
+
return null;
|
|
212227
|
+
return {
|
|
212228
|
+
source: DISPLAY_LABEL_SOURCE.DERIVED,
|
|
212229
|
+
value: derivedLabel
|
|
212230
|
+
};
|
|
212231
|
+
}
|
|
212232
|
+
function cssClassForKind(kind) {
|
|
212233
|
+
switch (kind) {
|
|
212234
|
+
case "spelling":
|
|
212235
|
+
return PROOFING_CSS.SPELLING;
|
|
212236
|
+
case "grammar":
|
|
212237
|
+
return PROOFING_CSS.GRAMMAR;
|
|
212238
|
+
case "style":
|
|
212239
|
+
return PROOFING_CSS.STYLE;
|
|
212240
|
+
}
|
|
212241
|
+
}
|
|
212242
|
+
function computeSplitSegments(spanPmStart, spanPmEnd, spanText, annotations) {
|
|
212243
|
+
const boundaries = /* @__PURE__ */ new Set;
|
|
212244
|
+
boundaries.add(spanPmStart);
|
|
212245
|
+
boundaries.add(spanPmEnd);
|
|
212246
|
+
for (const annotation of annotations) {
|
|
212247
|
+
const clampedFrom = Math.max(annotation.pmFrom, spanPmStart);
|
|
212248
|
+
const clampedTo = Math.min(annotation.pmTo, spanPmEnd);
|
|
212249
|
+
if (clampedFrom > spanPmStart)
|
|
212250
|
+
boundaries.add(clampedFrom);
|
|
212251
|
+
if (clampedTo < spanPmEnd)
|
|
212252
|
+
boundaries.add(clampedTo);
|
|
212253
|
+
}
|
|
212254
|
+
const sortedBoundaries = Array.from(boundaries).sort((a2, b$1) => a2 - b$1);
|
|
212255
|
+
const segments = [];
|
|
212256
|
+
for (let index2 = 0;index2 < sortedBoundaries.length - 1; index2 += 1) {
|
|
212257
|
+
const segmentPmStart = sortedBoundaries[index2];
|
|
212258
|
+
const segmentPmEnd = sortedBoundaries[index2 + 1];
|
|
212259
|
+
const textStart = segmentPmStart - spanPmStart;
|
|
212260
|
+
const textEnd = segmentPmEnd - spanPmStart;
|
|
212261
|
+
if (textEnd <= textStart || textStart >= spanText.length)
|
|
212262
|
+
continue;
|
|
212263
|
+
const clampedTextEnd = Math.min(textEnd, spanText.length);
|
|
212264
|
+
let proofingClass = null;
|
|
212265
|
+
for (const annotation of annotations)
|
|
212266
|
+
if (annotation.pmFrom <= segmentPmStart && annotation.pmTo >= segmentPmEnd) {
|
|
212267
|
+
proofingClass = cssClassForKind(annotation.kind);
|
|
212268
|
+
break;
|
|
212269
|
+
}
|
|
212270
|
+
segments.push({
|
|
212271
|
+
textStart,
|
|
212272
|
+
textEnd: clampedTextEnd,
|
|
212273
|
+
pmStart: segmentPmStart,
|
|
212274
|
+
pmEnd: segmentPmEnd,
|
|
212275
|
+
proofingClass
|
|
212276
|
+
});
|
|
212277
|
+
}
|
|
212278
|
+
return segments;
|
|
212279
|
+
}
|
|
212280
|
+
function replaceSpanWithSiblings(originalSpan, segments, spanText) {
|
|
212281
|
+
const parent = originalSpan.parentNode;
|
|
212282
|
+
if (!parent)
|
|
212283
|
+
return [];
|
|
212284
|
+
const doc$12 = originalSpan.ownerDocument;
|
|
212285
|
+
const siblings = [];
|
|
212286
|
+
for (const segment of segments) {
|
|
212287
|
+
const text5 = spanText.slice(segment.textStart, segment.textEnd);
|
|
212288
|
+
if (text5.length === 0)
|
|
212289
|
+
continue;
|
|
212290
|
+
const span = doc$12.createElement("span");
|
|
212291
|
+
for (let index2 = 0;index2 < originalSpan.attributes.length; index2 += 1) {
|
|
212292
|
+
const attr = originalSpan.attributes[index2];
|
|
212293
|
+
span.setAttribute(attr.name, attr.value);
|
|
212294
|
+
}
|
|
212295
|
+
span.setAttribute("data-pm-start", String(segment.pmStart));
|
|
212296
|
+
span.setAttribute("data-pm-end", String(segment.pmEnd));
|
|
212297
|
+
if (segment.proofingClass) {
|
|
212298
|
+
span.classList.add(segment.proofingClass);
|
|
212299
|
+
span.setAttribute("aria-invalid", "spelling");
|
|
212300
|
+
}
|
|
212301
|
+
span.setAttribute(PROOFING_CSS.SPLIT_ATTR, "");
|
|
212302
|
+
span.setAttribute(PROOFING_CSS.DATA_ATTR, "");
|
|
212303
|
+
span.textContent = "";
|
|
212304
|
+
span.appendChild(doc$12.createTextNode(text5));
|
|
212305
|
+
splitOriginMap.set(span, originalSpan);
|
|
212306
|
+
siblings.push(span);
|
|
212307
|
+
}
|
|
212308
|
+
originalSpan.style.display = "none";
|
|
212309
|
+
originalSpan.setAttribute(PROOFING_CSS.DATA_ATTR, "original");
|
|
212310
|
+
const originalPmStart = originalSpan.getAttribute("data-pm-start");
|
|
212311
|
+
const originalPmEnd = originalSpan.getAttribute("data-pm-end");
|
|
212312
|
+
if (originalPmStart)
|
|
212313
|
+
originalSpan.setAttribute("data-sd-orig-pm-start", originalPmStart);
|
|
212314
|
+
if (originalPmEnd)
|
|
212315
|
+
originalSpan.setAttribute("data-sd-orig-pm-end", originalPmEnd);
|
|
212316
|
+
originalSpan.removeAttribute("data-pm-start");
|
|
212317
|
+
originalSpan.removeAttribute("data-pm-end");
|
|
212318
|
+
for (const sibling of siblings)
|
|
212319
|
+
parent.insertBefore(sibling, originalSpan);
|
|
212320
|
+
return siblings;
|
|
212321
|
+
}
|
|
212322
|
+
function restoreSplitSpans(container) {
|
|
212323
|
+
const splitSpans = Array.from(container.querySelectorAll(`[${PROOFING_CSS.SPLIT_ATTR}]`));
|
|
212324
|
+
if (splitSpans.length === 0)
|
|
212325
|
+
return false;
|
|
212326
|
+
const groupsByOriginal = /* @__PURE__ */ new Map;
|
|
212327
|
+
for (const span of splitSpans) {
|
|
212328
|
+
const original = splitOriginMap.get(span);
|
|
212329
|
+
if (!original)
|
|
212330
|
+
continue;
|
|
212331
|
+
const group = groupsByOriginal.get(original);
|
|
212332
|
+
if (group)
|
|
212333
|
+
group.push(span);
|
|
212334
|
+
else
|
|
212335
|
+
groupsByOriginal.set(original, [span]);
|
|
212336
|
+
}
|
|
212337
|
+
for (const [original, siblings] of groupsByOriginal) {
|
|
212338
|
+
const parent = original.parentNode;
|
|
212339
|
+
if (!parent)
|
|
212340
|
+
continue;
|
|
212341
|
+
unhideOriginalSpan(original);
|
|
212342
|
+
for (const sibling of siblings)
|
|
212343
|
+
parent.removeChild(sibling);
|
|
212344
|
+
}
|
|
212345
|
+
const remainingSplitSpans = Array.from(container.querySelectorAll(`[${PROOFING_CSS.SPLIT_ATTR}]`));
|
|
212346
|
+
for (const span of remainingSplitSpans)
|
|
212347
|
+
span.parentNode?.removeChild(span);
|
|
212348
|
+
const hiddenOriginals = Array.from(container.querySelectorAll(`[${PROOFING_CSS.DATA_ATTR}="original"]`));
|
|
212349
|
+
for (const element3 of hiddenOriginals)
|
|
212350
|
+
unhideOriginalSpan(element3);
|
|
212351
|
+
return true;
|
|
212352
|
+
}
|
|
212353
|
+
function unhideOriginalSpan(element3) {
|
|
212354
|
+
element3.style.display = "";
|
|
212355
|
+
if (!element3.style.cssText)
|
|
212356
|
+
element3.removeAttribute("style");
|
|
212357
|
+
element3.removeAttribute(PROOFING_CSS.DATA_ATTR);
|
|
212358
|
+
const savedStart = element3.getAttribute("data-sd-orig-pm-start");
|
|
212359
|
+
const savedEnd = element3.getAttribute("data-sd-orig-pm-end");
|
|
212360
|
+
if (savedStart) {
|
|
212361
|
+
element3.setAttribute("data-pm-start", savedStart);
|
|
212362
|
+
element3.removeAttribute("data-sd-orig-pm-start");
|
|
212363
|
+
}
|
|
212364
|
+
if (savedEnd) {
|
|
212365
|
+
element3.setAttribute("data-pm-end", savedEnd);
|
|
212366
|
+
element3.removeAttribute("data-sd-orig-pm-end");
|
|
212367
|
+
}
|
|
212368
|
+
}
|
|
212369
|
+
function applyProofingDecorations(container, annotations) {
|
|
212370
|
+
const hadPrevious = clearProofingDecorations(container);
|
|
212371
|
+
if (annotations.length === 0)
|
|
212372
|
+
return hadPrevious;
|
|
212373
|
+
const sortedAnnotations = [...annotations].sort((left$1, right$1) => left$1.pmFrom - right$1.pmFrom);
|
|
212374
|
+
const spans = Array.from(container.querySelectorAll("[data-pm-start][data-pm-end]"));
|
|
212375
|
+
let mutated = false;
|
|
212376
|
+
for (const span of spans) {
|
|
212377
|
+
const pmStart = Number.parseInt(span.getAttribute("data-pm-start") ?? "", 10);
|
|
212378
|
+
const pmEnd = Number.parseInt(span.getAttribute("data-pm-end") ?? "", 10);
|
|
212379
|
+
if (Number.isNaN(pmStart) || Number.isNaN(pmEnd) || pmEnd <= pmStart)
|
|
212380
|
+
continue;
|
|
212381
|
+
if (!isLeafTextSpan(span))
|
|
212382
|
+
continue;
|
|
212383
|
+
const overlappingAnnotations = findOverlappingAnnotations(sortedAnnotations, pmStart, pmEnd);
|
|
212384
|
+
if (overlappingAnnotations.length === 0)
|
|
212385
|
+
continue;
|
|
212386
|
+
const text5 = span.textContent ?? "";
|
|
212387
|
+
if (text5.length === 0)
|
|
212388
|
+
continue;
|
|
212389
|
+
if (isCoveredBySingleAnnotation(pmStart, pmEnd, overlappingAnnotations)) {
|
|
212390
|
+
span.classList.add(cssClassForKind(overlappingAnnotations[0].kind));
|
|
212391
|
+
span.setAttribute(PROOFING_CSS.DATA_ATTR, "");
|
|
212392
|
+
span.setAttribute("aria-invalid", "spelling");
|
|
212393
|
+
mutated = true;
|
|
212394
|
+
continue;
|
|
212395
|
+
}
|
|
212396
|
+
const segments = computeSplitSegments(pmStart, pmEnd, text5, overlappingAnnotations);
|
|
212397
|
+
if (segments.length > 1) {
|
|
212398
|
+
replaceSpanWithSiblings(span, segments, text5);
|
|
212399
|
+
mutated = true;
|
|
212400
|
+
continue;
|
|
212401
|
+
}
|
|
212402
|
+
if (segments.length === 1 && segments[0].proofingClass) {
|
|
212403
|
+
span.classList.add(segments[0].proofingClass);
|
|
212404
|
+
span.setAttribute(PROOFING_CSS.DATA_ATTR, "");
|
|
212405
|
+
span.setAttribute("aria-invalid", "spelling");
|
|
212406
|
+
mutated = true;
|
|
212407
|
+
}
|
|
212408
|
+
}
|
|
212409
|
+
return mutated || hadPrevious;
|
|
212410
|
+
}
|
|
212411
|
+
function clearProofingDecorations(container) {
|
|
212412
|
+
let cleared = false;
|
|
212413
|
+
const restoredSplits = restoreSplitSpans(container);
|
|
212414
|
+
const decoratedElements = Array.from(container.querySelectorAll(`[${PROOFING_CSS.DATA_ATTR}]`));
|
|
212415
|
+
for (const element3 of decoratedElements) {
|
|
212416
|
+
element3.classList.remove(PROOFING_CSS.SPELLING, PROOFING_CSS.GRAMMAR, PROOFING_CSS.STYLE);
|
|
212417
|
+
element3.removeAttribute(PROOFING_CSS.DATA_ATTR);
|
|
212418
|
+
element3.removeAttribute("aria-invalid");
|
|
212419
|
+
cleared = true;
|
|
212420
|
+
}
|
|
212421
|
+
return cleared || restoredSplits;
|
|
212422
|
+
}
|
|
212423
|
+
function isLeafTextSpan(element3) {
|
|
212424
|
+
const children = element3.childNodes;
|
|
212425
|
+
if (children.length === 0)
|
|
212426
|
+
return false;
|
|
212427
|
+
for (let index2 = 0;index2 < children.length; index2 += 1)
|
|
212428
|
+
if (children[index2].nodeType === Node.ELEMENT_NODE)
|
|
212429
|
+
return false;
|
|
212430
|
+
return true;
|
|
212431
|
+
}
|
|
212432
|
+
function findOverlappingAnnotations(sortedAnnotations, pmStart, pmEnd) {
|
|
212433
|
+
const overlapping = [];
|
|
212434
|
+
for (const annotation of sortedAnnotations) {
|
|
212435
|
+
if (annotation.pmFrom >= pmEnd)
|
|
212436
|
+
break;
|
|
212437
|
+
if (annotation.pmTo > pmStart)
|
|
212438
|
+
overlapping.push(annotation);
|
|
212439
|
+
}
|
|
212440
|
+
return overlapping;
|
|
212441
|
+
}
|
|
212442
|
+
function isCoveredBySingleAnnotation(pmStart, pmEnd, annotations) {
|
|
212443
|
+
return annotations.some((annotation) => annotation.pmFrom <= pmStart && annotation.pmTo >= pmEnd);
|
|
212444
|
+
}
|
|
211892
212445
|
function isSuppressed(issue, normalizedIgnored) {
|
|
211893
212446
|
if (normalizedIgnored.size === 0)
|
|
211894
212447
|
return false;
|
|
@@ -214075,9 +214628,6 @@ function applyParagraphBordersAndShading(paraWrapper, block) {
|
|
|
214075
214628
|
if (shadingFill)
|
|
214076
214629
|
paraWrapper.style.backgroundColor = shadingFill;
|
|
214077
214630
|
}
|
|
214078
|
-
function sdtElementsById(root3, sdtId) {
|
|
214079
|
-
return root3.querySelectorAll(`.${DOM_CLASS_NAMES.BLOCK_SDT}[data-sdt-id="${sdtId}"]`);
|
|
214080
|
-
}
|
|
214081
214631
|
function classifyMathText(text5) {
|
|
214082
214632
|
if (/^\d*\.?\d+$/.test(text5))
|
|
214083
214633
|
return "mn";
|
|
@@ -214182,6 +214732,26 @@ function readSnapshotStyleValue(styleValue2) {
|
|
|
214182
214732
|
return null;
|
|
214183
214733
|
return styleValue2;
|
|
214184
214734
|
}
|
|
214735
|
+
function createEmptyPaintSnapshotEntities() {
|
|
214736
|
+
return {
|
|
214737
|
+
annotations: [],
|
|
214738
|
+
structuredContentBlocks: [],
|
|
214739
|
+
structuredContentInlines: [],
|
|
214740
|
+
images: []
|
|
214741
|
+
};
|
|
214742
|
+
}
|
|
214743
|
+
function readSnapshotDatasetNumber(value) {
|
|
214744
|
+
if (typeof value !== "string" || value.length === 0)
|
|
214745
|
+
return null;
|
|
214746
|
+
const parsed = Number(value);
|
|
214747
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
214748
|
+
}
|
|
214749
|
+
function resolveSnapshotPageIndex(element3) {
|
|
214750
|
+
const pageEl = element3.closest(`.${DOM_CLASS_NAMES.PAGE}`);
|
|
214751
|
+
if (!pageEl)
|
|
214752
|
+
return null;
|
|
214753
|
+
return readSnapshotDatasetNumber(pageEl.dataset.pageIndex);
|
|
214754
|
+
}
|
|
214185
214755
|
function compactSnapshotObject(input2) {
|
|
214186
214756
|
const out = {};
|
|
214187
214757
|
for (const [key$1, value] of Object.entries(input2)) {
|
|
@@ -214193,6 +214763,89 @@ function compactSnapshotObject(input2) {
|
|
|
214193
214763
|
}
|
|
214194
214764
|
return out;
|
|
214195
214765
|
}
|
|
214766
|
+
function shouldIncludeInlineImageSnapshotElement(element3) {
|
|
214767
|
+
if (element3.classList.contains(DOM_CLASS_NAMES.INLINE_IMAGE_CLIP_WRAPPER))
|
|
214768
|
+
return true;
|
|
214769
|
+
if (!element3.classList.contains(DOM_CLASS_NAMES.INLINE_IMAGE))
|
|
214770
|
+
return false;
|
|
214771
|
+
return !element3.closest(`.${DOM_CLASS_NAMES.INLINE_IMAGE_CLIP_WRAPPER}`);
|
|
214772
|
+
}
|
|
214773
|
+
function collectPaintSnapshotEntitiesFromDomRoot(rootEl) {
|
|
214774
|
+
const entities = createEmptyPaintSnapshotEntities();
|
|
214775
|
+
const annotationElements = Array.from(rootEl.querySelectorAll(`.${DOM_CLASS_NAMES.ANNOTATION}[data-pm-start]`));
|
|
214776
|
+
for (const element3 of annotationElements) {
|
|
214777
|
+
const pageIndex = resolveSnapshotPageIndex(element3);
|
|
214778
|
+
if (pageIndex == null)
|
|
214779
|
+
continue;
|
|
214780
|
+
entities.annotations.push(compactSnapshotObject({
|
|
214781
|
+
element: element3,
|
|
214782
|
+
pageIndex,
|
|
214783
|
+
pmStart: readSnapshotDatasetNumber(element3.dataset.pmStart),
|
|
214784
|
+
pmEnd: readSnapshotDatasetNumber(element3.dataset.pmEnd),
|
|
214785
|
+
fieldId: element3.dataset.fieldId || null,
|
|
214786
|
+
fieldType: element3.dataset.fieldType || null,
|
|
214787
|
+
type: element3.dataset.type || null
|
|
214788
|
+
}));
|
|
214789
|
+
}
|
|
214790
|
+
const blockSdtElements = Array.from(rootEl.querySelectorAll(`.${DOM_CLASS_NAMES.BLOCK_SDT}[data-sdt-id]`));
|
|
214791
|
+
for (const element3 of blockSdtElements) {
|
|
214792
|
+
const pageIndex = resolveSnapshotPageIndex(element3);
|
|
214793
|
+
const sdtId = element3.dataset.sdtId;
|
|
214794
|
+
if (pageIndex == null || !sdtId)
|
|
214795
|
+
continue;
|
|
214796
|
+
entities.structuredContentBlocks.push(compactSnapshotObject({
|
|
214797
|
+
element: element3,
|
|
214798
|
+
pageIndex,
|
|
214799
|
+
sdtId,
|
|
214800
|
+
pmStart: readSnapshotDatasetNumber(element3.dataset.pmStart),
|
|
214801
|
+
pmEnd: readSnapshotDatasetNumber(element3.dataset.pmEnd)
|
|
214802
|
+
}));
|
|
214803
|
+
}
|
|
214804
|
+
const inlineSdtElements = Array.from(rootEl.querySelectorAll(`.${DOM_CLASS_NAMES.INLINE_SDT_WRAPPER}[data-sdt-id]`));
|
|
214805
|
+
for (const element3 of inlineSdtElements) {
|
|
214806
|
+
const pageIndex = resolveSnapshotPageIndex(element3);
|
|
214807
|
+
const sdtId = element3.dataset.sdtId;
|
|
214808
|
+
if (pageIndex == null || !sdtId)
|
|
214809
|
+
continue;
|
|
214810
|
+
entities.structuredContentInlines.push(compactSnapshotObject({
|
|
214811
|
+
element: element3,
|
|
214812
|
+
pageIndex,
|
|
214813
|
+
sdtId,
|
|
214814
|
+
pmStart: readSnapshotDatasetNumber(element3.dataset.pmStart),
|
|
214815
|
+
pmEnd: readSnapshotDatasetNumber(element3.dataset.pmEnd)
|
|
214816
|
+
}));
|
|
214817
|
+
}
|
|
214818
|
+
const inlineImageElements = Array.from(rootEl.querySelectorAll(`.${DOM_CLASS_NAMES.INLINE_IMAGE_CLIP_WRAPPER}[data-pm-start], .${DOM_CLASS_NAMES.INLINE_IMAGE}[data-pm-start]`));
|
|
214819
|
+
for (const element3 of inlineImageElements) {
|
|
214820
|
+
if (!shouldIncludeInlineImageSnapshotElement(element3))
|
|
214821
|
+
continue;
|
|
214822
|
+
const pageIndex = resolveSnapshotPageIndex(element3);
|
|
214823
|
+
if (pageIndex == null)
|
|
214824
|
+
continue;
|
|
214825
|
+
entities.images.push(compactSnapshotObject({
|
|
214826
|
+
element: element3,
|
|
214827
|
+
pageIndex,
|
|
214828
|
+
kind: "inline",
|
|
214829
|
+
pmStart: readSnapshotDatasetNumber(element3.dataset.pmStart),
|
|
214830
|
+
pmEnd: readSnapshotDatasetNumber(element3.dataset.pmEnd)
|
|
214831
|
+
}));
|
|
214832
|
+
}
|
|
214833
|
+
const fragmentImageElements = Array.from(rootEl.querySelectorAll(`.${DOM_CLASS_NAMES.IMAGE_FRAGMENT}[data-pm-start]`));
|
|
214834
|
+
for (const element3 of fragmentImageElements) {
|
|
214835
|
+
const pageIndex = resolveSnapshotPageIndex(element3);
|
|
214836
|
+
if (pageIndex == null)
|
|
214837
|
+
continue;
|
|
214838
|
+
entities.images.push(compactSnapshotObject({
|
|
214839
|
+
element: element3,
|
|
214840
|
+
pageIndex,
|
|
214841
|
+
kind: "fragment",
|
|
214842
|
+
pmStart: readSnapshotDatasetNumber(element3.dataset.pmStart),
|
|
214843
|
+
pmEnd: readSnapshotDatasetNumber(element3.dataset.pmEnd),
|
|
214844
|
+
blockId: element3.getAttribute("data-sd-block-id")
|
|
214845
|
+
}));
|
|
214846
|
+
}
|
|
214847
|
+
return entities;
|
|
214848
|
+
}
|
|
214196
214849
|
function snapshotLineStyleFromElement(lineEl) {
|
|
214197
214850
|
const style2 = lineEl?.style;
|
|
214198
214851
|
if (!style2)
|
|
@@ -214283,217 +214936,6 @@ function sanitizeUrl(href) {
|
|
|
214283
214936
|
return null;
|
|
214284
214937
|
return sanitizeHref(href)?.href ?? null;
|
|
214285
214938
|
}
|
|
214286
|
-
function cssClassForKind(kind) {
|
|
214287
|
-
switch (kind) {
|
|
214288
|
-
case "spelling":
|
|
214289
|
-
return PROOFING_CSS.SPELLING;
|
|
214290
|
-
case "grammar":
|
|
214291
|
-
return PROOFING_CSS.GRAMMAR;
|
|
214292
|
-
case "style":
|
|
214293
|
-
return PROOFING_CSS.STYLE;
|
|
214294
|
-
}
|
|
214295
|
-
}
|
|
214296
|
-
function computeSplitSegments(spanPmStart, spanPmEnd, spanText, annotations) {
|
|
214297
|
-
const boundaries = /* @__PURE__ */ new Set;
|
|
214298
|
-
boundaries.add(spanPmStart);
|
|
214299
|
-
boundaries.add(spanPmEnd);
|
|
214300
|
-
for (const ann of annotations) {
|
|
214301
|
-
const clampedFrom = Math.max(ann.pmFrom, spanPmStart);
|
|
214302
|
-
const clampedTo = Math.min(ann.pmTo, spanPmEnd);
|
|
214303
|
-
if (clampedFrom > spanPmStart)
|
|
214304
|
-
boundaries.add(clampedFrom);
|
|
214305
|
-
if (clampedTo < spanPmEnd)
|
|
214306
|
-
boundaries.add(clampedTo);
|
|
214307
|
-
}
|
|
214308
|
-
const sorted = Array.from(boundaries).sort((a2, b$1) => a2 - b$1);
|
|
214309
|
-
const segments = [];
|
|
214310
|
-
for (let i4 = 0;i4 < sorted.length - 1; i4++) {
|
|
214311
|
-
const segPmStart = sorted[i4];
|
|
214312
|
-
const segPmEnd = sorted[i4 + 1];
|
|
214313
|
-
const textStart = segPmStart - spanPmStart;
|
|
214314
|
-
const textEnd = segPmEnd - spanPmStart;
|
|
214315
|
-
if (textEnd <= textStart || textStart >= spanText.length)
|
|
214316
|
-
continue;
|
|
214317
|
-
const clampedTextEnd = Math.min(textEnd, spanText.length);
|
|
214318
|
-
let proofingClass = null;
|
|
214319
|
-
for (const ann of annotations)
|
|
214320
|
-
if (ann.pmFrom <= segPmStart && ann.pmTo >= segPmEnd) {
|
|
214321
|
-
proofingClass = cssClassForKind(ann.kind);
|
|
214322
|
-
break;
|
|
214323
|
-
}
|
|
214324
|
-
segments.push({
|
|
214325
|
-
textStart,
|
|
214326
|
-
textEnd: clampedTextEnd,
|
|
214327
|
-
pmStart: segPmStart,
|
|
214328
|
-
pmEnd: segPmEnd,
|
|
214329
|
-
proofingClass
|
|
214330
|
-
});
|
|
214331
|
-
}
|
|
214332
|
-
return segments;
|
|
214333
|
-
}
|
|
214334
|
-
function replaceSpanWithSiblings(originalSpan, segments, spanText) {
|
|
214335
|
-
const parent = originalSpan.parentNode;
|
|
214336
|
-
if (!parent)
|
|
214337
|
-
return [];
|
|
214338
|
-
const doc$12 = originalSpan.ownerDocument;
|
|
214339
|
-
const siblings = [];
|
|
214340
|
-
for (const seg of segments) {
|
|
214341
|
-
const text5 = spanText.slice(seg.textStart, seg.textEnd);
|
|
214342
|
-
if (text5.length === 0)
|
|
214343
|
-
continue;
|
|
214344
|
-
const span = doc$12.createElement("span");
|
|
214345
|
-
for (let i4 = 0;i4 < originalSpan.attributes.length; i4++) {
|
|
214346
|
-
const attr = originalSpan.attributes[i4];
|
|
214347
|
-
span.setAttribute(attr.name, attr.value);
|
|
214348
|
-
}
|
|
214349
|
-
span.setAttribute("data-pm-start", String(seg.pmStart));
|
|
214350
|
-
span.setAttribute("data-pm-end", String(seg.pmEnd));
|
|
214351
|
-
if (seg.proofingClass) {
|
|
214352
|
-
span.classList.add(seg.proofingClass);
|
|
214353
|
-
span.setAttribute("aria-invalid", "spelling");
|
|
214354
|
-
}
|
|
214355
|
-
span.setAttribute(PROOFING_CSS.SPLIT_ATTR, "");
|
|
214356
|
-
span.setAttribute(PROOFING_CSS.DATA_ATTR, "");
|
|
214357
|
-
span.textContent = "";
|
|
214358
|
-
span.appendChild(doc$12.createTextNode(text5));
|
|
214359
|
-
splitOriginMap.set(span, originalSpan);
|
|
214360
|
-
siblings.push(span);
|
|
214361
|
-
}
|
|
214362
|
-
originalSpan.style.display = "none";
|
|
214363
|
-
originalSpan.setAttribute(PROOFING_CSS.DATA_ATTR, "original");
|
|
214364
|
-
const origPmStart = originalSpan.getAttribute("data-pm-start");
|
|
214365
|
-
const origPmEnd = originalSpan.getAttribute("data-pm-end");
|
|
214366
|
-
if (origPmStart)
|
|
214367
|
-
originalSpan.setAttribute("data-sd-orig-pm-start", origPmStart);
|
|
214368
|
-
if (origPmEnd)
|
|
214369
|
-
originalSpan.setAttribute("data-sd-orig-pm-end", origPmEnd);
|
|
214370
|
-
originalSpan.removeAttribute("data-pm-start");
|
|
214371
|
-
originalSpan.removeAttribute("data-pm-end");
|
|
214372
|
-
for (const sib of siblings)
|
|
214373
|
-
parent.insertBefore(sib, originalSpan);
|
|
214374
|
-
return siblings;
|
|
214375
|
-
}
|
|
214376
|
-
function restoreSplitSpans(container) {
|
|
214377
|
-
const splitSpans = Array.from(container.querySelectorAll(`[${PROOFING_CSS.SPLIT_ATTR}]`));
|
|
214378
|
-
if (splitSpans.length === 0)
|
|
214379
|
-
return false;
|
|
214380
|
-
const groupsByOriginal = /* @__PURE__ */ new Map;
|
|
214381
|
-
for (const span of splitSpans) {
|
|
214382
|
-
const original = splitOriginMap.get(span);
|
|
214383
|
-
if (!original)
|
|
214384
|
-
continue;
|
|
214385
|
-
const group = groupsByOriginal.get(original);
|
|
214386
|
-
if (group)
|
|
214387
|
-
group.push(span);
|
|
214388
|
-
else
|
|
214389
|
-
groupsByOriginal.set(original, [span]);
|
|
214390
|
-
}
|
|
214391
|
-
for (const [original, siblings] of groupsByOriginal) {
|
|
214392
|
-
const parent = original.parentNode;
|
|
214393
|
-
if (!parent)
|
|
214394
|
-
continue;
|
|
214395
|
-
unhideOriginalSpan(original);
|
|
214396
|
-
for (const sib of siblings)
|
|
214397
|
-
parent.removeChild(sib);
|
|
214398
|
-
}
|
|
214399
|
-
const remaining = Array.from(container.querySelectorAll(`[${PROOFING_CSS.SPLIT_ATTR}]`));
|
|
214400
|
-
for (const span of remaining)
|
|
214401
|
-
span.parentNode?.removeChild(span);
|
|
214402
|
-
const hiddenOriginals = Array.from(container.querySelectorAll(`[${PROOFING_CSS.DATA_ATTR}="original"]`));
|
|
214403
|
-
for (const el of hiddenOriginals)
|
|
214404
|
-
unhideOriginalSpan(el);
|
|
214405
|
-
return true;
|
|
214406
|
-
}
|
|
214407
|
-
function unhideOriginalSpan(el) {
|
|
214408
|
-
el.style.display = "";
|
|
214409
|
-
if (!el.style.cssText)
|
|
214410
|
-
el.removeAttribute("style");
|
|
214411
|
-
el.removeAttribute(PROOFING_CSS.DATA_ATTR);
|
|
214412
|
-
const savedStart = el.getAttribute("data-sd-orig-pm-start");
|
|
214413
|
-
const savedEnd = el.getAttribute("data-sd-orig-pm-end");
|
|
214414
|
-
if (savedStart) {
|
|
214415
|
-
el.setAttribute("data-pm-start", savedStart);
|
|
214416
|
-
el.removeAttribute("data-sd-orig-pm-start");
|
|
214417
|
-
}
|
|
214418
|
-
if (savedEnd) {
|
|
214419
|
-
el.setAttribute("data-pm-end", savedEnd);
|
|
214420
|
-
el.removeAttribute("data-sd-orig-pm-end");
|
|
214421
|
-
}
|
|
214422
|
-
}
|
|
214423
|
-
function applyProofingDecorations(container, annotations) {
|
|
214424
|
-
const hadPrevious = clearProofingDecorations(container);
|
|
214425
|
-
if (annotations.length === 0)
|
|
214426
|
-
return hadPrevious;
|
|
214427
|
-
const sorted = [...annotations].sort((a2, b$1) => a2.pmFrom - b$1.pmFrom);
|
|
214428
|
-
const spans = Array.from(container.querySelectorAll("[data-pm-start][data-pm-end]"));
|
|
214429
|
-
let mutated = false;
|
|
214430
|
-
for (const span of spans) {
|
|
214431
|
-
const pmStart = parseInt(span.getAttribute("data-pm-start"), 10);
|
|
214432
|
-
const pmEnd = parseInt(span.getAttribute("data-pm-end"), 10);
|
|
214433
|
-
if (isNaN(pmStart) || isNaN(pmEnd) || pmEnd <= pmStart)
|
|
214434
|
-
continue;
|
|
214435
|
-
if (!isLeafTextSpan(span))
|
|
214436
|
-
continue;
|
|
214437
|
-
const overlapping = findOverlapping(sorted, pmStart, pmEnd);
|
|
214438
|
-
if (overlapping.length === 0)
|
|
214439
|
-
continue;
|
|
214440
|
-
const text5 = span.textContent ?? "";
|
|
214441
|
-
if (text5.length === 0)
|
|
214442
|
-
continue;
|
|
214443
|
-
if (isCoveredBySingleAnnotation(pmStart, pmEnd, overlapping)) {
|
|
214444
|
-
span.classList.add(cssClassForKind(overlapping[0].kind));
|
|
214445
|
-
span.setAttribute(PROOFING_CSS.DATA_ATTR, "");
|
|
214446
|
-
span.setAttribute("aria-invalid", "spelling");
|
|
214447
|
-
mutated = true;
|
|
214448
|
-
} else {
|
|
214449
|
-
const segments = computeSplitSegments(pmStart, pmEnd, text5, overlapping);
|
|
214450
|
-
if (segments.length > 1) {
|
|
214451
|
-
replaceSpanWithSiblings(span, segments, text5);
|
|
214452
|
-
mutated = true;
|
|
214453
|
-
} else if (segments.length === 1 && segments[0].proofingClass) {
|
|
214454
|
-
span.classList.add(segments[0].proofingClass);
|
|
214455
|
-
span.setAttribute(PROOFING_CSS.DATA_ATTR, "");
|
|
214456
|
-
span.setAttribute("aria-invalid", "spelling");
|
|
214457
|
-
mutated = true;
|
|
214458
|
-
}
|
|
214459
|
-
}
|
|
214460
|
-
}
|
|
214461
|
-
return mutated || hadPrevious;
|
|
214462
|
-
}
|
|
214463
|
-
function clearProofingDecorations(container) {
|
|
214464
|
-
let cleared = false;
|
|
214465
|
-
const splitRestored = restoreSplitSpans(container);
|
|
214466
|
-
const decorated = Array.from(container.querySelectorAll(`[${PROOFING_CSS.DATA_ATTR}]`));
|
|
214467
|
-
for (const el of decorated) {
|
|
214468
|
-
el.classList.remove(PROOFING_CSS.SPELLING, PROOFING_CSS.GRAMMAR, PROOFING_CSS.STYLE);
|
|
214469
|
-
el.removeAttribute(PROOFING_CSS.DATA_ATTR);
|
|
214470
|
-
el.removeAttribute("aria-invalid");
|
|
214471
|
-
cleared = true;
|
|
214472
|
-
}
|
|
214473
|
-
return cleared || splitRestored;
|
|
214474
|
-
}
|
|
214475
|
-
function isLeafTextSpan(el) {
|
|
214476
|
-
const children = el.childNodes;
|
|
214477
|
-
if (children.length === 0)
|
|
214478
|
-
return false;
|
|
214479
|
-
for (let i4 = 0;i4 < children.length; i4++)
|
|
214480
|
-
if (children[i4].nodeType === Node.ELEMENT_NODE)
|
|
214481
|
-
return false;
|
|
214482
|
-
return true;
|
|
214483
|
-
}
|
|
214484
|
-
function findOverlapping(sorted, pmStart, pmEnd) {
|
|
214485
|
-
const result = [];
|
|
214486
|
-
for (const ann of sorted) {
|
|
214487
|
-
if (ann.pmFrom >= pmEnd)
|
|
214488
|
-
break;
|
|
214489
|
-
if (ann.pmTo > pmStart)
|
|
214490
|
-
result.push(ann);
|
|
214491
|
-
}
|
|
214492
|
-
return result;
|
|
214493
|
-
}
|
|
214494
|
-
function isCoveredBySingleAnnotation(pmStart, pmEnd, annotations) {
|
|
214495
|
-
return annotations.some((ann) => ann.pmFrom <= pmStart && ann.pmTo >= pmEnd);
|
|
214496
|
-
}
|
|
214497
214939
|
function assertRequiredBlockMeasurePair(label, blocks2, measures) {
|
|
214498
214940
|
if (blocks2.length !== measures.length)
|
|
214499
214941
|
throw new Error(`${label} blocks and measures must have the same length.`);
|
|
@@ -214534,6 +214976,40 @@ function buildLegacyPaintInput(layout, legacyState, flowMode, pageGap) {
|
|
|
214534
214976
|
footerMeasures: legacyState.footerMeasures
|
|
214535
214977
|
};
|
|
214536
214978
|
}
|
|
214979
|
+
function appendToArrayMap(map$12, key$1, value) {
|
|
214980
|
+
const existing = map$12.get(key$1);
|
|
214981
|
+
if (existing) {
|
|
214982
|
+
existing.push(value);
|
|
214983
|
+
return;
|
|
214984
|
+
}
|
|
214985
|
+
map$12.set(key$1, [value]);
|
|
214986
|
+
}
|
|
214987
|
+
function isMountedElement(element3) {
|
|
214988
|
+
return element3 instanceof HTMLElement && element3.isConnected;
|
|
214989
|
+
}
|
|
214990
|
+
function isInlineImageWrapperElement(element3) {
|
|
214991
|
+
return element3.classList.contains(DOM_CLASS_NAMES.INLINE_IMAGE_CLIP_WRAPPER);
|
|
214992
|
+
}
|
|
214993
|
+
function shouldReplaceInlineImageEntity(existing, candidate) {
|
|
214994
|
+
if (!existing)
|
|
214995
|
+
return true;
|
|
214996
|
+
const existingIsWrapper = isInlineImageWrapperElement(existing.element);
|
|
214997
|
+
const candidateIsWrapper = isInlineImageWrapperElement(candidate.element);
|
|
214998
|
+
if (existingIsWrapper && !candidateIsWrapper)
|
|
214999
|
+
return false;
|
|
215000
|
+
return true;
|
|
215001
|
+
}
|
|
215002
|
+
function normalizePinnedPageIndices(pageIndices) {
|
|
215003
|
+
return Array.from(new Set((pageIndices ?? []).filter((pageIndex) => Number.isInteger(pageIndex)))).sort((a2, b$1) => a2 - b$1);
|
|
215004
|
+
}
|
|
215005
|
+
function areNumberListsEqual(left$1, right$1) {
|
|
215006
|
+
if (left$1.length !== right$1.length)
|
|
215007
|
+
return false;
|
|
215008
|
+
for (let index2 = 0;index2 < left$1.length; index2 += 1)
|
|
215009
|
+
if (left$1[index2] !== right$1[index2])
|
|
215010
|
+
return false;
|
|
215011
|
+
return true;
|
|
215012
|
+
}
|
|
214537
215013
|
function resolveMarkerTextWidth(markerTextWidthPx, marker) {
|
|
214538
215014
|
const val = (v) => typeof v === "number" && Number.isFinite(v) && v >= 0 ? v : undefined;
|
|
214539
215015
|
return val(markerTextWidthPx) ?? val(marker.glyphWidthPx) ?? val(marker.markerBoxWidthPx) ?? 0;
|
|
@@ -229438,6 +229914,24 @@ function splitRunsAtDecorationBoundaries(blocks2, ranges) {
|
|
|
229438
229914
|
const boundaries = getBoundaries(ranges);
|
|
229439
229915
|
return blocks2.map((block) => splitRunsInBlock(block, boundaries));
|
|
229440
229916
|
}
|
|
229917
|
+
function ensureEditorNativeSelectionStyles(doc$12) {
|
|
229918
|
+
if (nativeSelectionStylesInjected || !doc$12)
|
|
229919
|
+
return;
|
|
229920
|
+
const styleEl = doc$12.createElement("style");
|
|
229921
|
+
styleEl.setAttribute("data-superdoc-editor-native-selection-styles", "true");
|
|
229922
|
+
styleEl.textContent = NATIVE_SELECTION_STYLES;
|
|
229923
|
+
doc$12.head?.appendChild(styleEl);
|
|
229924
|
+
nativeSelectionStylesInjected = true;
|
|
229925
|
+
}
|
|
229926
|
+
function ensureEditorFieldAnnotationInteractionStyles(doc$12) {
|
|
229927
|
+
if (fieldAnnotationInteractionStylesInjected || !doc$12)
|
|
229928
|
+
return;
|
|
229929
|
+
const styleEl = doc$12.createElement("style");
|
|
229930
|
+
styleEl.setAttribute("data-superdoc-editor-field-annotation-interaction-styles", "true");
|
|
229931
|
+
styleEl.textContent = FIELD_ANNOTATION_INTERACTION_STYLES;
|
|
229932
|
+
doc$12.head?.appendChild(styleEl);
|
|
229933
|
+
fieldAnnotationInteractionStylesInjected = true;
|
|
229934
|
+
}
|
|
229441
229935
|
var Node$13 = class Node$14 {
|
|
229442
229936
|
constructor(config2) {
|
|
229443
229937
|
this.type = "node";
|
|
@@ -233040,7 +233534,13 @@ var Node$13 = class Node$14 {
|
|
|
233040
233534
|
const attrs = {
|
|
233041
233535
|
...sdBlockId ? { sdBlockId } : undefined,
|
|
233042
233536
|
...paraId ? { paraId } : undefined,
|
|
233043
|
-
paragraphProperties: {
|
|
233537
|
+
paragraphProperties: {
|
|
233538
|
+
styleId: `Heading${level}`,
|
|
233539
|
+
numberingProperties: {
|
|
233540
|
+
numId: "0",
|
|
233541
|
+
ilvl: "0"
|
|
233542
|
+
}
|
|
233543
|
+
}
|
|
233044
233544
|
};
|
|
233045
233545
|
const normalizedText = typeof text5 === "string" ? text5 : "";
|
|
233046
233546
|
const textNode = normalizedText.length > 0 ? state.schema.text(normalizedText) : null;
|
|
@@ -233515,24 +234015,25 @@ var Node$13 = class Node$14 {
|
|
|
233515
234015
|
if (paragraphsInSelection.length > 0) {
|
|
233516
234016
|
const firstPara = paragraphsInSelection[0];
|
|
233517
234017
|
const lastPara = paragraphsInSelection[paragraphsInSelection.length - 1];
|
|
233518
|
-
const
|
|
233519
|
-
const
|
|
233520
|
-
const
|
|
233521
|
-
const
|
|
233522
|
-
const
|
|
233523
|
-
|
|
233524
|
-
|
|
233525
|
-
|
|
233526
|
-
|
|
233527
|
-
|
|
233528
|
-
|
|
233529
|
-
|
|
233530
|
-
|
|
233531
|
-
|
|
233532
|
-
|
|
233533
|
-
tr.setSelection(
|
|
233534
|
-
|
|
233535
|
-
|
|
234018
|
+
const firstParagraphPos = firstPara.pos;
|
|
234019
|
+
const lastParagraphPos = lastPara.pos;
|
|
234020
|
+
const firstNode = tr.doc.nodeAt(firstParagraphPos);
|
|
234021
|
+
const lastNode = tr.doc.nodeAt(lastParagraphPos);
|
|
234022
|
+
const restoredSelectionRange = computeToggleListSelectionRange({
|
|
234023
|
+
selectionWasCollapsed: selection.empty,
|
|
234024
|
+
affectedParagraphCount: paragraphsInSelection.length,
|
|
234025
|
+
firstParagraphPos,
|
|
234026
|
+
lastParagraphPos,
|
|
234027
|
+
firstNode,
|
|
234028
|
+
lastNode
|
|
234029
|
+
});
|
|
234030
|
+
if (restoredSelectionRange && restoredSelectionRange.from >= 0 && restoredSelectionRange.to <= tr.doc.content.size && restoredSelectionRange.from <= restoredSelectionRange.to)
|
|
234031
|
+
try {
|
|
234032
|
+
if (selection.empty && paragraphsInSelection.length === 1)
|
|
234033
|
+
tr.setSelection(Selection.near(tr.doc.resolve(restoredSelectionRange.to), -1));
|
|
234034
|
+
else
|
|
234035
|
+
tr.setSelection(TextSelection2.create(tr.doc, restoredSelectionRange.from, restoredSelectionRange.to));
|
|
234036
|
+
} catch {}
|
|
233536
234037
|
}
|
|
233537
234038
|
dispatch(tr);
|
|
233538
234039
|
return true;
|
|
@@ -240837,7 +241338,7 @@ var Node$13 = class Node$14 {
|
|
|
240837
241338
|
if (!allowedRanges?.length)
|
|
240838
241339
|
return false;
|
|
240839
241340
|
return allowedRanges.some((allowed) => range.from >= allowed.from && range.to <= allowed.to);
|
|
240840
|
-
}, PermissionRanges, Protection, DOM_CLASS_NAMES, DATA_ATTRS, VerticalNavigationPluginKey, createDefaultState = () => ({ goalX: null }), VerticalNavigation, createPermissionBlockMarkerNode = ({ name, attributes }) => Node$13.create({
|
|
241341
|
+
}, PermissionRanges, Protection, DOM_CLASS_NAMES, DATA_ATTRS, DATASET_KEYS, DRAGGABLE_SELECTOR, VerticalNavigationPluginKey, createDefaultState = () => ({ goalX: null }), VerticalNavigation, createPermissionBlockMarkerNode = ({ name, attributes }) => Node$13.create({
|
|
240841
241342
|
name,
|
|
240842
241343
|
group: "block",
|
|
240843
241344
|
inline: false,
|
|
@@ -243148,7 +243649,7 @@ var Node$13 = class Node$14 {
|
|
|
243148
243649
|
domAvailabilityCache = false;
|
|
243149
243650
|
return false;
|
|
243150
243651
|
}
|
|
243151
|
-
}, summaryVersion = "1.23.
|
|
243652
|
+
}, summaryVersion = "1.23.1", nodeKeys, markKeys, transformListsInCopiedContent = (html3) => {
|
|
243152
243653
|
const container = document.createElement("div");
|
|
243153
243654
|
container.innerHTML = html3;
|
|
243154
243655
|
const result = [];
|
|
@@ -243473,7 +243974,7 @@ var Node$13 = class Node$14 {
|
|
|
243473
243974
|
console.warn("Failed to initialize developer tools:", error3);
|
|
243474
243975
|
}
|
|
243475
243976
|
}
|
|
243476
|
-
}, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, 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.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension2) => {
|
|
243977
|
+
}, BLANK_DOCX_BASE64 = `UEsDBBQAAAAIAAAAIQAykW9XXgEAAKUFAAATABwAW0NvbnRlbnRfVHlwZXNdLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1lMtqwzAQRfeF/oPRNthKuiilxMmij2UbaPoBijRORPVCmrz+vuM4NaWkMeSxMcgz994zQsxwvLEmW0FM2ruSDYo+y8BJr7Sbl+xz+po/sCyhcEoY76BkW0hsPLq9GU63AVJGapdKtkAMj5wnuQArUuEDOKpUPlqBdIxzHoT8EnPgd/3+PZfeITjMsfZgo+EzVGJpMHvZ0O+GJIJJLHtqGuuskokQjJYCqc5XTv1JyfcJBSl3PWmhQ+pRA+MHE+rK/wF73TtdTdQKsomI+CYsdfG1j4orL5eWlMVxmwOcvqq0hFZfu4XoJaREd25N0Vas0K7XxeGWdgaRlJcHaa07IRJuDaTLEzS+3fGASIJrAOydOxHWMPu4GsUv806QinKnYmbg8hitdScE0hqA5js4m2NncyySOifRh0RrJZ4w9s/eqNU5DRwgoj7+6tpEsj57PqhXkgJ1IJvvluzoG1BLAwQKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAcAGRvY1Byb3BzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhACEYr1llAQAAxQIAABAAHABkb2NQcm9wcy9hcHAueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ1STU/DMAy9I/Efqt63dBwmNHlBaAhx4GPSCpyjxG0j0iRKson9e5wVSoEbOdnP9st7TuDqvTfFAUPUzq7LxbwqC7TSKW3bdflc384uyyImYZUwzuK6PGIsr/j5GWyD8xiSxlgQhY3rskvJrxiLssNexDmVLVUaF3qRKA0tc02jJd44ue/RJnZRVUuG7wmtQjXzI2E5MK4O6b+kysmsL77UR098HGrsvREJ+WOeNHPlUg9sRKF2SZha98grgscEtqLFyBfAhgBeXVAx9wwBbDoRhEy0vwxOMrj23mgpEu2VP2gZXHRNKp5OYos8DWzaAmRgh3IfdDpmqmkK99ri6YIhIFVBtEH47gROMthJYXBD1nkjTERg3wBsXO+FJTo2RsT3Fp997W7yFj5HfoITi686dTsvJP4yO8FhRygqUj8KGAG4o8cIJrPTrG1RffX8LeT1vQy/ki+W84rOaV9fGLkevwv/AFBLAwQUAAAACAAAACEACvOn+GYBAADtAgAAEQAcAGRvY1Byb3BzL2NvcmUueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ2SXU+DMBSG7038D6T3UGBqDAGWTLMrZ0yc0XhX27Otjn6k7cb27y0wmMRdeXc+nvP29G3z6UFUwR6M5UoWKIliFICkinG5LtDbch7eo8A6IhmplIQCHcGiaXl9lVOdUWXgxSgNxnGwgVeSNqO6QBvndIaxpRsQxEaekL65UkYQ51OzxprQLVkDTuP4DgtwhBFHcCMY6kERnSQZHST1zlStAKMYKhAgncVJlOAz68AIe3Gg7fwiBXdHDRfRvjnQB8sHsK7rqJ60qN8/wR+Lp9f2qiGXjVcUUJkzmjnuKihzfA59ZHdf30BdVx4SH1MDxClTPnO6DWZgJKlapq83jm/hWCvDrJ8eZR5jYKnh2vl37LRHBU9XxLqFf9gVBzY7jo/5224mDOx58y/KtCWGND+Z3K0GLPDmZJ2Vfed98vC4nKMyjdObMEnD5G6Zpll8m8XxZ7PdaP4sKE4L/FuxF+gMGn/Q8gdQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAYAHABfcmVscy9VVAkAA4Yc7WiHHO1odXgLAAEE9QEAAAQUAAAAUEsDBBQAAAAIAAAAIQAekRq36QAAAE4CAAALABwAX3JlbHMvLnJlbHNVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAArZLBasMwDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2kiKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wFQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAHAB3b3JkL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAHAB3b3JkL2ZvbnRUYWJsZS54bWxVVAkAA54c7WieHO1odXgLAAEE9QEAAAQUAAAAvZPBbqMwEIbvlfoOlu8NhpA0RSFV222kvexh1T6AY0ywFtvI44Tk7dcYiBSyuy3tqiCEGf75mPnHLO8PskR7bkBoleJwQjDiiulMqG2KX1/WNwuMwFKV0VIrnuIjB3y/ur5a1kmulQXk8hUkkqW4sLZKggBYwSWFia64ci9zbSS17tFsA0nNr111w7SsqBUbUQp7DCJC5vj6CrmjZZn3oHSeC8a/abaTXFkPCQwvHVYrKEQFZ8j6Pcham6wymnEA170sW6ikQp2zwviCJgUzGnRuJ663rjbPc4yQ+JUsB5TZOEr0Z8qc8cM40KIDBS7zAiaycbD5CSayIexjZQ0p2W4UJ5r2FTW3Jn0IhMxmxThmP8GgyaWWFhSKCywf1+/sxDxKNwgkWfJ9q7Shm9KR3CZDbosgD0btZJobaieO+j6Qdwiv2mK6nxLViaLSUV6E5IB+8Br91JKqXtZJK6o08NCp97RMMWkanZMpmZHYXZFbxTg4T2EFNcDtKYUMBTmVojz2743/6kBSCcuKXrGnRjQdD0Ugtk6ygw1J8TMhJHper3EbCVP85CK3i9ljF4maSvxx10WmpwhpIsxz/GPYcpjnnDT915dB6+Bf/HzSOyO4aRx908tb59+d97TxMv60l1Jn3PzbzFwcePYRJ+PpVzv54MZevunho9uPsfewPT/rIdQC4P/sx4evdrFfwuo3UEsDBBQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABwAd29yZC9kb2N1bWVudC54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAApZZbb9sgFMffJ+07WH5v8S1OYjWttGab+jCpWrcPQIDEqAYsILd9+h3s+LJ5qxz3CXPg/PjDORxz93AShXdg2nAlV354G/gek0RRLncr/+ePLzcL3zMWS4oLJdnKPzPjP9x//HB3zKgie8Gk9QAhTXYsycrPrS0zhAzJmcDmVnCilVFbe0uUQGq75YSho9IURUEYVF+lVoQZA+s9YnnAxr/gyGkcjWp8BGcHTBDJsbbs1DHCqyEztESLISiaAIIdRuEQFV+NSpFTNQAlk0CgakCaTSP9Y3PpNFI0JM2nkeIhaTGNNEgnMUxwVTIJg1ulBbbQ1TsksH7dlzcALrHlG15wewZmkDYYzOXrBEXg1RJETK8mzJFQlBUxbShq5e+1zC7+N62/k57V/pem9WDFuGVhuSViJ1sY2/jqMWdXu68vhaU6NaRZAeeopMl52VYHMZUGg3kDObx1AAdR+G1lC0detf+VtnUdhg44Rv4ldqKolb9NDIMR0XSI1mOMhD/XbJQIyOBu4UlH0zvccGTxaQDRAJASNvJn0TAWFwYi3e12HD7yWjWctOVw2uNME9MD0P1ViChudLjGufdYhlqaX4drYoScL7Y4xybvE9l1G5y1uLPonXe5e9+l+qrVvuxo/H20p668HuV1GwzSvyNYmveJeclxCVVXkOxpJ5XGmwIUwVXz4LZ4VQS8Ol1d49U3wGti7VUJ5Lmq5d/DO22j6Nm1JQwkWYk1foI0T8JlmqTz0K+s8Jezzhoks+VivpyBNYM3If0OJkiveD3/1JqetTPGYZA8fm6Na7bF+8IOpz/3JiMnwzBin/VYfiV89/ILBqFihVGUBG4iJHQ4W8A3qid8w45oFRTWMKmnaL7LbdfdKGuV6PoF2/ZGc4Ypg3XnUdXdKmV73d3eVt3LckQVBqymxITVcyozvIe/aheSrOCSPXNLQGWcVqOo2Xf1WUcEdU/o+99QSwMEFAAAAAgAAAAhAMrnZYorBAAAvgwAABEAHAB3b3JkL3NldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1V22PmzgQ/n7S/QfE58uG1ySLmq3yervV5lqVre6zAZNYa2Nkm03T0/33GwwO9BZVSav9hJln5pnxeGYM795/ZdR6wUISXsxt98axLVykPCPFfm5/edqOZrYlFSoyRHmB5/YJS/v93e+/vTtGEisFatICikJGLJ3bB6XKaDyW6QEzJG94iQsAcy4YUvAq9mOGxHNVjlLOSqRIQihRp7HnOBO7peFzuxJF1FKMGEkFlzxXtUnE85ykuH0YC3GJ38ZkzdOK4UJpj2OBKcTAC3kgpTRs7GfZADwYkpcfbeKFUaN3dJ0LtnvkIjtbXBJebVAKnmIp4YAYNQGSonMcvCI6+74B3+0WNRWYu45e9SMPryPwXhFMUvz1Oo5ZyzEGyz4Pya7jmZx5SNbj+blgegRZdRWF55s46kdt3uOSmcoO19GZMxrXtkihA5KHPiO+boPhme7EunxLekkFNtAjSQQSp375sTR62BdcoIRCOFCGFlSSpaOzmqOsH1ZTHZbJg6WTa9/B1PnGObOOUYlFCq0HI8tz7HENQMHzPFZIAVEkS0ypnmEpxQj8HqO9QAymj5FomwznqKLqCSWx4iUovSDY3tRQpgckUKqwiEuUAtuKF0pwavQy/hdXK5hkAhqttdBzrVvFzYwEiwIx2PB3c2/HM1xHVgly+cnYxrsb9l3+3xGHmS5Ihp/qRMfqRPEWgo/JN7wosg+VVAQY9fT7hQh+FAAuas8foTSeTiXeYqQqSNMbOdMnsaWk3BEhuHgoMqiNN3NG8hwLcECg1nZQPkTwo87zPUYZXKVv5LeS+G9Qhs70n6Asn5dcKc7uT+UBcv1rJ6nrfdwvX/ggyKRZfOZcnVVhbPnr6bKJtEYvQXzXCVabQWTibN1hm0XgO/4gsnLXbjCMhLPlaggJboOJuxhCJqG3CcIhZLH0Zv5sCFku3Wk4iKxW/srfDiIbZz28n83Km04HY9vees7tpj2d9kxYVH9qfBJmVTe2xRqLFWKJIMja1R8j41ojEc9LUhg8wTClcR+Jq8SAo1EDSIYo3UKJGcBp5BmR5Rrnek13SOw73lZDDEphyn44c9VTG4s/Ba/KBj0KVDYNa1TcIGgtSaEeCTNyWSWxsSrgXulBVZF9fBE6T116jpGCBtCD7xHpRtK6uBh9idtGoyKumwTvUFk2vZbs3blNyf6g3Lo9FLxl8M2qX5K912KexrwG0y8orXcG2u2ik3lG1tPzjczvZIGRBZ0sNLKwk02MbFLLDjBdBVx1z9D2ZlnLc04pP+LsvsNficwlmBI48fjEku5uu2kwSiTMoRKuQcWFwf7QmBtEGU8f6vs6aOT+YhGuF860gUN9fSo9qiC1n3G+RBJnLWZMw8b0n8nEmbjuajYKZpvb0WYaBKOZu7wdTafO1PW3rufPnH/bPjA/Hnf/AVBLAwQUAAAACAAAACEA24Vsw30EAACXHQAAEgAcAHdvcmQvbnVtYmVyaW5nLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAADNmc1u4zYQx+8F+g6CgB4Tifq2sM4iySZFFttF0U3RMy3RlhB+CBRlx9d9mT5CH2tfoaRkyXLkxJIctz4pJjk/zQxnyL+dDx+fCdaWiOcpo1MdXJq6hmjE4pQupvqfj/cXga7lAtIYYkbRVF+jXP949fNPH1YhLcgMcblQkwyah6ssmuqJEFloGHmUIALzS5JGnOVsLi4jRgw2n6cRMlaMx4ZlArP8K+MsQnkuObeQLmGub3DRcz9azOFKGiugY0QJ5AI9bxlgMMQ1JkbQBVkjQDJCC3RR9mCUZyivOiBnFEh61SG540h7gvPGkawuyR9HsrukYBypU06kW+AsQ1ROzhknUMiPfGEQyJ+K7EKCMyjSWYpTsZZM06sxMKVPIzySVg2B2PFggm8QFiNsxzWFTfWC03Bjf9HYK9fDyn7zaCwQ7vda+bqJgZ4FzkVty/vkrjL/xKKCICrKrBkcYZlHRvMkzZrTgYylycmkhizfSsCSYL052UDPVnvtaPtUbcMW2Mf9zd4RXHn+NhGYPXZTIRqLPi7svrP2hMgK3r54VGpayQU9D58aYHUAXoR6XhY1I9gwjGjb3YqT9myrmuM1nDRuccY50wLExSCEZdd+qIcyb7HyWMTJMFy9R4ayhQImME/aRDQsQLfBrUkr39niuKb6lbMi29LS42gP2+N1RYcFaHovdzDLj3PmWwIzeeqSKHxYUMbhDEuPZKtpslu0cge0qlzVQ6s6QKv3WisLSFOnln4lhRqc5YLDSHwtiLbz6UFWuxR8khlyJFUeV4OVprueC8RvOIJPaomi0Fy9LVxCeQUAD1jejenrhpohBRbpF7RE+HGdoXpNsp7xNP5NzWE1V60VJMP1Chfc3Tp3ZlDN4KWaSOWjcioUGZb3remYE9M0QelD6WPjRGUnZeg9aQZnBcZINMRHeQfVUz++/9OMf47qUYzmm+XZ71w9UqrCVMNT3bdKTxJIF6Ugtj1TrTWaxXzzuGdU5Cq5eZTKOvy2JjOGS9NrmbedgZRKcIzmUGZmAyspRunYy0yATibsckTeZ/JSXCK14ujMsKF5AY4zLjG3rOAp4tpXtGpl58VolHcXDsua1cma+/5Z+/H976F5s4A3Lm9/ydXqO1neytru2LAE2Xsa7AQJGtxwVhD83x3nnGXHyTycdce5Z9pxjj3yCH/vjvPOtONcc+RR/n4d559lx7n+yLP6P+q44Ew7znNGHuHHd5yxo24PSl8wRvq6gW8C++b6OOl7d+c5wL91+kjf+57bGKMoJRDv3cdfwOU7a9+echVMRhYlZivEvyAh92J/RNbgiA6p1p5aEtwcE9IfjEC6PyJ7X0Q8XSQDBCUIeoTUVX/3I0N6s+acwTt0SP71VGynKzp3cEiHhFtPOXWyovOGF11HU/Uquq4AOknR+YN36JAC6ilaTld0wfCQDmiXnoriZEU3GV50HVnxStF1NQAt737auvPVD2dhXJQ/q5WDMlTHn3jWy5/LHpprv34X3cO09jGdwHWB7wDwOhO0mUbrH6pX/wJQSwMEFAAAAAgAAAAhAL5+dmJWAQAA0AMAABQAHAB3b3JkL3dlYlNldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAACd01FvwiAQAOD3JfsPhHelumlMYzVZFpe9LEu2/QAKV0sGXAO46n79aLWuiy92T0DLfbnjYLneG02+wHmFNqOTcUIJWIFS2W1GP943owUlPnAruUYLGT2Ap+vV7c2yTmvI3yCEuNOTqFifGpHRMoQqZcyLEgz3Y6zAxp8FOsNDXLotM9x97qqRQFPxoHKlVTiwaZLM6Ylx1yhYFErAI4qdARvaeOZARxGtL1XlO62+RqvRycqhAO9jPUYfPcOVPTOT+wvIKOHQYxHGsZhTRi0VwydJOzP6F5gNA6YXwFzAfpixOBksRvYdJYc587OjZM/5XzI9QO4GEdO7Lo9maMJ7lpdBlsO4rkesieWBl9yXfRGGFTg7cwfTnLcR6fPWouO5jlK8QSReAtLC5NiFZiDHxpKuBNKeC13FJ4ZVUEZ9wwbdg8Pag2PNZ6411q8vT3HB/rzD1Q9QSwMEFAAAAAgAAAAhAD+v4WZfDwAADaYAAA8AHAB3b3JkL3N0eWxlcy54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA3Z1tc9s2Esff38x9B45e9V6ksp5lT92O7STnzCWpWzvX1xAJWaj5oCOpOO6nPwB8EKUlKC64UdRMZlqL4v4I4L+7xIIU+dMvXwLf+czjREThZW/w41nP4aEbeSJ8vOx9enj7at5zkpSFHvOjkF/2XnjS++Xnf/7jp+eLJH3xeeJIQJhcBO5lb5Wm64t+P3FXPGDJj9Gah/LLZRQHLJUf48d+wOKnzfqVGwVrloqF8EX60h+enU17OSZuQ4mWS+Hy15G7CXiYavt+zH1JjMJkJdZJQXtuQ3uOYm8dRy5PEtnpwM94ARNhiRmMASgQbhwl0TL9UXYmb5FGSfPBmf4r8LeACQ4wBICpy7/gGPOc0ZeWVY7wcJxpyRFehWPXmArA26AQw1HRDvU/ZV5hJV7qrXC4QqO+smUpW7FkVSVyXAcnJe4lUOMduBfvHsMoZgtfkqQHOdIJHA12MhXU/5xMWKfogqPHpfezjC4vcl/zJdv4aaI+xndx/jH/pP/3NgrTxHm+YIkrxGXvKhZMDvHzBWdJepUI9iBbLg8fCNmS26swEerLlfqjsrObXPYeRCBD+SN/dn6PAhY6P1xH3otzc/+vXl8d6InHodzzM/Mve8NsU/JXuWFcbLlJ9rf5LHwstvHw1af7ausqmxbCk01i8av7K204GF/44pGlm1g2S33ShCwRxd6N7Db/km5k++XO/Xw8+vujtC4/ZXvtDalMGDJ93GdZTH7Ll+8j94l796n84rJ31ss2fnp3F4solpnqsnd+nm+854G4FZ7Hw8qO4Up4/I8VDz8l3Ntu/+2tzjb5BjfahPLv0WyqZfYT780Xl69V7pLfhkzp9VEZaG02Yntwbf6/AjbIB7jOfsWZSuDOYB9xjkYMlUVS6W09c7PX9wH6QKNjHWh8rANNjnWg6bEONDvWgebHOtD51z6QCD2Z3wf1hwHUQxxDNKI5hmBDcwyxhOYYQgXNMUQCmmNwdDTH4MdojsFNEZw0ck1eWHH2kcHbm7mHzxF23MOnBDvu4TOAHfdwwrfjHs7vdtzD6dyOezh723EPJ2s8N5tqOe9kmIVp5yhbRlEaRil31PS0M42FkqWrWhqeOunxmKSTBJgss+Un4s40l+nPhz1k0u18nqqCzomWzlI8quKkc8N5+Jn70Zo7zPMkjxAYc1k+GUbExqdjvuQxD11O6dh0UF+E3Ak3wYLAN9fskYzFQ494+AoiSVIoHZpt0pUKEkHg1AFz44hgzsLI8sN7kXQfKwVxrje+z4lYH2lcTLO61wYa07000JjulYHGdC8MKppRDVFOIxqpnEY0YDmNaNwy/6Qat5xGNG45jWjcclr3cXsQqc/3Zx2D9mt3N36UUCS8e/EY6vXTzqR8zdS5YzF7jNl65ahl54MzLfRx9JLzA8U5rSRRzeu1i6hVZxFuug/oDo0quEoeUXiVPKIAK3ndQ+yDnCarCdotTT1zv1mktUHbviq4Z/4mm9B2jzaWdvewbQC8FXFCFgb1WAIP/qims7dEU71tK7s3bMvqHlb7WYm0eTmSoJV+5D7RpOHblzWPZVn21Jn0NvL96Jl7dMT7NI4yX6uG/HDYOuTfBOsVS0QCEO1P9cUdDM4Htu7coTufiZBGtzevAiZ8h24Gcfvw4b3zEK1VmakGhgZ4HaVpFJAx85XAH/7gi3/RNPBKFsHhC1Fvr4iWhzTsRhCcZDJS5BGR5DRThILkHKp5/+Evi4jFHg3tLubZTUMpJyLes2DtU8WWzIvPMv8QzIY0778sFmpdiCqoHkhglWXDZLP4k7vdU93HyCFZGfp1k+r1Rz3V7X61dwfXfZqwg+s+RdBqytOD8l+Czu7gund2B0fV2RufJYkwXkK15lF1t+BR97d78ZfzIj+KlxufbgALINkIFkCyIYz8TRAmlD3WPMIOax51fwldRvMIluQ079+x8MjE0DAqJTSMSgYNo9JAw0gF6H6HTgXW/TadCqz7vToZjGgKUIFR+Rnp6Z/oKk8FRuVnGkblZxpG5WcaRuVno9cOXy7lJJjuFFNBUvlcBUl3oglTHqyjmMUvRMg3Pn9kBAukGe0ujpbq1yRRmN3ETTGd3SxSysl2hqMS+Q++IGuaYlG2i2BFlPl+FBGtrW1PONpy9961Q2b65xydm3DnM5evIt/jsaFPjfXy/Zq5Ai6dtr9Y8l48rlLnflWu9lcx07ODlkXBvmN2+IB1Yz4dNl5m8sQmKBoKf0wxHbU3HgLj8WHj7Uxix3LS0hIec3rYcjtL3rGctbSEx5y3tBwBy6Z4eM3ip1pHmDX5T1njGZxv1nhhvjCuPWyTI5WWdS44a/KinVBxrlxXXS2A6rSLGbN9u+Ax22OiyEzBhJOZ0jquzIimAPudfxZJ7Rr1gevf5d0TIO+PW2fO3zZRCi5TD9v/qOudnDiFCXdqOaP2F652sox5HFunGzOidd4xI1onIDOiVSYymqNSkpnSOjeZEa2TlBmBzlbwjIDLVtAel62gvU22ghSbbNVhFmBGtJ4OmBHoQIUIdKB2mCmYEahABeZWgQop6ECFCHSgQgQ6UOEEDBeo0B4XqNDeJlAhxSZQIQUdqBCBDlSIQAcqRKADFSLQgWo5tzeaWwUqpKADFSLQgQoR6EAddwxUaI8LVGhvE6iQYhOokIIOVIhABypEoAMVItCBChHoQIUIVKACc6tAhRR0oEIEOlAhAh2ok46BCu1xgQrtbQIVUmwCFVLQgQoR6ECFCHSgQgQ6UCECHagQgQpUYG4VqJCCDlSIQAcqRKADddoxUKE9LlChvU2gQopNoEIKOlAhAh2oEIEOVIhABypEoAMVIlCBCsytAhVS0IEKEehAhYgm/8wvUZpusx/gVz2Nd+wjfueTNer36k+5d9ZQ26OKVplZ7X+LcB1FT07tDw9Ho/YQsfBFpJeoDZfVq9wZ+sLnrzfNv/Bp8RiPtl3Jfwuhr5kC+LitJVhTGTe5fNUSFHnjJk+vWoJZ57gp+1YtwWlw3JR0dVwWN6XI0xEwbkozFeOBwbwpW1fM4RA35eiKIRzhpsxcMYQD3JSPK4YTRyXnfetJy3GalveXAkKTO1YIMzOhyS2hVsa1/daimQlt1TMT2spoJqD0NGLwwppRaIXNKDupYZhhpbYPVDMBKzUkWEkNMPZSQ5S11BBlJzVMjFipIQErtX1yNhOspAYYe6khylpqiLKTGp7KsFJDAlZqSMBK3fGEbMTYSw1R1lJDlJ3UcHKHlRoSsFJDAlZqSLCSGmDspYYoa6khyk5qUCWjpYYErNSQgJUaEqykBhh7qSHKWmqIapJar6LYV0sVc9wkrGKIOyFXDHHJuWJoUS1VrC2rpQrBslqCWtlVS1XR7Kqlqnp21VJVRrtqCehpVy3VCmtXLdUqbFctmaXGVUt1UtsHql21VCc1rloySo2rlhqlxlVLjVLjqiWz1LhqqU5qXLVUJ7V9crarloxS46qlRqlx1VKj1LhqySw1rlqqkxpXLdVJjauW6qTueEK2q5YapcZVS41S46ols9S4aqlOaly1VCc1rlqqkxpXLRmlxlVLjVLjqqVGqXHVkllqXLVUJzWuWqqTGlct1UmNq5aMUuOqpUapcdVSo9S4aumDNBEEj4C6D1icOnTPi7tlySpl3R9O+CmMeRL5n7nn0Hb1PaqX/eed118ptn6dn9w/lWOmnoBe+bmSlz0BNgfqHd955WuqlLFqiZO/5yvfrBucX67NjqgNDxyqhOfXigcAv325lT7Cgsle/RrWHTxUD0as2a4cotheHOZmxeLs262rFvuc7/fl+SJO1Avcsq/Pzoaj0evZdbbXOns12xPn64/y+P3ig9SHJ/pTkv2AVpov1DPF5AiMpvq3V2yZ8viyN8+jNsqe2vT+s18eKZcuP0btW+CKV76xPyuvfNt/H5z68k2+TX2vXwlXa+kmaWXztfBE1jhXRXnZrrfj2VT7ht5ZZ4DLHtPxv92sbkpR9xm8zQjbF8gVF5urL5AbF30tXu1m4zxDo/MMKZ1n2MJ5tmGZ7bcTlF/ZvQYt3WvwfbrXaAjdK9vW0b1GRvcaUbrX6Dtxr2Gzex1yomO4ynAOXSXb1tFVxkZXGVO6yvjEXWVe9ZSx0VNGX8dTRPbfm4TEbzp6xMToERNKj5h8Hx4xPs3c0dEHpkYfmFL6wPTEfcAs++ToiWByrv7tO4F609LWBR6EeoPv1ZTAA2ZGD5hResDsb+sB0yME/pE1nxs1n1NqPj8pzaGys6PH9nCm/rXR+TXFnO/cqPM5pc7nJ67z/AgRTK+sKweVufkD1Q3rX/mLkcon++jXIu1rbnh7kkGvQTu9zO1O1SpsQ5v1Km3jwl3+sHaTQ7X2qHThZ1LLP96FyqGe83fYZy31vrBeseMN9/0PLNs7Wpt39fkyzb4dnM1rvl9kr4Qw2sf62oER0N9tTL/shHm8s5dE5j9qMa6T6keGweHOHiXWcaRb+rC7SeTQ6OXe/fbtrIHut/K2WG51tnlmL3HVxoEpXQ0OpCpz8vle1qO6LHciJR02SjokknSIO/t8/wp3WXFEKjxqVHhEpPDoayn8d1/0Q6o1blRrTKTW+NTUOvbCG1KVSaMqEyJVJqemysnpMG3UYUqkw/TUdDjqahRSklmjJDMiSWanJslpiTBvFGFOJML81EQ46koOUpLzRknOiSQ5PzVJvslyWvZgi/2xzrZSrKNpUtMi2iAv2FBrZNtF7r0L4656fcWXdMP8/En6jctjxyyBtk3W3XpV9PuJx+XgbifLZXqcwunzhDgRbiWqdYOu4VbxJbP6p1m2Hl+z+iAtX6K9L1D5BUWoFrDGaB1YRGu4CbI/hA/vhyq/BDE9mB64Je+bTECAVwwm36Lm3RHL5BZdQ3fXvczecOJzxq8sWX3MZq8B2Fcm20oRrZrUFKpDmztrD92ANige3venW3BUEcvj2khtmGSOz9S/NhpS18PbgasVp2vMVBQ2a3IwYI46cvUOrC6fbN+rsT9We6/dOOTRcChGYwv3FPpSl7pQpZ6R12LO19Jdyk7nD44rn2a3323wuDuco9R4BOqEetg7jnifVT4W9Ylu920oFAmverimvDeyKSjW117lAqneL5GelL9X+y91j5yTZUeuJ61OPuyW6+PlpdSvfKT+tmeHfhgxKjJ7NcbmU90afWU3+0SS/L/peijwo0bX7Xo62AmSAx57cnHfmCO3z9Y0DeB2j65Zsrjmh8qSi+yo+WglMqn4N2xNM3ZgSjmpH9Hir+Tn/wNQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL3RoZW1lL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAHAB3b3JkL3RoZW1lL3RoZW1lMS54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA7VlPb9s2FL8P2HcgdHf1x5IsBXUL/23XJm3RpB16ZGRaYkyJAkknMYoCQ3vaZcCAbthlwG47DMMKrMCKXfZhCrTYug8xSnZs0abatE23AksMxCL5e48/vvf4+ExdvHycEnCIGMc0axv2BcsAKIvoCGdx27izN2wEBuACZiNIaIbaxgxx4/KlTz+5CLdEglIEpHzGt2DbSITIt0yTR7Ib8gs0R5kcG1OWQiGbLDZHDB5JvSkxHcvyzRTizAAZTKXam+MxjhDYK1Qal06UD4j8lwledESE7UbljFWJEjua2MUXn/EeYeAQkrYh5xnRoz10LAxAIBdyoG1Y5Z9hXrpoLoWIqJGtyA3Lv4XcQmA0cUo5Fu8vBa2BE7j2Ur8z17+JGwTFZ6mvBMAokiu1N7C251uBs8BWQPNHje6wZTdVfEV/c1N/6HcdV8E3V3h3c43DcND3FLy7wnsb+I7ldMOmgvdWeH8D7w46LWeg4EtQQnA22UT7rSDwF+glZEzJVS089H2r1V/AVyizEl1z+UzUxVoKDygbSkDpXChwBsQsR2MYSVwnF5SDPuY5gTMD5DCjXHZbjm3LwHMtZ/kpLQ63EKxIz7sivtFV8AE8YjgXbeOa1GpUIC+ePXv+8Onzh789f/To+cNfwDaOE6GRuwqzuCr36sev//7+C/DXrz+8evyNHs+r+Jc/f/ny9z9ep14otL598vLpkxffffXnT4818A6D+1X4Hk4RBzfQEbhNU7lAzQRon72dxF4CcVWik8UcZrCQ0aAHIlHQN2aQQA2ui1Q73mUyXeiAV6YHCuHdhE0F1gCvJ6kC3KGUdCnTrul6MVfVCtMs1k/OplXcbQgPdXP31rw8mOYy7rFOZS9BCs1bRLocxihDAhRjdIKQRuwexopdd3DEKKdjAe5h0IVYa5I9vC/0QldxKv0y0xGU/lZss3MXdCnRqe+jQxUp9wYkOpWIKGa8AqcCplrGMCVV5DYUiY7k7oxFisG5kJ6OEaFgMEKc62RusplC9zqUeUvr9h0yS1UkE3iiQ25DSqvIPp30EpjmWs44S6rYz/hEhigEt6jQkqDqDina0g8wq3X3XYzE2+3tOzIN6QOkGJky3ZZAVN2PMzKGSKe8w1IlxXYY1kZHdxorob2NEIFHcIQQuPOZDk9zqid9LZFZ5SrS2eYaVGO1aGeIy1qpKG40jsVcCdldFNMaPjuztcQzg1kKWZ3mGxM1ZAb7TG5GXbySaKKkUsyKTasncZOn8FRabyVQCauizfXxOmPZ2+4xKXPwDjLorWVkYj+1bfYgQfqA2YMYbOvSrRSZ6kWK7VSKTbVyY3XTrtxgrhU9Kc7eUAH9N5XPB6t5zr7aqUso6zVOHW69sulRNsIff2HTh9PsFpJnyXldc17X/B/rmrr9fF7NnFcz59XMv1bNrAoYs3rZU2pJa29+xpiQXTEjaJuXpQ+Xe380lJ1loxRaXjTliXxcTKfgYgbLZ8Co+ByLZDeBuZzGLmeI+UJ1zEFOuSyfjFrdZfE1TXfoaHGPZ5/cbUoBKFb9lrfsl6WamPf6rdVF6FJ92Yp5lYBXKj09icpkKommhkSreToStnVWLEINi8B+HQuz4hV5OAFYXIt77pyRDDcZ0qPCT3P5E++euafrjKku29EsL3TPzNMKiUq4qSQqYZjIw2O9+4x9HYZ6VztaGq3gQ/ja3MwNJFNb4EjuuaYn1UQwbxtj+bNJPqa51MeLTAVJnLWNSCwM/S6ZJWdc9CFP5rByaL7+FAvEAMGpjPWqG0i24mY7LevjJRdaH5/lzHUno/EYRaKmZ9WUY3Ml2tH3BBcNOpWkd5PREdgnU3YbSkN5Lbsw4AhzsbTmCLNKcK+suJauFltReQO02qKQ5AlcnCjVZD6Hl89LOpV1lEzXV2XqTLgfD8/i1H2z0FrSrDlAWrVZ7MMd8hVWTT0rT5vrwsB6/Snx/gdChVqgp9bUU6s7O86wIKhM59fYzan15nueButRa1bqyrK18XKb7h/IyO/LanVKBJ9fkB3L8rt38lpyngnK3pPscizAlOG2cd/yOm7P8XoNK/AGDbfpWo3A6zQbHc9r2gPPtvpd54E0ikhS25vPPZQ/9sls8e6+7N94f5+elNoXIpqatKyDzVK4fH9vO/Xv7wGWlrnvO8OwGXb9RtjsDBtuvxs0wp7fbfT9Xqs/7Pe8IBw+MMBhCXY7zZ7rD4KGb/d6Dde3CvpB2Gi5jtNxW51g4HYeLGwtV37yfWLektelfwBQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL19yZWxzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhALO+ix3+AAAAtgMAABwAHAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQJAAMw0M4SiBztaHV4CwABBPUBAAAEFAAAAK2TzWrDMBCE74W+g9h7LTttQwmRcymBXFv3AWR7/UP1Y6RNWr99RUoShwbTg44zYme+hdV6860VO6DzvTUCsiQFhqaydW9aAR/F9uEFmCdpaqmsQQEjetjk93frN1SSwpDv+sGzkGK8gI5oWHHuqw619Ikd0ISXxjotKUjX8kFWn7JFvkjTJXfTDMivMtmuFuB29SOwYhzwP9m2afoKX22112joRgX3SBQ28yFTuhZJwMlJQhbw2wiLqAg0KpwCHPVcfRaz3ux1iS5sfCE4W3MQy5gQFGbxAnCUv2Y2x/Ack6GxhgpZqgnH2ZqDeIoJ8YXl+5+TnJgnEH712/IfUEsBAh4DFAAAAAgAAAAhADKRb1deAQAApQUAABMAGAAAAAAAAQAAAKSBAAAAAFtDb250ZW50X1R5cGVzXS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGrAQAAZG9jUHJvcHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhACEYr1llAQAAxQIAABAAGAAAAAAAAQAAAKSB7gEAAGRvY1Byb3BzL2FwcC54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEACvOn+GYBAADtAgAAEQAYAAAAAAABAAAApIGdAwAAZG9jUHJvcHMvY29yZS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFOBQAAX3JlbHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAGAAAAAAAAQAAAKSBjgUAAF9yZWxzLy5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BvAYAAHdvcmQvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAGAAAAAAAAQAAAKSB+wYAAHdvcmQvZm9udFRhYmxlLnhtbFVUBQADnhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABgAAAAAAAEAAACkgVcJAAB3b3JkL2RvY3VtZW50LnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDK52WKKwQAAL4MAAARABgAAAAAAAEAAACkgXcMAAB3b3JkL3NldHRpbmdzLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDbhWzDfQQAAJcdAAASABgAAAAAAAEAAACkge0QAAB3b3JkL251bWJlcmluZy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAvn52YlYBAADQAwAAFAAYAAAAAAABAAAApIG2FQAAd29yZC93ZWJTZXR0aW5ncy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAP6/hZl8PAAANpgAADwAYAAAAAAABAAAApIFaFwAAd29yZC9zdHlsZXMueG1sVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BAicAAHdvcmQvdGhlbWUvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAGAAAAAAAAQAAAKSBRycAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNkTVsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTEuAAB3b3JkL19yZWxzL1VUBQADhhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCzvosd/gAAALYDAAAcABgAAAAAAAEAAACkgXYuAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAARABEAqQUAAMovAAAAAA==`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, 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.23.1", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension2) => {
|
|
243477
243978
|
const extensionLike = extension2;
|
|
243478
243979
|
const config2 = extensionLike?.config;
|
|
243479
243980
|
const ExtensionCtor = extensionLike?.constructor;
|
|
@@ -244052,6 +244553,156 @@ var Node$13 = class Node$14 {
|
|
|
244052
244553
|
}
|
|
244053
244554
|
this.#applied.delete(el);
|
|
244054
244555
|
}
|
|
244556
|
+
}, INTERACTION_EPOCH_KEY = "interactionEpoch", DISPLAY_LABEL_SOURCE_KEY = "displayLabelSource", DISPLAY_LABEL_SOURCE, FieldAnnotationInteractionLayer = class {
|
|
244557
|
+
#container = null;
|
|
244558
|
+
setContainer(container) {
|
|
244559
|
+
this.#container = container;
|
|
244560
|
+
}
|
|
244561
|
+
apply(layoutEpoch) {
|
|
244562
|
+
if (!this.#container)
|
|
244563
|
+
return;
|
|
244564
|
+
const epochStr = String(layoutEpoch);
|
|
244565
|
+
const annotations = this.#container.querySelectorAll(buildAnnotationSelector());
|
|
244566
|
+
for (let index2 = 0;index2 < annotations.length; index2 += 1) {
|
|
244567
|
+
const annotation = annotations[index2];
|
|
244568
|
+
if (annotation.dataset[INTERACTION_EPOCH_KEY] === epochStr)
|
|
244569
|
+
continue;
|
|
244570
|
+
annotation.dataset[INTERACTION_EPOCH_KEY] = epochStr;
|
|
244571
|
+
annotation.draggable = true;
|
|
244572
|
+
annotation.dataset[DATASET_KEYS.DRAGGABLE] = "true";
|
|
244573
|
+
const displayLabel = resolveAnnotationDisplayLabel(annotation, annotation.querySelector(`.${DOM_CLASS_NAMES.ANNOTATION_CONTENT}`));
|
|
244574
|
+
if (displayLabel !== null) {
|
|
244575
|
+
annotation.dataset[DATASET_KEYS.DISPLAY_LABEL] = displayLabel.value;
|
|
244576
|
+
annotation.dataset[DISPLAY_LABEL_SOURCE_KEY] = displayLabel.source;
|
|
244577
|
+
}
|
|
244578
|
+
const variantType = annotation.dataset[DATASET_KEYS.TYPE];
|
|
244579
|
+
if (variantType)
|
|
244580
|
+
annotation.dataset[DATASET_KEYS.VARIANT] = variantType;
|
|
244581
|
+
this.#ensureCaretAnchor(annotation);
|
|
244582
|
+
}
|
|
244583
|
+
}
|
|
244584
|
+
clear() {
|
|
244585
|
+
if (!this.#container)
|
|
244586
|
+
return;
|
|
244587
|
+
const annotations = this.#container.querySelectorAll(buildAnnotationSelector());
|
|
244588
|
+
for (let index2 = 0;index2 < annotations.length; index2 += 1) {
|
|
244589
|
+
const annotation = annotations[index2];
|
|
244590
|
+
annotation.removeAttribute("draggable");
|
|
244591
|
+
delete annotation.dataset[DATASET_KEYS.DRAGGABLE];
|
|
244592
|
+
delete annotation.dataset[DATASET_KEYS.DISPLAY_LABEL];
|
|
244593
|
+
delete annotation.dataset[DATASET_KEYS.VARIANT];
|
|
244594
|
+
delete annotation.dataset[INTERACTION_EPOCH_KEY];
|
|
244595
|
+
delete annotation.dataset[DISPLAY_LABEL_SOURCE_KEY];
|
|
244596
|
+
annotation.querySelector(`.${DOM_CLASS_NAMES.ANNOTATION_CARET_ANCHOR}`)?.remove();
|
|
244597
|
+
}
|
|
244598
|
+
}
|
|
244599
|
+
#ensureCaretAnchor(annotation) {
|
|
244600
|
+
if (annotation.querySelector(`.${DOM_CLASS_NAMES.ANNOTATION_CARET_ANCHOR}`))
|
|
244601
|
+
return;
|
|
244602
|
+
const pmEnd = annotation.dataset[DATASET_KEYS.PM_END];
|
|
244603
|
+
const layoutEpoch = annotation.dataset[DATASET_KEYS.LAYOUT_EPOCH];
|
|
244604
|
+
if (pmEnd == null)
|
|
244605
|
+
return;
|
|
244606
|
+
const doc$12 = this.#container?.ownerDocument;
|
|
244607
|
+
if (!doc$12)
|
|
244608
|
+
return;
|
|
244609
|
+
const caretAnchor = doc$12.createElement("span");
|
|
244610
|
+
caretAnchor.dataset[DATASET_KEYS.PM_START] = pmEnd;
|
|
244611
|
+
caretAnchor.dataset[DATASET_KEYS.PM_END] = pmEnd;
|
|
244612
|
+
caretAnchor.dataset[DATASET_KEYS.LAYOUT_EPOCH] = layoutEpoch ?? "";
|
|
244613
|
+
caretAnchor.classList.add(DOM_CLASS_NAMES.ANNOTATION_CARET_ANCHOR);
|
|
244614
|
+
caretAnchor.style.position = "absolute";
|
|
244615
|
+
caretAnchor.style.left = "100%";
|
|
244616
|
+
caretAnchor.style.top = "0";
|
|
244617
|
+
caretAnchor.style.width = "0";
|
|
244618
|
+
caretAnchor.style.height = "1em";
|
|
244619
|
+
caretAnchor.style.overflow = "hidden";
|
|
244620
|
+
caretAnchor.style.pointerEvents = "none";
|
|
244621
|
+
caretAnchor.style.userSelect = "none";
|
|
244622
|
+
caretAnchor.style.opacity = "0";
|
|
244623
|
+
caretAnchor.textContent = "";
|
|
244624
|
+
if (!annotation.style.position)
|
|
244625
|
+
annotation.style.position = "relative";
|
|
244626
|
+
annotation.appendChild(caretAnchor);
|
|
244627
|
+
}
|
|
244628
|
+
}, PROOFING_CSS, splitOriginMap, PresentationProofingDecorator = class {
|
|
244629
|
+
#container = null;
|
|
244630
|
+
setContainer(container) {
|
|
244631
|
+
this.#container = container;
|
|
244632
|
+
}
|
|
244633
|
+
applyAnnotations(annotations) {
|
|
244634
|
+
const container = this.#container;
|
|
244635
|
+
if (!container)
|
|
244636
|
+
return false;
|
|
244637
|
+
if (!annotations || annotations.length === 0)
|
|
244638
|
+
return clearProofingDecorations(container);
|
|
244639
|
+
return applyProofingDecorations(container, annotations);
|
|
244640
|
+
}
|
|
244641
|
+
clear() {
|
|
244642
|
+
const container = this.#container;
|
|
244643
|
+
if (!container)
|
|
244644
|
+
return false;
|
|
244645
|
+
return clearProofingDecorations(container);
|
|
244646
|
+
}
|
|
244647
|
+
}, PresentationPostPaintPipeline = class {
|
|
244648
|
+
#fieldAnnotationLayer;
|
|
244649
|
+
#commentHighlightDecorator;
|
|
244650
|
+
#decorationBridge;
|
|
244651
|
+
#proofingDecorator;
|
|
244652
|
+
constructor(deps = {}) {
|
|
244653
|
+
this.#fieldAnnotationLayer = deps.fieldAnnotationLayer ?? new FieldAnnotationInteractionLayer;
|
|
244654
|
+
this.#commentHighlightDecorator = deps.commentHighlightDecorator ?? new CommentHighlightDecorator;
|
|
244655
|
+
this.#decorationBridge = deps.decorationBridge ?? new DecorationBridge;
|
|
244656
|
+
this.#proofingDecorator = deps.proofingDecorator ?? new PresentationProofingDecorator;
|
|
244657
|
+
}
|
|
244658
|
+
setContainer(container) {
|
|
244659
|
+
this.#fieldAnnotationLayer.setContainer(container);
|
|
244660
|
+
this.#commentHighlightDecorator.setContainer(container);
|
|
244661
|
+
this.#proofingDecorator.setContainer(container);
|
|
244662
|
+
}
|
|
244663
|
+
setActiveComment(commentId) {
|
|
244664
|
+
return this.#commentHighlightDecorator.setActiveComment(commentId);
|
|
244665
|
+
}
|
|
244666
|
+
recordDecorationTransaction(transaction) {
|
|
244667
|
+
this.#decorationBridge.recordTransaction(transaction);
|
|
244668
|
+
}
|
|
244669
|
+
hasDecorationChanges(editorState) {
|
|
244670
|
+
return this.#decorationBridge.hasChanges(editorState);
|
|
244671
|
+
}
|
|
244672
|
+
collectDecorationRanges(editorState) {
|
|
244673
|
+
return this.#decorationBridge.collectDecorationRanges(editorState);
|
|
244674
|
+
}
|
|
244675
|
+
syncDecorations(editorState, domPositionIndex, options) {
|
|
244676
|
+
if (!editorState)
|
|
244677
|
+
return false;
|
|
244678
|
+
return this.#decorationBridge.sync(editorState, domPositionIndex, options);
|
|
244679
|
+
}
|
|
244680
|
+
applyCommentHighlights() {
|
|
244681
|
+
this.#commentHighlightDecorator.apply();
|
|
244682
|
+
}
|
|
244683
|
+
syncInlineStyleLayers(editorState, domPositionIndex) {
|
|
244684
|
+
this.applyCommentHighlights();
|
|
244685
|
+
return this.syncDecorations(editorState, domPositionIndex);
|
|
244686
|
+
}
|
|
244687
|
+
applyProofingAnnotations(annotations, rebuildDomPositionIndex) {
|
|
244688
|
+
const mutated = this.#proofingDecorator.applyAnnotations(annotations);
|
|
244689
|
+
if (mutated)
|
|
244690
|
+
rebuildDomPositionIndex();
|
|
244691
|
+
return mutated;
|
|
244692
|
+
}
|
|
244693
|
+
refreshAfterPaint(options) {
|
|
244694
|
+
this.#fieldAnnotationLayer.apply(options.layoutEpoch);
|
|
244695
|
+
options.rebuildDomPositionIndex();
|
|
244696
|
+
this.syncInlineStyleLayers(options.editorState, options.domPositionIndex);
|
|
244697
|
+
this.applyProofingAnnotations(options.proofingAnnotations, options.rebuildDomPositionIndex);
|
|
244698
|
+
options.reapplyStructuredContentHover?.();
|
|
244699
|
+
}
|
|
244700
|
+
destroy() {
|
|
244701
|
+
this.#proofingDecorator.clear();
|
|
244702
|
+
this.#fieldAnnotationLayer.clear();
|
|
244703
|
+
this.#commentHighlightDecorator.destroy();
|
|
244704
|
+
this.#decorationBridge.destroy();
|
|
244705
|
+
}
|
|
244055
244706
|
}, ProofingStore = class {
|
|
244056
244707
|
#issuesBySegment = /* @__PURE__ */ new Map;
|
|
244057
244708
|
addIssue(issue) {
|
|
@@ -244983,9 +245634,8 @@ var Node$13 = class Node$14 {
|
|
|
244983
245634
|
border-color: transparent;
|
|
244984
245635
|
}
|
|
244985
245636
|
|
|
244986
|
-
/* Group hover (JavaScript-coordinated) */
|
|
244987
|
-
.superdoc-structured-content-block.sdt-group-hover:not(.ProseMirror-selectednode)
|
|
244988
|
-
.superdoc-structured-content-block.sdt-hover:not(.ProseMirror-selectednode) {
|
|
245637
|
+
/* Group hover (JavaScript-coordinated via PresentationEditor) */
|
|
245638
|
+
.superdoc-structured-content-block.sdt-group-hover:not(.ProseMirror-selectednode) {
|
|
244989
245639
|
background-color: var(--sd-content-controls-block-hover-bg, #f2f2f2);
|
|
244990
245640
|
border-color: transparent;
|
|
244991
245641
|
}
|
|
@@ -245029,7 +245679,7 @@ var Node$13 = class Node$14 {
|
|
|
245029
245679
|
}
|
|
245030
245680
|
|
|
245031
245681
|
.superdoc-structured-content-block.ProseMirror-selectednode .superdoc-structured-content__label,
|
|
245032
|
-
.superdoc-structured-content-block.sdt-hover:not(.ProseMirror-selectednode) .superdoc-structured-content__label {
|
|
245682
|
+
.superdoc-structured-content-block.sdt-group-hover:not(.ProseMirror-selectednode) .superdoc-structured-content__label {
|
|
245033
245683
|
display: inline-flex;
|
|
245034
245684
|
}
|
|
245035
245685
|
|
|
@@ -245117,10 +245767,10 @@ var Node$13 = class Node$14 {
|
|
|
245117
245767
|
|
|
245118
245768
|
/* Hover highlight for SDT containers.
|
|
245119
245769
|
* Hover adds background highlight and z-index boost.
|
|
245120
|
-
* Block SDTs use .sdt-hover class (event delegation for multi-fragment coordination).
|
|
245770
|
+
* Block SDTs use .sdt-group-hover class (event delegation for multi-fragment coordination).
|
|
245121
245771
|
* Inline SDTs use :hover (single element, no coordination needed).
|
|
245122
245772
|
* Hover is suppressed when the node is selected (SD-1584). */
|
|
245123
|
-
.superdoc-structured-content-block[data-lock-mode].sdt-hover:not(.ProseMirror-selectednode),
|
|
245773
|
+
.superdoc-structured-content-block[data-lock-mode].sdt-group-hover:not(.ProseMirror-selectednode),
|
|
245124
245774
|
.superdoc-structured-content-inline[data-lock-mode]:hover:not(.ProseMirror-selectednode) {
|
|
245125
245775
|
background-color: var(--sd-content-controls-lock-hover-bg, rgba(98, 155, 231, 0.08));
|
|
245126
245776
|
z-index: 9999999;
|
|
@@ -245140,8 +245790,7 @@ var Node$13 = class Node$14 {
|
|
|
245140
245790
|
}
|
|
245141
245791
|
|
|
245142
245792
|
.presentation-editor--viewing .superdoc-structured-content-block.sdt-group-hover,
|
|
245143
|
-
.presentation-editor--viewing .superdoc-structured-content-block.sdt-hover
|
|
245144
|
-
.presentation-editor--viewing .superdoc-structured-content-block[data-lock-mode].sdt-hover {
|
|
245793
|
+
.presentation-editor--viewing .superdoc-structured-content-block[data-lock-mode].sdt-group-hover {
|
|
245145
245794
|
background: none;
|
|
245146
245795
|
border: none;
|
|
245147
245796
|
}
|
|
@@ -245178,11 +245827,8 @@ var Node$13 = class Node$14 {
|
|
|
245178
245827
|
}
|
|
245179
245828
|
}
|
|
245180
245829
|
`, FIELD_ANNOTATION_STYLES = `
|
|
245181
|
-
/* Field annotation
|
|
245182
|
-
|
|
245183
|
-
user-select: text;
|
|
245184
|
-
}
|
|
245185
|
-
|
|
245830
|
+
/* Field annotation visual styles — suppress native selection artifacts.
|
|
245831
|
+
* Annotations are atomic inline nodes; native selection and caret look broken. */
|
|
245186
245832
|
.superdoc-layout .annotation::selection,
|
|
245187
245833
|
.superdoc-layout .annotation *::selection {
|
|
245188
245834
|
background: transparent;
|
|
@@ -245197,41 +245843,7 @@ var Node$13 = class Node$14 {
|
|
|
245197
245843
|
.superdoc-layout .annotation * {
|
|
245198
245844
|
caret-color: transparent;
|
|
245199
245845
|
}
|
|
245200
|
-
|
|
245201
|
-
.superdoc-layout .annotation[data-draggable="true"]:hover {
|
|
245202
|
-
opacity: 0.9;
|
|
245203
|
-
}
|
|
245204
|
-
|
|
245205
|
-
.superdoc-layout .annotation[data-draggable="true"]:active {
|
|
245206
|
-
cursor: grabbing;
|
|
245207
|
-
}
|
|
245208
|
-
|
|
245209
|
-
/* Drag over indicator for drop targets */
|
|
245210
|
-
.superdoc-layout.drag-over {
|
|
245211
|
-
outline: 2px dashed #b015b3;
|
|
245212
|
-
outline-offset: -2px;
|
|
245213
|
-
}
|
|
245214
|
-
|
|
245215
|
-
/* Drop zone indicator */
|
|
245216
|
-
.superdoc-layout .superdoc-drop-indicator {
|
|
245217
|
-
position: absolute;
|
|
245218
|
-
width: 2px;
|
|
245219
|
-
background-color: #b015b3;
|
|
245220
|
-
pointer-events: none;
|
|
245221
|
-
z-index: 1000;
|
|
245222
|
-
}
|
|
245223
|
-
`, IMAGE_SELECTION_STYLES, NATIVE_SELECTION_STYLES = `
|
|
245224
|
-
/* Hide native browser selection on layout engine content.
|
|
245225
|
-
* We render our own selection overlay via PresentationEditor's #localSelectionLayer
|
|
245226
|
-
* for precise control over selection geometry across pages and zoom levels. */
|
|
245227
|
-
.superdoc-layout *::selection {
|
|
245228
|
-
background: transparent;
|
|
245229
|
-
}
|
|
245230
|
-
|
|
245231
|
-
.superdoc-layout *::-moz-selection {
|
|
245232
|
-
background: transparent;
|
|
245233
|
-
}
|
|
245234
|
-
`, printStylesInjected = false, linkStylesInjected = false, trackChangeStylesInjected = false, sdtContainerStylesInjected = false, fieldAnnotationStylesInjected = false, imageSelectionStylesInjected = false, nativeSelectionStylesInjected = false, ensurePrintStyles = (doc$12) => {
|
|
245846
|
+
`, IMAGE_SELECTION_STYLES, printStylesInjected = false, linkStylesInjected = false, trackChangeStylesInjected = false, sdtContainerStylesInjected = false, fieldAnnotationStylesInjected = false, imageSelectionStylesInjected = false, ensurePrintStyles = (doc$12) => {
|
|
245235
245847
|
if (printStylesInjected || !doc$12)
|
|
245236
245848
|
return;
|
|
245237
245849
|
const styleEl = doc$12.createElement("style");
|
|
@@ -245279,14 +245891,6 @@ var Node$13 = class Node$14 {
|
|
|
245279
245891
|
styleEl.textContent = IMAGE_SELECTION_STYLES;
|
|
245280
245892
|
doc$12.head?.appendChild(styleEl);
|
|
245281
245893
|
imageSelectionStylesInjected = true;
|
|
245282
|
-
}, ensureNativeSelectionStyles = (doc$12) => {
|
|
245283
|
-
if (nativeSelectionStylesInjected || !doc$12)
|
|
245284
|
-
return;
|
|
245285
|
-
const styleEl = doc$12.createElement("style");
|
|
245286
|
-
styleEl.setAttribute("data-superdoc-native-selection-styles", "true");
|
|
245287
|
-
styleEl.textContent = NATIVE_SELECTION_STYLES;
|
|
245288
|
-
doc$12.head?.appendChild(styleEl);
|
|
245289
|
-
nativeSelectionStylesInjected = true;
|
|
245290
245894
|
}, gradientIdCounter = 0, getFragmentParagraphBorders = (fragment2, blockLookup) => {
|
|
245291
245895
|
const lookup3 = blockLookup.get(fragment2.blockId);
|
|
245292
245896
|
if (!lookup3)
|
|
@@ -246673,57 +247277,6 @@ var Node$13 = class Node$14 {
|
|
|
246673
247277
|
y$1 += actualRowHeight + cellSpacingPx;
|
|
246674
247278
|
}
|
|
246675
247279
|
return container;
|
|
246676
|
-
}, SDT_BLOCK_SELECTOR, HOVER_CLASS, SdtGroupedHover = class {
|
|
246677
|
-
constructor() {
|
|
246678
|
-
this.hoveredSdtId = null;
|
|
246679
|
-
this.mount = null;
|
|
246680
|
-
this.onMouseOver = null;
|
|
246681
|
-
this.onMouseLeave = null;
|
|
246682
|
-
}
|
|
246683
|
-
bind(mount) {
|
|
246684
|
-
this.destroy();
|
|
246685
|
-
this.mount = mount;
|
|
246686
|
-
this.onMouseOver = (e) => {
|
|
246687
|
-
const sdtId = e.target.closest?.(SDT_BLOCK_SELECTOR)?.dataset.sdtId ?? null;
|
|
246688
|
-
if (sdtId === this.hoveredSdtId)
|
|
246689
|
-
return;
|
|
246690
|
-
if (this.hoveredSdtId)
|
|
246691
|
-
sdtElementsById(mount, this.hoveredSdtId).forEach((el) => el.classList.remove(HOVER_CLASS));
|
|
246692
|
-
this.hoveredSdtId = sdtId;
|
|
246693
|
-
if (sdtId)
|
|
246694
|
-
sdtElementsById(mount, sdtId).forEach((el) => {
|
|
246695
|
-
if (!el.classList.contains("ProseMirror-selectednode"))
|
|
246696
|
-
el.classList.add(HOVER_CLASS);
|
|
246697
|
-
});
|
|
246698
|
-
};
|
|
246699
|
-
this.onMouseLeave = () => {
|
|
246700
|
-
if (this.hoveredSdtId) {
|
|
246701
|
-
sdtElementsById(mount, this.hoveredSdtId).forEach((el) => el.classList.remove(HOVER_CLASS));
|
|
246702
|
-
this.hoveredSdtId = null;
|
|
246703
|
-
}
|
|
246704
|
-
};
|
|
246705
|
-
mount.addEventListener("mouseover", this.onMouseOver);
|
|
246706
|
-
mount.addEventListener("mouseleave", this.onMouseLeave);
|
|
246707
|
-
}
|
|
246708
|
-
reapply() {
|
|
246709
|
-
if (this.hoveredSdtId && this.mount)
|
|
246710
|
-
sdtElementsById(this.mount, this.hoveredSdtId).forEach((el) => {
|
|
246711
|
-
if (!el.classList.contains("ProseMirror-selectednode"))
|
|
246712
|
-
el.classList.add(HOVER_CLASS);
|
|
246713
|
-
});
|
|
246714
|
-
}
|
|
246715
|
-
destroy() {
|
|
246716
|
-
if (this.mount) {
|
|
246717
|
-
if (this.onMouseOver)
|
|
246718
|
-
this.mount.removeEventListener("mouseover", this.onMouseOver);
|
|
246719
|
-
if (this.onMouseLeave)
|
|
246720
|
-
this.mount.removeEventListener("mouseleave", this.onMouseLeave);
|
|
246721
|
-
}
|
|
246722
|
-
this.mount = null;
|
|
246723
|
-
this.onMouseOver = null;
|
|
246724
|
-
this.onMouseLeave = null;
|
|
246725
|
-
this.hoveredSdtId = null;
|
|
246726
|
-
}
|
|
246727
247280
|
}, isRtlParagraph = (attrs) => attrs?.direction === "rtl" || attrs?.rtl === true, resolveTextAlign = (alignment$1, isRtl) => {
|
|
246728
247281
|
switch (alignment$1) {
|
|
246729
247282
|
case "center":
|
|
@@ -247553,7 +248106,7 @@ var Node$13 = class Node$14 {
|
|
|
247553
248106
|
if (runToken === "totalPageCount")
|
|
247554
248107
|
return context.totalPages ? String(context.totalPages) : run2.text ?? "";
|
|
247555
248108
|
return run2.text ?? "";
|
|
247556
|
-
},
|
|
248109
|
+
}, createDomPainter = (options) => {
|
|
247557
248110
|
if ((options.blocks ?? []).length !== (options.measures ?? []).length)
|
|
247558
248111
|
throw new Error("DomPainter requires the same number of blocks and measures");
|
|
247559
248112
|
const painter = new DomPainter({
|
|
@@ -247597,6 +248150,9 @@ var Node$13 = class Node$14 {
|
|
|
247597
248150
|
setVirtualizationPins(pageIndices) {
|
|
247598
248151
|
painter.setVirtualizationPins(pageIndices);
|
|
247599
248152
|
},
|
|
248153
|
+
getMountedPageIndices() {
|
|
248154
|
+
return painter.getMountedPageIndices();
|
|
248155
|
+
},
|
|
247600
248156
|
onScroll() {
|
|
247601
248157
|
painter.onScroll();
|
|
247602
248158
|
},
|
|
@@ -247607,46 +248163,184 @@ var Node$13 = class Node$14 {
|
|
|
247607
248163
|
painter.setScrollContainer(el);
|
|
247608
248164
|
}
|
|
247609
248165
|
};
|
|
248166
|
+
}, PresentationPaintIndex = class {
|
|
248167
|
+
#snapshot = null;
|
|
248168
|
+
#annotationsByPmStart = /* @__PURE__ */ new Map;
|
|
248169
|
+
#annotationsByType = /* @__PURE__ */ new Map;
|
|
248170
|
+
#structuredContentBlocksById = /* @__PURE__ */ new Map;
|
|
248171
|
+
#structuredContentInlinesById = /* @__PURE__ */ new Map;
|
|
248172
|
+
#inlineImagesByPmStart = /* @__PURE__ */ new Map;
|
|
248173
|
+
#imageFragmentsByPmStart = /* @__PURE__ */ new Map;
|
|
248174
|
+
reset() {
|
|
248175
|
+
this.#snapshot = null;
|
|
248176
|
+
this.#annotationsByPmStart.clear();
|
|
248177
|
+
this.#annotationsByType.clear();
|
|
248178
|
+
this.#structuredContentBlocksById.clear();
|
|
248179
|
+
this.#structuredContentInlinesById.clear();
|
|
248180
|
+
this.#inlineImagesByPmStart.clear();
|
|
248181
|
+
this.#imageFragmentsByPmStart.clear();
|
|
248182
|
+
}
|
|
248183
|
+
update(snapshot2) {
|
|
248184
|
+
this.reset();
|
|
248185
|
+
this.#snapshot = snapshot2;
|
|
248186
|
+
if (!snapshot2?.entities)
|
|
248187
|
+
return;
|
|
248188
|
+
for (const annotation of snapshot2.entities.annotations) {
|
|
248189
|
+
if (!isMountedElement(annotation.element))
|
|
248190
|
+
continue;
|
|
248191
|
+
if (annotation.pmStart != null)
|
|
248192
|
+
this.#annotationsByPmStart.set(annotation.pmStart, annotation);
|
|
248193
|
+
if (annotation.type)
|
|
248194
|
+
appendToArrayMap(this.#annotationsByType, annotation.type, annotation);
|
|
248195
|
+
}
|
|
248196
|
+
for (const block of snapshot2.entities.structuredContentBlocks) {
|
|
248197
|
+
if (!isMountedElement(block.element))
|
|
248198
|
+
continue;
|
|
248199
|
+
appendToArrayMap(this.#structuredContentBlocksById, block.sdtId, block);
|
|
248200
|
+
}
|
|
248201
|
+
for (const inline of snapshot2.entities.structuredContentInlines) {
|
|
248202
|
+
if (!isMountedElement(inline.element))
|
|
248203
|
+
continue;
|
|
248204
|
+
appendToArrayMap(this.#structuredContentInlinesById, inline.sdtId, inline);
|
|
248205
|
+
}
|
|
248206
|
+
for (const image2 of snapshot2.entities.images) {
|
|
248207
|
+
if (!isMountedElement(image2.element) || image2.pmStart == null)
|
|
248208
|
+
continue;
|
|
248209
|
+
if (image2.kind === "inline") {
|
|
248210
|
+
if (shouldReplaceInlineImageEntity(this.#inlineImagesByPmStart.get(image2.pmStart), image2))
|
|
248211
|
+
this.#inlineImagesByPmStart.set(image2.pmStart, image2);
|
|
248212
|
+
continue;
|
|
248213
|
+
}
|
|
248214
|
+
this.#imageFragmentsByPmStart.set(image2.pmStart, image2);
|
|
248215
|
+
}
|
|
248216
|
+
}
|
|
248217
|
+
get snapshot() {
|
|
248218
|
+
return this.#snapshot;
|
|
248219
|
+
}
|
|
248220
|
+
getAnnotationElementByPmStart(pmStart) {
|
|
248221
|
+
return this.#annotationsByPmStart.get(pmStart)?.element ?? null;
|
|
248222
|
+
}
|
|
248223
|
+
getAnnotationEntitiesByType(type) {
|
|
248224
|
+
return [...this.#annotationsByType.get(type) ?? []];
|
|
248225
|
+
}
|
|
248226
|
+
getStructuredContentBlockElementsById(id2) {
|
|
248227
|
+
return (this.#structuredContentBlocksById.get(id2) ?? []).map((entity) => entity.element);
|
|
248228
|
+
}
|
|
248229
|
+
getStructuredContentInlineElementsById(id2) {
|
|
248230
|
+
return (this.#structuredContentInlinesById.get(id2) ?? []).map((entity) => entity.element);
|
|
248231
|
+
}
|
|
248232
|
+
getInlineImageElementByPmStart(pmStart) {
|
|
248233
|
+
return this.#inlineImagesByPmStart.get(pmStart)?.element ?? null;
|
|
248234
|
+
}
|
|
248235
|
+
getImageFragmentElementByPmStart(pmStart) {
|
|
248236
|
+
return this.#imageFragmentsByPmStart.get(pmStart)?.element ?? null;
|
|
248237
|
+
}
|
|
247610
248238
|
}, PresentationPainterAdapter = class {
|
|
247611
248239
|
#painter = null;
|
|
247612
248240
|
#lastPaintSnapshot = null;
|
|
248241
|
+
#paintIndex = new PresentationPaintIndex;
|
|
248242
|
+
#headerProvider;
|
|
248243
|
+
#footerProvider;
|
|
248244
|
+
#zoom = 1;
|
|
248245
|
+
#scrollContainer = null;
|
|
248246
|
+
#virtualizationPins = [];
|
|
247613
248247
|
get hasPainter() {
|
|
247614
248248
|
return this.#painter !== null;
|
|
247615
248249
|
}
|
|
247616
248250
|
ensurePainter(options) {
|
|
247617
|
-
if (!this.#painter)
|
|
248251
|
+
if (!this.#painter) {
|
|
247618
248252
|
this.#painter = createDomPainter({
|
|
247619
248253
|
...options,
|
|
247620
248254
|
onPaintSnapshot: (snapshot2) => {
|
|
247621
248255
|
this.#lastPaintSnapshot = snapshot2;
|
|
248256
|
+
this.#paintIndex.update(snapshot2);
|
|
247622
248257
|
}
|
|
247623
248258
|
});
|
|
248259
|
+
this.#applyPainterSurfaceState();
|
|
248260
|
+
}
|
|
247624
248261
|
}
|
|
247625
248262
|
reset() {
|
|
247626
248263
|
this.#painter = null;
|
|
247627
248264
|
this.#lastPaintSnapshot = null;
|
|
248265
|
+
this.#paintIndex.reset();
|
|
247628
248266
|
}
|
|
247629
248267
|
paint(input2, mount, mapping) {
|
|
247630
248268
|
this.#painter?.paint(input2, mount, mapping);
|
|
247631
248269
|
}
|
|
247632
248270
|
setProviders(header, footer) {
|
|
247633
|
-
this.#
|
|
248271
|
+
if (this.#headerProvider === header && this.#footerProvider === footer)
|
|
248272
|
+
return;
|
|
248273
|
+
this.#headerProvider = header;
|
|
248274
|
+
this.#footerProvider = footer;
|
|
248275
|
+
this.#applyProviders();
|
|
247634
248276
|
}
|
|
247635
248277
|
setZoom(zoom) {
|
|
247636
|
-
this.#
|
|
248278
|
+
if (this.#zoom === zoom)
|
|
248279
|
+
return;
|
|
248280
|
+
this.#zoom = zoom;
|
|
248281
|
+
this.#applyZoom();
|
|
247637
248282
|
}
|
|
247638
248283
|
setScrollContainer(el) {
|
|
247639
|
-
this.#
|
|
248284
|
+
if (this.#scrollContainer === el)
|
|
248285
|
+
return;
|
|
248286
|
+
this.#scrollContainer = el;
|
|
248287
|
+
this.#applyScrollContainer();
|
|
247640
248288
|
}
|
|
247641
248289
|
onScroll() {
|
|
247642
248290
|
this.#painter?.onScroll();
|
|
247643
248291
|
}
|
|
247644
248292
|
setVirtualizationPins(pageIndices) {
|
|
247645
|
-
|
|
248293
|
+
const normalizedPins = normalizePinnedPageIndices(pageIndices);
|
|
248294
|
+
if (areNumberListsEqual(this.#virtualizationPins, normalizedPins))
|
|
248295
|
+
return;
|
|
248296
|
+
this.#virtualizationPins = normalizedPins;
|
|
248297
|
+
this.#applyVirtualizationPins();
|
|
247646
248298
|
}
|
|
247647
248299
|
getPaintSnapshot() {
|
|
247648
248300
|
return this.#lastPaintSnapshot;
|
|
247649
248301
|
}
|
|
248302
|
+
getMountedPageIndices() {
|
|
248303
|
+
const mountedPageIndices = this.#painter?.getMountedPageIndices();
|
|
248304
|
+
if (mountedPageIndices)
|
|
248305
|
+
return [...mountedPageIndices];
|
|
248306
|
+
return this.#lastPaintSnapshot?.pages.map((page) => page.index) ?? [];
|
|
248307
|
+
}
|
|
248308
|
+
getAnnotationElementByPmStart(pmStart) {
|
|
248309
|
+
return this.#paintIndex.getAnnotationElementByPmStart(pmStart);
|
|
248310
|
+
}
|
|
248311
|
+
getAnnotationEntitiesByType(type) {
|
|
248312
|
+
return this.#paintIndex.getAnnotationEntitiesByType(type);
|
|
248313
|
+
}
|
|
248314
|
+
getStructuredContentBlockElementsById(id2) {
|
|
248315
|
+
return this.#paintIndex.getStructuredContentBlockElementsById(id2);
|
|
248316
|
+
}
|
|
248317
|
+
getStructuredContentInlineElementsById(id2) {
|
|
248318
|
+
return this.#paintIndex.getStructuredContentInlineElementsById(id2);
|
|
248319
|
+
}
|
|
248320
|
+
getInlineImageElementByPmStart(pmStart) {
|
|
248321
|
+
return this.#paintIndex.getInlineImageElementByPmStart(pmStart);
|
|
248322
|
+
}
|
|
248323
|
+
getImageFragmentElementByPmStart(pmStart) {
|
|
248324
|
+
return this.#paintIndex.getImageFragmentElementByPmStart(pmStart);
|
|
248325
|
+
}
|
|
248326
|
+
#applyPainterSurfaceState() {
|
|
248327
|
+
this.#applyProviders();
|
|
248328
|
+
this.#applyZoom();
|
|
248329
|
+
this.#applyScrollContainer();
|
|
248330
|
+
this.#applyVirtualizationPins();
|
|
248331
|
+
}
|
|
248332
|
+
#applyProviders() {
|
|
248333
|
+
this.#painter?.setProviders(this.#headerProvider, this.#footerProvider);
|
|
248334
|
+
}
|
|
248335
|
+
#applyZoom() {
|
|
248336
|
+
this.#painter?.setZoom(this.#zoom);
|
|
248337
|
+
}
|
|
248338
|
+
#applyScrollContainer() {
|
|
248339
|
+
this.#painter?.setScrollContainer(this.#scrollContainer);
|
|
248340
|
+
}
|
|
248341
|
+
#applyVirtualizationPins() {
|
|
248342
|
+
this.#painter?.setVirtualizationPins(this.#virtualizationPins);
|
|
248343
|
+
}
|
|
247650
248344
|
}, SINGLE_COLUMN_DEFAULT, isTextRun$5 = (run2) => {
|
|
247651
248345
|
const runWithKind = run2;
|
|
247652
248346
|
return !runWithKind.kind || runWithKind.kind === "text";
|
|
@@ -253465,8 +254159,8 @@ var Node$13 = class Node$14 {
|
|
|
253465
254159
|
this.#handleLinkClick(event, linkEl);
|
|
253466
254160
|
return;
|
|
253467
254161
|
}
|
|
253468
|
-
const annotationEl = target?.closest?.(
|
|
253469
|
-
const isDraggableAnnotation = target?.closest?.(
|
|
254162
|
+
const annotationEl = target?.closest?.(buildAnnotationSelector());
|
|
254163
|
+
const isDraggableAnnotation = target?.closest?.(DRAGGABLE_SELECTOR) != null;
|
|
253470
254164
|
this.#suppressFocusInFromDraggable = isDraggableAnnotation;
|
|
253471
254165
|
if (annotationEl) {
|
|
253472
254166
|
this.#handleAnnotationClick(event, annotationEl);
|
|
@@ -253735,7 +254429,7 @@ var Node$13 = class Node$14 {
|
|
|
253735
254429
|
if (event.button !== 0)
|
|
253736
254430
|
return;
|
|
253737
254431
|
const target = event.target;
|
|
253738
|
-
const annotationEl = target?.closest?.(
|
|
254432
|
+
const annotationEl = target?.closest?.(buildAnnotationSelector());
|
|
253739
254433
|
if (annotationEl) {
|
|
253740
254434
|
event.preventDefault();
|
|
253741
254435
|
event.stopPropagation();
|
|
@@ -254039,7 +254733,7 @@ var Node$13 = class Node$14 {
|
|
|
254039
254733
|
try {
|
|
254040
254734
|
const tr = editor.state.tr.setSelection(NodeSelection.create(doc$12, clampedImgPos));
|
|
254041
254735
|
editor.view?.dispatch(tr);
|
|
254042
|
-
const targetElement = this.#
|
|
254736
|
+
const targetElement = this.#callbacks.resolveInlineImageElementByPmStart?.(imgPmStart) ?? null;
|
|
254043
254737
|
const elementForHighlight = wrapper ?? targetElement ?? targetImg;
|
|
254044
254738
|
this.#callbacks.emit?.("imageSelected", {
|
|
254045
254739
|
element: elementForHighlight,
|
|
@@ -254066,7 +254760,7 @@ var Node$13 = class Node$14 {
|
|
|
254066
254760
|
if (this.#lastSelectedImageBlockId && this.#lastSelectedImageBlockId !== fragmentHit.fragment.blockId)
|
|
254067
254761
|
this.#callbacks.emit?.("imageDeselected", { blockId: this.#lastSelectedImageBlockId });
|
|
254068
254762
|
if (fragmentHit.fragment.kind === "image") {
|
|
254069
|
-
const targetElement = this.#
|
|
254763
|
+
const targetElement = fragmentHit.fragment.pmStart != null ? this.#callbacks.resolveImageFragmentElementByPmStart?.(fragmentHit.fragment.pmStart) ?? null : null;
|
|
254070
254764
|
if (targetElement) {
|
|
254071
254765
|
this.#callbacks.emit?.("imageSelected", {
|
|
254072
254766
|
element: targetElement,
|
|
@@ -254722,7 +255416,7 @@ var Node$13 = class Node$14 {
|
|
|
254722
255416
|
}
|
|
254723
255417
|
#handleDragStart(event) {
|
|
254724
255418
|
const target = event.target;
|
|
254725
|
-
if (!target?.dataset?.
|
|
255419
|
+
if (!target?.dataset?.[DATASET_KEYS.DRAGGABLE] || target.dataset[DATASET_KEYS.DRAGGABLE] !== "true")
|
|
254726
255420
|
return;
|
|
254727
255421
|
const data = extractFieldAnnotationData(target);
|
|
254728
255422
|
if (event.dataTransfer) {
|
|
@@ -256668,14 +257362,55 @@ var Node$13 = class Node$14 {
|
|
|
256668
257362
|
this.#hoverRegion = null;
|
|
256669
257363
|
this.#overlayManager = null;
|
|
256670
257364
|
}
|
|
256671
|
-
}, DEFAULT_SEMANTIC_FOOTNOTE_HEADING_STYLE,
|
|
257365
|
+
}, DEFAULT_SEMANTIC_FOOTNOTE_HEADING_STYLE, NATIVE_SELECTION_STYLES = `
|
|
257366
|
+
/* Hide native browser selection on layout engine content.
|
|
257367
|
+
* We render our own selection overlay via PresentationEditor's #localSelectionLayer
|
|
257368
|
+
* for precise control over selection geometry across pages and zoom levels. */
|
|
257369
|
+
.superdoc-layout *::selection {
|
|
257370
|
+
background: transparent;
|
|
257371
|
+
}
|
|
257372
|
+
|
|
257373
|
+
.superdoc-layout *::-moz-selection {
|
|
257374
|
+
background: transparent;
|
|
257375
|
+
}
|
|
257376
|
+
`, nativeSelectionStylesInjected = false, FIELD_ANNOTATION_INTERACTION_STYLES = `
|
|
257377
|
+
/* Editing affordance: allow text selection on draggable annotations */
|
|
257378
|
+
.superdoc-layout .annotation[data-draggable="true"] {
|
|
257379
|
+
user-select: text;
|
|
257380
|
+
}
|
|
257381
|
+
|
|
257382
|
+
/* Editing affordance: hover feedback */
|
|
257383
|
+
.superdoc-layout .annotation[data-draggable="true"]:hover {
|
|
257384
|
+
opacity: 0.9;
|
|
257385
|
+
}
|
|
257386
|
+
|
|
257387
|
+
/* Editing affordance: active/grab cursor */
|
|
257388
|
+
.superdoc-layout .annotation[data-draggable="true"]:active {
|
|
257389
|
+
cursor: grabbing;
|
|
257390
|
+
}
|
|
257391
|
+
|
|
257392
|
+
/* Editing affordance: drag over indicator for drop targets */
|
|
257393
|
+
.superdoc-layout.drag-over {
|
|
257394
|
+
outline: 2px dashed #b015b3;
|
|
257395
|
+
outline-offset: -2px;
|
|
257396
|
+
}
|
|
257397
|
+
|
|
257398
|
+
/* Editing affordance: drop zone indicator */
|
|
257399
|
+
.superdoc-layout .superdoc-drop-indicator {
|
|
257400
|
+
position: absolute;
|
|
257401
|
+
width: 2px;
|
|
257402
|
+
background-color: #b015b3;
|
|
257403
|
+
pointer-events: none;
|
|
257404
|
+
z-index: 1000;
|
|
257405
|
+
}
|
|
257406
|
+
`, fieldAnnotationInteractionStylesInjected = false, DOCUMENT_RELS_PART_ID = "word/_rels/document.xml.rels", DEFAULT_PAGE_SIZE, DEFAULT_MARGINS, DEFAULT_PAGE_GAP = 24, DEFAULT_HORIZONTAL_PAGE_GAP = 20, layoutDebugEnabled, perfLog = (...args$1) => {
|
|
256672
257407
|
if (!layoutDebugEnabled)
|
|
256673
257408
|
return;
|
|
256674
257409
|
console.log(...args$1);
|
|
256675
257410
|
}, 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;
|
|
256676
|
-
var
|
|
257411
|
+
var init_src_sJ2EXqLW_es = __esm(() => {
|
|
256677
257412
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
256678
|
-
|
|
257413
|
+
init_SuperConverter_DerEPM5g_es();
|
|
256679
257414
|
init_jszip_ChlR43oI_es();
|
|
256680
257415
|
init_uuid_qzgm05fK_es();
|
|
256681
257416
|
init_constants_CIF8yzNk_es();
|
|
@@ -274765,17 +275500,44 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
274765
275500
|
BLOCK_SDT: "superdoc-structured-content-block",
|
|
274766
275501
|
TABLE_FRAGMENT: "superdoc-table-fragment",
|
|
274767
275502
|
DOCUMENT_SECTION: "superdoc-document-section",
|
|
274768
|
-
|
|
275503
|
+
SDT_GROUP_HOVER: "sdt-group-hover",
|
|
274769
275504
|
IMAGE_FRAGMENT: "superdoc-image-fragment",
|
|
274770
275505
|
INLINE_IMAGE: "superdoc-inline-image",
|
|
274771
|
-
INLINE_IMAGE_CLIP_WRAPPER: "superdoc-inline-image-clip-wrapper"
|
|
275506
|
+
INLINE_IMAGE_CLIP_WRAPPER: "superdoc-inline-image-clip-wrapper",
|
|
275507
|
+
ANNOTATION: "annotation",
|
|
275508
|
+
ANNOTATION_CONTENT: "annotation-content",
|
|
275509
|
+
ANNOTATION_CARET_ANCHOR: "annotation-caret-anchor"
|
|
274772
275510
|
};
|
|
274773
275511
|
DATA_ATTRS = {
|
|
274774
275512
|
PM_START: "data-pm-start",
|
|
274775
275513
|
PM_END: "data-pm-end",
|
|
274776
275514
|
LAYOUT_EPOCH: "data-layout-epoch",
|
|
274777
|
-
TABLE_BOUNDARIES: "data-table-boundaries"
|
|
274778
|
-
|
|
275515
|
+
TABLE_BOUNDARIES: "data-table-boundaries",
|
|
275516
|
+
SDT_ID: "data-sdt-id",
|
|
275517
|
+
SDT_TYPE: "data-sdt-type",
|
|
275518
|
+
FIELD_ID: "data-field-id",
|
|
275519
|
+
FIELD_TYPE: "data-field-type",
|
|
275520
|
+
DRAGGABLE: "data-draggable",
|
|
275521
|
+
DISPLAY_LABEL: "data-display-label",
|
|
275522
|
+
VARIANT: "data-variant",
|
|
275523
|
+
TYPE: "data-type"
|
|
275524
|
+
};
|
|
275525
|
+
DATASET_KEYS = {
|
|
275526
|
+
PM_START: "pmStart",
|
|
275527
|
+
PM_END: "pmEnd",
|
|
275528
|
+
LAYOUT_EPOCH: "layoutEpoch",
|
|
275529
|
+
TABLE_BOUNDARIES: "tableBoundaries",
|
|
275530
|
+
SDT_ID: "sdtId",
|
|
275531
|
+
SDT_TYPE: "sdtType",
|
|
275532
|
+
FIELD_ID: "fieldId",
|
|
275533
|
+
FIELD_TYPE: "fieldType",
|
|
275534
|
+
DRAGGABLE: "draggable",
|
|
275535
|
+
DISPLAY_LABEL: "displayLabel",
|
|
275536
|
+
VARIANT: "variant",
|
|
275537
|
+
TYPE: "type"
|
|
275538
|
+
};
|
|
275539
|
+
`${DOM_CLASS_NAMES.BLOCK_SDT}${DATA_ATTRS.SDT_ID}`;
|
|
275540
|
+
DRAGGABLE_SELECTOR = `[${DATA_ATTRS.DRAGGABLE}="true"]`;
|
|
274779
275541
|
VerticalNavigationPluginKey = new PluginKey("verticalNavigation");
|
|
274780
275542
|
VerticalNavigation = Extension.create({
|
|
274781
275543
|
name: "verticalNavigation",
|
|
@@ -282130,6 +282892,18 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282130
282892
|
"search",
|
|
282131
282893
|
"yjs-cursor"
|
|
282132
282894
|
];
|
|
282895
|
+
DISPLAY_LABEL_SOURCE = {
|
|
282896
|
+
CANONICAL: "canonical",
|
|
282897
|
+
DERIVED: "derived"
|
|
282898
|
+
};
|
|
282899
|
+
PROOFING_CSS = {
|
|
282900
|
+
SPELLING: "sd-proofing-spelling",
|
|
282901
|
+
GRAMMAR: "sd-proofing-grammar",
|
|
282902
|
+
STYLE: "sd-proofing-style",
|
|
282903
|
+
DATA_ATTR: "data-sd-proofing",
|
|
282904
|
+
SPLIT_ATTR: "data-sd-proofing-split"
|
|
282905
|
+
};
|
|
282906
|
+
splitOriginMap = /* @__PURE__ */ new WeakMap;
|
|
282133
282907
|
NON_TEXT_INLINE_NODES = new Set([
|
|
282134
282908
|
"fieldAnnotation",
|
|
282135
282909
|
"image",
|
|
@@ -282346,8 +283120,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282346
283120
|
"wave",
|
|
282347
283121
|
"doubleWave"
|
|
282348
283122
|
]);
|
|
282349
|
-
SDT_BLOCK_SELECTOR = `.${DOM_CLASS_NAMES.BLOCK_SDT}[data-sdt-id]`;
|
|
282350
|
-
HOVER_CLASS = DOM_CLASS_NAMES.SDT_HOVER;
|
|
282351
283123
|
OPERATOR_CHARS = new Set([
|
|
282352
283124
|
"+",
|
|
282353
283125
|
"-",
|
|
@@ -282543,10 +283315,10 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282543
283315
|
this.zoomFactor = 1;
|
|
282544
283316
|
this.scrollContainer = null;
|
|
282545
283317
|
this.scrollContainerMountOffset = null;
|
|
282546
|
-
this.sdtHover = new SdtGroupedHover;
|
|
282547
283318
|
this.paintSnapshotBuilder = null;
|
|
282548
283319
|
this.lastPaintSnapshot = null;
|
|
282549
283320
|
this.onPaintSnapshotCallback = null;
|
|
283321
|
+
this.mountedPageIndices = [];
|
|
282550
283322
|
this.resolvedLayout = null;
|
|
282551
283323
|
this.options = options;
|
|
282552
283324
|
this.layoutMode = options.layoutMode ?? "vertical";
|
|
@@ -282609,6 +283381,15 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282609
283381
|
getPaintSnapshot() {
|
|
282610
283382
|
return this.lastPaintSnapshot;
|
|
282611
283383
|
}
|
|
283384
|
+
getMountedPageIndices() {
|
|
283385
|
+
return [...this.mountedPageIndices];
|
|
283386
|
+
}
|
|
283387
|
+
createAllPageIndices(pageCount) {
|
|
283388
|
+
return Array.from({ length: pageCount }, (_$1, pageIndex) => pageIndex);
|
|
283389
|
+
}
|
|
283390
|
+
setMountedPageIndices(pageIndices) {
|
|
283391
|
+
this.mountedPageIndices = [...pageIndices];
|
|
283392
|
+
}
|
|
282612
283393
|
emitPaintSnapshot(snapshot2) {
|
|
282613
283394
|
this.lastPaintSnapshot = snapshot2;
|
|
282614
283395
|
this.onPaintSnapshotCallback?.(snapshot2);
|
|
@@ -282627,7 +283408,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282627
283408
|
}))
|
|
282628
283409
|
};
|
|
282629
283410
|
}
|
|
282630
|
-
finalizePaintSnapshotFromBuilder() {
|
|
283411
|
+
finalizePaintSnapshotFromBuilder(rootEl) {
|
|
282631
283412
|
const builder = this.paintSnapshotBuilder;
|
|
282632
283413
|
if (!builder) {
|
|
282633
283414
|
this.lastPaintSnapshot = null;
|
|
@@ -282645,7 +283426,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282645
283426
|
lineCount: builder.lineCount,
|
|
282646
283427
|
markerCount: builder.markerCount,
|
|
282647
283428
|
tabCount: builder.tabCount,
|
|
282648
|
-
pages
|
|
283429
|
+
pages,
|
|
283430
|
+
entities: rootEl ? collectPaintSnapshotEntitiesFromDomRoot(rootEl) : createEmptyPaintSnapshotEntities()
|
|
282649
283431
|
});
|
|
282650
283432
|
this.paintSnapshotBuilder = null;
|
|
282651
283433
|
}
|
|
@@ -282724,7 +283506,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282724
283506
|
lineCount,
|
|
282725
283507
|
markerCount,
|
|
282726
283508
|
tabCount,
|
|
282727
|
-
pages
|
|
283509
|
+
pages,
|
|
283510
|
+
entities: collectPaintSnapshotEntitiesFromDomRoot(rootEl)
|
|
282728
283511
|
};
|
|
282729
283512
|
}
|
|
282730
283513
|
normalizeOptionalBlockMeasurePair(label, blocks2, measures) {
|
|
@@ -282784,7 +283567,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282784
283567
|
ensureFieldAnnotationStyles(doc$12);
|
|
282785
283568
|
ensureSdtContainerStyles(doc$12);
|
|
282786
283569
|
ensureImageSelectionStyles(doc$12);
|
|
282787
|
-
ensureNativeSelectionStyles(doc$12);
|
|
282788
283570
|
if (!this.isSemanticFlow && this.options.ruler?.enabled)
|
|
282789
283571
|
ensureRulerStyles(doc$12);
|
|
282790
283572
|
mount.classList.add(CLASS_NAMES$1.container);
|
|
@@ -282803,6 +283585,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282803
283585
|
this.fullRender(layout);
|
|
282804
283586
|
else
|
|
282805
283587
|
this.patchLayout(layout);
|
|
283588
|
+
this.setMountedPageIndices(this.createAllPageIndices(layout.pages.length));
|
|
282806
283589
|
this.currentLayout = layout;
|
|
282807
283590
|
this.changedBlocks.clear();
|
|
282808
283591
|
this.currentMapping = null;
|
|
@@ -282814,7 +283597,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282814
283597
|
applyStyles(mount, containerStylesHorizontal);
|
|
282815
283598
|
mount.style.gap = `${this.pageGap}px`;
|
|
282816
283599
|
this.renderHorizontal(layout, mount);
|
|
282817
|
-
this.finalizePaintSnapshotFromBuilder();
|
|
283600
|
+
this.finalizePaintSnapshotFromBuilder(mount);
|
|
283601
|
+
this.setMountedPageIndices(this.createAllPageIndices(layout.pages.length));
|
|
282818
283602
|
this.currentLayout = layout;
|
|
282819
283603
|
this.pageStates = [];
|
|
282820
283604
|
this.changedBlocks.clear();
|
|
@@ -282824,7 +283608,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282824
283608
|
if (mode === "book") {
|
|
282825
283609
|
applyStyles(mount, containerStyles);
|
|
282826
283610
|
this.renderBookMode(layout, mount);
|
|
282827
|
-
this.finalizePaintSnapshotFromBuilder();
|
|
283611
|
+
this.finalizePaintSnapshotFromBuilder(mount);
|
|
283612
|
+
this.setMountedPageIndices(this.createAllPageIndices(layout.pages.length));
|
|
282828
283613
|
this.currentLayout = layout;
|
|
282829
283614
|
this.pageStates = [];
|
|
282830
283615
|
this.changedBlocks.clear();
|
|
@@ -282847,12 +283632,13 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282847
283632
|
this.patchLayout(layout);
|
|
282848
283633
|
useDomSnapshotFallback = true;
|
|
282849
283634
|
}
|
|
283635
|
+
this.setMountedPageIndices(this.createAllPageIndices(layout.pages.length));
|
|
282850
283636
|
}
|
|
282851
283637
|
if (useDomSnapshotFallback) {
|
|
282852
283638
|
this.emitPaintSnapshot(this.collectPaintSnapshotFromDomRoot(mount));
|
|
282853
283639
|
this.paintSnapshotBuilder = null;
|
|
282854
283640
|
} else
|
|
282855
|
-
this.finalizePaintSnapshotFromBuilder();
|
|
283641
|
+
this.finalizePaintSnapshotFromBuilder(mount);
|
|
282856
283642
|
this.currentLayout = layout;
|
|
282857
283643
|
this.changedBlocks.clear();
|
|
282858
283644
|
this.currentMapping = null;
|
|
@@ -282920,7 +283706,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282920
283706
|
};
|
|
282921
283707
|
win.addEventListener("resize", this.onResizeHandler);
|
|
282922
283708
|
}
|
|
282923
|
-
this.sdtHover.bind(mount);
|
|
282924
283709
|
}
|
|
282925
283710
|
computeVirtualMetrics() {
|
|
282926
283711
|
if (!this.currentLayout)
|
|
@@ -282971,6 +283756,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
282971
283756
|
const N = layout.pages.length;
|
|
282972
283757
|
if (N === 0) {
|
|
282973
283758
|
this.mount.innerHTML = "";
|
|
283759
|
+
this.setMountedPageIndices([]);
|
|
282974
283760
|
this.processedLayoutVersion = this.layoutVersion;
|
|
282975
283761
|
return;
|
|
282976
283762
|
}
|
|
@@ -283028,6 +283814,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
283028
283814
|
this.virtualMountedKey = mountedKey;
|
|
283029
283815
|
this.virtualStart = start$1;
|
|
283030
283816
|
this.virtualEnd = end$1;
|
|
283817
|
+
this.setMountedPageIndices(mounted);
|
|
283031
283818
|
this.updateSpacersForMountedPages(mounted);
|
|
283032
283819
|
this.clearGapSpacers();
|
|
283033
283820
|
this.sdtLabelsRendered.clear();
|
|
@@ -283081,7 +283868,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
283081
283868
|
}
|
|
283082
283869
|
this.changedBlocks.clear();
|
|
283083
283870
|
this.processedLayoutVersion = this.layoutVersion;
|
|
283084
|
-
this.sdtHover.reapply();
|
|
283085
283871
|
}
|
|
283086
283872
|
updateSpacers(start$1, end$1) {
|
|
283087
283873
|
if (!this.topSpacerEl || !this.bottomSpacerEl)
|
|
@@ -283403,11 +284189,11 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
283403
284189
|
this.onWindowScrollHandler = null;
|
|
283404
284190
|
this.onResizeHandler = null;
|
|
283405
284191
|
this.scrollContainerMountOffset = null;
|
|
283406
|
-
this.sdtHover.destroy();
|
|
283407
284192
|
this.layoutVersion = 0;
|
|
283408
284193
|
this.processedLayoutVersion = -1;
|
|
283409
284194
|
this.paintSnapshotBuilder = null;
|
|
283410
284195
|
this.lastPaintSnapshot = null;
|
|
284196
|
+
this.mountedPageIndices = [];
|
|
283411
284197
|
}
|
|
283412
284198
|
fullRender(layout) {
|
|
283413
284199
|
if (!this.mount || !this.doc)
|
|
@@ -285195,7 +285981,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
285195
285981
|
const defaultBorderColor = "#b015b3";
|
|
285196
285982
|
const defaultFieldColor = "#980043";
|
|
285197
285983
|
const annotation = this.doc.createElement("span");
|
|
285198
|
-
annotation.classList.add(
|
|
285984
|
+
annotation.classList.add(DOM_CLASS_NAMES.ANNOTATION);
|
|
285199
285985
|
annotation.setAttribute("aria-label", "Field annotation");
|
|
285200
285986
|
if (run2.highlighted !== false) {
|
|
285201
285987
|
const borderColor = run2.borderColor || defaultBorderColor;
|
|
@@ -285241,7 +286027,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
285241
286027
|
annotation.style.textDecoration = "underline";
|
|
285242
286028
|
annotation.style.zIndex = "1";
|
|
285243
286029
|
const content3 = this.doc.createElement("span");
|
|
285244
|
-
content3.classList.add(
|
|
286030
|
+
content3.classList.add(DOM_CLASS_NAMES.ANNOTATION_CONTENT);
|
|
285245
286031
|
content3.style.pointerEvents = "none";
|
|
285246
286032
|
content3.setAttribute("contenteditable", "false");
|
|
285247
286033
|
switch (run2.variant) {
|
|
@@ -285315,48 +286101,20 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
285315
286101
|
}
|
|
285316
286102
|
annotation.appendChild(content3);
|
|
285317
286103
|
annotation.dataset.type = run2.variant;
|
|
286104
|
+
annotation.dataset.displayLabel = run2.displayLabel;
|
|
285318
286105
|
if (run2.fieldId)
|
|
285319
286106
|
annotation.dataset.fieldId = run2.fieldId;
|
|
285320
286107
|
if (run2.fieldType)
|
|
285321
286108
|
annotation.dataset.fieldType = run2.fieldType;
|
|
285322
|
-
annotation.draggable = true;
|
|
285323
|
-
annotation.dataset.draggable = "true";
|
|
285324
|
-
if (run2.displayLabel)
|
|
285325
|
-
annotation.dataset.displayLabel = run2.displayLabel;
|
|
285326
|
-
if (run2.variant)
|
|
285327
|
-
annotation.dataset.variant = run2.variant;
|
|
285328
286109
|
assertPmPositions(run2, "field annotation run");
|
|
285329
286110
|
if (run2.pmStart != null)
|
|
285330
286111
|
annotation.dataset.pmStart = String(run2.pmStart);
|
|
285331
286112
|
if (run2.pmEnd != null)
|
|
285332
286113
|
annotation.dataset.pmEnd = String(run2.pmEnd);
|
|
285333
286114
|
annotation.dataset.layoutEpoch = String(this.layoutEpoch);
|
|
285334
|
-
this.appendAnnotationCaretAnchor(annotation, run2);
|
|
285335
286115
|
this.applySdtDataset(annotation, run2.sdt);
|
|
285336
286116
|
return annotation;
|
|
285337
286117
|
}
|
|
285338
|
-
appendAnnotationCaretAnchor(annotation, run2) {
|
|
285339
|
-
if (!this.doc || run2.pmEnd == null)
|
|
285340
|
-
return;
|
|
285341
|
-
const caretAnchor = this.doc.createElement("span");
|
|
285342
|
-
caretAnchor.dataset.pmStart = String(run2.pmEnd);
|
|
285343
|
-
caretAnchor.dataset.pmEnd = String(run2.pmEnd);
|
|
285344
|
-
caretAnchor.dataset.layoutEpoch = String(this.layoutEpoch);
|
|
285345
|
-
caretAnchor.classList.add("annotation-caret-anchor");
|
|
285346
|
-
caretAnchor.style.position = "absolute";
|
|
285347
|
-
caretAnchor.style.left = "100%";
|
|
285348
|
-
caretAnchor.style.top = "0";
|
|
285349
|
-
caretAnchor.style.width = "0";
|
|
285350
|
-
caretAnchor.style.height = "1em";
|
|
285351
|
-
caretAnchor.style.overflow = "hidden";
|
|
285352
|
-
caretAnchor.style.pointerEvents = "none";
|
|
285353
|
-
caretAnchor.style.userSelect = "none";
|
|
285354
|
-
caretAnchor.style.opacity = "0";
|
|
285355
|
-
caretAnchor.textContent = "";
|
|
285356
|
-
if (!annotation.style.position)
|
|
285357
|
-
annotation.style.position = "relative";
|
|
285358
|
-
annotation.appendChild(caretAnchor);
|
|
285359
|
-
}
|
|
285360
286118
|
renderLine(block, line, context, availableWidthOverride, lineIndex, skipJustify, resolvedListTextStartPx, indentOffsetOverride) {
|
|
285361
286119
|
if (!this.doc)
|
|
285362
286120
|
throw new Error("DomPainter: document is not available");
|
|
@@ -286111,14 +286869,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
286111
286869
|
"path(",
|
|
286112
286870
|
"rect("
|
|
286113
286871
|
];
|
|
286114
|
-
PROOFING_CSS = {
|
|
286115
|
-
SPELLING: "sd-proofing-spelling",
|
|
286116
|
-
GRAMMAR: "sd-proofing-grammar",
|
|
286117
|
-
STYLE: "sd-proofing-style",
|
|
286118
|
-
DATA_ATTR: "data-sd-proofing",
|
|
286119
|
-
SPLIT_ATTR: "data-sd-proofing-split"
|
|
286120
|
-
};
|
|
286121
|
-
splitOriginMap = /* @__PURE__ */ new WeakMap;
|
|
286122
286872
|
SINGLE_COLUMN_DEFAULT = {
|
|
286123
286873
|
count: 1,
|
|
286124
286874
|
gap: 0
|
|
@@ -287256,8 +288006,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
287256
288006
|
#htmlAnnotationMeasureAttempts = 0;
|
|
287257
288007
|
#domPositionIndex = new DomPositionIndex;
|
|
287258
288008
|
#domIndexObserverManager = null;
|
|
287259
|
-
#
|
|
287260
|
-
#commentHighlightDecorator = new CommentHighlightDecorator;
|
|
288009
|
+
#postPaintPipeline = new PresentationPostPaintPipeline;
|
|
287261
288010
|
#proofingManager = null;
|
|
287262
288011
|
#decorationSyncRafHandle = null;
|
|
287263
288012
|
#rafHandle = null;
|
|
@@ -287348,15 +288097,16 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
287348
288097
|
this.#painterHost.className = "presentation-editor__pages";
|
|
287349
288098
|
this.#painterHost.style.transformOrigin = "top left";
|
|
287350
288099
|
this.#viewportHost.appendChild(this.#painterHost);
|
|
287351
|
-
this.#
|
|
288100
|
+
this.#postPaintPipeline.setContainer(this.#painterHost);
|
|
288101
|
+
ensureEditorNativeSelectionStyles(doc$12);
|
|
288102
|
+
ensureEditorFieldAnnotationInteractionStyles(doc$12);
|
|
287352
288103
|
this.#painterHost.addEventListener("mouseover", this.#handleStructuredContentBlockMouseEnter);
|
|
287353
288104
|
this.#painterHost.addEventListener("mouseout", this.#handleStructuredContentBlockMouseLeave);
|
|
287354
288105
|
this.#domIndexObserverManager = new DomPositionIndexObserverManager({
|
|
287355
288106
|
windowRoot: this.#visibleHost?.ownerDocument?.defaultView ?? window,
|
|
287356
288107
|
getPainterHost: () => this.#painterHost,
|
|
287357
288108
|
onRebuild: () => {
|
|
287358
|
-
this.#
|
|
287359
|
-
this.#syncInlineStyleLayers();
|
|
288109
|
+
this.#refreshEditorDomAugmentations();
|
|
287360
288110
|
this.#selectionSync.requestRender({ immediate: true });
|
|
287361
288111
|
}
|
|
287362
288112
|
});
|
|
@@ -288624,8 +289374,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
288624
289374
|
(this.#visibleHost?.ownerDocument?.defaultView ?? window).cancelAnimationFrame(this.#decorationSyncRafHandle);
|
|
288625
289375
|
this.#decorationSyncRafHandle = null;
|
|
288626
289376
|
}, "Decoration sync RAF");
|
|
288627
|
-
this.#
|
|
288628
|
-
this.#commentHighlightDecorator.destroy();
|
|
289377
|
+
this.#postPaintPipeline.destroy();
|
|
288629
289378
|
this.#proofingManager?.dispose();
|
|
288630
289379
|
this.#proofingManager = null;
|
|
288631
289380
|
if (this.#cursorUpdateTimer !== null) {
|
|
@@ -288744,18 +289493,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
288744
289493
|
mgr.setDocumentId(this.#options.documentId ?? null);
|
|
288745
289494
|
mgr.onResultsChanged = () => this.#applyProofingPass();
|
|
288746
289495
|
mgr.setVisibilitySource({ getVisiblePageIndices: () => {
|
|
288747
|
-
|
|
288748
|
-
|
|
288749
|
-
const pageEls = this.#painterHost.querySelectorAll("[data-page-index]");
|
|
288750
|
-
if (pageEls.length === 0)
|
|
288751
|
-
return null;
|
|
288752
|
-
const indices = [];
|
|
288753
|
-
for (let i4 = 0;i4 < pageEls.length; i4++) {
|
|
288754
|
-
const idx = parseInt(pageEls[i4].getAttribute("data-page-index"), 10);
|
|
288755
|
-
if (!isNaN(idx))
|
|
288756
|
-
indices.push(idx);
|
|
288757
|
-
}
|
|
288758
|
-
return indices.length > 0 ? indices : null;
|
|
289496
|
+
const mountedPageIndices = this.#painterAdapter.getMountedPageIndices();
|
|
289497
|
+
return mountedPageIndices.length > 0 ? mountedPageIndices : null;
|
|
288759
289498
|
} });
|
|
288760
289499
|
mgr.setPageResolver(this.#buildPageResolver());
|
|
288761
289500
|
const editorDom = this.#editor?.view?.dom;
|
|
@@ -288764,25 +289503,21 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
288764
289503
|
editorDom.addEventListener("compositionend", () => mgr.setComposing(false));
|
|
288765
289504
|
}
|
|
288766
289505
|
}
|
|
288767
|
-
#
|
|
288768
|
-
if (!this.#
|
|
288769
|
-
return;
|
|
288770
|
-
if (!this.#proofingManager?.isEnabled) {
|
|
288771
|
-
if (clearProofingDecorations(this.#painterHost))
|
|
288772
|
-
this.#rebuildDomPositionIndex();
|
|
288773
|
-
return;
|
|
288774
|
-
}
|
|
289506
|
+
#buildProofingAnnotations() {
|
|
289507
|
+
if (!this.#proofingManager?.isEnabled)
|
|
289508
|
+
return null;
|
|
288775
289509
|
const editorState = this.#editor?.state;
|
|
288776
289510
|
let activeWordRange = null;
|
|
288777
289511
|
if (editorState?.selection.empty)
|
|
288778
289512
|
activeWordRange = computeWordSelectionRangeAt(editorState, editorState.selection.head);
|
|
288779
|
-
|
|
289513
|
+
return this.#proofingManager.getPaintSlices(activeWordRange).map((s2) => ({
|
|
288780
289514
|
pmFrom: s2.pmFrom,
|
|
288781
289515
|
pmTo: s2.pmTo,
|
|
288782
289516
|
kind: s2.kind
|
|
288783
289517
|
}));
|
|
288784
|
-
|
|
288785
|
-
|
|
289518
|
+
}
|
|
289519
|
+
#applyProofingPass() {
|
|
289520
|
+
this.#postPaintPipeline.applyProofingAnnotations(this.#buildProofingAnnotations(), () => this.#rebuildDomPositionIndex());
|
|
288786
289521
|
}
|
|
288787
289522
|
#notifyProofingOfDocChange(transaction) {
|
|
288788
289523
|
if (!this.#proofingManager?.isEnabled)
|
|
@@ -288804,18 +289539,26 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
288804
289539
|
this.#proofingManager.onDocumentChanged(doc$12, changedRanges, transaction.mapping);
|
|
288805
289540
|
}
|
|
288806
289541
|
#syncCommentHighlights() {
|
|
288807
|
-
this.#
|
|
289542
|
+
this.#postPaintPipeline.applyCommentHighlights();
|
|
288808
289543
|
}
|
|
288809
289544
|
#syncInlineStyleLayers() {
|
|
288810
|
-
this.#
|
|
288811
|
-
|
|
289545
|
+
const state = this.#editor?.view?.state;
|
|
289546
|
+
if (!state) {
|
|
289547
|
+
this.#syncCommentHighlights();
|
|
289548
|
+
return;
|
|
289549
|
+
}
|
|
289550
|
+
try {
|
|
289551
|
+
this.#postPaintPipeline.syncInlineStyleLayers(state, this.#domPositionIndex);
|
|
289552
|
+
} catch (error3) {
|
|
289553
|
+
console.warn("[PresentationEditor] Inline style layer sync failed:", error3);
|
|
289554
|
+
}
|
|
288812
289555
|
}
|
|
288813
289556
|
#syncDecorations() {
|
|
288814
289557
|
const state = this.#editor?.view?.state;
|
|
288815
289558
|
if (!state)
|
|
288816
289559
|
return;
|
|
288817
289560
|
try {
|
|
288818
|
-
this.#
|
|
289561
|
+
this.#postPaintPipeline.syncDecorations(state, this.#domPositionIndex);
|
|
288819
289562
|
} catch (error3) {
|
|
288820
289563
|
console.warn("[PresentationEditor] Decoration sync failed:", error3);
|
|
288821
289564
|
}
|
|
@@ -288824,7 +289567,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
288824
289567
|
if (this.#renderScheduled || this.#isRerendering)
|
|
288825
289568
|
return;
|
|
288826
289569
|
const state = this.#editor?.view?.state;
|
|
288827
|
-
if (!state || !this.#
|
|
289570
|
+
if (!state || !this.#postPaintPipeline.hasDecorationChanges(state))
|
|
288828
289571
|
return;
|
|
288829
289572
|
if (this.#decorationSyncRafHandle != null)
|
|
288830
289573
|
return;
|
|
@@ -288872,12 +289615,12 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
288872
289615
|
};
|
|
288873
289616
|
const handleTransaction = (event) => {
|
|
288874
289617
|
const tr = event?.transaction;
|
|
288875
|
-
this.#
|
|
289618
|
+
this.#postPaintPipeline.recordDecorationTransaction(tr);
|
|
288876
289619
|
const state = this.#editor?.view?.state;
|
|
288877
|
-
const decorationChanged = state && this.#
|
|
289620
|
+
const decorationChanged = state && this.#postPaintPipeline.hasDecorationChanges(state);
|
|
288878
289621
|
if (decorationChanged) {
|
|
288879
289622
|
const restoreEmpty = tr ? tr.docChanged === true : false;
|
|
288880
|
-
this.#
|
|
289623
|
+
this.#postPaintPipeline.syncDecorations(state, this.#domPositionIndex, { restoreEmptyDecorations: restoreEmpty });
|
|
288881
289624
|
} else
|
|
288882
289625
|
this.#scheduleDecorationSync();
|
|
288883
289626
|
if (decorationChanged) {
|
|
@@ -288965,7 +289708,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
288965
289708
|
const handleCommentsUpdate = (payload) => {
|
|
288966
289709
|
if ("activeCommentId" in payload) {
|
|
288967
289710
|
const activeId = payload.activeCommentId ?? null;
|
|
288968
|
-
if (this.#
|
|
289711
|
+
if (this.#postPaintPipeline.setActiveComment(activeId))
|
|
288969
289712
|
this.#syncInlineStyleLayers();
|
|
288970
289713
|
}
|
|
288971
289714
|
};
|
|
@@ -289056,6 +289799,8 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289056
289799
|
clearHoverRegion: () => this.#clearHoverRegion(),
|
|
289057
289800
|
renderHoverRegion: (region) => this.#renderHoverRegion(region),
|
|
289058
289801
|
focusEditorAfterImageSelection: () => this.#focusEditorAfterImageSelection(),
|
|
289802
|
+
resolveInlineImageElementByPmStart: (pmStart) => this.#painterAdapter.getInlineImageElementByPmStart(pmStart),
|
|
289803
|
+
resolveImageFragmentElementByPmStart: (pmStart) => this.#painterAdapter.getImageFragmentElementByPmStart(pmStart),
|
|
289059
289804
|
resolveFieldAnnotationSelectionFromElement: (el) => this.#resolveFieldAnnotationSelectionFromElement(el),
|
|
289060
289805
|
computePendingMarginClick: (pointerId, x, y$1) => this.#computePendingMarginClick(pointerId, x, y$1),
|
|
289061
289806
|
selectWordAt: (pos) => this.#selectWordAt(pos),
|
|
@@ -289483,7 +290228,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289483
290228
|
return;
|
|
289484
290229
|
}
|
|
289485
290230
|
const state = this.#editor?.view?.state;
|
|
289486
|
-
const decorationRanges = state ? this.#
|
|
290231
|
+
const decorationRanges = state ? this.#postPaintPipeline.collectDecorationRanges(state) : [];
|
|
289487
290232
|
if (decorationRanges.length > 0)
|
|
289488
290233
|
blocks2 = splitRunsAtDecorationBoundaries(blocks2, decorationRanges.map((r$1) => ({
|
|
289489
290234
|
from: r$1.from,
|
|
@@ -289639,9 +290384,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289639
290384
|
this.#painterAdapter.paint(paintInput, this.#painterHost, mapping ?? undefined);
|
|
289640
290385
|
perfLog(`[Perf] painter.paint: ${(perfNow() - painterPaintStart).toFixed(2)}ms`);
|
|
289641
290386
|
const painterPostStart = perfNow();
|
|
289642
|
-
this.#
|
|
289643
|
-
this.#syncInlineStyleLayers();
|
|
289644
|
-
this.#applyProofingPass();
|
|
290387
|
+
this.#refreshEditorDomAugmentations();
|
|
289645
290388
|
this.#domIndexObserverManager?.resume();
|
|
289646
290389
|
perfLog(`[Perf] painter.postPaint: ${(perfNow() - painterPostStart).toFixed(2)}ms`);
|
|
289647
290390
|
this.#layoutEpoch = layoutEpoch;
|
|
@@ -289734,19 +290477,16 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289734
290477
|
}
|
|
289735
290478
|
#updateHtmlAnnotationMeasurements(layoutEpoch) {
|
|
289736
290479
|
const nextHeights = new Map(this.#htmlAnnotationHeights);
|
|
289737
|
-
const annotations = this.#painterHost.querySelectorAll('.annotation[data-type="html"]');
|
|
289738
290480
|
const threshold = 1;
|
|
289739
290481
|
let changed = false;
|
|
289740
|
-
|
|
289741
|
-
const element3 = annotation;
|
|
289742
|
-
|
|
289743
|
-
const pmEnd = element3.dataset.pmEnd;
|
|
289744
|
-
if (!pmStart || !pmEnd)
|
|
290482
|
+
this.#painterAdapter.getAnnotationEntitiesByType("html").forEach((annotation) => {
|
|
290483
|
+
const element3 = annotation.element;
|
|
290484
|
+
if (annotation.pmStart == null || annotation.pmEnd == null)
|
|
289745
290485
|
return;
|
|
289746
290486
|
const height = element3.offsetHeight;
|
|
289747
290487
|
if (height <= 0)
|
|
289748
290488
|
return;
|
|
289749
|
-
const key$1 = `${pmStart}-${pmEnd}`;
|
|
290489
|
+
const key$1 = `${annotation.pmStart}-${annotation.pmEnd}`;
|
|
289750
290490
|
const prev = nextHeights.get(key$1);
|
|
289751
290491
|
if (prev != null && Math.abs(prev - height) <= threshold)
|
|
289752
290492
|
return;
|
|
@@ -289799,8 +290539,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289799
290539
|
const pmStart = selection.from;
|
|
289800
290540
|
if (this.#lastSelectedFieldAnnotation?.pmStart === pmStart && this.#lastSelectedFieldAnnotation.element)
|
|
289801
290541
|
return;
|
|
289802
|
-
const
|
|
289803
|
-
const element3 = this.#painterHost.querySelector(selector);
|
|
290542
|
+
const element3 = this.#painterAdapter.getAnnotationElementByPmStart(pmStart);
|
|
289804
290543
|
if (!element3) {
|
|
289805
290544
|
this.#clearSelectedFieldAnnotationClass();
|
|
289806
290545
|
return;
|
|
@@ -289863,12 +290602,10 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289863
290602
|
const rawId = node3.attrs?.id;
|
|
289864
290603
|
id2 = rawId != null ? String(rawId) : null;
|
|
289865
290604
|
let elements = [];
|
|
289866
|
-
if (id2)
|
|
289867
|
-
|
|
289868
|
-
elements = Array.from(this.#painterHost.querySelectorAll(`.superdoc-structured-content-block[data-sdt-id="${escapedId}"]`));
|
|
289869
|
-
}
|
|
290605
|
+
if (id2)
|
|
290606
|
+
elements = this.#painterAdapter.getStructuredContentBlockElementsById(id2);
|
|
289870
290607
|
if (elements.length === 0) {
|
|
289871
|
-
const container = this.getElementAtPos(selection.from, { fallbackToCoords: true })?.closest?.(
|
|
290608
|
+
const container = this.getElementAtPos(selection.from, { fallbackToCoords: true })?.closest?.(`.${DOM_CLASS_NAMES.BLOCK_SDT}`);
|
|
289872
290609
|
if (container)
|
|
289873
290610
|
elements = [container];
|
|
289874
290611
|
}
|
|
@@ -289879,7 +290616,7 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289879
290616
|
this.#setSelectedStructuredContentBlockClass(elements, id2);
|
|
289880
290617
|
}
|
|
289881
290618
|
#handleStructuredContentBlockMouseEnter = (event) => {
|
|
289882
|
-
const block = event.target.closest(
|
|
290619
|
+
const block = event.target.closest(`.${DOM_CLASS_NAMES.BLOCK_SDT}`);
|
|
289883
290620
|
if (!block || !(block instanceof HTMLElement))
|
|
289884
290621
|
return;
|
|
289885
290622
|
if (block.classList.contains("ProseMirror-selectednode"))
|
|
@@ -289890,19 +290627,22 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289890
290627
|
this.#setHoveredStructuredContentBlockClass(rawId);
|
|
289891
290628
|
};
|
|
289892
290629
|
#handleStructuredContentBlockMouseLeave = (event) => {
|
|
289893
|
-
const block = event.target.closest(
|
|
290630
|
+
const block = event.target.closest(`.${DOM_CLASS_NAMES.BLOCK_SDT}`);
|
|
289894
290631
|
if (!block)
|
|
289895
290632
|
return;
|
|
289896
290633
|
const relatedTarget = event.relatedTarget;
|
|
289897
|
-
if (relatedTarget && block.dataset.sdtId
|
|
289898
|
-
|
|
290634
|
+
if (relatedTarget && block.dataset.sdtId) {
|
|
290635
|
+
const escapedCheckId = typeof CSS !== "undefined" && CSS.escape ? CSS.escape(block.dataset.sdtId) : block.dataset.sdtId.replace(/"/g, "\\\"");
|
|
290636
|
+
if (relatedTarget.closest(buildSdtBlockSelector(escapedCheckId)))
|
|
290637
|
+
return;
|
|
290638
|
+
}
|
|
289899
290639
|
this.#clearHoveredStructuredContentBlockClass();
|
|
289900
290640
|
};
|
|
289901
290641
|
#clearHoveredStructuredContentBlockClass() {
|
|
289902
290642
|
if (!this.#lastHoveredStructuredContentBlock)
|
|
289903
290643
|
return;
|
|
289904
290644
|
this.#lastHoveredStructuredContentBlock.elements.forEach((element3) => {
|
|
289905
|
-
element3.classList.remove(
|
|
290645
|
+
element3.classList.remove(DOM_CLASS_NAMES.SDT_GROUP_HOVER);
|
|
289906
290646
|
});
|
|
289907
290647
|
this.#lastHoveredStructuredContentBlock = null;
|
|
289908
290648
|
}
|
|
@@ -289912,19 +290652,48 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289912
290652
|
this.#clearHoveredStructuredContentBlockClass();
|
|
289913
290653
|
if (!this.#painterHost)
|
|
289914
290654
|
return;
|
|
289915
|
-
const
|
|
289916
|
-
const elements = Array.from(this.#painterHost.querySelectorAll(`.superdoc-structured-content-block[data-sdt-id="${escapedId}"]`));
|
|
290655
|
+
const elements = this.#painterAdapter.getStructuredContentBlockElementsById(id2);
|
|
289917
290656
|
if (elements.length === 0)
|
|
289918
290657
|
return;
|
|
289919
290658
|
elements.forEach((element3) => {
|
|
289920
290659
|
if (!element3.classList.contains("ProseMirror-selectednode"))
|
|
289921
|
-
element3.classList.add(
|
|
290660
|
+
element3.classList.add(DOM_CLASS_NAMES.SDT_GROUP_HOVER);
|
|
289922
290661
|
});
|
|
289923
290662
|
this.#lastHoveredStructuredContentBlock = {
|
|
289924
290663
|
id: id2,
|
|
289925
290664
|
elements
|
|
289926
290665
|
};
|
|
289927
290666
|
}
|
|
290667
|
+
#reapplySdtGroupHover() {
|
|
290668
|
+
if (!this.#lastHoveredStructuredContentBlock || !this.#painterHost)
|
|
290669
|
+
return;
|
|
290670
|
+
const { id: id2 } = this.#lastHoveredStructuredContentBlock;
|
|
290671
|
+
if (!id2)
|
|
290672
|
+
return;
|
|
290673
|
+
const elements = this.#painterAdapter.getStructuredContentBlockElementsById(id2);
|
|
290674
|
+
if (elements.length === 0) {
|
|
290675
|
+
this.#lastHoveredStructuredContentBlock = null;
|
|
290676
|
+
return;
|
|
290677
|
+
}
|
|
290678
|
+
elements.forEach((element3) => {
|
|
290679
|
+
if (!element3.classList.contains("ProseMirror-selectednode"))
|
|
290680
|
+
element3.classList.add(DOM_CLASS_NAMES.SDT_GROUP_HOVER);
|
|
290681
|
+
});
|
|
290682
|
+
this.#lastHoveredStructuredContentBlock = {
|
|
290683
|
+
id: id2,
|
|
290684
|
+
elements
|
|
290685
|
+
};
|
|
290686
|
+
}
|
|
290687
|
+
#refreshEditorDomAugmentations() {
|
|
290688
|
+
this.#postPaintPipeline.refreshAfterPaint({
|
|
290689
|
+
layoutEpoch: this.#layoutEpoch,
|
|
290690
|
+
editorState: this.#editor?.view?.state,
|
|
290691
|
+
domPositionIndex: this.#domPositionIndex,
|
|
290692
|
+
proofingAnnotations: this.#buildProofingAnnotations(),
|
|
290693
|
+
rebuildDomPositionIndex: () => this.#rebuildDomPositionIndex(),
|
|
290694
|
+
reapplyStructuredContentHover: () => this.#reapplySdtGroupHover()
|
|
290695
|
+
});
|
|
290696
|
+
}
|
|
289928
290697
|
#clearSelectedStructuredContentInlineClass() {
|
|
289929
290698
|
if (!this.#lastSelectedStructuredContentInline)
|
|
289930
290699
|
return;
|
|
@@ -289988,12 +290757,10 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
289988
290757
|
const rawId = node3.attrs?.id;
|
|
289989
290758
|
id2 = rawId != null ? String(rawId) : null;
|
|
289990
290759
|
let elements = [];
|
|
289991
|
-
if (id2)
|
|
289992
|
-
|
|
289993
|
-
elements = Array.from(this.#painterHost.querySelectorAll(`.superdoc-structured-content-inline[data-sdt-id="${escapedId}"]`));
|
|
289994
|
-
}
|
|
290760
|
+
if (id2)
|
|
290761
|
+
elements = this.#painterAdapter.getStructuredContentInlineElementsById(id2);
|
|
289995
290762
|
if (elements.length === 0) {
|
|
289996
|
-
const container = this.getElementAtPos(pos, { fallbackToCoords: true })?.closest?.(
|
|
290763
|
+
const container = this.getElementAtPos(pos, { fallbackToCoords: true })?.closest?.(`.${DOM_CLASS_NAMES.INLINE_SDT_WRAPPER}`);
|
|
289997
290764
|
if (container)
|
|
289998
290765
|
elements = [container];
|
|
289999
290766
|
}
|
|
@@ -291206,8 +291973,8 @@ var init_zipper_YmNpPIyc_es = __esm(() => {
|
|
|
291206
291973
|
|
|
291207
291974
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
291208
291975
|
var init_super_editor_es = __esm(() => {
|
|
291209
|
-
|
|
291210
|
-
|
|
291976
|
+
init_src_sJ2EXqLW_es();
|
|
291977
|
+
init_SuperConverter_DerEPM5g_es();
|
|
291211
291978
|
init_jszip_ChlR43oI_es();
|
|
291212
291979
|
init_xml_js_40FWvL78_es();
|
|
291213
291980
|
init_constants_CIF8yzNk_es();
|
|
@@ -342604,16 +343371,17 @@ var init_operation_params = __esm(() => {
|
|
|
342604
343371
|
}
|
|
342605
343372
|
],
|
|
342606
343373
|
"doc.insert": [
|
|
342607
|
-
...
|
|
343374
|
+
...TEXT_TARGET_FLAT_PARAMS_AGENT_HIDDEN,
|
|
342608
343375
|
{
|
|
342609
343376
|
name: "offset",
|
|
342610
343377
|
kind: "flag",
|
|
342611
343378
|
type: "number",
|
|
342612
|
-
description: "Character offset for insertion (alias for --start/--end with same value)."
|
|
343379
|
+
description: "Character offset for insertion (alias for --start/--end with same value).",
|
|
343380
|
+
agentVisible: false
|
|
342613
343381
|
}
|
|
342614
343382
|
],
|
|
342615
|
-
"doc.replace": [...
|
|
342616
|
-
"doc.delete": [...
|
|
343383
|
+
"doc.replace": [...TEXT_TARGET_FLAT_PARAMS_AGENT_HIDDEN],
|
|
343384
|
+
"doc.delete": [...TEXT_TARGET_FLAT_PARAMS_AGENT_HIDDEN],
|
|
342617
343385
|
"doc.styles.apply": [
|
|
342618
343386
|
{
|
|
342619
343387
|
name: "target",
|