ooxml-ui 1.6.2 → 1.8.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.
- package/README.md +90 -37
- package/custom-elements.json +303 -4
- package/dist/chrome/ruler.d.ts +7 -1
- package/dist/chrome/ruler.d.ts.map +1 -1
- package/dist/chrome/status-bar.d.ts.map +1 -1
- package/dist/chrome/tab-strip.d.ts +3 -1
- package/dist/chrome/tab-strip.d.ts.map +1 -1
- package/dist/chrome/task-pane.d.ts +29 -0
- package/dist/chrome/task-pane.d.ts.map +1 -0
- package/dist/chrome/title-bar.d.ts +2 -1
- package/dist/chrome/title-bar.d.ts.map +1 -1
- package/dist/{chunk-QAIVGTQZ.js → chunk-7US5GCXF.js} +158 -153
- package/dist/{chunk-Z7CS3UUK.js → chunk-KF72ZA6V.js} +5 -2
- package/dist/{chunk-QHAE6Y5B.js → chunk-O7APCA5N.js} +680 -98
- package/dist/chunk-W6AV3GHC.js +112 -0
- package/dist/controls.d.ts +9 -2
- package/dist/controls.d.ts.map +1 -1
- package/dist/controls.js +1 -1
- package/dist/dialog/dialog-footer.d.ts.map +1 -1
- package/dist/dialog/options-dialog.d.ts.map +1 -1
- package/dist/docx/editor-core.d.ts +3 -0
- package/dist/docx/editor-shell.d.ts +2 -0
- package/dist/docx/element-api.d.ts +7 -0
- package/dist/docx/events.d.ts +4 -1
- package/dist/docx/index.d.ts +1 -0
- package/dist/docx/ribbon-color-grid.d.ts +3 -4
- package/dist/docx.js +46 -78
- package/dist/edit-worker.js +52 -3
- package/dist/form/color-custom.d.ts +79 -0
- package/dist/form/color-custom.d.ts.map +1 -0
- package/dist/form/color-grid.d.ts +125 -0
- package/dist/form/color-grid.d.ts.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -3
- package/dist/menu/context-menu.d.ts.map +1 -1
- package/dist/menu/menu-button.d.ts +2 -1
- package/dist/menu/menu-button.d.ts.map +1 -1
- package/dist/notices/paste-options.d.ts.map +1 -1
- package/dist/notices/toasts.d.ts.map +1 -1
- package/dist/pptx/{chart-3d-view-scene-ERX2GRCD.mjs → chart-3d-view-scene-P6MAFEGL.mjs} +2 -2
- package/dist/pptx/{chart-3d-view-scene-55WDENSO.cjs → chart-3d-view-scene-V74F7ZOC.cjs} +38 -38
- package/dist/pptx/{chunk-G2YUKLRX.cjs → chunk-526IHNIH.cjs} +1 -1
- package/dist/pptx/{chunk-SVN6OBG4.mjs → chunk-DPOES4WM.mjs} +26 -11
- package/dist/pptx/{chunk-BLAJIEXA.cjs → chunk-GCS5KBMR.cjs} +511 -653
- package/dist/pptx/{chunk-RPRC2EG5.cjs → chunk-K3S2A64B.cjs} +13 -13
- package/dist/pptx/{chunk-E55NU4BF.mjs → chunk-MCHPNO42.mjs} +289 -493
- package/dist/pptx/{chunk-AWQRQUPL.mjs → chunk-NAFUYAQP.mjs} +1 -1
- package/dist/pptx/{chunk-LCIXR7WE.cjs → chunk-VFPVEVF4.cjs} +26 -11
- package/dist/pptx/{chunk-TKATCPOK.mjs → chunk-ZAOYPCAM.mjs} +1 -1
- package/dist/pptx/dom/activex-controls-overlay.d.ts.map +1 -1
- package/dist/pptx/dom/elements/image.d.ts.map +1 -1
- package/dist/pptx/dom/elements/media.d.ts.map +1 -1
- package/dist/pptx/dom/elements/text-block.d.ts.map +1 -1
- package/dist/pptx/dom/elements/zoom.d.ts.map +1 -1
- package/dist/pptx/dom/index.cjs +252 -247
- package/dist/pptx/dom/index.mjs +11 -6
- package/dist/pptx/export/html2canvas-clone.cjs +2 -2
- package/dist/pptx/export/html2canvas-clone.mjs +1 -1
- package/dist/pptx/index.cjs +3059 -3023
- package/dist/pptx/index.mjs +4 -4
- package/dist/pptx/render/chart-combo-series.d.ts.map +1 -1
- package/dist/pptx/render/chart-combo-stock.cjs +3 -3
- package/dist/pptx/render/chart-combo-stock.mjs +1 -1
- package/dist/pptx/render/chart-marker-shape.d.ts.map +1 -1
- package/dist/pptx/render/chart-overlays.cjs +7 -7
- package/dist/pptx/render/chart-overlays.mjs +1 -1
- package/dist/pptx/render/chart-surface-treemap.cjs +4 -4
- package/dist/pptx/render/chart-surface-treemap.mjs +1 -1
- package/dist/pptx/render/chart-view-model.cjs +44 -44
- package/dist/pptx/render/chart-view-model.mjs +1 -1
- package/dist/pptx/render/chart-waterfall-map.cjs +6 -6
- package/dist/pptx/render/chart-waterfall-map.mjs +1 -1
- package/dist/pptx/render/connector-router-types.d.ts +4 -52
- package/dist/pptx/render/connector-router-types.d.ts.map +1 -1
- package/dist/pptx/render/connector-router.d.ts +4 -32
- package/dist/pptx/render/connector-router.d.ts.map +1 -1
- package/dist/pptx/render/editor-keymap-arrows.d.ts +0 -7
- package/dist/pptx/render/editor-keymap-arrows.d.ts.map +1 -1
- package/dist/pptx/render/element-interaction.d.ts +2 -6
- package/dist/pptx/render/element-interaction.d.ts.map +1 -1
- package/dist/pptx/render/index.d.ts +1 -0
- package/dist/pptx/render/index.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-add-ins.d.ts +53 -0
- package/dist/pptx/render/ribbon-add-ins.d.ts.map +1 -0
- package/dist/pptx/web-components/index.d.ts +1 -0
- package/dist/pptx/web-components/index.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-add-in.d.ts +20 -0
- package/dist/pptx/web-components/ribbon-add-in.d.ts.map +1 -0
- package/dist/ribbon/add-in-tabs.d.ts +36 -0
- package/dist/ribbon/group-overflow.d.ts +37 -0
- package/dist/ribbon/group-overflow.d.ts.map +1 -0
- package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
- package/dist/teams/app/index.d.ts +1 -1
- package/dist/teams.js +2 -2
- package/dist/visio/format-pane-fields.d.ts +42 -0
- package/dist/visio/format-pane-view.d.ts +44 -0
- package/dist/visio/index.d.ts +1 -0
- package/dist/visio/page-setup-action.d.ts +4 -0
- package/dist/visio/ribbon-action.d.ts +20 -7
- package/dist/visio/ribbon-change-shape.d.ts +17 -6
- package/dist/visio/ribbon-color-menu.d.ts +29 -0
- package/dist/visio/ribbon-inline-galleries.d.ts +20 -0
- package/dist/visio/ribbon-overflow.d.ts +7 -0
- package/dist/visio/ribbon-review.d.ts +5 -2
- package/dist/visio/ribbon-router.d.ts +3 -3
- package/dist/visio/ribbon-shape-styles.d.ts +4 -1
- package/dist/visio/ribbon-style-options.d.ts +4 -3
- package/dist/visio/ribbon.d.ts +2 -2
- package/dist/visio/shapes-document.d.ts +29 -0
- package/dist/visio/shapes-sections.d.ts +19 -5
- package/dist/visio/shapes-storage.d.ts +15 -0
- package/dist/visio/shapes-window.d.ts +9 -2
- package/dist/visio/status-bar.d.ts +7 -4
- package/dist/visio/stencil-catalog.d.ts +4 -0
- package/dist/visio/styles/theme.d.ts +1 -1
- package/dist/visio/styles.d.ts +1 -1
- package/dist/visio/text-measurer.d.ts +25 -0
- package/dist/visio/title-bar.d.ts +9 -0
- package/dist/visio/viewer-auto-connect-parts.d.ts +12 -0
- package/dist/visio/viewer-auto-connect.d.ts +33 -0
- package/dist/visio/viewer-backstage.d.ts +2 -1
- package/dist/visio/viewer-canvas.d.ts +1 -1
- package/dist/visio/viewer-change-shape.d.ts +8 -4
- package/dist/visio/viewer-chrome.d.ts +13 -5
- package/dist/visio/viewer-color-menus.d.ts +34 -0
- package/dist/visio/viewer-commands.d.ts +4 -1
- package/dist/visio/viewer-connector-tool.d.ts +5 -3
- package/dist/visio/viewer-data-window.d.ts +5 -1
- package/dist/visio/viewer-draw-tool.d.ts +1 -11
- package/dist/visio/viewer-element.d.ts +16 -0
- package/dist/visio/viewer-format-pane.d.ts +26 -0
- package/dist/visio/viewer-guides.d.ts +7 -4
- package/dist/visio/viewer-inline-text.d.ts +31 -0
- package/dist/visio/viewer-input.d.ts +5 -1
- package/dist/visio/viewer-layer-properties.d.ts +18 -0
- package/dist/visio/viewer-layout-commands.d.ts +8 -2
- package/dist/visio/viewer-more-colors.d.ts +16 -0
- package/dist/visio/viewer-options.d.ts +18 -4
- package/dist/visio/viewer-page-setup.d.ts +6 -0
- package/dist/visio/viewer-ruler-grid.d.ts +25 -0
- package/dist/visio/viewer-ruler.d.ts +11 -3
- package/dist/visio/viewer-snap-glue.d.ts +23 -0
- package/dist/visio/viewer-stencil.d.ts +4 -1
- package/dist/visio.js +7595 -5944
- package/dist/xlsx/component.d.ts +8 -0
- package/dist/xlsx/dialogs/format-cells/color-swatches.d.ts +4 -2
- package/dist/xlsx/dialogs/styles.d.ts +1 -1
- package/dist/xlsx/events.d.ts +4 -1
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/ribbon/color-grid.d.ts +25 -7
- package/dist/xlsx/ribbon/ribbon.d.ts +3 -0
- package/dist/xlsx.js +121 -163
- package/package.json +3 -2
- package/dist/pptx/render/connector-router-astar.d.ts +0 -24
- package/dist/pptx/render/connector-router-astar.d.ts.map +0 -1
- package/dist/pptx/render/connector-router-graph.d.ts +0 -38
- package/dist/pptx/render/connector-router-graph.d.ts.map +0 -1
- package/dist/visio/format-shape-dialog.d.ts +0 -21
- package/dist/visio/viewer-edit-controls.d.ts +0 -12
- package/dist/visio/viewer-format-shape.d.ts +0 -16
- package/dist/visio/viewer-geometry-controls.d.ts +0 -14
- package/dist/visio/viewer-layer-controls.d.ts +0 -5
- package/dist/visio/viewer-paint-dialog.d.ts +0 -28
- package/dist/visio/viewer-paint-properties.d.ts +0 -13
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { defineRibbonGroup, defineRibbonStack, defineButton, defineMenuItem, defineMenuButton } from './chunk-O7APCA5N.js';
|
|
2
|
+
import { acceptedRibbonAddIns, findRibbonAddInCommand, RIBBON_ADD_IN_EVENT } from 'ooxml-core/ribbon';
|
|
3
|
+
export { RIBBON_ADD_IN_EVENT } from 'ooxml-core/ribbon';
|
|
4
|
+
|
|
5
|
+
function defineRibbonAddInElements(registry) {
|
|
6
|
+
if (!registry) return;
|
|
7
|
+
for (const define of [
|
|
8
|
+
defineRibbonGroup,
|
|
9
|
+
defineRibbonStack,
|
|
10
|
+
defineButton,
|
|
11
|
+
defineMenuItem,
|
|
12
|
+
defineMenuButton
|
|
13
|
+
])
|
|
14
|
+
define(registry);
|
|
15
|
+
}
|
|
16
|
+
var SMALL_ROWS = 3;
|
|
17
|
+
function button(doc, spec) {
|
|
18
|
+
const menu = !!spec.items?.length;
|
|
19
|
+
const el = doc.createElement(menu ? "office-ui-menu-button" : "office-ui-button");
|
|
20
|
+
if (!menu) el.setAttribute("command", spec.id);
|
|
21
|
+
el.dataset.addInCommand = spec.id;
|
|
22
|
+
el.setAttribute("label", spec.label);
|
|
23
|
+
el.setAttribute("title", spec.title ?? spec.label);
|
|
24
|
+
if (spec.icon) el.setAttribute("icon", spec.icon);
|
|
25
|
+
const small = spec.size === "small";
|
|
26
|
+
if (!menu) el.setAttribute("size", small ? "small" : "large");
|
|
27
|
+
else if (!small) el.setAttribute("variant", "stacked");
|
|
28
|
+
else el.style.setProperty("--office-target-size", "var(--office-control-height)");
|
|
29
|
+
if (spec.disabled) el.setAttribute("disabled", "");
|
|
30
|
+
for (const item of spec.items ?? []) {
|
|
31
|
+
const entry = doc.createElement("office-ui-menu-item");
|
|
32
|
+
entry.setAttribute("command", item.id);
|
|
33
|
+
entry.dataset.addInCommand = item.id;
|
|
34
|
+
entry.setAttribute("label", item.label);
|
|
35
|
+
if (item.title) entry.setAttribute("title", item.title);
|
|
36
|
+
if (item.icon) entry.setAttribute("icon", item.icon);
|
|
37
|
+
if (item.disabled) entry.setAttribute("disabled", "");
|
|
38
|
+
el.append(entry);
|
|
39
|
+
}
|
|
40
|
+
return el;
|
|
41
|
+
}
|
|
42
|
+
function group(doc, spec) {
|
|
43
|
+
const el = doc.createElement("office-ui-ribbon-group");
|
|
44
|
+
el.setAttribute("label", spec.label);
|
|
45
|
+
let column;
|
|
46
|
+
for (const command of spec.commands) {
|
|
47
|
+
if (command.size !== "small") {
|
|
48
|
+
column = void 0;
|
|
49
|
+
el.append(button(doc, command));
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (!column || column.childElementCount >= SMALL_ROWS) {
|
|
53
|
+
column = doc.createElement("office-ui-ribbon-stack");
|
|
54
|
+
el.append(column);
|
|
55
|
+
}
|
|
56
|
+
column.append(button(doc, command));
|
|
57
|
+
}
|
|
58
|
+
return el;
|
|
59
|
+
}
|
|
60
|
+
var ownTabs = (ribbon) => new Set(
|
|
61
|
+
[...ribbon.children].flatMap(
|
|
62
|
+
(child) => child instanceof HTMLElement && child.dataset.ribbonTab && !("addIn" in child.dataset) ? [child.dataset.ribbonTab] : []
|
|
63
|
+
)
|
|
64
|
+
);
|
|
65
|
+
var shown = /* @__PURE__ */ new WeakMap();
|
|
66
|
+
var addInPanels = (ribbon) => [...ribbon.children].filter(
|
|
67
|
+
(child) => child instanceof HTMLElement && "addIn" in child.dataset
|
|
68
|
+
);
|
|
69
|
+
function syncRibbonAddIns(ribbon, tabs, options = {}) {
|
|
70
|
+
const doc = ribbon.ownerDocument;
|
|
71
|
+
const accepted = acceptedRibbonAddIns(tabs, ownTabs(ribbon));
|
|
72
|
+
if (accepted.length) defineRibbonAddInElements(doc.defaultView?.customElements);
|
|
73
|
+
const ids = accepted.map((tab) => tab.id);
|
|
74
|
+
const look = JSON.stringify([options.panelClass ?? "", accepted]);
|
|
75
|
+
const current = new Map(accepted.map((tab) => [tab.id, tab]));
|
|
76
|
+
const existing = addInPanels(ribbon);
|
|
77
|
+
const before = shown.get(ribbon);
|
|
78
|
+
shown.set(ribbon, { look, tabs: current });
|
|
79
|
+
if (before?.look === look && existing.length === ids.length && existing.every((panel, index) => panel.dataset.ribbonTab === ids[index]))
|
|
80
|
+
return ids;
|
|
81
|
+
for (const panel of existing) panel.remove();
|
|
82
|
+
for (const tab of accepted) {
|
|
83
|
+
const panel = doc.createElement("div");
|
|
84
|
+
if (options.panelClass) panel.className = options.panelClass;
|
|
85
|
+
panel.id = `add-in-${tab.id}-panel`;
|
|
86
|
+
panel.dataset.addIn = "";
|
|
87
|
+
panel.dataset.ribbonTab = tab.id;
|
|
88
|
+
panel.dataset.label = tab.label;
|
|
89
|
+
if (tab.keytip) panel.dataset.tabKeytip = tab.keytip;
|
|
90
|
+
const groups = tab.groups.map((spec) => group(doc, spec));
|
|
91
|
+
panel.append(...options.wrap ? options.wrap(doc, tab, groups) : groups);
|
|
92
|
+
panel.addEventListener("office-command", (event) => {
|
|
93
|
+
event.stopPropagation();
|
|
94
|
+
const id = event.detail?.command;
|
|
95
|
+
const latest = shown.get(ribbon)?.tabs.get(tab.id);
|
|
96
|
+
const command = latest && findRibbonAddInCommand(latest, id);
|
|
97
|
+
if (!command) return;
|
|
98
|
+
command.run?.();
|
|
99
|
+
ribbon.dispatchEvent(
|
|
100
|
+
new CustomEvent(RIBBON_ADD_IN_EVENT, {
|
|
101
|
+
detail: { tab: tab.id, command: command.id },
|
|
102
|
+
bubbles: true,
|
|
103
|
+
composed: true
|
|
104
|
+
})
|
|
105
|
+
);
|
|
106
|
+
});
|
|
107
|
+
ribbon.append(panel);
|
|
108
|
+
}
|
|
109
|
+
return ids;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { defineRibbonAddInElements, syncRibbonAddIns };
|
package/dist/controls.d.ts
CHANGED
|
@@ -34,11 +34,16 @@ import { defineSelect } from './form/select.js';
|
|
|
34
34
|
import { defineStatusBar } from './chrome/status-bar.js';
|
|
35
35
|
import { defineStatusItem } from './chrome/status-item.js';
|
|
36
36
|
import { defineTabStrip } from './chrome/tab-strip.js';
|
|
37
|
+
import { defineTaskPane } from './chrome/task-pane.js';
|
|
37
38
|
import { defineTitleBar } from './chrome/title-bar.js';
|
|
38
39
|
import { defineZoomSlider } from './form/zoom-slider.js';
|
|
39
40
|
import { defineSymbolPicker } from './form/symbol-picker.js';
|
|
40
|
-
|
|
41
|
+
import { defineColorGrid } from './form/color-grid.js';
|
|
42
|
+
export type { OfficeColorChange, OfficeColorChangeEvent, OfficeUiColorCustom, } from './form/color-custom.js';
|
|
43
|
+
import { defineColorCustom } from './form/color-custom.js';
|
|
44
|
+
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, };
|
|
41
45
|
export { OFFICE_SYMBOLS, parseOfficeSymbolCode } from './form/symbol-picker.js';
|
|
46
|
+
export type { OfficeColorPick, OfficeColorPickEvent, OfficeColorSource, OfficeUiColorGrid, } from './form/color-grid.js';
|
|
42
47
|
export type { OfficeCommandEvent } from './ribbon/button.js';
|
|
43
48
|
export type { OfficeDialogCloseEvent, OfficeDialogCloseReason } from './dialog/dialog.js';
|
|
44
49
|
export type { OfficeSelectOption } from './form/select.js';
|
|
@@ -55,6 +60,8 @@ export { assignKeyTips, runKeyTips } from './ribbon/keytip-run.js';
|
|
|
55
60
|
export type { KeyTipTarget } from './ribbon/keytip-run.js';
|
|
56
61
|
export { createRibbonOverflow } from './ribbon/overflow.js';
|
|
57
62
|
export type { RibbonOverflow, RibbonOverflowOptions } from './ribbon/overflow.js';
|
|
63
|
+
export { attachRibbonGroupOverflow, fitRibbonGroups } from './ribbon/group-overflow.js';
|
|
64
|
+
export type { RibbonGroupOverflow, RibbonGroupOverflowOptions } from './ribbon/group-overflow.js';
|
|
58
65
|
export type { OfficeRibbonSelectEvent } from './ribbon/ribbon-tabs.js';
|
|
59
66
|
export type { OfficeRibbonActionsMode, OfficeRibbonModeEvent } from './ribbon/ribbon-actions.js';
|
|
60
67
|
export type { OfficeRibbonCommandView, OfficeRibbonGroupView } from './ribbon/ribbon-section.js';
|
|
@@ -68,7 +75,7 @@ export type { OfficeReadOnlyBannerIntent, OfficeReadOnlyBannerState, } from './n
|
|
|
68
75
|
export { clearOfficeProfile, DEFAULT_OFFICE_PROFILE, OFFICE_AVATAR_SWATCHES, OFFICE_PROFILE_STORAGE_KEY, profileInitials, readOfficeProfile, sanitizeOfficeProfile, writeOfficeProfile, type OfficeProfile, type OfficeProfileChangeEvent, } from './chrome/account-profile.js';
|
|
69
76
|
export { clampOptionNumber, type OfficeOptionCategory, type OfficeOptionChoice, type OfficeOptionControl, type OfficeOptionSection, type OfficeOptionsChangeEvent, type OfficeOptionValue, type OfficeOptionValues, } from './dialog/options-dialog.js';
|
|
70
77
|
/** Every control of this entry. */
|
|
71
|
-
export declare const CONTROL_DEFINERS: readonly [import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer];
|
|
78
|
+
export declare const CONTROL_DEFINERS: readonly [import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer, import("./registry.js").Definer];
|
|
72
79
|
/** Idempotent, SSR-safe (no-op without a DOM). */
|
|
73
80
|
export declare function registerControls(registry?: CustomElementRegistry): void;
|
|
74
81
|
//# sourceMappingURL=controls.d.ts.map
|
package/dist/controls.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../src/controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACN,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,iBAAiB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../src/controls.ts"],"names":[],"mappings":"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"}
|
package/dist/controls.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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, clampFlyoutPosition, clampOptionNumber, clearOfficeProfile, commentInitials, createRibbonOverflow, defineAccount, defineBackstage, defineButton, defineCheckbox, 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, defineTitleBar, defineToasts, defineToolbar, defineZoomSlider, formatCommentTime, nextEnabledIndex, parseOfficeSymbolCode, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-
|
|
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, 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, parseOfficeSymbolCode, parseSvgPreview, profileInitials, readOfficeProfile, registerControls, rulerDivisions, runKeyTips, sanitizeOfficeProfile, typeAheadIndex, writeOfficeProfile } from './chunk-O7APCA5N.js';
|
|
2
2
|
import './chunk-M6GF5ED2.js';
|
|
3
3
|
import './chunk-L7JV5FVE.js';
|
|
4
4
|
import './chunk-OGNNNTKI.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-footer.d.ts","sourceRoot":"","sources":["../../src/dialog/dialog-footer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAiB,MAAM,SAAS,CAAC;AAKvD,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvF,MAAM,WAAW,wBAAwB;IACxC,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC7C;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACtD,MAAM,CAAC,YAAY,SAAkC;IACrD,MAAM,CAAC,YAAY,SAA0B;IAC7C,OAAgB,MAAM,4BAAsB;IAG5C,OAAO,CAAC,KAAK,CAA4C;IAEzD,IAAI,KAAK,IAAI,uBAAuB,CAEnC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,uBAAuB,EAGvC;IAED,yFAAyF;IACzF,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,OAAO,CAAC,OAAO;IAUf,UAAmB,MAAM,
|
|
1
|
+
{"version":3,"file":"dialog-footer.d.ts","sourceRoot":"","sources":["../../src/dialog/dialog-footer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAiB,MAAM,SAAS,CAAC;AAKvD,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvF,MAAM,WAAW,wBAAwB;IACxC,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC7C;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACtD,MAAM,CAAC,YAAY,SAAkC;IACrD,MAAM,CAAC,YAAY,SAA0B;IAC7C,OAAgB,MAAM,4BAAsB;IAG5C,OAAO,CAAC,KAAK,CAA4C;IAEzD,IAAI,KAAK,IAAI,uBAAuB,CAEnC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,uBAAuB,EAGvC;IAED,yFAAyF;IACzF,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,OAAO,CAAC,OAAO;IAUf,UAAmB,MAAM,oCAsBxB;CACD;AAED,eAAO,MAAM,kBAAkB,+BAAiE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options-dialog.d.ts","sourceRoot":"","sources":["../../src/dialog/options-dialog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"options-dialog.d.ts","sourceRoot":"","sources":["../../src/dialog/options-dialog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RibbonAddInTab } from '../ribbon/add-in-tabs.js';
|
|
1
2
|
import { FormatDialogs } from './format-dialogs.js';
|
|
2
3
|
import type { EditorState, Transaction } from 'prosemirror-state';
|
|
3
4
|
import type { EditorView } from 'prosemirror-view';
|
|
@@ -42,6 +43,8 @@ export interface ShellParts {
|
|
|
42
43
|
export declare class EditorCore {
|
|
43
44
|
readonly element: HTMLElement;
|
|
44
45
|
model: DocumentModel;
|
|
46
|
+
/** Tabs the host added after Word's own (`ribbonAddIns` of the element). */
|
|
47
|
+
ribbonAddIns: readonly RibbonAddInTab[];
|
|
45
48
|
view?: EditorView | undefined;
|
|
46
49
|
loaded?: LoadedDocument | undefined;
|
|
47
50
|
loadGeneration: number;
|
|
@@ -9,3 +9,5 @@ export interface ShellApi {
|
|
|
9
9
|
}
|
|
10
10
|
/** Builds the shadow-DOM shell (ribbon, canvas, panels, chrome) once; later calls are no-ops. */
|
|
11
11
|
export declare function buildShell(core: EditorCore, api: ShellApi): void;
|
|
12
|
+
/** Renders the host's add-in tabs (`ribbonAddIns`) after Word's own, once the ribbon exists. */
|
|
13
|
+
export declare function applyRibbonAddIns(core: EditorCore): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RibbonAddInTab } from '../ribbon/add-in-tabs.js';
|
|
1
2
|
import type { CollabSession } from 'ooxml-core/collab';
|
|
2
3
|
import type { WordYjsOptions } from 'ooxml-core/docx/ui';
|
|
3
4
|
import type { EditorCore } from './editor-core.js';
|
|
@@ -24,6 +25,12 @@ export declare abstract class DocxEditorApi extends HTMLElementBase {
|
|
|
24
25
|
/** Shows the left rail of page thumbnails. Needs Print Layout; reflected to `show-thumbnails`. */
|
|
25
26
|
get showThumbnails(): boolean;
|
|
26
27
|
set showThumbnails(value: boolean);
|
|
28
|
+
/**
|
|
29
|
+
* Tabs a host adds after Word's own, as an Office add-in does. Each command runs its `run`
|
|
30
|
+
* callback and dispatches `office-ribbon-add-in` (`{ tab, command }`) from the editor.
|
|
31
|
+
*/
|
|
32
|
+
get ribbonAddIns(): readonly RibbonAddInTab[];
|
|
33
|
+
set ribbonAddIns(value: readonly RibbonAddInTab[]);
|
|
27
34
|
/** Hides the ribbon (the title bar and status bar stay). Default true; `show-toolbar="false"`. */
|
|
28
35
|
get showToolbar(): boolean;
|
|
29
36
|
set showToolbar(value: boolean);
|
package/dist/docx/events.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DocumentModel } from 'ooxml-core/docx';
|
|
2
|
+
import type { RibbonAddInCommandDetail } from 'ooxml-core/ribbon';
|
|
2
3
|
import type { StepBatch } from 'ooxml-core/docx/ui';
|
|
3
4
|
import type { FileCommandDetail } from './file-commands.js';
|
|
4
5
|
import type { PageChangeDetail } from './page-sync.js';
|
|
@@ -28,12 +29,14 @@ export interface DocxEditorEventMap {
|
|
|
28
29
|
'presence-send': CustomEvent<PresenceMessage>;
|
|
29
30
|
/** Local steps are pending; transport the batch to the collaboration authority. */
|
|
30
31
|
'collaboration-send': CustomEvent<StepBatch>;
|
|
32
|
+
/** A command of a host tab (`ribbonAddIns`) was chosen. */
|
|
33
|
+
'office-ribbon-add-in': CustomEvent<RibbonAddInCommandDetail>;
|
|
31
34
|
}
|
|
32
35
|
export type DocxEditorEventName = keyof DocxEditorEventMap;
|
|
33
36
|
/** Detail payload type of the named event. */
|
|
34
37
|
export type DocxEditorEventDetail<K extends DocxEditorEventName> = DocxEditorEventMap[K] extends CustomEvent<infer D> ? D : never;
|
|
35
38
|
/** Runtime list of every event name; the `satisfies` check keeps it a subset of the map. */
|
|
36
|
-
export declare const DOCX_EDITOR_EVENTS: readonly ["document-change", "document-error", "document-warning", "readonly-change", "ribbon-action", "ribbon-customize", "file-command", "page-change", "dirty-change", "presence-send", "collaboration-send"];
|
|
39
|
+
export declare const DOCX_EDITOR_EVENTS: readonly ["document-change", "document-error", "document-warning", "readonly-change", "ribbon-action", "ribbon-customize", "file-command", "page-change", "dirty-change", "presence-send", "collaboration-send", "office-ribbon-add-in"];
|
|
37
40
|
/** Typed listener for plain elements (such as the ribbon) that are not a `<docx-editor>`. */
|
|
38
41
|
export declare function on<K extends DocxEditorEventName>(target: EventTarget, name: K, listener: (event: DocxEditorEventMap[K]) => void): void;
|
|
39
42
|
/**
|
package/dist/docx/index.d.ts
CHANGED
|
@@ -22,3 +22,4 @@ export type { ReviewDisplayMode } from './review-display.js';
|
|
|
22
22
|
export type { RevisionRange } from './review-commands.js';
|
|
23
23
|
export { lightTheme, darkTheme, themeToCssVars } from 'ooxml-core/docx/ui';
|
|
24
24
|
export type { EditorTheme, EditorThemeMode } from 'ooxml-core/docx/ui';
|
|
25
|
+
export { RIBBON_ADD_IN_EVENT, type OfficeRibbonAddInEvent, type RibbonAddInCommand, type RibbonAddInCommandDetail, type RibbonAddInGroup, type RibbonAddInTab, } from '../ribbon/add-in-tabs.js';
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
/** The five variants under a theme colour, as Word's grid shows them (lighter, then darker). */
|
|
2
|
-
export declare function themeShades(hex: string): string[];
|
|
3
1
|
export interface ColorGridOptions {
|
|
4
2
|
/** Label of the first row's "clear" command, or omitted when the property cannot be cleared. */
|
|
5
3
|
noneLabel?: string;
|
|
6
4
|
}
|
|
7
5
|
/**
|
|
8
|
-
* Word's colour picker
|
|
9
|
-
* variants), Standard Colors and More
|
|
6
|
+
* Word's colour picker on the shared `office-ui-color-grid`: a no-colour row, Theme Colors (ten
|
|
7
|
+
* columns, each a colour over the five variants Office derives from it), Standard Colors and More
|
|
8
|
+
* Colors (the browser's colour dialog). A choice is reported as `#rrggbb`, or `'none'`.
|
|
10
9
|
*/
|
|
11
10
|
export declare function openColorGridPopover(anchor: HTMLElement, choose: (value: string) => void, options?: ColorGridOptions): void;
|
package/dist/docx.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { syncRibbonAddIns } from './chunk-W6AV3GHC.js';
|
|
2
|
+
export { RIBBON_ADD_IN_EVENT } from './chunk-W6AV3GHC.js';
|
|
1
3
|
import { defineSmartArt } from './chunk-PXIYHFZ5.js';
|
|
2
4
|
import { shadcnBridge } from './chunk-BCH2ZLWI.js';
|
|
3
|
-
import { createRibbonOverflow, defineRibbon, defineRuler, defineCommentsPane, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineRibbonActions, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-
|
|
5
|
+
import { createRibbonOverflow, defineRibbon, defineRuler, defineCommentsPane, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineRibbonActions, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, defineColorGrid, runKeyTips, assignKeyTips } from './chunk-O7APCA5N.js';
|
|
4
6
|
import { registerIcon } from './chunk-M6GF5ED2.js';
|
|
5
7
|
import './chunk-L7JV5FVE.js';
|
|
6
8
|
import './chunk-OGNNNTKI.js';
|
|
@@ -4983,7 +4985,8 @@ var DOCX_EDITOR_EVENTS = [
|
|
|
4983
4985
|
"page-change",
|
|
4984
4986
|
"dirty-change",
|
|
4985
4987
|
"presence-send",
|
|
4986
|
-
"collaboration-send"
|
|
4988
|
+
"collaboration-send",
|
|
4989
|
+
"office-ribbon-add-in"
|
|
4987
4990
|
];
|
|
4988
4991
|
function on(target, name, listener) {
|
|
4989
4992
|
target.addEventListener(name, (event) => listener(event));
|
|
@@ -5386,93 +5389,36 @@ var STANDARD = [
|
|
|
5386
5389
|
["#002060", "Dark Blue"],
|
|
5387
5390
|
["#7030a0", "Purple"]
|
|
5388
5391
|
];
|
|
5389
|
-
function mix(hex, target, amount) {
|
|
5390
|
-
const channel = (at) => {
|
|
5391
|
-
const value = parseInt(hex.slice(at, at + 2), 16);
|
|
5392
|
-
return Math.round(value + (target - value) * amount).toString(16).padStart(2, "0");
|
|
5393
|
-
};
|
|
5394
|
-
return `#${channel(1)}${channel(3)}${channel(5)}`;
|
|
5395
|
-
}
|
|
5396
|
-
function themeShades(hex) {
|
|
5397
|
-
if (hex === "#ffffff") return [0.05, 0.15, 0.25, 0.35, 0.5].map((n) => mix(hex, 0, n));
|
|
5398
|
-
if (hex === "#000000") return [0.5, 0.35, 0.25, 0.15, 0.05].map((n) => mix(hex, 255, n));
|
|
5399
|
-
return [
|
|
5400
|
-
mix(hex, 255, 0.8),
|
|
5401
|
-
mix(hex, 255, 0.6),
|
|
5402
|
-
mix(hex, 255, 0.4),
|
|
5403
|
-
mix(hex, 0, 0.25),
|
|
5404
|
-
mix(hex, 0, 0.5)
|
|
5405
|
-
];
|
|
5406
|
-
}
|
|
5407
5392
|
function openColorGridPopover(anchor, choose, options = {}) {
|
|
5408
5393
|
const locale = localeOf(anchor);
|
|
5409
5394
|
const say = (text) => translate(locale, text);
|
|
5395
|
+
defineColorGrid();
|
|
5410
5396
|
const pop = document.createElement("div");
|
|
5411
5397
|
pop.className = "ribbon-popover color-grid";
|
|
5412
|
-
pop.setAttribute("role", "menu");
|
|
5413
5398
|
const pick = (value) => {
|
|
5414
5399
|
closeRibbonPopover();
|
|
5415
5400
|
choose(value);
|
|
5416
5401
|
};
|
|
5417
|
-
const
|
|
5418
|
-
|
|
5419
|
-
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
|
|
5426
|
-
item.addEventListener("mousedown", (event) => event.preventDefault());
|
|
5427
|
-
item.addEventListener("click", () => pick(value));
|
|
5428
|
-
return item;
|
|
5429
|
-
};
|
|
5430
|
-
const title = (text) => {
|
|
5431
|
-
const el = document.createElement("div");
|
|
5432
|
-
el.className = "color-grid-title";
|
|
5433
|
-
el.textContent = say(text);
|
|
5434
|
-
return el;
|
|
5435
|
-
};
|
|
5436
|
-
const grid = (...items) => {
|
|
5437
|
-
const el = document.createElement("div");
|
|
5438
|
-
el.className = "color-grid-cells";
|
|
5439
|
-
el.append(...items);
|
|
5440
|
-
return el;
|
|
5441
|
-
};
|
|
5442
|
-
if (options.noneLabel) {
|
|
5443
|
-
const none = document.createElement("button");
|
|
5444
|
-
none.type = "button";
|
|
5445
|
-
none.setAttribute("role", "menuitem");
|
|
5446
|
-
none.className = "color-grid-command";
|
|
5447
|
-
none.textContent = say(options.noneLabel);
|
|
5448
|
-
none.addEventListener("mousedown", (event) => event.preventDefault());
|
|
5449
|
-
none.addEventListener("click", () => pick("none"));
|
|
5450
|
-
pop.append(none);
|
|
5451
|
-
}
|
|
5452
|
-
const shades = THEME.map(([hex]) => themeShades(hex));
|
|
5453
|
-
pop.append(
|
|
5454
|
-
title("Theme Colors"),
|
|
5455
|
-
grid(
|
|
5456
|
-
...THEME.map(([hex, name]) => swatch(hex, name)),
|
|
5457
|
-
...[0, 1, 2, 3, 4].flatMap(
|
|
5458
|
-
(row3) => THEME.map(([, name], column) => swatch(shades[column][row3], name))
|
|
5459
|
-
)
|
|
5460
|
-
),
|
|
5461
|
-
title("Standard Colors"),
|
|
5462
|
-
grid(...STANDARD.map(([hex, name]) => swatch(hex, name)))
|
|
5463
|
-
);
|
|
5464
|
-
const more = document.createElement("button");
|
|
5465
|
-
more.type = "button";
|
|
5466
|
-
more.setAttribute("role", "menuitem");
|
|
5467
|
-
more.className = "color-grid-command";
|
|
5468
|
-
more.textContent = say("More Colors\u2026");
|
|
5402
|
+
const grid = document.createElement("office-ui-color-grid");
|
|
5403
|
+
grid.themeColors = THEME.map(([hex]) => hex);
|
|
5404
|
+
grid.themeNames = THEME.map(([, name]) => say(name));
|
|
5405
|
+
grid.variantLabel = (column) => column;
|
|
5406
|
+
grid.standardColors = STANDARD.map(([hex, name]) => ({ hex, label: say(name) }));
|
|
5407
|
+
grid.themeHeading = say("Theme Colors");
|
|
5408
|
+
grid.standardHeading = say("Standard Colors");
|
|
5409
|
+
grid.moreLabel = say("More Colors\u2026");
|
|
5410
|
+
if (options.noneLabel) grid.noneLabel = say(options.noneLabel);
|
|
5469
5411
|
const input = Object.assign(document.createElement("input"), { type: "color" });
|
|
5470
5412
|
input.className = "color-grid-input";
|
|
5471
5413
|
input.tabIndex = -1;
|
|
5472
5414
|
input.addEventListener("change", () => pick(input.value));
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
5415
|
+
grid.addEventListener(
|
|
5416
|
+
"office-color-pick",
|
|
5417
|
+
(event) => pick(event.detail.color)
|
|
5418
|
+
);
|
|
5419
|
+
grid.addEventListener("office-color-more", () => input.click());
|
|
5420
|
+
pop.addEventListener("mousedown", (event) => event.preventDefault());
|
|
5421
|
+
pop.append(grid, input);
|
|
5476
5422
|
if (!mountPopover(anchor, pop, anchor)) return;
|
|
5477
5423
|
const box2 = anchor.getBoundingClientRect();
|
|
5478
5424
|
pop.style.left = `${Math.max(4, box2.left - 120)}px`;
|
|
@@ -7469,7 +7415,8 @@ function setRibbonLocale(root, value) {
|
|
|
7469
7415
|
root.dataset.editorLocale = locale;
|
|
7470
7416
|
localizeElement(root, locale);
|
|
7471
7417
|
for (const panel of panelsOf(root))
|
|
7472
|
-
|
|
7418
|
+
if (!("addIn" in panel.dataset))
|
|
7419
|
+
panel.dataset.label = translate(locale, `tab.${panel.dataset.ribbonTab}`);
|
|
7473
7420
|
root.setAttribute("file-label", translate(locale, "File"));
|
|
7474
7421
|
root.setAttribute("collapse-label", translate(locale, "Collapse the ribbon"));
|
|
7475
7422
|
syncSelectTitles(root);
|
|
@@ -16319,6 +16266,8 @@ var EditorCore = class {
|
|
|
16319
16266
|
}
|
|
16320
16267
|
element;
|
|
16321
16268
|
model = createDocument();
|
|
16269
|
+
/** Tabs the host added after Word's own (`ribbonAddIns` of the element). */
|
|
16270
|
+
ribbonAddIns = [];
|
|
16322
16271
|
view;
|
|
16323
16272
|
loaded;
|
|
16324
16273
|
loadGeneration = 0;
|
|
@@ -16471,7 +16420,7 @@ var ribbon_widgets_default = ".dve-keytip {\n position: absolute;\n bottom: -2px
|
|
|
16471
16420
|
var ribbon_styles_group_default = "/* Styles group: gallery, previous/next/more strip, expanded gallery and pane. */\n.style-strip {\n display: flex;\n flex-direction: column;\n gap: 1px;\n width: 16px;\n}\n.ribbon-group .style-strip .style-strip-button {\n flex: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n min-width: 16px;\n height: 16px;\n min-height: 0;\n padding: 0;\n border-radius: 2px;\n}\n.ribbon-popover.styles-popover {\n display: block;\n max-height: min(70vh, 520px);\n max-width: 420px;\n overflow-y: auto;\n padding: 8px;\n}\n.styles-section-title {\n margin: 4px 2px 6px;\n color: var(--muted);\n font:\n 600 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.styles-grid {\n display: grid;\n grid-template-columns: repeat(4, 88px);\n gap: 4px;\n}\n.styles-popover .style-tile,\n.dve-styles-pane .style-tile {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 50px;\n padding: 4px 2px;\n border: 1px solid #d5d8dc;\n background: #fff;\n color: #1f1f1f;\n cursor: pointer;\n}\n.styles-popover .style-tile[aria-pressed='true'],\n.dve-styles-pane .style-tile[aria-pressed='true'] {\n border-color: var(--blue);\n background: #e8f0fa;\n}\n.styles-popover .style-tile:hover:not(:disabled),\n.dve-styles-pane .style-tile:hover:not(:disabled) {\n border-color: #a8c4e6;\n background: #f3f7fc;\n}\n.styles-commands {\n display: grid;\n gap: 2px;\n margin-top: 8px;\n padding-top: 6px;\n border-top: 1px solid var(--line);\n}\n.styles-command {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 8px;\n border: 0;\n border-radius: 3px;\n background: none;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n cursor: pointer;\n}\n.styles-command:hover:not(:disabled) {\n background: var(--accent-soft);\n}\n.styles-command:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.dve-styles-pane {\n flex: none;\n width: 260px;\n min-height: 0;\n overflow-y: auto;\n padding: 10px 12px;\n border-left: 1px solid var(--line);\n background: var(--surface);\n color: var(--ink);\n}\n.dve-styles-pane[hidden] {\n display: none;\n}\n.dve-styles-pane-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.dve-styles-pane h2 {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n}\n.dve-styles-pane h3 {\n margin: 14px 0 6px;\n color: var(--muted);\n font:\n 600 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.dve-styles-pane-header button {\n border: 0;\n background: none;\n color: var(--muted);\n font-size: 18px;\n cursor: pointer;\n}\n.dve-styles-pane-list {\n display: grid;\n gap: 4px;\n}\n.dve-styles-pane .style-tile {\n flex-direction: row;\n justify-content: space-between;\n height: 34px;\n padding: 2px 10px;\n}\n.dve-styles-pane .style-name {\n color: #555;\n}\n";
|
|
16472
16421
|
|
|
16473
16422
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-popups.css?raw
|
|
16474
|
-
var ribbon_popups_default = "/* Editing: a row-height command with a caret menu, and the Go To panel. */\n.ribbon-split-inline {\n display: flex;\n align-items: center;\n height: 22px;\n}\n.ribbon-group .ribbon-split-inline .ribbon-inline {\n flex: 1;\n width: auto;\n}\n.ribbon-menu.ribbon-menu-caret {\n flex: none;\n width: 18px;\n height: 22px;\n padding: 0;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: 0;\n}\n.ribbon-menu.ribbon-menu-caret > .ribbon-icon:last-of-type {\n margin-top: 0;\n}\n.ribbon-popover.go-to-panel {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n width: 280px;\n padding: 10px;\n}\n.go-to-panel label {\n display: grid;\n gap: 4px;\n color: var(--muted);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.go-to-panel select {\n height: 28px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n}\n.go-to-list {\n display: flex;\n flex-direction: column;\n max-height: 220px;\n overflow-y: auto;\n}\n.go-to-list button {\n overflow: hidden;\n padding: 5px 8px;\n border: 0;\n background: none;\n color: var(--ink);\n font:\n 13px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n text-overflow: ellipsis;\n cursor: pointer;\n}\n.go-to-list button:hover,\n.go-to-list button:focus-visible {\n background: var(--accent-soft);\n}\n.go-to-list p {\n margin: 6px 8px;\n color: var(--muted);\n font-size: 12px;\n}\n\n/* Insert > Table size picker. */\n.ribbon-popover.table-picker {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n width: 206px;\n padding: 10px;\n}\n.table-picker-caption {\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.table-picker-grid {\n display: grid;\n grid-template-columns: repeat(10, 18px);\n gap: 2px;\n outline: none;\n}\n.table-picker-grid:focus-visible {\n outline: 2px solid var(--blue);\n outline-offset: 2px;\n}\n.table-picker-grid [role='gridcell'] {\n width: 18px;\n height: 18px;\n border: 1px solid var(--line);\n background: var(--surface);\n cursor: pointer;\n}\n.table-picker-grid [role='gridcell'].active {\n border-color: var(--blue);\n background: color-mix(in srgb, var(--blue) 22%, transparent);\n}\n.table-picker-custom {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n padding-top: 6px;\n border-top: 1px solid var(--line);\n}\n.table-picker-custom label {\n display: grid;\n gap: 2px;\n color: var(--muted);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.table-picker-custom input {\n height: 24px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n}\n.table-picker-insert {\n grid-column: 1 / -1;\n height: 26px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n cursor: pointer;\n}\n.table-picker-insert:hover {\n background: var(--accent-soft);\n}\n\n/* Colour picker:
|
|
16423
|
+
var ribbon_popups_default = "/* Editing: a row-height command with a caret menu, and the Go To panel. */\n.ribbon-split-inline {\n display: flex;\n align-items: center;\n height: 22px;\n}\n.ribbon-group .ribbon-split-inline .ribbon-inline {\n flex: 1;\n width: auto;\n}\n.ribbon-menu.ribbon-menu-caret {\n flex: none;\n width: 18px;\n height: 22px;\n padding: 0;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: 0;\n}\n.ribbon-menu.ribbon-menu-caret > .ribbon-icon:last-of-type {\n margin-top: 0;\n}\n.ribbon-popover.go-to-panel {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n width: 280px;\n padding: 10px;\n}\n.go-to-panel label {\n display: grid;\n gap: 4px;\n color: var(--muted);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.go-to-panel select {\n height: 28px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n}\n.go-to-list {\n display: flex;\n flex-direction: column;\n max-height: 220px;\n overflow-y: auto;\n}\n.go-to-list button {\n overflow: hidden;\n padding: 5px 8px;\n border: 0;\n background: none;\n color: var(--ink);\n font:\n 13px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n text-overflow: ellipsis;\n cursor: pointer;\n}\n.go-to-list button:hover,\n.go-to-list button:focus-visible {\n background: var(--accent-soft);\n}\n.go-to-list p {\n margin: 6px 8px;\n color: var(--muted);\n font-size: 12px;\n}\n\n/* Insert > Table size picker. */\n.ribbon-popover.table-picker {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: 8px;\n width: 206px;\n padding: 10px;\n}\n.table-picker-caption {\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.table-picker-grid {\n display: grid;\n grid-template-columns: repeat(10, 18px);\n gap: 2px;\n outline: none;\n}\n.table-picker-grid:focus-visible {\n outline: 2px solid var(--blue);\n outline-offset: 2px;\n}\n.table-picker-grid [role='gridcell'] {\n width: 18px;\n height: 18px;\n border: 1px solid var(--line);\n background: var(--surface);\n cursor: pointer;\n}\n.table-picker-grid [role='gridcell'].active {\n border-color: var(--blue);\n background: color-mix(in srgb, var(--blue) 22%, transparent);\n}\n.table-picker-custom {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n padding-top: 6px;\n border-top: 1px solid var(--line);\n}\n.table-picker-custom label {\n display: grid;\n gap: 2px;\n color: var(--muted);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.table-picker-custom input {\n height: 24px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n}\n.table-picker-insert {\n grid-column: 1 / -1;\n height: 26px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n cursor: pointer;\n}\n.table-picker-insert:hover {\n background: var(--accent-soft);\n}\n\n/* Colour picker: the shared office-ui-color-grid in a ribbon popover. */\n.ribbon-popover.color-grid {\n display: block;\n padding: 4px;\n}\n.color-grid-input {\n position: absolute;\n width: 0;\n height: 0;\n padding: 0;\n border: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n/* Layout galleries: page thumbnails with a name and detail, for Margins, Size, Orientation, Columns. */\n.ribbon-menu-gallery select.ribbon-menu-input {\n pointer-events: none;\n}\n.ribbon-popover.ribbon-gallery-menu {\n display: flex;\n flex-direction: column;\n gap: 0;\n min-width: 220px;\n max-height: min(70vh, 460px);\n overflow-y: auto;\n padding: 4px;\n}\n.ribbon-gallery-menu button {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 6px 10px;\n border: 1px solid transparent;\n border-radius: 3px;\n background: none;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: left;\n cursor: pointer;\n}\n.ribbon-gallery-menu button:hover,\n.ribbon-gallery-menu button:focus-visible {\n border-color: var(--line);\n background: var(--accent-soft);\n outline: none;\n}\n.ribbon-gallery-menu button[aria-checked='true'] {\n border-color: var(--blue);\n}\n.gallery-words {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.gallery-name {\n font-weight: 600;\n}\n.gallery-detail {\n color: var(--muted);\n font-size: 11px;\n}\n.gallery-thumb {\n flex: none;\n}\n.gallery-thumb .thumb-page {\n fill: #fff;\n stroke: #8a8886;\n stroke-width: 0.8;\n}\n.gallery-thumb .thumb-line {\n stroke: #a19f9d;\n stroke-width: 1.2;\n}\n\n/* Collapsed groups: a narrow ribbon folds its rightmost groups into one dropdown button each. */\n.ribbon-overflow-button {\n display: none !important;\n}\n.ribbon-group[data-collapsed] {\n width: auto !important;\n min-width: 0;\n max-width: none;\n flex-wrap: nowrap;\n}\n.ribbon-group[data-collapsed] > :not(.ribbon-overflow-button) {\n display: none !important;\n}\n.ribbon-group[data-collapsed] > .ribbon-overflow-button {\n display: flex !important;\n}\n.ribbon-group button.ribbon-overflow-button[aria-expanded='true'] {\n border-color: var(--line);\n background: var(--accent-soft);\n}\n.ribbon-popover.ribbon-overflow-panel {\n display: block;\n padding: 6px 8px 2px;\n}\n.ribbon-overflow-panel .ribbon-group {\n height: 84px;\n max-width: none;\n padding-right: 2px;\n border: 0;\n}\n.ribbon-group[data-collapsed]::after {\n display: none;\n}\n/* The Language group's tall stack of fields reads as one column inside its dropdown. */\n.ribbon-overflow-panel .ribbon-group.multilingual-controls {\n width: 300px !important;\n height: auto;\n max-height: min(70vh, 420px);\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: stretch;\n padding-bottom: 20px;\n overflow-y: auto;\n}\n.gallery-thumb .thumb-edge-on {\n stroke: var(--ink);\n stroke-width: 1.6;\n}\n.gallery-thumb .thumb-edge-off {\n stroke: var(--muted);\n stroke-width: 1;\n stroke-dasharray: 1.5 1.5;\n}\n.gallery-thumb .thumb-line-dark {\n stroke: var(--ink);\n}\n.gallery-thumb .thumb-arrow {\n fill: none;\n stroke: var(--blue);\n stroke-width: 1.2;\n}\n.ribbon-gallery-menu .gallery-command {\n margin-top: 4px;\n padding-top: 8px;\n border-top: 1px solid var(--line);\n border-radius: 0;\n}\n";
|
|
16475
16424
|
|
|
16476
16425
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/ribbon-polish.css?raw
|
|
16477
16426
|
var ribbon_polish_default = "/* Ribbon polish: distinct pressed state and Word's accent hues on command icons. Loaded last. */\n:host {\n --ribbon-accent-blue: #2b7cd3;\n --ribbon-accent-green: #2f9e5f;\n --ribbon-accent-red: #d13438;\n --ribbon-accent-orange: #d9822b;\n}\n@media (prefers-color-scheme: dark) {\n :host(:not([theme='light'])) {\n --ribbon-accent-blue: #5ea5f0;\n --ribbon-accent-green: #5cc98a;\n --ribbon-accent-red: #f07a7d;\n --ribbon-accent-orange: #f0a35e;\n }\n}\n:host([theme='dark']) {\n --ribbon-accent-blue: #5ea5f0;\n --ribbon-accent-green: #5cc98a;\n --ribbon-accent-red: #f07a7d;\n --ribbon-accent-orange: #f0a35e;\n}\n\n/* Pressed reads darker than hover, and pressing a control gives immediate feedback. */\n.ribbon-group button[aria-pressed='true'] {\n border-color: color-mix(in srgb, var(--blue) 45%, transparent);\n background: color-mix(in srgb, var(--blue) 20%, transparent);\n}\n.ribbon-group button[aria-pressed='true']:hover:not(:disabled) {\n background: color-mix(in srgb, var(--blue) 30%, transparent);\n}\n.ribbon-group button:active:not(:disabled),\n.ribbon-menu:active:not(:has(select:disabled)) {\n background: color-mix(in srgb, var(--blue) 28%, transparent);\n}\n\n/* Accent hues (buttons only; a disabled control keeps its 0.4 opacity). */\n.ribbon-icon[data-icon='table'],\n.ribbon-icon[data-icon='find'],\n.ribbon-icon[data-icon='replace'],\n.ribbon-icon[data-icon='link'],\n.ribbon-icon[data-icon='crossReference'],\n.ribbon-icon[data-icon='toc'],\n.ribbon-icon[data-icon='updateTable'],\n.ribbon-icon[data-icon='header'],\n.ribbon-icon[data-icon='footer'],\n.ribbon-icon[data-icon='pageNumber'],\n.ribbon-icon[data-icon='pageNumberIcon'],\n.ribbon-icon[data-icon='margins'],\n.ribbon-icon[data-icon='orientation'],\n.ribbon-icon[data-icon='pageSize'],\n.ribbon-icon[data-icon='columns'],\n.ribbon-icon[data-icon='select'],\n.ribbon-icon[data-icon='paste'],\n.ribbon-icon[data-icon='borders'],\n.ribbon-icon[data-icon='rowAbove'],\n.ribbon-icon[data-icon='rowBelow'],\n.ribbon-icon[data-icon='columnLeft'],\n.ribbon-icon[data-icon='columnRight'] {\n color: var(--ribbon-accent-blue);\n}\n.ribbon-icon[data-icon='picture'],\n.ribbon-icon[data-icon='formatPicture'],\n.ribbon-icon[data-icon='formatPainter'],\n.ribbon-icon[data-icon='accept'],\n.ribbon-icon[data-icon='acceptAll'],\n.ribbon-icon[data-icon='spelling'],\n.ribbon-icon[data-icon='readAloud'] {\n color: var(--ribbon-accent-green);\n}\n.ribbon-icon[data-icon='reject'],\n.ribbon-icon[data-icon='rejectAll'],\n.ribbon-icon[data-icon='deleteRow'],\n.ribbon-icon[data-icon='deleteColumn'],\n.ribbon-icon[data-icon='deleteTable'],\n.ribbon-icon[data-icon='deleteComment'],\n.ribbon-icon[data-icon='clear'] {\n color: var(--ribbon-accent-red);\n}\n.ribbon-icon[data-icon='comment'],\n.ribbon-icon[data-icon='comments'],\n.ribbon-icon[data-icon='bookmark'],\n.ribbon-icon[data-icon='caption'],\n.ribbon-icon[data-icon='footnote'],\n.ribbon-icon[data-icon='endnote'],\n.ribbon-icon[data-icon='coverPage'] {\n color: var(--ribbon-accent-orange);\n}\n\n/* Icons never shrink to make room for a two-line caption, so every large icon is the same size. */\n.ribbon-menu > .ribbon-icon,\n.ribbon-large > .ribbon-icon {\n flex: none;\n}\n\n/* A two-line caption plus the caret must still fit the dropdown command's box. */\n.ribbon-menu:not(.ribbon-menu-compact):not(.ribbon-menu-caret) {\n gap: 1px;\n height: 72px;\n line-height: 1.1;\n}\n.ribbon-menu:not(.ribbon-menu-compact):not(.ribbon-menu-caret) > .ribbon-icon:last-of-type {\n margin-top: -3px;\n}\n";
|
|
@@ -20250,12 +20199,20 @@ function buildShell(core, api) {
|
|
|
20250
20199
|
if (core.pendingFileName) chrome.fileName = core.pendingFileName;
|
|
20251
20200
|
root.append(style, frame);
|
|
20252
20201
|
Object.assign(shell, { toolbar, canvas, paper });
|
|
20202
|
+
applyRibbonAddIns(core);
|
|
20253
20203
|
chrome.setLocale(core.locale);
|
|
20254
20204
|
applyViewOptions(core);
|
|
20255
20205
|
attachEditorInteractions(core, frame);
|
|
20256
20206
|
element.setAttribute("role", "region");
|
|
20257
20207
|
applyShellLabels(element, paper, core.locale);
|
|
20258
20208
|
}
|
|
20209
|
+
function applyRibbonAddIns(core) {
|
|
20210
|
+
const toolbar = core.shell.toolbar;
|
|
20211
|
+
if (!toolbar) return;
|
|
20212
|
+
const before = toolbar.querySelector("[data-add-in]");
|
|
20213
|
+
syncRibbonAddIns(toolbar, core.ribbonAddIns, { panelClass: "ribbon-panel" });
|
|
20214
|
+
if (toolbar.querySelector("[data-add-in]") !== before) refitRibbon(toolbar);
|
|
20215
|
+
}
|
|
20259
20216
|
var key = new PluginKey("dve-tab-stops");
|
|
20260
20217
|
var MAX_PASSES = 4;
|
|
20261
20218
|
var stopsOf = (paragraph2) => (paragraph2.attrs.tabStops ?? []).map((stop) => ({
|
|
@@ -20663,6 +20620,17 @@ var DocxEditorApi = class extends HTMLElementBase {
|
|
|
20663
20620
|
}
|
|
20664
20621
|
reflectAttribute(this, "show-thumbnails", this.showThumbnails);
|
|
20665
20622
|
}
|
|
20623
|
+
/**
|
|
20624
|
+
* Tabs a host adds after Word's own, as an Office add-in does. Each command runs its `run`
|
|
20625
|
+
* callback and dispatches `office-ribbon-add-in` (`{ tab, command }`) from the editor.
|
|
20626
|
+
*/
|
|
20627
|
+
get ribbonAddIns() {
|
|
20628
|
+
return this.core.ribbonAddIns;
|
|
20629
|
+
}
|
|
20630
|
+
set ribbonAddIns(value) {
|
|
20631
|
+
this.core.ribbonAddIns = value ?? [];
|
|
20632
|
+
applyRibbonAddIns(this.core);
|
|
20633
|
+
}
|
|
20666
20634
|
/** Hides the ribbon (the title bar and status bar stay). Default true; `show-toolbar="false"`. */
|
|
20667
20635
|
get showToolbar() {
|
|
20668
20636
|
return this.core.viewOptions.showToolbar;
|
package/dist/edit-worker.js
CHANGED
|
@@ -1,14 +1,63 @@
|
|
|
1
1
|
import { convertMetafileToSvgTree } from 'emf-converter';
|
|
2
|
-
import { editVsdx, parseVsdx } from 'ooxml-core/visio';
|
|
2
|
+
import { editVsdx, parseVsdx, setVisioTextMeasurer } from 'ooxml-core/visio';
|
|
3
|
+
|
|
4
|
+
// src/visio/edit-worker.ts
|
|
5
|
+
var PROBE_PX = 1e3;
|
|
6
|
+
var PROBE = "mmmmmmmmmmlliWW@#0123456789";
|
|
7
|
+
var GENERIC = ["monospace", "serif"];
|
|
8
|
+
function createCanvasTextMeasurer(context) {
|
|
9
|
+
const installed = /* @__PURE__ */ new Map();
|
|
10
|
+
const face = (family, bold, italic, fallback) => `${italic ? "italic " : ""}${bold ? "bold " : ""}${PROBE_PX}px ${JSON.stringify(family)}${fallback ? `, ${fallback}` : ""}`;
|
|
11
|
+
const width = (font, text) => {
|
|
12
|
+
context.font = font;
|
|
13
|
+
if ("fontKerning" in context) context.fontKerning = "none";
|
|
14
|
+
return context.measureText(text).width;
|
|
15
|
+
};
|
|
16
|
+
const available = (family) => {
|
|
17
|
+
const key = family.toLowerCase();
|
|
18
|
+
const known = installed.get(key);
|
|
19
|
+
if (known !== void 0) return known;
|
|
20
|
+
const result = !/["\\]/.test(family) && GENERIC.some(
|
|
21
|
+
(generic) => width(face(family, false, false, generic), PROBE) !== width(`${PROBE_PX}px ${generic}`, PROBE)
|
|
22
|
+
) && // Measuring the same in front of both fallbacks: the family itself drew the text.
|
|
23
|
+
width(face(family, false, false, "monospace"), PROBE) === width(face(family, false, false, "serif"), PROBE);
|
|
24
|
+
installed.set(key, result);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
tolerance: 0.01,
|
|
29
|
+
width(text, style) {
|
|
30
|
+
if (style.position || style.textCase || !available(style.fontFamily)) return void 0;
|
|
31
|
+
const measured = width(face(style.fontFamily, style.bold, style.italic), text);
|
|
32
|
+
if (!Number.isFinite(measured)) return void 0;
|
|
33
|
+
return measured / PROBE_PX * style.fontSize + (style.letterSpacing ?? 0) * Array.from(text).length;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function installBrowserTextMeasurer() {
|
|
38
|
+
let context = null;
|
|
39
|
+
try {
|
|
40
|
+
if (typeof OffscreenCanvas !== "undefined")
|
|
41
|
+
context = new OffscreenCanvas(1, 1).getContext("2d");
|
|
42
|
+
else if (typeof document !== "undefined")
|
|
43
|
+
context = document.createElement("canvas").getContext("2d");
|
|
44
|
+
} catch {
|
|
45
|
+
context = null;
|
|
46
|
+
}
|
|
47
|
+
if (!context) return false;
|
|
48
|
+
setVisioTextMeasurer(createCanvasTextMeasurer(context));
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
3
51
|
|
|
4
52
|
// src/visio/edit-worker.ts
|
|
5
53
|
var worker = self;
|
|
54
|
+
installBrowserTextMeasurer();
|
|
6
55
|
worker.onmessage = async (event) => {
|
|
7
56
|
if (event.origin && event.origin !== self.location.origin) return;
|
|
8
57
|
try {
|
|
9
58
|
const result = await editVsdx(event.data.bytes, event.data.edits);
|
|
10
|
-
const
|
|
11
|
-
worker.postMessage({ ok: true, ...result, document }, [result.bytes.buffer]);
|
|
59
|
+
const document2 = await parseVsdx(result.bytes, { metafileConverter: convertMetafileToSvgTree });
|
|
60
|
+
worker.postMessage({ ok: true, ...result, document: document2 }, [result.bytes.buffer]);
|
|
12
61
|
} catch (cause) {
|
|
13
62
|
worker.postMessage({
|
|
14
63
|
ok: false,
|