@a3s-lab/office 0.28.0 → 0.29.0

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.
Files changed (41) hide show
  1. package/README.md +27 -1
  2. package/dist/0~1403.js +1 -1
  3. package/dist/0~4980.js +1 -1
  4. package/dist/0~5093.js +64 -5
  5. package/dist/0~7043.js +241 -241
  6. package/dist/0~7048.js +1 -1
  7. package/dist/0~7614.js +1 -1
  8. package/dist/0~document-editor.js +433 -10
  9. package/dist/0~presentation-editor.js +1 -1
  10. package/dist/0~spreadsheet-editor.js +1 -2
  11. package/dist/0~work-docx-export.js +141 -3
  12. package/dist/0~work-docx-import.js +5 -3
  13. package/dist/0~work-office-diagnostics.js +46 -3
  14. package/dist/0~work-pptx-export.js +1 -1
  15. package/dist/0~work-pptx-import.js +1 -1
  16. package/dist/0~work-presentation-charts.js +1 -1
  17. package/dist/1544.js +1 -1
  18. package/dist/4104.js +2 -2
  19. package/dist/4121.js +1510 -0
  20. package/dist/6282.js +59 -684
  21. package/dist/8715.js +1 -1
  22. package/dist/core.js +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/internal/features/work/editors/document-command-catalog.d.ts +9 -0
  25. package/dist/internal/features/work/editors/document-font-dialog-model.d.ts +5 -2
  26. package/dist/internal/features/work/editors/document-font-dialog-run-border-model.d.ts +24 -0
  27. package/dist/internal/features/work/editors/document-font-dialog-run-border-section.d.ts +10 -0
  28. package/dist/internal/features/work/work-document-character-formatting.d.ts +4 -0
  29. package/dist/internal/features/work/work-document-format-changes.d.ts +1 -0
  30. package/dist/internal/features/work/work-document-run-border.d.ts +11 -0
  31. package/dist/internal/features/work/work-document-word-line-metrics.d.ts +1 -0
  32. package/dist/internal/features/work/work-docx-run-border-diagnostics.d.ts +3 -0
  33. package/dist/internal/features/work/work-docx-run-border-export.d.ts +17 -0
  34. package/dist/internal/features/work/work-docx-run-border.d.ts +20 -0
  35. package/dist/internal/features/work/work-docx-run-formatting-import.d.ts +2 -0
  36. package/dist/office-kernel.wasm +0 -0
  37. package/dist/styles.css +31 -0
  38. package/docs/latest/en/browser-editor-architecture.md +22 -0
  39. package/package.json +4 -1
  40. package/dist/5184.js +0 -662
  41. package/dist/9424.js +0 -16
package/dist/6282.js CHANGED
@@ -9,7 +9,6 @@ import extension_text_align from "@tiptap/extension-text-align";
9
9
  import font_size from "@tiptap/extension-text-style/font-size";
10
10
  import starter_kit from "@tiptap/starter-kit";
11
11
  import { DOMParser as model_DOMParser, Fragment, Slice } from "@tiptap/pm/model";
12
- import jszip from "jszip";
13
12
  import { closeHistory, isHistoryTransaction } from "@tiptap/pm/history";
14
13
  import extension_underline from "@tiptap/extension-underline";
15
14
  import extension_strike from "@tiptap/extension-strike";
@@ -22,8 +21,7 @@ import { CellSelection, TableMap, isInTable, selectedRect } from "@tiptap/pm/tab
22
21
  import font_family from "@tiptap/extension-text-style/font-family";
23
22
  import { TextStyle } from "@tiptap/extension-text-style";
24
23
  import extension_highlight from "@tiptap/extension-highlight";
25
- import { createOfficeId as createWorkId, parseXml, xmlNamespacePrefix } from "./5184.js";
26
- import { normalizeCssColor } from "./9424.js";
24
+ import { documentRunBorderDomAttributes, normalizeDocumentRunBorder, parseDocumentRunBorder, normalizeDocumentParagraphBorder, serializeDocumentParagraphBorders, parseDocxThemeReference, serializeDocumentRunBorder, normalizeCssColor, DOCUMENT_PARAGRAPH_BORDERS_ATTRIBUTE, serializeDocxThemeReference, parseDocumentParagraphBordersElement, parseDocumentParagraphBorders, documentBorderPresentation, DOCUMENT_RUN_BORDER_ATTRIBUTE, parseDocumentRunBorderElement, documentRunBorderIsVisible, documentParagraphBordersDomAttributes, createOfficeId as createWorkId } from "./4121.js";
27
25
  import { workOfficeCollaborationJsonEqual, canonicalWorkOfficeCollaborationJson, isWorkOfficeCollaborationRecord, cloneWorkOfficeCollaborationJson } from "./4650.js";
28
26
  import { assertWorkOfficeCollaborationEditable, markWorkOfficeCollaborationInitialized, assertWorkOfficeCollaborationOrigin, initializeWorkOfficeCollaborationMetadata, assertWorkOfficeCollaborationWritable, OfficeCollaborationError as WorkOfficeCollaborationError, readOfficeCollaborationMetadata as readWorkOfficeCollaborationMetadata, registerWorkOfficeCollaborationInitializer } from "./9787.js";
29
27
  import * as __rspack_external_yjs from "yjs";
@@ -2210,681 +2208,6 @@ function work_document_notes_positiveInteger(value, fallback) {
2210
2208
  const number = Number(value);
2211
2209
  return Number.isSafeInteger(number) && number > 0 ? number : fallback;
2212
2210
  }
