ooxml-ui 1.1.0 → 1.3.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 +38 -36
- package/custom-elements.json +372 -4
- package/dist/chrome/ruler.d.ts +60 -2
- package/dist/chrome/ruler.d.ts.map +1 -1
- package/dist/chrome/status-bar.d.ts +3 -1
- package/dist/chrome/status-bar.d.ts.map +1 -1
- package/dist/{chunk-JFJXBYRD.js → chunk-2WLRFPMW.js} +9 -0
- package/dist/{chunk-X7RINDJQ.js → chunk-56A2JK63.js} +1 -1
- package/dist/{chunk-KVKKXRL7.js → chunk-5OFAJDMQ.js} +93 -14
- package/dist/{chunk-M5DTJSOV.js → chunk-723JC3OC.js} +461 -16
- package/dist/{chunk-USDLALB5.js → chunk-IY7QJLQG.js} +1 -1
- package/dist/{chunk-BOX43CZD.js → chunk-M6GF5ED2.js} +2 -1
- package/dist/{chunk-BEN3453I.js → chunk-NYRRH2MD.js} +1 -1
- package/dist/{chunk-3FPW7M6U.js → chunk-TWQ45BFL.js} +1 -1
- package/dist/{chunk-ZU7GX4SY.js → chunk-V6P6KZCO.js} +7 -5
- package/dist/comments/comments-pane.d.ts +116 -0
- package/dist/comments/comments-pane.d.ts.map +1 -0
- package/dist/comments/types.d.ts +80 -0
- package/dist/comments/types.d.ts.map +1 -0
- package/dist/controls.d.ts +6 -2
- package/dist/controls.d.ts.map +1 -1
- package/dist/controls.js +5 -5
- package/dist/docx/comments-panel.d.ts +8 -1
- package/dist/docx/editor-chrome.d.ts +8 -1
- package/dist/docx/file-commands.d.ts +1 -1
- package/dist/docx/image-media.d.ts +1 -1
- package/dist/docx/locales/en-app.d.ts +1 -0
- package/dist/docx/locales/en-ribbon.d.ts +1 -0
- package/dist/docx/locales/en.d.ts +2 -0
- package/dist/docx/localization-strings.d.ts +2 -0
- package/dist/docx/localization.d.ts +7 -0
- package/dist/docx/print-layout.d.ts +2 -2
- package/dist/docx/print-picture.d.ts +12 -0
- package/dist/docx/review-controller.d.ts +2 -0
- package/dist/docx/ribbon-actions.d.ts +22 -0
- package/dist/docx/ruler.d.ts +7 -10
- package/dist/docx/title-bar.d.ts +3 -5
- package/dist/docx.js +342 -362
- package/dist/form/gradient-preset-gallery.d.ts +2 -2
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +9 -9
- package/dist/pptx/{chart-3d-view-scene-2KRQ5667.mjs → chart-3d-view-scene-OYJ4CDCO.mjs} +4 -5
- package/dist/pptx/{chart-3d-view-scene-36DMZWZ3.cjs → chart-3d-view-scene-SE2Y6QRE.cjs} +38 -39
- package/dist/pptx/{chunk-YOGDIDPB.mjs → chunk-CIVA3MLN.mjs} +8 -2
- package/dist/pptx/{chunk-KPZWYF44.cjs → chunk-FPE5PZMI.cjs} +789 -491
- package/dist/pptx/{chunk-AIL3BNZS.cjs → chunk-IURZJAWP.cjs} +529 -387
- package/dist/pptx/{chunk-YHA6XAB3.cjs → chunk-KRMMJUCO.cjs} +83 -1
- package/dist/pptx/{chunk-Y2W4SZER.mjs → chunk-MWHGUEIJ.mjs} +637 -348
- package/dist/pptx/{chunk-YARCML7O.mjs → chunk-STLXPKJJ.mjs} +519 -388
- package/dist/pptx/{chunk-ADOC5JLI.mjs → chunk-TC7HCF5M.mjs} +76 -2
- package/dist/pptx/{chunk-CJU4P5FT.cjs → chunk-WKLHJEPD.cjs} +18 -12
- package/dist/pptx/dom/element-styles.d.ts.map +1 -1
- package/dist/pptx/dom/elements/chart.d.ts +2 -3
- package/dist/pptx/dom/elements/chart.d.ts.map +1 -1
- package/dist/pptx/dom/elements/connector.d.ts.map +1 -1
- package/dist/pptx/dom/elements/shape-filter-defs.d.ts.map +1 -1
- package/dist/pptx/dom/elements/table.d.ts.map +1 -1
- package/dist/pptx/dom/index.cjs +272 -261
- package/dist/pptx/dom/index.mjs +46 -35
- package/dist/pptx/dom/slide-stage.d.ts.map +1 -1
- package/dist/pptx/export/html2canvas-clone.cjs +2 -2
- package/dist/pptx/export/html2canvas-clone.mjs +1 -1
- package/dist/pptx/index.cjs +3065 -2993
- package/dist/pptx/index.mjs +4 -4
- package/dist/pptx/render/chart-3d-oblique-layout.d.ts.map +1 -1
- package/dist/pptx/render/chart-3d-persp-bars.d.ts.map +1 -1
- package/dist/pptx/render/chart-3d-persp-layout.d.ts.map +1 -1
- package/dist/pptx/render/chart-axis-range.d.ts +7 -0
- package/dist/pptx/render/chart-axis-range.d.ts.map +1 -1
- package/dist/pptx/render/chart-axis-render.d.ts +3 -1
- package/dist/pptx/render/chart-axis-render.d.ts.map +1 -1
- package/dist/pptx/render/chart-axis-style.d.ts +5 -0
- package/dist/pptx/render/chart-axis-style.d.ts.map +1 -1
- package/dist/pptx/render/chart-axis.d.ts +1 -1
- package/dist/pptx/render/chart-axis.d.ts.map +1 -1
- package/dist/pptx/render/chart-bar-cluster-geometry.d.ts +1 -1
- package/dist/pptx/render/chart-bar-cluster-geometry.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-area.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-axes.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-bars.d.ts +3 -3
- package/dist/pptx/render/chart-cartesian-line-area.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-percent-stacked.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-stacked-labels.d.ts +11 -7
- package/dist/pptx/render/chart-cartesian-stacked-labels.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian.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-combo.d.ts.map +1 -1
- package/dist/pptx/render/chart-data-label-anchor.d.ts +4 -1
- package/dist/pptx/render/chart-data-label-anchor.d.ts.map +1 -1
- package/dist/pptx/render/chart-gridlines-toggle.d.ts +13 -1
- package/dist/pptx/render/chart-gridlines-toggle.d.ts.map +1 -1
- package/dist/pptx/render/chart-helpers.d.ts +13 -13
- package/dist/pptx/render/chart-helpers.d.ts.map +1 -1
- package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts +7 -3
- package/dist/pptx/render/chart-horizontal-bars-helpers.d.ts.map +1 -1
- package/dist/pptx/render/chart-horizontal-bars.d.ts.map +1 -1
- package/dist/pptx/render/chart-interaction-stacked.d.ts.map +1 -1
- package/dist/pptx/render/chart-line-path.d.ts +9 -0
- package/dist/pptx/render/chart-line-path.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-palette.d.ts +5 -14
- package/dist/pptx/render/chart-palette.d.ts.map +1 -1
- package/dist/pptx/render/chart-plot-clip.d.ts +37 -0
- package/dist/pptx/render/chart-plot-clip.d.ts.map +1 -0
- package/dist/pptx/render/chart-quick-action-styles.d.ts +5 -3
- package/dist/pptx/render/chart-quick-action-styles.d.ts.map +1 -1
- package/dist/pptx/render/chart-scatter-x-axis.d.ts.map +1 -1
- package/dist/pptx/render/chart-style-palette.d.ts +52 -0
- package/dist/pptx/render/chart-style-palette.d.ts.map +1 -0
- 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-bars.d.ts +32 -1
- package/dist/pptx/render/chart-view-model-bars.d.ts.map +1 -1
- package/dist/pptx/render/chart-view-model-build.d.ts.map +1 -1
- package/dist/pptx/render/chart-view-model.cjs +53 -41
- 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/device-pixel-stroke.d.ts +101 -0
- package/dist/pptx/render/device-pixel-stroke.d.ts.map +1 -0
- package/dist/pptx/render/export-clone.d.ts +4 -0
- package/dist/pptx/render/export-clone.d.ts.map +1 -1
- package/dist/pptx/render/foreign-object-svg-document.d.ts +12 -0
- package/dist/pptx/render/foreign-object-svg-document.d.ts.map +1 -1
- package/dist/pptx/render/index.d.ts +3 -0
- package/dist/pptx/render/index.d.ts.map +1 -1
- package/dist/pptx/render/stroke-outline.d.ts +6 -0
- package/dist/pptx/render/stroke-outline.d.ts.map +1 -1
- package/dist/pptx/render/stroke-style.d.ts +8 -2
- package/dist/pptx/render/stroke-style.d.ts.map +1 -1
- package/dist/pptx/render/tab-row-actions.d.ts +40 -0
- package/dist/pptx/render/tab-row-actions.d.ts.map +1 -0
- package/dist/pptx/render/table-cell-css.d.ts +3 -2
- package/dist/pptx/render/table-cell-css.d.ts.map +1 -1
- package/dist/pptx/render/table-cell-edit.d.ts +1 -1
- package/dist/pptx/render/table-cell-edit.d.ts.map +1 -1
- package/dist/pptx/render/table-cell-paragraphs.d.ts +29 -0
- package/dist/pptx/render/table-cell-paragraphs.d.ts.map +1 -0
- package/dist/pptx/render/table-style-borders.d.ts.map +1 -1
- package/dist/pptx/render/table-style.d.ts +2 -0
- package/dist/pptx/render/table-style.d.ts.map +1 -1
- package/dist/pptx/render/title-bar.d.ts +5 -0
- package/dist/pptx/render/title-bar.d.ts.map +1 -1
- package/dist/pptx/render/viewer-root-options.d.ts +11 -3
- package/dist/pptx/render/viewer-root-options.d.ts.map +1 -1
- package/dist/pptx/web-components/index.d.ts.map +1 -1
- package/dist/pptx/web-components/office-token-bridge.d.ts +1 -1
- package/dist/pptx/web-components/office-token-bridge.d.ts.map +1 -1
- package/dist/pptx/web-components/ribbon-actions.d.ts +8 -0
- package/dist/pptx/web-components/ribbon-actions.d.ts.map +1 -0
- package/dist/presence.js +3 -3
- package/dist/ribbon/ribbon-actions.d.ts +119 -0
- package/dist/ribbon/ribbon-actions.d.ts.map +1 -0
- package/dist/ribbon/ribbon-tabs.d.ts +2 -1
- package/dist/ribbon/ribbon-tabs.d.ts.map +1 -1
- package/dist/smartart/smartart-svg.d.ts +3 -2
- package/dist/smartart.js +3 -3
- package/dist/suite/attachment-store.d.ts +13 -0
- package/dist/suite/document-store.d.ts +31 -0
- package/dist/suite/index.d.ts +2 -0
- package/dist/suite.js +132 -1
- package/dist/teams/app/channel-tab.d.ts +5 -0
- package/dist/teams/chat-composer.d.ts +3 -0
- package/dist/teams.js +7 -7
- package/dist/theme.js +2 -2
- package/dist/tokens.d.ts +9 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/visio/styles/index.d.ts +2 -0
- package/dist/visio/styles/theme.d.ts +11 -0
- package/dist/visio/styles.d.ts +2 -2
- package/dist/visio.js +66 -21
- package/dist/xlsx/backstage/index.d.ts +4 -1
- package/dist/xlsx/backstage/pages-share.d.ts +19 -0
- package/dist/xlsx/backstage/parts.d.ts +3 -0
- package/dist/xlsx/calc-preparation.d.ts +44 -0
- package/dist/xlsx/chart-fill-binding.d.ts +2 -2
- package/dist/xlsx/chart-series-gradient-type.d.ts +3 -2
- package/dist/xlsx/collaboration-session.d.ts +9 -0
- package/dist/xlsx/collaboration-types.d.ts +41 -0
- package/dist/xlsx/collaboration.d.ts +56 -0
- package/dist/xlsx/component.d.ts +8 -0
- package/dist/xlsx/dialogs/comments-list.d.ts +4 -0
- package/dist/xlsx/dialogs/help-dialogs.d.ts +1 -1
- package/dist/xlsx/editor-core.d.ts +6 -0
- package/dist/xlsx/element-api.d.ts +19 -1
- package/dist/xlsx/events.d.ts +4 -1
- package/dist/xlsx/grid/remote-layer.d.ts +3 -0
- package/dist/xlsx/grid/sparkline.d.ts +3 -0
- package/dist/xlsx/grid/styles.d.ts +1 -1
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/ribbon-actions.d.ts +22 -0
- package/dist/xlsx/shell-commands.d.ts +1 -1
- package/dist/xlsx/title-bar.d.ts +4 -2
- package/dist/xlsx.js +801 -92
- package/package.json +2 -2
- package/dist/pptx/web-components/status-bar-styles.d.ts +0 -3
- package/dist/pptx/web-components/status-bar-styles.d.ts.map +0 -1
- package/dist/pptx/web-components/title-bar-styles.d.ts +0 -7
- package/dist/pptx/web-components/title-bar-styles.d.ts.map +0 -1
package/dist/docx.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { defineSmartArt } from './chunk-
|
|
2
|
-
import { shadcnBridge } from './chunk-
|
|
3
|
-
import { createRibbonOverflow, defineRibbon, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-
|
|
4
|
-
import { registerIcon } from './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
1
|
+
import { defineSmartArt } from './chunk-NYRRH2MD.js';
|
|
2
|
+
import { shadcnBridge } from './chunk-56A2JK63.js';
|
|
3
|
+
import { createRibbonOverflow, defineRibbon, defineRuler, defineCommentsPane, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineRibbonActions, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-723JC3OC.js';
|
|
4
|
+
import { registerIcon } from './chunk-M6GF5ED2.js';
|
|
5
|
+
import './chunk-TWQ45BFL.js';
|
|
6
|
+
import './chunk-IY7QJLQG.js';
|
|
7
|
+
import './chunk-2WLRFPMW.js';
|
|
8
8
|
import { normalizeLocale, SUPPORTED_OFFICE_LOCALES, interpolate } from 'ooxml-core/i18n';
|
|
9
9
|
import { createDocument, saveDocx, sectionsFromLayout, sectionLayoutJson, sectionsOf, pageSizeOf, columnPreset, applyPageSetup, withSection, computeListLabels, numberNotesInOrder, tocEntries, tableOfFiguresInstruction, findTableOfContents, ensureListDefinition, resolveNumberingLevel, equalColumnDraft, readColumnDraft, PAGE_SIZE_OPTIONS, PAGE_SIZES, readPageSetup, isRunHiddenForReview, resolveTableStyleFormatting, resolveParagraphFormatting, displayListLabel, setTitlePage, setLineNumbering, setVerticalAlign, setPageNumbering, ST_NumberFormat, unequalColumnPreset, setColumns, setOrientation, setPageSize, setMargins, lineSpacingLabel, formatNoteNumber, reviewDocumentFormatting, reviewFormattingWarnings, listRevisions, plainText, tocHyperlinks, DEFAULT_TOC_INSTRUCTION, tocBookmarks, buildTableOfContents, tocCaptionLabel, isFieldLocked, twips as twips$1, signedTwips, formatListNumber, columnTextWidth, validColumnDraft, validatePageSetup, presetOf, LIGATURE_VALUES, isLigatures, reviewRunFormatting, resolveRunFormatting, reviewParagraphFormatting, resolveThemeColorReference, lineSpacingValue, isStHighlightColor, transformCase, DEFAULT_TABLE_BORDERS, parseLineSpacingValue, twipsAttr, twipsFromPixels, headingLevel, isValidLanguageTag, WORD, isHeadingListKind, fieldName, lineSpacingOptions, halfPointsFromPoints, changeColumnWidth, changeColumnGap, createListDefinition, linkStylesToList, headingListLevels, documentStats } from 'ooxml-core/docx';
|
|
10
10
|
import { Schema, DOMSerializer, Fragment } from 'prosemirror-model';
|
|
11
|
-
import { markSpecs, imageNodeSpec, fieldMarkerNodeSpec, noteReferenceNodeSpec, pageBreakNodeSpec, hardBreakNodeSpec, commentHistoryAttributes, tableCellStyle, tableStyle, createToggleFormat, expectDefined, paragraphBoxCss, themeToCssVars, lightTheme, darkTheme, normalizeThemeMode, applyThemeColors, refreshWordYjsPresence, normalizeRibbonActions, DirtyState, isWordYjsRemoteTransaction, REMOTE_TRANSACTION_META, repairCollaborativeDocumentIds, HEADER_FOOTER_INPUT, restoreSectionParts, commentThreadsFromDoc, restoreNoteParts, CollaborationClient, createCollaborationIdGenerator, WordYjsCollaboration, sectionPartsJson, NotePartsStep, notePartsJson, SectionPartsStep, fitZoomPercent, hasChangeAtCursor, hasAnyChange, commentIdsAtSelection, commentAnchors, countWords, fieldGuardPlugin, trackChangesPlugin, wordYjsPresencePlugin, placementClass, removeCommentThread, removeCommentAnchor, deleteComment, updateCommentThreads, addComment, toggleTrackChanges, goToNextChange, goToPreviousChange, rejectAllChanges, acceptAllChanges, rejectChangeAtCursor, acceptChangeAtCursor, goToComment, appendInlineNode, sameJson, sameRuns, PARAGRAPH_KEEP_KEYS, paragraphFromAttrs, parseBordersJson, isNavigableHref, wordYjsPluginKey, setReviewRecordingPreferences, nodeNumbering, paragraphFormattingRevision, inlineNodeRun, formattingRevision, insertWordHardBreak, paragraphAttrs, resolveCellVisuals, themeDrawing, ribbonActionIdForLabel, removeWordLink, fieldResultRanges, wordLinkRangeAt, ligatureCss as ligatureCss$1, wordYjsRedo, wordYjsUndo, runToInlineNodes as runToInlineNodes$1, backstageFocus, applyRunFormattingPatch, clearDirectRunFormatting, applyWordLink, ligatureStyle, wordHighlightColors, swatchColor, cssBorderSide, deleteFieldSelection, resolveComment, replyToComment, CollaborationAuthority } from 'ooxml-core/docx/ui';
|
|
11
|
+
import { markSpecs, imageNodeSpec, fieldMarkerNodeSpec, noteReferenceNodeSpec, pageBreakNodeSpec, hardBreakNodeSpec, commentHistoryAttributes, tableCellStyle, tableStyle, createToggleFormat, expectDefined, paragraphBoxCss, themeToCssVars, lightTheme, darkTheme, normalizeThemeMode, applyThemeColors, refreshWordYjsPresence, normalizeRibbonActions, DirtyState, isWordYjsRemoteTransaction, REMOTE_TRANSACTION_META, repairCollaborativeDocumentIds, HEADER_FOOTER_INPUT, restoreSectionParts, commentThreadsFromDoc, restoreNoteParts, CollaborationClient, createCollaborationIdGenerator, WordYjsCollaboration, sectionPartsJson, NotePartsStep, notePartsJson, SectionPartsStep, fitZoomPercent, hasChangeAtCursor, hasAnyChange, commentIdsAtSelection, commentAnchors, countWords, fieldGuardPlugin, trackChangesPlugin, wordYjsPresencePlugin, chartNodeSpec, placementClass, removeCommentThread, removeCommentAnchor, deleteComment, updateCommentThreads, addComment, toggleTrackChanges, goToNextChange, goToPreviousChange, rejectAllChanges, acceptAllChanges, rejectChangeAtCursor, acceptChangeAtCursor, goToComment, appendInlineNode, sameJson, sameRuns, PARAGRAPH_KEEP_KEYS, paragraphFromAttrs, parseBordersJson, isNavigableHref, wordYjsPluginKey, setReviewRecordingPreferences, nodeNumbering, paragraphFormattingRevision, inlineNodeRun, formattingRevision, insertWordHardBreak, paragraphAttrs, resolveCellVisuals, themeDrawing, ribbonActionIdForLabel, removeWordLink, fieldResultRanges, wordLinkRangeAt, ligatureCss as ligatureCss$1, wordYjsRedo, wordYjsUndo, runToInlineNodes as runToInlineNodes$1, backstageFocus, applyRunFormattingPatch, clearDirectRunFormatting, applyWordLink, ligatureStyle, wordHighlightColors, swatchColor, cssBorderSide, deleteFieldSelection, resolveComment, replyToComment, CollaborationAuthority } from 'ooxml-core/docx/ui';
|
|
12
12
|
export { CollaborationAuthority, CollaborationClient, RIBBON_ACTION_IDS, RIBBON_ACTION_LABELS, createCollaborationIdGenerator, darkTheme, isRibbonActionId, lightTheme, normalizeRibbonActions, repairCollaborativeDocumentIds, themeToCssVars } from 'ooxml-core/docx/ui';
|
|
13
13
|
import { parseOmml, convertOmmlToLatex, convertOmmlToMathMl } from 'ooxml-core/math';
|
|
14
14
|
import { PluginKey, EditorState, Plugin, NodeSelection, TextSelection, Selection } from 'prosemirror-state';
|
|
@@ -529,6 +529,7 @@ var deApp = {
|
|
|
529
529
|
Editing: "Bearbeiten",
|
|
530
530
|
Viewing: "Anzeigen",
|
|
531
531
|
"Show comments": "Kommentare anzeigen",
|
|
532
|
+
Share: "Freigeben",
|
|
532
533
|
"Unsaved changes": "Nicht gespeicherte \xC4nderungen",
|
|
533
534
|
Saved: "Gespeichert",
|
|
534
535
|
"Saving\u2026": "Speichern\u2026",
|
|
@@ -1267,6 +1268,7 @@ var deRibbon = {
|
|
|
1267
1268
|
Reply: "Antworten",
|
|
1268
1269
|
Resolve: "L\xF6sen",
|
|
1269
1270
|
Reopen: "Erneut \xF6ffnen",
|
|
1271
|
+
Resolved: "Gel\xF6st",
|
|
1270
1272
|
Delete: "L\xF6schen",
|
|
1271
1273
|
"No comments": "Noch keine Kommentare.",
|
|
1272
1274
|
Tracking: "Nachverfolgung",
|
|
@@ -1319,6 +1321,7 @@ var enApp = {
|
|
|
1319
1321
|
Editing: "Editing",
|
|
1320
1322
|
Viewing: "Viewing",
|
|
1321
1323
|
"Show comments": "Show comments",
|
|
1324
|
+
Share: "Share",
|
|
1322
1325
|
"Unsaved changes": "Unsaved changes",
|
|
1323
1326
|
Saved: "Saved",
|
|
1324
1327
|
"Saving\u2026": "Saving\u2026",
|
|
@@ -1927,6 +1930,7 @@ var enRibbon = {
|
|
|
1927
1930
|
Reply: "Reply",
|
|
1928
1931
|
Resolve: "Resolve",
|
|
1929
1932
|
Reopen: "Reopen",
|
|
1933
|
+
Resolved: "Resolved",
|
|
1930
1934
|
Delete: "Delete",
|
|
1931
1935
|
"No comments": "No comments yet.",
|
|
1932
1936
|
Tracking: "Tracking",
|
|
@@ -1979,6 +1983,7 @@ var esApp = {
|
|
|
1979
1983
|
Editing: "Edici\xF3n",
|
|
1980
1984
|
Viewing: "Visualizaci\xF3n",
|
|
1981
1985
|
"Show comments": "Mostrar comentarios",
|
|
1986
|
+
Share: "Compartir",
|
|
1982
1987
|
"Unsaved changes": "Cambios sin guardar",
|
|
1983
1988
|
Saved: "Guardado",
|
|
1984
1989
|
"Saving\u2026": "Guardando\u2026",
|
|
@@ -2587,6 +2592,7 @@ var esRibbon = {
|
|
|
2587
2592
|
Reply: "Responder",
|
|
2588
2593
|
Resolve: "Resolver",
|
|
2589
2594
|
Reopen: "Reabrir",
|
|
2595
|
+
Resolved: "Resuelto",
|
|
2590
2596
|
Delete: "Eliminar",
|
|
2591
2597
|
"No comments": "A\xFAn no hay comentarios.",
|
|
2592
2598
|
Tracking: "Seguimiento",
|
|
@@ -2639,6 +2645,7 @@ var frApp = {
|
|
|
2639
2645
|
Editing: "Modification",
|
|
2640
2646
|
Viewing: "Lecture",
|
|
2641
2647
|
"Show comments": "Afficher les commentaires",
|
|
2648
|
+
Share: "Partager",
|
|
2642
2649
|
"Unsaved changes": "Modifications non enregistr\xE9es",
|
|
2643
2650
|
Saved: "Enregistr\xE9",
|
|
2644
2651
|
"Saving\u2026": "Enregistrement\u2026",
|
|
@@ -3247,6 +3254,7 @@ var frRibbon = {
|
|
|
3247
3254
|
Reply: "R\xE9pondre",
|
|
3248
3255
|
Resolve: "R\xE9soudre",
|
|
3249
3256
|
Reopen: "Rouvrir",
|
|
3257
|
+
Resolved: "R\xE9solu",
|
|
3250
3258
|
Delete: "Supprimer",
|
|
3251
3259
|
"No comments": "Aucun commentaire pour le moment.",
|
|
3252
3260
|
Tracking: "Suivi",
|
|
@@ -3299,6 +3307,7 @@ var zhCNApp = {
|
|
|
3299
3307
|
Editing: "\u7F16\u8F91",
|
|
3300
3308
|
Viewing: "\u67E5\u770B",
|
|
3301
3309
|
"Show comments": "\u663E\u793A\u6279\u6CE8",
|
|
3310
|
+
Share: "\u5171\u4EAB",
|
|
3302
3311
|
"Unsaved changes": "\u672A\u4FDD\u5B58\u7684\u66F4\u6539",
|
|
3303
3312
|
Saved: "\u5DF2\u4FDD\u5B58",
|
|
3304
3313
|
"Saving\u2026": "\u6B63\u5728\u4FDD\u5B58\u2026",
|
|
@@ -3907,6 +3916,7 @@ var zhCNRibbon = {
|
|
|
3907
3916
|
Reply: "\u56DE\u590D",
|
|
3908
3917
|
Resolve: "\u89E3\u51B3",
|
|
3909
3918
|
Reopen: "\u91CD\u65B0\u6253\u5F00",
|
|
3919
|
+
Resolved: "\u5DF2\u89E3\u51B3",
|
|
3910
3920
|
Delete: "\u5220\u9664",
|
|
3911
3921
|
"No comments": "\u6682\u65E0\u6279\u6CE8\u3002",
|
|
3912
3922
|
Tracking: "\u4FEE\u8BA2",
|
|
@@ -4061,8 +4071,18 @@ function localizeElement(root, locale) {
|
|
|
4061
4071
|
}
|
|
4062
4072
|
}
|
|
4063
4073
|
}
|
|
4074
|
+
var controlCache = /* @__PURE__ */ new WeakMap();
|
|
4064
4075
|
function findLocalizedControl(root, label) {
|
|
4065
|
-
|
|
4076
|
+
let cache = controlCache.get(root);
|
|
4077
|
+
const cached = cache?.get(label);
|
|
4078
|
+
if (cached?.isConnected && root.contains(cached) && (cached.getAttribute("aria-label") === label || cached.dataset.localearialabel === label))
|
|
4079
|
+
return cached;
|
|
4080
|
+
const found = root.querySelector(`[aria-label="${label}"], [data-localearialabel="${label}"]`);
|
|
4081
|
+
if (found) {
|
|
4082
|
+
if (!cache) controlCache.set(root, cache = /* @__PURE__ */ new Map());
|
|
4083
|
+
cache.set(label, found);
|
|
4084
|
+
}
|
|
4085
|
+
return found;
|
|
4066
4086
|
}
|
|
4067
4087
|
|
|
4068
4088
|
// src/docx/shell-labels.ts
|
|
@@ -4348,9 +4368,9 @@ var schema = new Schema({
|
|
|
4348
4368
|
}
|
|
4349
4369
|
const body = [
|
|
4350
4370
|
"tbody",
|
|
4351
|
-
...rows.map((
|
|
4371
|
+
...rows.map((row3) => [
|
|
4352
4372
|
"tr",
|
|
4353
|
-
...
|
|
4373
|
+
...row3.map((cell) => ["td", cell.text])
|
|
4354
4374
|
])
|
|
4355
4375
|
];
|
|
4356
4376
|
return ["table", { class: "dve-nested-preview", contenteditable: "false" }, body];
|
|
@@ -4366,12 +4386,12 @@ function cellKey(cell) {
|
|
|
4366
4386
|
function tableNode(block, paragraphNode2, tableStyles) {
|
|
4367
4387
|
const columnCount = Math.max(
|
|
4368
4388
|
1,
|
|
4369
|
-
...block.rows.map((
|
|
4389
|
+
...block.rows.map((row3) => row3.reduce((sum, cell) => sum + (cell.gridSpan ?? 1), 0))
|
|
4370
4390
|
);
|
|
4371
|
-
const rows = block.rows.map((
|
|
4391
|
+
const rows = block.rows.map((row3, rowIndex) => {
|
|
4372
4392
|
const cells = [];
|
|
4373
4393
|
let gridColumn = 0;
|
|
4374
|
-
|
|
4394
|
+
row3.forEach((cell, columnIndex) => {
|
|
4375
4395
|
const column = gridColumn;
|
|
4376
4396
|
gridColumn += cell.gridSpan ?? 1;
|
|
4377
4397
|
if (cell.verticalMerge === "continue") return;
|
|
@@ -4446,19 +4466,19 @@ function tableNode(block, paragraphNode2, tableStyles) {
|
|
|
4446
4466
|
}
|
|
4447
4467
|
function tableFormattingFromNode(node) {
|
|
4448
4468
|
const rowProperties = [];
|
|
4449
|
-
node.forEach((
|
|
4469
|
+
node.forEach((row3) => rowProperties.push(structuredClone(row3.attrs.properties ?? {})));
|
|
4450
4470
|
return {
|
|
4451
|
-
rowProperties: rowProperties.some((
|
|
4471
|
+
rowProperties: rowProperties.some((row3) => Object.keys(row3).length) ? rowProperties : void 0,
|
|
4452
4472
|
cellMargins: typeof node.attrs.cellMargins === "string" ? JSON.parse(node.attrs.cellMargins) : void 0
|
|
4453
4473
|
};
|
|
4454
4474
|
}
|
|
4455
4475
|
function convertSimpleTable(node, convertParagraph, prior) {
|
|
4456
4476
|
const priorCells = /* @__PURE__ */ new Map();
|
|
4457
|
-
for (const
|
|
4477
|
+
for (const row3 of prior?.rows ?? []) for (const cell of row3) priorCells.set(cellKey(cell), cell);
|
|
4458
4478
|
const rows = [];
|
|
4459
|
-
node.forEach((
|
|
4479
|
+
node.forEach((row3) => {
|
|
4460
4480
|
const cells = [];
|
|
4461
|
-
|
|
4481
|
+
row3.forEach((cell) => {
|
|
4462
4482
|
const paragraphs = [];
|
|
4463
4483
|
cell.forEach((paragraph2) => {
|
|
4464
4484
|
if (paragraph2.type.name === "paragraph") paragraphs.push(convertParagraph(paragraph2));
|
|
@@ -4492,9 +4512,9 @@ function convertSimpleTable(node, convertParagraph, prior) {
|
|
|
4492
4512
|
function convertMergedTable(node, prior, convertParagraph) {
|
|
4493
4513
|
const updated = structuredClone(prior);
|
|
4494
4514
|
const cellByKey = /* @__PURE__ */ new Map();
|
|
4495
|
-
for (const
|
|
4515
|
+
for (const row3 of updated.rows) for (const cell of row3) cellByKey.set(cellKey(cell), cell);
|
|
4496
4516
|
node.forEach(
|
|
4497
|
-
(
|
|
4517
|
+
(row3) => row3.forEach((cellNode) => {
|
|
4498
4518
|
const target = cellByKey.get(String(cellNode.attrs.sourceCellKey || ""));
|
|
4499
4519
|
if (!target) return;
|
|
4500
4520
|
const paragraphs = [];
|
|
@@ -4551,14 +4571,14 @@ function sectionBreaksPlugin() {
|
|
|
4551
4571
|
const json = state.doc.attrs.sections;
|
|
4552
4572
|
const sections = typeof json === "string" ? JSON.parse(json) : [];
|
|
4553
4573
|
if (sections.length < 2) return null;
|
|
4554
|
-
const
|
|
4574
|
+
const labels3 = /* @__PURE__ */ new Map();
|
|
4555
4575
|
sections.slice(0, -1).forEach((section3, index) => {
|
|
4556
4576
|
const following = sections[index + 1];
|
|
4557
|
-
if (following)
|
|
4577
|
+
if (following) labels3.set(section3.endsAtBlockId, BREAK_LABEL[following.type]);
|
|
4558
4578
|
});
|
|
4559
4579
|
const decorations2 = [];
|
|
4560
4580
|
state.doc.forEach((node, offset) => {
|
|
4561
|
-
const label =
|
|
4581
|
+
const label = labels3.get(String(node.attrs.id));
|
|
4562
4582
|
if (label)
|
|
4563
4583
|
decorations2.push(
|
|
4564
4584
|
Decoration.node(offset, offset + node.nodeSize, {
|
|
@@ -4572,8 +4592,8 @@ function sectionBreaksPlugin() {
|
|
|
4572
4592
|
}
|
|
4573
4593
|
});
|
|
4574
4594
|
}
|
|
4575
|
-
function paragraphNode(paragraph2,
|
|
4576
|
-
const label =
|
|
4595
|
+
function paragraphNode(paragraph2, labels3, noteNumber) {
|
|
4596
|
+
const label = labels3.get(paragraph2.id);
|
|
4577
4597
|
const children = paragraph2.runs.flatMap((run) => runToInlineNodes(run, noteNumber));
|
|
4578
4598
|
return schema.node(
|
|
4579
4599
|
"paragraph",
|
|
@@ -4589,7 +4609,7 @@ function paragraphNode(paragraph2, labels2, noteNumber) {
|
|
|
4589
4609
|
);
|
|
4590
4610
|
}
|
|
4591
4611
|
function modelToDoc(model) {
|
|
4592
|
-
const
|
|
4612
|
+
const labels3 = computeListLabels(model);
|
|
4593
4613
|
const footnoteOrder = numberNotesInOrder(model.blocks, "footnote");
|
|
4594
4614
|
const endnoteOrder = numberNotesInOrder(model.blocks, "endnote");
|
|
4595
4615
|
const noteNumber = (kind, id) => {
|
|
@@ -4598,10 +4618,10 @@ function modelToDoc(model) {
|
|
|
4598
4618
|
return { number, label: formatNoteNumber(number, format) };
|
|
4599
4619
|
};
|
|
4600
4620
|
const blocks = model.blocks.map((block) => {
|
|
4601
|
-
if (block.type === "paragraph") return paragraphNode(block,
|
|
4621
|
+
if (block.type === "paragraph") return paragraphNode(block, labels3, noteNumber);
|
|
4602
4622
|
return tableNode(
|
|
4603
4623
|
block,
|
|
4604
|
-
(paragraph2) => paragraphNode(paragraph2,
|
|
4624
|
+
(paragraph2) => paragraphNode(paragraph2, labels3, noteNumber),
|
|
4605
4625
|
model.tableStyles
|
|
4606
4626
|
);
|
|
4607
4627
|
});
|
|
@@ -4666,7 +4686,7 @@ function docToModel(doc, prior) {
|
|
|
4666
4686
|
if (block.type === "paragraph") remember(block);
|
|
4667
4687
|
else {
|
|
4668
4688
|
priorTables.set(block.id, block);
|
|
4669
|
-
for (const
|
|
4689
|
+
for (const row3 of block.rows) for (const cell of row3) cell.paragraphs.forEach(remember);
|
|
4670
4690
|
}
|
|
4671
4691
|
}
|
|
4672
4692
|
const convertParagraph = (node) => {
|
|
@@ -4968,10 +4988,10 @@ var DOCX_EDITOR_EVENTS = [
|
|
|
4968
4988
|
function on(target, name, listener) {
|
|
4969
4989
|
target.addEventListener(name, (event) => listener(event));
|
|
4970
4990
|
}
|
|
4971
|
-
function emit(target, name,
|
|
4991
|
+
function emit(target, name, detail2, options = {}) {
|
|
4972
4992
|
return target.dispatchEvent(
|
|
4973
4993
|
new CustomEvent(name, {
|
|
4974
|
-
detail,
|
|
4994
|
+
detail: detail2,
|
|
4975
4995
|
bubbles: true,
|
|
4976
4996
|
composed: true,
|
|
4977
4997
|
...options
|
|
@@ -5435,7 +5455,7 @@ function openColorGridPopover(anchor, choose, options = {}) {
|
|
|
5435
5455
|
grid(
|
|
5436
5456
|
...THEME.map(([hex, name]) => swatch(hex, name)),
|
|
5437
5457
|
...[0, 1, 2, 3, 4].flatMap(
|
|
5438
|
-
(
|
|
5458
|
+
(row3) => THEME.map(([, name], column) => swatch(shades[column][row3], name))
|
|
5439
5459
|
)
|
|
5440
5460
|
),
|
|
5441
5461
|
title("Standard Colors"),
|
|
@@ -5807,10 +5827,10 @@ function openGallery(anchor, control, kind, commands) {
|
|
|
5807
5827
|
words.className = "gallery-words";
|
|
5808
5828
|
words.append(name);
|
|
5809
5829
|
if (look.detail) {
|
|
5810
|
-
const
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
words.append(
|
|
5830
|
+
const detail2 = document.createElement("span");
|
|
5831
|
+
detail2.className = "gallery-detail";
|
|
5832
|
+
detail2.textContent = look.detail;
|
|
5833
|
+
words.append(detail2);
|
|
5814
5834
|
}
|
|
5815
5835
|
item.append(look.thumb, words);
|
|
5816
5836
|
item.addEventListener("mousedown", (event) => event.preventDefault());
|
|
@@ -6505,8 +6525,8 @@ var languageOptions = [
|
|
|
6505
6525
|
["hi-IN", "Hindi (India)"],
|
|
6506
6526
|
["ru-RU", "Russian (Russia)"]
|
|
6507
6527
|
];
|
|
6508
|
-
function emit2(control,
|
|
6509
|
-
emit(control, "ribbon-action",
|
|
6528
|
+
function emit2(control, detail2) {
|
|
6529
|
+
emit(control, "ribbon-action", detail2);
|
|
6510
6530
|
}
|
|
6511
6531
|
function languageControl(label, key2) {
|
|
6512
6532
|
const wrapper = document.createElement("label");
|
|
@@ -7838,15 +7858,15 @@ function runStylesPlugin(getModel, getMode = () => "all") {
|
|
|
7838
7858
|
if (block.type.name !== "table") return;
|
|
7839
7859
|
const table = tables.get(String(block.attrs.id));
|
|
7840
7860
|
let columnCount = 1;
|
|
7841
|
-
block.forEach((
|
|
7861
|
+
block.forEach((row3) => {
|
|
7842
7862
|
let width = 0;
|
|
7843
|
-
|
|
7863
|
+
row3.forEach((cell) => width += Number(cell.attrs.colspan) || 1);
|
|
7844
7864
|
columnCount = Math.max(columnCount, width);
|
|
7845
7865
|
});
|
|
7846
|
-
block.forEach((
|
|
7866
|
+
block.forEach((row3, rowOffset, rowIndex) => {
|
|
7847
7867
|
let column = 0;
|
|
7848
7868
|
const rowStart = blockOffset + 1 + rowOffset + 1;
|
|
7849
|
-
|
|
7869
|
+
row3.forEach((cell, cellOffset) => {
|
|
7850
7870
|
const tableStyleRun = table?.style ? resolveTableStyleFormatting(
|
|
7851
7871
|
table.style,
|
|
7852
7872
|
model.tableStyles,
|
|
@@ -9206,7 +9226,7 @@ function readCellFill(ctx, state, scope) {
|
|
|
9206
9226
|
const fills = /* @__PURE__ */ new Set();
|
|
9207
9227
|
const table = state.doc.nodeAt(ctx.tablePos);
|
|
9208
9228
|
table?.forEach(
|
|
9209
|
-
(
|
|
9229
|
+
(row3, _offset, rowIndex) => row3.forEach((cell, _cellOffset, column) => {
|
|
9210
9230
|
if (scope === "cell" && (rowIndex < ctx.rect.top || rowIndex > ctx.rect.bottom || column < ctx.rect.left || column > ctx.rect.right))
|
|
9211
9231
|
return;
|
|
9212
9232
|
const fill = cell.attrs.shadingFill;
|
|
@@ -9221,7 +9241,7 @@ function applyCellFill(tr, ctx, scope, fill) {
|
|
|
9221
9241
|
const table = tr.doc.nodeAt(ctx.tablePos);
|
|
9222
9242
|
if (!table) return;
|
|
9223
9243
|
table.forEach(
|
|
9224
|
-
(
|
|
9244
|
+
(row3, rowOffset, rowIndex) => row3.forEach((cell, cellOffset, column) => {
|
|
9225
9245
|
if (scope === "cell" && (rowIndex < ctx.rect.top || rowIndex > ctx.rect.bottom || column < ctx.rect.left || column > ctx.rect.right))
|
|
9226
9246
|
return;
|
|
9227
9247
|
tr.setNodeMarkup(ctx.tablePos + 2 + rowOffset + cellOffset, void 0, {
|
|
@@ -9258,8 +9278,8 @@ function tableBorderContext(state) {
|
|
|
9258
9278
|
if (table.attrs.structureEditable === false) return null;
|
|
9259
9279
|
const tablePos = $from.before(depth);
|
|
9260
9280
|
const cells = [];
|
|
9261
|
-
table.forEach((
|
|
9262
|
-
|
|
9281
|
+
table.forEach((row3, rowOffset, rowIndex) => {
|
|
9282
|
+
row3.forEach((cell, cellOffset, column) => {
|
|
9263
9283
|
const pos = tablePos + 1 + rowOffset + 1 + cellOffset;
|
|
9264
9284
|
if (Math.max(from2, pos + 1) <= Math.min(to, pos + cell.nodeSize - 1))
|
|
9265
9285
|
cells.push({ pos, row: rowIndex, column, node: cell });
|
|
@@ -9283,11 +9303,11 @@ function tableBorderContext(state) {
|
|
|
9283
9303
|
}
|
|
9284
9304
|
function edgesOf(preset, rect) {
|
|
9285
9305
|
const edges = [];
|
|
9286
|
-
for (let
|
|
9306
|
+
for (let row3 = rect.top; row3 <= rect.bottom; row3++)
|
|
9287
9307
|
for (let column = rect.left; column <= rect.right; column++) {
|
|
9288
9308
|
const outside = {
|
|
9289
|
-
top:
|
|
9290
|
-
bottom:
|
|
9309
|
+
top: row3 === rect.top,
|
|
9310
|
+
bottom: row3 === rect.bottom,
|
|
9291
9311
|
left: column === rect.left,
|
|
9292
9312
|
right: column === rect.right
|
|
9293
9313
|
};
|
|
@@ -9295,13 +9315,13 @@ function edgesOf(preset, rect) {
|
|
|
9295
9315
|
const isOutside = outside[side];
|
|
9296
9316
|
const horizontal = side === "top" || side === "bottom";
|
|
9297
9317
|
const wanted = preset === "all" || preset === "outside" && isOutside || preset === "insideH" && horizontal && !isOutside || preset === "insideV" && !horizontal && !isOutside || preset === side && isOutside;
|
|
9298
|
-
if (wanted) edges.push({ row:
|
|
9318
|
+
if (wanted) edges.push({ row: row3, column, side });
|
|
9299
9319
|
}
|
|
9300
9320
|
}
|
|
9301
9321
|
return edges;
|
|
9302
9322
|
}
|
|
9303
|
-
var current = (ctx, state,
|
|
9304
|
-
const cell = state.doc.nodeAt(ctx.tablePos)?.child(
|
|
9323
|
+
var current = (ctx, state, row3, column) => {
|
|
9324
|
+
const cell = state.doc.nodeAt(ctx.tablePos)?.child(row3).child(column);
|
|
9305
9325
|
return parse2(cell?.attrs.borders);
|
|
9306
9326
|
};
|
|
9307
9327
|
function applyEdits(view, ctx, edits, shading) {
|
|
@@ -9326,9 +9346,9 @@ function applyEdits(view, ctx, edits, shading) {
|
|
|
9326
9346
|
edit
|
|
9327
9347
|
]);
|
|
9328
9348
|
let rowOffset = ctx.tablePos + 1;
|
|
9329
|
-
table.forEach((
|
|
9349
|
+
table.forEach((row3, _offset, rowIndex) => {
|
|
9330
9350
|
let cellPos = rowOffset + 1;
|
|
9331
|
-
|
|
9351
|
+
row3.forEach((cell, _cellOffset, column) => {
|
|
9332
9352
|
const group3 = grouped.get(`${rowIndex}:${column}`);
|
|
9333
9353
|
if (group3) {
|
|
9334
9354
|
const visual = parse2(cell.attrs.borders);
|
|
@@ -9350,7 +9370,7 @@ function applyEdits(view, ctx, edits, shading) {
|
|
|
9350
9370
|
}
|
|
9351
9371
|
cellPos += cell.nodeSize;
|
|
9352
9372
|
});
|
|
9353
|
-
rowOffset +=
|
|
9373
|
+
rowOffset += row3.nodeSize;
|
|
9354
9374
|
});
|
|
9355
9375
|
if (shading) applyCellFill(tr, ctx, shading.scope, shading.fill);
|
|
9356
9376
|
if (!tr.docChanged) return false;
|
|
@@ -10129,9 +10149,9 @@ function paragraphElement(paragraph2, values2) {
|
|
|
10129
10149
|
function blockElement(block, values2) {
|
|
10130
10150
|
if (block.type === "paragraph") return paragraphElement(block, values2);
|
|
10131
10151
|
const table = document.createElement("table");
|
|
10132
|
-
for (const
|
|
10152
|
+
for (const row3 of block.rows) {
|
|
10133
10153
|
const tr = document.createElement("tr");
|
|
10134
|
-
for (const cell of
|
|
10154
|
+
for (const cell of row3) {
|
|
10135
10155
|
const td = document.createElement("td");
|
|
10136
10156
|
if (cell.gridSpan && cell.gridSpan > 1) td.colSpan = cell.gridSpan;
|
|
10137
10157
|
for (const paragraph2 of cell.paragraphs) td.append(paragraphElement(paragraph2, values2));
|
|
@@ -10150,7 +10170,7 @@ function renderHeaderFooter(content, values2, kind) {
|
|
|
10150
10170
|
}
|
|
10151
10171
|
function floatingPictures(content, page2, anchorTopPx, values2) {
|
|
10152
10172
|
const paragraphs = content.blocks.flatMap(
|
|
10153
|
-
(block) => block.type === "paragraph" ? [block] : block.rows.flatMap((
|
|
10173
|
+
(block) => block.type === "paragraph" ? [block] : block.rows.flatMap((row3) => row3.flatMap((cell) => cell.paragraphs))
|
|
10154
10174
|
);
|
|
10155
10175
|
const column = { xPx: 0, widthPx: page2.widthPx - page2.marginLeftPx - page2.marginRightPx };
|
|
10156
10176
|
return paragraphs.flatMap(
|
|
@@ -11028,10 +11048,10 @@ function tablePropertiesContext(state) {
|
|
|
11028
11048
|
const rows = [];
|
|
11029
11049
|
const cells = [];
|
|
11030
11050
|
let pos = $from.start(depth);
|
|
11031
|
-
table.forEach((
|
|
11051
|
+
table.forEach((row3, offset, index) => {
|
|
11032
11052
|
if (index >= $from.index(depth) && index <= $to.index(depth))
|
|
11033
|
-
rows.push({ pos: pos + offset, properties:
|
|
11034
|
-
|
|
11053
|
+
rows.push({ pos: pos + offset, properties: row3.attrs.properties ?? {} });
|
|
11054
|
+
row3.forEach((cell, cellOffset) => {
|
|
11035
11055
|
const cellPos = pos + offset + 1 + cellOffset;
|
|
11036
11056
|
if (Math.max(state.selection.from, cellPos + 1) <= Math.min(state.selection.to, cellPos + cell.nodeSize - 1))
|
|
11037
11057
|
cells.push({
|
|
@@ -11057,12 +11077,12 @@ function applyTableProperties(view, rowPatch, marginPatch, cellMarginPatch, cell
|
|
|
11057
11077
|
if (!Object.keys(rowPatch).length && !Object.keys(marginPatch).length && cellMarginPatch === void 0 && cellAlignment === void 0)
|
|
11058
11078
|
return true;
|
|
11059
11079
|
const tr = closeHistory(view.state.tr);
|
|
11060
|
-
for (const
|
|
11061
|
-
const node = tr.doc.nodeAt(
|
|
11062
|
-
const properties = { ...
|
|
11080
|
+
for (const row3 of context2.rows) {
|
|
11081
|
+
const node = tr.doc.nodeAt(row3.pos);
|
|
11082
|
+
const properties = { ...row3.properties, ...rowPatch };
|
|
11063
11083
|
for (const key2 of Object.keys(properties))
|
|
11064
11084
|
if (properties[key2] === void 0) delete properties[key2];
|
|
11065
|
-
tr.setNodeMarkup(
|
|
11085
|
+
tr.setNodeMarkup(row3.pos, void 0, {
|
|
11066
11086
|
...node.attrs,
|
|
11067
11087
|
properties,
|
|
11068
11088
|
heightPx: properties.heightTwips ? properties.heightTwips / 15 : null
|
|
@@ -11222,7 +11242,7 @@ function createTablePropertiesDialog(viewOf) {
|
|
|
11222
11242
|
element.replaceChildren(...content);
|
|
11223
11243
|
localizeDialog(element, locale);
|
|
11224
11244
|
const common = (read) => {
|
|
11225
|
-
const values2 = context2.rows.map((
|
|
11245
|
+
const values2 = context2.rows.map((row3) => read(row3.properties));
|
|
11226
11246
|
return values2.every((value) => value === values2[0]) ? values2[0] : null;
|
|
11227
11247
|
};
|
|
11228
11248
|
setTriState(
|
|
@@ -12330,13 +12350,13 @@ function syncFormatControls(toolbar, state) {
|
|
|
12330
12350
|
});
|
|
12331
12351
|
if (!found) addMarks(state.selection.$from.marks());
|
|
12332
12352
|
}
|
|
12333
|
-
const
|
|
12353
|
+
const labels3 = {
|
|
12334
12354
|
bold: "Bold",
|
|
12335
12355
|
italic: "Italic",
|
|
12336
12356
|
underline: "Underline",
|
|
12337
12357
|
strike: "Strikethrough"
|
|
12338
12358
|
};
|
|
12339
|
-
for (const [key2, label] of Object.entries(
|
|
12359
|
+
for (const [key2, label] of Object.entries(labels3)) {
|
|
12340
12360
|
const values2 = marked.get(key2);
|
|
12341
12361
|
findLocalizedControl(toolbar, label)?.setAttribute(
|
|
12342
12362
|
"aria-pressed",
|
|
@@ -12958,7 +12978,7 @@ function paragraphStylesPlugin(getModel, getMode = () => "all") {
|
|
|
12958
12978
|
state.doc.descendants((node) => {
|
|
12959
12979
|
if (node.type.name === "paragraph") paragraphs.push(displayParagraph(node, mode).value);
|
|
12960
12980
|
});
|
|
12961
|
-
const
|
|
12981
|
+
const labels3 = computeListLabels({ ...model, blocks: paragraphs });
|
|
12962
12982
|
const decorations2 = [];
|
|
12963
12983
|
state.doc.descendants((node, pos) => {
|
|
12964
12984
|
if (node.type.name !== "paragraph") return;
|
|
@@ -12966,7 +12986,7 @@ function paragraphStylesPlugin(getModel, getMode = () => "all") {
|
|
|
12966
12986
|
const paragraph2 = projected.value;
|
|
12967
12987
|
const reset = mode === "original" && node.attrs.formatRevision && !projected.error ? `${ORIGINAL_PARAGRAPH_RESET};` : "";
|
|
12968
12988
|
const effective = catalog ? resolveParagraphFormatting(paragraph2, catalog) : paragraph2;
|
|
12969
|
-
const label =
|
|
12989
|
+
const label = labels3.get(String(node.attrs.id));
|
|
12970
12990
|
const marker = listMarkerDisplay(
|
|
12971
12991
|
node,
|
|
12972
12992
|
{ ...paragraph2, ...effective },
|
|
@@ -13009,8 +13029,8 @@ function context(view) {
|
|
|
13009
13029
|
const table = $from.node(tableDepth);
|
|
13010
13030
|
const width = table.childCount ? table.child(0).childCount : 0;
|
|
13011
13031
|
if (!width || table.childCount < 1) return null;
|
|
13012
|
-
for (let
|
|
13013
|
-
if (table.child(
|
|
13032
|
+
for (let row3 = 0; row3 < table.childCount; row3++)
|
|
13033
|
+
if (table.child(row3).childCount !== width) return null;
|
|
13014
13034
|
return {
|
|
13015
13035
|
table,
|
|
13016
13036
|
tablePos: $from.before(tableDepth),
|
|
@@ -13100,9 +13120,9 @@ function executeTableCommand(view, action) {
|
|
|
13100
13120
|
view,
|
|
13101
13121
|
ctx,
|
|
13102
13122
|
rows.map(
|
|
13103
|
-
(
|
|
13123
|
+
(row3) => row3.copy(
|
|
13104
13124
|
Fragment.fromArray(
|
|
13105
|
-
Array.from({ length:
|
|
13125
|
+
Array.from({ length: row3.childCount }, (_, index) => row3.child(index)).filter(
|
|
13106
13126
|
(_, index) => index !== ctx.columnIndex
|
|
13107
13127
|
)
|
|
13108
13128
|
)
|
|
@@ -13115,10 +13135,10 @@ function executeTableCommand(view, action) {
|
|
|
13115
13135
|
replacedTable(
|
|
13116
13136
|
view,
|
|
13117
13137
|
ctx,
|
|
13118
|
-
rows.map((
|
|
13119
|
-
const cells = Array.from({ length:
|
|
13138
|
+
rows.map((row3) => {
|
|
13139
|
+
const cells = Array.from({ length: row3.childCount }, (_, index) => row3.child(index));
|
|
13120
13140
|
cells.splice(at, 0, emptyCell(nextId));
|
|
13121
|
-
return
|
|
13141
|
+
return row3.copy(Fragment.fromArray(cells));
|
|
13122
13142
|
})
|
|
13123
13143
|
);
|
|
13124
13144
|
return true;
|
|
@@ -13256,13 +13276,6 @@ function markerPositions(geometry) {
|
|
|
13256
13276
|
right: geometry.pageWidth - geometry.marginRight - geometry.indentRight
|
|
13257
13277
|
};
|
|
13258
13278
|
}
|
|
13259
|
-
function inchLabels(geometry) {
|
|
13260
|
-
const labels2 = [];
|
|
13261
|
-
const width = geometry.pageWidth - geometry.marginLeft - geometry.marginRight;
|
|
13262
|
-
for (let inch = 1; inch * PX_PER_INCH < width; inch++)
|
|
13263
|
-
labels2.push({ at: geometry.marginLeft + inch * PX_PER_INCH, text: String(inch) });
|
|
13264
|
-
return labels2;
|
|
13265
|
-
}
|
|
13266
13279
|
function markerChange(marker, x, geometry) {
|
|
13267
13280
|
const snap = (px2) => Math.round(px2 / SNAP_PX) * SNAP_PX;
|
|
13268
13281
|
const inches3 = (px2) => Math.round(px2 / PX_PER_INCH * 1e3) / 1e3;
|
|
@@ -13289,87 +13302,52 @@ function markerChange(marker, x, geometry) {
|
|
|
13289
13302
|
}
|
|
13290
13303
|
var SNAP_PX = PX_PER_INCH / 16;
|
|
13291
13304
|
var geometries = /* @__PURE__ */ new WeakMap();
|
|
13292
|
-
function
|
|
13293
|
-
|
|
13294
|
-
|
|
13295
|
-
|
|
13296
|
-
|
|
13297
|
-
|
|
13298
|
-
|
|
13299
|
-
|
|
13300
|
-
const zoom = Number(ruler.style.getPropertyValue("--dve-zoom")) || 1;
|
|
13301
|
-
const at = (e) => (e.clientX - ruler.getBoundingClientRect().left) / zoom;
|
|
13302
|
-
const move = (e) => {
|
|
13303
|
-
const preview = markerChange(name, at(e), geometry);
|
|
13304
|
-
const shifted = { ...geometry };
|
|
13305
|
-
if (preview.leftInches !== void 0) shifted.indentLeft = preview.leftInches * PX_PER_INCH;
|
|
13306
|
-
if (preview.rightInches !== void 0)
|
|
13307
|
-
shifted.indentRight = preview.rightInches * PX_PER_INCH;
|
|
13308
|
-
if (preview.special)
|
|
13309
|
-
shifted.firstLine = (preview.special === "hanging" ? -1 : 1) * (preview.specialInches ?? 0) * PX_PER_INCH;
|
|
13310
|
-
paintMarkers(ruler, shifted);
|
|
13311
|
-
};
|
|
13312
|
-
const finish = (e) => {
|
|
13313
|
-
marker.removeEventListener("pointermove", move);
|
|
13314
|
-
marker.removeEventListener("pointerup", finish);
|
|
13315
|
-
marker.removeEventListener("pointercancel", finish);
|
|
13316
|
-
onChange(e.type === "pointerup" ? markerChange(name, at(e), geometry) : {});
|
|
13317
|
-
};
|
|
13318
|
-
marker.addEventListener("pointermove", move);
|
|
13319
|
-
marker.addEventListener("pointerup", finish);
|
|
13320
|
-
marker.addEventListener("pointercancel", finish);
|
|
13321
|
-
});
|
|
13322
|
-
}
|
|
13305
|
+
function previewGeometry(marker, x, geometry) {
|
|
13306
|
+
const preview = markerChange(marker, x, geometry);
|
|
13307
|
+
const shifted = { ...geometry };
|
|
13308
|
+
if (preview.leftInches !== void 0) shifted.indentLeft = preview.leftInches * PX_PER_INCH;
|
|
13309
|
+
if (preview.rightInches !== void 0) shifted.indentRight = preview.rightInches * PX_PER_INCH;
|
|
13310
|
+
if (preview.special)
|
|
13311
|
+
shifted.firstLine = (preview.special === "hanging" ? -1 : 1) * (preview.specialInches ?? 0) * PX_PER_INCH;
|
|
13312
|
+
return shifted;
|
|
13323
13313
|
}
|
|
13324
13314
|
function paintMarkers(ruler, geometry) {
|
|
13325
13315
|
const positions = markerPositions(geometry);
|
|
13326
|
-
|
|
13327
|
-
|
|
13328
|
-
|
|
13329
|
-
|
|
13316
|
+
ruler.markers = [
|
|
13317
|
+
{ name: "first-line", position: positions.firstLine, edge: "top" },
|
|
13318
|
+
{ name: "left", position: positions.left },
|
|
13319
|
+
{ name: "right", position: positions.right }
|
|
13320
|
+
];
|
|
13330
13321
|
}
|
|
13331
13322
|
function createRuler(onChange) {
|
|
13332
|
-
|
|
13323
|
+
defineRuler();
|
|
13324
|
+
const ruler = document.createElement("office-ui-ruler");
|
|
13333
13325
|
ruler.className = "dve-ruler";
|
|
13334
|
-
ruler.
|
|
13335
|
-
ruler.
|
|
13336
|
-
|
|
13337
|
-
|
|
13338
|
-
|
|
13339
|
-
|
|
13340
|
-
|
|
13341
|
-
|
|
13342
|
-
|
|
13343
|
-
|
|
13344
|
-
|
|
13345
|
-
|
|
13346
|
-
|
|
13326
|
+
ruler.label = "Ruler";
|
|
13327
|
+
ruler.labelsWithinMargins = true;
|
|
13328
|
+
const detail2 = (event) => event.detail;
|
|
13329
|
+
const marker = (event) => detail2(event).name;
|
|
13330
|
+
ruler.addEventListener("ruler-marker-move", (event) => {
|
|
13331
|
+
const geometry = geometries.get(ruler);
|
|
13332
|
+
if (geometry)
|
|
13333
|
+
paintMarkers(ruler, previewGeometry(marker(event), detail2(event).position, geometry));
|
|
13334
|
+
});
|
|
13335
|
+
ruler.addEventListener("ruler-marker-commit", (event) => {
|
|
13336
|
+
const geometry = geometries.get(ruler);
|
|
13337
|
+
if (geometry) onChange?.(markerChange(marker(event), detail2(event).position, geometry));
|
|
13338
|
+
});
|
|
13339
|
+
ruler.addEventListener("ruler-marker-cancel", () => onChange?.({}));
|
|
13347
13340
|
return ruler;
|
|
13348
13341
|
}
|
|
13349
13342
|
function updateRuler(ruler, geometry, zoom) {
|
|
13350
|
-
const
|
|
13351
|
-
ruler.style.width = `${geometry.pageWidth}px`;
|
|
13352
|
-
ruler.style.setProperty("--dve-zoom", String(zoom));
|
|
13353
|
-
ruler.style.setProperty("--dve-ruler-origin", `${geometry.marginLeft}px`);
|
|
13354
|
-
const left = part("margin-left");
|
|
13355
|
-
left.style.width = `${geometry.marginLeft}px`;
|
|
13356
|
-
const right = part("margin-right");
|
|
13357
|
-
right.style.width = `${geometry.marginRight}px`;
|
|
13343
|
+
const element = ruler;
|
|
13358
13344
|
geometries.set(ruler, geometry);
|
|
13359
|
-
|
|
13360
|
-
|
|
13361
|
-
|
|
13362
|
-
|
|
13363
|
-
|
|
13364
|
-
|
|
13365
|
-
...wanted.map(({ at, text }) => {
|
|
13366
|
-
const label = document.createElement("span");
|
|
13367
|
-
label.textContent = text;
|
|
13368
|
-
label.style.left = `${at}px`;
|
|
13369
|
-
return label;
|
|
13370
|
-
})
|
|
13371
|
-
);
|
|
13372
|
-
}
|
|
13345
|
+
element.extent = geometry.pageWidth;
|
|
13346
|
+
element.zoom = zoom;
|
|
13347
|
+
element.origin = geometry.marginLeft;
|
|
13348
|
+
element.marginStart = geometry.marginLeft;
|
|
13349
|
+
element.marginEnd = geometry.marginRight;
|
|
13350
|
+
paintMarkers(element, geometry);
|
|
13373
13351
|
}
|
|
13374
13352
|
|
|
13375
13353
|
// src/docx/ruler-sync.ts
|
|
@@ -13445,9 +13423,9 @@ function refreshEditorControls(toolbar, view, model, readOnly, collaboration, lo
|
|
|
13445
13423
|
syncParagraphToggles(toolbar, view, model);
|
|
13446
13424
|
syncContextualTabs(toolbar, state);
|
|
13447
13425
|
syncRuler(toolbar, view, model);
|
|
13448
|
-
const trackButton = toolbar
|
|
13426
|
+
const trackButton = findLocalizedControl(toolbar, "Track changes");
|
|
13449
13427
|
trackButton?.setAttribute("aria-pressed", String(Boolean(model.trackChanges)));
|
|
13450
|
-
const commentsButton = toolbar
|
|
13428
|
+
const commentsButton = findLocalizedControl(toolbar, "Comments");
|
|
13451
13429
|
commentsButton?.setAttribute("aria-pressed", String(commentsOpen));
|
|
13452
13430
|
const changeAtCursor = hasChangeAtCursor(view);
|
|
13453
13431
|
const anyChange = hasAnyChange(view);
|
|
@@ -13467,9 +13445,7 @@ function refreshEditorControls(toolbar, view, model, readOnly, collaboration, lo
|
|
|
13467
13445
|
state.selection instanceof NodeSelection && state.selection.node.type.name === "image"
|
|
13468
13446
|
]
|
|
13469
13447
|
]) {
|
|
13470
|
-
const control = toolbar
|
|
13471
|
-
`[data-localearialabel="${label}"], [aria-label="${label}"]`
|
|
13472
|
-
);
|
|
13448
|
+
const control = findLocalizedControl(toolbar, label);
|
|
13473
13449
|
if (control) control.disabled = readOnly || !enabled;
|
|
13474
13450
|
}
|
|
13475
13451
|
}
|
|
@@ -14001,6 +13977,10 @@ function imageNodeView(cache, options = {}) {
|
|
|
14001
13977
|
return (node, view, getPos) => {
|
|
14002
13978
|
const diagram = parseDiagram(node.attrs.diagram);
|
|
14003
13979
|
if (diagram) return smartArtNodeView(node, diagram, options.theme?.());
|
|
13980
|
+
if (node.attrs.chart) {
|
|
13981
|
+
const spec = chartNodeSpec(node, options.theme?.());
|
|
13982
|
+
return { dom: DOMSerializer.renderSpec(document, spec).dom, ignoreMutation: () => true };
|
|
13983
|
+
}
|
|
14004
13984
|
const content = renderSpec(node);
|
|
14005
13985
|
if (content.tagName !== "IMG") return { dom: content, ignoreMutation: () => true };
|
|
14006
13986
|
const refresh = () => {
|
|
@@ -14340,7 +14320,7 @@ function refreshPreviewScaleWithFonts(element, text, formatting, family) {
|
|
|
14340
14320
|
// src/docx/preview-run-styles.ts
|
|
14341
14321
|
function stylePreviewRuns(element, block, model, serializer, mode = "all") {
|
|
14342
14322
|
const measurer = scaleMeasurer();
|
|
14343
|
-
const paragraphs = block.type === "paragraph" ? [block] : block.rows.flatMap((
|
|
14323
|
+
const paragraphs = block.type === "paragraph" ? [block] : block.rows.flatMap((row3) => row3.flatMap((cell) => cell.paragraphs));
|
|
14344
14324
|
const elements = block.type === "paragraph" ? [element] : [...element.querySelectorAll("p")];
|
|
14345
14325
|
paragraphs.forEach((current2, index) => {
|
|
14346
14326
|
const target = elements[index];
|
|
@@ -14417,10 +14397,10 @@ function blockNode(block) {
|
|
|
14417
14397
|
return schema.node("paragraph", paragraphAttrs(block), children);
|
|
14418
14398
|
}
|
|
14419
14399
|
const rows = block.rows.map(
|
|
14420
|
-
(
|
|
14400
|
+
(row3) => schema.node(
|
|
14421
14401
|
"tableRow",
|
|
14422
14402
|
null,
|
|
14423
|
-
|
|
14403
|
+
row3.map(
|
|
14424
14404
|
(cell) => schema.node(
|
|
14425
14405
|
"tableCell",
|
|
14426
14406
|
null,
|
|
@@ -16060,8 +16040,8 @@ var InsertController = class {
|
|
|
16060
16040
|
if (action.key === "figures")
|
|
16061
16041
|
insertTableOfContents(view, this.host.model(), void 0, 3, action.label ?? "Figure");
|
|
16062
16042
|
else if (action.key === "updateFigures") {
|
|
16063
|
-
const
|
|
16064
|
-
const updated =
|
|
16043
|
+
const labels3 = action.label ? [action.label] : ["Figure", "Table", "Equation"];
|
|
16044
|
+
const updated = labels3.filter(
|
|
16065
16045
|
(label) => updateTableOfContents(view, this.host.model(), void 0, label)
|
|
16066
16046
|
);
|
|
16067
16047
|
if (!updated.length)
|
|
@@ -16441,6 +16421,7 @@ var EditorCore = class {
|
|
|
16441
16421
|
);
|
|
16442
16422
|
const { searchPanel, printLayout, review, chrome, toolbar } = this.shell;
|
|
16443
16423
|
searchPanel?.refresh();
|
|
16424
|
+
if (review?.commentsOpen) review.commentsPanel.refresh();
|
|
16444
16425
|
if (this.pages.viewMode === "print") printLayout?.refreshCurrentPage();
|
|
16445
16426
|
const status = refreshEditorControls(
|
|
16446
16427
|
toolbar,
|
|
@@ -16464,7 +16445,7 @@ var EditorCore = class {
|
|
|
16464
16445
|
this.host.canEditOutsideBody()
|
|
16465
16446
|
);
|
|
16466
16447
|
syncPageState(this);
|
|
16467
|
-
chrome?.
|
|
16448
|
+
chrome?.ribbonActions.setCommentsOpen(Boolean(review?.commentsOpen));
|
|
16468
16449
|
}
|
|
16469
16450
|
};
|
|
16470
16451
|
|
|
@@ -16499,10 +16480,10 @@ var ribbon_polish_default = "/* Ribbon polish: distinct pressed state and Word's
|
|
|
16499
16480
|
var document_default = ".dve-revision-insert {\n color: var(--dve-revision-color, inherit);\n text-decoration: underline;\n text-decoration-color: var(--dve-revision-color, currentColor);\n}\n.dve-revision-delete {\n color: var(--dve-revision-color, inherit);\n text-decoration: line-through;\n text-decoration-color: var(--dve-revision-color, currentColor);\n}\n/* Moved text, like Word: green, double underline at the destination, double strike at the source. */\n.dve-revision-move {\n --dve-revision-color: #2e7d32;\n text-decoration-style: double;\n}\n.ProseMirror .dve-revision-hidden {\n /* Review visibility takes precedence over picture/equation node-view display rules. */\n display: none !important;\n}\n[data-review-display]:not([data-review-display='all']) .dve-revision-insert,\n[data-review-display]:not([data-review-display='all']) .dve-revision-delete {\n color: inherit;\n text-decoration: none;\n}\n[data-review-display]:not([data-review-display='all']) .dve-comment-range {\n background: transparent;\n}\n.dve-revision-format-markup {\n outline: 1px dotted currentColor;\n outline-offset: 2px;\n}\n.dve-comment-range {\n background: rgba(255, 212, 0, 0.28);\n}\n.dve-paper {\n box-sizing: border-box;\n position: relative;\n flex: none;\n margin: 0 auto;\n background: var(--dve-page-color, #fff);\n color: #202124;\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420;\n outline: none;\n /* Single spacing and no paragraph gap unless the document's styles set them, as in Word. */\n font:\n 11pt/1.2 Calibri,\n Carlito,\n Arial,\n sans-serif;\n zoom: var(--dve-zoom, 1);\n}\n.dve-paper p {\n min-height: 1.2em;\n margin: 0;\n white-space: pre-wrap;\n}\n.dve-paper p:last-child {\n margin-bottom: 0;\n}\n/* The caret marks focus in the document, as in Word; no ring around the editable area. */\n.dve-paper .ProseMirror:focus,\n.dve-paper .ProseMirror:focus-visible {\n outline: none;\n}\n.dve-paper:focus {\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420,\n 0 0 0 1px var(--blue);\n}\n/* Columns follow the table's grid and cell widths (equal when it has none), as Word lays them out;\n tables add no space around themselves. */\n.dve-paper table {\n width: 100%;\n table-layout: fixed;\n border-collapse: collapse;\n margin: 0;\n}\n.dve-paper td {\n min-width: 44px;\n border: var(--dve-cell-border, 1px dashed #c8c6c4);\n vertical-align: top;\n}\n.dve-paper td p {\n margin: 0;\n}\n.dve-paper p[data-list-label]::before {\n content: attr(data-list-label);\n white-space: pre;\n user-select: none;\n}\n.dve-paper p[data-list-marker]:not([data-list-marker=''])::before {\n content: attr(data-list-marker);\n position: absolute;\n left: var(--dve-marker-left);\n text-indent: 0;\n font-family: var(--dve-marker-family);\n font-size: var(--dve-marker-size);\n font-weight: var(--dve-marker-weight);\n font-style: var(--dve-marker-style);\n color: var(--dve-marker-color);\n}\n.multilingual-controls {\n flex: 1 1 100%;\n align-items: flex-start;\n gap: 9px 14px;\n}\n.multilingual-language-control {\n display: grid;\n grid-template-columns: minmax(145px, 180px);\n gap: 4px;\n color: var(--muted);\n font-size: 11px;\n}\n.multilingual-language-control select,\n.multilingual-language-control input {\n box-sizing: border-box;\n width: 180px;\n}\n.multilingual-language-control input {\n height: 26px;\n border: 1px solid var(--line);\n border-radius: 3px;\n background: var(--surface);\n padding: 0 7px;\n color: var(--ink);\n font:\n 11px 'Segoe UI',\n Arial,\n sans-serif;\n}\n.multilingual-note {\n align-self: end;\n max-width: 240px;\n color: var(--muted);\n font-size: 11px;\n}\n@media (max-width: 650px) {\n .ribbon-panel {\n min-height: 96px;\n padding: 6px;\n gap: 4px;\n }\n .ribbon-group {\n padding-right: 7px;\n }\n .ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Font'] {\n width: 340px;\n }\n .ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Paragraph'] {\n width: 280px;\n }\n .ribbon-panel[data-panel='Home'] .ribbon-group[data-label='Editing'] {\n width: auto;\n }\n .ribbon-group button {\n min-width: 34px;\n min-height: 34px;\n }\n .ribbon-group select {\n max-width: min(150px, 42vw);\n }\n .dve-canvas {\n padding: 18px 8px 38px;\n align-items: flex-start;\n }\n .ribbon-group select.font-family-select {\n width: 120px;\n max-width: 38vw;\n }\n .ribbon-group select.font-size-select {\n width: 56px;\n }\n .ribbon-group select.spacing-select {\n width: min(128px, 36vw);\n }\n .ribbon-group select.line-spacing-select {\n width: min(112px, 32vw);\n }\n}\n.dve-break-marker {\n display: block;\n margin: 0.4em 0;\n padding: 2px 0;\n border-top: 1px dashed var(--muted);\n border-bottom: 1px dashed var(--muted);\n color: var(--muted);\n font-size: 10px;\n text-align: center;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n user-select: none;\n}\n.dve-note-reference {\n color: var(--blue);\n cursor: default;\n}\n.dve-header,\n.dve-footer {\n box-sizing: border-box;\n width: 816px;\n max-width: 100%;\n margin: 0 auto;\n padding: 10px clamp(16px, 5vw, 70px);\n background: var(--surface);\n color: var(--muted);\n font:\n 10pt/1.35 Calibri,\n Arial,\n sans-serif;\n}\n.dve-header {\n border-bottom: 1px dashed var(--line);\n}\n.dve-footer {\n border-top: 1px dashed var(--line);\n}\n.dve-header-footer-label {\n margin-bottom: 2px;\n color: var(--muted);\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n.dve-notes-container {\n box-sizing: border-box;\n width: 816px;\n max-width: 100%;\n margin: 12px auto 0;\n}\n.dve-notes {\n box-sizing: border-box;\n padding: 10px clamp(16px, 5vw, 70px);\n background: var(--surface);\n border-top: 1px solid var(--line);\n font:\n 10pt/1.35 Calibri,\n Arial,\n sans-serif;\n}\n.dve-notes-heading {\n margin: 0 0 6px;\n color: var(--ink);\n font-size: 12px;\n}\n.dve-note-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dve-note-list li {\n display: flex;\n gap: 4px;\n align-items: baseline;\n margin-bottom: 4px;\n}\n.dve-note-marker {\n flex: none;\n color: var(--muted);\n}\n@media (prefers-reduced-motion: reduce) {\n * {\n scroll-behavior: auto !important;\n }\n}\n\n/* Print Layout: a read-only, paginated render kept beside the continuous\n editing surface (see print-layout.ts / print-layout-view.ts). */\n";
|
|
16500
16481
|
|
|
16501
16482
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/print.css?raw
|
|
16502
|
-
var print_default = ".dve-print-pages {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n margin: 0 auto;\n zoom: var(--dve-zoom, 1);\n}\n.dve-print-pages[hidden] {\n display: none;\n}\n.dve-print-page {\n position: relative;\n flex: none;\n background: var(--dve-page-color, #fff);\n color: #202124;\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420;\n overflow: hidden;\n}\n.dve-print-column {\n position: absolute;\n z-index: 1;\n}\n/* Floating pictures sit in front of text unless anchored behind it (wp:anchor/@behindDoc). */\n.dve-print-float {\n z-index: 2;\n}\n.dve-print-float-behind {\n z-index: 0;\n}\n.dve-print-picture-missing {\n box-sizing: border-box;\n border: 1px dashed #8a8886;\n background: #f3f2f1;\n}\n.dve-print-block {\n position: absolute;\n left: 0;\n width: 100%;\n}\n.dve-print-line {\n position: absolute;\n left: 0;\n width: 100%;\n font:\n 11pt/1.2 Calibri,\n Arial,\n sans-serif;\n cursor: text;\n}\n.dve-print-line span {\n position: absolute;\n top: 0;\n}\n.dve-print-row {\n position: absolute;\n left: 0;\n width: 100%;\n}\n/* Cells sit at their grid positions; borders come from the document (Word prints no gridlines). */\n.dve-print-cell {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n.dve-print-cell-content {\n position: absolute;\n bottom: 0;\n}\n@media print {\n .dve-ribbon,\n .dve-status,\n .multilingual-controls {\n display: none !important;\n }\n .dve-canvas {\n overflow: visible !important;\n padding: 0 !important;\n }\n .dve-paper {\n display: none !important;\n }\n .dve-print-pages {\n gap: 0 !important;\n zoom: 1 !important;\n }\n .dve-print-page {\n /* Like Word, page colours are not printed unless asked for. */\n background: #fff !important;\n box-shadow: none !important;\n break-after: page;\n }\n}\n.dve-print-header,\n.dve-print-footer {\n position: absolute;\n color: var(--ink);\n font-size: 11pt;\n pointer-events: none;\n}\n.dve-print-header p,\n.dve-print-footer p {\n margin: 0;\n}\n.dve-print-header table,\n.dve-print-footer table {\n width: 100%;\n border-collapse: collapse;\n}\n\n/* Complex field begin/code/separate/end markers: kept in the document, never shown. */\n.dve-field-marker {\n display: inline;\n font-size: 0;\n}\n\n/* TOC entries link to hidden _Toc bookmarks; Word draws them in the entry's style, not as links. */\na.dve-link[data-anchor^='_Toc'] {\n color: inherit;\n text-decoration: none;\n}\n\n/* Tabs sized to Word's tab stops by tab-stops-view.ts; leaders fill the tab's width. */\n.dve-tab {\n display: inline-block;\n overflow: hidden;\n white-space: pre;\n vertical-align: baseline;\n text-indent: 0;\n}\n.dve-tab-leader-dot,\n.dve-tab-leader-middleDot {\n background-image: radial-gradient(circle, currentColor 0.8px, transparent 1.1px);\n background-size: 4px 4px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.25em;\n}\n.dve-tab-leader-hyphen {\n background-image: linear-gradient(to right, currentColor 50%, transparent 50%);\n background-size: 6px 1px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.4em;\n}\n.dve-tab-leader-underscore,\n.dve-tab-leader-heavy {\n border-bottom: 1px solid currentColor;\n}\n.dve-tab-leader-heavy {\n border-bottom-width: 2px;\n}\n\n/* Footnotes above the bottom margin; the separator is Word's 2-inch rule. */\n.dve-print-footnotes {\n position: absolute;\n z-index: 1;\n}\n.dve-print-footnote-separator {\n position: absolute;\n top: -7px;\n left: 0;\n width: 192px;\n border-top: 1px solid currentColor;\n}\n.dve-print-footnote {\n position: absolute;\n left: 0;\n width: 100%;\n}\n\n[data-print-view] .dve-notes-container {\n display: none;\n}\n\n/* Word draws superscript and subscript at about two thirds size without growing the line. */\n.dve-paper sup,\n.dve-paper sub {\n font-size: 0.65em;\n line-height: 0;\n}\n/* Exact-height rows clip content that does not fit, as Word does. */\n.dve-print-cell {\n overflow: hidden;\n}\n.dve-print-paragraph-frame {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n\n/* View > Multiple Pages: Print Layout's sheets sit side by side and wrap, instead of one column. */\n.dve-canvas[data-multipage] .dve-print-pages {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: center;\n}\n\n/* Layout > Line Numbers: numbers in the left margin, one per printed line. */\n.dve-print-line-number {\n position: absolute;\n width: 40px;\n text-align: right;\n font:\n 10px 'Segoe UI',\n Arial,\n sans-serif;\n color: #444;\n pointer-events: none;\n}\n";
|
|
16483
|
+
var print_default = ".dve-print-pages {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 24px;\n margin: 0 auto;\n zoom: var(--dve-zoom, 1);\n}\n.dve-print-pages[hidden] {\n display: none;\n}\n.dve-print-page {\n position: relative;\n flex: none;\n background: var(--dve-page-color, #fff);\n color: #202124;\n box-shadow:\n 0 1px 3px #20212430,\n 0 4px 12px #20212420;\n overflow: hidden;\n}\n.dve-print-column {\n position: absolute;\n z-index: 1;\n}\n/* Floating pictures sit in front of text unless anchored behind it (wp:anchor/@behindDoc). */\n.dve-print-float {\n z-index: 2;\n}\n.dve-print-float-behind {\n z-index: 0;\n}\n.dve-print-picture-missing {\n box-sizing: border-box;\n border: 1px dashed #8a8886;\n background: #f3f2f1;\n}\n.dve-print-chart {\n overflow: hidden;\n background: #fff;\n}\n.dve-print-chart > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n.dve-print-chart-frame {\n display: grid;\n place-items: center;\n color: #605e5c;\n font-size: 11px;\n}\n.dve-print-block {\n position: absolute;\n left: 0;\n width: 100%;\n}\n.dve-print-line {\n position: absolute;\n left: 0;\n width: 100%;\n font:\n 11pt/1.2 Calibri,\n Arial,\n sans-serif;\n cursor: text;\n}\n.dve-print-line span {\n position: absolute;\n top: 0;\n}\n.dve-print-row {\n position: absolute;\n left: 0;\n width: 100%;\n}\n/* Cells sit at their grid positions; borders come from the document (Word prints no gridlines). */\n.dve-print-cell {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n.dve-print-cell-content {\n position: absolute;\n bottom: 0;\n}\n@media print {\n .dve-ribbon,\n .dve-status,\n .multilingual-controls {\n display: none !important;\n }\n .dve-canvas {\n overflow: visible !important;\n padding: 0 !important;\n }\n .dve-paper {\n display: none !important;\n }\n .dve-print-pages {\n gap: 0 !important;\n zoom: 1 !important;\n }\n .dve-print-page {\n /* Like Word, page colours are not printed unless asked for. */\n background: #fff !important;\n box-shadow: none !important;\n break-after: page;\n }\n}\n.dve-print-header,\n.dve-print-footer {\n position: absolute;\n color: var(--ink);\n font-size: 11pt;\n pointer-events: none;\n}\n.dve-print-header p,\n.dve-print-footer p {\n margin: 0;\n}\n.dve-print-header table,\n.dve-print-footer table {\n width: 100%;\n border-collapse: collapse;\n}\n\n/* Complex field begin/code/separate/end markers: kept in the document, never shown. */\n.dve-field-marker {\n display: inline;\n font-size: 0;\n}\n\n/* TOC entries link to hidden _Toc bookmarks; Word draws them in the entry's style, not as links. */\na.dve-link[data-anchor^='_Toc'] {\n color: inherit;\n text-decoration: none;\n}\n\n/* Tabs sized to Word's tab stops by tab-stops-view.ts; leaders fill the tab's width. */\n.dve-tab {\n display: inline-block;\n overflow: hidden;\n white-space: pre;\n vertical-align: baseline;\n text-indent: 0;\n}\n.dve-tab-leader-dot,\n.dve-tab-leader-middleDot {\n background-image: radial-gradient(circle, currentColor 0.8px, transparent 1.1px);\n background-size: 4px 4px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.25em;\n}\n.dve-tab-leader-hyphen {\n background-image: linear-gradient(to right, currentColor 50%, transparent 50%);\n background-size: 6px 1px;\n background-repeat: repeat-x;\n background-position: right 0 bottom 0.4em;\n}\n.dve-tab-leader-underscore,\n.dve-tab-leader-heavy {\n border-bottom: 1px solid currentColor;\n}\n.dve-tab-leader-heavy {\n border-bottom-width: 2px;\n}\n\n/* Footnotes above the bottom margin; the separator is Word's 2-inch rule. */\n.dve-print-footnotes {\n position: absolute;\n z-index: 1;\n}\n.dve-print-footnote-separator {\n position: absolute;\n top: -7px;\n left: 0;\n width: 192px;\n border-top: 1px solid currentColor;\n}\n.dve-print-footnote {\n position: absolute;\n left: 0;\n width: 100%;\n}\n\n[data-print-view] .dve-notes-container {\n display: none;\n}\n\n/* Word draws superscript and subscript at about two thirds size without growing the line. */\n.dve-paper sup,\n.dve-paper sub {\n font-size: 0.65em;\n line-height: 0;\n}\n/* Exact-height rows clip content that does not fit, as Word does. */\n.dve-print-cell {\n overflow: hidden;\n}\n.dve-print-paragraph-frame {\n position: absolute;\n top: 0;\n box-sizing: border-box;\n}\n\n/* View > Multiple Pages: Print Layout's sheets sit side by side and wrap, instead of one column. */\n.dve-canvas[data-multipage] .dve-print-pages {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: center;\n}\n\n/* Layout > Line Numbers: numbers in the left margin, one per printed line. */\n.dve-print-line-number {\n position: absolute;\n width: 40px;\n text-align: right;\n font:\n 10px 'Segoe UI',\n Arial,\n sans-serif;\n color: #444;\n pointer-events: none;\n}\n";
|
|
16503
16484
|
|
|
16504
16485
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/chrome-titlebar.css?raw
|
|
16505
|
-
var chrome_titlebar_default = ".dve-frame {\n position: relative;\n border: 0;\n box-shadow: none;\n}\n.dve-icon {\n flex: none;\n}\n.dve-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 cursor: pointer;\n}\n.dve-icon-button:hover:not(:disabled),\n.dve-icon-button[aria-pressed='true'] {\n background: var(--word-soft);\n}\n.dve-icon-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n/* Title bar: drawn by the shared office-ui-title-bar; these colour it
|
|
16486
|
+
var chrome_titlebar_default = ".dve-frame {\n position: relative;\n border: 0;\n box-shadow: none;\n}\n.dve-icon {\n flex: none;\n}\n.dve-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 cursor: pointer;\n}\n.dve-icon-button:hover:not(:disabled),\n.dve-icon-button[aria-pressed='true'] {\n background: var(--word-soft);\n}\n.dve-icon-button:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n/* Title bar: drawn by the shared office-ui-title-bar; these colour it. */\n.dve-titlebar {\n flex: none;\n --office-title-bar-height: 40px;\n --office-title-bar-background: var(--chrome);\n --office-title-bar-border: var(--line);\n --office-title-bar-mark-background: var(--word);\n --office-title-bar-mark-foreground: var(--dve-primary-foreground);\n}\n";
|
|
16506
16487
|
|
|
16507
16488
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/backstage.css?raw
|
|
16508
16489
|
var backstage_default = "/* Backstage: the shared office-ui-backstage draws the frame; these colour it and style the pages. */\n.dve-backstage {\n --office-backstage-nav-width: 220px;\n --office-backstage-nav-background: var(--word);\n --office-backstage-nav-foreground: var(--dve-primary-foreground);\n --office-backstage-item-hover: var(--word-strong);\n z-index: 40;\n background: var(--surface);\n}\n.dve-backstage-content {\n overflow: auto;\n padding: 28px 40px;\n color: var(--ink);\n}\n.dve-backstage-content h2 {\n margin: 0 0 20px;\n font-size: 30px;\n font-weight: 300;\n}\n.dve-backstage-content h3 {\n margin: 24px 0 10px;\n font-size: 15px;\n font-weight: 600;\n}\n.dve-backstage-facts {\n display: grid;\n grid-template-columns: max-content minmax(0, 1fr);\n gap: 6px 24px;\n margin: 0;\n}\n.dve-backstage-facts dt {\n color: var(--muted);\n}\n.dve-backstage-facts dd {\n margin: 0;\n overflow-wrap: anywhere;\n}\n.dve-compatibility-notes {\n display: grid;\n gap: 8px;\n max-width: 760px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dve-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.dve-compatibility-notes .dve-icon {\n margin-top: 2px;\n color: #b7791f;\n}\n.dve-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.dve-backstage-tile:hover {\n border-color: var(--line);\n background: var(--word-soft);\n}\n.dve-backstage-tile-preview {\n width: 150px;\n height: 190px;\n border: 1px solid var(--line);\n background: #fff;\n box-shadow: 0 1px 3px #0002;\n}\n.dve-backstage-primary {\n padding: 8px 18px;\n border: 0;\n border-radius: 4px;\n background: var(--word);\n color: var(--dve-primary-foreground);\n font: inherit;\n cursor: pointer;\n}\n.dve-backstage-muted {\n color: var(--muted);\n}\n\n.dve-backstage-title {\n margin: 0 0 4px;\n font-size: 26px;\n font-weight: 400;\n overflow-wrap: anywhere;\n}\n.dve-backstage-columns {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 300px;\n gap: 40px;\n align-items: start;\n}\n.dve-backstage-properties {\n padding: 4px 0 0 24px;\n border-left: 1px solid var(--line);\n}\n.dve-backstage-properties h3 {\n margin-top: 0;\n}\n.dve-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.dve-backstage-card h3 {\n margin: 0 0 4px;\n}\n.dve-backstage-card p {\n margin: 0;\n}\n.dve-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.dve-backstage-field input,\n.dve-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.dve-backstage-home-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin: 24px 0;\n}\n.dve-backstage-toggle {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.dve-backstage-toggle input {\n width: 18px;\n height: 18px;\n}\n@media (max-width: 760px) {\n .dve-backstage-content {\n padding: 20px;\n }\n .dve-backstage-card {\n align-items: stretch;\n flex-direction: column;\n }\n .dve-backstage-columns {\n grid-template-columns: minmax(0, 1fr);\n }\n .dve-backstage-properties {\n padding-left: 0;\n border-left: 0;\n }\n}\n\n/* Customize Ribbon: one block per tab, one fieldset per group, a checkbox per command. */\n.dve-customize-tab h3 {\n margin: 18px 0 6px;\n}\n.dve-customize-group {\n margin: 0 0 8px;\n padding: 6px 10px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n}\n.dve-customize-group legend {\n padding: 0 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-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: 13px;\n}\n";
|
|
@@ -16511,7 +16492,7 @@ var backstage_default = "/* Backstage: the shared office-ui-backstage draws the
|
|
|
16511
16492
|
var status_dialogs_default = "/* Status bar: drawn by the shared office-ui-status-bar; this only places it in the frame. */\n.dve-status {\n display: block;\n flex: none;\n min-width: 0;\n border-top: 1px solid var(--line);\n}\n\n@media (max-width: 760px) {\n .dve-backstage-content {\n padding: 20px;\n }\n}\n\n/* Dialogs: the shared office-ui-dialog draws the modal frame; these style the fields inside it. */\n.dve-dialog {\n --office-dialog-width: min(440px, calc(100vw - 32px));\n}\n/* The fields are the dialog's light-DOM children, laid out in the shared body. */\n.dve-dialog > :not([slot]) + :not([slot]) {\n margin-top: 10px;\n}\n.dve-dialog label {\n display: grid;\n gap: 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-dialog input,\n.dve-dialog select {\n height: 30px;\n padding: 0 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n}\n.dve-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n.dve-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.dve-dialog-actions .dve-dialog-primary {\n border-color: var(--word);\n background: var(--word);\n color: var(--dve-primary-foreground);\n}\n";
|
|
16512
16493
|
|
|
16513
16494
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/chrome-document.css?raw
|
|
16514
|
-
var chrome_document_default = "/* Links, pictures and hidden text in the document */\n.dve-equation {\n display: inline-block;\n vertical-align: middle;\n max-width: 100%;\n font-family: 'Cambria Math', math, serif;\n}\n.dve-equation-display {\n display: block;\n margin: 0.5em 0;\n text-align: center;\n}\n.dve-equation-unavailable {\n color: var(--muted);\n font-size: 0.85em;\n}\n.dve-paper a.dve-link {\n color: var(--word);\n text-decoration: underline;\n cursor: text;\n}\n.dve-paper img.dve-image {\n max-width: 100%;\n height: auto;\n vertical-align: bottom;\n}\n.dve-paper .dve-image-placeholder {\n display: inline-grid;\n place-items: center;\n border: 1px dashed var(--line);\n background: var(--canvas);\n color: var(--muted);\n font-size: 11px;\n}\n.dve-paper .dve-image-placeholder:has(.dve-textbox-line) {\n place-items: start;\n align-content: start;\n overflow: hidden;\n padding: 4px 6px;\n box-sizing: border-box;\n text-align: left;\n border-style: solid;\n}\n.dve-paper .dve-textbox-line {\n display: block;\n color: var(--text, #1f1f1f);\n font-size: 12px;\n}\n.dve-paper:not([data-show-hidden]) .dve-hidden-text {\n display: none;\n}\n.dve-paper[data-show-hidden] .dve-hidden-text {\n opacity: 0.55;\n text-decoration: underline dotted;\n}\n\n/* Pictures: selection outline and proportional resize handle */\n.dve-paper .dve-picture {\n position: relative;\n display: inline-block;\n max-width: 100%;\n line-height: 0;\n}\n.dve-paper .dve-picture-selected {\n outline: 2px solid var(--word);\n outline-offset: 1px;\n}\n.dve-picture-handle {\n position: absolute;\n right: -5px;\n bottom: -5px;\n display: none;\n width: 10px;\n height: 10px;\n border: 1px solid var(--word);\n background: #fff;\n cursor: nwse-resize;\n}\n.dve-picture-selected .dve-picture-handle {\n display: block;\n}\n.dve-dialog textarea {\n min-height: 60px;\n padding: 6px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n resize: vertical;\n}\n.dve-dialog-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n.dve-dialog .dve-dialog-check {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--ink);\n}\n\n/* Header/footer editing (double-click a header or footer) */\n.dve-header-footer-slot[data-slot] {\n cursor: text;\n}\n.dve-header-footer-editing {\n outline: 1px dashed var(--word);\n outline-offset: 4px;\n}\n.dve-header-footer-editor .ProseMirror {\n outline: none;\n white-space: pre-wrap;\n}\n.dve-header-footer-editor .ProseMirror p {\n margin: 0;\n}\n\n/* Section break marks after the paragraph that ends a section */\n.dve-paper .dve-section-end::after {\n display: block;\n margin: 6px 0;\n border-top: 1px dotted var(--muted);\n border-bottom: 1px dotted var(--muted);\n color: var(--muted);\n content: attr(data-section-break);\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n user-select: none;\n}\n\n/* Floating pictures: an approximation of Word's text wrapping */\n.dve-paper .dve-float-left,\n.dve-header-footer-body .dve-float-left {\n float: left;\n margin: 2px 12px 6px 0;\n}\n.dve-paper .dve-float-right,\n.dve-header-footer-body .dve-float-right {\n float: right;\n margin: 2px 0 6px 12px;\n}\n.dve-paper .dve-float-block {\n display: block;\n width: fit-content;\n margin: 6px 0;\n}\n.dve-paper .dve-float-block-center {\n margin-right: auto;\n margin-left: auto;\n}\n.dve-paper .dve-float-block-right {\n margin-left: auto;\n}\n.dve-paper[data-show-marks] .ProseMirror p::after,\n.dve-paper[data-show-marks] .ProseMirror h1::after,\n.dve-paper[data-show-marks] .ProseMirror h2::after,\n.dve-paper[data-show-marks] .ProseMirror h3::after {\n color: var(--blue);\n content: '\\00b6';\n opacity: 0.7;\n pointer-events: none;\n}\n\n/* Font and Paragraph dialogs */\n.dve-format-dialog {\n --office-dialog-width: min(520px, calc(100vw - 32px));\n}\n.dve-format-dialog .dve-dialog-fieldset {\n display: grid;\n gap: 8px;\n margin: 0;\n padding: 8px 10px 10px;\n border: 1px solid var(--line);\n border-radius: 6px;\n}\n.dve-format-dialog legend {\n padding: 0 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-format-dialog .dve-dialog-cols {\n grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr));\n}\n.dve-format-dialog input[type='color'] {\n padding: 2px;\n}\n.dve-format-dialog .dve-dialog-fieldset > .dve-dialog-check {\n display: flex;\n}\n.dve-font-dialog .dve-dialog-fieldset:nth-of-type(1) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.dve-font-dialog .dve-font-tab-panel[hidden] {\n display: none;\n}\n.dve-font-tab-panel {\n display: grid;\n gap: 10px;\n}\n.dve-font-dialog .dve-font-tab-panel .dve-dialog-fieldset:has(.dve-dialog-cols) {\n grid-template-columns: 1fr;\n}\n.dve-font-tabs {\n display: flex;\n gap: 2px;\n border-bottom: 1px solid var(--line);\n}\n.dve-font-tabs button {\n background: transparent;\n border: 0;\n border-radius: 0;\n padding: 7px 14px;\n}\n.dve-font-tabs button[aria-selected='true'] {\n color: var(--word);\n border-bottom: 2px solid var(--word);\n font-weight: 600;\n}\n.dve-format-preview {\n display: grid;\n min-height: 54px;\n place-items: center;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: #fff;\n color: #000;\n overflow: hidden;\n}\n.dve-dialog input[type='checkbox'] {\n width: 16px;\n height: 16px;\n padding: 0;\n margin: 0;\n accent-color: var(--word);\n}\n.dve-format-dialog .dve-dialog-fieldset:has(> .dve-dialog-check):not(:has(> .dve-dialog-cols)) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 6px 12px;\n}\n.dve-format-dialog\n .dve-dialog-fieldset:has(> .dve-dialog-check):not(:has(> .dve-dialog-cols))\n legend {\n grid-column: 1 / -1;\n}\n\n/* View > Gridlines: a quarter-inch alignment grid over the page. */\n.dve-paper[data-show-gridlines] {\n background-image:\n linear-gradient(to right, #8ab4f855 1px, transparent 1px),\n linear-gradient(to bottom, #8ab4f855 1px, transparent 1px);\n background-size: 24px 24px;\n}\n\n.dve-dialog-message {\n min-height: 1.2em;\n margin: 0;\n color: #b3261e;\n font-size: 12px;\n}\n\n/* View > Ruler:
|
|
16495
|
+
var chrome_document_default = "/* Links, pictures and hidden text in the document */\n.dve-equation {\n display: inline-block;\n vertical-align: middle;\n max-width: 100%;\n font-family: 'Cambria Math', math, serif;\n}\n.dve-equation-display {\n display: block;\n margin: 0.5em 0;\n text-align: center;\n}\n.dve-equation-unavailable {\n color: var(--muted);\n font-size: 0.85em;\n}\n.dve-paper a.dve-link {\n color: var(--word);\n text-decoration: underline;\n cursor: text;\n}\n.dve-paper img.dve-image {\n max-width: 100%;\n height: auto;\n vertical-align: bottom;\n}\n.dve-paper .dve-image-placeholder {\n display: inline-grid;\n place-items: center;\n border: 1px dashed var(--line);\n background: var(--canvas);\n color: var(--muted);\n font-size: 11px;\n}\n/* Charts: painted read-only from the cached values in the chart part. */\n.dve-paper .dve-chart {\n display: inline-block;\n vertical-align: bottom;\n max-width: 100%;\n overflow: hidden;\n background: #fff;\n}\n.dve-paper .dve-chart > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n.dve-paper .dve-image-placeholder:has(.dve-textbox-line) {\n place-items: start;\n align-content: start;\n overflow: hidden;\n padding: 4px 6px;\n box-sizing: border-box;\n text-align: left;\n border-style: solid;\n}\n.dve-paper .dve-textbox-line {\n display: block;\n color: var(--text, #1f1f1f);\n font-size: 12px;\n}\n.dve-paper:not([data-show-hidden]) .dve-hidden-text {\n display: none;\n}\n.dve-paper[data-show-hidden] .dve-hidden-text {\n opacity: 0.55;\n text-decoration: underline dotted;\n}\n\n/* Pictures: selection outline and proportional resize handle */\n.dve-paper .dve-picture {\n position: relative;\n display: inline-block;\n max-width: 100%;\n line-height: 0;\n}\n.dve-paper .dve-picture-selected {\n outline: 2px solid var(--word);\n outline-offset: 1px;\n}\n.dve-picture-handle {\n position: absolute;\n right: -5px;\n bottom: -5px;\n display: none;\n width: 10px;\n height: 10px;\n border: 1px solid var(--word);\n background: #fff;\n cursor: nwse-resize;\n}\n.dve-picture-selected .dve-picture-handle {\n display: block;\n}\n.dve-dialog textarea {\n min-height: 60px;\n padding: 6px 8px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n resize: vertical;\n}\n.dve-dialog-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n.dve-dialog .dve-dialog-check {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--ink);\n}\n\n/* Header/footer editing (double-click a header or footer) */\n.dve-header-footer-slot[data-slot] {\n cursor: text;\n}\n.dve-header-footer-editing {\n outline: 1px dashed var(--word);\n outline-offset: 4px;\n}\n.dve-header-footer-editor .ProseMirror {\n outline: none;\n white-space: pre-wrap;\n}\n.dve-header-footer-editor .ProseMirror p {\n margin: 0;\n}\n\n/* Section break marks after the paragraph that ends a section */\n.dve-paper .dve-section-end::after {\n display: block;\n margin: 6px 0;\n border-top: 1px dotted var(--muted);\n border-bottom: 1px dotted var(--muted);\n color: var(--muted);\n content: attr(data-section-break);\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n user-select: none;\n}\n\n/* Floating pictures: an approximation of Word's text wrapping */\n.dve-paper .dve-float-left,\n.dve-header-footer-body .dve-float-left {\n float: left;\n margin: 2px 12px 6px 0;\n}\n.dve-paper .dve-float-right,\n.dve-header-footer-body .dve-float-right {\n float: right;\n margin: 2px 0 6px 12px;\n}\n.dve-paper .dve-float-block {\n display: block;\n width: fit-content;\n margin: 6px 0;\n}\n.dve-paper .dve-float-block-center {\n margin-right: auto;\n margin-left: auto;\n}\n.dve-paper .dve-float-block-right {\n margin-left: auto;\n}\n.dve-paper[data-show-marks] .ProseMirror p::after,\n.dve-paper[data-show-marks] .ProseMirror h1::after,\n.dve-paper[data-show-marks] .ProseMirror h2::after,\n.dve-paper[data-show-marks] .ProseMirror h3::after {\n color: var(--blue);\n content: '\\00b6';\n opacity: 0.7;\n pointer-events: none;\n}\n\n/* Font and Paragraph dialogs */\n.dve-format-dialog {\n --office-dialog-width: min(520px, calc(100vw - 32px));\n}\n.dve-format-dialog .dve-dialog-fieldset {\n display: grid;\n gap: 8px;\n margin: 0;\n padding: 8px 10px 10px;\n border: 1px solid var(--line);\n border-radius: 6px;\n}\n.dve-format-dialog legend {\n padding: 0 4px;\n color: var(--muted);\n font-size: 12px;\n}\n.dve-format-dialog .dve-dialog-cols {\n grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr));\n}\n.dve-format-dialog input[type='color'] {\n padding: 2px;\n}\n.dve-format-dialog .dve-dialog-fieldset > .dve-dialog-check {\n display: flex;\n}\n.dve-font-dialog .dve-dialog-fieldset:nth-of-type(1) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.dve-font-dialog .dve-font-tab-panel[hidden] {\n display: none;\n}\n.dve-font-tab-panel {\n display: grid;\n gap: 10px;\n}\n.dve-font-dialog .dve-font-tab-panel .dve-dialog-fieldset:has(.dve-dialog-cols) {\n grid-template-columns: 1fr;\n}\n.dve-font-tabs {\n display: flex;\n gap: 2px;\n border-bottom: 1px solid var(--line);\n}\n.dve-font-tabs button {\n background: transparent;\n border: 0;\n border-radius: 0;\n padding: 7px 14px;\n}\n.dve-font-tabs button[aria-selected='true'] {\n color: var(--word);\n border-bottom: 2px solid var(--word);\n font-weight: 600;\n}\n.dve-format-preview {\n display: grid;\n min-height: 54px;\n place-items: center;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: #fff;\n color: #000;\n overflow: hidden;\n}\n.dve-dialog input[type='checkbox'] {\n width: 16px;\n height: 16px;\n padding: 0;\n margin: 0;\n accent-color: var(--word);\n}\n.dve-format-dialog .dve-dialog-fieldset:has(> .dve-dialog-check):not(:has(> .dve-dialog-cols)) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 6px 12px;\n}\n.dve-format-dialog\n .dve-dialog-fieldset:has(> .dve-dialog-check):not(:has(> .dve-dialog-cols))\n legend {\n grid-column: 1 / -1;\n}\n\n/* View > Gridlines: a quarter-inch alignment grid over the page. */\n.dve-paper[data-show-gridlines] {\n background-image:\n linear-gradient(to right, #8ab4f855 1px, transparent 1px),\n linear-gradient(to bottom, #8ab4f855 1px, transparent 1px);\n background-size: 24px 24px;\n}\n\n.dve-dialog-message {\n min-height: 1.2em;\n margin: 0;\n color: #b3261e;\n font-size: 12px;\n}\n\n/* View > Ruler: placement only; the shared office-ui-ruler draws ticks, margins and markers. */\n.dve-canvas > .dve-ruler {\n position: sticky;\n top: -30px;\n z-index: 6;\n flex: none;\n height: 22px;\n margin: -30px auto 8px;\n border: 1px solid var(--line);\n pointer-events: none;\n}\n";
|
|
16515
16496
|
|
|
16516
16497
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/page-navigator.css?raw
|
|
16517
16498
|
var page_navigator_default = "/* Page thumbnail rail and ribbon customisation */\n[data-dve-hidden] {\n display: none !important;\n}\n.dve-pages-rail {\n display: flex;\n flex: none;\n flex-direction: column;\n box-sizing: border-box;\n width: 156px;\n min-height: 0;\n border-right: 1px solid var(--line);\n background: var(--surface);\n color: var(--ink);\n}\n.dve-pages-rail[hidden] {\n display: none;\n}\n.dve-pages-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 8px;\n border-bottom: 1px solid var(--line);\n font-size: 11px;\n font-weight: 600;\n}\n.dve-pages-close {\n border: 0;\n border-radius: 4px;\n background: none;\n color: var(--muted);\n font-size: 16px;\n line-height: 1;\n cursor: pointer;\n}\n.dve-pages-close:hover {\n background: var(--word-soft);\n}\n.dve-pages-message {\n margin: 0;\n padding: 12px 10px;\n color: var(--muted);\n font-size: 11px;\n line-height: 1.4;\n}\n.dve-pages-message[hidden],\n.dve-pages-list[hidden] {\n display: none;\n}\n.dve-pages-list {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 10px 0 16px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n}\n.dve-page-thumb {\n display: flex;\n flex: none;\n flex-direction: column;\n align-items: center;\n gap: 3px;\n padding: 4px;\n border: 2px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n}\n.dve-page-thumb:hover {\n background: var(--word-soft);\n}\n.dve-page-thumb[aria-selected='true'] {\n border-color: var(--word);\n background: var(--word-soft);\n}\n.dve-page-thumb-sheet {\n position: relative;\n overflow: hidden;\n background: #fff;\n box-shadow: 0 1px 3px #20212440;\n pointer-events: none;\n}\n.dve-page-thumb-sheet .dve-print-page {\n position: absolute;\n top: 0;\n left: 0;\n box-shadow: none;\n}\n.dve-page-thumb-number {\n color: var(--muted);\n font-size: 11px;\n}\n.dve-page-thumb[aria-selected='true'] .dve-page-thumb-number {\n color: var(--ink);\n font-weight: 600;\n}\n@media print {\n .dve-pages-rail {\n display: none !important;\n }\n}\n";
|
|
@@ -16886,10 +16867,10 @@ function createSearchPanel(options, initialLocale = "en") {
|
|
|
16886
16867
|
|
|
16887
16868
|
// src/docx/print-table.ts
|
|
16888
16869
|
var cssBorder = (border) => border ? `${border.widthPx}px ${border.style} ${border.color}` : "";
|
|
16889
|
-
function geometryOf(
|
|
16890
|
-
const given =
|
|
16870
|
+
function geometryOf(row3, index, widthPx) {
|
|
16871
|
+
const given = row3.geometry?.[index];
|
|
16891
16872
|
if (given) return given;
|
|
16892
|
-
const share = widthPx / Math.max(1,
|
|
16873
|
+
const share = widthPx / Math.max(1, row3.cells.length);
|
|
16893
16874
|
return {
|
|
16894
16875
|
xPx: share * index,
|
|
16895
16876
|
widthPx: share,
|
|
@@ -16904,31 +16885,31 @@ function renderTable(box2, columnWidthPx, renderParagraph) {
|
|
|
16904
16885
|
table.style.top = `${box2.yPx}px`;
|
|
16905
16886
|
table.style.height = `${box2.heightPx}px`;
|
|
16906
16887
|
if (box2.xPx) table.style.left = `${box2.xPx}px`;
|
|
16907
|
-
box2.rows.forEach((
|
|
16888
|
+
box2.rows.forEach((row3, rowIndex) => {
|
|
16908
16889
|
const rowEl = document.createElement("div");
|
|
16909
16890
|
rowEl.className = "dve-print-row";
|
|
16910
|
-
rowEl.style.top = `${
|
|
16911
|
-
rowEl.style.height = `${
|
|
16912
|
-
if (
|
|
16891
|
+
rowEl.style.top = `${row3.yPx}px`;
|
|
16892
|
+
rowEl.style.height = `${row3.heightPx}px`;
|
|
16893
|
+
if (row3.repeated) rowEl.dataset.repeated = "true";
|
|
16913
16894
|
const lastRow = rowIndex === box2.rows.length - 1;
|
|
16914
|
-
|
|
16915
|
-
const geometry = geometryOf(
|
|
16895
|
+
row3.cells.forEach((paragraphs, cellIndex) => {
|
|
16896
|
+
const geometry = geometryOf(row3, cellIndex, columnWidthPx);
|
|
16916
16897
|
const cell = document.createElement("div");
|
|
16917
16898
|
cell.className = "dve-print-cell";
|
|
16918
16899
|
Object.assign(cell.style, {
|
|
16919
16900
|
left: `${geometry.xPx}px`,
|
|
16920
16901
|
width: `${geometry.widthPx}px`,
|
|
16921
|
-
height: `${
|
|
16902
|
+
height: `${row3.heightPx}px`
|
|
16922
16903
|
});
|
|
16923
16904
|
if (geometry.shading) cell.style.background = geometry.shading;
|
|
16924
16905
|
const borders = geometry.borders;
|
|
16925
16906
|
cell.style.borderTop = cssBorder(borders?.top);
|
|
16926
16907
|
cell.style.borderLeft = cssBorder(borders?.left);
|
|
16927
|
-
if (cellIndex ===
|
|
16908
|
+
if (cellIndex === row3.cells.length - 1) cell.style.borderRight = cssBorder(borders?.right);
|
|
16928
16909
|
if (lastRow) cell.style.borderBottom = cssBorder(borders?.bottom);
|
|
16929
16910
|
const content = document.createElement("div");
|
|
16930
16911
|
content.className = "dve-print-cell-content";
|
|
16931
|
-
const free = Math.max(0,
|
|
16912
|
+
const free = Math.max(0, row3.heightPx - geometry.contentHeightPx);
|
|
16932
16913
|
const offset = geometry.verticalAlign === "center" ? free / 2 : geometry.verticalAlign === "bottom" ? free : 0;
|
|
16933
16914
|
Object.assign(content.style, {
|
|
16934
16915
|
left: `${geometry.paddingLeftPx}px`,
|
|
@@ -16950,7 +16931,7 @@ function lineNumberLabels(page2, settings, counter3, suppressed) {
|
|
|
16950
16931
|
if (counter3.section === -1 || settings.restart === "newPage" || newSection && settings.restart === "newSection")
|
|
16951
16932
|
counter3.next = settings.start;
|
|
16952
16933
|
counter3.section = page2.sectionIndex;
|
|
16953
|
-
const
|
|
16934
|
+
const labels3 = [];
|
|
16954
16935
|
const gap = (settings.distanceTwips ?? 360) / 15;
|
|
16955
16936
|
for (const column of page2.columns)
|
|
16956
16937
|
for (const block of column.blocks) {
|
|
@@ -16967,10 +16948,10 @@ function lineNumberLabels(page2, settings, counter3, suppressed) {
|
|
|
16967
16948
|
height: `${line.heightPx}px`,
|
|
16968
16949
|
lineHeight: `${line.heightPx}px`
|
|
16969
16950
|
});
|
|
16970
|
-
|
|
16951
|
+
labels3.push(label);
|
|
16971
16952
|
}
|
|
16972
16953
|
}
|
|
16973
|
-
return
|
|
16954
|
+
return labels3;
|
|
16974
16955
|
}
|
|
16975
16956
|
var POINT = 4 / 3;
|
|
16976
16957
|
function pageBorderBox(page2, borders) {
|
|
@@ -17064,8 +17045,30 @@ function resolveFragmentClick(fragments, clientX) {
|
|
|
17064
17045
|
return start + Math.round((end - start) * ratio);
|
|
17065
17046
|
}
|
|
17066
17047
|
|
|
17067
|
-
// src/docx/print-
|
|
17048
|
+
// src/docx/print-picture.ts
|
|
17049
|
+
function chartElement(chart) {
|
|
17050
|
+
const element = document.createElement("div");
|
|
17051
|
+
element.dataset.docxChart = chart.svg ? "1" : "frame";
|
|
17052
|
+
const svg = chart.svg ? new DOMParser().parseFromString(chart.svg, "image/svg+xml").documentElement : void 0;
|
|
17053
|
+
if (svg && svg.localName === "svg") {
|
|
17054
|
+
element.classList.add("dve-print-chart");
|
|
17055
|
+
element.title = chart.label;
|
|
17056
|
+
element.append(document.importNode(svg, true));
|
|
17057
|
+
} else {
|
|
17058
|
+
element.classList.add("dve-print-picture-missing", "dve-print-chart-frame");
|
|
17059
|
+
element.textContent = chart.label;
|
|
17060
|
+
}
|
|
17061
|
+
return element;
|
|
17062
|
+
}
|
|
17068
17063
|
function pictureElement(object, pictureUrl) {
|
|
17064
|
+
if (object.chart) {
|
|
17065
|
+
const element2 = chartElement(object.chart);
|
|
17066
|
+
element2.classList.add("dve-print-picture");
|
|
17067
|
+
element2.style.position = "absolute";
|
|
17068
|
+
element2.style.width = `${object.widthPx}px`;
|
|
17069
|
+
element2.style.height = `${object.heightPx}px`;
|
|
17070
|
+
return element2;
|
|
17071
|
+
}
|
|
17069
17072
|
const url = object.partName ? pictureUrl?.(object.partName, object.contentType) : void 0;
|
|
17070
17073
|
const element = document.createElement(url ? "img" : "div");
|
|
17071
17074
|
if (url) {
|
|
@@ -17078,6 +17081,8 @@ function pictureElement(object, pictureUrl) {
|
|
|
17078
17081
|
element.style.height = `${object.heightPx}px`;
|
|
17079
17082
|
return element;
|
|
17080
17083
|
}
|
|
17084
|
+
|
|
17085
|
+
// src/docx/print-layout.ts
|
|
17081
17086
|
var LEADER_CHARACTERS = { dot: ".", hyphen: "-", middleDot: "\xB7" };
|
|
17082
17087
|
function leaderElement(fragment) {
|
|
17083
17088
|
const el = document.createElement("span");
|
|
@@ -17461,107 +17466,70 @@ function moveCursorToBlock(view, blockId, offset) {
|
|
|
17461
17466
|
}
|
|
17462
17467
|
|
|
17463
17468
|
// src/docx/comments-panel.ts
|
|
17464
|
-
|
|
17465
|
-
|
|
17466
|
-
|
|
17467
|
-
|
|
17468
|
-
|
|
17469
|
-
|
|
17470
|
-
|
|
17471
|
-
|
|
17472
|
-
|
|
17473
|
-
|
|
17474
|
-
|
|
17475
|
-
|
|
17476
|
-
|
|
17477
|
-
|
|
17478
|
-
|
|
17479
|
-
|
|
17480
|
-
const thread = document.createElement("div");
|
|
17481
|
-
thread.className = "dve-comment-thread";
|
|
17482
|
-
if (indent) thread.style.marginLeft = "14px";
|
|
17483
|
-
thread.dataset.resolved = String(Boolean(comment.resolved));
|
|
17484
|
-
const meta = document.createElement("div");
|
|
17485
|
-
meta.className = "dve-comment-meta";
|
|
17486
|
-
meta.append(
|
|
17487
|
-
Object.assign(document.createElement("span"), { textContent: comment.author }),
|
|
17488
|
-
Object.assign(document.createElement("span"), { textContent: comment.date ?? "" })
|
|
17489
|
-
);
|
|
17490
|
-
const text = document.createElement("p");
|
|
17491
|
-
text.className = "dve-comment-text";
|
|
17492
|
-
text.textContent = comment.text;
|
|
17493
|
-
const actions = document.createElement("div");
|
|
17494
|
-
const canEdit = options.canEdit?.() ?? true;
|
|
17495
|
-
actions.className = "dve-comment-actions";
|
|
17496
|
-
if (!comment.parentId) {
|
|
17497
|
-
const resolve = document.createElement("button");
|
|
17498
|
-
resolve.type = "button";
|
|
17499
|
-
resolve.disabled = !canEdit;
|
|
17500
|
-
resolve.textContent = translate(locale, comment.resolved ? "Reopen" : "Resolve");
|
|
17501
|
-
resolve.addEventListener("click", () => options.onResolve(comment.id, !comment.resolved));
|
|
17502
|
-
actions.append(resolve);
|
|
17503
|
-
}
|
|
17504
|
-
const del = document.createElement("button");
|
|
17505
|
-
del.type = "button";
|
|
17506
|
-
del.disabled = !canEdit;
|
|
17507
|
-
del.textContent = translate(locale, "Delete");
|
|
17508
|
-
del.addEventListener("click", () => options.onDelete(comment.id));
|
|
17509
|
-
actions.append(del);
|
|
17510
|
-
thread.append(meta, text, actions);
|
|
17511
|
-
if (!comment.parentId) {
|
|
17512
|
-
const replyForm = document.createElement("div");
|
|
17513
|
-
replyForm.className = "dve-comment-reply";
|
|
17514
|
-
const input = document.createElement("textarea");
|
|
17515
|
-
input.disabled = !canEdit;
|
|
17516
|
-
input.setAttribute("aria-label", translate(locale, "Reply"));
|
|
17517
|
-
input.placeholder = translate(locale, "Reply");
|
|
17518
|
-
const send = document.createElement("button");
|
|
17519
|
-
send.type = "button";
|
|
17520
|
-
send.disabled = !canEdit;
|
|
17521
|
-
send.textContent = translate(locale, "Reply");
|
|
17522
|
-
send.addEventListener("click", () => {
|
|
17523
|
-
if (!input.value.trim()) return;
|
|
17524
|
-
options.onReply(comment.id, input.value.trim());
|
|
17525
|
-
input.value = "";
|
|
17526
|
-
});
|
|
17527
|
-
replyForm.append(input, send);
|
|
17528
|
-
thread.append(replyForm);
|
|
17529
|
-
}
|
|
17530
|
-
return thread;
|
|
17469
|
+
function wordCommentThreads(comments) {
|
|
17470
|
+
const entry = (comment) => ({
|
|
17471
|
+
id: comment.id,
|
|
17472
|
+
author: comment.author,
|
|
17473
|
+
text: comment.text,
|
|
17474
|
+
...comment.initials ? { initials: comment.initials } : {},
|
|
17475
|
+
...comment.date ? { created: comment.date } : {}
|
|
17476
|
+
});
|
|
17477
|
+
return comments.filter((comment) => !comment.parentId).map((comment) => ({
|
|
17478
|
+
id: comment.id,
|
|
17479
|
+
resolved: Boolean(comment.resolved),
|
|
17480
|
+
comments: [
|
|
17481
|
+
entry(comment),
|
|
17482
|
+
...comments.filter((reply) => reply.parentId === comment.id).map(entry)
|
|
17483
|
+
]
|
|
17484
|
+
}));
|
|
17531
17485
|
}
|
|
17486
|
+
function labels2(locale) {
|
|
17487
|
+
const t = (key2) => translate(locale, key2);
|
|
17488
|
+
return {
|
|
17489
|
+
heading: t("Comments"),
|
|
17490
|
+
list: t("Comments"),
|
|
17491
|
+
close: t("Close comments"),
|
|
17492
|
+
newComment: t("New comment"),
|
|
17493
|
+
add: t("Add comment"),
|
|
17494
|
+
reply: t("Reply"),
|
|
17495
|
+
resolve: t("Resolve"),
|
|
17496
|
+
reopen: t("Reopen"),
|
|
17497
|
+
resolved: t("Resolved"),
|
|
17498
|
+
delete: t("Delete"),
|
|
17499
|
+
empty: t("No comments")
|
|
17500
|
+
};
|
|
17501
|
+
}
|
|
17502
|
+
var detail = (event) => event.detail;
|
|
17532
17503
|
function createCommentsPanel(options) {
|
|
17533
17504
|
let locale = "en";
|
|
17534
|
-
|
|
17505
|
+
defineCommentsPane();
|
|
17506
|
+
const panel = document.createElement("office-ui-comments-pane");
|
|
17535
17507
|
panel.className = "dve-comments-panel";
|
|
17536
17508
|
panel.setAttribute("role", "complementary");
|
|
17537
17509
|
panel.setAttribute("aria-label", translate(locale, "Comments"));
|
|
17538
17510
|
panel.hidden = true;
|
|
17539
|
-
|
|
17540
|
-
|
|
17541
|
-
|
|
17542
|
-
|
|
17543
|
-
|
|
17544
|
-
closeButton.type = "button";
|
|
17545
|
-
closeButton.textContent = translate(locale, "Close comments");
|
|
17546
|
-
closeButton.setAttribute("aria-label", translate(locale, "Close comments"));
|
|
17547
|
-
closeButton.addEventListener("click", () => close3());
|
|
17548
|
-
const newForm = document.createElement("div");
|
|
17549
|
-
newForm.className = "dve-comment-new";
|
|
17550
|
-
const newInput = document.createElement("textarea");
|
|
17551
|
-
newInput.setAttribute("aria-label", translate(locale, "New comment"));
|
|
17552
|
-
newInput.placeholder = translate(locale, "New comment");
|
|
17553
|
-
const addButton = document.createElement("button");
|
|
17554
|
-
addButton.type = "button";
|
|
17555
|
-
addButton.textContent = translate(locale, "Add comment");
|
|
17556
|
-
addButton.addEventListener("click", () => {
|
|
17557
|
-
if (!newInput.value.trim()) return;
|
|
17558
|
-
options.onAdd(newInput.value.trim());
|
|
17559
|
-
newInput.value = "";
|
|
17511
|
+
panel.closable = true;
|
|
17512
|
+
panel.classNames = { thread: "dve-comment-card", comment: "dve-comment-thread" };
|
|
17513
|
+
panel.labels = labels2(locale);
|
|
17514
|
+
panel.addEventListener("comment-add", (event) => {
|
|
17515
|
+
options.onAdd(detail(event).text);
|
|
17560
17516
|
refresh();
|
|
17561
17517
|
});
|
|
17562
|
-
|
|
17563
|
-
|
|
17564
|
-
|
|
17518
|
+
panel.addEventListener(
|
|
17519
|
+
"comment-reply",
|
|
17520
|
+
(event) => options.onReply(detail(event).threadId, detail(event).text)
|
|
17521
|
+
);
|
|
17522
|
+
panel.addEventListener(
|
|
17523
|
+
"thread-resolve",
|
|
17524
|
+
(event) => options.onResolve(detail(event).threadId, true)
|
|
17525
|
+
);
|
|
17526
|
+
panel.addEventListener(
|
|
17527
|
+
"thread-reopen",
|
|
17528
|
+
(event) => options.onResolve(detail(event).threadId, false)
|
|
17529
|
+
);
|
|
17530
|
+
panel.addEventListener("comment-delete", (event) => options.onDelete(detail(event).commentId));
|
|
17531
|
+
panel.addEventListener("thread-select", (event) => options.onSelect?.(detail(event).threadId));
|
|
17532
|
+
panel.addEventListener("comments-close", () => close3());
|
|
17565
17533
|
let isOpen = false;
|
|
17566
17534
|
function close3() {
|
|
17567
17535
|
isOpen = false;
|
|
@@ -17569,24 +17537,11 @@ function createCommentsPanel(options) {
|
|
|
17569
17537
|
options.onClose?.();
|
|
17570
17538
|
}
|
|
17571
17539
|
function refresh() {
|
|
17572
|
-
|
|
17573
|
-
|
|
17574
|
-
|
|
17575
|
-
|
|
17576
|
-
if (!top.length) {
|
|
17577
|
-
const empty = document.createElement("p");
|
|
17578
|
-
empty.className = "dve-comment-empty";
|
|
17579
|
-
empty.textContent = translate(locale, "No comments");
|
|
17580
|
-
list.append(empty);
|
|
17581
|
-
return;
|
|
17582
|
-
}
|
|
17583
|
-
for (const comment of top) {
|
|
17584
|
-
list.append(row3(comment, false, locale, options));
|
|
17585
|
-
for (const reply of comments.filter((item) => item.parentId === comment.id))
|
|
17586
|
-
list.append(row3(reply, true, locale, options));
|
|
17587
|
-
}
|
|
17540
|
+
panel.readOnly = !(options.canEdit?.() ?? true);
|
|
17541
|
+
panel.addDisabled = !options.canAdd();
|
|
17542
|
+
panel.activeThreadId = options.activeId?.() ?? null;
|
|
17543
|
+
panel.threads = wordCommentThreads(options.getModel().comments ?? []);
|
|
17588
17544
|
}
|
|
17589
|
-
localizeElement(panel, locale);
|
|
17590
17545
|
refresh();
|
|
17591
17546
|
return {
|
|
17592
17547
|
element: panel,
|
|
@@ -17602,13 +17557,9 @@ function createCommentsPanel(options) {
|
|
|
17602
17557
|
refresh,
|
|
17603
17558
|
setLocale(value) {
|
|
17604
17559
|
locale = normalizeEditorLocale(value);
|
|
17605
|
-
heading2.textContent = translate(locale, "Comments");
|
|
17606
17560
|
panel.setAttribute("aria-label", translate(locale, "Comments"));
|
|
17607
|
-
|
|
17608
|
-
|
|
17609
|
-
newInput.setAttribute("aria-label", translate(locale, "New comment"));
|
|
17610
|
-
newInput.placeholder = translate(locale, "New comment");
|
|
17611
|
-
addButton.textContent = translate(locale, "Add comment");
|
|
17561
|
+
panel.labels = labels2(locale);
|
|
17562
|
+
panel.locale = locale;
|
|
17612
17563
|
refresh();
|
|
17613
17564
|
}
|
|
17614
17565
|
};
|
|
@@ -17625,6 +17576,11 @@ var ReviewController = class {
|
|
|
17625
17576
|
const view = host.getView();
|
|
17626
17577
|
return Boolean(host.canEditComments() && view && !view.state.selection.empty);
|
|
17627
17578
|
},
|
|
17579
|
+
activeId: () => {
|
|
17580
|
+
const view = host.getView();
|
|
17581
|
+
return view ? commentIdsAtSelection(view)[0] : void 0;
|
|
17582
|
+
},
|
|
17583
|
+
onSelect: (id) => this.goToAnchor(id),
|
|
17628
17584
|
onAdd: (text) => this.addComment(text),
|
|
17629
17585
|
onReply: (parentId, text) => {
|
|
17630
17586
|
if (!host.canEditComments()) return;
|
|
@@ -17664,6 +17620,15 @@ var ReviewController = class {
|
|
|
17664
17620
|
setLocale(locale) {
|
|
17665
17621
|
this.commentsPanel.setLocale(locale);
|
|
17666
17622
|
}
|
|
17623
|
+
/** Moves the caret to the start of a thread's anchored text (the pane keeps focus). */
|
|
17624
|
+
goToAnchor(id) {
|
|
17625
|
+
const view = this.host.getView();
|
|
17626
|
+
const anchor = view && commentAnchors(view).find((item) => item.id === id);
|
|
17627
|
+
if (!view || !anchor) return;
|
|
17628
|
+
view.dispatch(
|
|
17629
|
+
view.state.tr.setSelection(TextSelection.create(view.state.doc, anchor.from)).scrollIntoView()
|
|
17630
|
+
);
|
|
17631
|
+
}
|
|
17667
17632
|
/** Removes a comment, its replies and its anchored range in one go. */
|
|
17668
17633
|
deleteById(id) {
|
|
17669
17634
|
if (!this.host.canEditComments()) return;
|
|
@@ -17806,15 +17771,6 @@ function icon(name) {
|
|
|
17806
17771
|
svg.append(path);
|
|
17807
17772
|
return svg;
|
|
17808
17773
|
}
|
|
17809
|
-
function iconButton(name, label, className = "") {
|
|
17810
|
-
const button3 = document.createElement("button");
|
|
17811
|
-
button3.type = "button";
|
|
17812
|
-
button3.className = `dve-icon-button ${className}`.trim();
|
|
17813
|
-
button3.setAttribute("aria-label", label);
|
|
17814
|
-
button3.title = label;
|
|
17815
|
-
button3.append(icon(name));
|
|
17816
|
-
return button3;
|
|
17817
|
-
}
|
|
17818
17774
|
|
|
17819
17775
|
// src/docx/backstage-options.ts
|
|
17820
17776
|
function renderOptions({ handlers, t, content }) {
|
|
@@ -17869,9 +17825,9 @@ function renderOptions({ handlers, t, content }) {
|
|
|
17869
17825
|
input.type = "checkbox";
|
|
17870
17826
|
input.checked = current2[key2];
|
|
17871
17827
|
input.addEventListener("change", () => handlers.setOption(key2, String(input.checked)));
|
|
17872
|
-
const
|
|
17873
|
-
|
|
17874
|
-
controls.push(
|
|
17828
|
+
const row3 = field2(label, input);
|
|
17829
|
+
row3.classList.add("dve-backstage-toggle");
|
|
17830
|
+
controls.push(row3);
|
|
17875
17831
|
}
|
|
17876
17832
|
const note = document.createElement("p");
|
|
17877
17833
|
note.className = "dve-backstage-muted";
|
|
@@ -17930,9 +17886,9 @@ var facts = (rows, t) => {
|
|
|
17930
17886
|
for (const [label, value] of rows) {
|
|
17931
17887
|
const term = document.createElement("dt");
|
|
17932
17888
|
term.textContent = t(label);
|
|
17933
|
-
const
|
|
17934
|
-
|
|
17935
|
-
list.append(term,
|
|
17889
|
+
const detail2 = document.createElement("dd");
|
|
17890
|
+
detail2.textContent = value;
|
|
17891
|
+
list.append(term, detail2);
|
|
17936
17892
|
}
|
|
17937
17893
|
return list;
|
|
17938
17894
|
};
|
|
@@ -18144,16 +18100,16 @@ function renderCustomize({ handlers, t, content }) {
|
|
|
18144
18100
|
const id = ribbonControlId(control);
|
|
18145
18101
|
if (!id || seen.has(id)) continue;
|
|
18146
18102
|
seen.add(id);
|
|
18147
|
-
const
|
|
18148
|
-
|
|
18103
|
+
const row3 = document.createElement("label");
|
|
18104
|
+
row3.className = "dve-customize-row";
|
|
18149
18105
|
const input = document.createElement("input");
|
|
18150
18106
|
input.type = "checkbox";
|
|
18151
18107
|
input.checked = !hidden.has(id);
|
|
18152
18108
|
input.addEventListener("change", commit);
|
|
18153
18109
|
const text = document.createElement("span");
|
|
18154
18110
|
text.textContent = control.getAttribute("aria-label") ?? id;
|
|
18155
|
-
|
|
18156
|
-
list.append(
|
|
18111
|
+
row3.append(input, text);
|
|
18112
|
+
list.append(row3);
|
|
18157
18113
|
boxes.push({ id, input });
|
|
18158
18114
|
}
|
|
18159
18115
|
if (list.children.length > 1) tabSection.append(list);
|
|
@@ -18323,6 +18279,46 @@ function withExtension(fileName, extension) {
|
|
|
18323
18279
|
return `${base}.${extension}`;
|
|
18324
18280
|
}
|
|
18325
18281
|
|
|
18282
|
+
// src/docx/ribbon-actions.ts
|
|
18283
|
+
function createRibbonActions(handlers) {
|
|
18284
|
+
defineRibbonActions();
|
|
18285
|
+
const element = document.createElement("office-ui-ribbon-actions");
|
|
18286
|
+
element.className = "dve-ribbon-actions";
|
|
18287
|
+
element.slot = "actions";
|
|
18288
|
+
element.mode = "editing";
|
|
18289
|
+
element.addEventListener(
|
|
18290
|
+
"office-ribbon-mode",
|
|
18291
|
+
(event) => handlers.setReadOnly(event.detail.mode === "viewing")
|
|
18292
|
+
);
|
|
18293
|
+
element.addEventListener("office-ribbon-comments", () => handlers.toggleComments());
|
|
18294
|
+
element.addEventListener("office-ribbon-share", () => handlers.share());
|
|
18295
|
+
const relocalize = (locale) => {
|
|
18296
|
+
element.modeLabel = translate(locale, "Editing mode");
|
|
18297
|
+
element.modes = [
|
|
18298
|
+
{ value: "editing", label: translate(locale, "Editing") },
|
|
18299
|
+
{ value: "viewing", label: translate(locale, "Viewing") }
|
|
18300
|
+
];
|
|
18301
|
+
element.commentsLabel = translate(locale, "Comments");
|
|
18302
|
+
element.commentsTitle = translate(locale, "Show comments");
|
|
18303
|
+
element.shareLabel = translate(locale, "Share");
|
|
18304
|
+
element.shareTitle = translate(locale, "Share");
|
|
18305
|
+
};
|
|
18306
|
+
relocalize("en");
|
|
18307
|
+
return {
|
|
18308
|
+
element,
|
|
18309
|
+
setReadOnly(readOnly) {
|
|
18310
|
+
element.mode = readOnly ? "viewing" : "editing";
|
|
18311
|
+
},
|
|
18312
|
+
setCommentsOpen(open) {
|
|
18313
|
+
element.commentsPressed = open;
|
|
18314
|
+
},
|
|
18315
|
+
setSharing(active) {
|
|
18316
|
+
element.sharePressed = active;
|
|
18317
|
+
},
|
|
18318
|
+
relocalize
|
|
18319
|
+
};
|
|
18320
|
+
}
|
|
18321
|
+
|
|
18326
18322
|
// src/docx/status-bar.ts
|
|
18327
18323
|
var ZOOM_MIN = 50;
|
|
18328
18324
|
var ZOOM_MAX = 200;
|
|
@@ -18448,28 +18444,6 @@ function createTitleBar(handlers) {
|
|
|
18448
18444
|
defineTitleBar();
|
|
18449
18445
|
const element = document.createElement("office-ui-title-bar");
|
|
18450
18446
|
element.className = "dve-titlebar";
|
|
18451
|
-
const actions = document.createElement("div");
|
|
18452
|
-
actions.className = "dve-title-actions";
|
|
18453
|
-
actions.slot = "account";
|
|
18454
|
-
const comments = iconButton("comment", "Show comments");
|
|
18455
|
-
comments.setAttribute("aria-pressed", "false");
|
|
18456
|
-
comments.addEventListener("click", () => handlers.toggleComments());
|
|
18457
|
-
const mode = document.createElement("select");
|
|
18458
|
-
mode.className = "dve-mode-select";
|
|
18459
|
-
mode.setAttribute("aria-label", "Editing mode");
|
|
18460
|
-
const modeOptions = [
|
|
18461
|
-
["editing", "Editing"],
|
|
18462
|
-
["viewing", "Viewing"]
|
|
18463
|
-
];
|
|
18464
|
-
for (const [value, text] of modeOptions) {
|
|
18465
|
-
const option = document.createElement("option");
|
|
18466
|
-
option.value = value;
|
|
18467
|
-
option.textContent = text;
|
|
18468
|
-
mode.append(option);
|
|
18469
|
-
}
|
|
18470
|
-
mode.addEventListener("change", () => handlers.setReadOnly(mode.value === "viewing"));
|
|
18471
|
-
actions.append(comments, mode);
|
|
18472
|
-
element.append(actions);
|
|
18473
18447
|
const model = { fileName: "", saveState: "saved", readOnly: false };
|
|
18474
18448
|
let found = /* @__PURE__ */ new Map();
|
|
18475
18449
|
const render = () => {
|
|
@@ -18542,12 +18516,8 @@ function createTitleBar(handlers) {
|
|
|
18542
18516
|
},
|
|
18543
18517
|
setReadOnly(readOnly) {
|
|
18544
18518
|
model.readOnly = readOnly;
|
|
18545
|
-
mode.value = readOnly ? "viewing" : "editing";
|
|
18546
18519
|
render();
|
|
18547
18520
|
},
|
|
18548
|
-
setCommentsOpen(open) {
|
|
18549
|
-
comments.setAttribute("aria-pressed", String(open));
|
|
18550
|
-
},
|
|
18551
18521
|
relocalize: render
|
|
18552
18522
|
};
|
|
18553
18523
|
}
|
|
@@ -18560,10 +18530,13 @@ var EditorChrome = class {
|
|
|
18560
18530
|
this.titleBar = createTitleBar({
|
|
18561
18531
|
fileCommand: (command) => void this.run(command),
|
|
18562
18532
|
history: (key2) => host.history(key2),
|
|
18563
|
-
toggleComments: () => host.toggleComments(),
|
|
18564
|
-
setReadOnly: (readOnly) => host.setReadOnly(readOnly),
|
|
18565
18533
|
ribbon: () => host.ribbon()
|
|
18566
18534
|
});
|
|
18535
|
+
this.ribbonActions = createRibbonActions({
|
|
18536
|
+
setReadOnly: (readOnly) => host.setReadOnly(readOnly),
|
|
18537
|
+
toggleComments: () => host.toggleComments(),
|
|
18538
|
+
share: () => void this.run("share")
|
|
18539
|
+
});
|
|
18567
18540
|
this.backstage = createBackstage({
|
|
18568
18541
|
fileCommand: (command, fileName) => void this.run(command, fileName),
|
|
18569
18542
|
close: () => this.closeBackstage(),
|
|
@@ -18608,6 +18581,7 @@ var EditorChrome = class {
|
|
|
18608
18581
|
}
|
|
18609
18582
|
host;
|
|
18610
18583
|
titleBar;
|
|
18584
|
+
ribbonActions;
|
|
18611
18585
|
backstage;
|
|
18612
18586
|
statusBar;
|
|
18613
18587
|
fileInput;
|
|
@@ -18619,6 +18593,7 @@ var EditorChrome = class {
|
|
|
18619
18593
|
frame.prepend(this.titleBar.element);
|
|
18620
18594
|
frame.append(this.statusBar.element, this.backstage.element, this.fileInput);
|
|
18621
18595
|
this.ribbon = ribbon;
|
|
18596
|
+
ribbon.append(this.ribbonActions.element);
|
|
18622
18597
|
ribbon.addEventListener("office-ribbon-file", () => this.backstage.open("home"));
|
|
18623
18598
|
}
|
|
18624
18599
|
get fileName() {
|
|
@@ -18644,6 +18619,7 @@ var EditorChrome = class {
|
|
|
18644
18619
|
this.statusBar.relocalize();
|
|
18645
18620
|
this.backstage.relocalize();
|
|
18646
18621
|
this.titleBar.relocalize();
|
|
18622
|
+
this.ribbonActions.relocalize(locale);
|
|
18647
18623
|
const fileTab = this.host.ribbon()?.querySelector(".dve-file-tab");
|
|
18648
18624
|
if (fileTab) fileTab.textContent = translate(locale, "File");
|
|
18649
18625
|
this.fileInput.setAttribute("aria-label", translate(locale, "Open"));
|
|
@@ -18655,6 +18631,8 @@ var EditorChrome = class {
|
|
|
18655
18631
|
this.statusBar.setNoteCount(model.warnings.length);
|
|
18656
18632
|
this.statusBar.setLanguage(this.host.element.lang || "");
|
|
18657
18633
|
this.titleBar.setReadOnly(this.host.readOnly());
|
|
18634
|
+
this.ribbonActions.setReadOnly(this.host.readOnly());
|
|
18635
|
+
this.ribbonActions.setSharing(this.host.collaborating());
|
|
18658
18636
|
}
|
|
18659
18637
|
closeBackstage() {
|
|
18660
18638
|
this.backstage.close();
|
|
@@ -18667,6 +18645,7 @@ var EditorChrome = class {
|
|
|
18667
18645
|
if (command === "new") this.newDocument();
|
|
18668
18646
|
else if (command === "open") this.fileInput.click();
|
|
18669
18647
|
else if (command === "print") this.host.print();
|
|
18648
|
+
else if (command === "share") return;
|
|
18670
18649
|
else if (command === "exportText")
|
|
18671
18650
|
downloadText(plainText(this.host.model()), withExtension(this._fileName, "txt"));
|
|
18672
18651
|
else if (command === "saveAs") {
|
|
@@ -18827,25 +18806,25 @@ function openTablePicker(anchor, onPick, onClose) {
|
|
|
18827
18806
|
const paint = () => {
|
|
18828
18807
|
caption.textContent = translateTemplate(locale, "table.size", { columns, rows });
|
|
18829
18808
|
cells.forEach((cell, index) => {
|
|
18830
|
-
const
|
|
18809
|
+
const row3 = Math.floor(index / PICKER_COLUMNS);
|
|
18831
18810
|
const column = index % PICKER_COLUMNS;
|
|
18832
|
-
cell.classList.toggle("active",
|
|
18811
|
+
cell.classList.toggle("active", row3 < rows && column < columns);
|
|
18833
18812
|
});
|
|
18834
18813
|
};
|
|
18835
|
-
for (let
|
|
18814
|
+
for (let row3 = 0; row3 < PICKER_ROWS; row3++)
|
|
18836
18815
|
for (let column = 0; column < PICKER_COLUMNS; column++) {
|
|
18837
18816
|
const cell = document.createElement("div");
|
|
18838
18817
|
cell.setAttribute("role", "gridcell");
|
|
18839
|
-
cell.dataset.rows = String(
|
|
18818
|
+
cell.dataset.rows = String(row3 + 1);
|
|
18840
18819
|
cell.dataset.columns = String(column + 1);
|
|
18841
18820
|
cell.addEventListener("mouseenter", () => {
|
|
18842
|
-
rows =
|
|
18821
|
+
rows = row3 + 1;
|
|
18843
18822
|
columns = column + 1;
|
|
18844
18823
|
paint();
|
|
18845
18824
|
});
|
|
18846
18825
|
cell.addEventListener("mousedown", (event) => event.preventDefault());
|
|
18847
18826
|
cell.addEventListener("click", () => {
|
|
18848
|
-
onPick(
|
|
18827
|
+
onPick(row3 + 1, column + 1);
|
|
18849
18828
|
onClose();
|
|
18850
18829
|
});
|
|
18851
18830
|
cells.push(cell);
|
|
@@ -19408,9 +19387,9 @@ var PageNavigator = class {
|
|
|
19408
19387
|
}
|
|
19409
19388
|
const version = this.host.version();
|
|
19410
19389
|
if (version !== this.built || this.thumbs.length !== status.total) this.rebuild(version);
|
|
19411
|
-
const
|
|
19412
|
-
if (
|
|
19413
|
-
this.labels =
|
|
19390
|
+
const labels3 = `${locale}:${status.total}`;
|
|
19391
|
+
if (labels3 !== this.labels) this.relabelThumbs(locale, status.total);
|
|
19392
|
+
this.labels = labels3;
|
|
19414
19393
|
this.mark(status.current);
|
|
19415
19394
|
}
|
|
19416
19395
|
relabelChrome(locale, active, ready) {
|
|
@@ -19880,7 +19859,7 @@ function createContextMenu(host) {
|
|
|
19880
19859
|
element.state = {
|
|
19881
19860
|
...state,
|
|
19882
19861
|
items: state.items.map(
|
|
19883
|
-
(
|
|
19862
|
+
(row3) => row3.id === "paste" ? { ...row3, disabled: true, title: denied } : row3
|
|
19884
19863
|
)
|
|
19885
19864
|
};
|
|
19886
19865
|
});
|
|
@@ -19926,7 +19905,7 @@ function shortcutRows(registry, mac) {
|
|
|
19926
19905
|
label: shortcut.label,
|
|
19927
19906
|
keys: registry.keysFor(shortcut.id, mac).join(" / ")
|
|
19928
19907
|
}));
|
|
19929
|
-
return [...general, ...editorShortcutRows(mac)].filter((
|
|
19908
|
+
return [...general, ...editorShortcutRows(mac)].filter((row3) => row3.keys);
|
|
19930
19909
|
}
|
|
19931
19910
|
function createShortcutHelp(onClose) {
|
|
19932
19911
|
const element = createDialogShell("", "dve-shortcut-help");
|
|
@@ -19966,11 +19945,11 @@ function createShortcutHelp(onClose) {
|
|
|
19966
19945
|
head.append(cell);
|
|
19967
19946
|
}
|
|
19968
19947
|
const body = table.createTBody();
|
|
19969
|
-
for (const
|
|
19948
|
+
for (const row3 of rows) {
|
|
19970
19949
|
const tr = body.insertRow();
|
|
19971
|
-
tr.insertCell().textContent = translate(locale,
|
|
19950
|
+
tr.insertCell().textContent = translate(locale, row3.label);
|
|
19972
19951
|
const kbd = document.createElement("kbd");
|
|
19973
|
-
kbd.textContent =
|
|
19952
|
+
kbd.textContent = row3.keys;
|
|
19974
19953
|
tr.insertCell().append(kbd);
|
|
19975
19954
|
}
|
|
19976
19955
|
setDialogOpen(element, true);
|
|
@@ -20139,6 +20118,7 @@ function createChrome(core, api) {
|
|
|
20139
20118
|
if (typeof document.execCommand === "function") core.targetView()?.focus();
|
|
20140
20119
|
},
|
|
20141
20120
|
toggleComments: () => shell.review?.handleComments("toggle"),
|
|
20121
|
+
collaborating: () => core.collab.active,
|
|
20142
20122
|
setViewMode: (mode) => core.pages.setViewMode(mode),
|
|
20143
20123
|
setZoom: (percent) => core.pages.setZoom(percent),
|
|
20144
20124
|
options: () => ({
|