ooxml-ui 0.31.0 → 1.0.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 (96) hide show
  1. package/README.md +14 -0
  2. package/custom-elements.json +10 -0
  3. package/dist/{chunk-RAZAJMHK.js → chunk-4QQASR5A.js} +2 -2
  4. package/dist/{chunk-HZ422LTR.js → chunk-BOX43CZD.js} +1 -0
  5. package/dist/{chunk-3GE2NHNG.js → chunk-FLHM5Q4O.js} +119 -81
  6. package/dist/{chunk-2QW4QE56.js → chunk-T3HB5LMH.js} +103 -68
  7. package/dist/controls.js +2 -2
  8. package/dist/docx/hard-break-command.d.ts +1 -3
  9. package/dist/docx/link-commands.d.ts +4 -15
  10. package/dist/docx/note-editor.d.ts +3 -2
  11. package/dist/docx/run-styles.d.ts +1 -1
  12. package/dist/docx/schema.d.ts +1 -1
  13. package/dist/docx/toggle-commands.d.ts +2 -8
  14. package/dist/docx.js +109 -302
  15. package/dist/form/gradient-direction-gallery.d.ts +19 -0
  16. package/dist/form/gradient-gallery-preview.d.ts +3 -0
  17. package/dist/form/gradient-preset-gallery.d.ts +16 -0
  18. package/dist/form/gradient-stop-track.d.ts +20 -0
  19. package/dist/form/number-range.d.ts +12 -0
  20. package/dist/icons.d.ts.map +1 -1
  21. package/dist/icons.js +1 -1
  22. package/dist/index.js +4 -4
  23. package/dist/menu/menu-button.d.ts +10 -0
  24. package/dist/menu/menu-button.d.ts.map +1 -1
  25. package/dist/pptx/{chart-3d-view-scene-IANLDFIE.mjs → chart-3d-view-scene-2KRQ5667.mjs} +2 -2
  26. package/dist/pptx/{chart-3d-view-scene-3DK5TUBZ.cjs → chart-3d-view-scene-36DMZWZ3.cjs} +37 -37
  27. package/dist/pptx/{chunk-C42ZL35K.mjs → chunk-ADOC5JLI.mjs} +1 -1
  28. package/dist/pptx/{chunk-QM4FGZG4.cjs → chunk-AIL3BNZS.cjs} +31 -131
  29. package/dist/pptx/{chunk-WLETAW3T.cjs → chunk-CJU4P5FT.cjs} +33 -13
  30. package/dist/pptx/{chunk-6SCK57RJ.cjs → chunk-FEFQTZDM.cjs} +158 -245
  31. package/dist/pptx/{chunk-EVGSFPUV.mjs → chunk-XWE5GSE7.mjs} +16 -109
  32. package/dist/pptx/{chunk-7JEMQW6R.mjs → chunk-YARCML7O.mjs} +11 -122
  33. package/dist/pptx/{chunk-OHE5UXST.cjs → chunk-YHA6XAB3.cjs} +1 -1
  34. package/dist/pptx/{chunk-X2F6PA2D.mjs → chunk-YOGDIDPB.mjs} +22 -3
  35. package/dist/pptx/dom/index.cjs +235 -235
  36. package/dist/pptx/dom/index.mjs +6 -6
  37. package/dist/pptx/export/html2canvas-clone.cjs +2 -2
  38. package/dist/pptx/export/html2canvas-clone.mjs +1 -1
  39. package/dist/pptx/index.cjs +2993 -2989
  40. package/dist/pptx/index.mjs +4 -4
  41. package/dist/pptx/render/chart-combo-stock.cjs +3 -3
  42. package/dist/pptx/render/chart-combo-stock.mjs +1 -1
  43. package/dist/pptx/render/chart-manual-layout.d.ts +2 -20
  44. package/dist/pptx/render/chart-manual-layout.d.ts.map +1 -1
  45. package/dist/pptx/render/chart-overlays.cjs +7 -7
  46. package/dist/pptx/render/chart-overlays.mjs +1 -1
  47. package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
  48. package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
  49. package/dist/pptx/render/chart-svg-def-types.d.ts +6 -1
  50. package/dist/pptx/render/chart-svg-def-types.d.ts.map +1 -1
  51. package/dist/pptx/render/chart-view-model-dom-helpers.d.ts +1 -1
  52. package/dist/pptx/render/chart-view-model-dom-helpers.d.ts.map +1 -1
  53. package/dist/pptx/render/chart-view-model.cjs +41 -41
  54. package/dist/pptx/render/chart-view-model.mjs +1 -1
  55. package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
  56. package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
  57. package/dist/pptx/render/element-interaction.d.ts +1 -1
  58. package/dist/pptx/render/element-interaction.d.ts.map +1 -1
  59. package/dist/pptx/render/gradient-picker.d.ts.map +1 -1
  60. package/dist/pptx/render/index.d.ts +1 -0
  61. package/dist/pptx/render/index.d.ts.map +1 -1
  62. package/dist/pptx/render/path-gradient-rect.d.ts +1 -75
  63. package/dist/pptx/render/path-gradient-rect.d.ts.map +1 -1
  64. package/dist/pptx/render/rotate-handle-placement.d.ts +1 -27
  65. package/dist/pptx/render/rotate-handle-placement.d.ts.map +1 -1
  66. package/dist/pptx/render/rotation-drag.d.ts +1 -7
  67. package/dist/pptx/render/rotation-drag.d.ts.map +1 -1
  68. package/dist/teams/app/files-panel.d.ts +8 -3
  69. package/dist/teams/app/teams-app.d.ts +1 -0
  70. package/dist/teams/app/teams-settings.d.ts +6 -0
  71. package/dist/teams.js +3 -3
  72. package/dist/visio/render-fill.d.ts +2 -1
  73. package/dist/visio/render-svg.d.ts +2 -0
  74. package/dist/visio/ribbon-action.d.ts +8 -1
  75. package/dist/visio/ribbon-parts.d.ts +2 -1
  76. package/dist/visio/ribbon-router.d.ts +4 -2
  77. package/dist/visio/viewer-commands.d.ts +3 -3
  78. package/dist/visio/viewer-draw-tool.d.ts +16 -6
  79. package/dist/visio/viewer-handle-events.d.ts +19 -0
  80. package/dist/visio/viewer-line-endpoints.d.ts +14 -0
  81. package/dist/visio/viewer-rotation-handle.d.ts +14 -0
  82. package/dist/visio/viewer-rotation-preview.d.ts +7 -0
  83. package/dist/visio.js +734 -88
  84. package/dist/xlsx/chart-area-pane.d.ts +9 -0
  85. package/dist/xlsx/chart-fill-binding.d.ts +23 -0
  86. package/dist/xlsx/chart-gradient-preview.d.ts +8 -0
  87. package/dist/xlsx/chart-series-fill.d.ts +2 -1
  88. package/dist/xlsx/chart-series-gradient-type.d.ts +9 -0
  89. package/dist/xlsx/chart-series-gradient.d.ts +8 -0
  90. package/dist/xlsx/chart-series-pane.d.ts +2 -1
  91. package/dist/xlsx/chart-series-range-preview.d.ts +7 -0
  92. package/dist/xlsx/chart-series-transparency.d.ts +2 -1
  93. package/dist/xlsx/grid/measure.d.ts +5 -0
  94. package/dist/xlsx/grid/styles.d.ts +1 -1
  95. package/dist/xlsx.js +962 -102
  96. package/package.json +2 -2