2213
- const WORD_NAMESPACE = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';
2214
- class DocxThemePatchCollector {
2215
- patches = [];
2216
- nextMarker = 1;
2217
- usedColors;
2218
- constructor(sourceHtml){
2219
- this.usedColors = sourceColors(sourceHtml);
2220
- }
2221
- marker(kind, reference, currentColor) {
2222
- if (!reference || normalizeColor(currentColor) !== reference.resolved) return null;
2223
- let marker = '';
2224
- do {
2225
- marker = (0xf00000 + this.nextMarker).toString(16).padStart(6, '0').toUpperCase();
2226
- this.nextMarker += 1;
2227
- }while (this.usedColors.has(marker))
2228
- this.usedColors.add(marker);
2229
- this.patches.push({
2230
- kind,
2231
- marker,
2232
- reference
2233
- });
2234
- return marker;
2235
- }
2236
- }
2237
- function serializeDocxThemeReference(reference) {
2238
- return reference ? JSON.stringify(reference) : void 0;
2239
- }
2240
- function parseDocxThemeReference(value) {
2241
- if (!value) return null;
2242
- try {
2243
- const parsed = JSON.parse(value);
2244
- const theme = 'string' == typeof parsed.theme ? parsed.theme.trim() : '';
2245
- const resolved = normalizeColor('string' == typeof parsed.resolved ? parsed.resolved : null);
2246
- const tint = byteHex(parsed.tint);
2247
- const shade = byteHex(parsed.shade);
2248
- if (!theme || !resolved) return null;
2249
- return {
2250
- theme,
2251
- resolved,
2252
- ...tint ? {
2253
- tint
2254
- } : {},
2255
- ...shade ? {
2256
- shade
2257
- } : {}
2258
- };
2259
- } catch {
2260
- return null;
2261
- }
2262
- }
2263
- async function patchDocxThemeReferences(buffer, patches) {
2264
- if (!patches.length) return buffer;
2265
- const archive = await jszip.loadAsync(buffer);
2266
- const byMarker = new Map(patches.map((patch)=>[
2267
- patch.marker,
2268
- patch
2269
- ]));
2270
- const entries = Object.values(archive.files).filter((entry)=>!entry.dir && /^word\/(?:document|header\d+|footer\d+|footnotes|endnotes|comments)\.xml$/.test(entry.name));
2271
- for (const entry of entries){
2272
- const document1 = parseXml(await entry.async('text'), entry.name);
2273
- let changed = false;
2274
- for (const element of Array.from(document1.getElementsByTagName('*')))for (const target of themePatchTargets(element.localName)){
2275
- const marker = wordAttribute(element, target.directAttribute)?.toUpperCase();
2276
- const patch = marker ? byMarker.get(marker) : void 0;
2277
- if (patch && patch.kind === target.kind) {
2278
- setWordAttribute(document1, element, target.directAttribute, patch.reference.resolved.slice(1).toUpperCase());
2279
- setWordAttribute(document1, element, target.themeAttribute, patch.reference.theme);
2280
- setOptionalWordAttribute(document1, element, target.tintAttribute, patch.reference.tint);
2281
- setOptionalWordAttribute(document1, element, target.shadeAttribute, patch.reference.shade);
2282
- changed = true;
2283
- }
2284
- }
2285
- if (changed) archive.file(entry.name, new XMLSerializer().serializeToString(document1));
2286
- }
2287
- return archive.generateAsync({
2288
- type: 'arraybuffer'
2289
- });
2290
- }
2291
- function themePatchTargets(localName) {
2292
- if ('color' === localName) return [
2293
- {
2294
- kind: 'color',
2295
- directAttribute: 'val',
2296
- themeAttribute: 'themeColor',
2297
- tintAttribute: 'themeTint',
2298
- shadeAttribute: 'themeShade'
2299
- }
2300
- ];
2301
- if ('u' === localName) return [
2302
- {
2303
- kind: 'underline',
2304
- directAttribute: 'color',
2305
- themeAttribute: 'themeColor',
2306
- tintAttribute: 'themeTint',
2307
- shadeAttribute: 'themeShade'
2308
- }
2309
- ];
2310
- if ('shd' === localName) return [
2311
- {
2312
- kind: 'fill',
2313
- directAttribute: 'fill',
2314
- themeAttribute: 'themeFill',
2315
- tintAttribute: 'themeFillTint',
2316
- shadeAttribute: 'themeFillShade'
2317
- },
2318
- {
2319
- kind: 'shadingColor',
2320
- directAttribute: 'color',
2321
- themeAttribute: 'themeColor',
2322
- tintAttribute: 'themeTint',
2323
- shadeAttribute: 'themeShade'
2324
- }
2325
- ];
2326
- return [
2327
- 'top',
2328
- 'right',
2329
- 'bottom',
2330
- 'left',
2331
- 'start',
2332
- 'end'
2333
- ].includes(localName) ? [
2334
- {
2335
- kind: 'border',
2336
- directAttribute: 'color',
2337
- themeAttribute: 'themeColor',
2338
- tintAttribute: 'themeTint',
2339
- shadeAttribute: 'themeShade'
2340
- }
2341
- ] : [];
2342
- }
2343
- function normalizeColor(value) {
2344
- const normalized = value?.trim().toLowerCase();
2345
- if (!normalized || !/^#[0-9a-f]{6}$/.test(normalized)) return null;
2346
- return normalized;
2347
- }
2348
- function sourceColors(source) {
2349
- const colors = new Set();
2350
- for (const match of source.matchAll(/#([0-9a-f]{6})\b/gi))if (match[1]) colors.add(match[1].toUpperCase());
2351
- for (const match of source.matchAll(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/gi)){
2352
- const channels = match.slice(1, 4).map(Number);
2353
- if (!channels.some((channel)=>channel < 0 || channel > 255)) colors.add(channels.map((channel)=>channel.toString(16).padStart(2, '0')).join('').toUpperCase());
2354
- }
2355
- return colors;
2356
- }
2357
- function byteHex(value) {
2358
- if ('string' != typeof value) return;
2359
- const normalized = value.trim().toUpperCase();
2360
- return /^[0-9A-F]{2}$/.test(normalized) ? normalized : void 0;
2361
- }
2362
- function wordAttribute(element, name) {
2363
- return element.getAttributeNS(WORD_NAMESPACE, name) ?? element.getAttribute(`w:${name}`);
2364
- }
2365
- function setWordAttribute(document1, element, name, value) {
2366
- const prefix = xmlNamespacePrefix(document1.documentElement, WORD_NAMESPACE) ?? 'w';
2367
- element.setAttributeNS(WORD_NAMESPACE, `${prefix}:${name}`, value);
2368
- }
2369
- function setOptionalWordAttribute(document1, element, name, value) {
2370
- if (value) setWordAttribute(document1, element, name, value);
2371
- else element.removeAttributeNS(WORD_NAMESPACE, name);
2372
- }
2373
- const DOCUMENT_PARAGRAPH_BORDERS_ATTRIBUTE = 'data-office-paragraph-borders';
2374
- const DOCUMENT_PARAGRAPH_BORDER_EDGES = [
2375
- 'top',
2376
- 'left',
2377
- 'bottom',
2378
- 'right',
2379
- 'between',
2380
- 'bar'
2381
- ];
2382
- const DOCUMENT_PARAGRAPH_BORDER_STYLES = [
2383
- 'nil',
2384
- 'none',
2385
- 'single',
2386
- 'thick',
2387
- 'double',
2388
- 'dotted',
2389
- 'dashed',
2390
- 'dotDash',
2391
- 'dotDotDash',
2392
- 'triple',
2393
- 'thinThickSmallGap',
2394
- 'thickThinSmallGap',
2395
- 'thinThickThinSmallGap',
2396
- 'thinThickMediumGap',
2397
- 'thickThinMediumGap',
2398
- 'thinThickThinMediumGap',
2399
- 'thinThickLargeGap',
2400
- 'thickThinLargeGap',
2401
- 'thinThickThinLargeGap',
2402
- 'wave',
2403
- 'doubleWave',
2404
- 'dashSmallGap',
2405
- 'dashDotStroked',
2406
- 'threeDEmboss',
2407
- 'threeDEngrave',
2408
- 'outset',
2409
- 'inset',
2410
- 'apples',
2411
- 'archedScallops',
2412
- 'babyPacifier',
2413
- 'babyRattle',
2414
- 'balloons3Colors',
2415
- 'balloonsHotAir',
2416
- 'basicBlackDashes',
2417
- 'basicBlackDots',
2418
- 'basicBlackSquares',
2419
- 'basicThinLines',
2420
- 'basicWhiteDashes',
2421
- 'basicWhiteDots',
2422
- 'basicWhiteSquares',
2423
- 'basicWideInline',
2424
- 'basicWideMidline',
2425
- 'basicWideOutline',
2426
- 'bats',
2427
- 'birds',
2428
- 'birdsFlight',
2429
- 'cabins',
2430
- 'cakeSlice',
2431
- 'candyCorn',
2432
- 'celticKnotwork',
2433
- 'certificateBanner',
2434
- 'chainLink',
2435
- 'champagneBottle',
2436
- 'checkedBarBlack',
2437
- 'checkedBarColor',
2438
- 'checkered',
2439
- 'christmasTree',
2440
- 'circlesLines',
2441
- 'circlesRectangles',
2442
- 'classicalWave',
2443
- 'clocks',
2444
- 'compass',
2445
- 'confetti',
2446
- 'confettiGrays',
2447
- 'confettiOutline',
2448
- 'confettiStreamers',
2449
- 'confettiWhite',
2450
- 'cornerTriangles',
2451
- 'couponCutoutDashes',
2452
- 'couponCutoutDots',
2453
- 'crazyMaze',
2454
- 'creaturesButterfly',
2455
- 'creaturesFish',
2456
- 'creaturesInsects',
2457
- 'creaturesLadyBug',
2458
- 'crossStitch',
2459
- 'cup',
2460
- 'decoArch',
2461
- 'decoArchColor',
2462
- 'decoBlocks',
2463
- 'diamondsGray',
2464
- 'doubleD',
2465
- 'doubleDiamonds',
2466
- 'earth1',
2467
- 'earth2',
2468
- 'eclipsingSquares1',
2469
- 'eclipsingSquares2',
2470
- 'eggsBlack',
2471
- 'fans',
2472
- 'film',
2473
- 'firecrackers',
2474
- 'flowersBlockPrint',
2475
- 'flowersDaisies',
2476
- 'flowersModern1',
2477
- 'flowersModern2',
2478
- 'flowersPansy',
2479
- 'flowersRedRose',
2480
- 'flowersRoses',
2481
- 'flowersTeacup',
2482
- 'flowersTiny',
2483
- 'gems',
2484
- 'gingerbreadMan',
2485
- 'gradient',
2486
- 'handmade1',
2487
- 'handmade2',
2488
- 'heartBalloon',
2489
- 'heartGray',
2490
- 'hearts',
2491
- 'heebieJeebies',
2492
- 'holly',
2493
- 'houseFunky',
2494
- 'hypnotic',
2495
- 'iceCreamCones',
2496
- 'lightBulb',
2497
- 'lightning1',
2498
- 'lightning2',
2499
- 'mapPins',
2500
- 'mapleLeaf',
2501
- 'mapleMuffins',
2502
- 'marquee',
2503
- 'marqueeToothed',
2504
- 'moons',
2505
- 'mosaic',
2506
- 'musicNotes',
2507
- 'northwest',
2508
- 'ovals',
2509
- 'packages',
2510
- 'palmsBlack',
2511
- 'palmsColor',
2512
- 'paperClips',
2513
- 'papyrus',
2514
- 'partyFavor',
2515
- 'partyGlass',
2516
- 'pencils',
2517
- 'people',
2518
- 'peopleWaving',
2519
- 'peopleHats',
2520
- 'poinsettias',
2521
- 'postageStamp',
2522
- 'pumpkin1',
2523
- 'pushPinNote2',
2524
- 'pushPinNote1',
2525
- 'pyramids',
2526
- 'pyramidsAbove',
2527
- 'quadrants',
2528
- 'rings',
2529
- 'safari',
2530
- 'sawtooth',
2531
- 'sawtoothGray',
2532
- 'scaredCat',
2533
- 'seattle',
2534
- 'shadowedSquares',
2535
- 'sharksTeeth',
2536
- 'shorebirdTracks',
2537
- 'skyrocket',
2538
- 'snowflakeFancy',
2539
- 'snowflakes',
2540
- 'sombrero',
2541
- 'southwest',
2542
- 'stars',
2543
- 'starsTop',
2544
- 'stars3d',
2545
- 'starsBlack',
2546
- 'starsShadowed',
2547
- 'sun',
2548
- 'swirligig',
2549
- 'tornPaper',
2550
- 'tornPaperBlack',
2551
- 'trees',
2552
- 'triangleParty',
2553
- 'triangles',
2554
- 'tribal1',
2555
- 'tribal2',
2556
- 'tribal3',
2557
- 'tribal4',
2558
- 'tribal5',
2559
- 'tribal6',
2560
- 'triangle1',
2561
- 'triangle2',
2562
- 'triangleCircle1',
2563
- 'triangleCircle2',
2564
- 'shapes1',
2565
- 'shapes2',
2566
- 'twistedLines1',
2567
- 'twistedLines2',
2568
- 'vine',
2569
- 'waveline',
2570
- 'weavingAngles',
2571
- 'weavingBraid',
2572
- 'weavingRibbon',
2573
- 'weavingStrips',
2574
- 'whiteFlowers',
2575
- 'woodwork',
2576
- 'xIllusions',
2577
- 'zanyTriangles',
2578
- 'zigZag',
2579
- 'zigZagStitch'
2580
- ];
2581
- const BORDER_STYLE_SET = new Set(DOCUMENT_PARAGRAPH_BORDER_STYLES);
2582
- const BORDER_EDGE_SET = new Set(DOCUMENT_PARAGRAPH_BORDER_EDGES);
2583
- const BORDER_PROPERTY_SET = new Set([
2584
- 'style',
2585
- 'color',
2586
- 'size',
2587
- 'space',
2588
- 'shadow',
2589
- 'frame'
2590
- ]);
2591
- const LINE_BORDER_STYLES = new Set(DOCUMENT_PARAGRAPH_BORDER_STYLES.slice(0, 27));
2592
- const DASHED_BORDER_STYLES = new Set([
2593
- 'dashed',
2594
- 'dashSmallGap',
2595
- 'dashDotStroked',
2596
- 'dotDash',
2597
- 'dotDotDash'
2598
- ]);
2599
- const DOUBLE_BORDER_STYLES = new Set([
2600
- 'double',
2601
- 'triple',
2602
- 'thinThickSmallGap',
2603
- 'thickThinSmallGap',
2604
- 'thinThickThinSmallGap',
2605
- 'thinThickMediumGap',
2606
- 'thickThinMediumGap',
2607
- 'thinThickThinMediumGap',
2608
- 'thinThickLargeGap',
2609
- 'thickThinLargeGap',
2610
- 'thinThickThinLargeGap',
2611
- 'doubleWave'
2612
- ]);
2613
- const MAX_SERIALIZED_PARAGRAPH_BORDERS = 32768;
2614
- const POINTS_TO_PIXELS = 96 / 72;
2615
- function normalizeDocumentParagraphBorders(source) {
2616
- if (!source || 'object' != typeof source || Array.isArray(source)) return null;
2617
- const record = source;
2618
- if (Object.keys(record).some((key)=>!BORDER_EDGE_SET.has(key))) return null;
2619
- const borders = {};
2620
- for (const edge of DOCUMENT_PARAGRAPH_BORDER_EDGES){
2621
- if (void 0 === record[edge]) continue;
2622
- const border = normalizeDocumentParagraphBorder(record[edge]);
2623
- if (!border) return null;
2624
- borders[edge] = border;
2625
- }
2626
- return Object.keys(borders).length ? borders : null;
2627
- }
2628
- function normalizeDocumentParagraphBorder(source) {
2629
- if (!source || 'object' != typeof source || Array.isArray(source)) return null;
2630
- const record = source;
2631
- if (Object.keys(record).some((key)=>!BORDER_PROPERTY_SET.has(key))) return null;
2632
- const style = record.style;
2633
- if ('string' != typeof style || !BORDER_STYLE_SET.has(style)) return null;
2634
- const normalizedStyle = style;
2635
- const color = normalizeBorderColor(record.color);
2636
- if (void 0 !== record.color && !color) return null;
2637
- const size = optionalInteger(record.size);
2638
- if (null === size || void 0 !== size && !validBorderSize(normalizedStyle, size)) return null;
2639
- const space = optionalInteger(record.space);
2640
- if (null === space || void 0 !== space && (space < 0 || space > 31)) return null;
2641
- const shadow = optionalBoolean(record.shadow);
2642
- const frame = optionalBoolean(record.frame);
2643
- if (null === shadow || null === frame) return null;
2644
- return {
2645
- style: normalizedStyle,
2646
- ...color ? {
2647
- color
2648
- } : {},
2649
- ...void 0 !== size ? {
2650
- size
2651
- } : {},
2652
- ...void 0 !== space ? {
2653
- space
2654
- } : {},
2655
- ...void 0 !== shadow ? {
2656
- shadow
2657
- } : {},
2658
- ...void 0 !== frame ? {
2659
- frame
2660
- } : {}
2661
- };
2662
- }
2663
- function parseDocumentParagraphBorders(source) {
2664
- if ('string' != typeof source) return normalizeDocumentParagraphBorders(source);
2665
- if (!source.trim() || source.length > MAX_SERIALIZED_PARAGRAPH_BORDERS) return null;
2666
- try {
2667
- return normalizeDocumentParagraphBorders(JSON.parse(source));
2668
- } catch {
2669
- return null;
2670
- }
2671
- }
2672
- function serializeDocumentParagraphBorders(source) {
2673
- const borders = normalizeDocumentParagraphBorders(source);
2674
- if (!borders) return;
2675
- return JSON.stringify(Object.fromEntries(DOCUMENT_PARAGRAPH_BORDER_EDGES.flatMap((edge)=>{
2676
- const border = borders[edge];
2677
- return border ? [
2678
- [
2679
- edge,
2680
- serializedBorder(border)
2681
- ]
2682
- ] : [];
2683
- })));
2684
- }
2685
- function parseDocumentParagraphBordersElement(element) {
2686
- const semantic = parseDocumentParagraphBorders(element.getAttribute(DOCUMENT_PARAGRAPH_BORDERS_ATTRIBUTE));
2687
- if (!semantic) return paragraphBordersFromCss(element);
2688
- const edited = {
2689
- ...semantic
2690
- };
2691
- for (const edge of [
2692
- 'top',
2693
- 'left',
2694
- 'bottom',
2695
- 'right'
2696
- ]){
2697
- const border = semantic[edge];
2698
- const css = cssBorder(element, edge);
2699
- if (!(!css || border && sameBorderPresentation(border, css))) {
2700
- if ('none' === css.style) {
2701
- edited[edge] = {
2702
- style: 'nil'
2703
- };
2704
- continue;
2705
- }
2706
- edited[edge] = {
2707
- ...border ?? {
2708
- style: 'single'
2709
- },
2710
- style: cssStyleToBorderStyle(css.style),
2711
- color: {
2712
- value: css.color
2713
- },
2714
- size: cssWidthToEighthPoints(css.width)
2715
- };
2716
- }
2717
- }
2718
- return normalizeDocumentParagraphBorders(edited);
2719
- }
2720
- function documentParagraphBordersDomAttributes(source) {
2721
- const borders = normalizeDocumentParagraphBorders(source);
2722
- const serialized = serializeDocumentParagraphBorders(borders);
2723
- if (!borders || !serialized) return {};
2724
- const styles = [];
2725
- const shadows = [];
2726
- for (const edge of [
2727
- 'top',
2728
- 'left',
2729
- 'bottom',
2730
- 'right'
2731
- ]){
2732
- const border = borders[edge];
2733
- if (!border) continue;
2734
- const presentation = documentBorderPresentation(border);
2735
- styles.push(`border-${edge}: ${formatPixels(presentation.width)}px ${presentation.style} ${presentation.color}`);
2736
- if (border.space) styles.push(`padding-${edge}: ${formatPixels(border.space * POINTS_TO_PIXELS)}px`);
2737
- if (border.shadow && presentation.width > 0) shadows.push(`2px 2px 0 ${presentation.color}`);
2738
- }
2739
- const between = borders.between ? documentBorderPresentation(borders.between) : null;
2740
- if (between && between.width > 0) shadows.push(`inset 0 -${formatPixels(between.width)}px 0 ${between.color}`);
2741
- const bar = borders.bar ? documentBorderPresentation(borders.bar) : null;
2742
- if (bar && bar.width > 0) shadows.push(`inset ${formatPixels(bar.width)}px 0 0 ${bar.color}`);
2743
- if (shadows.length) styles.push(`box-shadow: ${shadows.join(', ')}`);
2744
- return {
2745
- [DOCUMENT_PARAGRAPH_BORDERS_ATTRIBUTE]: serialized,
2746
- ...styles.length ? {
2747
- style: styles.join('; ')
2748
- } : {}
2749
- };
2750
- }
2751
- function isDocumentParagraphArtBorderStyle(style) {
2752
- return !LINE_BORDER_STYLES.has(style);
2753
- }
2754
- function normalizeBorderColor(source) {
2755
- if (!source || 'object' != typeof source || Array.isArray(source)) return null;
2756
- const record = source;
2757
- if (Object.keys(record).some((key)=>'value' !== key && 'theme' !== key)) return null;
2758
- const theme = parseDocxThemeReference('string' == typeof record.theme ? record.theme : record.theme ? JSON.stringify(record.theme) : void 0);
2759
- const direct = 'auto' === record.value ? 'auto' : 'string' == typeof record.value ? normalizeCssColor(record.value) : null;
2760
- const resolved = direct ?? theme?.resolved ?? null;
2761
- if (!resolved || 'transparent' === resolved) return null;
2762
- if (theme && resolved !== theme.resolved && !('auto' === resolved && 'none' === theme.theme && '#000000' === theme.resolved)) return null;
2763
- return {
2764
- value: resolved,
2765
- ...theme ? {
2766
- theme
2767
- } : {}
2768
- };
2769
- }
2770
- function serializedBorder(border) {
2771
- const color = border.color ? serializedBorderColor(border.color) : void 0;
2772
- return {
2773
- style: border.style,
2774
- ...color ? {
2775
- color
2776
- } : {},
2777
- ...void 0 !== border.size ? {
2778
- size: border.size
2779
- } : {},
2780
- ...void 0 !== border.space ? {
2781
- space: border.space
2782
- } : {},
2783
- ...void 0 !== border.shadow ? {
2784
- shadow: border.shadow
2785
- } : {},
2786
- ...void 0 !== border.frame ? {
2787
- frame: border.frame
2788
- } : {}
2789
- };
2790
- }
2791
- function serializedBorderColor(color) {
2792
- const theme = serializeDocxThemeReference(color.theme ?? null);
2793
- return {
2794
- value: color.value,
2795
- ...theme ? {
2796
- theme: JSON.parse(theme)
2797
- } : {}
2798
- };
2799
- }
2800
- function optionalInteger(value) {
2801
- if (void 0 === value) return;
2802
- return 'number' == typeof value && Number.isSafeInteger(value) ? value : null;
2803
- }
2804
- function optionalBoolean(value) {
2805
- if (void 0 === value) return;
2806
- return 'boolean' == typeof value ? value : null;
2807
- }
2808
- function validBorderSize(style, size) {
2809
- if ('nil' === style || 'none' === style) return size >= 0 && size <= 96;
2810
- return isDocumentParagraphArtBorderStyle(style) ? size >= 1 && size <= 31 : size >= 2 && size <= 96;
2811
- }
2812
- function documentBorderPresentation(border) {
2813
- if ('nil' === border.style || 'none' === border.style || !border.size) return {
2814
- color: 'transparent',
2815
- style: 'none',
2816
- width: 0
2817
- };
2818
- const width = Math.min(16, isDocumentParagraphArtBorderStyle(border.style) ? border.size * POINTS_TO_PIXELS : border.size / 6);
2819
- return {
2820
- color: border.color && 'auto' !== border.color.value ? border.color.value : '#000000',
2821
- style: borderStyleToCssStyle(border.style),
2822
- width
2823
- };
2824
- }
2825
- function borderStyleToCssStyle(style) {
2826
- if ('nil' === style || 'none' === style) return 'none';
2827
- if ('dotted' === style) return 'dotted';
2828
- if (DASHED_BORDER_STYLES.has(style)) return 'dashed';
2829
- if (DOUBLE_BORDER_STYLES.has(style)) return 'double';
2830
- if ('inset' === style || 'threeDEngrave' === style) return 'inset';
2831
- if ('outset' === style || 'threeDEmboss' === style) return 'outset';
2832
- return 'solid';
2833
- }
2834
- function paragraphBordersFromCss(element) {
2835
- const borders = {};
2836
- for (const edge of [
2837
- 'top',
2838
- 'left',
2839
- 'bottom',
2840
- 'right'
2841
- ]){
2842
- const css = cssBorder(element, edge);
2843
- if (css && 'none' !== css.style) borders[edge] = {
2844
- style: cssStyleToBorderStyle(css.style),
2845
- color: {
2846
- value: css.color
2847
- },
2848
- size: cssWidthToEighthPoints(css.width)
2849
- };
2850
- }
2851
- return normalizeDocumentParagraphBorders(borders);
2852
- }
2853
- function cssBorder(element, edge) {
2854
- const style = element.style.getPropertyValue(`border-${edge}-style`).trim();
2855
- const width = Number.parseFloat(element.style.getPropertyValue(`border-${edge}-width`));
2856
- const color = normalizeCssColor(element.style.getPropertyValue(`border-${edge}-color`));
2857
- if (!style) return null;
2858
- if ('none' === style || 'hidden' === style) return {
2859
- color: '#000000',
2860
- style: 'none',
2861
- width: 0
2862
- };
2863
- return color && 'transparent' !== color && Number.isFinite(width) && width > 0 ? {
2864
- color,
2865
- style,
2866
- width
2867
- } : null;
2868
- }
2869
- function sameBorderPresentation(border, css) {
2870
- const expected = documentBorderPresentation(border);
2871
- if ('none' === expected.style) return 'none' === css.style && 0 === css.width;
2872
- return expected.color === css.color && expected.style === css.style && Math.abs(expected.width - css.width) < 0.01;
2873
- }
2874
- function cssStyleToBorderStyle(style) {
2875
- if ('double' === style) return 'double';
2876
- if ('dashed' === style) return 'dashed';
2877
- if ('dotted' === style) return 'dotted';
2878
- if ('inset' === style || 'groove' === style) return 'inset';
2879
- if ('outset' === style || 'ridge' === style) return 'outset';
2880
- return 'single';
2881
- }
2882
- function cssWidthToEighthPoints(width) {
2883
- return Math.max(2, Math.min(96, Math.round(6 * width)));
2884
- }
2885
- function formatPixels(value) {
2886
- return Number(value.toFixed(3)).toString();
2887
- }
2888
2211
  const DOCUMENT_PAGE_BORDER_EDGES = [
2889
2212
  'top',
2890
2213
  'left',
@@ -2912,7 +2235,7 @@ const PAGE_BORDER_Z_ORDER_SET = new Set([
2912
2235
  'back'
2913
2236
  ]);
2914
2237
  const MAX_SERIALIZED_PAGE_BORDERS = 32768;
2915
- const work_document_page_borders_POINTS_TO_PIXELS = 96 / 72;
2238
+ const POINTS_TO_PIXELS = 96 / 72;
2916
2239
  function normalizeDocumentPageBorders(source) {
2917
2240
  if (!source || 'object' != typeof source || Array.isArray(source)) return null;
2918
2241
  const record = source;
@@ -2994,7 +2317,7 @@ function resolveDocumentPageBorders(source, margins) {
2994
2317
  const border = borders.edges[edge];
2995
2318
  const presentation = border ? documentBorderPresentation(border) : void 0;
2996
2319
  if (presentation) presentations[edge] = presentation;
2997
- const space = (border?.space ?? 0) * work_document_page_borders_POINTS_TO_PIXELS;
2320
+ const space = (border?.space ?? 0) * POINTS_TO_PIXELS;
2998
2321
  insets[edge] = 'page' === offsetFrom ? space : Math.max(0, millimetersToPixels(margins[edge]) - space - (presentation?.width ?? 0));
2999
2322
  }
3000
2323
  return {
@@ -9029,6 +8352,8 @@ function sanitizeAttributes(element, tag) {
9029
8352
  const hiddenText = 'span' === tag ? documentHiddenTextFromElement(element) : null;
9030
8353
  const legacyTextEffects = 'span' === tag ? documentLegacyTextEffectsFromElement(element) ?? {} : {};
9031
8354
  const legacyTextEffectAttributes = documentLegacyTextEffectsDomAttributes(legacyTextEffects);
8355
+ const runBorder = 'span' === tag ? parseDocumentRunBorderElement(element) : null;
8356
+ const runBorderAttributes = documentRunBorderDomAttributes(runBorder);
9032
8357
  const underline = 'u' === tag ? documentUnderlineFormattingFromElement(element) : null;
9033
8358
  const underlineAttributes = underline ? documentUnderlineDomAttributes(underline) : {};
9034
8359
  const strike = 's' === tag || 'strike' === tag ? documentStrikeFormattingFromElement(element) : null;
@@ -9055,6 +8380,7 @@ function sanitizeAttributes(element, tag) {
9055
8380
  element.removeAttribute(DOCUMENT_LEGACY_TEXT_SHADOW_ATTRIBUTE);
9056
8381
  element.removeAttribute(DOCUMENT_LEGACY_TEXT_EMBOSS_ATTRIBUTE);
9057
8382
  element.removeAttribute(DOCUMENT_LEGACY_TEXT_IMPRINT_ATTRIBUTE);
8383
+ element.removeAttribute(DOCUMENT_RUN_BORDER_ATTRIBUTE);
9058
8384
  element.removeAttribute(DOCUMENT_SCRIPT_FONTS_ATTRIBUTE);
9059
8385
  element.removeAttribute(DOCUMENT_SCRIPT_FONT_SLOT_ATTRIBUTE);
9060
8386
  const styles = [
@@ -9070,6 +8396,7 @@ function sanitizeAttributes(element, tag) {
9070
8396
  emphasisAttributes.style ?? '',
9071
8397
  underlineAttributes.style ?? '',
9072
8398
  strikeAttributes.style ?? '',
8399
+ runBorderAttributes.style ?? '',
9073
8400
  borderAttributes.style ?? '',
9074
8401
  shadingAttributes.style ?? ''
9075
8402
  ].filter(Boolean);
@@ -9116,7 +8443,11 @@ function sanitizeAttributes(element, tag) {
9116
8443
  if ('span' === tag && null !== kerningThreshold) element.setAttribute(DOCUMENT_KERNING_THRESHOLD_ATTRIBUTE, String(kerningThreshold));
9117
8444
  if ('span' === tag && null !== emphasisMark) element.setAttribute(DOCUMENT_EMPHASIS_MARK_ATTRIBUTE, emphasisMark);
9118
8445
  if ('span' === tag && null !== hiddenText) element.setAttribute(DOCUMENT_HIDDEN_TEXT_ATTRIBUTE, String(hiddenText));
9119
- if ('span' === tag) for (const [name, value] of Object.entries(legacyTextEffectAttributes))element.setAttribute(name, value);
8446
+ if ('span' === tag) {
8447
+ for (const [name, value] of Object.entries(legacyTextEffectAttributes))element.setAttribute(name, value);
8448
+ const serializedRunBorder = runBorderAttributes[DOCUMENT_RUN_BORDER_ATTRIBUTE];
8449
+ if (serializedRunBorder) element.setAttribute(DOCUMENT_RUN_BORDER_ATTRIBUTE, serializedRunBorder);
8450
+ }
9120
8451
  if ('span' === tag && scriptFonts) {
9121
8452
  for (const [name, value] of Object.entries(scriptFontAttributes))if ('style' !== name) element.setAttribute(name, value);
9122
8453
  }
@@ -9169,6 +8500,7 @@ function sanitizeAttributes(element, tag) {
9169
8500
  DOCUMENT_LEGACY_TEXT_SHADOW_ATTRIBUTE,
9170
8501
  DOCUMENT_LEGACY_TEXT_EMBOSS_ATTRIBUTE,
9171
8502
  DOCUMENT_LEGACY_TEXT_IMPRINT_ATTRIBUTE,
8503
+ DOCUMENT_RUN_BORDER_ATTRIBUTE,
9172
8504
  DOCUMENT_SCRIPT_FONTS_ATTRIBUTE,
9173
8505
  DOCUMENT_SCRIPT_FONT_SLOT_ATTRIBUTE
9174
8506
  ] : [],
@@ -10100,6 +9432,7 @@ const ALLOWED_ATTRIBUTES = {
10100
9432
  'legacyTextShadow',
10101
9433
  'legacyTextEmboss',
10102
9434
  'legacyTextImprint',
9435
+ 'runBorder',
10103
9436
  "scriptFonts",
10104
9437
  "scriptFontSlot",
10105
9438
  'themeColor',
@@ -10195,6 +9528,7 @@ function importedDocumentCharacterFormatting(formatting) {
10195
9528
  legacyTextShadow: formatting.legacyTextShadow,
10196
9529
  legacyTextEmboss: formatting.legacyTextEmboss,
10197
9530
  legacyTextImprint: formatting.legacyTextImprint,
9531
+ runBorder: formatting.runBorder,
10198
9532
  color: formatting.color,
10199
9533
  fontFamily: formatting.fontFamily,
10200
9534
  scriptFonts: serializeDocumentScriptFonts(formatting.scriptFonts) ?? void 0,
@@ -10288,6 +9622,12 @@ function normalizeCharacterFormatMark(value) {
10288
9622
  attrs[key] = slot;
10289
9623
  continue;
10290
9624
  }
9625
+ if ('textStyle' === type && 'runBorder' === key) {
9626
+ const border = serializeDocumentRunBorder(parseDocumentRunBorder(candidate));
9627
+ if (!border) return null;
9628
+ attrs[key] = border;
9629
+ continue;
9630
+ }
10291
9631
  if ('string' == typeof candidate) {
10292
9632
  if (!candidate.length) continue;
10293
9633
  if ('textStyle' === type && 'textCase' === key && !normalizeDocumentTextCase(candidate)) return null;
@@ -11231,6 +10571,28 @@ const DocumentCharacterFormatting = Extension.create({
11231
10571
  toggleDocumentTextCase: (textCase)=>({ commands, editor })=>{
11232
10572
  const current = normalizeDocumentTextCase(editor.getAttributes('textStyle').textCase) ?? 'none';
11233
10573
  return commands.setDocumentTextCase(current === textCase ? 'none' : textCase);
10574
+ },
10575
+ setDocumentRunBorder: (border)=>({ commands })=>{
10576
+ const serialized = serializeDocumentRunBorder(normalizeDocumentRunBorder(border));
10577
+ return serialized ? commands.setMark('textStyle', {
10578
+ runBorder: serialized
10579
+ }) : false;
10580
+ },
10581
+ unsetDocumentRunBorder: ()=>({ chain })=>chain().setMark('textStyle', {
10582
+ runBorder: null
10583
+ }).removeEmptyTextStyle().run(),
10584
+ toggleDocumentRunBorder: ()=>({ commands, editor })=>{
10585
+ const current = parseDocumentRunBorder(editor.getAttributes('textStyle').runBorder);
10586
+ return commands.setDocumentRunBorder(documentRunBorderIsVisible(current) ? {
10587
+ style: 'nil'
10588
+ } : {
10589
+ style: 'single',
10590
+ color: {
10591
+ value: 'auto'
10592
+ },
10593
+ size: 4,
10594
+ space: 1
10595
+ });
11234
10596
  }
11235
10597
  };
11236
10598
  },
@@ -15970,7 +15332,7 @@ function documentTextParagraphStyle(style) {
15970
15332
  function documentTextLayoutRunStyle(style, fonts, loadedFontIds, paragraphStyle, element, paragraphRoot) {
15971
15333
  const direction = 'rtl' === style.direction ? 'rtl' : 'ltr';
15972
15334
  const whiteSpace = 'break-spaces' === style.whiteSpace ? 'breakSpaces' : 'normal';
15973
- if (direction !== paragraphStyle.direction || whiteSpace !== paragraphStyle.whiteSpace || !cssValueIs(style.whiteSpace, 'normal', 'break-spaces') || !cssValueIs(style.overflowWrap, 'normal', 'anywhere', 'break-word') || !cssValueIs(style.wordBreak, 'normal') || !cssValueIs(style.hyphens, 'manual', 'none') || !cssValueIs(style.wordSpacing, 'normal', '0', '0px') || !cssValueIs(style.textTransform, 'none') || !cssValueIs(style.fontVariationSettings, 'normal') || !cssValueIs(style.fontVariantCaps, 'normal') || !cssValueIs(style.fontVariantEastAsian, 'normal') || !cssValueIs(style.fontVariantNumeric, 'normal') || !cssValueIs(style.fontVariantPosition, 'normal') || !cssValueIs(style.fontStretch, 'normal', '100%') || !documentTextEmphasisAllowsKernel(style, element) || !cssValueIs(style.verticalAlign, 'baseline') || !cssValueIs(style.unicodeBidi, 'normal') && !(paragraphRoot && 'isolate' === style.unicodeBidi)) return null;
15335
+ if (direction !== paragraphStyle.direction || whiteSpace !== paragraphStyle.whiteSpace || !cssValueIs(style.whiteSpace, 'normal', 'break-spaces') || !cssValueIs(style.overflowWrap, 'normal', 'anywhere', 'break-word') || !cssValueIs(style.wordBreak, 'normal') || !cssValueIs(style.hyphens, 'manual', 'none') || !cssValueIs(style.wordSpacing, 'normal', '0', '0px') || !cssValueIs(style.textTransform, 'none') || !cssValueIs(style.fontVariationSettings, 'normal') || !cssValueIs(style.fontVariantCaps, 'normal') || !cssValueIs(style.fontVariantEastAsian, 'normal') || !cssValueIs(style.fontVariantNumeric, 'normal') || !cssValueIs(style.fontVariantPosition, 'normal') || !cssValueIs(style.fontStretch, 'normal', '100%') || !documentTextEmphasisAllowsKernel(style, element) || !documentRunBorderAllowsKernel(element) || !cssValueIs(style.verticalAlign, 'baseline') || !cssValueIs(style.unicodeBidi, 'normal') && !(paragraphRoot && 'isolate' === style.unicodeBidi)) return null;
15974
15336
  const fontStyle = style.fontStyle && 'normal' !== style.fontStyle ? 'italic' === style.fontStyle ? 'italic' : null : 'normal';
15975
15337
  if (!fontStyle) return null;
15976
15338
  const families = cssFontFamilies(style.fontFamily);
@@ -16056,6 +15418,10 @@ function documentTextEmphasisAllowsKernel(style, element) {
16056
15418
  const webkit = style.getPropertyValue('-webkit-text-emphasis-style').trim();
16057
15419
  return (!standard || 'none' === standard) && (!webkit || 'none' === webkit);
16058
15420
  }
15421
+ function documentRunBorderAllowsKernel(element) {
15422
+ for(let current = element; current; current = current.parentElement)if (current.hasAttribute(DOCUMENT_RUN_BORDER_ATTRIBUTE)) return !documentRunBorderIsVisible(parseDocumentRunBorder(current.getAttribute(DOCUMENT_RUN_BORDER_ATTRIBUTE)));
15423
+ return true;
15424
+ }
16059
15425
  function cssLigatures(style) {
16060
15426
  const variant = style.fontVariantLigatures;
16061
15427
  if (variant && 'normal' !== variant && 'none' !== variant) return null;
@@ -17622,7 +16988,11 @@ const DocumentTextStyle = TextStyle.extend({
17622
16988
  ].map((attribute)=>({
17623
16989
  tag: `span[${attribute}]`,
17624
16990
  consuming: false
17625
- }))
16991
+ })),
16992
+ {
16993
+ tag: `span[${DOCUMENT_RUN_BORDER_ATTRIBUTE}]`,
16994
+ consuming: false
16995
+ }
17626
16996
  ];
17627
16997
  },
17628
16998
  addCommands () {
@@ -17671,6 +17041,11 @@ const DocumentTextStyle = TextStyle.extend({
17671
17041
  legacyTextShadow: legacyTextEffectAttribute('shadow'),
17672
17042
  legacyTextEmboss: legacyTextEffectAttribute('emboss'),
17673
17043
  legacyTextImprint: legacyTextEffectAttribute('imprint'),
17044
+ runBorder: {
17045
+ default: null,
17046
+ parseHTML: (element)=>serializeDocumentRunBorder(parseDocumentRunBorderElement(element)) ?? null,
17047
+ renderHTML: (attributes)=>documentRunBorderDomAttributes(parseDocumentRunBorder(attributes.runBorder))
17048
+ },
17674
17049
  kerningThresholdHalfPoints: {
17675
17050
  default: null,
17676
17051
  parseHTML: (element)=>documentKerningThresholdHalfPointsFromElement(element),
@@ -21866,4 +21241,4 @@ function registerDocumentPageSurfaceGeometry(element, provider) {
21866
21241
  function documentPageSurfaceGeometryForElement(element) {
21867
21242
  return documentPageSurfaceProviders.get(element)?.() ?? null;
21868
21243
  }
21869
- export { DEFAULT_DOCUMENT_TABLE_CELL_FORMAT, DEFAULT_DOCUMENT_TABLE_CELL_MARGINS, DEFAULT_DOCUMENT_TABLE_GEOMETRY, DOCUMENT_BOOKMARK_DUPLICATE_MESSAGE, DOCUMENT_CHUNK_HYDRATION_META, DOCUMENT_CHUNK_PAGINATION_META, DOCUMENT_CHUNK_VISIBLE_IDS_META, DOCUMENT_LEGACY_TEXT_EFFECT_NAMES, DOCUMENT_LEGACY_TEXT_EMBOSS_ATTRIBUTE, DOCUMENT_LEGACY_TEXT_IMPRINT_ATTRIBUTE, DOCUMENT_LEGACY_TEXT_OUTLINE_ATTRIBUTE, DOCUMENT_LEGACY_TEXT_SHADOW_ATTRIBUTE, DOCUMENT_PAGE_BORDER_EDGES, DOCUMENT_PAGE_MARGIN_KEYS, DOCUMENT_PARAGRAPH_BORDER_EDGES, DOCUMENT_PARAGRAPH_BORDER_STYLES, DOCUMENT_PARAGRAPH_SHADING_PATTERNS, DOCUMENT_STRIKE_STYLE_ATTRIBUTE, DOCUMENT_TABLE_ROW_ID_ATTRIBUTE, DOCUMENT_TABLE_ROW_TEXT_ID_ATTRIBUTE, DOCUMENT_TABLE_STYLE_OPTIONS, DOCUMENT_UNDERLINE_STYLE_ATTRIBUTE, DocumentCharacterFormatting, DocumentEquation, DocumentFontFamily, DocumentImage, DocumentParagraphFormatting, DocumentParagraphIdentity, DocumentScriptFontFormatting, DocumentStrike, DocumentSubscript, DocumentSuperscript, DocumentTableRowIdentity, DocumentTextStyle, DocumentUnderline, DocxThemePatchCollector, MAX_DOCUMENT_IMAGE_RELATIVE_HEIGHT, MAX_DOCUMENT_NUMBERING_START, activeDocumentBookmark, activeDocumentSection, activeDocumentTableStyle, applyDocumentImageCropToElement, applyDocumentImageIdentityToElement, applyDocumentImageLayerToElement, applyDocumentImageWrapContourToElement, applyDocumentPageGeometry, applyDocumentParagraphIdentityToElement, applyDocumentTableGeometryToElement, applyDocumentTableRowIdentityToElement, applyDocumentTextCaseStyle, canChangeDocumentIndent, canInsertDocumentComment, canSetDocumentTableRowRepeatHeader, clampDocumentMargin, collectDocumentChanges, collectDocumentCommentAnchors, collectDocumentNotes, collectDocumentTextLayoutParagraphs, createDocumentBibliography, createDocumentEquationElement, createDocumentImageIdentityRegistry, createDocumentNoteElement, createDocumentParagraphIdentityRegistry, createSchemaDerivedWorkDocumentModel, createSchemaValidatedWorkDocumentModel, createWorkDocumentExtensions, createWorkDocumentModel, createWorkDocumentModelFromContent, createWorkOfficeDocumentCollaborationBinding as createOfficeDocumentCollaborationBinding, cssDocumentFontFamily, defaultDocumentImageWrapContour, documentAutoLineHeight, documentBookmarkNameExists, documentBookmarkReferenceInstruction, documentBulletListStyle, documentCaptionKind, documentCaptionLabel, documentCharacterPositionDomAttributes, documentCharacterPositionHalfPointsFromElement, documentCharacterPositionPoints, documentCharacterScaleDomAttributes, documentCharacterScalePercentFromElement, documentCharacterSpacingDomAttributes, documentCharacterSpacingPoints, documentCharacterSpacingTwipsFromElement, documentChunkMountedIds, documentCitationCount, documentCitationInstruction, documentCitationStyle, documentCitationStyleDetails, documentCitationTags, documentCitationTagsFromInstruction, documentCommentDraftRange, documentCommentViews, documentContentLayoutProperties, documentEmphasisMarkDomAttributes, documentEmphasisMarkFromElement, documentEquationFromElement, documentEquationText, documentFontNameFromCssFamily, documentHiddenTextDomAttributes, documentHiddenTextFromElement, documentHiddenTextKeyboardShortcut, documentImageCropFromElement, documentImageIdentityFromElement, documentImageLayerFromElement, documentImageLayoutFromElement, documentImageLayoutOptions, documentImagePositionFromElement, documentImageProperties, documentImageWrapContourFromElement, documentInitialSectionLayout, documentKerningDomAttributes, documentKerningIsEffective, documentKerningThresholdHalfPointsFromElement, documentKerningThresholdPoints, documentLazyHtmlChunkFragment, documentLazyHtmlProjection, documentLazyHtmlProjectionFingerprint, documentLegacyTextEffectsConflict, documentLegacyTextEffectsCss, documentLegacyTextEffectsDomAttributes, documentLegacyTextEffectsFromElement, documentLegacyTextEffectsFromTextStyleAttributes, documentModelForContent, documentModelForHtml, documentModelHasTrustedInitialIntegrityFeatures, documentModelUsesWindowing, documentNoteKey, documentNoteKind, documentOrderedListState, documentPageBordersVisible, documentPageChromeLegacyFields, documentPageGeometryForLayout, documentPageHorizontalMarginTwips, documentPageMarginBody, documentPageMarginsForLayout, documentPageMetrics, documentPageSurfaceGeometryForElement, documentPaperSizeForGeometry, documentParagraphBordersDomAttributes, documentParagraphDirection, documentParagraphIdentityFromElement, documentParagraphIndent, documentParagraphPagination, documentParagraphShadingDomAttributes, documentParagraphSpacing, documentParagraphTabStops, documentScriptFontDirectFamily, documentScriptFontFallbackSlots, documentScriptFontFamily, documentScriptFontFamilyForRendering, documentScriptFontSegments, documentScriptFontSlotFromElement, documentScriptFontSlotFromHint, documentScriptFontsDomAttributes, documentScriptFontsFromElement, documentSectionById, documentSectionDomAttributes, documentSections, documentStrikeDomAttributes, documentStrikeFormattingFromElement, documentStrikeStyle, documentTabLeaderLabel, documentTableBordersFromElement, documentTableCellFormat, documentTableCellMarginOverridesFromElement, documentTableColumnPercentagesFromElement, documentTableGeometryFromElement, documentTableHorizontalAlignment, documentTableRowIdentityFromElement, documentTableRowOptions, documentTableSizing, documentTextCaseFromWordFlags, documentTextCaseKeyboardShortcuts, documentTextLayoutBatches, documentTextStatistics, documentTransactionsOnlyHydrateChunks, documentUnderlineColor, documentUnderlineDomAttributes, documentUnderlineFormattingFromElement, documentUnderlineKeyboardShortcuts, documentUnderlineStyle, documentWordLineHeightFactor, docxBookmarkReferenceTarget, docxDocumentFieldKind, editorDocumentBookmarkReferenceTargets, editorDocumentCaptionTargets, importedDocumentCharacterFormatting, initializeWorkOfficeDocumentCollaboration as initializeOfficeDocumentCollaboration, invalidateDocumentLazyHtmlProjection, isContourImageLayout, isDocumentParagraphArtBorderStyle, isValidDocumentCitationTag, materializeLazyDocumentEditorRoot, materializeWorkDocumentContent, measureDocumentLayoutBlocksIncrementally, millimetersToPixels, mountWorkLiveDocumentCapture, nextDocumentTabAlignment, normalizeDocumentBookmarkName, normalizeDocumentBookmarkNativeId, normalizeDocumentBookmarkReferencesHtml, normalizeDocumentBookmarksHtml, normalizeDocumentCaptionsHtml, normalizeDocumentCharacterPositionHalfPoints, normalizeDocumentCharacterScalePercent, normalizeDocumentCharacterSpacingTwips, normalizeDocumentCitationsHtml, normalizeDocumentColumns, normalizeDocumentEmphasisMark, normalizeDocumentEquation, normalizeDocumentFieldsHtml, normalizeDocumentFontName, normalizeDocumentHiddenText, normalizeDocumentHtml, normalizeDocumentImageAlignment, normalizeDocumentImageCrop, normalizeDocumentImageIdentity, normalizeDocumentImageLayer, normalizeDocumentImageLayoutOptions, normalizeDocumentImagePosition, normalizeDocumentImageWrapContour, normalizeDocumentImageWrapSide, normalizeDocumentKerningThresholdHalfPoints, normalizeDocumentLegacyTextEffect, normalizeDocumentLegacyTextEffects, normalizeDocumentNotesHtml, normalizeDocumentPageBorders, normalizeDocumentPageChrome, normalizeDocumentPageGeometry, normalizeDocumentPageMargins, normalizeDocumentPaperSource, normalizeDocumentParagraphBorder, normalizeDocumentParagraphBorders, normalizeDocumentParagraphId, normalizeDocumentParagraphIdentity, normalizeDocumentParagraphIndent, normalizeDocumentScriptFontHint, normalizeDocumentScriptFontSlot, normalizeDocumentScriptFonts, normalizeDocumentStrikeStyle, normalizeDocumentTabStops, normalizeDocumentTableBorderStyle, normalizeDocumentTableBorderWidth, normalizeDocumentTableRowHeightRule, normalizeDocumentTableRowIdentity, normalizeDocumentTableVerticalAlign, normalizeDocumentTextCase, normalizeDocumentThemeFont, normalizeDocumentUnderlineColor, normalizeDocumentUnderlineStyle, normalizeTableColor, normalizedTabPosition, pageTwipsToMillimeters, parseDocumentCharacterFormatting, parseDocumentParagraphBordersElement, parseDocumentParagraphFormatting, parseDocumentParagraphShadingElement, parseDocumentScriptFonts, parseDocxThemeReference, patchDocumentLazyHtmlProjection, patchDocumentScriptFonts, patchDocxThemeReferences, positionWorkLiveDocumentCapture, readWorkOfficeDocumentCollaboration as readOfficeDocumentCollaboration, registerDocumentPageSurfaceGeometry, renderDocumentAutoLineHeight, renderDocumentTableBorders, renderDocumentTableCellMarginOverrides, resolveDocumentPageBorders, resolveDocumentPageChrome, resolveDocumentPageMargins, resolveDocumentPageSize, resolveWorkDocumentEditorInput, retainAnchoredDocumentComments, sanitizeDocumentPageChromeHtml, selectedDocumentChunkId, serializeDocumentParagraphFormatting, serializeDocumentScriptFonts, serializeDocumentTabStops, serializeDocxThemeReference, serializeWorkDocumentNode, setCustomDocumentColumns, supportedDocxBookmarkReferenceInstruction, syncDocumentContentFromHtml, transferChangedDocumentTextStatistics, uniqueDocumentImageIdentity, uniqueDocumentParagraphIdentity, updateDocumentColumnWidth, updateDocumentCustomPageMillimeters, updateDocumentGutterPosition, updateDocumentMirrorMargins, updateDocumentPageChromeVariant, updateDocumentPageMarginMillimeters, updateDocumentPageMarginMode, updateDocumentPageOrientation, updateDocumentPaperSizePreset, validateDocumentBookmarkName, windowDocumentModel, workDocumentSchema, workOfficeDocumentCollaborationFragment as officeDocumentCollaborationFragment, work_document_page_margins_twipsToMillimeters, wrapsBesideImage };
21244
+ export { DEFAULT_DOCUMENT_TABLE_CELL_FORMAT, DEFAULT_DOCUMENT_TABLE_CELL_MARGINS, DEFAULT_DOCUMENT_TABLE_GEOMETRY, DOCUMENT_BOOKMARK_DUPLICATE_MESSAGE, DOCUMENT_CHUNK_HYDRATION_META, DOCUMENT_CHUNK_PAGINATION_META, DOCUMENT_CHUNK_VISIBLE_IDS_META, DOCUMENT_LEGACY_TEXT_EFFECT_NAMES, DOCUMENT_LEGACY_TEXT_EMBOSS_ATTRIBUTE, DOCUMENT_LEGACY_TEXT_IMPRINT_ATTRIBUTE, DOCUMENT_LEGACY_TEXT_OUTLINE_ATTRIBUTE, DOCUMENT_LEGACY_TEXT_SHADOW_ATTRIBUTE, DOCUMENT_PAGE_BORDER_EDGES, DOCUMENT_PAGE_MARGIN_KEYS, DOCUMENT_PARAGRAPH_SHADING_PATTERNS, DOCUMENT_STRIKE_STYLE_ATTRIBUTE, DOCUMENT_TABLE_ROW_ID_ATTRIBUTE, DOCUMENT_TABLE_ROW_TEXT_ID_ATTRIBUTE, DOCUMENT_TABLE_STYLE_OPTIONS, DOCUMENT_UNDERLINE_STYLE_ATTRIBUTE, DocumentCharacterFormatting, DocumentEquation, DocumentFontFamily, DocumentImage, DocumentParagraphFormatting, DocumentParagraphIdentity, DocumentScriptFontFormatting, DocumentStrike, DocumentSubscript, DocumentSuperscript, DocumentTableRowIdentity, DocumentTextStyle, DocumentUnderline, MAX_DOCUMENT_IMAGE_RELATIVE_HEIGHT, MAX_DOCUMENT_NUMBERING_START, activeDocumentBookmark, activeDocumentSection, activeDocumentTableStyle, applyDocumentImageCropToElement, applyDocumentImageIdentityToElement, applyDocumentImageLayerToElement, applyDocumentImageWrapContourToElement, applyDocumentPageGeometry, applyDocumentParagraphIdentityToElement, applyDocumentTableGeometryToElement, applyDocumentTableRowIdentityToElement, applyDocumentTextCaseStyle, canChangeDocumentIndent, canInsertDocumentComment, canSetDocumentTableRowRepeatHeader, clampDocumentMargin, collectDocumentChanges, collectDocumentCommentAnchors, collectDocumentNotes, collectDocumentTextLayoutParagraphs, createDocumentBibliography, createDocumentEquationElement, createDocumentImageIdentityRegistry, createDocumentNoteElement, createDocumentParagraphIdentityRegistry, createSchemaDerivedWorkDocumentModel, createSchemaValidatedWorkDocumentModel, createWorkDocumentExtensions, createWorkDocumentModel, createWorkDocumentModelFromContent, createWorkOfficeDocumentCollaborationBinding as createOfficeDocumentCollaborationBinding, cssDocumentFontFamily, defaultDocumentImageWrapContour, documentAutoLineHeight, documentBookmarkNameExists, documentBookmarkReferenceInstruction, documentBulletListStyle, documentCaptionKind, documentCaptionLabel, documentCharacterPositionDomAttributes, documentCharacterPositionHalfPointsFromElement, documentCharacterPositionPoints, documentCharacterScaleDomAttributes, documentCharacterScalePercentFromElement, documentCharacterSpacingDomAttributes, documentCharacterSpacingPoints, documentCharacterSpacingTwipsFromElement, documentChunkMountedIds, documentCitationCount, documentCitationInstruction, documentCitationStyle, documentCitationStyleDetails, documentCitationTags, documentCitationTagsFromInstruction, documentCommentDraftRange, documentCommentViews, documentContentLayoutProperties, documentEmphasisMarkDomAttributes, documentEmphasisMarkFromElement, documentEquationFromElement, documentEquationText, documentFontNameFromCssFamily, documentHiddenTextDomAttributes, documentHiddenTextFromElement, documentHiddenTextKeyboardShortcut, documentImageCropFromElement, documentImageIdentityFromElement, documentImageLayerFromElement, documentImageLayoutFromElement, documentImageLayoutOptions, documentImagePositionFromElement, documentImageProperties, documentImageWrapContourFromElement, documentInitialSectionLayout, documentKerningDomAttributes, documentKerningIsEffective, documentKerningThresholdHalfPointsFromElement, documentKerningThresholdPoints, documentLazyHtmlChunkFragment, documentLazyHtmlProjection, documentLazyHtmlProjectionFingerprint, documentLegacyTextEffectsConflict, documentLegacyTextEffectsCss, documentLegacyTextEffectsDomAttributes, documentLegacyTextEffectsFromElement, documentLegacyTextEffectsFromTextStyleAttributes, documentModelForContent, documentModelForHtml, documentModelHasTrustedInitialIntegrityFeatures, documentModelUsesWindowing, documentNoteKey, documentNoteKind, documentOrderedListState, documentPageBordersVisible, documentPageChromeLegacyFields, documentPageGeometryForLayout, documentPageHorizontalMarginTwips, documentPageMarginBody, documentPageMarginsForLayout, documentPageMetrics, documentPageSurfaceGeometryForElement, documentPaperSizeForGeometry, documentParagraphDirection, documentParagraphIdentityFromElement, documentParagraphIndent, documentParagraphPagination, documentParagraphShadingDomAttributes, documentParagraphSpacing, documentParagraphTabStops, documentScriptFontDirectFamily, documentScriptFontFallbackSlots, documentScriptFontFamily, documentScriptFontFamilyForRendering, documentScriptFontSegments, documentScriptFontSlotFromElement, documentScriptFontSlotFromHint, documentScriptFontsDomAttributes, documentScriptFontsFromElement, documentSectionById, documentSectionDomAttributes, documentSections, documentStrikeDomAttributes, documentStrikeFormattingFromElement, documentStrikeStyle, documentTabLeaderLabel, documentTableBordersFromElement, documentTableCellFormat, documentTableCellMarginOverridesFromElement, documentTableColumnPercentagesFromElement, documentTableGeometryFromElement, documentTableHorizontalAlignment, documentTableRowIdentityFromElement, documentTableRowOptions, documentTableSizing, documentTextCaseFromWordFlags, documentTextCaseKeyboardShortcuts, documentTextLayoutBatches, documentTextStatistics, documentTransactionsOnlyHydrateChunks, documentUnderlineColor, documentUnderlineDomAttributes, documentUnderlineFormattingFromElement, documentUnderlineKeyboardShortcuts, documentUnderlineStyle, documentWordLineHeightFactor, docxBookmarkReferenceTarget, docxDocumentFieldKind, editorDocumentBookmarkReferenceTargets, editorDocumentCaptionTargets, importedDocumentCharacterFormatting, initializeWorkOfficeDocumentCollaboration as initializeOfficeDocumentCollaboration, invalidateDocumentLazyHtmlProjection, isContourImageLayout, isValidDocumentCitationTag, materializeLazyDocumentEditorRoot, materializeWorkDocumentContent, measureDocumentLayoutBlocksIncrementally, millimetersToPixels, mountWorkLiveDocumentCapture, nextDocumentTabAlignment, normalizeDocumentBookmarkName, normalizeDocumentBookmarkNativeId, normalizeDocumentBookmarkReferencesHtml, normalizeDocumentBookmarksHtml, normalizeDocumentCaptionsHtml, normalizeDocumentCharacterPositionHalfPoints, normalizeDocumentCharacterScalePercent, normalizeDocumentCharacterSpacingTwips, normalizeDocumentCitationsHtml, normalizeDocumentColumns, normalizeDocumentEmphasisMark, normalizeDocumentEquation, normalizeDocumentFieldsHtml, normalizeDocumentFontName, normalizeDocumentHiddenText, normalizeDocumentHtml, normalizeDocumentImageAlignment, normalizeDocumentImageCrop, normalizeDocumentImageIdentity, normalizeDocumentImageLayer, normalizeDocumentImageLayoutOptions, normalizeDocumentImagePosition, normalizeDocumentImageWrapContour, normalizeDocumentImageWrapSide, normalizeDocumentKerningThresholdHalfPoints, normalizeDocumentLegacyTextEffect, normalizeDocumentLegacyTextEffects, normalizeDocumentNotesHtml, normalizeDocumentPageBorders, normalizeDocumentPageChrome, normalizeDocumentPageGeometry, normalizeDocumentPageMargins, normalizeDocumentPaperSource, normalizeDocumentParagraphId, normalizeDocumentParagraphIdentity, normalizeDocumentParagraphIndent, normalizeDocumentScriptFontHint, normalizeDocumentScriptFontSlot, normalizeDocumentScriptFonts, normalizeDocumentStrikeStyle, normalizeDocumentTabStops, normalizeDocumentTableBorderStyle, normalizeDocumentTableBorderWidth, normalizeDocumentTableRowHeightRule, normalizeDocumentTableRowIdentity, normalizeDocumentTableVerticalAlign, normalizeDocumentTextCase, normalizeDocumentThemeFont, normalizeDocumentUnderlineColor, normalizeDocumentUnderlineStyle, normalizeTableColor, normalizedTabPosition, pageTwipsToMillimeters, parseDocumentCharacterFormatting, parseDocumentParagraphFormatting, parseDocumentParagraphShadingElement, parseDocumentScriptFonts, patchDocumentLazyHtmlProjection, patchDocumentScriptFonts, positionWorkLiveDocumentCapture, readWorkOfficeDocumentCollaboration as readOfficeDocumentCollaboration, registerDocumentPageSurfaceGeometry, renderDocumentAutoLineHeight, renderDocumentTableBorders, renderDocumentTableCellMarginOverrides, resolveDocumentPageBorders, resolveDocumentPageChrome, resolveDocumentPageMargins, resolveDocumentPageSize, resolveWorkDocumentEditorInput, retainAnchoredDocumentComments, sanitizeDocumentPageChromeHtml, selectedDocumentChunkId, serializeDocumentParagraphFormatting, serializeDocumentScriptFonts, serializeDocumentTabStops, serializeWorkDocumentNode, setCustomDocumentColumns, supportedDocxBookmarkReferenceInstruction, syncDocumentContentFromHtml, transferChangedDocumentTextStatistics, uniqueDocumentImageIdentity, uniqueDocumentParagraphIdentity, updateDocumentColumnWidth, updateDocumentCustomPageMillimeters, updateDocumentGutterPosition, updateDocumentMirrorMargins, updateDocumentPageChromeVariant, updateDocumentPageMarginMillimeters, updateDocumentPageMarginMode, updateDocumentPageOrientation, updateDocumentPaperSizePreset, validateDocumentBookmarkName, windowDocumentModel, workDocumentSchema, workOfficeDocumentCollaborationFragment as officeDocumentCollaborationFragment, work_document_page_margins_twipsToMillimeters, wrapsBesideImage };