ooxml-ui 1.18.3 → 1.20.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 (166) hide show
  1. package/README.md +96 -39
  2. package/custom-elements.json +13 -2
  3. package/dist/building-block-styles.d.ts +5 -0
  4. package/dist/building-block-styles.d.ts.map +1 -0
  5. package/dist/{chunk-MSXUCINT.js → chunk-4XPAPETH.js} +4 -4
  6. package/dist/{chunk-SVRIVUWC.js → chunk-C7B7TJ2J.js} +1 -1
  7. package/dist/{chunk-ANPFMQ6E.js → chunk-QBXYGKPB.js} +1 -1
  8. package/dist/{chunk-CWBSXK7P.js → chunk-QLHCGV4C.js} +1 -1
  9. package/dist/chunk-T5ARELU2.js +299 -0
  10. package/dist/{chunk-SPRZIHUH.js → chunk-TJ245GDD.js} +37 -24
  11. package/dist/{chunk-EVL7GFC7.js → chunk-UB36NYDT.js} +5 -5
  12. package/dist/{chunk-LD3K2RDN.js → chunk-XL77FR4B.js} +2 -0
  13. package/dist/{chunk-KNC2UEUR.js → chunk-YZH2QS7J.js} +1 -1
  14. package/dist/controls.d.ts +1 -1
  15. package/dist/controls.d.ts.map +1 -1
  16. package/dist/controls.js +4 -4
  17. package/dist/docx/building-blocks.d.ts +31 -0
  18. package/dist/docx/collaboration-room.d.ts +46 -0
  19. package/dist/docx/collaboration-session.d.ts +2 -0
  20. package/dist/docx/collaboration-types.d.ts +13 -0
  21. package/dist/docx/component.d.ts +14 -1
  22. package/dist/docx/editor-core.d.ts +6 -0
  23. package/dist/docx/element-api.d.ts +11 -0
  24. package/dist/docx/events.d.ts +4 -1
  25. package/dist/docx/field-update.d.ts +8 -4
  26. package/dist/docx/form-field-view.d.ts +3 -0
  27. package/dist/docx/index.d.ts +2 -0
  28. package/dist/docx/ribbon-popover.d.ts +5 -4
  29. package/dist/docx/styles/index.d.ts +0 -4
  30. package/dist/docx/table-model-adapter.d.ts +2 -0
  31. package/dist/docx.js +18866 -18192
  32. package/dist/form/color-grid.d.ts +21 -2
  33. package/dist/form/color-grid.d.ts.map +1 -1
  34. package/dist/index.js +9 -9
  35. package/dist/pptx/chunk-3ESFHUZI.cjs +1016 -0
  36. package/dist/pptx/{chunk-S2Y3VUNC.cjs → chunk-ABDWUQRQ.cjs} +2230 -1726
  37. package/dist/pptx/{chunk-AUCJIB3M.mjs → chunk-F6P7VS5I.mjs} +2191 -1709
  38. package/dist/pptx/chunk-MK2ASJSY.mjs +991 -0
  39. package/dist/pptx/dom/elements/text-warp.d.ts.map +1 -1
  40. package/dist/pptx/dom/index.cjs +217 -216
  41. package/dist/pptx/dom/index.mjs +16 -15
  42. package/dist/pptx/index.cjs +2976 -2880
  43. package/dist/pptx/index.mjs +2 -2
  44. package/dist/pptx/render/collaboration-options.d.ts +29 -0
  45. package/dist/pptx/render/collaboration-options.d.ts.map +1 -0
  46. package/dist/pptx/render/embedded-font-bytes.d.ts +27 -0
  47. package/dist/pptx/render/embedded-font-bytes.d.ts.map +1 -0
  48. package/dist/pptx/render/embedded-font-trust.d.ts +48 -0
  49. package/dist/pptx/render/embedded-font-trust.d.ts.map +1 -0
  50. package/dist/pptx/render/embedded-fonts.d.ts +8 -18
  51. package/dist/pptx/render/embedded-fonts.d.ts.map +1 -1
  52. package/dist/pptx/render/font-weight-names.d.ts +66 -0
  53. package/dist/pptx/render/font-weight-names.d.ts.map +1 -0
  54. package/dist/pptx/render/google-webfonts.d.ts +9 -4
  55. package/dist/pptx/render/google-webfonts.d.ts.map +1 -1
  56. package/dist/pptx/render/index.d.ts +3 -0
  57. package/dist/pptx/render/index.d.ts.map +1 -1
  58. package/dist/pptx/render/morph-animation.d.ts +5 -1
  59. package/dist/pptx/render/morph-animation.d.ts.map +1 -1
  60. package/dist/pptx/render/morph-image-alpha.d.ts +49 -0
  61. package/dist/pptx/render/morph-image-alpha.d.ts.map +1 -0
  62. package/dist/pptx/render/morph-predicates.d.ts.map +1 -1
  63. package/dist/pptx/render/paragraph-bullet-marker-style.d.ts.map +1 -1
  64. package/dist/pptx/render/ribbon-galleries/gallery-placements.d.ts +2 -0
  65. package/dist/pptx/render/ribbon-galleries/gallery-placements.d.ts.map +1 -1
  66. package/dist/pptx/render/ribbon-galleries/gallery-registry.d.ts.map +1 -1
  67. package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts +3 -1
  68. package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts.map +1 -1
  69. package/dist/pptx/render/ribbon-galleries/index.d.ts +1 -0
  70. package/dist/pptx/render/ribbon-galleries/index.d.ts.map +1 -1
  71. package/dist/pptx/render/ribbon-galleries/text-warp-gallery.d.ts +19 -0
  72. package/dist/pptx/render/ribbon-galleries/text-warp-gallery.d.ts.map +1 -0
  73. package/dist/pptx/render/ribbon-help-commands.d.ts +13 -0
  74. package/dist/pptx/render/ribbon-help-commands.d.ts.map +1 -1
  75. package/dist/pptx/render/ribbon-record-commands.d.ts +4 -1
  76. package/dist/pptx/render/ribbon-record-commands.d.ts.map +1 -1
  77. package/dist/pptx/render/ribbon-slide-show-commands.d.ts +6 -0
  78. package/dist/pptx/render/ribbon-slide-show-commands.d.ts.map +1 -1
  79. package/dist/pptx/render/slide-transition-css.d.ts.map +1 -1
  80. package/dist/pptx/render/table-cell-css.d.ts +12 -0
  81. package/dist/pptx/render/table-cell-css.d.ts.map +1 -1
  82. package/dist/pptx/render/table-style.d.ts +10 -1
  83. package/dist/pptx/render/table-style.d.ts.map +1 -1
  84. package/dist/pptx/render/text-block-style.d.ts.map +1 -1
  85. package/dist/pptx/render/text-east-asian-breaks.d.ts.map +1 -1
  86. package/dist/pptx/render/text-metric-tracking.d.ts.map +1 -1
  87. package/dist/pptx/render/text-run-gradient-span.d.ts.map +1 -1
  88. package/dist/pptx/render/text-run-style.d.ts.map +1 -1
  89. package/dist/pptx/render/text-tab-layout.d.ts.map +1 -1
  90. package/dist/pptx/render/text-warp-envelope-measure.d.ts.map +1 -1
  91. package/dist/pptx/render/text-warp-outline-font-cache.d.ts +2 -1
  92. package/dist/pptx/render/text-warp-outline-font-cache.d.ts.map +1 -1
  93. package/dist/pptx/render/text-warp-outline-webfont-fetch.d.ts.map +1 -1
  94. package/dist/pptx/render/theme-color-grid.d.ts +20 -0
  95. package/dist/pptx/render/theme-color-grid.d.ts.map +1 -0
  96. package/dist/pptx/render/used-fonts.d.ts.map +1 -1
  97. package/dist/pptx/theme/index.cjs +24 -16
  98. package/dist/pptx/theme/index.d.ts +1 -0
  99. package/dist/pptx/theme/index.d.ts.map +1 -1
  100. package/dist/pptx/theme/index.mjs +1 -1
  101. package/dist/pptx/theme/office-css.d.ts +6 -0
  102. package/dist/pptx/theme/office-css.d.ts.map +1 -0
  103. package/dist/pptx/types.d.ts +5 -1
  104. package/dist/pptx/types.d.ts.map +1 -1
  105. package/dist/pptx/web-components/chart-format-pane-styles.d.ts +1 -1
  106. package/dist/pptx/web-components/chart-format-pane-styles.d.ts.map +1 -1
  107. package/dist/pptx/web-components/control-styles.d.ts.map +1 -1
  108. package/dist/pptx/web-components/index.d.ts +1 -0
  109. package/dist/pptx/web-components/index.d.ts.map +1 -1
  110. package/dist/pptx/web-components/mobile-bar-styles.d.ts +2 -2
  111. package/dist/pptx/web-components/mobile-bar-styles.d.ts.map +1 -1
  112. package/dist/pptx/web-components/mobile-insert-styles.d.ts +1 -1
  113. package/dist/pptx/web-components/mobile-insert-styles.d.ts.map +1 -1
  114. package/dist/pptx/web-components/notes-toolbar-styles.d.ts +1 -1
  115. package/dist/pptx/web-components/notes-toolbar-styles.d.ts.map +1 -1
  116. package/dist/pptx/web-components/office-aliases.d.ts +9 -0
  117. package/dist/pptx/web-components/office-aliases.d.ts.map +1 -1
  118. package/dist/pptx/web-components/office-token-bridge.d.ts +1 -1
  119. package/dist/pptx/web-components/office-token-bridge.d.ts.map +1 -1
  120. package/dist/pptx/web-components/ribbon-gallery.d.ts +1 -0
  121. package/dist/pptx/web-components/ribbon-gallery.d.ts.map +1 -1
  122. package/dist/pptx/web-components/subtitle-settings-styles.d.ts +1 -1
  123. package/dist/pptx/web-components/subtitle-settings-styles.d.ts.map +1 -1
  124. package/dist/pptx/web-components/theme-editor-styles.d.ts +1 -1
  125. package/dist/pptx/web-components/theme-editor-styles.d.ts.map +1 -1
  126. package/dist/presence.js +3 -3
  127. package/dist/ribbon/gallery.d.ts +4 -2
  128. package/dist/ribbon/gallery.d.ts.map +1 -1
  129. package/dist/smartart.js +3 -3
  130. package/dist/teams.js +6 -6
  131. package/dist/theme-bridge.d.ts +28 -0
  132. package/dist/theme-bridge.d.ts.map +1 -0
  133. package/dist/theme.d.ts +10 -3
  134. package/dist/theme.d.ts.map +1 -0
  135. package/dist/theme.js +2 -2
  136. package/dist/tokens.d.ts +1 -0
  137. package/dist/tokens.d.ts.map +1 -1
  138. package/dist/visio/building-blocks.d.ts +37 -0
  139. package/dist/visio/collaboration-types.d.ts +3 -0
  140. package/dist/visio/controller.d.ts +6 -0
  141. package/dist/visio/index.d.ts +2 -0
  142. package/dist/visio/styles/theme.d.ts +1 -1
  143. package/dist/visio/styles.d.ts +1 -1
  144. package/dist/visio/viewer-element.d.ts +15 -0
  145. package/dist/visio/viewer-share-sync.d.ts +23 -0
  146. package/dist/visio/viewer-share.d.ts +20 -6
  147. package/dist/visio.js +8030 -7776
  148. package/dist/xlsx/building-blocks.d.ts +55 -0
  149. package/dist/xlsx/collaboration-types.d.ts +7 -35
  150. package/dist/xlsx/component.d.ts +3 -1
  151. package/dist/xlsx/dialogs/styles.d.ts +1 -1
  152. package/dist/xlsx/editor-core.d.ts +1 -0
  153. package/dist/xlsx/element-api.d.ts +6 -0
  154. package/dist/xlsx/formula-bar/styles.d.ts +1 -1
  155. package/dist/xlsx/grid/page-break-layer.d.ts +1 -1
  156. package/dist/xlsx/grid/styles.d.ts +1 -1
  157. package/dist/xlsx/index.d.ts +1 -0
  158. package/dist/xlsx/page-views/page-layout-css.d.ts +1 -1
  159. package/dist/xlsx/sheet-tabs/styles.d.ts +1 -1
  160. package/dist/xlsx/surface-shell.d.ts +3 -0
  161. package/dist/xlsx/theme/styles.d.ts +1 -4
  162. package/dist/xlsx.js +425 -326
  163. package/package.json +3 -3
  164. package/dist/chunk-7E3HU7RL.js +0 -123
  165. package/dist/pptx/chunk-BDXQX6RA.cjs +0 -373
  166. package/dist/pptx/chunk-ZAOD6O2D.mjs +0 -357
