ooxml-ui 1.12.2 → 1.13.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/custom-elements.json +19 -4
- package/dist/chrome/status-layout.d.ts +23 -0
- package/dist/{chunk-GI3WX6LZ.js → chunk-3XST4F6J.js} +1 -1
- package/dist/{chunk-S6ZXU442.js → chunk-7E3HU7RL.js} +1 -1
- package/dist/{chunk-PXIYHFZ5.js → chunk-ANPFMQ6E.js} +1 -1
- package/dist/{chunk-FUQYUUIQ.js → chunk-BFPHRWEB.js} +356 -99
- package/dist/{chunk-OGNNNTKI.js → chunk-CWBSXK7P.js} +1 -1
- package/dist/{chunk-3H5NR32A.js → chunk-D7JPVAYS.js} +319 -202
- package/dist/{chunk-NLJVBHLG.js → chunk-EL2A3BDM.js} +5 -5
- package/dist/{chunk-L7JV5FVE.js → chunk-KNC2UEUR.js} +1 -1
- package/dist/{chunk-SPNWHKSR.js → chunk-LD3K2RDN.js} +7 -5
- package/dist/chunk-UBBC5FH7.js +31 -0
- package/dist/{chunk-HZSYGNNB.js → chunk-VRVFLYGI.js} +1 -0
- package/dist/controls.d.ts +2 -1
- package/dist/controls.d.ts.map +1 -1
- package/dist/controls.js +4 -4
- package/dist/dialog/options-categories.d.ts +39 -0
- package/dist/dialog/options-categories.d.ts.map +1 -0
- package/dist/dialog/options-controls.d.ts +49 -0
- package/dist/dialog/options-controls.d.ts.map +1 -0
- package/dist/dialog/options-dialog.d.ts +35 -41
- package/dist/dialog/options-dialog.d.ts.map +1 -1
- package/dist/docx/auto-fit.d.ts +10 -0
- package/dist/docx/backstage-customize.d.ts +7 -0
- package/dist/docx/backstage-options.d.ts +13 -3
- package/dist/docx/backstage-pages.d.ts +0 -6
- package/dist/docx/backstage.d.ts +3 -0
- package/dist/docx/canvas-click.d.ts +7 -0
- package/dist/docx/locales/en-app.d.ts +1 -0
- package/dist/docx/locales/en.d.ts +5 -0
- package/dist/docx/locales/options.d.ts +11 -0
- package/dist/docx/localization-strings.d.ts +5 -0
- package/dist/docx/page-controller.d.ts +17 -3
- package/dist/docx/print-editing.d.ts +2 -0
- package/dist/docx/print-layout-view.d.ts +2 -0
- package/dist/docx/status-bar.d.ts +1 -1
- package/dist/docx.js +531 -218
- package/dist/form/color-swatches.d.ts +8 -5
- package/dist/form/color-swatches.d.ts.map +1 -1
- package/dist/index.js +10 -10
- package/dist/pptx/{chunk-5AD3V3PA.mjs → chunk-CB2DZVKL.mjs} +127 -1
- package/dist/pptx/{chunk-4EHNTVSN.mjs → chunk-DZUSNYRA.mjs} +1310 -216
- package/dist/pptx/{chunk-Y7CDPPMZ.cjs → chunk-J3GEBMYK.cjs} +127 -1
- package/dist/pptx/{chunk-LMZK4UNY.cjs → chunk-J4HVGXPW.cjs} +1333 -213
- package/dist/pptx/dom/elements/table.d.ts.map +1 -1
- package/dist/pptx/dom/index.cjs +209 -206
- package/dist/pptx/dom/index.mjs +8 -5
- package/dist/pptx/dom/load-presentation.d.ts +3 -1
- package/dist/pptx/dom/load-presentation.d.ts.map +1 -1
- package/dist/pptx/dom/slide-stage.d.ts +3 -1
- package/dist/pptx/dom/slide-stage.d.ts.map +1 -1
- package/dist/pptx/dom/types.d.ts +6 -1
- package/dist/pptx/dom/types.d.ts.map +1 -1
- package/dist/pptx/i18n/index.cjs +6 -6
- package/dist/pptx/i18n/index.mjs +1 -1
- package/dist/pptx/i18n/translations-en-galleries-data.d.ts.map +1 -1
- package/dist/pptx/i18n/translations-en-table-layout.d.ts +3 -0
- package/dist/pptx/i18n/translations-en-table-layout.d.ts.map +1 -0
- package/dist/pptx/i18n/translations-en.d.ts.map +1 -1
- package/dist/pptx/index.cjs +2838 -2758
- package/dist/pptx/index.mjs +2 -2
- package/dist/pptx/render/action-buttons.d.ts +2 -0
- package/dist/pptx/render/action-buttons.d.ts.map +1 -1
- package/dist/pptx/render/comment-navigation.d.ts +51 -0
- package/dist/pptx/render/comment-navigation.d.ts.map +1 -0
- package/dist/pptx/render/customization/ribbon-control-catalog-tail.d.ts +61 -0
- package/dist/pptx/render/customization/ribbon-control-catalog-tail.d.ts.map +1 -1
- package/dist/pptx/render/customization/ribbon-control-catalog.d.ts +61 -0
- package/dist/pptx/render/customization/ribbon-control-catalog.d.ts.map +1 -1
- package/dist/pptx/render/index.d.ts +2 -0
- package/dist/pptx/render/index.d.ts.map +1 -1
- package/dist/pptx/render/review-comment-commands.d.ts +42 -0
- package/dist/pptx/render/review-comment-commands.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-galleries/gallery-placements.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/gallery-registry.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts +17 -1
- package/dist/pptx/render/ribbon-galleries/gallery-types.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/gallery-view.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/index.d.ts +2 -0
- package/dist/pptx/render/ribbon-galleries/index.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/shape-styles-gallery.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/table-layout-commands.d.ts +7 -0
- package/dist/pptx/render/ribbon-galleries/table-layout-commands.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-galleries/table-layout-ops.d.ts +64 -0
- package/dist/pptx/render/ribbon-galleries/table-layout-ops.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-galleries/table-style-tile-svg.d.ts +7 -3
- package/dist/pptx/render/ribbon-galleries/table-style-tile-svg.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/table-styles-gallery.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/table-text-direction-gallery.d.ts +3 -0
- package/dist/pptx/render/ribbon-galleries/table-text-direction-gallery.d.ts.map +1 -0
- package/dist/pptx/render/ribbon-galleries/theme-colors-gallery.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-galleries/theme-fonts-gallery.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-home-families-objects.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-home-spec.d.ts +10 -6
- package/dist/pptx/render/ribbon-home-spec.d.ts.map +1 -1
- package/dist/pptx/render/ribbon-review-commands.d.ts +7 -0
- package/dist/pptx/render/ribbon-review-commands.d.ts.map +1 -1
- package/dist/pptx/render/shape-quick-styles.d.ts +6 -0
- package/dist/pptx/render/shape-quick-styles.d.ts.map +1 -1
- package/dist/pptx/render/table-style-borders.d.ts.map +1 -1
- package/dist/pptx/render/table-style-builtins-data.d.ts +7 -1
- package/dist/pptx/render/table-style-builtins-data.d.ts.map +1 -1
- package/dist/pptx/render/table-style-scheme.d.ts +2 -0
- package/dist/pptx/render/table-style-scheme.d.ts.map +1 -1
- package/dist/pptx/render/table-style-theme-refs.d.ts +16 -0
- package/dist/pptx/render/table-style-theme-refs.d.ts.map +1 -0
- package/dist/pptx/render/table-style.d.ts +7 -1
- package/dist/pptx/render/table-style.d.ts.map +1 -1
- package/dist/pptx/render/theme-color-swatches.d.ts +1 -1
- package/dist/pptx/render/theme-color-swatches.d.ts.map +1 -1
- package/dist/pptx/render/toolbar-actions.d.ts +1 -1
- package/dist/pptx/render/toolbar-actions.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-draw-view.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-home-colour.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-insert-view.d.ts.map +1 -1
- package/dist/presence.js +3 -3
- package/dist/{presentation-preview-VIIU7E2S.js → presentation-preview-HVKJ3KJN.js} +1 -1
- package/dist/ribbon/auto-collapse.d.ts +8 -0
- package/dist/ribbon/auto-collapse.d.ts.map +1 -0
- package/dist/ribbon/group-overflow.d.ts +7 -0
- package/dist/ribbon/group-overflow.d.ts.map +1 -1
- package/dist/ribbon/overflow.d.ts +7 -0
- package/dist/ribbon/overflow.d.ts.map +1 -1
- package/dist/ribbon/ribbon-tabs.d.ts +5 -0
- package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
- package/dist/ribbon/scroll-more.d.ts +17 -0
- package/dist/ribbon/scroll-more.d.ts.map +1 -0
- package/dist/smartart.js +3 -3
- package/dist/teams/app/activity.d.ts +5 -0
- package/dist/teams/app/pinned-bar.d.ts +24 -0
- package/dist/teams/app/profile-menu.d.ts +18 -1
- package/dist/teams/app/teams-app.d.ts +8 -3
- package/dist/teams/app-rail.d.ts +3 -1
- package/dist/teams/avatar.d.ts +2 -2
- package/dist/teams/chat-list.d.ts +10 -2
- package/dist/teams.js +7 -7
- package/dist/theme.js +2 -2
- package/dist/tokens.d.ts +7 -5
- package/dist/tokens.d.ts.map +1 -1
- package/dist/visio/viewer-gesture-state.d.ts +54 -0
- package/dist/visio/viewer-options-categories.d.ts +8 -0
- package/dist/visio/viewer-options.d.ts +3 -7
- package/dist/visio/viewer-touch-gestures.d.ts +17 -0
- package/dist/visio/viewer-touch-hit.d.ts +3 -0
- package/dist/visio/viewer-touch-long-press.d.ts +13 -0
- package/dist/visio/viewer-touch-math.d.ts +44 -0
- package/dist/visio.js +319 -149
- package/dist/xlsx/backstage/index.d.ts +3 -0
- package/dist/xlsx/backstage/options-customize.d.ts +7 -0
- package/dist/xlsx/backstage/options-dialog.d.ts +13 -0
- package/dist/xlsx/ribbon/ribbon.d.ts +1 -1
- package/dist/xlsx/status-bar.d.ts +1 -1
- package/dist/xlsx.js +282 -172
- package/package.json +2 -2
- package/dist/teams/app/navigation-drawer.d.ts +0 -26
- package/dist/xlsx/backstage/pages-options.d.ts +0 -7
package/dist/xlsx.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
import { statusLayout, watchStatusWidth } from './chunk-UBBC5FH7.js';
|
|
1
2
|
import { trackPointerGesture } from './chunk-GSXOZCAN.js';
|
|
2
|
-
import './chunk-
|
|
3
|
-
import { syncRibbonAddIns } from './chunk-
|
|
4
|
-
export { RIBBON_ADD_IN_EVENT } from './chunk-
|
|
5
|
-
import { defineSmartArt } from './chunk-
|
|
6
|
-
import { withExtension, saveExtension, downloadBytes, emit, emitEvent, blobFor, announceFileCommand, pickFile } from './chunk-
|
|
7
|
-
export { XLSX_EDITOR_EVENTS } from './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import { shadcnBridge } from './chunk-
|
|
10
|
-
import { range_control_default, createRibbonOverflow, defineBackstage, defineRibbon, defineRibbonActions, defineTitleBar, defineStatusBar, defineZoomSlider, rangeControl, defineDialog, runKeyTips, assignKeyTips,
|
|
3
|
+
import './chunk-EL2A3BDM.js';
|
|
4
|
+
import { syncRibbonAddIns } from './chunk-3XST4F6J.js';
|
|
5
|
+
export { RIBBON_ADD_IN_EVENT } from './chunk-3XST4F6J.js';
|
|
6
|
+
import { defineSmartArt } from './chunk-ANPFMQ6E.js';
|
|
7
|
+
import { withExtension, saveExtension, downloadBytes, emit, emitEvent, blobFor, announceFileCommand, pickFile } from './chunk-D7JPVAYS.js';
|
|
8
|
+
export { XLSX_EDITOR_EVENTS } from './chunk-D7JPVAYS.js';
|
|
9
|
+
import './chunk-VRVFLYGI.js';
|
|
10
|
+
import { shadcnBridge } from './chunk-7E3HU7RL.js';
|
|
11
|
+
import { range_control_default, createRibbonOverflow, defineBackstage, defineRibbon, defineRibbonActions, defineTitleBar, defineStatusBar, defineZoomSlider, defineOptionsDialog, rangeControl, defineDialog, optionsLabels, runKeyTips, assignKeyTips, userInterfaceSection, personalizeSection, optionText, unavailableControl, unavailableCategory, defineGallery, defineColorGrid, defineContextMenu, defineCommentsPane, parseSvgPreview } from './chunk-BFPHRWEB.js';
|
|
11
12
|
import { getIcon, registerIcon } from './chunk-M6GF5ED2.js';
|
|
12
|
-
import { definePresence } from './chunk-
|
|
13
|
-
import { withTokens } from './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import { SPECIAL_CODES, FRACTION_CODES, AUTOSUM_FUNCTIONS, themeToCssVars, lightTheme, darkTheme, ICON_ACCENTS, ICON_PATHS, normalizeThemeMode, applyThemeColors, parseSelectionRef, selectionRef,
|
|
13
|
+
import { definePresence } from './chunk-KNC2UEUR.js';
|
|
14
|
+
import { withTokens } from './chunk-CWBSXK7P.js';
|
|
15
|
+
import './chunk-LD3K2RDN.js';
|
|
16
|
+
import { SPECIAL_CODES, FRACTION_CODES, translate, AUTOSUM_FUNCTIONS, themeToCssVars, lightTheme, darkTheme, ICON_ACCENTS, ICON_PATHS, normalizeEditorLocale, normalizeThemeMode, applyThemeColors, parseSelectionRef, selectionRef, DirtyState, createCommandRegistry, createDialogRegistry, activeRef, createSelectionModel, SheetSelections, translator, initialSelection, sheetBaseName, historyOf, onRibbonTabsChange, activeChart, editChart, ribbonTabs, isTabHidden, selectTab, setTabHidden, tabButton, searchCommands, formatNumber, TEMPLATES, createTemplateWorkbook, isMenuSeparator, registerRibbonTabs, installFormatPainter, SHEET_ICONS, clipboardCommands, fontCommands, alignmentCommands, numberCommands, cellCommands, editingCommands, pageLayoutCommands, pageBreakCommands, formulaCommands, dataCommands, contextualCommands, reviewTab, viewTab, helpTab, editBridge, CellViewCache, QUADRANTS, columnHeaderHeight, rowHeaderWidth, GridGeometry, cellRange, scrollToReveal, buildItems, fitNumber, cssFont, clampAddress, selectCell, movingEnd, extendSelection, moveWithinSelection, rowsRange, colsRange, ALL_RANGE, tabMenu, editing, icon, DATA_BAR_COLORS, dataBarRule, COLOR_SCALES, colorScaleRule, iconSetRule, target, tableAt, viewing, activeTable, numberFormatOptions, FONT_NAMES, FONT_SIZES, BORDER_PRESETS, ORIENTATIONS, ACCOUNTING_FORMATS, themePaletteItems, MARGIN_PRESETS, PAPER_SIZES, FUNCTION_MENUS, MORE_FUNCTION_CATEGORIES, functionsIn, isSingleCell, spanRange, selectionCellCount, addRange, activeStyle, selectSpecial, insertFunctionCall, guessHeader, regionOf, HIGHLIGHT_STYLES, ICON_SETS, TABLE_STYLES, tableStylePreview, resolveNameBox, absoluteReference, nameForRange, fillPaint, iconSvg, colSelected, rowSelected, rowHeaderMenu, columnHeaderMenu, cellMenu, recentFunctions, evaluateRef, buildChart, detectCategory, CATEGORIES, TIME_CODES, DATE_CODES, DEFAULT_OPTIONS, cellStyleItems, textDecoration, justify, alignItems, textAlign, hasBorders, edgeCss, diagonalSvg, SYMBOLS, buildCode, UNSET, dxfCss, negativeCodes, iconCount, iconThresholds, rowsOf, colsOf } from 'ooxml-core/xlsx/ui';
|
|
16
17
|
export { EDITOR_LOCALES, THEME_KEYS, normalizeEditorLocale, registerRibbonTabs, themeToCssVars, darkTheme as xlsxDarkTheme, lightTheme as xlsxLightTheme } from 'ooxml-core/xlsx/ui';
|
|
17
18
|
import { createWorksheet, createEditSession, approximateMeasure, createWorkbook, MAX_ROW, MAX_COL, chartView, createRefEvaluator, chartBarSpacing, CHART_FILL_PARTS, selectionStats, formatSelectionStat, printRange, formatRange, chartSeriesTransparencyPatch, chartSeriesTransparency, chartSeriesGradientPatch, chartSeriesSolidFillPatch, chartSeriesFillPatch, chartWithElementFills, chartElementTransparencyPatch, chartElementTransparency, chartElementGradientPatch, chartElementSolidFillPatch, chartElementFillPatch, chartElementFill, chartGradientStopTransparency, paginateWorksheet, resolveColor, DEFAULT_THEME, pageHeaderFooter, createGridMetrics, createPrintMergeIndex, formatAddress, cellView, renderHeaderFooterRuns, nextSheetName, FUNCTION_CATALOG, mergeAt, visibleCells, getCell, cellInputText, closeParens, isFormulaText, parseCellInput, referenceTarget, navigate, anchorToPixelBox, renderChartSvg, pixelBoxToAnchor, listValidationOptions, validationAt, getValue, resolvePasteOptions, DEFAULT_COL_WIDTH, nameAtCaret, functionMatches, callAtCaret, splice, acceptsReference, translateFormula, isCellError, layoutRemoteSelections, parseHtmlTable, toggleAbsolute, rangeContains, formatValue, isDateFormat, pictureAnchorAt, selectedSparklineGroups, pivotTableAt, validateDefinedName, usedRange, parseAddress, parseRange, styleAt, rangesIntersect, chartColorScheme, coloredReferences, syntaxParams, activeParam, columnLabel, THEME_SLOTS, normalizeRange, currentRegion, autoFitColumnWidth, validateSheetName, dateToSerial, IMAGE_EXTENSIONS, verifySheetPassword, verifyWorkbookPassword, sheetByName, quoteSheetName, pivotSourceData, printTitles, formatPrintTitleSpan, parsePrintTitleSpan, pivotPageItems, pivotPageItemLabel, serialToDate, BUILTIN_NUMBER_FORMATS, pixelsToColumnWidth, validateTableName } from 'ooxml-core/xlsx';
|
|
18
19
|
import { hyperlinkPolicy } from 'ooxml-core/opc';
|
|
@@ -22,7 +23,7 @@ import { RECT_GRADIENT_DIRECTIONS, OFFICE_GRADIENT_PRESETS, officeGradientPreset
|
|
|
22
23
|
import { applyResize, applyDragDelta } from 'ooxml-core/geometry';
|
|
23
24
|
|
|
24
25
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/xlsx/theme/shell.css?raw
|
|
25
|
-
var shell_default = "/* Frame, title bar and status bar. Mirrors docx-viewer's chrome (styles/base.css,\n chrome-titlebar.css, status-dialogs.css) with --xve-* tokens. */\n:host {\n --xl: var(--xve-primary);\n --xl-strong: color-mix(in srgb, var(--xve-primary) 70%, #000);\n --xl-soft: color-mix(in srgb, var(--xve-primary) 12%, transparent);\n --accent-soft: var(--xl-soft);\n --ink: var(--xve-foreground);\n --muted: var(--xve-muted-foreground);\n --line: var(--xve-border);\n --surface: var(--xve-card);\n --chrome: var(--xve-background);\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n color: var(--ink);\n font:\n 13px/1.35 'Segoe UI',\n Arial,\n sans-serif;\n}\n.xve-frame {\n position: relative;\n display: flex;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n min-width: 0;\n flex-direction: column;\n overflow: hidden;\n background: var(--surface);\n}\n:focus-visible {\n outline: 2px solid var(--xve-ring);\n outline-offset: 1px;\n}\n[hidden],\n[data-xve-hidden] {\n display: none !important;\n}\n.xve-icon {\n flex: none;\n}\n.xve-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 6px;\n border: 0;\n border-radius: 4px;\n background: none;\n color: inherit;\n font: inherit;\n cursor: pointer;\n}\n.xve-icon-button:hover:not(:disabled),\n.xve-icon-button[aria-pressed='true'] {\n background: var(--xl-soft);\n}\n.xve-icon-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n/* Workspace: formula bar, grid and sheet tabs between the ribbon and the status bar. */\n.xve-workspace {\n position: relative;\n display: flex;\n flex: 1;\n min-height: 0;\n min-width: 0;\n flex-direction: column;\n background: var(--xve-sheet-bg);\n}\n.xve-formula-row {\n flex: none;\n min-width: 0;\n border-bottom: 1px solid var(--line);\n background: var(--surface);\n}\n.xve-grid-host {\n position: relative;\n display: flex;\n flex: 1;\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n background: var(--xve-sheet-bg);\n color-scheme: light;\n}\n.xve-grid-host > * {\n flex: 1;\n min-width: 0;\n}\n.xve-tabs-row {\n flex: none;\n min-width: 0;\n border-top: 1px solid var(--line);\n background: var(--chrome);\n}\n.xve-empty {\n position: absolute;\n z-index: 5;\n inset: 0;\n display: grid;\n place-items: center;\n color: var(--muted);\n background: var(--chrome);\n}\n:host([show-formula-bar='false']) .xve-formula-row,\n:host([show-toolbar='false']) .xve-ribbon {\n display: none;\n}\n\n/* Title bar: drawn by the shared office-ui-title-bar; the mark, background and borders come from its tokens. */\n.xve-titlebar {\n display: block;\n flex: none;\n --office-title-bar-background: var(--chrome);\n --office-title-bar-foreground: var(--ink);\n --office-title-bar-border: var(--line);\n --office-title-bar-mark-background: var(--xl);\n --office-title-bar-mark-foreground: var(--xve-primary-foreground);\n}\n\n/* Status bar: drawn by the shared office-ui-status-bar; this places it and styles the slotted stats. */\n.xve-status {\n display: block;\n flex: none;\n min-width: 0;\n border-top: 1px solid var(--line);\n}\n.xve-status-stats {\n margin-inline-end: 10px;\n overflow: hidden;\n color: var(--ink);\n font-size: 11px;\n
|
|
26
|
+
var shell_default = "/* Frame, title bar and status bar. Mirrors docx-viewer's chrome (styles/base.css,\n chrome-titlebar.css, status-dialogs.css) with --xve-* tokens. */\n:host {\n --xl: var(--xve-primary);\n --xl-strong: color-mix(in srgb, var(--xve-primary) 70%, #000);\n --xl-soft: color-mix(in srgb, var(--xve-primary) 12%, transparent);\n --accent-soft: var(--xl-soft);\n --ink: var(--xve-foreground);\n --muted: var(--xve-muted-foreground);\n --line: var(--xve-border);\n --surface: var(--xve-card);\n --chrome: var(--xve-background);\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n color: var(--ink);\n font:\n 13px/1.35 'Segoe UI',\n Arial,\n sans-serif;\n}\n.xve-frame {\n position: relative;\n display: flex;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n min-width: 0;\n flex-direction: column;\n overflow: hidden;\n background: var(--surface);\n}\n:focus-visible {\n outline: 2px solid var(--xve-ring);\n outline-offset: 1px;\n}\n[hidden],\n[data-xve-hidden] {\n display: none !important;\n}\n.xve-icon {\n flex: none;\n}\n.xve-icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 6px;\n border: 0;\n border-radius: 4px;\n background: none;\n color: inherit;\n font: inherit;\n cursor: pointer;\n}\n.xve-icon-button:hover:not(:disabled),\n.xve-icon-button[aria-pressed='true'] {\n background: var(--xl-soft);\n}\n.xve-icon-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n/* Workspace: formula bar, grid and sheet tabs between the ribbon and the status bar. */\n.xve-workspace {\n position: relative;\n display: flex;\n flex: 1;\n min-height: 0;\n min-width: 0;\n flex-direction: column;\n background: var(--xve-sheet-bg);\n}\n.xve-formula-row {\n flex: none;\n min-width: 0;\n border-bottom: 1px solid var(--line);\n background: var(--surface);\n}\n.xve-grid-host {\n position: relative;\n display: flex;\n flex: 1;\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n background: var(--xve-sheet-bg);\n color-scheme: light;\n}\n.xve-grid-host > * {\n flex: 1;\n min-width: 0;\n}\n.xve-tabs-row {\n flex: none;\n min-width: 0;\n border-top: 1px solid var(--line);\n background: var(--chrome);\n}\n.xve-empty {\n position: absolute;\n z-index: 5;\n inset: 0;\n display: grid;\n place-items: center;\n color: var(--muted);\n background: var(--chrome);\n}\n:host([show-formula-bar='false']) .xve-formula-row,\n:host([show-toolbar='false']) .xve-ribbon {\n display: none;\n}\n\n/* Title bar: drawn by the shared office-ui-title-bar; the mark, background and borders come from its tokens. */\n.xve-titlebar {\n display: block;\n flex: none;\n --office-title-bar-background: var(--chrome);\n --office-title-bar-foreground: var(--ink);\n --office-title-bar-border: var(--line);\n --office-title-bar-mark-background: var(--xl);\n --office-title-bar-mark-foreground: var(--xve-primary-foreground);\n}\n\n/* Status bar: drawn by the shared office-ui-status-bar; this places it and styles the slotted stats. */\n.xve-status {\n display: block;\n flex: none;\n min-width: 0;\n border-top: 1px solid var(--line);\n}\n.xve-status-stats {\n margin-inline-end: 10px;\n min-width: 0;\n overflow: hidden;\n color: var(--ink);\n font-size: 11px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n";
|
|
26
27
|
|
|
27
28
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/xlsx/theme/ribbon.css?raw
|
|
28
29
|
var ribbon_default = "/* Ribbon: tabs, panels, groups and controls. Mirrors docx-viewer's styles/ribbon*.css. */\n.xve-ribbon-gallery[data-office-gallery] .trigger {\n flex-direction: column;\n justify-content: center;\n min-width: 56px;\n height: 78px;\n white-space: normal;\n text-align: center;\n}\n.xve-ribbon-gallery[data-office-gallery] .trigger > svg {\n width: 28px;\n height: 28px;\n}\n.xve-ribbon-gallery[data-office-gallery] .trigger > span:not([aria-hidden]) {\n max-width: 56px;\n}\n.xve-ribbon {\n position: relative;\n display: flex;\n flex: none;\n min-width: 0;\n flex-direction: column;\n background: var(--surface);\n border-bottom: 1px solid var(--line);\n}\n/* The tab row, File button and collapse button are the shared office-ui-ribbon; these colour it. */\n.xve-ribbon {\n --office-ribbon-contextual: #0f7b6c;\n}\n.xve-ribbon::part(file) {\n font-weight: 600;\n}\n.ribbon-panel {\n display: flex;\n flex: none;\n box-sizing: border-box;\n height: 104px;\n min-width: 0;\n align-items: stretch;\n gap: 4px;\n padding: 6px 10px 4px;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n}\n.ribbon-group {\n position: relative;\n display: flex;\n flex: 0 0 auto;\n align-items: flex-start;\n min-width: 0;\n gap: 2px;\n padding: 2px 10px 18px 2px;\n border-right: 1px solid var(--line);\n}\n.ribbon-group:last-child {\n border: 0;\n}\n.ribbon-group::after {\n position: absolute;\n right: 0;\n bottom: 2px;\n left: 0;\n color: var(--muted);\n font-size: 10px;\n line-height: 1.1;\n text-align: center;\n white-space: nowrap;\n content: attr(data-caption);\n}\n.ribbon-caption-sizer {\n position: absolute;\n visibility: hidden;\n font-size: 10px;\n white-space: nowrap;\n}\n.ribbon-stack {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n}\n.ribbon-stack > .ribbon-stack {\n flex-direction: row;\n align-items: center;\n}\n.ribbon-separator {\n align-self: stretch;\n width: 1px;\n margin: 2px 3px;\n background: var(--line);\n}\n.ribbon-stack > .ribbon-separator {\n width: auto;\n height: 1px;\n}\n.ribbon-stack > .ribbon-stack > .ribbon-separator {\n width: 1px;\n height: 20px;\n}\n\n/* Buttons */\n.ribbon-group button {\n flex: none;\n min-width: 28px;\n height: 28px;\n max-width: 100%;\n padding: 0 4px;\n overflow: hidden;\n border: 1px solid transparent;\n border-radius: 4px;\n background: transparent;\n color: var(--ink);\n font:\n 400 12px 'Segoe UI',\n Arial,\n sans-serif;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n}\n.ribbon-group button:hover:not(:disabled) {\n border-color: var(--line);\n background: var(--accent-soft);\n}\n.ribbon-group button[aria-pressed='true'],\n.ribbon-group button[aria-expanded='true'] {\n border-color: color-mix(in srgb, var(--xl) 45%, transparent);\n background: color-mix(in srgb, var(--xl) 20%, transparent);\n}\n.ribbon-group button:active:not(:disabled) {\n background: color-mix(in srgb, var(--xl) 28%, transparent);\n}\n.ribbon-group button:focus-visible {\n outline: 2px solid var(--xl);\n outline-offset: -2px;\n}\n.ribbon-group button:disabled,\n.ribbon-group input:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.ribbon-group button.ribbon-small {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n height: 24px;\n padding: 0 3px;\n}\n.ribbon-group button.ribbon-small.ribbon-labelled {\n justify-content: flex-start;\n padding: 0 6px 0 4px;\n}\n.ribbon-group button.ribbon-large {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n gap: 2px;\n width: auto;\n min-width: 48px;\n height: 76px;\n padding: 3px 3px 2px;\n font-size: 11px;\n line-height: 1.15;\n white-space: normal;\n text-align: center;\n}\n.ribbon-large > .ribbon-icon:last-child:not(:first-child) {\n margin-top: auto;\n}\n.ribbon-large > span,\n.ribbon-caption {\n /* Two balanced lines (see ribbon/caption.ts); the button grows to the widest. */\n white-space: pre;\n}\n.ribbon-icon {\n flex: none;\n}\n.ribbon-icon[data-icon$='-caret'],\n.ribbon-icon[data-icon='caret'] {\n opacity: 0.8;\n}\n\n/* Split buttons: a main half and a caret that opens a menu or the colour grid. */\n.ribbon-split {\n display: inline-flex;\n align-items: stretch;\n}\n.ribbon-split.ribbon-split-large {\n flex-direction: column;\n}\n.ribbon-group .ribbon-split > button:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.ribbon-group .ribbon-split > .ribbon-caret {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n min-width: 14px;\n padding: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.ribbon-group .ribbon-split-large > button:first-child {\n height: 46px;\n border-radius: 4px 4px 0 0;\n}\n.ribbon-group .ribbon-split-large > .ribbon-caret {\n width: auto;\n height: 26px;\n border-radius: 0 0 4px 4px;\n font-size: 11px;\n flex-direction: column;\n gap: 0;\n}\n.ribbon-color {\n position: relative;\n}\n.ribbon-group button.ribbon-color::after {\n position: absolute;\n right: 4px;\n bottom: 2px;\n left: 4px;\n height: 3px;\n background: var(--bar, transparent);\n outline: 1px solid var(--line);\n content: '';\n}\n\n/* Editable combo boxes (font name and size) and plain selects. */\n.ribbon-combo {\n display: inline-flex;\n align-items: stretch;\n height: 24px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n}\n.ribbon-combo:focus-within {\n border-color: var(--xl);\n outline: 1px solid var(--xl);\n}\n.ribbon-combo input {\n flex: 1;\n min-width: 0;\n padding: 0 6px;\n border: 0;\n background: transparent;\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n outline: none;\n}\n.ribbon-group .ribbon-combo .ribbon-caret {\n width: 18px;\n min-width: 18px;\n height: 100%;\n padding: 0;\n border: 0;\n border-radius: 0;\n}\n\n/* Plain drop-downs (Number Format) and gallery previews. */\n.ribbon-group select.ribbon-select {\n height: 24px;\n padding: 0 6px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n color: var(--ink);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n text-overflow: ellipsis;\n}\n.ribbon-group select.ribbon-select:focus-visible {\n outline: 2px solid var(--xl);\n outline-offset: -1px;\n}\n.ribbon-gallery-preview {\n display: block;\n height: 36px;\n margin-bottom: 3px;\n border: 1px solid var(--line);\n border-radius: 2px;\n background: #fff;\n color: #1f1f1f;\n font-size: 11px;\n line-height: 36px;\n text-align: center;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.ribbon-gallery-preview > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n/* Dialog launcher: the corner arrow of a group. */\n.ribbon-group button.ribbon-launcher {\n position: absolute;\n right: 2px;\n bottom: 0;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n min-width: 14px;\n height: 14px;\n padding: 0;\n color: var(--muted);\n}\n\n/* Collapsed groups: a narrow ribbon folds its rightmost groups into one dropdown each. */\n.ribbon-group > .ribbon-overflow-button {\n display: none;\n}\n.ribbon-group[data-collapsed] {\n padding-right: 4px;\n}\n.ribbon-group[data-collapsed] > :not(.ribbon-overflow-button) {\n display: none !important;\n}\n.ribbon-group[data-collapsed] > button.ribbon-overflow-button {\n display: flex;\n}\n.ribbon-group[data-collapsed]::after {\n display: none;\n}\n.ribbon-overflow-panel .ribbon-group {\n height: 84px;\n padding-right: 2px;\n border: 0;\n}\n\n/* KeyTips */\n.xve-keytip {\n position: absolute;\n bottom: -2px;\n left: 50%;\n z-index: 70;\n min-width: 16px;\n padding: 1px 4px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: #1f1f1f;\n color: #fff;\n font:\n 600 11px/14px 'Segoe UI',\n Arial,\n sans-serif;\n text-align: center;\n pointer-events: none;\n transform: translateX(-50%);\n}\n.xve-keytip-command {\n position: fixed;\n bottom: auto;\n}\n\n/* Accent hues on command icons, as in Office. */\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.ribbon-icon[data-accent='blue'] {\n color: var(--ribbon-accent-blue);\n}\n.ribbon-icon[data-accent='green'] {\n color: var(--ribbon-accent-green);\n}\n.ribbon-icon[data-accent='red'] {\n color: var(--ribbon-accent-red);\n}\n.ribbon-icon[data-accent='orange'] {\n color: var(--ribbon-accent-orange);\n}\n";
|
|
@@ -34,7 +35,7 @@ var ribbon_parity_default = ".xve-cell-styles[mode='inline'] .strip {\n display:
|
|
|
34
35
|
var popups_default = "/* Floating surfaces: ribbon popovers, menus, the colour grid, Tell me, toasts and the shell dialogs. */\n.ribbon-popover {\n position: fixed;\n z-index: 1000;\n box-sizing: border-box;\n padding: 4px;\n border: 1px solid var(--line);\n border-radius: 6px;\n background: var(--xve-popover);\n box-shadow: 0 6px 20px rgb(0 0 0 / 0.18);\n color: var(--xve-popover-foreground);\n font:\n 12px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.ribbon-popover.ribbon-menu-list,\n.ribbon-popover.ribbon-list {\n display: flex;\n min-width: 180px;\n max-height: min(70vh, 420px);\n flex-direction: column;\n overflow-y: auto;\n}\n.ribbon-menu-list [role='menuitem'],\n.ribbon-menu-list [role='menuitemcheckbox'],\n.ribbon-list [role='option'] {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 5px 12px 5px 8px;\n border: 0;\n border-radius: 3px;\n background: none;\n color: inherit;\n font: inherit;\n text-align: left;\n white-space: nowrap;\n cursor: pointer;\n}\n.ribbon-menu-list [role^='menuitem']:hover:not(:disabled),\n.ribbon-menu-list [role^='menuitem']:focus-visible,\n.ribbon-list [role='option']:hover,\n.ribbon-list [role='option']:focus-visible {\n background: var(--accent-soft);\n outline: none;\n}\n.ribbon-menu-list [role^='menuitem']:disabled {\n opacity: 0.45;\n cursor: default;\n}\n.ribbon-menu-list [aria-checked='true'] {\n font-weight: 600;\n}\n.ribbon-menu-list .ribbon-menu-icon {\n display: inline-flex;\n width: 16px;\n}\n.ribbon-menu-list .ribbon-menu-shortcut {\n margin-left: auto;\n padding-left: 18px;\n color: var(--muted);\n}\n.ribbon-menu-list [role='separator'] {\n height: 1px;\n margin: 4px 2px;\n background: var(--line);\n}\n.ribbon-list [aria-selected='true'] {\n color: var(--xl);\n font-weight: 600;\n}\n.ribbon-popover.ribbon-gallery-menu {\n display: grid;\n grid-template-columns: repeat(4, 96px);\n gap: 4px;\n max-height: min(70vh, 420px);\n overflow-y: auto;\n}\n.ribbon-gallery-menu button {\n padding: 4px;\n border: 1px solid transparent;\n border-radius: 3px;\n background: none;\n color: inherit;\n font: inherit;\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\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/* Toasts */\n.xve-toasts {\n position: absolute;\n z-index: 90;\n right: 16px;\n bottom: 40px;\n display: flex;\n max-width: min(420px, calc(100% - 32px));\n flex-direction: column;\n gap: 8px;\n pointer-events: none;\n}\n.xve-toast {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--line);\n border-left: 4px solid var(--xl);\n border-radius: 6px;\n background: var(--xve-popover);\n box-shadow: 0 8px 24px #0003;\n color: var(--xve-popover-foreground);\n pointer-events: auto;\n}\n.xve-toast[data-kind='warning'] {\n border-left-color: #b7791f;\n}\n.xve-toast[data-kind='error'] {\n border-left-color: var(--xve-destructive);\n}\n.xve-toast-text {\n flex: 1;\n}\n\n/* Shell dialogs (shortcut help, prompts) */\n.xve-dialog {\n position: absolute;\n z-index: 85;\n top: 120px;\n left: 50%;\n display: grid;\n box-sizing: border-box;\n width: min(440px, calc(100% - 32px));\n gap: 10px;\n padding: 18px 20px;\n border: 1px solid var(--line);\n border-radius: 8px;\n background: var(--xve-popover);\n box-shadow: 0 12px 32px #0003;\n color: var(--ink);\n transform: translateX(-50%);\n}\n.xve-dialog h2 {\n margin: 0 0 4px;\n font-size: 16px;\n font-weight: 600;\n}\n.xve-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 6px;\n}\n.xve-dialog-actions button {\n min-height: 30px;\n padding: 0 14px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n cursor: pointer;\n}\n.xve-dialog-actions .xve-dialog-primary {\n border-color: var(--xl);\n background: var(--xl);\n color: var(--xve-primary-foreground);\n}\n.xve-shortcut-help {\n width: min(620px, calc(100% - 32px));\n max-height: calc(100% - 160px);\n overflow: auto;\n}\n.xve-shortcut-help p {\n margin: 0;\n color: var(--muted);\n font-size: 12px;\n}\n.xve-shortcut-help table {\n width: 100%;\n border-collapse: collapse;\n}\n.xve-shortcut-help th,\n.xve-shortcut-help td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--line);\n text-align: left;\n vertical-align: top;\n}\n.xve-shortcut-help th {\n color: var(--muted);\n font-size: 12px;\n font-weight: 600;\n}\n.xve-shortcut-help kbd {\n padding: 1px 6px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n font:\n 12px/1.4 ui-monospace,\n Consolas,\n monospace;\n white-space: nowrap;\n}\n";
|
|
35
36
|
|
|
36
37
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/xlsx/theme/backstage.css?raw
|
|
37
|
-
var backstage_default = "/* File backstage: the shared office-ui-backstage draws the navigation; these style the page content.\n The nav colours come from its tokens. */\n.xve-backstage {\n z-index: 40;\n --office-background: var(--surface);\n --office-backstage-nav-background: var(--xl);\n --office-backstage-nav-foreground: var(--xve-primary-foreground);\n}\n.xve-backstage-content {\n overflow: auto;\n padding: 28px 40px;\n color: var(--ink);\n}\n.xve-backstage-content h2 {\n margin: 0 0 20px;\n font-size: 30px;\n font-weight: 300;\n}\n.xve-backstage-content h3 {\n margin: 24px 0 10px;\n font-size: 15px;\n font-weight: 600;\n}\n.xve-backstage-title {\n margin: 0 0 4px;\n font-size: 26px;\n font-weight: 400;\n overflow-wrap: anywhere;\n}\n.xve-backstage-muted {\n color: var(--muted);\n}\n.xve-backstage-facts {\n display: grid;\n grid-template-columns: max-content minmax(0, 1fr);\n gap: 6px 24px;\n margin: 0;\n}\n.xve-backstage-facts dt {\n color: var(--muted);\n}\n.xve-backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.xve-compatibility-notes {\n display: grid;\n gap: 8px;\n max-width: 760px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.xve-compatibility-notes li {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--line);\n border-radius: 6px;\n line-height: 1.45;\n}\n.xve-compatibility-notes .xve-icon {\n margin-top: 2px;\n color: #b7791f;\n}\n.xve-backstage-columns {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 300px;\n gap: 40px;\n align-items: start;\n}\n.xve-backstage-properties {\n padding: 4px 0 0 24px;\n border-left: 1px solid var(--line);\n}\n.xve-backstage-properties h3 {\n margin-top: 0;\n}\n.xve-backstage-tiles {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n.xve-backstage-tile {\n display: inline-flex;\n flex-direction: column;\n gap: 8px;\n padding: 8px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: none;\n color: var(--ink);\n font: inherit;\n cursor: pointer;\n}\n.xve-backstage-tile:hover {\n border-color: var(--line);\n background: var(--xl-soft);\n}\n.xve-backstage-tile-preview {\n display: block;\n width: 150px;\n height: 112px;\n border: 1px solid var(--line);\n background-color: #fff;\n background-image:\n linear-gradient(#e1e1e1 1px, transparent 1px),\n linear-gradient(90deg, #e1e1e1 1px, transparent 1px);\n background-size: 30px 14px;\n box-shadow: 0 1px 3px #0002;\n}\n.xve-backstage-tile-preview[data-template]::before {\n display: block;\n height: 14px;\n background: var(--xl);\n content: '';\n opacity: 0.85;\n}\n.xve-backstage-card {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n max-width: 760px;\n margin-bottom: 12px;\n padding: 14px 18px;\n border: 1px solid var(--line);\n border-radius: 6px;\n}\n.xve-backstage-card h3 {\n margin: 0 0 4px;\n}\n.xve-backstage-card p {\n margin: 0;\n}\n.xve-backstage-primary {\n padding: 8px 18px;\n border: 0;\n border-radius: 4px;\n background: var(--xl);\n color: var(--xve-primary-foreground);\n font: inherit;\n cursor: pointer;\n white-space: nowrap;\n}\n.xve-backstage-field {\n display: grid;\n gap: 4px;\n max-width: 420px;\n margin-bottom: 14px;\n color: var(--muted);\n font-size: 12px;\n}\n.xve-backstage-field input,\n.xve-backstage-field select {\n height: 32px;\n padding: 0 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font:\n 14px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.xve-
|
|
38
|
+
var backstage_default = "/* File backstage: the shared office-ui-backstage draws the navigation; these style the page content.\n The nav colours come from its tokens. */\n.xve-backstage {\n z-index: 40;\n --office-background: var(--surface);\n --office-backstage-nav-background: var(--xl);\n --office-backstage-nav-foreground: var(--xve-primary-foreground);\n}\n.xve-backstage-content {\n overflow: auto;\n padding: 28px 40px;\n color: var(--ink);\n}\n.xve-backstage-content h2 {\n margin: 0 0 20px;\n font-size: 30px;\n font-weight: 300;\n}\n.xve-backstage-content h3 {\n margin: 24px 0 10px;\n font-size: 15px;\n font-weight: 600;\n}\n.xve-backstage-title {\n margin: 0 0 4px;\n font-size: 26px;\n font-weight: 400;\n overflow-wrap: anywhere;\n}\n.xve-backstage-muted {\n color: var(--muted);\n}\n.xve-backstage-facts {\n display: grid;\n grid-template-columns: max-content minmax(0, 1fr);\n gap: 6px 24px;\n margin: 0;\n}\n.xve-backstage-facts dt {\n color: var(--muted);\n}\n.xve-backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.xve-compatibility-notes {\n display: grid;\n gap: 8px;\n max-width: 760px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.xve-compatibility-notes li {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--line);\n border-radius: 6px;\n line-height: 1.45;\n}\n.xve-compatibility-notes .xve-icon {\n margin-top: 2px;\n color: #b7791f;\n}\n.xve-backstage-columns {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 300px;\n gap: 40px;\n align-items: start;\n}\n.xve-backstage-properties {\n padding: 4px 0 0 24px;\n border-left: 1px solid var(--line);\n}\n.xve-backstage-properties h3 {\n margin-top: 0;\n}\n.xve-backstage-tiles {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n.xve-backstage-tile {\n display: inline-flex;\n flex-direction: column;\n gap: 8px;\n padding: 8px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: none;\n color: var(--ink);\n font: inherit;\n cursor: pointer;\n}\n.xve-backstage-tile:hover {\n border-color: var(--line);\n background: var(--xl-soft);\n}\n.xve-backstage-tile-preview {\n display: block;\n width: 150px;\n height: 112px;\n border: 1px solid var(--line);\n background-color: #fff;\n background-image:\n linear-gradient(#e1e1e1 1px, transparent 1px),\n linear-gradient(90deg, #e1e1e1 1px, transparent 1px);\n background-size: 30px 14px;\n box-shadow: 0 1px 3px #0002;\n}\n.xve-backstage-tile-preview[data-template]::before {\n display: block;\n height: 14px;\n background: var(--xl);\n content: '';\n opacity: 0.85;\n}\n.xve-backstage-card {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n max-width: 760px;\n margin-bottom: 12px;\n padding: 14px 18px;\n border: 1px solid var(--line);\n border-radius: 6px;\n}\n.xve-backstage-card h3 {\n margin: 0 0 4px;\n}\n.xve-backstage-card p {\n margin: 0;\n}\n.xve-backstage-primary {\n padding: 8px 18px;\n border: 0;\n border-radius: 4px;\n background: var(--xl);\n color: var(--xve-primary-foreground);\n font: inherit;\n cursor: pointer;\n white-space: nowrap;\n}\n.xve-backstage-field {\n display: grid;\n gap: 4px;\n max-width: 420px;\n margin-bottom: 14px;\n color: var(--muted);\n font-size: 12px;\n}\n.xve-backstage-field input,\n.xve-backstage-field select {\n height: 32px;\n padding: 0 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font:\n 14px 'Segoe UI',\n Arial,\n sans-serif;\n}\n/* File > Options > Customize Ribbon, shown in the shared Options dialog. */\n.xve-options-note {\n margin: 0 0 8px;\n color: var(--muted);\n font-size: 11px;\n}\n.xve-options-action {\n margin: 0 0 8px;\n padding: 6px 11px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: 12px;\n cursor: pointer;\n}\n.xve-options h3 {\n margin: 14px 0 4px;\n padding-bottom: 2px;\n border-bottom: 1px solid var(--line);\n color: var(--muted);\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n.xve-customize-group {\n margin: 0 0 8px;\n padding: 6px 10px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n}\n.xve-customize-group legend {\n padding: 0 4px;\n color: var(--muted);\n font-size: 11px;\n}\n.xve-customize-row {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 180px;\n padding: 2px 8px 2px 0;\n font-size: 12px;\n}\n@media (max-width: 760px) {\n .xve-backstage-content {\n padding: 20px;\n }\n .xve-backstage-columns {\n grid-template-columns: minmax(0, 1fr);\n }\n .xve-backstage-properties {\n padding-left: 0;\n border-left: 0;\n }\n}\n";
|
|
38
39
|
|
|
39
40
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/xlsx/theme/chart-series.css?raw
|
|
40
41
|
var chart_series_default = ".xve-canvas-row {\n display: flex;\n flex: 1;\n min-width: 0;\n min-height: 0;\n}\n.xve-chart-series-pane {\n box-sizing: border-box;\n width: 300px;\n max-width: 45%;\n flex: none;\n overflow: auto;\n border-left: 1px solid var(--line);\n background: var(--surface);\n}\n.xve-chart-series-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 12px 12px 18px;\n border-bottom: 1px solid var(--line);\n}\n.xve-chart-series-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 400;\n}\n.xve-chart-series-body,\n.xve-chart-series-pane > .xve-note {\n margin: 0;\n padding: 18px;\n}\n.xve-chart-series-body h3 {\n margin: 0 0 20px;\n font-size: 13px;\n font-weight: 600;\n}\n.xve-chart-series-body .xve-field {\n display: grid;\n grid-template-columns: 1fr 70px 12px;\n align-items: center;\n gap: 6px;\n margin: 14px 0;\n}\n.xve-chart-series-body .xve-input-number {\n box-sizing: border-box;\n width: 70px;\n min-width: 0;\n}\n.xve-chart-series-range .office-range-control {\n box-sizing: border-box;\n width: 100%;\n margin: 0 0 8px;\n}\n.xve-chart-series-fill {\n margin-top: 20px;\n padding-top: 18px;\n border-top: 1px solid var(--line);\n}\n.xve-chart-series-body .xve-field:has(select),\n.xve-chart-series-body .xve-field:has(.xve-chart-series-color),\n.xve-chart-series-body .xve-field:has(office-ui-gallery) {\n grid-template-columns: 1fr minmax(100px, 1fr);\n}\n.xve-chart-series-body office-ui-gallery .trigger {\n box-sizing: border-box;\n width: 100%;\n white-space: normal;\n}\n.xve-chart-series-color {\n height: 28px;\n background: var(--series-fill);\n border: 1px solid var(--line);\n cursor: pointer;\n}\n.xve-chart-series-color:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.xve-chart-series-gradient {\n margin-top: 18px;\n}\n.xve-chart-gradient-buttons {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n}\n.xve-chart-gradient-selector {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.xve-chart-gradient-selector .office-gradient-stop-track {\n flex: 1;\n min-width: 0;\n}\n.xve-chart-gradient-buttons .xve-button {\n width: 26px;\n height: 28px;\n padding: 0;\n font-size: 18px;\n}\n";
|
|
@@ -719,122 +720,6 @@ function renderExport(page) {
|
|
|
719
720
|
)
|
|
720
721
|
);
|
|
721
722
|
}
|
|
722
|
-
var LANGUAGES = [
|
|
723
|
-
["en", "English"],
|
|
724
|
-
["fr", "Fran\xE7ais"],
|
|
725
|
-
["de", "Deutsch"],
|
|
726
|
-
["es", "Espa\xF1ol"],
|
|
727
|
-
["zh-CN", "\u7B80\u4F53\u4E2D\u6587"]
|
|
728
|
-
];
|
|
729
|
-
var DEFAULT_ITERATIONS = 100;
|
|
730
|
-
var DEFAULT_MAX_CHANGE = 1e-3;
|
|
731
|
-
function iterationControls(page, current) {
|
|
732
|
-
const { t, host, doc } = page;
|
|
733
|
-
defineCheckbox(doc.defaultView?.customElements);
|
|
734
|
-
const toggle = doc.createElement("office-ui-checkbox");
|
|
735
|
-
toggle.setAttribute("aria-label", t("Enable iterative calculation"));
|
|
736
|
-
toggle.checked = Boolean(current);
|
|
737
|
-
const row2 = doc.createElement("div");
|
|
738
|
-
row2.className = "xve-backstage-check";
|
|
739
|
-
const text3 = doc.createElement("span");
|
|
740
|
-
text3.textContent = t("Enable iterative calculation");
|
|
741
|
-
row2.append(toggle, text3);
|
|
742
|
-
text3.addEventListener("click", () => toggle.click());
|
|
743
|
-
const number = (value, min, step2) => {
|
|
744
|
-
const input = doc.createElement("input");
|
|
745
|
-
input.type = "number";
|
|
746
|
-
input.min = String(min);
|
|
747
|
-
input.step = step2;
|
|
748
|
-
input.value = String(value);
|
|
749
|
-
input.disabled = !current;
|
|
750
|
-
return input;
|
|
751
|
-
};
|
|
752
|
-
const count = number(current?.count ?? DEFAULT_ITERATIONS, 1, "1");
|
|
753
|
-
const delta = number(current?.delta ?? DEFAULT_MAX_CHANGE, 0, "any");
|
|
754
|
-
const apply = () => {
|
|
755
|
-
count.disabled = delta.disabled = !toggle.checked;
|
|
756
|
-
host.setOption(
|
|
757
|
-
"iteration",
|
|
758
|
-
toggle.checked ? {
|
|
759
|
-
count: Number(count.value) || DEFAULT_ITERATIONS,
|
|
760
|
-
delta: delta.value === "" ? DEFAULT_MAX_CHANGE : Number(delta.value)
|
|
761
|
-
} : void 0
|
|
762
|
-
);
|
|
763
|
-
};
|
|
764
|
-
toggle.addEventListener("change", apply);
|
|
765
|
-
count.addEventListener("change", apply);
|
|
766
|
-
delta.addEventListener("change", apply);
|
|
767
|
-
return [
|
|
768
|
-
row2,
|
|
769
|
-
labelled(page, t("Maximum iterations"), count),
|
|
770
|
-
labelled(page, t("Maximum change"), delta),
|
|
771
|
-
paragraph(
|
|
772
|
-
page,
|
|
773
|
-
t(
|
|
774
|
-
"Circular references are recalculated up to the maximum iterations, stopping once no cell changes by more than the maximum change."
|
|
775
|
-
),
|
|
776
|
-
"xve-backstage-muted"
|
|
777
|
-
)
|
|
778
|
-
];
|
|
779
|
-
}
|
|
780
|
-
function renderOptions(page) {
|
|
781
|
-
const { t, host, doc } = page;
|
|
782
|
-
const current = host.options();
|
|
783
|
-
const language = doc.createElement("select");
|
|
784
|
-
for (const [value, label] of LANGUAGES) language.append(new Option(label, value));
|
|
785
|
-
language.value = current.locale;
|
|
786
|
-
language.addEventListener("change", () => host.setOption("locale", language.value));
|
|
787
|
-
const theme = doc.createElement("select");
|
|
788
|
-
for (const [value, label] of [
|
|
789
|
-
["auto", "Automatic"],
|
|
790
|
-
["light", "Light"],
|
|
791
|
-
["dark", "Dark"]
|
|
792
|
-
])
|
|
793
|
-
theme.append(new Option(t(label), value));
|
|
794
|
-
theme.value = current.theme === "light" || current.theme === "dark" ? current.theme : "auto";
|
|
795
|
-
theme.addEventListener("change", () => host.setOption("theme", theme.value));
|
|
796
|
-
const author = doc.createElement("input");
|
|
797
|
-
author.type = "text";
|
|
798
|
-
author.value = current.author;
|
|
799
|
-
author.addEventListener("change", () => host.setOption("author", author.value));
|
|
800
|
-
const calculation = doc.createElement("select");
|
|
801
|
-
calculation.append(new Option(t("Automatic"), "automatic"), new Option(t("Manual"), "manual"));
|
|
802
|
-
calculation.value = current.calculation;
|
|
803
|
-
calculation.addEventListener(
|
|
804
|
-
"change",
|
|
805
|
-
() => host.setOption("calculation", calculation.value === "manual" ? "manual" : "automatic")
|
|
806
|
-
);
|
|
807
|
-
const iteration = iterationControls(page, current.iteration);
|
|
808
|
-
const r1c1 = doc.createElement("label");
|
|
809
|
-
r1c1.className = "xve-backstage-check";
|
|
810
|
-
const box = doc.createElement("input");
|
|
811
|
-
box.type = "checkbox";
|
|
812
|
-
box.disabled = true;
|
|
813
|
-
const text3 = doc.createElement("span");
|
|
814
|
-
text3.textContent = t("R1C1 reference style (not available)");
|
|
815
|
-
r1c1.append(box, text3);
|
|
816
|
-
page.content.replaceChildren(
|
|
817
|
-
heading(page, t("Options")),
|
|
818
|
-
heading(page, t("General"), "h3"),
|
|
819
|
-
labelled(page, t("Display language"), language),
|
|
820
|
-
labelled(page, t("Theme"), theme),
|
|
821
|
-
labelled(page, t("Author name"), author),
|
|
822
|
-
heading(page, t("Formulas"), "h3"),
|
|
823
|
-
labelled(page, t("Workbook calculation"), calculation),
|
|
824
|
-
paragraph(
|
|
825
|
-
page,
|
|
826
|
-
t("Manual: formulas recalculate when you press F9 (Calculate Now)."),
|
|
827
|
-
"xve-backstage-muted"
|
|
828
|
-
),
|
|
829
|
-
...iteration,
|
|
830
|
-
r1c1,
|
|
831
|
-
paragraph(
|
|
832
|
-
page,
|
|
833
|
-
t("Options apply to this editor and are not stored between sessions."),
|
|
834
|
-
"xve-backstage-muted"
|
|
835
|
-
)
|
|
836
|
-
);
|
|
837
|
-
}
|
|
838
723
|
function commandsOf(control) {
|
|
839
724
|
switch (control.kind) {
|
|
840
725
|
case "stack":
|
|
@@ -852,9 +737,9 @@ function commandsOf(control) {
|
|
|
852
737
|
return [control.command];
|
|
853
738
|
}
|
|
854
739
|
}
|
|
855
|
-
function
|
|
856
|
-
const { t,
|
|
857
|
-
const
|
|
740
|
+
function renderCustomizeRibbon(pane, host) {
|
|
741
|
+
const { t, commands } = host.ctx;
|
|
742
|
+
const doc = pane.ownerDocument;
|
|
858
743
|
const hidden = new Set(host.hiddenActions());
|
|
859
744
|
const boxes = [];
|
|
860
745
|
const commit = () => host.setHiddenActions(boxes.filter((box) => !box.input.checked).map((box) => box.id));
|
|
@@ -862,7 +747,9 @@ function renderCustomize(page) {
|
|
|
862
747
|
const sections = [];
|
|
863
748
|
for (const tab of ribbonTabs()) {
|
|
864
749
|
const section = doc.createElement("section");
|
|
865
|
-
|
|
750
|
+
const title = doc.createElement("h3");
|
|
751
|
+
title.textContent = t(tab.label);
|
|
752
|
+
section.append(title);
|
|
866
753
|
for (const group of tab.groups) {
|
|
867
754
|
const fieldset2 = doc.createElement("fieldset");
|
|
868
755
|
fieldset2.className = "xve-customize-group";
|
|
@@ -889,16 +776,234 @@ function renderCustomize(page) {
|
|
|
889
776
|
}
|
|
890
777
|
if (section.childElementCount > 1) sections.push(section);
|
|
891
778
|
}
|
|
892
|
-
const
|
|
779
|
+
const note = doc.createElement("p");
|
|
780
|
+
note.className = "xve-options-note";
|
|
781
|
+
note.textContent = t("Choose which commands the ribbon shows.");
|
|
782
|
+
const reset = doc.createElement("button");
|
|
783
|
+
reset.type = "button";
|
|
784
|
+
reset.className = "xve-options-action";
|
|
785
|
+
reset.textContent = t("Reset all customizations");
|
|
786
|
+
reset.addEventListener("click", () => {
|
|
893
787
|
for (const box of boxes) box.input.checked = true;
|
|
894
788
|
commit();
|
|
895
789
|
});
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
790
|
+
pane.replaceChildren(note, reset, ...sections);
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
// src/xlsx/backstage/options-dialog.ts
|
|
794
|
+
var LANGUAGES = [
|
|
795
|
+
["en", "English"],
|
|
796
|
+
["fr", "Fran\xE7ais"],
|
|
797
|
+
["de", "Deutsch"],
|
|
798
|
+
["es", "Espa\xF1ol"],
|
|
799
|
+
["zh-CN", "\u7B80\u4F53\u4E2D\u6587"]
|
|
800
|
+
];
|
|
801
|
+
var DEFAULT_ITERATIONS = 100;
|
|
802
|
+
var DEFAULT_MAX_CHANGE = 1e-3;
|
|
803
|
+
var DIRECT_KEYS = ["locale", "theme", "author", "calculation"];
|
|
804
|
+
var ITERATION_KEYS = ["iterate", "iterationCount", "iterationDelta"];
|
|
805
|
+
function excelCategories(context) {
|
|
806
|
+
const { t } = context;
|
|
807
|
+
return [
|
|
808
|
+
{
|
|
809
|
+
id: "general",
|
|
810
|
+
label: t("General"),
|
|
811
|
+
description: optionText(context, "General options for working with {product}."),
|
|
812
|
+
sections: [
|
|
813
|
+
userInterfaceSection(context),
|
|
814
|
+
personalizeSection(
|
|
815
|
+
context,
|
|
816
|
+
[
|
|
817
|
+
{ kind: "text", key: "author", label: t("User name"), maxLength: 64 },
|
|
818
|
+
{
|
|
819
|
+
kind: "select",
|
|
820
|
+
key: "theme",
|
|
821
|
+
label: t("Office Theme"),
|
|
822
|
+
choices: [
|
|
823
|
+
{ value: "auto", label: t("Automatic") },
|
|
824
|
+
{ value: "light", label: t("Light") },
|
|
825
|
+
{ value: "dark", label: t("Dark") }
|
|
826
|
+
]
|
|
827
|
+
}
|
|
828
|
+
],
|
|
829
|
+
t("Options apply to this editor and are not stored between sessions.")
|
|
830
|
+
)
|
|
831
|
+
]
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
id: "formulas",
|
|
835
|
+
label: t("Formulas"),
|
|
836
|
+
description: t(
|
|
837
|
+
"Change options related to formula calculation, performance, and error handling."
|
|
838
|
+
),
|
|
839
|
+
sections: [
|
|
840
|
+
{
|
|
841
|
+
id: "calculation",
|
|
842
|
+
title: t("Calculation options"),
|
|
843
|
+
controls: [
|
|
844
|
+
{
|
|
845
|
+
kind: "select",
|
|
846
|
+
key: "calculation",
|
|
847
|
+
label: t("Workbook calculation"),
|
|
848
|
+
info: t("Manual: formulas recalculate when you press F9 (Calculate Now)."),
|
|
849
|
+
choices: [
|
|
850
|
+
{ value: "automatic", label: t("Automatic") },
|
|
851
|
+
{ value: "manual", label: t("Manual") }
|
|
852
|
+
]
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
kind: "toggle",
|
|
856
|
+
key: "iterate",
|
|
857
|
+
label: t("Enable iterative calculation"),
|
|
858
|
+
info: t(
|
|
859
|
+
"Circular references are recalculated up to the maximum iterations, stopping once no cell changes by more than the maximum change."
|
|
860
|
+
)
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
kind: "number",
|
|
864
|
+
key: "iterationCount",
|
|
865
|
+
label: t("Maximum iterations"),
|
|
866
|
+
min: 1,
|
|
867
|
+
max: 32767,
|
|
868
|
+
indent: true,
|
|
869
|
+
enabledBy: "iterate"
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
kind: "number",
|
|
873
|
+
key: "iterationDelta",
|
|
874
|
+
label: t("Maximum change"),
|
|
875
|
+
min: 0,
|
|
876
|
+
max: 1e3,
|
|
877
|
+
step: 1e-3,
|
|
878
|
+
indent: true,
|
|
879
|
+
enabledBy: "iterate"
|
|
880
|
+
}
|
|
881
|
+
]
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
id: "working",
|
|
885
|
+
title: t("Working with formulas"),
|
|
886
|
+
controls: [
|
|
887
|
+
unavailableControl(
|
|
888
|
+
context,
|
|
889
|
+
{ kind: "toggle", key: "r1c1", label: t("R1C1 reference style") },
|
|
890
|
+
"Not available yet. Only A1 references are supported."
|
|
891
|
+
)
|
|
892
|
+
]
|
|
893
|
+
}
|
|
894
|
+
]
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
id: "data",
|
|
898
|
+
label: t("Data"),
|
|
899
|
+
description: t("Change settings for importing and analyzing data."),
|
|
900
|
+
sections: [],
|
|
901
|
+
disabled: t("Not available yet. Data import and query settings are not supported.")
|
|
902
|
+
},
|
|
903
|
+
unavailableCategory(context, "proofing"),
|
|
904
|
+
unavailableCategory(context, "save"),
|
|
905
|
+
{
|
|
906
|
+
id: "language",
|
|
907
|
+
label: t("Language"),
|
|
908
|
+
description: t("Set the Office Language Preferences."),
|
|
909
|
+
sections: [
|
|
910
|
+
{
|
|
911
|
+
id: "display-language",
|
|
912
|
+
title: t("Office display language"),
|
|
913
|
+
description: t("Choose the language for menus, buttons and messages."),
|
|
914
|
+
controls: [
|
|
915
|
+
{
|
|
916
|
+
kind: "select",
|
|
917
|
+
key: "locale",
|
|
918
|
+
label: t("Display language"),
|
|
919
|
+
choices: LANGUAGES.map(([value, label]) => ({ value, label }))
|
|
920
|
+
}
|
|
921
|
+
]
|
|
922
|
+
}
|
|
923
|
+
]
|
|
924
|
+
},
|
|
925
|
+
unavailableCategory(context, "accessibility"),
|
|
926
|
+
unavailableCategory(context, "advanced"),
|
|
927
|
+
{
|
|
928
|
+
id: "ribbon",
|
|
929
|
+
label: t("Customize Ribbon"),
|
|
930
|
+
description: t("Customize the Ribbon and keyboard shortcuts."),
|
|
931
|
+
sections: [],
|
|
932
|
+
custom: true
|
|
933
|
+
},
|
|
934
|
+
unavailableCategory(context, "qat"),
|
|
935
|
+
unavailableCategory(context, "addins"),
|
|
936
|
+
unavailableCategory(context, "trust")
|
|
937
|
+
];
|
|
938
|
+
}
|
|
939
|
+
function dialogValues(host) {
|
|
940
|
+
const current = host.options();
|
|
941
|
+
return {
|
|
942
|
+
locale: current.locale,
|
|
943
|
+
theme: current.theme === "light" || current.theme === "dark" ? current.theme : "auto",
|
|
944
|
+
author: current.author,
|
|
945
|
+
calculation: current.calculation,
|
|
946
|
+
iterate: Boolean(current.iteration),
|
|
947
|
+
iterationCount: current.iteration?.count ?? DEFAULT_ITERATIONS,
|
|
948
|
+
iterationDelta: current.iteration?.delta ?? DEFAULT_MAX_CHANGE
|
|
949
|
+
};
|
|
950
|
+
}
|
|
951
|
+
function iterationOf(values) {
|
|
952
|
+
if (values.iterate !== true) return void 0;
|
|
953
|
+
return {
|
|
954
|
+
count: Number(values.iterationCount) || DEFAULT_ITERATIONS,
|
|
955
|
+
delta: Number(values.iterationDelta)
|
|
956
|
+
};
|
|
957
|
+
}
|
|
958
|
+
function createExcelOptions(host) {
|
|
959
|
+
const { ctx } = host;
|
|
960
|
+
const doc = ctx.host.ownerDocument;
|
|
961
|
+
defineOptionsDialog();
|
|
962
|
+
const element = doc.createElement("office-ui-options-dialog");
|
|
963
|
+
element.className = "xve-options";
|
|
964
|
+
const ribbon = doc.createElement("div");
|
|
965
|
+
ribbon.slot = "pane-ribbon";
|
|
966
|
+
element.append(ribbon);
|
|
967
|
+
const context = { product: "Excel", t: (text3) => ctx.t(text3) };
|
|
968
|
+
let hiddenOnOpen = [];
|
|
969
|
+
const build = () => {
|
|
970
|
+
element.setAttribute("heading", ctx.t("Options"));
|
|
971
|
+
element.labels = optionsLabels(context);
|
|
972
|
+
element.categories = excelCategories(context);
|
|
973
|
+
element.values = dialogValues(host);
|
|
974
|
+
element.defaults = {
|
|
975
|
+
theme: "auto",
|
|
976
|
+
calculation: "automatic",
|
|
977
|
+
iterate: false,
|
|
978
|
+
iterationCount: DEFAULT_ITERATIONS,
|
|
979
|
+
iterationDelta: DEFAULT_MAX_CHANGE
|
|
980
|
+
};
|
|
981
|
+
};
|
|
982
|
+
element.addEventListener("office-options-change", (event) => {
|
|
983
|
+
const { values, changed } = event.detail;
|
|
984
|
+
for (const key of DIRECT_KEYS)
|
|
985
|
+
if (changed.includes(key)) host.setOption(key, String(values[key]));
|
|
986
|
+
if (changed.some((key) => ITERATION_KEYS.includes(key)))
|
|
987
|
+
host.setOption("iteration", iterationOf(values));
|
|
988
|
+
build();
|
|
989
|
+
});
|
|
990
|
+
element.addEventListener("office-options-cancel", () => {
|
|
991
|
+
if (hiddenOnOpen.join() !== host.hiddenActions().join())
|
|
992
|
+
host.setHiddenActions([...hiddenOnOpen]);
|
|
993
|
+
});
|
|
994
|
+
for (const name of ["office-options-change", "office-options-cancel"])
|
|
995
|
+
element.addEventListener(name, () => setTimeout(() => host.close(), 0));
|
|
996
|
+
return {
|
|
997
|
+
element,
|
|
998
|
+
show(category = "general") {
|
|
999
|
+
build();
|
|
1000
|
+
hiddenOnOpen = [...host.hiddenActions()];
|
|
1001
|
+
renderCustomizeRibbon(ribbon, host);
|
|
1002
|
+
element.category = category;
|
|
1003
|
+
element.show();
|
|
1004
|
+
},
|
|
1005
|
+
relocalize: build
|
|
1006
|
+
};
|
|
902
1007
|
}
|
|
903
1008
|
|
|
904
1009
|
// src/xlsx/backstage/pages-share.ts
|
|
@@ -999,9 +1104,7 @@ var PAGES = [
|
|
|
999
1104
|
["saveAs", "Save As"],
|
|
1000
1105
|
["print", "Print"],
|
|
1001
1106
|
["share", "Share"],
|
|
1002
|
-
["export", "Export"]
|
|
1003
|
-
["options", "Options"],
|
|
1004
|
-
["customize", "Customize Ribbon"]
|
|
1107
|
+
["export", "Export"]
|
|
1005
1108
|
];
|
|
1006
1109
|
var RENDERERS = {
|
|
1007
1110
|
info: renderInfo,
|
|
@@ -1010,9 +1113,7 @@ var RENDERERS = {
|
|
|
1010
1113
|
saveAs: renderSaveAs,
|
|
1011
1114
|
print: renderPrint,
|
|
1012
1115
|
share: renderShare,
|
|
1013
|
-
export: renderExport
|
|
1014
|
-
options: renderOptions,
|
|
1015
|
-
customize: renderCustomize
|
|
1116
|
+
export: renderExport
|
|
1016
1117
|
};
|
|
1017
1118
|
function createBackstage(host) {
|
|
1018
1119
|
const { ctx } = host;
|
|
@@ -1031,26 +1132,23 @@ function createBackstage(host) {
|
|
|
1031
1132
|
element.append(content);
|
|
1032
1133
|
}
|
|
1033
1134
|
let current = "info";
|
|
1034
|
-
const
|
|
1035
|
-
...host,
|
|
1036
|
-
ctx,
|
|
1037
|
-
setOption(key, value) {
|
|
1038
|
-
host.setOption(key, value);
|
|
1039
|
-
queueMicrotask(() => {
|
|
1040
|
-
if (element.open) show(current);
|
|
1041
|
-
});
|
|
1042
|
-
}
|
|
1043
|
-
};
|
|
1135
|
+
const options = createExcelOptions(host);
|
|
1044
1136
|
const show = (page) => {
|
|
1045
1137
|
current = page;
|
|
1046
|
-
RENDERERS[page]({ host
|
|
1138
|
+
RENDERERS[page]({ host, content: contents.get(page), t: ctx.t, doc });
|
|
1139
|
+
};
|
|
1140
|
+
const showOptions = (category) => {
|
|
1141
|
+
if (element.open) element.close();
|
|
1142
|
+
host.close();
|
|
1143
|
+
options.show(category);
|
|
1047
1144
|
};
|
|
1048
1145
|
element.addEventListener("office-backstage-select", (event) => {
|
|
1049
1146
|
const id = event.detail.id;
|
|
1050
1147
|
if (id === "save") {
|
|
1051
1148
|
host.close();
|
|
1052
1149
|
host.fileCommand("save");
|
|
1053
|
-
} else if (
|
|
1150
|
+
} else if (id === "options") showOptions();
|
|
1151
|
+
else if (contents.has(id)) show(id);
|
|
1054
1152
|
});
|
|
1055
1153
|
element.addEventListener("office-backstage-close", (event) => {
|
|
1056
1154
|
if (event.detail.reason !== "api") host.close();
|
|
@@ -1064,7 +1162,7 @@ function createBackstage(host) {
|
|
|
1064
1162
|
...group ? { group } : {}
|
|
1065
1163
|
});
|
|
1066
1164
|
const label = new Map(PAGES);
|
|
1067
|
-
const page = (id
|
|
1165
|
+
const page = (id) => item(id, label.get(id));
|
|
1068
1166
|
element.items = [
|
|
1069
1167
|
page("info"),
|
|
1070
1168
|
page("new"),
|
|
@@ -1074,15 +1172,20 @@ function createBackstage(host) {
|
|
|
1074
1172
|
page("print"),
|
|
1075
1173
|
page("share"),
|
|
1076
1174
|
page("export"),
|
|
1077
|
-
|
|
1078
|
-
page("customize", "footer")
|
|
1175
|
+
item("options", "Options", "footer")
|
|
1079
1176
|
];
|
|
1177
|
+
options.relocalize();
|
|
1080
1178
|
if (element.open) show(current);
|
|
1081
1179
|
};
|
|
1082
1180
|
relocalize();
|
|
1083
1181
|
return {
|
|
1084
1182
|
element,
|
|
1183
|
+
optionsDialog: options.element,
|
|
1085
1184
|
open(page = "info") {
|
|
1185
|
+
if (page === "options" || page === "customize") {
|
|
1186
|
+
showOptions(page === "customize" ? "ribbon" : void 0);
|
|
1187
|
+
return;
|
|
1188
|
+
}
|
|
1086
1189
|
show(page);
|
|
1087
1190
|
element.show(page);
|
|
1088
1191
|
},
|
|
@@ -2803,7 +2906,7 @@ function numberTab(init) {
|
|
|
2803
2906
|
list.select(options.code);
|
|
2804
2907
|
return [text(ctx, label, "xve-field-label"), list.element];
|
|
2805
2908
|
};
|
|
2806
|
-
const
|
|
2909
|
+
const renderOptions = () => {
|
|
2807
2910
|
const parts = [];
|
|
2808
2911
|
negatives = void 0;
|
|
2809
2912
|
if (["number", "currency", "accounting", "percentage", "scientific"].includes(category))
|
|
@@ -2889,12 +2992,12 @@ function numberTab(init) {
|
|
|
2889
2992
|
category = value;
|
|
2890
2993
|
options.code = category === "custom" ? previous : LISTS[category]?.[0] ?? options.code;
|
|
2891
2994
|
dirty = true;
|
|
2892
|
-
|
|
2995
|
+
renderOptions();
|
|
2893
2996
|
update();
|
|
2894
2997
|
});
|
|
2895
2998
|
categories.setItems(CATEGORIES.map(([id, label]) => [id, ctx.t(label)]));
|
|
2896
2999
|
categories.select(category);
|
|
2897
|
-
|
|
3000
|
+
renderOptions();
|
|
2898
3001
|
update();
|
|
2899
3002
|
ready = true;
|
|
2900
3003
|
const sampleBox = el(ctx, "div");
|
|
@@ -3617,8 +3720,7 @@ function renderSharedGallery(scope, control, command) {
|
|
|
3617
3720
|
});
|
|
3618
3721
|
return gallery;
|
|
3619
3722
|
}
|
|
3620
|
-
|
|
3621
|
-
// src/xlsx/ribbon/overflow.ts
|
|
3723
|
+
var localeOf = (panel3) => normalizeEditorLocale(panel3.closest("[data-editor-locale]")?.dataset.editorLocale);
|
|
3622
3724
|
var GROUP_ICONS = {
|
|
3623
3725
|
Clipboard: "paste",
|
|
3624
3726
|
Font: "fontColor",
|
|
@@ -3653,6 +3755,7 @@ var GROUP_ICONS = {
|
|
|
3653
3755
|
};
|
|
3654
3756
|
var overflow = createRibbonOverflow({
|
|
3655
3757
|
icon: ribbonIcon,
|
|
3758
|
+
moreLabel: (panel3) => translate(localeOf(panel3), "More"),
|
|
3656
3759
|
groupIcons: GROUP_ICONS,
|
|
3657
3760
|
fallbackIcon: "select",
|
|
3658
3761
|
ribbon: ".xve-ribbon",
|
|
@@ -15615,6 +15718,7 @@ function createRibbon(ctx, handlers) {
|
|
|
15615
15718
|
closeRibbonPopover();
|
|
15616
15719
|
scope = { ctx, doc, updates: [], isHidden: handlers.isHidden };
|
|
15617
15720
|
tabs2 = [...ribbonTabs()];
|
|
15721
|
+
root.dataset.editorLocale = normalizeEditorLocale(ctx.locale());
|
|
15618
15722
|
root.setAttribute("aria-label", ctx.t("Ribbon"));
|
|
15619
15723
|
root.setAttribute("label", ctx.t("Ribbon tabs"));
|
|
15620
15724
|
root.setAttribute("file-label", ctx.t("File"));
|
|
@@ -15882,7 +15986,7 @@ function cellMode(ctx) {
|
|
|
15882
15986
|
if (mode && mode in MODE_LABELS) return mode;
|
|
15883
15987
|
return grid?.isEditing() ? "edit" : "ready";
|
|
15884
15988
|
}
|
|
15885
|
-
function statisticsText(ctx, shown2) {
|
|
15989
|
+
function statisticsText(ctx, shown2, limit = Infinity) {
|
|
15886
15990
|
const workbook = ctx.workbook();
|
|
15887
15991
|
const selection = ctx.selection.get();
|
|
15888
15992
|
if (!workbook?.sheets?.[selection.sheet]?.rows) return "";
|
|
@@ -15897,7 +16001,7 @@ function statisticsText(ctx, shown2) {
|
|
|
15897
16001
|
const text3 = key === "count" || key === "numericCount" ? formatNumber(locale, value) : formatSelectionStat(workbook, stats, value);
|
|
15898
16002
|
parts.push(`${ctx.t(STAT_LABELS[key])}: ${text3}`);
|
|
15899
16003
|
}
|
|
15900
|
-
return parts.join(" ");
|
|
16004
|
+
return parts.slice(0, limit).join(" ");
|
|
15901
16005
|
}
|
|
15902
16006
|
function createStatusBar(ctx, handlers) {
|
|
15903
16007
|
defineStatusBar();
|
|
@@ -15932,6 +16036,7 @@ function createStatusBar(ctx, handlers) {
|
|
|
15932
16036
|
slider.setAttribute("min", String(ZOOM_MIN));
|
|
15933
16037
|
slider.setAttribute("max", String(ZOOM_MAX));
|
|
15934
16038
|
element.append(stats, slider);
|
|
16039
|
+
let layout = statusLayout(0);
|
|
15935
16040
|
const zoom = () => ctx.grid()?.zoom() ?? 100;
|
|
15936
16041
|
slider.addEventListener("input", () => handlers.setZoom(slider.value));
|
|
15937
16042
|
element.addEventListener("office-status-activate", (event) => {
|
|
@@ -15951,7 +16056,7 @@ function createStatusBar(ctx, handlers) {
|
|
|
15951
16056
|
toggles: [
|
|
15952
16057
|
{ id: "notes", icon: "warning", label: notesText, text: notesText, hidden: count === 0 }
|
|
15953
16058
|
],
|
|
15954
|
-
views: [
|
|
16059
|
+
views: !layout.views ? false : [
|
|
15955
16060
|
{ id: "normal", icon: "normalView", label: ctx.t("Normal"), pressed: true },
|
|
15956
16061
|
{
|
|
15957
16062
|
id: "pageLayout",
|
|
@@ -15970,7 +16075,7 @@ function createStatusBar(ctx, handlers) {
|
|
|
15970
16075
|
};
|
|
15971
16076
|
const refresh = () => {
|
|
15972
16077
|
render3();
|
|
15973
|
-
stats.textContent = statisticsText(ctx, shown2);
|
|
16078
|
+
stats.textContent = statisticsText(ctx, shown2, layout.stats);
|
|
15974
16079
|
slider.value = zoom();
|
|
15975
16080
|
};
|
|
15976
16081
|
const relocalize = () => {
|
|
@@ -15981,6 +16086,10 @@ function createStatusBar(ctx, handlers) {
|
|
|
15981
16086
|
refresh();
|
|
15982
16087
|
};
|
|
15983
16088
|
relocalize();
|
|
16089
|
+
watchStatusWidth(element, (width) => {
|
|
16090
|
+
layout = statusLayout(width);
|
|
16091
|
+
refresh();
|
|
16092
|
+
});
|
|
15984
16093
|
return { element, refresh, relocalize };
|
|
15985
16094
|
}
|
|
15986
16095
|
var SAVE_STATE_TEXT = {
|
|
@@ -16265,6 +16374,7 @@ function buildShell(core) {
|
|
|
16265
16374
|
canvasRow,
|
|
16266
16375
|
statusBar.element,
|
|
16267
16376
|
backstage.element,
|
|
16377
|
+
backstage.optionsDialog,
|
|
16268
16378
|
help.element,
|
|
16269
16379
|
toaster.element
|
|
16270
16380
|
);
|