@@ -0,0 +1,9 @@
1
+ import { type Command, type EditorContext } from 'ooxml-core/xlsx/ui';
2
+ export declare function chartAreaCommand(): Command;
3
+ /** Background targets share the series fill controls and all their native Office galleries. */
4
+ export declare function createChartAreaPane(ctx: EditorContext, onOpen: () => void): {
5
+ element: HTMLElement;
6
+ refresh: () => void;
7
+ relocalize: () => void;
8
+ close: () => void;
9
+ };
@@ -0,0 +1,23 @@
1
+ import { type ChartObject, type ChartViewModel, type ChartPatch, type Color, type ChartGradientEdit, type ChartFillPart } from 'ooxml-core/xlsx';
2
+ import type { DiagramFill } from 'ooxml-core/diagram';
3
+ import type { ChartGradientFill } from 'ooxml-core/chart';
4
+ /** UI target binding; every model edit and temporary model remains in core. */
5
+ export interface ChartFillBinding {
6
+ commandId: string;
7
+ key(): number | ChartFillPart;
8
+ fill(chart: ChartObject): DiagramFill | undefined;
9
+ gradient(view: ChartViewModel): ChartGradientFill | undefined;
10
+ paint(view: ChartViewModel): string | undefined;
11
+ rectangular(chart: ChartObject): boolean;
12
+ color(chart: ChartObject, color: Color | null): ChartPatch | undefined;
13
+ solid(chart: ChartObject): ChartPatch | undefined;
14
+ edit(chart: ChartObject, edit: ChartGradientEdit): {
15
+ patch: ChartPatch;
16
+ stopIndex: number;
17
+ } | undefined;
18
+ transparency(chart: ChartObject): number | undefined;
19
+ setTransparency(chart: ChartObject, value: number): ChartPatch | undefined;
20
+ preview(chart: ChartObject, patch: ChartPatch): ChartObject;
21
+ }
22
+ export declare function seriesFillBinding(selected: () => number): ChartFillBinding;
23
+ export declare function backgroundFillBinding(selected: () => ChartFillPart): ChartFillBinding;
@@ -0,0 +1,8 @@
1
+ import { type ChartGradientFill } from 'ooxml-core/chart';
2
+ import type { ChartFillPart } from 'ooxml-core/xlsx';
3
+ /** Preview a gesture in the rendered SVG; the workbook is edited once on release. */
4
+ export declare function createChartGradientPreview(root: ShadowRoot, drawing: number, series: number | ChartFillPart, gradient: ChartGradientFill): {
5
+ paint: (fill: ChartGradientFill) => void;
6
+ position(index: number, position: number): void;
7
+ restore(): void;
8
+ };
@@ -1,7 +1,8 @@
1
1
  import { type ChartObject, type ChartViewModel } from 'ooxml-core/xlsx';