@@ -0,0 +1,299 @@
1
+ import { OFFICE_TOKENS, TOUCH } from './chunk-XL77FR4B.js';
2
+
3
+ // src/theme-bridge.ts
4
+ var LEGACY_OFFICE_THEME_TOKENS = {
5
+ background: "--office-background",
6
+ foreground: "--office-foreground",
7
+ card: "--office-surface",
8
+ "card-foreground": "--office-foreground",
9
+ popover: "--office-popover",
10
+ "popover-foreground": "--office-popover-foreground",
11
+ primary: "--office-accent",
12
+ "primary-foreground": "--office-accent-foreground",
13
+ secondary: "--office-surface",
14
+ "secondary-foreground": "--office-foreground",
15
+ muted: "--office-surface",
16
+ "muted-foreground": "--office-muted-foreground",
17
+ accent: "--office-selected",
18
+ "accent-foreground": "--office-foreground",
19
+ destructive: "--office-danger",
20
+ "destructive-foreground": "--office-danger-foreground",
21
+ border: "--office-border",
22
+ input: "--office-border",
23
+ ring: "--office-ring",
24
+ radius: "--office-radius",
25
+ font: "--office-font"
26
+ };
27
+ function legacyThemeAliases(selector, prefix, privatePrefix) {
28
+ return `${selector} {
29
+ ${Object.entries(LEGACY_OFFICE_THEME_TOKENS).map(
30
+ ([name, canonical]) => `${privatePrefix}${name}: var(${prefix}${name}, var(${canonical}, ${OFFICE_TOKENS[canonical]}));`
31
+ ).join("\n")}
32
+ }`;
33
+ }
34
+ function legacyThemeBridge(selector, privatePrefix) {
35
+ return shadcnBridge(selector, privatePrefix, {
36
+ extra: {
37
+ "--office-font": `var(${privatePrefix}font)`,
38
+ "--office-radius": `var(${privatePrefix}radius)`
39
+ }
40
+ });
41
+ }
42
+ var SHADCN_NAMES = [
43
+ "foreground",
44
+ "muted-foreground",
45
+ "background",
46
+ "card",
47
+ "accent",
48
+ "border",
49
+ "primary",
50
+ "primary-foreground",
51
+ "ring",
52
+ "popover",
53
+ "popover-foreground",
54
+ "destructive",
55
+ "destructive-foreground"
56
+ ].map((name) => {
57
+ const token = LEGACY_OFFICE_THEME_TOKENS[name];
58
+ return name === "popover-foreground" ? [token, name, "foreground"] : [token, name];
59
+ });
60
+ var reads = (value2) => [...value2.matchAll(/var\((--office-[\w-]+)/g)].map((m) => m[1]);
61
+ function derivedTokens(bridged) {
62
+ const derived = /* @__PURE__ */ new Map();
63
+ let grew = true;
64
+ while (grew) {
65
+ grew = false;
66
+ for (const [name, value2] of Object.entries(OFFICE_TOKENS)) {
67
+ if (bridged.has(name) || derived.has(name)) continue;
68
+ if (reads(value2).some((token) => bridged.has(token) || derived.has(token))) {
69
+ derived.set(name, value2);
70
+ grew = true;
71
+ }
72
+ }
73
+ }
74
+ return [...derived];
75
+ }
76
+ function themeBridge(selector, map) {
77
+ const mapped = Object.entries(map).filter((entry) => !!entry[1]);
78
+ const lines = [...mapped, ...derivedTokens(new Set(mapped.map(([name]) => name)))].map(
79
+ ([name, value2]) => ` ${name}: ${value2};`
80
+ );
81
+ return `${selector} {
82
+ ${lines.join("\n")}
83
+ }
84
+ `;
85
+ }
86
+ function shadcnBridge(selector, prefix, options = {}) {
87
+ const map = {};
88
+ for (const [token, name, fallbackName] of SHADCN_NAMES) {
89
+ const fallback = options.fallbacks?.[name];
90
+ const inner = fallbackName ? `var(${prefix}${fallbackName})` : fallback;
91
+ map[token] = `var(${prefix}${name}${inner ? `, ${inner}` : ""})`;
92
+ }
93
+ return themeBridge(selector, { ...map, ...options.extra });
94
+ }
95
+
96
+ // src/building-block-styles.ts
97
+ var value = (name) => `var(${name}, ${OFFICE_TOKENS[name]})`;
98
+ var palette = {
99
+ foreground: "--office-foreground",
100
+ background: "--office-background",
101
+ surface: "--office-surface",
102
+ border: "--office-border",
103
+ accent: "--office-accent",
104
+ selected: "--office-selected",
105
+ ring: "--office-ring",
106
+ font: "--office-font",
107
+ radius: "--office-radius"
108
+ };
109
+ function productAliases(product) {
110
+ const names = product === "visio" ? {
111
+ foreground: "ink",
112
+ background: "surface",
113
+ surface: "surface",
114
+ border: "border",
115
+ accent: "accent",
116
+ selected: "accent-soft",
117
+ ring: "focus",
118
+ font: "font",
119
+ radius: "radius"
120
+ } : {
121
+ foreground: "foreground",
122
+ background: "background",
123
+ surface: "card",
124
+ border: "border",
125
+ accent: "primary",
126
+ selected: "accent",
127
+ ring: "ring",
128
+ font: "font",
129
+ radius: "radius"
130
+ };
131
+ const prefix = { docx: "--dve-", xlsx: "--xve-", visio: "--vv-", pptx: "--pptx-" }[product];
132
+ return `:where([data-office-block][data-office-product="${product}"]) {
133
+ ${Object.entries(palette).map(
134
+ ([key, token]) => `--_office-block-${key}: var(${prefix}${names[key]}, ${value(token)});`
135
+ ).join("\n")}
136
+ }`;
137
+ }
138
+ var BUILDING_BLOCKS_CSS = `
139
+ :where([data-office-block]) {
140
+ ${Object.entries(palette).map(([key, token]) => `--_office-block-${key}: ${value(token)};`).join("\n")}
141
+ box-sizing: border-box;
142
+ color: var(--_office-block-foreground);
143
+ background: var(--_office-block-surface);
144
+ font-family: var(--_office-block-font);
145
+ font-size: ${value("--office-font-size")};
146
+ line-height: ${value("--office-line-height")};
147
+ }
148
+ ${["docx", "xlsx", "visio", "pptx"].map(productAliases).join("\n")}
149
+ :where([data-office-block="toolbar"], [data-office-block="formula-bar"], [data-office-block="tabs"]:not(select)) {
150
+ display: flex;
151
+ flex-wrap: wrap;
152
+ align-items: center;
153
+ gap: ${value("--office-space-1")};
154
+ padding: ${value("--office-space-1")};
155
+ border: ${value("--office-border-width")} solid var(--_office-block-border);
156
+ border-radius: var(--_office-block-radius);
157
+ }
158
+ :where([data-office-block] button, [data-office-block] input, [data-office-block] select,
159
+ button[data-office-block], input[data-office-block], select[data-office-block]) {
160
+ box-sizing: border-box;
161
+ font-family: var(--_office-block-font);
162
+ font-size: ${value("--office-font-size")};
163
+ line-height: ${value("--office-line-height")};
164
+ color: var(--_office-block-foreground);
165
+ background: var(--_office-block-background);
166
+ border: ${value("--office-border-width")} solid var(--_office-block-border);
167
+ border-radius: var(--_office-block-radius);
168
+ min-height: ${value("--office-target-size")};
169
+ padding: ${value("--office-space-1")} ${value("--office-space-2")};
170
+ }
171
+ :where([data-office-block] button, button[data-office-block]) { cursor: pointer; }
172
+ :where([data-office-block] button:hover:not(:disabled)) { background: var(--_office-block-selected); }
173
+ :where([data-office-block] [aria-pressed="true"], [data-office-block] [aria-pressed="mixed"],
174
+ [data-office-block] [aria-selected="true"]) {
175
+ background: var(--_office-block-selected);
176
+ border-color: var(--_office-block-accent);
177
+ }
178
+ :where([data-office-block] :focus-visible, [data-office-block]:focus-visible) {
179
+ outline: ${value("--office-focus-width")} solid var(--_office-block-ring);
180
+ outline-offset: ${value("--office-focus-offset")};
181
+ }
182
+ :where([data-office-block] :disabled, [data-office-block]:disabled) { opacity: .55; cursor: default; }
183
+ :where([data-office-block] [aria-invalid="true"]) { border-color: ${value("--office-danger")}; }
184
+ :where([data-office-block="formula-bar"] input:last-child) { flex: 1; min-width: 8em; }
185
+ :where([data-office-block="inspector"]) { padding: ${value("--office-space-2")}; }
186
+ :where([data-office-block="inspector"] dl) { display: grid; grid-template-columns: auto 1fr; gap: ${value("--office-space-1")}; }
187
+ :where([data-office-block="inspector"] dt) { font-weight: ${value("--office-font-weight-bold")}; }
188
+ :where([data-office-block="inspector"] dd) { margin: 0; overflow-wrap: anywhere; }
189
+ :where([data-office-block="inspector"] a) { color: var(--_office-block-accent); }
190
+ `;
191
+
192
+ // src/theme.ts
193
+ var THEME_STYLE_ID = "office-ui-theme";
194
+ var DARK = `
195
+ --office-foreground: #f9fafb;
196
+ --office-muted-foreground: #9ca3af;
197
+ --office-background: #111827;
198
+ --office-surface: #1f2937;
199
+ --office-border: #374151;
200
+ --office-accent: #6366f1;
201
+ --office-ring: #818cf8;
202
+ --office-danger: #f87171;
203
+ --office-selected: #374151;
204
+ --office-notice-background: rgb(120 53 15 / 20%);
205
+ --office-notice-foreground: #fde68a;
206
+ --office-notice-accent: #fbbf24;
207
+ --office-info: #60a5fa;
208
+ --office-warning: #f59e0b;
209
+ --office-teams-brand: #7f85f5;
210
+ --office-teams-brand-hover: #96a0ff;
211
+ --office-teams-brand-subtle: #2f2f4a;
212
+ --office-teams-rail: #141414;
213
+ --office-teams-panel: #1f1f1f;
214
+ --office-teams-bubble: #2d2d2d;
215
+ --office-teams-bubble-own: #2f2f4a;
216
+ --office-teams-divider: #3d3d3d;
217
+ --office-teams-text-subtle: #adadad;
218
+ --office-shadow: 0 6px 20px rgb(0 0 0 / 45%);
219
+ --office-shadow-lg: 0 10px 25px rgb(0 0 0 / 45%);`;
220
+ var LIGHT = Object.entries(OFFICE_TOKENS).map(([name, value2]) => ` ${name}: ${value2};`).join("\n");
221
+ var darkEntries = [...DARK.matchAll(/(--office-[\w-]+): ([^;]+);/g)].map(
222
+ (match) => [match[1], match[2]]
223
+ );
224
+ var lightPalette = Object.fromEntries(
225
+ darkEntries.map(([name]) => [name, OFFICE_TOKENS[name]])
226
+ );
227
+ var darkPalette = Object.fromEntries(darkEntries);
228
+ var modeCss = (selector, dark) => themeBridge(selector, {
229
+ ...lightPalette,
230
+ ...dark ? darkPalette : {},
231
+ "--office-accent-foreground": OFFICE_TOKENS["--office-accent-foreground"]
232
+ }) + `${selector} { color-scheme: ${dark ? "dark" : "light"}; }`;
233
+ var THEME_CSS = `
234
+ :where(:root) {
235
+ ${LIGHT}
236
+ color-scheme: light;
237
+ }
238
+ ${modeCss(':where([data-office-theme="light"], [data-office-theme="auto"])', false)}
239
+ ${modeCss(':where([data-office-theme="dark"])', true)}
240
+ @media (prefers-color-scheme: dark) {
241
+ ${modeCss(':where(:root:not([data-office-theme="light"]), [data-office-theme="auto"])', true)}
242
+ }
243
+ @media ${TOUCH} {
244
+ :where(:root) { --office-target-size: var(--office-target-size-touch); }
245
+ }
246
+ @media (forced-colors: active) {
247
+ :where(:root, [data-office-theme]) {
248
+ --office-foreground: CanvasText;
249
+ --office-muted-foreground: GrayText;
250
+ --office-background: Canvas;
251
+ --office-surface: Canvas;
252
+ --office-border: CanvasText;
253
+ --office-accent: Highlight;
254
+ --office-accent-foreground: HighlightText;
255
+ --office-ring: Highlight;
256
+ --office-danger: CanvasText;
257
+ }
258
+ }
259
+ ${BUILDING_BLOCKS_CSS}
260
+ `;
261
+ function installOfficeUiTheme(root = globalThis.document) {
262
+ if (!root) return false;
263
+ const documentRoot = root.nodeType === 9;
264
+ if (!documentRoot && !("host" in root)) return false;
265
+ const doc = documentRoot ? root : root.ownerDocument;
266
+ const container = documentRoot ? root.head : root;
267
+ if (!doc || !container) return false;
268
+ if (!root.getElementById(THEME_STYLE_ID)) {
269
+ const style = doc.createElement("style");
270
+ style.id = THEME_STYLE_ID;
271
+ style.textContent = THEME_CSS;
272
+ container.append(style);
273
+ }
274
+ return true;
275
+ }
276
+ function installOfficeUiThemeRoots(host) {
277
+ let installed = installOfficeUiTheme(host.ownerDocument);
278
+ let root = host.getRootNode();
279
+ while (root.nodeType === 11 && "host" in root) {
280
+ const shadow = root;
281
+ installed = installOfficeUiTheme(shadow) && installed;
282
+ root = shadow.host.getRootNode();
283
+ }
284
+ return installed;
285
+ }
286
+ function installOfficeUiThemeFor(host) {
287
+ const installed = installOfficeUiThemeRoots(host);
288
+ queueMicrotask(() => {
289
+ installOfficeUiThemeRoots(host);
290
+ });
291
+ return installed;
292
+ }
293
+ function prepareOfficeUiBlock(host, kind, product) {
294
+ host.setAttribute("data-office-block", kind);
295
+ if (product) host.setAttribute("data-office-product", product);
296
+ installOfficeUiThemeFor(host);
297
+ }
298
+
299
+ export { BUILDING_BLOCKS_CSS, LEGACY_OFFICE_THEME_TOKENS, THEME_CSS, THEME_STYLE_ID, installOfficeUiTheme, installOfficeUiThemeFor, legacyThemeAliases, legacyThemeBridge, prepareOfficeUiBlock, shadcnBridge, themeBridge };
@@ -1,7 +1,7 @@
1
1
  import { createIconSvg, paintIcon, getIcon } from './chunk-M6GF5ED2.js';
2
- import { initialsOf } from './chunk-KNC2UEUR.js';
3
- import { OfficeElement, controlStyles, definer, valueOn, flag, present, triState, withTokens, emit } from './chunk-CWBSXK7P.js';
4
- import { tok, OFFICE_TOKENS } from './chunk-LD3K2RDN.js';
2
+ import { initialsOf } from './chunk-YZH2QS7J.js';
3
+ import { OfficeElement, controlStyles, definer, valueOn, flag, present, triState, withTokens, emit } from './chunk-QLHCGV4C.js';
4
+ import { tok, OFFICE_TOKENS } from './chunk-XL77FR4B.js';
5
5
  import { html, LitElement, nothing, render, svg } from 'lit';
6
6
  import { ifDefined } from 'lit/directives/if-defined.js';
7
7
  import { repeat } from 'lit/directives/repeat.js';
@@ -2038,7 +2038,7 @@ var OfficeUiRibbonGroup = class extends OfficeElement {
2038
2038
  var defineRibbonGroup = definer("office-ui-ribbon-group", () => OfficeUiRibbonGroup);
2039
2039
 
2040
2040
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/ribbon/ribbon-section.css?raw
2041
- var ribbon_section_default = ":host {\n display: inline-flex;\n align-items: stretch;\n}\n::slotted(*) {\n flex: none;\n}\n";
2041
+ var ribbon_section_default = "/* Fill the ribbon row as a group does, so a group's caption keeps its place inside a section. */\n:host {\n display: inline-flex;\n align-self: stretch;\n align-items: stretch;\n}\n::slotted(*) {\n flex: none;\n}\n";
2042
2042
 
2043
2043
  // src/ribbon/ribbon-section.ts
2044
2044
  var COLUMN_STYLE = { display: "flex", flexDirection: "column", gap: tok("--office-space-0") };
@@ -2146,7 +2146,7 @@ var defineRibbonSection = definer(
2146
2146
  );
2147
2147
 
2148
2148
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/ribbon/gallery.css?raw
2149
- var gallery_default = "[data-office-gallery] {\n display: inline-flex;\n position: relative;\n flex: none;\n color: var(--office-foreground);\n}\n[data-office-gallery] .gallery-view {\n display: contents;\n}\n[data-office-gallery] button {\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n cursor: pointer;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius);\n background: var(--office-background);\n}\n[data-office-gallery] button:hover:not(:disabled) {\n background: var(--office-selected);\n}\n[data-office-gallery] button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n[data-office-gallery] button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n[data-office-gallery] .trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-1-5);\n min-height: var(--office-gallery-trigger-height);\n padding: 0 var(--office-space-1-5);\n font-size: var(--office-font-size-sm);\n white-space: nowrap;\n}\n[data-office-gallery]:not([mode='inline']) .trigger {\n border-color: transparent;\n background: transparent;\n}\n[data-office-gallery] .trigger svg {\n width: var(--office-icon-size-md);\n height: var(--office-icon-size-md);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n[data-office-gallery][mode='inline'] .trigger,\n[data-office-gallery][chevron-only] .trigger {\n align-self: stretch;\n padding: 0 var(--office-space-1);\n}\n[data-office-gallery] .strip {\n display: flex;\n gap: var(--office-space-0);\n padding: var(--office-space-0);\n align-items: center;\n}\n[data-office-gallery] .tile {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n padding: var(--office-space-0);\n}\n[data-office-gallery] .tile[aria-pressed='true'] {\n border: var(--office-border-width-thick) solid var(--office-accent);\n background: color-mix(in srgb, var(--office-accent) 15%, var(--office-background));\n}\n[data-office-gallery] .tile svg {\n max-width: 100%;\n max-height: 100%;\n}\n[data-office-gallery][mode='inline'] .strip {\n gap: 0;\n border: var(--office-border-width) solid var(--office-border);\n border-inline-end: 0;\n border-radius: var(--office-radius-sm) 0 0 var(--office-radius-sm);\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery][mode='inline'] .trigger {\n border-radius: 0 var(--office-radius-sm) var(--office-radius-sm) 0;\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery] .trigger.command {\n border-color: transparent;\n background: transparent;\n justify-content: flex-start;\n}\n[data-office-gallery] .trigger.command:hover:not(:disabled) {\n border-color: var(--office-border);\n background: var(--office-selected);\n}\n[data-office-gallery] .trigger.command svg {\n color: var(--office-command-icon-color);\n}\n[data-office-gallery] .trigger.command-large {\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: var(--office-space-0);\n min-width: var(--office-gallery-command-min-width);\n max-width: var(--office-gallery-command-max-width);\n height: var(--office-gallery-command-height);\n padding: var(--office-space-1);\n font-size: var(--office-font-size-2xs);\n line-height: var(--office-line-height-tight);\n white-space: normal;\n text-align: center;\n}\n[data-office-gallery] .trigger.command-large svg {\n width: var(--office-gallery-command-icon);\n height: var(--office-gallery-command-icon);\n}\n[data-office-gallery] .popup {\n box-sizing: border-box;\n position: fixed;\n z-index: var(--office-z-popover);\n max-width: calc(100vw - var(--office-space-4));\n max-height: var(--office-gallery-popup-max-height);\n overflow: auto;\n padding: var(--office-space-2);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n[data-office-gallery] .popup[hidden] {\n display: none;\n}\n[data-office-gallery] .grid {\n display: grid;\n gap: var(--office-space-1);\n width: max-content;\n max-width: 100%;\n}\n[data-office-gallery] .heading {\n margin: var(--office-space-1) 0 var(--office-space-1-5);\n font-size: var(--office-font-size-xs);\n font-weight: var(--office-font-weight-bold);\n}\n[data-office-gallery] .section + .section {\n margin-top: var(--office-space-2-5);\n}\n[data-office-gallery][mode='panel'] {\n display: block;\n}\n[data-office-gallery][mode='panel'] .grid {\n width: 100%;\n}\n[data-office-gallery][mode='panel'] .tile {\n flex-direction: column;\n gap: var(--office-space-1);\n width: 100% !important;\n height: auto !important;\n min-height: var(--office-target-size-touch);\n padding: var(--office-space-1);\n}\n[data-office-gallery][mode='panel'] .tile-label {\n font-size: var(--office-font-size-xs);\n}\n[data-office-gallery][mode='panel'] .tile svg {\n width: var(--office-gallery-preview-width);\n height: var(--office-gallery-preview-height);\n}\n[data-office-gallery] .footer {\n display: flex;\n flex-direction: column;\n margin-top: var(--office-space-2);\n padding-top: var(--office-space-1);\n border-top: var(--office-border-width) solid var(--office-border);\n}\n[data-office-gallery] .footer-item,\n[data-office-gallery] .tile-menu-item {\n display: block;\n padding: var(--office-space-1) var(--office-space-2);\n border-color: transparent;\n background: transparent;\n font-size: var(--office-font-size-sm);\n text-align: start;\n white-space: nowrap;\n}\n[data-office-gallery] .tile-menu {\n box-sizing: border-box;\n position: fixed;\n z-index: calc(var(--office-z-popover) + 1);\n display: flex;\n flex-direction: column;\n min-width: 12rem;\n padding: var(--office-space-1);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n@media (pointer: coarse), (max-width: 1023px) {\n [data-office-gallery] .trigger,\n [data-office-gallery] .tile {\n min-height: var(--office-target-size-touch);\n min-width: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n [data-office-gallery] button,\n [data-office-gallery] .popup {\n color: ButtonText;\n background: Canvas;\n border-color: ButtonText;\n }\n [data-office-gallery] button:disabled {\n color: GrayText;\n opacity: 1;\n }\n [data-office-gallery] button:focus-visible,\n [data-office-gallery] .tile[aria-pressed='true'] {\n outline: var(--office-focus-width) solid Highlight;\n border-color: Highlight;\n }\n}\n";
2149
+ var gallery_default = "[data-office-gallery] {\n display: inline-flex;\n position: relative;\n flex: none;\n color: var(--office-foreground);\n}\n[data-office-gallery] .gallery-view {\n display: contents;\n}\n[data-office-gallery] button {\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n cursor: pointer;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius);\n background: var(--office-background);\n}\n[data-office-gallery] button:hover:not(:disabled) {\n background: var(--office-selected);\n}\n[data-office-gallery] button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n[data-office-gallery] button:focus-visible {\n outline: var(--office-focus-width) solid var(--office-ring);\n outline-offset: var(--office-focus-offset);\n}\n[data-office-gallery] .trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--office-space-1-5);\n min-height: var(--office-gallery-trigger-height);\n padding: 0 var(--office-space-1-5);\n font-size: var(--office-font-size-sm);\n white-space: nowrap;\n}\n[data-office-gallery]:not([mode='inline']) .trigger {\n border-color: transparent;\n background: transparent;\n}\n[data-office-gallery] .trigger svg {\n width: var(--office-icon-size-md);\n height: var(--office-icon-size-md);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--office-icon-stroke);\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n[data-office-gallery][mode='inline'] .trigger,\n[data-office-gallery][chevron-only] .trigger {\n align-self: stretch;\n padding: 0 var(--office-space-1);\n}\n[data-office-gallery] .strip {\n display: flex;\n gap: var(--office-space-0);\n padding: var(--office-space-0);\n align-items: center;\n}\n[data-office-gallery] .tile {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n padding: var(--office-space-0);\n}\n[data-office-gallery] .tile[aria-pressed='true'] {\n border: var(--office-border-width-thick) solid var(--office-accent);\n background: color-mix(in srgb, var(--office-accent) 15%, var(--office-background));\n}\n[data-office-gallery] .tile svg {\n max-width: 100%;\n max-height: 100%;\n}\n[data-office-gallery][mode='inline'] .strip {\n gap: 0;\n border: var(--office-border-width) solid var(--office-border);\n border-inline-end: 0;\n border-radius: var(--office-radius-sm) 0 0 var(--office-radius-sm);\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery][mode='inline'] .trigger {\n border-radius: 0 var(--office-radius-sm) var(--office-radius-sm) 0;\n background: var(--office-gallery-strip-background);\n}\n[data-office-gallery] .trigger.command {\n border-color: transparent;\n background: transparent;\n justify-content: flex-start;\n}\n[data-office-gallery] .trigger.command:hover:not(:disabled) {\n border-color: var(--office-border);\n background: var(--office-selected);\n}\n[data-office-gallery] .trigger.command svg {\n color: var(--office-command-icon-color);\n}\n[data-office-gallery] .trigger.command-large {\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: var(--office-space-0);\n min-width: var(--office-gallery-command-min-width);\n max-width: var(--office-gallery-command-max-width);\n height: var(--office-gallery-command-height);\n padding: var(--office-space-1);\n font-size: var(--office-font-size-2xs);\n line-height: var(--office-line-height-tight);\n white-space: normal;\n text-align: center;\n}\n[data-office-gallery] .trigger.command-large svg {\n width: var(--office-gallery-command-icon);\n height: var(--office-gallery-command-icon);\n}\n[data-office-gallery] .popup {\n box-sizing: border-box;\n position: fixed;\n z-index: var(--office-z-popover);\n max-width: calc(100vw - var(--office-space-4));\n max-height: var(--office-gallery-popup-max-height);\n overflow: auto;\n padding: var(--office-space-2);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n[data-office-gallery] .popup[hidden] {\n display: none;\n}\n[data-office-gallery] .grid {\n display: grid;\n gap: var(--office-space-1);\n width: max-content;\n max-width: 100%;\n}\n[data-office-gallery] .heading {\n margin: var(--office-space-1) 0 var(--office-space-1-5);\n font-size: var(--office-font-size-xs);\n font-weight: var(--office-font-weight-bold);\n}\n[data-office-gallery] .section + .section {\n margin-top: var(--office-space-2-5);\n}\n[data-office-gallery][mode='panel'] {\n display: block;\n}\n[data-office-gallery][mode='panel'] .grid {\n width: 100%;\n}\n[data-office-gallery][mode='panel']:not([compact]) .tile {\n flex-direction: column;\n gap: var(--office-space-1);\n width: 100% !important;\n height: auto !important;\n min-height: var(--office-target-size-touch);\n padding: var(--office-space-1);\n}\n[data-office-gallery][mode='panel'] .tile-label {\n font-size: var(--office-font-size-xs);\n}\n[data-office-gallery][mode='panel'] .tile svg {\n width: var(--office-gallery-preview-width);\n height: var(--office-gallery-preview-height);\n}\n[data-office-gallery] .footer {\n display: flex;\n flex-direction: column;\n margin-top: var(--office-space-2);\n padding-top: var(--office-space-1);\n border-top: var(--office-border-width) solid var(--office-border);\n}\n[data-office-gallery] .footer-item,\n[data-office-gallery] .tile-menu-item {\n display: block;\n padding: var(--office-space-1) var(--office-space-2);\n border-color: transparent;\n background: transparent;\n font-size: var(--office-font-size-sm);\n text-align: start;\n white-space: nowrap;\n}\n[data-office-gallery] .tile-menu {\n box-sizing: border-box;\n position: fixed;\n z-index: calc(var(--office-z-popover) + 1);\n display: flex;\n flex-direction: column;\n min-width: 12rem;\n padding: var(--office-space-1);\n border: var(--office-border-width) solid var(--office-border);\n border-radius: var(--office-radius-md);\n background: var(--office-popover);\n color: var(--office-popover-foreground);\n box-shadow: var(--office-shadow-lg);\n}\n@media (pointer: coarse), (max-width: 1023px) {\n [data-office-gallery] .trigger,\n [data-office-gallery] .tile {\n min-height: var(--office-target-size-touch);\n min-width: var(--office-target-size-touch);\n }\n}\n@media (forced-colors: active) {\n [data-office-gallery] button,\n [data-office-gallery] .popup {\n color: ButtonText;\n background: Canvas;\n border-color: ButtonText;\n }\n [data-office-gallery] button:disabled {\n color: GrayText;\n opacity: 1;\n }\n [data-office-gallery] button:focus-visible,\n [data-office-gallery] .tile[aria-pressed='true'] {\n outline: var(--office-focus-width) solid Highlight;\n border-color: Highlight;\n }\n}\n";
2150
2150
 
2151
2151
  // src/ribbon/gallery-styles.ts
2152
2152
  var GALLERY_LIGHT_CSS = withTokens(gallery_default);
@@ -2212,9 +2212,9 @@ var OfficeUiGallery = class extends OfficeElement {
2212
2212
  static itemAttribute = "data-gallery-item";
2213
2213
  static compactAttribute = null;
2214
2214
  static styles = controlStyles(HOST_CSS);
2215
- /** `mode`, `chevron-only` and `icon` are read from the attributes, as before. */
2215
+ /** `mode`, `chevron-only`, `icon` and `compact` are read from the attributes. */
2216
2216
  static get observedAttributes() {
2217
- return [...super.observedAttributes, "mode", "chevron-only", "icon"];
2217
+ return [...super.observedAttributes, "mode", "chevron-only", "icon", "compact"];
2218
2218
  }
2219
2219
  model;
2220
2220
  locked = false;
@@ -2501,7 +2501,7 @@ var OfficeUiGallery = class extends OfficeElement {
2501
2501
  event.preventDefault();
2502
2502
  event.stopPropagation();
2503
2503
  items[next]?.focus();
2504
- if (panel) items[next]?.click();
2504
+ if (panel && !this.hasAttribute("compact")) items[next]?.click();
2505
2505
  return;
2506
2506
  }
2507
2507
  if (panel) return;
@@ -2592,7 +2592,7 @@ var OfficeUiGallery = class extends OfficeElement {
2592
2592
  @blur=${() => this.endPreview()}
2593
2593
  @contextmenu=${(event) => this.onTileContextMenu(event, item.id)}
2594
2594
  @keydown=${(event) => this.onTileKey(event, item.id)}
2595
- >${preview}${this.getAttribute("mode") === "panel" ? html`<span class="tile-label">${item.label}</span>` : ""}</button>`;
2595
+ >${preview}${this.getAttribute("mode") === "panel" && !this.hasAttribute("compact") ? html`<span class="tile-label">${item.label}</span>` : ""}</button>`;
2596
2596
  }
2597
2597
  lightTemplate() {
2598
2598
  const statics = this.constructor;
@@ -5670,7 +5670,7 @@ var OfficeUiSymbolPicker = class extends OfficeElement {
5670
5670
  var defineSymbolPicker = definer("office-ui-symbol-picker", () => OfficeUiSymbolPicker);
5671
5671
 
5672
5672
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/form/color-grid.css?raw
5673
- var color_grid_default = "/* Tokens: --office-space-*, --office-border, --office-selected, --office-field-border-focus. */\n:host {\n display: block;\n color: var(--office-foreground);\n font: var(--office-font-size-sm) / var(--office-line-height-tight) var(--office-font);\n}\n:host([hidden]) {\n display: none;\n}\n.grid {\n display: grid;\n gap: var(--office-space-1);\n padding: var(--office-space-1);\n width: max-content;\n}\n.heading {\n padding: var(--office-space-0) var(--office-space-1);\n background: var(--office-selected);\n color: var(--office-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.cells {\n display: grid;\n grid-template-columns: repeat(10, var(--office-space-4));\n gap: var(--office-space-1);\n}\n/* The five variant rows sit flush under one another, as in Office. */\n.variants {\n display: grid;\n gap: 0;\n}\n.swatch {\n box-sizing: border-box;\n width: var(--office-space-4);\n height: var(--office-space-4);\n padding: 0;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: 0;\n background: var(--swatch);\n cursor: pointer;\n}\n.swatch:hover:not(:disabled),\n.swatch:focus-visible,\n.swatch[aria-checked='true'] {\n outline: var(--office-space-0) solid var(--office-field-border-focus);\n outline-offset: var(--office-space-px);\n position: relative;\n z-index: 1;\n}\n.command {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%;\n min-height: var(--office-control-height-md);\n padding: 0 var(--office-space-2);\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: start;\n cursor: pointer;\n}\n.command:hover:not(:disabled),\n.command:focus-visible,\n.command[aria-checked='true'] {\n background: var(--office-selected);\n outline: none;\n}\nbutton:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n@media (forced-colors: active) {\n .swatch {\n forced-color-adjust: none;\n border-color: CanvasText;\n }\n .swatch:focus-visible,\n .swatch[aria-checked='true'] {\n outline-color: Highlight;\n }\n}\n";
5673
+ var color_grid_default = "/* Tokens: --office-space-*, --office-color-swatch-gap, --office-border, --office-selected,\n --office-field-border-focus. */\n:host {\n display: block;\n color: var(--office-foreground);\n font: var(--office-font-size-sm) / var(--office-line-height-tight) var(--office-font);\n}\n:host([hidden]) {\n display: none;\n}\n.grid {\n box-sizing: border-box;\n display: grid;\n gap: var(--office-space-1);\n padding: var(--office-space-1);\n width: max-content;\n /* In a pane narrower than the grid, the swatches shrink instead of overflowing it. */\n max-width: 100%;\n}\n.heading {\n padding: var(--office-space-0) var(--office-space-1);\n background: var(--office-selected);\n color: var(--office-foreground);\n font-weight: var(--office-font-weight-bold);\n}\n.cells {\n display: grid;\n grid-template-columns: repeat(var(--_columns, 10), minmax(0, var(--office-space-4)));\n gap: var(--office-color-swatch-gap);\n}\n/* The five variant rows sit flush under one another, as in Office. */\n.variants {\n display: grid;\n gap: 0;\n}\n.swatch {\n box-sizing: border-box;\n width: 100%;\n aspect-ratio: 1;\n padding: 0;\n border: var(--office-border-width) solid var(--office-border);\n border-radius: 0;\n background: var(--swatch);\n cursor: pointer;\n}\n.swatch:hover:not(:disabled),\n.swatch:focus-visible,\n.swatch[aria-checked='true'] {\n outline: var(--office-space-0) solid var(--office-field-border-focus);\n outline-offset: var(--office-space-px);\n position: relative;\n z-index: 1;\n}\n.command {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%;\n min-height: var(--office-control-height-md);\n padding: 0 var(--office-space-2);\n border: 0;\n border-radius: var(--office-radius-sm);\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: start;\n cursor: pointer;\n}\n.command:hover:not(:disabled),\n.command:focus-visible,\n.command[aria-checked='true'] {\n background: var(--office-selected);\n outline: none;\n}\nbutton:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n@media (forced-colors: active) {\n .swatch {\n forced-color-adjust: none;\n border-color: CanvasText;\n }\n .swatch:focus-visible,\n .swatch[aria-checked='true'] {\n outline-color: Highlight;\n }\n}\n";
5674
5674
 
5675
5675
  // src/form/color-grid.ts
5676
5676
  var COLUMNS = 10;
@@ -5679,6 +5679,8 @@ var OfficeUiColorGrid = class extends OfficeElement {
5679
5679
  static properties = {
5680
5680
  themeColors: { attribute: false },
5681
5681
  themeNames: { attribute: false },
5682
+ palette: { attribute: false },
5683
+ selectedTheme: { attribute: false },
5682
5684
  variantLabel: { attribute: false },
5683
5685
  extraColors: { attribute: false },
5684
5686
  standardColors: { attribute: false },
@@ -5698,6 +5700,8 @@ var OfficeUiColorGrid = class extends OfficeElement {
5698
5700
  this.themeColors = null;
5699
5701
  this.themeNames = null;
5700
5702
  this.variantLabel = null;
5703
+ this.palette = null;
5704
+ this.selectedTheme = null;
5701
5705
  this.extraColors = [];
5702
5706
  this.standardColors = OFFICE_STANDARD_COLORS;
5703
5707
  this.recentColors = [];
@@ -5761,15 +5765,17 @@ var OfficeUiColorGrid = class extends OfficeElement {
5761
5765
  render() {
5762
5766
  const disabled = present(this.disabled);
5763
5767
  const value = this.value ? normalizePaletteHex(this.value) ?? this.value : null;
5768
+ const position = this.selectedTheme;
5769
+ const checked = (item, source, column) => position ? source === "theme" && column === position.column && item.variant?.kind === position.variant?.kind && item.variant?.percent === position.variant?.percent : value === item.hex;
5764
5770
  let row = 0;
5765
- const command = (text, name2, checked, run) => html`<button
5771
+ const command = (text, name2, checked2, run) => html`<button
5766
5772
  type="button"
5767
5773
  class="command"
5768
5774
  data-command=${name2}
5769
5775
  data-row=${row++}
5770
5776
  data-column="0"
5771
- role=${checked === void 0 ? "button" : "menuitemradio"}
5772
- aria-checked=${checked === void 0 ? nothing : String(checked)}
5777
+ role=${checked2 === void 0 ? "button" : "menuitemradio"}
5778
+ aria-checked=${checked2 === void 0 ? nothing : String(checked2)}
5773
5779
  ?disabled=${disabled}
5774
5780
  @click=${run}
5775
5781
  >${text}</button
@@ -5784,7 +5790,7 @@ var OfficeUiColorGrid = class extends OfficeElement {
5784
5790
  data-column=${column}
5785
5791
  title=${item.label}
5786
5792
  aria-label=${item.label}
5787
- aria-checked=${String(value === item.hex)}
5793
+ aria-checked=${String(checked(item, source, column))}
5788
5794
  style=${`--swatch:${item.hex}`}
5789
5795
  ?disabled=${disabled}
5790
5796
  @click=${() => this.pick(
@@ -5794,19 +5800,22 @@ var OfficeUiColorGrid = class extends OfficeElement {
5794
5800
  source === "theme" ? { theme: { column, ...item.variant ? { variant: item.variant } : {} } } : source === "extra" ? { index: column } : {}
5795
5801
  )}
5796
5802
  ></button>`;
5797
- const cells = (items, source) => {
5798
- const result = html`<div class="cells" data-cells=${source}
5799
- >${items.map((item, index) => swatch(item, source, index))}</div
5803
+ const cells = (items, source, columns = COLUMNS) => {
5804
+ const result = html`<div class="cells" data-cells=${source} style=${`--_columns:${columns}`}
5805
+ >${items.map(
5806
+ (item, index) => item ? swatch(item, source, index) : html`<span></span>`
5807
+ )}</div
5800
5808
  >`;
5801
5809
  row++;
5802
5810
  return result;
5803
5811
  };
5804
- const palette = buildThemePalette(this.themeColors ?? void 0, this.themeNames ?? void 0);
5812
+ const palette = this.palette ?? buildThemePalette(this.themeColors ?? void 0, this.themeNames ?? void 0);
5805
5813
  const extra = (this.extraColors ?? []).slice(0, COLUMNS);
5806
- const name = this.variantLabel;
5814
+ const name = this.palette ? null : this.variantLabel;
5815
+ const standard = this.standardColors ?? OFFICE_STANDARD_COLORS;
5807
5816
  const variants = (index) => palette.map((column) => {
5808
5817
  const item = column.variants[index];
5809
- return name ? { ...item, label: name(column.name, item.variant) } : item;
5818
+ return item && name ? { ...item, label: name(column.name, item.variant) } : item;
5810
5819
  });
5811
5820
  const recent = (this.recentColors ?? []).map((hex) => normalizePaletteHex(hex)).filter((hex) => !!hex).slice(0, COLUMNS).map((hex) => ({ hex, label: hex.toUpperCase() }));
5812
5821
  const automatic = this.automaticLabel;
@@ -5822,12 +5831,16 @@ var OfficeUiColorGrid = class extends OfficeElement {
5822
5831
  <div class="heading">${this.themeHeading}</div>
5823
5832
  ${cells(
5824
5833
  palette.map((column) => column.base),
5825
- "theme"
5834
+ "theme",
5835
+ palette.length || COLUMNS
5826
5836
  )}
5827
- <div class="variants">${[0, 1, 2, 3, 4].map((index) => cells(variants(index), "theme"))}</div>
5837
+ <div class="variants"
5838
+ >${[0, 1, 2, 3, 4].map(
5839
+ (index) => cells(variants(index), "theme", palette.length || COLUMNS)
5840
+ )}</div
5841
+ >
5828
5842
  ${extra.length ? cells(extra, "extra") : nothing}
5829
- <div class="heading">${this.standardHeading}</div>
5830
- ${cells(this.standardColors ?? OFFICE_STANDARD_COLORS, "standard")}
5843
+ ${standard.length ? html`<div class="heading">${this.standardHeading}</div> ${cells(standard, "standard")}` : nothing}
5831
5844
  ${recent.length ? html`<div class="heading">${this.recentHeading}</div> ${cells(recent, "recent")}` : nothing}
5832
5845
  ${more ? command(more, "more", void 0, () => this.more()) : nothing}</div
5833
5846
  >`;
@@ -1,8 +1,8 @@
1
- import { defineSmartArt } from './chunk-ANPFMQ6E.js';
2
- import { TEAMS_TAGS, registerTeams } from './chunk-MSXUCINT.js';
3
- import { installOfficeUiTheme } from './chunk-7E3HU7RL.js';
4
- import { registerControls } from './chunk-SPRZIHUH.js';
5
- import { definePresence } from './chunk-KNC2UEUR.js';
1
+ import { defineSmartArt } from './chunk-QBXYGKPB.js';
2
+ import { TEAMS_TAGS, registerTeams } from './chunk-4XPAPETH.js';
3
+ import { installOfficeUiTheme } from './chunk-T5ARELU2.js';
4
+ import { registerControls } from './chunk-TJ245GDD.js';
5
+ import { definePresence } from './chunk-YZH2QS7J.js';
6
6
 
7
7
  // src/index.ts
8
8
  var OFFICE_UI_TAGS = [
@@ -219,6 +219,8 @@ var OFFICE_TOKENS = {
219
219
  "--office-comments-pane-width": "300px",
220
220
  "--office-comment-avatar-size": "24px",
221
221
  "--office-account-field-width": "320px",
222
+ // Component: colour grid
223
+ "--office-color-swatch-gap": "var(--office-space-1, 4px)",
222
224
  // Component: galleries
223
225
  "--office-gallery-trigger-height": "24px",
224
226
  "--office-gallery-strip-background": "color-mix(in srgb, var(--office-surface, #f3f4f6) 30%, transparent)",
@@ -1,4 +1,4 @@
1
- import { OfficeElement, controlStyles, definer } from './chunk-CWBSXK7P.js';
1
+ import { OfficeElement, controlStyles, definer } from './chunk-QLHCGV4C.js';
2
2
  import { html } from 'lit';
3
3
 
4
4
  // raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/presence/presence.css?raw
@@ -44,7 +44,7 @@ import { defineColorCustom } from './form/color-custom.js';
44
44
  import { defineChartPicker } from './dialog/chart-picker.js';
45
45
  export { defineAccount, defineDialogFooter, definePasteOptions, defineRadio, defineReadOnlyBanner, defineRibbonToggle, defineSearchField, defineToasts, defineBackstage, defineCommentsPane, defineFindBar, defineGallery, definePrintPreview, defineRibbon, defineRibbonActions, defineRuler, defineButton, defineCheckbox, defineCommandSearch, defineContextMenu, defineDialog, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineTabStrip, defineTaskPane, defineTitleBar, defineToolbar, defineZoomSlider, defineSymbolPicker, defineColorGrid, defineColorCustom, defineChartPicker, };
46
46
  export { OFFICE_SYMBOLS, parseOfficeSymbolCode } from './form/symbol-picker.js';
47
- export type { OfficeColorPick, OfficeColorPickEvent, OfficeColorSource, OfficeUiColorGrid, } from './form/color-grid.js';
47
+ export type { OfficeColorPick, OfficeColorPickEvent, OfficeColorSource, OfficeThemeSwatchPosition, OfficeUiColorGrid, } from './form/color-grid.js';
48
48
  export type { OfficeCommandEvent } from './ribbon/button.js';
49
49
  export type { OfficeDialogCloseEvent, OfficeDialogCloseReason } from './dialog/dialog.js';
50
50
  export type { OfficeSelectOption } from './form/select.js';
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../src/controls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../src/controls.ts"],"names":[],"mappings":"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"}
package/dist/controls.js CHANGED
@@ -1,5 +1,5 @@
1
- export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_SYMBOLS, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, attachRibbonGroupOverflow, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineChartPicker, defineCheckbox, defineColorCustom, defineColorGrid, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonActions, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineSymbolPicker, defineTabStrip, defineTaskPane, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, fitRibbonGroups, formatCommentTime, nextEnabledIndex, optionText, optionsLabels, parseOfficeSymbolCode, parseSvgPreview, personalizeSection, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, unavailableCategory, unavailableControl, userInterfaceSection, writeOfficeProfile } from './chunk-SPRZIHUH.js';
1
+ export { CONTROL_DEFINERS, DEFAULT_COMMENTS_LABELS, DEFAULT_OFFICE_PROFILE, EMPTY_MENU_STATE, OFFICE_AVATAR_SWATCHES, OFFICE_COLOR_SWATCHES, OFFICE_COLOR_SWATCH_HEXES, OFFICE_PROFILE_STORAGE_KEY, OFFICE_SYMBOLS, OFFICE_TITLE_BAR_SEARCH_LIMIT, OFFICE_TOAST_VISIBLE_LIMIT, assignKeyTips, attachKeyTips, attachRibbonGroupOverflow, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineChartPicker, defineCheckbox, defineColorCustom, defineColorGrid, defineCommandSearch, defineCommentsPane, defineContextMenu, defineDialog, defineDialogFooter, defineFindBar, defineGallery, defineIcon, defineMenuButton, defineMenuItem, defineMenuSeparator, defineOptionsDialog, definePasteOptions, definePrintPreview, defineRadio, defineReadOnlyBanner, defineRibbon, defineRibbonActions, defineRibbonGroup, defineRibbonSection, defineRibbonStack, defineRibbonToggle, defineRuler, defineSearchField, defineSelect, defineStatusBar, defineStatusItem, defineSwitch, defineSymbolPicker, defineTabStrip, defineTaskPane, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, fitRibbonGroups, formatCommentTime, nextEnabledIndex, optionText, optionsLabels, parseOfficeSymbolCode, parseSvgPreview, personalizeSection, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, unavailableCategory, unavailableControl, userInterfaceSection, writeOfficeProfile } from './chunk-TJ245GDD.js';
2
2
  import './chunk-M6GF5ED2.js';
3
- import './chunk-KNC2UEUR.js';
4
- import './chunk-CWBSXK7P.js';
5
- import './chunk-LD3K2RDN.js';
3
+ import './chunk-YZH2QS7J.js';
4
+ import './chunk-QLHCGV4C.js';
5
+ import './chunk-XL77FR4B.js';
@@ -0,0 +1,31 @@
1
+ import type { EditorCore } from './editor-core.js';
2
+ /** A snapshot of the current editor selection, with commands bound to the same editor. */
3
+ export declare function wordToolbarProps(core: EditorCore): {
4
+ labels: {
5
+ [k: string]: string;
6
+ };
7
+ canEdit: boolean;
8
+ list: 'bullet' | 'decimal' | 'other' | null;
9
+ selection: {
10
+ from: number;
11
+ to: number;
12
+ } | null;
13
+ bold: boolean | null;
14
+ italic: boolean | null;
15
+ underline: boolean | null;
16
+ fontFamily: string | null;
17
+ fontSize: number | null;
18
+ alignment: string | null;
19
+ canUndo: boolean;
20
+ canRedo: boolean;
21
+ onBold: () => boolean;
22
+ onItalic: () => boolean;
23
+ onUnderline: () => boolean;
24
+ onFontFamilyChange: (family: string) => boolean;
25
+ onFontSizeChange: (size: number) => boolean;
26
+ onAlignmentChange: (alignment: 'left' | 'center' | 'right' | 'justify') => boolean;
27
+ onListChange: (kind: 'bullet' | 'number' | 'remove') => boolean;
28
+ onUndo: () => boolean;
29
+ onRedo: () => boolean;
30
+ };
31
+ export type WordToolbarProps = ReturnType<typeof wordToolbarProps>;