2
2
  import { type EditorContext } from 'ooxml-core/xlsx/ui';
3
+ import { type ChartFillBinding } from './chart-fill-binding.js';
3
4
  /** Primary series fill controls reuse the ribbon's themed color picker and core paint edits. */
4
- export declare function createSeriesFill(ctx: EditorContext, selected: () => number): {
5
+ export declare function createSeriesFill(ctx: EditorContext, selected: () => number, binding?: ChartFillBinding): {
5
6
  element: HTMLDivElement;
6
7
  refresh: (chart: ChartObject | undefined, model: ChartViewModel | undefined) => void;
7
8
  };
@@ -0,0 +1,9 @@
1
+ import type { DiagramFill, DrawingGradientGeometryType } from 'ooxml-core/diagram';
2
+ import type { EditorContext } from 'ooxml-core/xlsx/ui';
3
+ /** A native type field that keeps unsupported imported types visible until explicitly changed. */
4
+ export declare function createGradientTypeField(ctx: EditorContext, onPick: (type: DrawingGradientGeometryType) => void): {
5
+ element: HTMLLabelElement;
6
+ refresh(fill: Extract<DiagramFill, {
7
+ kind: 'gradient';
8
+ }>, disabled: boolean, rectangularMarks?: boolean): void;
9
+ };
@@ -0,0 +1,8 @@
1
+ import { type ChartObject, type ChartViewModel } from 'ooxml-core/xlsx';
2
+ import { type ChartFillBinding } from './chart-fill-binding.js';
3
+ import { type EditorContext } from 'ooxml-core/xlsx/ui';
4
+ export declare function createSeriesGradient(ctx: EditorContext, selected: () => number, binding?: ChartFillBinding): {
5
+ element: HTMLDivElement;
6
+ refresh: (chart: ChartObject | undefined, view: ChartViewModel | undefined) => void;
7
+ create: () => void;
8
+ };
@@ -1,7 +1,8 @@
1
1
  import { type Command, type EditorContext } from 'ooxml-core/xlsx/ui';
2
2
  export declare function chartSeriesCommand(): Command;
3
- export declare function createChartSeriesPane(ctx: EditorContext): {
3
+ export declare function createChartSeriesPane(ctx: EditorContext, onOpen?: () => void): {
4
4
  element: HTMLElement;
5
5
  refresh: () => void;
6
6
  relocalize: () => void;
7
+ close: () => void;
7
8
  };
@@ -0,0 +1,7 @@
1
+ import { type ChartObject, type ChartViewModel } from 'ooxml-core/xlsx';
2
+ import type { EditorContext } from 'ooxml-core/xlsx/ui';
3
+ import type { createGradientStopTrack } from '../form/gradient-stop-track.js';
4
+ import type { ChartFillBinding } from './chart-fill-binding.js';
5
+ export type GradientParameter = 'position' | 'brightness' | 'transparency';
6
+ /** Core computes the temporary gradient; only UI paint changes until the range commits. */
7
+ export declare function seriesRangePreview(ctx: EditorContext, chart: ChartObject, view: ChartViewModel, series: ReturnType<ChartFillBinding['key']>, stop: number, drawing: number, track: ReturnType<typeof createGradientStopTrack>, color: HTMLButtonElement, valid: () => boolean, binding: ChartFillBinding): (property: GradientParameter, value: number | undefined) => void;
@@ -1,7 +1,8 @@
1
1
  import { type ChartObject } from 'ooxml-core/xlsx';
2
+ import { type ChartFillBinding } from './chart-fill-binding.js';
2
3
  import { type EditorContext } from 'ooxml-core/xlsx/ui';
3
4
  /** The shared native range input pairs with the existing validated percentage field. */
4
- export declare function createSeriesTransparency(ctx: EditorContext, selected: () => number): {
5
+ export declare function createSeriesTransparency(ctx: EditorContext, selected: () => number, binding?: ChartFillBinding): {
5
6
  element: HTMLDivElement;
6
7
  refresh: (chart: ChartObject | undefined) => void;
7
8
  };
@@ -4,6 +4,11 @@ export interface TextMeasurer {
4
4
  measure(text: string, font: string): number;
5
5
  /** Width at 100% zoom of `text` in a core font view (for `autoFitColumnWidth`). */
6
6
  measureFont(text: string, font: FontView): number;
7
+ /** Natural canvas font box for mixed-run baseline alignment. */
8
+ fontMetrics(font: string): {
9
+ ascent: number;
10
+ descent: number;
11
+ } | undefined;
7
12
  }
8
13
  export declare function estimateWidth(text: string, font: string): number;
9
14
  export declare function createTextMeasurer(doc: Document | undefined): TextMeasurer;
@@ -1 +1 @@
1
- export declare const GRID_CSS = "\n.xg-root [hidden]{display:none!important}\n.xg-root{position:relative;overflow:hidden;width:100%;height:100%;min-height:0;outline:none;\n\tbackground:var(--xve-sheet-bg,#fff);color:#000;font-family:\"Segoe UI\",system-ui,sans-serif;\n\t-webkit-user-select:none;user-select:none;contain:strict}\n.xg-scroller{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y}\n.xg-space{position:relative}\n.xg-view{position:sticky;left:0;top:0;overflow:hidden;cursor:cell;touch-action:pan-x pan-y}\n.xg-q,.xg-hbox{position:absolute;overflow:hidden}\n.xg-plane{position:absolute;left:0;top:0;will-change:transform}\n.xg-cells,.xg-lines,.xg-overlay,.xg-drawings{position:absolute;left:0;top:0}\n.xg-gl{position:absolute;background:var(--xve-grid-line,#e1e1e1)}\n.xg-c{position:absolute;box-sizing:border-box;overflow:visible}\n.xg-c[hidden],.xg-gl[hidden],.xg-hd[hidden]{display:none}\n.xg-c-over{z-index:1}\n.xg-t{position:absolute;top:0;bottom:0;display:flex;box-sizing:border-box;overflow:hidden;line-height:1.15}\n.xg-t.xg-wrap{white-space:pre-wrap;overflow-wrap:anywhere}\n.xg-t.xg-wrap>.xg-tx{display:block;width:100%}\n.xg-t.xg-vert{writing-mode:vertical-rl;text-orientation:upright}\n.xg-t.xg-over{background:var(--xve-sheet-bg,#fff)}\n.xg-c[style*=\"background-color\"]>.xg-t.xg-over,.xg-c-fill>.xg-t.xg-over{background:transparent}\n.xg-tx{display:inline-block;white-space:inherit}\n.xg-link{cursor:pointer}\n.xg-b{position:absolute;left:-1px;top:-1px;box-sizing:border-box;pointer-events:none}\n.xg-diag{position:absolute;left:0;top:0;pointer-events:none}\n.xg-db{position:absolute;left:2px;top:2px;bottom:2px;border:1px solid;box-sizing:border-box}\n.xg-ic{position:absolute;left:2px;top:50%;transform:translateY(-50%)}\n.xg-cm{position:absolute;right:0;top:0;width:0;height:0;border-left:6px solid transparent;border-top:6px solid #d13438;z-index:2}\n.xg-er{position:absolute;left:0;top:0;width:0;height:0;border-right:6px solid transparent;border-top:6px solid #107c41;z-index:2}\n.xg-overlay{pointer-events:none;z-index:3}\n.xg-shade{position:absolute;background:var(--xve-selection,rgba(33,115,70,.12))}\n.xg-outline{position:absolute;box-sizing:border-box;border:2px solid var(--xve-selection-border,#217346)}\n.xg-active{position:absolute;box-sizing:border-box;border:1px solid var(--xve-selection-border,#217346)}\n.xg-handle{position:absolute;box-sizing:border-box;background:var(--xve-selection-border,#217346);border:1px solid #fff;pointer-events:auto;cursor:crosshair}\n.xg-ants{position:absolute;box-sizing:border-box;--a:var(--xve-selection-border,#217346);\n\tbackground-image:linear-gradient(90deg,var(--a) 50%,transparent 50%),linear-gradient(90deg,var(--a) 50%,transparent 50%),linear-gradient(0deg,var(--a) 50%,transparent 50%),linear-gradient(0deg,var(--a) 50%,transparent 50%);\n\tbackground-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:8px 2px,8px 2px,2px 8px,2px 8px;\n\tbackground-position:0 0,0 100%,0 0,100% 0;animation:xg-ants .5s linear infinite}\n@keyframes xg-ants{to{background-position:8px 0,-8px 100%,0 -8px,100% 8px}}\n@media (prefers-reduced-motion:reduce){.xg-ants{animation:none}}\n.xg-fill-preview{position:absolute;box-sizing:border-box;border:1px dashed #666}\n.xg-refbox{position:absolute;box-sizing:border-box;border:2px solid}\n.xg-hbox{background:var(--xve-header-bg,#f3f3f3);z-index:4}\n.xg-hdr-plane{position:absolute;left:0;top:0;will-change:transform}\n.xg-hd{position:absolute;box-sizing:border-box;display:flex;align-items:center;justify-content:center;\n\tcolor:var(--xve-header-fg,#444);border-right:1px solid var(--xve-header-line,#d4d4d4);border-bottom:1px solid var(--xve-header-line,#d4d4d4);overflow:hidden;white-space:nowrap}\n.xg-hdr-col .xg-hd{top:0;height:100%}\n.xg-hdr-row .xg-hd{left:0;width:100%}\n.xg-hd-sel{background:var(--xve-header-active-bg,#e1e1e1);color:var(--xve-selection-border,#217346);font-weight:600}\n.xg-hdr-col .xg-hd-sel{box-shadow:inset 0 -2px 0 var(--xve-selection-border,#217346)}\n.xg-hdr-row .xg-hd-sel{box-shadow:inset -2px 0 0 var(--xve-selection-border,#217346)}\n.xg-hd-full{background:var(--xve-header-full-bg,#cde6d7);color:var(--xve-selection-border,#185c37);font-weight:600}\n.xg-hdr-col{cursor:s-resize}.xg-hdr-row{cursor:e-resize}\n.xg-hdr-col .xg-hd,.xg-hdr-row .xg-hd{cursor:inherit}\n.xg-corner{position:absolute;left:0;top:0;background:var(--xve-header-bg,#f3f3f3);z-index:5;box-sizing:border-box;\n\tborder-right:1px solid var(--xve-header-line,#d4d4d4);border-bottom:1px solid var(--xve-header-line,#d4d4d4);cursor:default}\n.xg-corner::after{content:\"\";position:absolute;right:3px;bottom:3px;border-left:9px solid transparent;border-bottom:9px solid #b4b4b4}\n.xg-freeze-h,.xg-freeze-v{position:absolute;background:var(--xve-freeze-line,#9b9b9b);z-index:6;pointer-events:none}\n.xg-col-resize{cursor:col-resize!important}.xg-row-resize{cursor:row-resize!important}\n.xg-resize-guide{position:absolute;z-index:8;border:0 dashed #666;pointer-events:none}\n.xg-editor-host{position:absolute;z-index:7;box-sizing:border-box;opacity:0;overflow:hidden;pointer-events:none;background:#fff;color:#000;line-height:1.25}\n.xg-editor-host.xg-editing{opacity:1;pointer-events:auto;overflow:visible;cursor:text;\n\tbox-shadow:0 0 0 2px var(--xve-selection-border,#217346),0 2px 6px rgba(0,0,0,.25)}\n.xg-editor-host .xg-field-backdrop,.xg-editor-host .xg-field-input{padding:1px 3px}\n.xg-sink{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;padding:0;border:0;resize:none;overflow:hidden;pointer-events:none}\n.xg-field{position:relative}\n.xg-field-backdrop,.xg-field-input{margin:0;border:0;box-sizing:border-box;font:inherit;line-height:inherit;letter-spacing:inherit;\n\tpadding:inherit;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;tab-size:4}\n.xg-field-backdrop{position:absolute;inset:0;overflow:hidden;color:inherit;pointer-events:none;visibility:hidden}\n.xg-field.xg-formula .xg-field-backdrop{visibility:visible}\n.xg-field-input{position:relative;display:block;width:100%;height:100%;resize:none;outline:none;background:transparent;color:inherit;overflow:hidden}\n.xg-field.xg-formula .xg-field-input{color:transparent;caret-color:#000}\n.xg-ref{font:inherit}\n.xg-editor-host .xg-field{width:100%;height:100%}\n.xg-dd{position:absolute;z-index:6;width:17px;height:17px;box-sizing:border-box;border:1px solid #c8c8c8;background:#f3f3f3;\n\tdisplay:flex;align-items:center;justify-content:center;cursor:default;pointer-events:auto}\n.xg-dd::before{content:\"\";border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #444}\n.xg-popup{position:absolute;z-index:20;background:var(--xve-popover,#fff);color:var(--xve-popover-foreground,#222);\n\tborder:1px solid var(--xve-border,#c8c8c8);box-shadow:0 4px 12px rgba(0,0,0,.18);font-size:13px;border-radius:4px}\n.xg-list{max-height:220px;overflow:auto;min-width:120px;padding:2px 0;margin:0;list-style:none}\n.xg-list [role=option]{padding:3px 10px;cursor:default;white-space:nowrap}\n.xg-list [aria-selected=true]{background:var(--xve-accent,#e1efe6)}\n.xg-tip{padding:6px 8px;max-width:260px;white-space:pre-wrap;background:#fffbe6;color:#222;pointer-events:none}\n.xg-tip b{display:block;margin-bottom:2px}\n.xg-alert{padding:12px 14px;max-width:340px}\n.xg-alert h3{margin:0 0 6px;font-size:14px}\n.xg-alert p{margin:0 0 10px;white-space:pre-wrap}\n.xg-alert .xg-actions{display:flex;gap:6px;justify-content:flex-end}\n.xg-alert button{min-width:64px;padding:4px 10px;border:1px solid var(--xve-border,#c8c8c8);border-radius:3px;background:var(--xve-secondary,#f3f3f3);color:inherit;font:inherit}\n.xg-alert button:first-child{background:var(--xve-selection-border,#217346);color:#fff;border-color:transparent}\n.xg-drawings{z-index:4}\n.xg-obj{position:absolute;box-sizing:border-box;pointer-events:auto;cursor:default}\n.xg-obj img,.xg-obj svg{display:block;width:100%;height:100%;pointer-events:none}\n.xg-chart svg [data-chart-series]{pointer-events:auto}\n.xg-obj.xg-chart{background:#fff;border:1px solid #d9d9d9}\n.xg-obj.xg-obj-sel{outline:1px solid #8a8a8a}\n.xg-obj .xg-grip{position:absolute;width:8px;height:8px;background:#fff;border:1px solid #555;box-sizing:border-box;border-radius:50%}\n.xg-obj-unsupported{background:repeating-linear-gradient(45deg,#f6f6f6,#f6f6f6 6px,#ececec 6px,#ececec 12px);border:1px dashed #aaa;\n\tfont-size:11px;color:#555;display:flex;align-items:center;justify-content:center;text-align:center}\n.xg-obj.xg-smartart{overflow:hidden}\n.xg-obj.xg-smartart office-ui-smartart{display:block;pointer-events:none}\n.xg-smartart-placeholder{background:#fafafa;border:1px dashed #aaa;font-size:11px;color:#333;padding:4px;overflow:auto}\n.xg-smartart-nodes{margin:0;padding-left:16px}\n.xg-smartart-nodes .xg-smartart-child{margin-left:12px}\n.xg-smartart-notice{display:none;position:absolute;left:0;bottom:0;padding:1px 4px;font-size:10px;background:rgba(255,255,255,.9);color:#555;border-top-right-radius:3px}\n.xg-obj-sel .xg-smartart-notice,.xg-smartart-placeholder .xg-smartart-notice{display:block}\n.xg-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n";
1
+ export declare const GRID_CSS = "\n.xg-root [hidden]{display:none!important}\n.xg-root{position:relative;overflow:hidden;width:100%;height:100%;min-height:0;outline:none;\n\tbackground:var(--xve-sheet-bg,#fff);color:#000;font-family:\"Segoe UI\",system-ui,sans-serif;\n\t-webkit-user-select:none;user-select:none;contain:strict}\n.xg-scroller{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y}\n.xg-space{position:relative}\n.xg-view{position:sticky;left:0;top:0;overflow:hidden;cursor:cell;touch-action:pan-x pan-y}\n.xg-q,.xg-hbox{position:absolute;overflow:hidden}\n.xg-plane{position:absolute;left:0;top:0;will-change:transform}\n.xg-cells,.xg-lines,.xg-overlay,.xg-drawings{position:absolute;left:0;top:0}\n.xg-gl{position:absolute;background:var(--xve-grid-line,#e1e1e1)}\n.xg-c{position:absolute;box-sizing:border-box;overflow:visible}\n.xg-c[hidden],.xg-gl[hidden],.xg-hd[hidden]{display:none}\n.xg-c-over{z-index:1}\n.xg-t{position:absolute;top:0;bottom:0;display:flex;box-sizing:border-box;overflow:hidden;line-height:1.15}\n.xg-t.xg-wrap{white-space:pre-wrap;overflow-wrap:anywhere}\n.xg-t.xg-wrap>.xg-tx{display:block;width:100%}\n.xg-t.xg-vert{writing-mode:vertical-rl;text-orientation:upright}\n.xg-t.xg-over{background:var(--xve-sheet-bg,#fff)}\n.xg-c[style*=\"background-color\"]>.xg-t.xg-over,.xg-c-fill>.xg-t.xg-over{background:transparent}\n.xg-tx{display:inline-block;white-space:inherit}\n.xg-link{cursor:pointer}\n.xg-b{position:absolute;left:-1px;top:-1px;box-sizing:border-box;pointer-events:none}\n.xg-diag{position:absolute;left:0;top:0;pointer-events:none}\n.xg-db{position:absolute;left:2px;top:2px;bottom:2px;border:1px solid;box-sizing:border-box}\n.xg-ic{position:absolute;left:2px;top:50%;transform:translateY(-50%)}\n.xg-cm{position:absolute;right:0;top:0;width:0;height:0;border-left:6px solid transparent;border-top:6px solid #d13438;z-index:2}\n.xg-er{position:absolute;left:0;top:0;width:0;height:0;border-right:6px solid transparent;border-top:6px solid #107c41;z-index:2}\n.xg-overlay{pointer-events:none;z-index:3}\n.xg-shade{position:absolute;background:var(--xve-selection,rgba(33,115,70,.12))}\n.xg-outline{position:absolute;box-sizing:border-box;border:2px solid var(--xve-selection-border,#217346)}\n.xg-active{position:absolute;box-sizing:border-box;border:1px solid var(--xve-selection-border,#217346)}\n.xg-handle{position:absolute;box-sizing:border-box;background:var(--xve-selection-border,#217346);border:1px solid #fff;pointer-events:auto;cursor:crosshair}\n.xg-ants{position:absolute;box-sizing:border-box;--a:var(--xve-selection-border,#217346);\n\tbackground-image:linear-gradient(90deg,var(--a) 50%,transparent 50%),linear-gradient(90deg,var(--a) 50%,transparent 50%),linear-gradient(0deg,var(--a) 50%,transparent 50%),linear-gradient(0deg,var(--a) 50%,transparent 50%);\n\tbackground-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:8px 2px,8px 2px,2px 8px,2px 8px;\n\tbackground-position:0 0,0 100%,0 0,100% 0;animation:xg-ants .5s linear infinite}\n@keyframes xg-ants{to{background-position:8px 0,-8px 100%,0 -8px,100% 8px}}\n@media (prefers-reduced-motion:reduce){.xg-ants{animation:none}}\n.xg-fill-preview{position:absolute;box-sizing:border-box;border:1px dashed #666}\n.xg-refbox{position:absolute;box-sizing:border-box;border:2px solid}\n.xg-hbox{background:var(--xve-header-bg,#f3f3f3);z-index:4}\n.xg-hdr-plane{position:absolute;left:0;top:0;will-change:transform}\n.xg-hd{position:absolute;box-sizing:border-box;display:flex;align-items:center;justify-content:center;\n\tcolor:var(--xve-header-fg,#444);border-right:1px solid var(--xve-header-line,#d4d4d4);border-bottom:1px solid var(--xve-header-line,#d4d4d4);overflow:hidden;white-space:nowrap}\n.xg-hdr-col .xg-hd{top:0;height:100%}\n.xg-hdr-row .xg-hd{left:0;width:100%}\n.xg-hd-sel{background:var(--xve-header-active-bg,#e1e1e1);color:var(--xve-selection-border,#217346);font-weight:600}\n.xg-hdr-col .xg-hd-sel{box-shadow:inset 0 -2px 0 var(--xve-selection-border,#217346)}\n.xg-hdr-row .xg-hd-sel{box-shadow:inset -2px 0 0 var(--xve-selection-border,#217346)}\n.xg-hd-full{background:var(--xve-header-full-bg,#cde6d7);color:var(--xve-selection-border,#185c37);font-weight:600}\n.xg-hdr-col{cursor:s-resize}.xg-hdr-row{cursor:e-resize}\n.xg-hdr-col .xg-hd,.xg-hdr-row .xg-hd{cursor:inherit}\n.xg-corner{position:absolute;left:0;top:0;background:var(--xve-header-bg,#f3f3f3);z-index:5;box-sizing:border-box;\n\tborder-right:1px solid var(--xve-header-line,#d4d4d4);border-bottom:1px solid var(--xve-header-line,#d4d4d4);cursor:default}\n.xg-corner::after{content:\"\";position:absolute;right:3px;bottom:3px;border-left:9px solid transparent;border-bottom:9px solid #b4b4b4}\n.xg-freeze-h,.xg-freeze-v{position:absolute;background:var(--xve-freeze-line,#9b9b9b);z-index:6;pointer-events:none}\n.xg-col-resize{cursor:col-resize!important}.xg-row-resize{cursor:row-resize!important}\n.xg-resize-guide{position:absolute;z-index:8;border:0 dashed #666;pointer-events:none}\n.xg-editor-host{position:absolute;z-index:7;box-sizing:border-box;opacity:0;overflow:hidden;pointer-events:none;background:#fff;color:#000;line-height:1.25}\n.xg-editor-host.xg-editing{opacity:1;pointer-events:auto;overflow:visible;cursor:text;\n\tbox-shadow:0 0 0 2px var(--xve-selection-border,#217346),0 2px 6px rgba(0,0,0,.25)}\n.xg-editor-host .xg-field-backdrop,.xg-editor-host .xg-field-input{padding:1px 3px}\n.xg-sink{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;padding:0;border:0;resize:none;overflow:hidden;pointer-events:none}\n.xg-field{position:relative}\n.xg-field-backdrop,.xg-field-input{margin:0;border:0;box-sizing:border-box;font:inherit;line-height:inherit;letter-spacing:inherit;\n\tpadding:inherit;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;tab-size:4}\n.xg-field-backdrop{position:absolute;inset:0;overflow:hidden;color:inherit;pointer-events:none;visibility:hidden}\n.xg-field.xg-formula .xg-field-backdrop{visibility:visible}\n.xg-field-input{position:relative;display:block;width:100%;height:100%;resize:none;outline:none;background:transparent;color:inherit;overflow:hidden}\n.xg-field.xg-formula .xg-field-input{color:transparent;caret-color:#000}\n.xg-ref{font:inherit}\n.xg-editor-host .xg-field{width:100%;height:100%}\n.xg-dd{position:absolute;z-index:6;width:17px;height:17px;box-sizing:border-box;border:1px solid #c8c8c8;background:#f3f3f3;\n\tdisplay:flex;align-items:center;justify-content:center;cursor:default;pointer-events:auto}\n.xg-dd::before{content:\"\";border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #444}\n.xg-popup{position:absolute;z-index:20;background:var(--xve-popover,#fff);color:var(--xve-popover-foreground,#222);\n\tborder:1px solid var(--xve-border,#c8c8c8);box-shadow:0 4px 12px rgba(0,0,0,.18);font-size:13px;border-radius:4px}\n.xg-list{max-height:220px;overflow:auto;min-width:120px;padding:2px 0;margin:0;list-style:none}\n.xg-list [role=option]{padding:3px 10px;cursor:default;white-space:nowrap}\n.xg-list [aria-selected=true]{background:var(--xve-accent,#e1efe6)}\n.xg-tip{padding:6px 8px;max-width:260px;white-space:pre-wrap;background:#fffbe6;color:#222;pointer-events:none}\n.xg-tip b{display:block;margin-bottom:2px}\n.xg-alert{padding:12px 14px;max-width:340px}\n.xg-alert h3{margin:0 0 6px;font-size:14px}\n.xg-alert p{margin:0 0 10px;white-space:pre-wrap}\n.xg-alert .xg-actions{display:flex;gap:6px;justify-content:flex-end}\n.xg-alert button{min-width:64px;padding:4px 10px;border:1px solid var(--xve-border,#c8c8c8);border-radius:3px;background:var(--xve-secondary,#f3f3f3);color:inherit;font:inherit}\n.xg-alert button:first-child{background:var(--xve-selection-border,#217346);color:#fff;border-color:transparent}\n.xg-drawings{z-index:4}\n.xg-obj{position:absolute;box-sizing:border-box;pointer-events:auto;cursor:default}\n.xg-obj img,.xg-obj svg{display:block;width:100%;height:100%;pointer-events:none}\n.xg-chart svg [data-chart-series],.xg-chart svg [data-chart-part]{pointer-events:auto}\n.xg-obj.xg-chart{background:#fff;outline:1px solid #d9d9d9;outline-offset:-1px}\n.xg-obj.xg-obj-sel{outline:1px solid #8a8a8a;outline-offset:0}\n.xg-obj .xg-grip{position:absolute;width:8px;height:8px;background:#fff;border:1px solid #555;box-sizing:border-box;border-radius:50%}\n.xg-obj-unsupported{background:repeating-linear-gradient(45deg,#f6f6f6,#f6f6f6 6px,#ececec 6px,#ececec 12px);border:1px dashed #aaa;\n\tfont-size:11px;color:#555;display:flex;align-items:center;justify-content:center;text-align:center}\n.xg-obj.xg-smartart{overflow:hidden}\n.xg-obj.xg-smartart office-ui-smartart{display:block;pointer-events:none}\n.xg-smartart-placeholder{background:#fafafa;border:1px dashed #aaa;font-size:11px;color:#333;padding:4px;overflow:auto}\n.xg-smartart-nodes{margin:0;padding-left:16px}\n.xg-smartart-nodes .xg-smartart-child{margin-left:12px}\n.xg-smartart-notice{display:none;position:absolute;left:0;bottom:0;padding:1px 4px;font-size:10px;background:rgba(255,255,255,.9);color:#555;border-top-right-radius:3px}\n.xg-obj-sel .xg-smartart-notice,.xg-smartart-placeholder .xg-smartart-notice{display:block}\n.xg-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n";