ooxml-ui 1.1.0 → 1.2.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 +211 -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-M5DTJSOV.js → chunk-7FNDOWTX.js} +393 -15
- package/dist/{chunk-KVKKXRL7.js → chunk-AYXFLBSV.js} +92 -13
- package/dist/{chunk-X7RINDJQ.js → chunk-JAJFLFAV.js} +1 -1
- package/dist/{chunk-3FPW7M6U.js → chunk-VUB44CAJ.js} +1 -1
- package/dist/{chunk-JFJXBYRD.js → chunk-XNCWB2X6.js} +5 -0
- package/dist/{chunk-BEN3453I.js → chunk-Y2E22JVO.js} +1 -1
- package/dist/{chunk-USDLALB5.js → chunk-YK2DPYMU.js} +1 -1
- package/dist/{chunk-ZU7GX4SY.js → chunk-YP5S7DTT.js} +6 -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 +4 -2
- package/dist/controls.d.ts.map +1 -1
- package/dist/controls.js +4 -4
- package/dist/docx/comments-panel.d.ts +8 -1
- package/dist/docx/image-media.d.ts +1 -1
- package/dist/docx/locales/en-ribbon.d.ts +1 -0
- package/dist/docx/locales/en.d.ts +1 -0
- package/dist/docx/localization-strings.d.ts +1 -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/ruler.d.ts +7 -10
- package/dist/docx.js +282 -322
- package/dist/form/gradient-preset-gallery.d.ts +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -8
- package/dist/pptx/{chart-3d-view-scene-2KRQ5667.mjs → chart-3d-view-scene-6B5TOWB6.mjs} +3 -3
- package/dist/pptx/{chart-3d-view-scene-36DMZWZ3.cjs → chart-3d-view-scene-MJ6YNT56.cjs} +37 -37
- package/dist/pptx/{chunk-YOGDIDPB.mjs → chunk-AWKKC3VW.mjs} +8 -2
- package/dist/pptx/{chunk-CJU4P5FT.cjs → chunk-STKGUT5S.cjs} +18 -12
- package/dist/pptx/{chunk-YHA6XAB3.cjs → chunk-XIQMFSNG.cjs} +1 -1
- package/dist/pptx/{chunk-YARCML7O.mjs → chunk-XQVKQD5Z.mjs} +294 -265
- package/dist/pptx/{chunk-Y2W4SZER.mjs → chunk-YI5LH5NN.mjs} +479 -336
- package/dist/pptx/{chunk-ADOC5JLI.mjs → chunk-YMTQLZ2I.mjs} +1 -1
- package/dist/pptx/{chunk-AIL3BNZS.cjs → chunk-YRHK45AB.cjs} +301 -265
- package/dist/pptx/{chunk-KPZWYF44.cjs → chunk-ZK344LOB.cjs} +629 -479
- 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/table.d.ts.map +1 -1
- package/dist/pptx/dom/index.cjs +254 -243
- package/dist/pptx/dom/index.mjs +26 -15
- package/dist/pptx/export/html2canvas-clone.cjs +2 -2
- package/dist/pptx/export/html2canvas-clone.mjs +1 -1
- package/dist/pptx/index.cjs +3025 -2993
- package/dist/pptx/index.mjs +4 -4
- 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-cartesian-axes.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-bars.d.ts +3 -3
- package/dist/pptx/render/chart-cartesian-bars.d.ts.map +1 -1
- package/dist/pptx/render/chart-cartesian-percent-stacked.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-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-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-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 +31 -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/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 +1 -0
- package/dist/pptx/render/index.d.ts.map +1 -1
- 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.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/office-token-bridge.d.ts.map +1 -1
- package/dist/presence.js +3 -3
- 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 +6 -6
- package/dist/theme.js +2 -2
- package/dist/tokens.d.ts +5 -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 +65 -20
- 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/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 +3 -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 +21 -0
- package/dist/xlsx/shell-commands.d.ts +1 -1
- package/dist/xlsx/title-bar.d.ts +4 -2
- package/dist/xlsx.js +712 -90
- 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-
|
|
1
|
+
import { defineSmartArt } from './chunk-Y2E22JVO.js';
|
|
2
|
+
import { shadcnBridge } from './chunk-JAJFLFAV.js';
|
|
3
|
+
import { createRibbonOverflow, defineRibbon, defineRuler, defineCommentsPane, defineDialog, defineSearchField, defineSwitch, defineTitleBar, defineBackstage, defineStatusBar, defineZoomSlider, defineContextMenu, runKeyTips, assignKeyTips } from './chunk-7FNDOWTX.js';
|
|
4
4
|
import { registerIcon } from './chunk-BOX43CZD.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
5
|
+
import './chunk-VUB44CAJ.js';
|
|
6
|
+
import './chunk-YK2DPYMU.js';
|
|
7
|
+
import './chunk-XNCWB2X6.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';
|
|
@@ -1267,6 +1267,7 @@ var deRibbon = {
|
|
|
1267
1267
|
Reply: "Antworten",
|
|
1268
1268
|
Resolve: "L\xF6sen",
|
|
1269
1269
|
Reopen: "Erneut \xF6ffnen",
|
|
1270
|
+
Resolved: "Gel\xF6st",
|
|
1270
1271
|
Delete: "L\xF6schen",
|
|
1271
1272
|
"No comments": "Noch keine Kommentare.",
|
|
1272
1273
|
Tracking: "Nachverfolgung",
|
|
@@ -1927,6 +1928,7 @@ var enRibbon = {
|
|
|
1927
1928
|
Reply: "Reply",
|
|
1928
1929
|
Resolve: "Resolve",
|
|
1929
1930
|
Reopen: "Reopen",
|
|
1931
|
+
Resolved: "Resolved",
|
|
1930
1932
|
Delete: "Delete",
|
|
1931
1933
|
"No comments": "No comments yet.",
|
|
1932
1934
|
Tracking: "Tracking",
|
|
@@ -2587,6 +2589,7 @@ var esRibbon = {
|
|
|
2587
2589
|
Reply: "Responder",
|
|
2588
2590
|
Resolve: "Resolver",
|
|
2589
2591
|
Reopen: "Reabrir",
|
|
2592
|
+
Resolved: "Resuelto",
|
|
2590
2593
|
Delete: "Eliminar",
|
|
2591
2594
|
"No comments": "A\xFAn no hay comentarios.",
|
|
2592
2595
|
Tracking: "Seguimiento",
|
|
@@ -3247,6 +3250,7 @@ var frRibbon = {
|
|
|
3247
3250
|
Reply: "R\xE9pondre",
|
|
3248
3251
|
Resolve: "R\xE9soudre",
|
|
3249
3252
|
Reopen: "Rouvrir",
|
|
3253
|
+
Resolved: "R\xE9solu",
|
|
3250
3254
|
Delete: "Supprimer",
|
|
3251
3255
|
"No comments": "Aucun commentaire pour le moment.",
|
|
3252
3256
|
Tracking: "Suivi",
|
|
@@ -3907,6 +3911,7 @@ var zhCNRibbon = {
|
|
|
3907
3911
|
Reply: "\u56DE\u590D",
|
|
3908
3912
|
Resolve: "\u89E3\u51B3",
|
|
3909
3913
|
Reopen: "\u91CD\u65B0\u6253\u5F00",
|
|
3914
|
+
Resolved: "\u5DF2\u89E3\u51B3",
|
|
3910
3915
|
Delete: "\u5220\u9664",
|
|
3911
3916
|
"No comments": "\u6682\u65E0\u6279\u6CE8\u3002",
|
|
3912
3917
|
Tracking: "\u4FEE\u8BA2",
|
|
@@ -4061,8 +4066,18 @@ function localizeElement(root, locale) {
|
|
|
4061
4066
|
}
|
|
4062
4067
|
}
|
|
4063
4068
|
}
|
|
4069
|
+
var controlCache = /* @__PURE__ */ new WeakMap();
|
|
4064
4070
|
function findLocalizedControl(root, label) {
|
|
4065
|
-
|
|
4071
|
+
let cache = controlCache.get(root);
|
|
4072
|
+
const cached = cache?.get(label);
|
|
4073
|
+
if (cached?.isConnected && root.contains(cached) && (cached.getAttribute("aria-label") === label || cached.dataset.localearialabel === label))
|
|
4074
|
+
return cached;
|
|
4075
|
+
const found = root.querySelector(`[aria-label="${label}"], [data-localearialabel="${label}"]`);
|
|
4076
|
+
if (found) {
|
|
4077
|
+
if (!cache) controlCache.set(root, cache = /* @__PURE__ */ new Map());
|
|
4078
|
+
cache.set(label, found);
|
|
4079
|
+
}
|
|
4080
|
+
return found;
|
|
4066
4081
|
}
|
|
4067
4082
|
|
|
4068
4083
|
// src/docx/shell-labels.ts
|
|
@@ -4348,9 +4363,9 @@ var schema = new Schema({
|
|
|
4348
4363
|
}
|
|
4349
4364
|
const body = [
|
|
4350
4365
|
"tbody",
|
|
4351
|
-
...rows.map((
|
|
4366
|
+
...rows.map((row3) => [
|
|
4352
4367
|
"tr",
|
|
4353
|
-
...
|
|
4368
|
+
...row3.map((cell) => ["td", cell.text])
|
|
4354
4369
|
])
|
|
4355
4370
|
];
|
|
4356
4371
|
return ["table", { class: "dve-nested-preview", contenteditable: "false" }, body];
|
|
@@ -4366,12 +4381,12 @@ function cellKey(cell) {
|
|
|
4366
4381
|
function tableNode(block, paragraphNode2, tableStyles) {
|
|
4367
4382
|
const columnCount = Math.max(
|
|
4368
4383
|
1,
|
|
4369
|
-
...block.rows.map((
|
|
4384
|
+
...block.rows.map((row3) => row3.reduce((sum, cell) => sum + (cell.gridSpan ?? 1), 0))
|
|
4370
4385
|
);
|
|
4371
|
-
const rows = block.rows.map((
|
|
4386
|
+
const rows = block.rows.map((row3, rowIndex) => {
|
|
4372
4387
|
const cells = [];
|
|
4373
4388
|
let gridColumn = 0;
|
|
4374
|
-
|
|
4389
|
+
row3.forEach((cell, columnIndex) => {
|
|
4375
4390
|
const column = gridColumn;
|
|
4376
4391
|
gridColumn += cell.gridSpan ?? 1;
|
|
4377
4392
|
if (cell.verticalMerge === "continue") return;
|
|
@@ -4446,19 +4461,19 @@ function tableNode(block, paragraphNode2, tableStyles) {
|
|
|
4446
4461
|
}
|
|
4447
4462
|
function tableFormattingFromNode(node) {
|
|
4448
4463
|
const rowProperties = [];
|
|
4449
|
-
node.forEach((
|
|
4464
|
+
node.forEach((row3) => rowProperties.push(structuredClone(row3.attrs.properties ?? {})));
|
|
4450
4465
|
return {
|
|
4451
|
-
rowProperties: rowProperties.some((
|
|
4466
|
+
rowProperties: rowProperties.some((row3) => Object.keys(row3).length) ? rowProperties : void 0,
|
|
4452
4467
|
cellMargins: typeof node.attrs.cellMargins === "string" ? JSON.parse(node.attrs.cellMargins) : void 0
|
|
4453
4468
|
};
|
|
4454
4469
|
}
|
|
4455
4470
|
function convertSimpleTable(node, convertParagraph, prior) {
|
|
4456
4471
|
const priorCells = /* @__PURE__ */ new Map();
|
|
4457
|
-
for (const
|
|
4472
|
+
for (const row3 of prior?.rows ?? []) for (const cell of row3) priorCells.set(cellKey(cell), cell);
|
|
4458
4473
|
const rows = [];
|
|
4459
|
-
node.forEach((
|
|
4474
|
+
node.forEach((row3) => {
|
|
4460
4475
|
const cells = [];
|
|
4461
|
-
|
|
4476
|
+
row3.forEach((cell) => {
|
|
4462
4477
|
const paragraphs = [];
|
|
4463
4478
|
cell.forEach((paragraph2) => {
|
|
4464
4479
|
if (paragraph2.type.name === "paragraph") paragraphs.push(convertParagraph(paragraph2));
|
|
@@ -4492,9 +4507,9 @@ function convertSimpleTable(node, convertParagraph, prior) {
|
|
|
4492
4507
|
function convertMergedTable(node, prior, convertParagraph) {
|
|
4493
4508
|
const updated = structuredClone(prior);
|
|
4494
4509
|
const cellByKey = /* @__PURE__ */ new Map();
|
|
4495
|
-
for (const
|
|
4510
|
+
for (const row3 of updated.rows) for (const cell of row3) cellByKey.set(cellKey(cell), cell);
|
|
4496
4511
|
node.forEach(
|
|
4497
|
-
(
|
|
4512
|
+
(row3) => row3.forEach((cellNode) => {
|
|
4498
4513
|
const target = cellByKey.get(String(cellNode.attrs.sourceCellKey || ""));
|
|
4499
4514
|
if (!target) return;
|
|
4500
4515
|
const paragraphs = [];
|
|
@@ -4551,14 +4566,14 @@ function sectionBreaksPlugin() {
|
|
|
4551
4566
|
const json = state.doc.attrs.sections;
|
|
4552
4567
|
const sections = typeof json === "string" ? JSON.parse(json) : [];
|
|
4553
4568
|
if (sections.length < 2) return null;
|
|
4554
|
-
const
|
|
4569
|
+
const labels3 = /* @__PURE__ */ new Map();
|
|
4555
4570
|
sections.slice(0, -1).forEach((section3, index) => {
|
|
4556
4571
|
const following = sections[index + 1];
|
|
4557
|
-
if (following)
|
|
4572
|
+
if (following) labels3.set(section3.endsAtBlockId, BREAK_LABEL[following.type]);
|
|
4558
4573
|
});
|
|
4559
4574
|
const decorations2 = [];
|
|
4560
4575
|
state.doc.forEach((node, offset) => {
|
|
4561
|
-
const label =
|
|
4576
|
+
const label = labels3.get(String(node.attrs.id));
|
|
4562
4577
|
if (label)
|
|
4563
4578
|
decorations2.push(
|
|
4564
4579
|
Decoration.node(offset, offset + node.nodeSize, {
|
|
@@ -4572,8 +4587,8 @@ function sectionBreaksPlugin() {
|
|
|
4572
4587
|
}
|
|
4573
4588
|
});
|
|
4574
4589
|
}
|
|
4575
|
-
function paragraphNode(paragraph2,
|
|
4576
|
-
const label =
|
|
4590
|
+
function paragraphNode(paragraph2, labels3, noteNumber) {
|
|
4591
|
+
const label = labels3.get(paragraph2.id);
|
|
4577
4592
|
const children = paragraph2.runs.flatMap((run) => runToInlineNodes(run, noteNumber));
|
|
4578
4593
|
return schema.node(
|
|
4579
4594
|
"paragraph",
|
|
@@ -4589,7 +4604,7 @@ function paragraphNode(paragraph2, labels2, noteNumber) {
|
|
|
4589
4604
|
);
|
|
4590
4605
|
}
|
|
4591
4606
|
function modelToDoc(model) {
|
|
4592
|
-
const
|
|
4607
|
+
const labels3 = computeListLabels(model);
|
|
4593
4608
|
const footnoteOrder = numberNotesInOrder(model.blocks, "footnote");
|
|
4594
4609
|
const endnoteOrder = numberNotesInOrder(model.blocks, "endnote");
|
|
4595
4610
|
const noteNumber = (kind, id) => {
|
|
@@ -4598,10 +4613,10 @@ function modelToDoc(model) {
|
|
|
4598
4613
|
return { number, label: formatNoteNumber(number, format) };
|
|
4599
4614
|
};
|
|
4600
4615
|
const blocks = model.blocks.map((block) => {
|
|
4601
|
-
if (block.type === "paragraph") return paragraphNode(block,
|
|
4616
|
+
if (block.type === "paragraph") return paragraphNode(block, labels3, noteNumber);
|
|
4602
4617
|
return tableNode(
|
|
4603
4618
|
block,
|
|
4604
|
-
(paragraph2) => paragraphNode(paragraph2,
|
|
4619
|
+
(paragraph2) => paragraphNode(paragraph2, labels3, noteNumber),
|
|
4605
4620
|
model.tableStyles
|
|
4606
4621
|
);
|
|
4607
4622
|
});
|
|
@@ -4666,7 +4681,7 @@ function docToModel(doc, prior) {
|
|
|
4666
4681
|
if (block.type === "paragraph") remember(block);
|
|
4667
4682
|
else {
|
|
4668
4683
|
priorTables.set(block.id, block);
|
|
4669
|
-
for (const
|
|
4684
|
+
for (const row3 of block.rows) for (const cell of row3) cell.paragraphs.forEach(remember);
|
|
4670
4685
|
}
|
|
4671
4686
|
}
|
|
4672
4687
|
const convertParagraph = (node) => {
|
|
@@ -4968,10 +4983,10 @@ var DOCX_EDITOR_EVENTS = [
|
|
|
4968
4983
|
function on(target, name, listener) {
|
|
4969
4984
|
target.addEventListener(name, (event) => listener(event));
|
|
4970
4985
|
}
|
|
4971
|
-
function emit(target, name,
|
|
4986
|
+
function emit(target, name, detail2, options = {}) {
|
|
4972
4987
|
return target.dispatchEvent(
|
|
4973
4988
|
new CustomEvent(name, {
|
|
4974
|
-
detail,
|
|
4989
|
+
detail: detail2,
|
|
4975
4990
|
bubbles: true,
|
|
4976
4991
|
composed: true,
|
|
4977
4992
|
...options
|
|
@@ -5435,7 +5450,7 @@ function openColorGridPopover(anchor, choose, options = {}) {
|
|
|
5435
5450
|
grid(
|
|
5436
5451
|
...THEME.map(([hex, name]) => swatch(hex, name)),
|
|
5437
5452
|
...[0, 1, 2, 3, 4].flatMap(
|
|
5438
|
-
(
|
|
5453
|
+
(row3) => THEME.map(([, name], column) => swatch(shades[column][row3], name))
|
|
5439
5454
|
)
|
|
5440
5455
|
),
|
|
5441
5456
|
title("Standard Colors"),
|
|
@@ -5807,10 +5822,10 @@ function openGallery(anchor, control, kind, commands) {
|
|
|
5807
5822
|
words.className = "gallery-words";
|
|
5808
5823
|
words.append(name);
|
|
5809
5824
|
if (look.detail) {
|
|
5810
|
-
const
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
words.append(
|
|
5825
|
+
const detail2 = document.createElement("span");
|
|
5826
|
+
detail2.className = "gallery-detail";
|
|
5827
|
+
detail2.textContent = look.detail;
|
|
5828
|
+
words.append(detail2);
|
|
5814
5829
|
}
|
|
5815
5830
|
item.append(look.thumb, words);
|
|
5816
5831
|
item.addEventListener("mousedown", (event) => event.preventDefault());
|
|
@@ -6505,8 +6520,8 @@ var languageOptions = [
|
|
|
6505
6520
|
["hi-IN", "Hindi (India)"],
|
|
6506
6521
|
["ru-RU", "Russian (Russia)"]
|
|
6507
6522
|
];
|
|
6508
|
-
function emit2(control,
|
|
6509
|
-
emit(control, "ribbon-action",
|
|
6523
|
+
function emit2(control, detail2) {
|
|
6524
|
+
emit(control, "ribbon-action", detail2);
|
|
6510
6525
|
}
|
|
6511
6526
|
function languageControl(label, key2) {
|
|
6512
6527
|
const wrapper = document.createElement("label");
|
|
@@ -7838,15 +7853,15 @@ function runStylesPlugin(getModel, getMode = () => "all") {
|
|
|
7838
7853
|
if (block.type.name !== "table") return;
|
|
7839
7854
|
const table = tables.get(String(block.attrs.id));
|
|
7840
7855
|
let columnCount = 1;
|
|
7841
|
-
block.forEach((
|
|
7856
|
+
block.forEach((row3) => {
|
|
7842
7857
|
let width = 0;
|
|
7843
|
-
|
|
7858
|
+
row3.forEach((cell) => width += Number(cell.attrs.colspan) || 1);
|
|
7844
7859
|
columnCount = Math.max(columnCount, width);
|
|
7845
7860
|
});
|
|
7846
|
-
block.forEach((
|
|
7861
|
+
block.forEach((row3, rowOffset, rowIndex) => {
|
|
7847
7862
|
let column = 0;
|
|
7848
7863
|
const rowStart = blockOffset + 1 + rowOffset + 1;
|
|
7849
|
-
|
|
7864
|
+
row3.forEach((cell, cellOffset) => {
|
|
7850
7865
|
const tableStyleRun = table?.style ? resolveTableStyleFormatting(
|
|
7851
7866
|
table.style,
|
|
7852
7867
|
model.tableStyles,
|
|
@@ -9206,7 +9221,7 @@ function readCellFill(ctx, state, scope) {
|
|
|
9206
9221
|
const fills = /* @__PURE__ */ new Set();
|
|
9207
9222
|
const table = state.doc.nodeAt(ctx.tablePos);
|
|
9208
9223
|
table?.forEach(
|
|
9209
|
-
(
|
|
9224
|
+
(row3, _offset, rowIndex) => row3.forEach((cell, _cellOffset, column) => {
|
|
9210
9225
|
if (scope === "cell" && (rowIndex < ctx.rect.top || rowIndex > ctx.rect.bottom || column < ctx.rect.left || column > ctx.rect.right))
|
|
9211
9226
|
return;
|
|
9212
9227
|
const fill = cell.attrs.shadingFill;
|
|
@@ -9221,7 +9236,7 @@ function applyCellFill(tr, ctx, scope, fill) {
|
|
|
9221
9236
|
const table = tr.doc.nodeAt(ctx.tablePos);
|
|
9222
9237
|
if (!table) return;
|
|
9223
9238
|
table.forEach(
|
|
9224
|
-
(
|
|
9239
|
+
(row3, rowOffset, rowIndex) => row3.forEach((cell, cellOffset, column) => {
|
|
9225
9240
|
if (scope === "cell" && (rowIndex < ctx.rect.top || rowIndex > ctx.rect.bottom || column < ctx.rect.left || column > ctx.rect.right))
|
|
9226
9241
|
return;
|
|
9227
9242
|
tr.setNodeMarkup(ctx.tablePos + 2 + rowOffset + cellOffset, void 0, {
|
|
@@ -9258,8 +9273,8 @@ function tableBorderContext(state) {
|
|
|
9258
9273
|
if (table.attrs.structureEditable === false) return null;
|
|
9259
9274
|
const tablePos = $from.before(depth);
|
|
9260
9275
|
const cells = [];
|
|
9261
|
-
table.forEach((
|
|
9262
|
-
|
|
9276
|
+
table.forEach((row3, rowOffset, rowIndex) => {
|
|
9277
|
+
row3.forEach((cell, cellOffset, column) => {
|
|
9263
9278
|
const pos = tablePos + 1 + rowOffset + 1 + cellOffset;
|
|
9264
9279
|
if (Math.max(from2, pos + 1) <= Math.min(to, pos + cell.nodeSize - 1))
|
|
9265
9280
|
cells.push({ pos, row: rowIndex, column, node: cell });
|
|
@@ -9283,11 +9298,11 @@ function tableBorderContext(state) {
|
|
|
9283
9298
|
}
|
|
9284
9299
|
function edgesOf(preset, rect) {
|
|
9285
9300
|
const edges = [];
|
|
9286
|
-
for (let
|
|
9301
|
+
for (let row3 = rect.top; row3 <= rect.bottom; row3++)
|
|
9287
9302
|
for (let column = rect.left; column <= rect.right; column++) {
|
|
9288
9303
|
const outside = {
|
|
9289
|
-
top:
|
|
9290
|
-
bottom:
|
|
9304
|
+
top: row3 === rect.top,
|
|
9305
|
+
bottom: row3 === rect.bottom,
|
|
9291
9306
|
left: column === rect.left,
|
|
9292
9307
|
right: column === rect.right
|
|
9293
9308
|
};
|
|
@@ -9295,13 +9310,13 @@ function edgesOf(preset, rect) {
|
|
|
9295
9310
|
const isOutside = outside[side];
|
|
9296
9311
|
const horizontal = side === "top" || side === "bottom";
|
|
9297
9312
|
const wanted = preset === "all" || preset === "outside" && isOutside || preset === "insideH" && horizontal && !isOutside || preset === "insideV" && !horizontal && !isOutside || preset === side && isOutside;
|
|
9298
|
-
if (wanted) edges.push({ row:
|
|
9313
|
+
if (wanted) edges.push({ row: row3, column, side });
|
|
9299
9314
|
}
|
|
9300
9315
|
}
|
|
9301
9316
|
return edges;
|
|
9302
9317
|
}
|
|
9303
|
-
var current = (ctx, state,
|
|
9304
|
-
const cell = state.doc.nodeAt(ctx.tablePos)?.child(
|
|
9318
|
+
var current = (ctx, state, row3, column) => {
|
|
9319
|
+
const cell = state.doc.nodeAt(ctx.tablePos)?.child(row3).child(column);
|
|
9305
9320
|
return parse2(cell?.attrs.borders);
|
|
9306
9321
|
};
|
|
9307
9322
|
function applyEdits(view, ctx, edits, shading) {
|
|
@@ -9326,9 +9341,9 @@ function applyEdits(view, ctx, edits, shading) {
|
|
|
9326
9341
|
edit
|
|
9327
9342
|
]);
|
|
9328
9343
|
let rowOffset = ctx.tablePos + 1;
|
|
9329
|
-
table.forEach((
|
|
9344
|
+
table.forEach((row3, _offset, rowIndex) => {
|
|
9330
9345
|
let cellPos = rowOffset + 1;
|
|
9331
|
-
|
|
9346
|
+
row3.forEach((cell, _cellOffset, column) => {
|
|
9332
9347
|
const group3 = grouped.get(`${rowIndex}:${column}`);
|
|
9333
9348
|
if (group3) {
|
|
9334
9349
|
const visual = parse2(cell.attrs.borders);
|
|
@@ -9350,7 +9365,7 @@ function applyEdits(view, ctx, edits, shading) {
|
|
|
9350
9365
|
}
|
|
9351
9366
|
cellPos += cell.nodeSize;
|
|
9352
9367
|
});
|
|
9353
|
-
rowOffset +=
|
|
9368
|
+
rowOffset += row3.nodeSize;
|
|
9354
9369
|
});
|
|
9355
9370
|
if (shading) applyCellFill(tr, ctx, shading.scope, shading.fill);
|
|
9356
9371
|
if (!tr.docChanged) return false;
|
|
@@ -10129,9 +10144,9 @@ function paragraphElement(paragraph2, values2) {
|
|
|
10129
10144
|
function blockElement(block, values2) {
|
|
10130
10145
|
if (block.type === "paragraph") return paragraphElement(block, values2);
|
|
10131
10146
|
const table = document.createElement("table");
|
|
10132
|
-
for (const
|
|
10147
|
+
for (const row3 of block.rows) {
|
|
10133
10148
|
const tr = document.createElement("tr");
|
|
10134
|
-
for (const cell of
|
|
10149
|
+
for (const cell of row3) {
|
|
10135
10150
|
const td = document.createElement("td");
|
|
10136
10151
|
if (cell.gridSpan && cell.gridSpan > 1) td.colSpan = cell.gridSpan;
|
|
10137
10152
|
for (const paragraph2 of cell.paragraphs) td.append(paragraphElement(paragraph2, values2));
|
|
@@ -10150,7 +10165,7 @@ function renderHeaderFooter(content, values2, kind) {
|
|
|
10150
10165
|
}
|
|
10151
10166
|
function floatingPictures(content, page2, anchorTopPx, values2) {
|
|
10152
10167
|
const paragraphs = content.blocks.flatMap(
|
|
10153
|
-
(block) => block.type === "paragraph" ? [block] : block.rows.flatMap((
|
|
10168
|
+
(block) => block.type === "paragraph" ? [block] : block.rows.flatMap((row3) => row3.flatMap((cell) => cell.paragraphs))
|
|
10154
10169
|
);
|
|
10155
10170
|
const column = { xPx: 0, widthPx: page2.widthPx - page2.marginLeftPx - page2.marginRightPx };
|
|
10156
10171
|
return paragraphs.flatMap(
|
|
@@ -11028,10 +11043,10 @@ function tablePropertiesContext(state) {
|
|
|
11028
11043
|
const rows = [];
|
|
11029
11044
|
const cells = [];
|
|
11030
11045
|
let pos = $from.start(depth);
|
|
11031
|
-
table.forEach((
|
|
11046
|
+
table.forEach((row3, offset, index) => {
|
|
11032
11047
|
if (index >= $from.index(depth) && index <= $to.index(depth))
|
|
11033
|
-
rows.push({ pos: pos + offset, properties:
|
|
11034
|
-
|
|
11048
|
+
rows.push({ pos: pos + offset, properties: row3.attrs.properties ?? {} });
|
|
11049
|
+
row3.forEach((cell, cellOffset) => {
|
|
11035
11050
|
const cellPos = pos + offset + 1 + cellOffset;
|
|
11036
11051
|
if (Math.max(state.selection.from, cellPos + 1) <= Math.min(state.selection.to, cellPos + cell.nodeSize - 1))
|
|
11037
11052
|
cells.push({
|
|
@@ -11057,12 +11072,12 @@ function applyTableProperties(view, rowPatch, marginPatch, cellMarginPatch, cell
|
|
|
11057
11072
|
if (!Object.keys(rowPatch).length && !Object.keys(marginPatch).length && cellMarginPatch === void 0 && cellAlignment === void 0)
|
|
11058
11073
|
return true;
|
|
11059
11074
|
const tr = closeHistory(view.state.tr);
|
|
11060
|
-
for (const
|
|
11061
|
-
const node = tr.doc.nodeAt(
|
|
11062
|
-
const properties = { ...
|
|
11075
|
+
for (const row3 of context2.rows) {
|
|
11076
|
+
const node = tr.doc.nodeAt(row3.pos);
|
|
11077
|
+
const properties = { ...row3.properties, ...rowPatch };
|
|
11063
11078
|
for (const key2 of Object.keys(properties))
|
|
11064
11079
|
if (properties[key2] === void 0) delete properties[key2];
|
|
11065
|
-
tr.setNodeMarkup(
|
|
11080
|
+
tr.setNodeMarkup(row3.pos, void 0, {
|
|
11066
11081
|
...node.attrs,
|
|
11067
11082
|
properties,
|
|
11068
11083
|
heightPx: properties.heightTwips ? properties.heightTwips / 15 : null
|
|
@@ -11222,7 +11237,7 @@ function createTablePropertiesDialog(viewOf) {
|
|
|
11222
11237
|
element.replaceChildren(...content);
|
|
11223
11238
|
localizeDialog(element, locale);
|
|
11224
11239
|
const common = (read) => {
|
|
11225
|
-
const values2 = context2.rows.map((
|
|
11240
|
+
const values2 = context2.rows.map((row3) => read(row3.properties));
|
|
11226
11241
|
return values2.every((value) => value === values2[0]) ? values2[0] : null;
|
|
11227
11242
|
};
|
|
11228
11243
|
setTriState(
|
|
@@ -12330,13 +12345,13 @@ function syncFormatControls(toolbar, state) {
|
|
|
12330
12345
|
});
|
|
12331
12346
|
if (!found) addMarks(state.selection.$from.marks());
|
|
12332
12347
|
}
|
|
12333
|
-
const
|
|
12348
|
+
const labels3 = {
|
|
12334
12349
|
bold: "Bold",
|
|
12335
12350
|
italic: "Italic",
|
|
12336
12351
|
underline: "Underline",
|
|
12337
12352
|
strike: "Strikethrough"
|
|
12338
12353
|
};
|
|
12339
|
-
for (const [key2, label] of Object.entries(
|
|
12354
|
+
for (const [key2, label] of Object.entries(labels3)) {
|
|
12340
12355
|
const values2 = marked.get(key2);
|
|
12341
12356
|
findLocalizedControl(toolbar, label)?.setAttribute(
|
|
12342
12357
|
"aria-pressed",
|
|
@@ -12958,7 +12973,7 @@ function paragraphStylesPlugin(getModel, getMode = () => "all") {
|
|
|
12958
12973
|
state.doc.descendants((node) => {
|
|
12959
12974
|
if (node.type.name === "paragraph") paragraphs.push(displayParagraph(node, mode).value);
|
|
12960
12975
|
});
|
|
12961
|
-
const
|
|
12976
|
+
const labels3 = computeListLabels({ ...model, blocks: paragraphs });
|
|
12962
12977
|
const decorations2 = [];
|
|
12963
12978
|
state.doc.descendants((node, pos) => {
|
|
12964
12979
|
if (node.type.name !== "paragraph") return;
|
|
@@ -12966,7 +12981,7 @@ function paragraphStylesPlugin(getModel, getMode = () => "all") {
|
|
|
12966
12981
|
const paragraph2 = projected.value;
|
|
12967
12982
|
const reset = mode === "original" && node.attrs.formatRevision && !projected.error ? `${ORIGINAL_PARAGRAPH_RESET};` : "";
|
|
12968
12983
|
const effective = catalog ? resolveParagraphFormatting(paragraph2, catalog) : paragraph2;
|
|
12969
|
-
const label =
|
|
12984
|
+
const label = labels3.get(String(node.attrs.id));
|
|
12970
12985
|
const marker = listMarkerDisplay(
|
|
12971
12986
|
node,
|
|
12972
12987
|
{ ...paragraph2, ...effective },
|
|
@@ -13009,8 +13024,8 @@ function context(view) {
|
|
|
13009
13024
|
const table = $from.node(tableDepth);
|
|
13010
13025
|
const width = table.childCount ? table.child(0).childCount : 0;
|
|
13011
13026
|
if (!width || table.childCount < 1) return null;
|
|
13012
|
-
for (let
|
|
13013
|
-
if (table.child(
|
|
13027
|
+
for (let row3 = 0; row3 < table.childCount; row3++)
|
|
13028
|
+
if (table.child(row3).childCount !== width) return null;
|
|
13014
13029
|
return {
|
|
13015
13030
|
table,
|
|
13016
13031
|
tablePos: $from.before(tableDepth),
|
|
@@ -13100,9 +13115,9 @@ function executeTableCommand(view, action) {
|
|
|
13100
13115
|
view,
|
|
13101
13116
|
ctx,
|
|
13102
13117
|
rows.map(
|
|
13103
|
-
(
|
|
13118
|
+
(row3) => row3.copy(
|
|
13104
13119
|
Fragment.fromArray(
|
|
13105
|
-
Array.from({ length:
|
|
13120
|
+
Array.from({ length: row3.childCount }, (_, index) => row3.child(index)).filter(
|
|
13106
13121
|
(_, index) => index !== ctx.columnIndex
|
|
13107
13122
|
)
|
|
13108
13123
|
)
|
|
@@ -13115,10 +13130,10 @@ function executeTableCommand(view, action) {
|
|
|
13115
13130
|
replacedTable(
|
|
13116
13131
|
view,
|
|
13117
13132
|
ctx,
|
|
13118
|
-
rows.map((
|
|
13119
|
-
const cells = Array.from({ length:
|
|
13133
|
+
rows.map((row3) => {
|
|
13134
|
+
const cells = Array.from({ length: row3.childCount }, (_, index) => row3.child(index));
|
|
13120
13135
|
cells.splice(at, 0, emptyCell(nextId));
|
|
13121
|
-
return
|
|
13136
|
+
return row3.copy(Fragment.fromArray(cells));
|
|
13122
13137
|
})
|
|
13123
13138
|
);
|
|
13124
13139
|
return true;
|
|
@@ -13256,13 +13271,6 @@ function markerPositions(geometry) {
|
|
|
13256
13271
|
right: geometry.pageWidth - geometry.marginRight - geometry.indentRight
|
|
13257
13272
|
};
|
|
13258
13273
|
}
|
|
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
13274
|
function markerChange(marker, x, geometry) {
|
|
13267
13275
|
const snap = (px2) => Math.round(px2 / SNAP_PX) * SNAP_PX;
|
|
13268
13276
|
const inches3 = (px2) => Math.round(px2 / PX_PER_INCH * 1e3) / 1e3;
|
|
@@ -13289,87 +13297,52 @@ function markerChange(marker, x, geometry) {
|
|
|
13289
13297
|
}
|
|
13290
13298
|
var SNAP_PX = PX_PER_INCH / 16;
|
|
13291
13299
|
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
|
-
}
|
|
13300
|
+
function previewGeometry(marker, x, geometry) {
|
|
13301
|
+
const preview = markerChange(marker, x, geometry);
|
|
13302
|
+
const shifted = { ...geometry };
|
|
13303
|
+
if (preview.leftInches !== void 0) shifted.indentLeft = preview.leftInches * PX_PER_INCH;
|
|
13304
|
+
if (preview.rightInches !== void 0) shifted.indentRight = preview.rightInches * PX_PER_INCH;
|
|
13305
|
+
if (preview.special)
|
|
13306
|
+
shifted.firstLine = (preview.special === "hanging" ? -1 : 1) * (preview.specialInches ?? 0) * PX_PER_INCH;
|
|
13307
|
+
return shifted;
|
|
13323
13308
|
}
|
|
13324
13309
|
function paintMarkers(ruler, geometry) {
|
|
13325
13310
|
const positions = markerPositions(geometry);
|
|
13326
|
-
|
|
13327
|
-
|
|
13328
|
-
|
|
13329
|
-
|
|
13311
|
+
ruler.markers = [
|
|
13312
|
+
{ name: "first-line", position: positions.firstLine, edge: "top" },
|
|
13313
|
+
{ name: "left", position: positions.left },
|
|
13314
|
+
{ name: "right", position: positions.right }
|
|
13315
|
+
];
|
|
13330
13316
|
}
|
|
13331
13317
|
function createRuler(onChange) {
|
|
13332
|
-
|
|
13318
|
+
defineRuler();
|
|
13319
|
+
const ruler = document.createElement("office-ui-ruler");
|
|
13333
13320
|
ruler.className = "dve-ruler";
|
|
13334
|
-
ruler.
|
|
13335
|
-
ruler.
|
|
13336
|
-
|
|
13337
|
-
|
|
13338
|
-
|
|
13339
|
-
|
|
13340
|
-
|
|
13341
|
-
|
|
13342
|
-
|
|
13343
|
-
|
|
13344
|
-
|
|
13345
|
-
|
|
13346
|
-
|
|
13321
|
+
ruler.label = "Ruler";
|
|
13322
|
+
ruler.labelsWithinMargins = true;
|
|
13323
|
+
const detail2 = (event) => event.detail;
|
|
13324
|
+
const marker = (event) => detail2(event).name;
|
|
13325
|
+
ruler.addEventListener("ruler-marker-move", (event) => {
|
|
13326
|
+
const geometry = geometries.get(ruler);
|
|
13327
|
+
if (geometry)
|
|
13328
|
+
paintMarkers(ruler, previewGeometry(marker(event), detail2(event).position, geometry));
|
|
13329
|
+
});
|
|
13330
|
+
ruler.addEventListener("ruler-marker-commit", (event) => {
|
|
13331
|
+
const geometry = geometries.get(ruler);
|
|
13332
|
+
if (geometry) onChange?.(markerChange(marker(event), detail2(event).position, geometry));
|
|
13333
|
+
});
|
|
13334
|
+
ruler.addEventListener("ruler-marker-cancel", () => onChange?.({}));
|
|
13347
13335
|
return ruler;
|
|
13348
13336
|
}
|
|
13349
13337
|
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`;
|
|
13338
|
+
const element = ruler;
|
|
13358
13339
|
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
|
-
}
|
|
13340
|
+
element.extent = geometry.pageWidth;
|
|
13341
|
+
element.zoom = zoom;
|
|
13342
|
+
element.origin = geometry.marginLeft;
|
|
13343
|
+
element.marginStart = geometry.marginLeft;
|
|
13344
|
+
element.marginEnd = geometry.marginRight;
|
|
13345
|
+
paintMarkers(element, geometry);
|
|
13373
13346
|
}
|
|
13374
13347
|
|
|
13375
13348
|
// src/docx/ruler-sync.ts
|
|
@@ -13445,9 +13418,9 @@ function refreshEditorControls(toolbar, view, model, readOnly, collaboration, lo
|
|
|
13445
13418
|
syncParagraphToggles(toolbar, view, model);
|
|
13446
13419
|
syncContextualTabs(toolbar, state);
|
|
13447
13420
|
syncRuler(toolbar, view, model);
|
|
13448
|
-
const trackButton = toolbar
|
|
13421
|
+
const trackButton = findLocalizedControl(toolbar, "Track changes");
|
|
13449
13422
|
trackButton?.setAttribute("aria-pressed", String(Boolean(model.trackChanges)));
|
|
13450
|
-
const commentsButton = toolbar
|
|
13423
|
+
const commentsButton = findLocalizedControl(toolbar, "Comments");
|
|
13451
13424
|
commentsButton?.setAttribute("aria-pressed", String(commentsOpen));
|
|
13452
13425
|
const changeAtCursor = hasChangeAtCursor(view);
|
|
13453
13426
|
const anyChange = hasAnyChange(view);
|
|
@@ -13467,9 +13440,7 @@ function refreshEditorControls(toolbar, view, model, readOnly, collaboration, lo
|
|
|
13467
13440
|
state.selection instanceof NodeSelection && state.selection.node.type.name === "image"
|
|
13468
13441
|
]
|
|
13469
13442
|
]) {
|
|
13470
|
-
const control = toolbar
|
|
13471
|
-
`[data-localearialabel="${label}"], [aria-label="${label}"]`
|
|
13472
|
-
);
|
|
13443
|
+
const control = findLocalizedControl(toolbar, label);
|
|
13473
13444
|
if (control) control.disabled = readOnly || !enabled;
|
|
13474
13445
|
}
|
|
13475
13446
|
}
|
|
@@ -14001,6 +13972,10 @@ function imageNodeView(cache, options = {}) {
|
|
|
14001
13972
|
return (node, view, getPos) => {
|
|
14002
13973
|
const diagram = parseDiagram(node.attrs.diagram);
|
|
14003
13974
|
if (diagram) return smartArtNodeView(node, diagram, options.theme?.());
|
|
13975
|
+
if (node.attrs.chart) {
|
|
13976
|
+
const spec = chartNodeSpec(node, options.theme?.());
|
|
13977
|
+
return { dom: DOMSerializer.renderSpec(document, spec).dom, ignoreMutation: () => true };
|
|
13978
|
+
}
|
|
14004
13979
|
const content = renderSpec(node);
|
|
14005
13980
|
if (content.tagName !== "IMG") return { dom: content, ignoreMutation: () => true };
|
|
14006
13981
|
const refresh = () => {
|
|
@@ -14340,7 +14315,7 @@ function refreshPreviewScaleWithFonts(element, text, formatting, family) {
|
|
|
14340
14315
|
// src/docx/preview-run-styles.ts
|
|
14341
14316
|
function stylePreviewRuns(element, block, model, serializer, mode = "all") {
|
|
14342
14317
|
const measurer = scaleMeasurer();
|
|
14343
|
-
const paragraphs = block.type === "paragraph" ? [block] : block.rows.flatMap((
|
|
14318
|
+
const paragraphs = block.type === "paragraph" ? [block] : block.rows.flatMap((row3) => row3.flatMap((cell) => cell.paragraphs));
|
|
14344
14319
|
const elements = block.type === "paragraph" ? [element] : [...element.querySelectorAll("p")];
|
|
14345
14320
|
paragraphs.forEach((current2, index) => {
|
|
14346
14321
|
const target = elements[index];
|
|
@@ -14417,10 +14392,10 @@ function blockNode(block) {
|
|
|
14417
14392
|
return schema.node("paragraph", paragraphAttrs(block), children);
|
|
14418
14393
|
}
|
|
14419
14394
|
const rows = block.rows.map(
|
|
14420
|
-
(
|
|
14395
|
+
(row3) => schema.node(
|
|
14421
14396
|
"tableRow",
|
|
14422
14397
|
null,
|
|
14423
|
-
|
|
14398
|
+
row3.map(
|
|
14424
14399
|
(cell) => schema.node(
|
|
14425
14400
|
"tableCell",
|
|
14426
14401
|
null,
|
|
@@ -16060,8 +16035,8 @@ var InsertController = class {
|
|
|
16060
16035
|
if (action.key === "figures")
|
|
16061
16036
|
insertTableOfContents(view, this.host.model(), void 0, 3, action.label ?? "Figure");
|
|
16062
16037
|
else if (action.key === "updateFigures") {
|
|
16063
|
-
const
|
|
16064
|
-
const updated =
|
|
16038
|
+
const labels3 = action.label ? [action.label] : ["Figure", "Table", "Equation"];
|
|
16039
|
+
const updated = labels3.filter(
|
|
16065
16040
|
(label) => updateTableOfContents(view, this.host.model(), void 0, label)
|
|
16066
16041
|
);
|
|
16067
16042
|
if (!updated.length)
|
|
@@ -16441,6 +16416,7 @@ var EditorCore = class {
|
|
|
16441
16416
|
);
|
|
16442
16417
|
const { searchPanel, printLayout, review, chrome, toolbar } = this.shell;
|
|
16443
16418
|
searchPanel?.refresh();
|
|
16419
|
+
if (review?.commentsOpen) review.commentsPanel.refresh();
|
|
16444
16420
|
if (this.pages.viewMode === "print") printLayout?.refreshCurrentPage();
|
|
16445
16421
|
const status = refreshEditorControls(
|
|
16446
16422
|
toolbar,
|
|
@@ -16499,7 +16475,7 @@ var ribbon_polish_default = "/* Ribbon polish: distinct pressed state and Word's
|
|
|
16499
16475
|
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
16476
|
|
|
16501
16477
|
// 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";
|
|
16478
|
+
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
16479
|
|
|
16504
16480
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/chrome-titlebar.css?raw
|
|
16505
16481
|
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 and style the account slot. */\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.dve-title-actions {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n.dve-mode-select {\n height: 28px;\n margin-left: 4px;\n padding: 0 6px;\n border: 1px solid var(--line);\n border-radius: 4px;\n background: var(--surface);\n color: var(--ink);\n font: inherit;\n}\n";
|
|
@@ -16511,7 +16487,7 @@ var backstage_default = "/* Backstage: the shared office-ui-backstage draws the
|
|
|
16511
16487
|
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
16488
|
|
|
16513
16489
|
// 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:
|
|
16490
|
+
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
16491
|
|
|
16516
16492
|
// raw-css:/home/runner/work/ooxml/ooxml/src/ui/src/docx/styles/page-navigator.css?raw
|
|
16517
16493
|
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 +16862,10 @@ function createSearchPanel(options, initialLocale = "en") {
|
|
|
16886
16862
|
|
|
16887
16863
|
// src/docx/print-table.ts
|
|
16888
16864
|
var cssBorder = (border) => border ? `${border.widthPx}px ${border.style} ${border.color}` : "";
|
|
16889
|
-
function geometryOf(
|
|
16890
|
-
const given =
|
|
16865
|
+
function geometryOf(row3, index, widthPx) {
|
|
16866
|
+
const given = row3.geometry?.[index];
|
|
16891
16867
|
if (given) return given;
|
|
16892
|
-
const share = widthPx / Math.max(1,
|
|
16868
|
+
const share = widthPx / Math.max(1, row3.cells.length);
|
|
16893
16869
|
return {
|
|
16894
16870
|
xPx: share * index,
|
|
16895
16871
|
widthPx: share,
|
|
@@ -16904,31 +16880,31 @@ function renderTable(box2, columnWidthPx, renderParagraph) {
|
|
|
16904
16880
|
table.style.top = `${box2.yPx}px`;
|
|
16905
16881
|
table.style.height = `${box2.heightPx}px`;
|
|
16906
16882
|
if (box2.xPx) table.style.left = `${box2.xPx}px`;
|
|
16907
|
-
box2.rows.forEach((
|
|
16883
|
+
box2.rows.forEach((row3, rowIndex) => {
|
|
16908
16884
|
const rowEl = document.createElement("div");
|
|
16909
16885
|
rowEl.className = "dve-print-row";
|
|
16910
|
-
rowEl.style.top = `${
|
|
16911
|
-
rowEl.style.height = `${
|
|
16912
|
-
if (
|
|
16886
|
+
rowEl.style.top = `${row3.yPx}px`;
|
|
16887
|
+
rowEl.style.height = `${row3.heightPx}px`;
|
|
16888
|
+
if (row3.repeated) rowEl.dataset.repeated = "true";
|
|
16913
16889
|
const lastRow = rowIndex === box2.rows.length - 1;
|
|
16914
|
-
|
|
16915
|
-
const geometry = geometryOf(
|
|
16890
|
+
row3.cells.forEach((paragraphs, cellIndex) => {
|
|
16891
|
+
const geometry = geometryOf(row3, cellIndex, columnWidthPx);
|
|
16916
16892
|
const cell = document.createElement("div");
|
|
16917
16893
|
cell.className = "dve-print-cell";
|
|
16918
16894
|
Object.assign(cell.style, {
|
|
16919
16895
|
left: `${geometry.xPx}px`,
|
|
16920
16896
|
width: `${geometry.widthPx}px`,
|
|
16921
|
-
height: `${
|
|
16897
|
+
height: `${row3.heightPx}px`
|
|
16922
16898
|
});
|
|
16923
16899
|
if (geometry.shading) cell.style.background = geometry.shading;
|
|
16924
16900
|
const borders = geometry.borders;
|
|
16925
16901
|
cell.style.borderTop = cssBorder(borders?.top);
|
|
16926
16902
|
cell.style.borderLeft = cssBorder(borders?.left);
|
|
16927
|
-
if (cellIndex ===
|
|
16903
|
+
if (cellIndex === row3.cells.length - 1) cell.style.borderRight = cssBorder(borders?.right);
|
|
16928
16904
|
if (lastRow) cell.style.borderBottom = cssBorder(borders?.bottom);
|
|
16929
16905
|
const content = document.createElement("div");
|
|
16930
16906
|
content.className = "dve-print-cell-content";
|
|
16931
|
-
const free = Math.max(0,
|
|
16907
|
+
const free = Math.max(0, row3.heightPx - geometry.contentHeightPx);
|
|
16932
16908
|
const offset = geometry.verticalAlign === "center" ? free / 2 : geometry.verticalAlign === "bottom" ? free : 0;
|
|
16933
16909
|
Object.assign(content.style, {
|
|
16934
16910
|
left: `${geometry.paddingLeftPx}px`,
|
|
@@ -16950,7 +16926,7 @@ function lineNumberLabels(page2, settings, counter3, suppressed) {
|
|
|
16950
16926
|
if (counter3.section === -1 || settings.restart === "newPage" || newSection && settings.restart === "newSection")
|
|
16951
16927
|
counter3.next = settings.start;
|
|
16952
16928
|
counter3.section = page2.sectionIndex;
|
|
16953
|
-
const
|
|
16929
|
+
const labels3 = [];
|
|
16954
16930
|
const gap = (settings.distanceTwips ?? 360) / 15;
|
|
16955
16931
|
for (const column of page2.columns)
|
|
16956
16932
|
for (const block of column.blocks) {
|
|
@@ -16967,10 +16943,10 @@ function lineNumberLabels(page2, settings, counter3, suppressed) {
|
|
|
16967
16943
|
height: `${line.heightPx}px`,
|
|
16968
16944
|
lineHeight: `${line.heightPx}px`
|
|
16969
16945
|
});
|
|
16970
|
-
|
|
16946
|
+
labels3.push(label);
|
|
16971
16947
|
}
|
|
16972
16948
|
}
|
|
16973
|
-
return
|
|
16949
|
+
return labels3;
|
|
16974
16950
|
}
|
|
16975
16951
|
var POINT = 4 / 3;
|
|
16976
16952
|
function pageBorderBox(page2, borders) {
|
|
@@ -17064,8 +17040,30 @@ function resolveFragmentClick(fragments, clientX) {
|
|
|
17064
17040
|
return start + Math.round((end - start) * ratio);
|
|
17065
17041
|
}
|
|
17066
17042
|
|
|
17067
|
-
// src/docx/print-
|
|
17043
|
+
// src/docx/print-picture.ts
|
|
17044
|
+
function chartElement(chart) {
|
|
17045
|
+
const element = document.createElement("div");
|
|
17046
|
+
element.dataset.docxChart = chart.svg ? "1" : "frame";
|
|
17047
|
+
const svg = chart.svg ? new DOMParser().parseFromString(chart.svg, "image/svg+xml").documentElement : void 0;
|
|
17048
|
+
if (svg && svg.localName === "svg") {
|
|
17049
|
+
element.classList.add("dve-print-chart");
|
|
17050
|
+
element.title = chart.label;
|
|
17051
|
+
element.append(document.importNode(svg, true));
|
|
17052
|
+
} else {
|
|
17053
|
+
element.classList.add("dve-print-picture-missing", "dve-print-chart-frame");
|
|
17054
|
+
element.textContent = chart.label;
|
|
17055
|
+
}
|
|
17056
|
+
return element;
|
|
17057
|
+
}
|
|
17068
17058
|
function pictureElement(object, pictureUrl) {
|
|
17059
|
+
if (object.chart) {
|
|
17060
|
+
const element2 = chartElement(object.chart);
|
|
17061
|
+
element2.classList.add("dve-print-picture");
|
|
17062
|
+
element2.style.position = "absolute";
|
|
17063
|
+
element2.style.width = `${object.widthPx}px`;
|
|
17064
|
+
element2.style.height = `${object.heightPx}px`;
|
|
17065
|
+
return element2;
|
|
17066
|
+
}
|
|
17069
17067
|
const url = object.partName ? pictureUrl?.(object.partName, object.contentType) : void 0;
|
|
17070
17068
|
const element = document.createElement(url ? "img" : "div");
|
|
17071
17069
|
if (url) {
|
|
@@ -17078,6 +17076,8 @@ function pictureElement(object, pictureUrl) {
|
|
|
17078
17076
|
element.style.height = `${object.heightPx}px`;
|
|
17079
17077
|
return element;
|
|
17080
17078
|
}
|
|
17079
|
+
|
|
17080
|
+
// src/docx/print-layout.ts
|
|
17081
17081
|
var LEADER_CHARACTERS = { dot: ".", hyphen: "-", middleDot: "\xB7" };
|
|
17082
17082
|
function leaderElement(fragment) {
|
|
17083
17083
|
const el = document.createElement("span");
|
|
@@ -17461,107 +17461,70 @@ function moveCursorToBlock(view, blockId, offset) {
|
|
|
17461
17461
|
}
|
|
17462
17462
|
|
|
17463
17463
|
// src/docx/comments-panel.ts
|
|
17464
|
-
|
|
17465
|
-
|
|
17466
|
-
|
|
17467
|
-
|
|
17468
|
-
|
|
17469
|
-
|
|
17470
|
-
|
|
17471
|
-
|
|
17472
|
-
|
|
17473
|
-
|
|
17474
|
-
|
|
17475
|
-
|
|
17476
|
-
|
|
17477
|
-
|
|
17478
|
-
|
|
17479
|
-
|
|
17480
|
-
|
|
17481
|
-
|
|
17482
|
-
|
|
17483
|
-
|
|
17484
|
-
|
|
17485
|
-
|
|
17486
|
-
|
|
17487
|
-
|
|
17488
|
-
|
|
17489
|
-
|
|
17490
|
-
|
|
17491
|
-
|
|
17492
|
-
|
|
17493
|
-
|
|
17494
|
-
|
|
17495
|
-
|
|
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;
|
|
17464
|
+
function wordCommentThreads(comments) {
|
|
17465
|
+
const entry = (comment) => ({
|
|
17466
|
+
id: comment.id,
|
|
17467
|
+
author: comment.author,
|
|
17468
|
+
text: comment.text,
|
|
17469
|
+
...comment.initials ? { initials: comment.initials } : {},
|
|
17470
|
+
...comment.date ? { created: comment.date } : {}
|
|
17471
|
+
});
|
|
17472
|
+
return comments.filter((comment) => !comment.parentId).map((comment) => ({
|
|
17473
|
+
id: comment.id,
|
|
17474
|
+
resolved: Boolean(comment.resolved),
|
|
17475
|
+
comments: [
|
|
17476
|
+
entry(comment),
|
|
17477
|
+
...comments.filter((reply) => reply.parentId === comment.id).map(entry)
|
|
17478
|
+
]
|
|
17479
|
+
}));
|
|
17480
|
+
}
|
|
17481
|
+
function labels2(locale) {
|
|
17482
|
+
const t = (key2) => translate(locale, key2);
|
|
17483
|
+
return {
|
|
17484
|
+
heading: t("Comments"),
|
|
17485
|
+
list: t("Comments"),
|
|
17486
|
+
close: t("Close comments"),
|
|
17487
|
+
newComment: t("New comment"),
|
|
17488
|
+
add: t("Add comment"),
|
|
17489
|
+
reply: t("Reply"),
|
|
17490
|
+
resolve: t("Resolve"),
|
|
17491
|
+
reopen: t("Reopen"),
|
|
17492
|
+
resolved: t("Resolved"),
|
|
17493
|
+
delete: t("Delete"),
|
|
17494
|
+
empty: t("No comments")
|
|
17495
|
+
};
|
|
17531
17496
|
}
|
|
17497
|
+
var detail = (event) => event.detail;
|
|
17532
17498
|
function createCommentsPanel(options) {
|
|
17533
17499
|
let locale = "en";
|
|
17534
|
-
|
|
17500
|
+
defineCommentsPane();
|
|
17501
|
+
const panel = document.createElement("office-ui-comments-pane");
|
|
17535
17502
|
panel.className = "dve-comments-panel";
|
|
17536
17503
|
panel.setAttribute("role", "complementary");
|
|
17537
17504
|
panel.setAttribute("aria-label", translate(locale, "Comments"));
|
|
17538
17505
|
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 = "";
|
|
17506
|
+
panel.closable = true;
|
|
17507
|
+
panel.classNames = { thread: "dve-comment-card", comment: "dve-comment-thread" };
|
|
17508
|
+
panel.labels = labels2(locale);
|
|
17509
|
+
panel.addEventListener("comment-add", (event) => {
|
|
17510
|
+
options.onAdd(detail(event).text);
|
|
17560
17511
|
refresh();
|
|
17561
17512
|
});
|
|
17562
|
-
|
|
17563
|
-
|
|
17564
|
-
|
|
17513
|
+
panel.addEventListener(
|
|
17514
|
+
"comment-reply",
|
|
17515
|
+
(event) => options.onReply(detail(event).threadId, detail(event).text)
|
|
17516
|
+
);
|
|
17517
|
+
panel.addEventListener(
|
|
17518
|
+
"thread-resolve",
|
|
17519
|
+
(event) => options.onResolve(detail(event).threadId, true)
|
|
17520
|
+
);
|
|
17521
|
+
panel.addEventListener(
|
|
17522
|
+
"thread-reopen",
|
|
17523
|
+
(event) => options.onResolve(detail(event).threadId, false)
|
|
17524
|
+
);
|
|
17525
|
+
panel.addEventListener("comment-delete", (event) => options.onDelete(detail(event).commentId));
|
|
17526
|
+
panel.addEventListener("thread-select", (event) => options.onSelect?.(detail(event).threadId));
|
|
17527
|
+
panel.addEventListener("comments-close", () => close3());
|
|
17565
17528
|
let isOpen = false;
|
|
17566
17529
|
function close3() {
|
|
17567
17530
|
isOpen = false;
|
|
@@ -17569,24 +17532,11 @@ function createCommentsPanel(options) {
|
|
|
17569
17532
|
options.onClose?.();
|
|
17570
17533
|
}
|
|
17571
17534
|
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
|
-
}
|
|
17535
|
+
panel.readOnly = !(options.canEdit?.() ?? true);
|
|
17536
|
+
panel.addDisabled = !options.canAdd();
|
|
17537
|
+
panel.activeThreadId = options.activeId?.() ?? null;
|
|
17538
|
+
panel.threads = wordCommentThreads(options.getModel().comments ?? []);
|
|
17588
17539
|
}
|
|
17589
|
-
localizeElement(panel, locale);
|
|
17590
17540
|
refresh();
|
|
17591
17541
|
return {
|
|
17592
17542
|
element: panel,
|
|
@@ -17602,13 +17552,9 @@ function createCommentsPanel(options) {
|
|
|
17602
17552
|
refresh,
|
|
17603
17553
|
setLocale(value) {
|
|
17604
17554
|
locale = normalizeEditorLocale(value);
|
|
17605
|
-
heading2.textContent = translate(locale, "Comments");
|
|
17606
17555
|
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");
|
|
17556
|
+
panel.labels = labels2(locale);
|
|
17557
|
+
panel.locale = locale;
|
|
17612
17558
|
refresh();
|
|
17613
17559
|
}
|
|
17614
17560
|
};
|
|
@@ -17625,6 +17571,11 @@ var ReviewController = class {
|
|
|
17625
17571
|
const view = host.getView();
|
|
17626
17572
|
return Boolean(host.canEditComments() && view && !view.state.selection.empty);
|
|
17627
17573
|
},
|
|
17574
|
+
activeId: () => {
|
|
17575
|
+
const view = host.getView();
|
|
17576
|
+
return view ? commentIdsAtSelection(view)[0] : void 0;
|
|
17577
|
+
},
|
|
17578
|
+
onSelect: (id) => this.goToAnchor(id),
|
|
17628
17579
|
onAdd: (text) => this.addComment(text),
|
|
17629
17580
|
onReply: (parentId, text) => {
|
|
17630
17581
|
if (!host.canEditComments()) return;
|
|
@@ -17664,6 +17615,15 @@ var ReviewController = class {
|
|
|
17664
17615
|
setLocale(locale) {
|
|
17665
17616
|
this.commentsPanel.setLocale(locale);
|
|
17666
17617
|
}
|
|
17618
|
+
/** Moves the caret to the start of a thread's anchored text (the pane keeps focus). */
|
|
17619
|
+
goToAnchor(id) {
|
|
17620
|
+
const view = this.host.getView();
|
|
17621
|
+
const anchor = view && commentAnchors(view).find((item) => item.id === id);
|
|
17622
|
+
if (!view || !anchor) return;
|
|
17623
|
+
view.dispatch(
|
|
17624
|
+
view.state.tr.setSelection(TextSelection.create(view.state.doc, anchor.from)).scrollIntoView()
|
|
17625
|
+
);
|
|
17626
|
+
}
|
|
17667
17627
|
/** Removes a comment, its replies and its anchored range in one go. */
|
|
17668
17628
|
deleteById(id) {
|
|
17669
17629
|
if (!this.host.canEditComments()) return;
|
|
@@ -17869,9 +17829,9 @@ function renderOptions({ handlers, t, content }) {
|
|
|
17869
17829
|
input.type = "checkbox";
|
|
17870
17830
|
input.checked = current2[key2];
|
|
17871
17831
|
input.addEventListener("change", () => handlers.setOption(key2, String(input.checked)));
|
|
17872
|
-
const
|
|
17873
|
-
|
|
17874
|
-
controls.push(
|
|
17832
|
+
const row3 = field2(label, input);
|
|
17833
|
+
row3.classList.add("dve-backstage-toggle");
|
|
17834
|
+
controls.push(row3);
|
|
17875
17835
|
}
|
|
17876
17836
|
const note = document.createElement("p");
|
|
17877
17837
|
note.className = "dve-backstage-muted";
|
|
@@ -17930,9 +17890,9 @@ var facts = (rows, t) => {
|
|
|
17930
17890
|
for (const [label, value] of rows) {
|
|
17931
17891
|
const term = document.createElement("dt");
|
|
17932
17892
|
term.textContent = t(label);
|
|
17933
|
-
const
|
|
17934
|
-
|
|
17935
|
-
list.append(term,
|
|
17893
|
+
const detail2 = document.createElement("dd");
|
|
17894
|
+
detail2.textContent = value;
|
|
17895
|
+
list.append(term, detail2);
|
|
17936
17896
|
}
|
|
17937
17897
|
return list;
|
|
17938
17898
|
};
|
|
@@ -18144,16 +18104,16 @@ function renderCustomize({ handlers, t, content }) {
|
|
|
18144
18104
|
const id = ribbonControlId(control);
|
|
18145
18105
|
if (!id || seen.has(id)) continue;
|
|
18146
18106
|
seen.add(id);
|
|
18147
|
-
const
|
|
18148
|
-
|
|
18107
|
+
const row3 = document.createElement("label");
|
|
18108
|
+
row3.className = "dve-customize-row";
|
|
18149
18109
|
const input = document.createElement("input");
|
|
18150
18110
|
input.type = "checkbox";
|
|
18151
18111
|
input.checked = !hidden.has(id);
|
|
18152
18112
|
input.addEventListener("change", commit);
|
|
18153
18113
|
const text = document.createElement("span");
|
|
18154
18114
|
text.textContent = control.getAttribute("aria-label") ?? id;
|
|
18155
|
-
|
|
18156
|
-
list.append(
|
|
18115
|
+
row3.append(input, text);
|
|
18116
|
+
list.append(row3);
|
|
18157
18117
|
boxes.push({ id, input });
|
|
18158
18118
|
}
|
|
18159
18119
|
if (list.children.length > 1) tabSection.append(list);
|
|
@@ -18827,25 +18787,25 @@ function openTablePicker(anchor, onPick, onClose) {
|
|
|
18827
18787
|
const paint = () => {
|
|
18828
18788
|
caption.textContent = translateTemplate(locale, "table.size", { columns, rows });
|
|
18829
18789
|
cells.forEach((cell, index) => {
|
|
18830
|
-
const
|
|
18790
|
+
const row3 = Math.floor(index / PICKER_COLUMNS);
|
|
18831
18791
|
const column = index % PICKER_COLUMNS;
|
|
18832
|
-
cell.classList.toggle("active",
|
|
18792
|
+
cell.classList.toggle("active", row3 < rows && column < columns);
|
|
18833
18793
|
});
|
|
18834
18794
|
};
|
|
18835
|
-
for (let
|
|
18795
|
+
for (let row3 = 0; row3 < PICKER_ROWS; row3++)
|
|
18836
18796
|
for (let column = 0; column < PICKER_COLUMNS; column++) {
|
|
18837
18797
|
const cell = document.createElement("div");
|
|
18838
18798
|
cell.setAttribute("role", "gridcell");
|
|
18839
|
-
cell.dataset.rows = String(
|
|
18799
|
+
cell.dataset.rows = String(row3 + 1);
|
|
18840
18800
|
cell.dataset.columns = String(column + 1);
|
|
18841
18801
|
cell.addEventListener("mouseenter", () => {
|
|
18842
|
-
rows =
|
|
18802
|
+
rows = row3 + 1;
|
|
18843
18803
|
columns = column + 1;
|
|
18844
18804
|
paint();
|
|
18845
18805
|
});
|
|
18846
18806
|
cell.addEventListener("mousedown", (event) => event.preventDefault());
|
|
18847
18807
|
cell.addEventListener("click", () => {
|
|
18848
|
-
onPick(
|
|
18808
|
+
onPick(row3 + 1, column + 1);
|
|
18849
18809
|
onClose();
|
|
18850
18810
|
});
|
|
18851
18811
|
cells.push(cell);
|
|
@@ -19408,9 +19368,9 @@ var PageNavigator = class {
|
|
|
19408
19368
|
}
|
|
19409
19369
|
const version = this.host.version();
|
|
19410
19370
|
if (version !== this.built || this.thumbs.length !== status.total) this.rebuild(version);
|
|
19411
|
-
const
|
|
19412
|
-
if (
|
|
19413
|
-
this.labels =
|
|
19371
|
+
const labels3 = `${locale}:${status.total}`;
|
|
19372
|
+
if (labels3 !== this.labels) this.relabelThumbs(locale, status.total);
|
|
19373
|
+
this.labels = labels3;
|
|
19414
19374
|
this.mark(status.current);
|
|
19415
19375
|
}
|
|
19416
19376
|
relabelChrome(locale, active, ready) {
|
|
@@ -19880,7 +19840,7 @@ function createContextMenu(host) {
|
|
|
19880
19840
|
element.state = {
|
|
19881
19841
|
...state,
|
|
19882
19842
|
items: state.items.map(
|
|
19883
|
-
(
|
|
19843
|
+
(row3) => row3.id === "paste" ? { ...row3, disabled: true, title: denied } : row3
|
|
19884
19844
|
)
|
|
19885
19845
|
};
|
|
19886
19846
|
});
|
|
@@ -19926,7 +19886,7 @@ function shortcutRows(registry, mac) {
|
|
|
19926
19886
|
label: shortcut.label,
|
|
19927
19887
|
keys: registry.keysFor(shortcut.id, mac).join(" / ")
|
|
19928
19888
|
}));
|
|
19929
|
-
return [...general, ...editorShortcutRows(mac)].filter((
|
|
19889
|
+
return [...general, ...editorShortcutRows(mac)].filter((row3) => row3.keys);
|
|
19930
19890
|
}
|
|
19931
19891
|
function createShortcutHelp(onClose) {
|
|
19932
19892
|
const element = createDialogShell("", "dve-shortcut-help");
|
|
@@ -19966,11 +19926,11 @@ function createShortcutHelp(onClose) {
|
|
|
19966
19926
|
head.append(cell);
|
|
19967
19927
|
}
|
|
19968
19928
|
const body = table.createTBody();
|
|
19969
|
-
for (const
|
|
19929
|
+
for (const row3 of rows) {
|
|
19970
19930
|
const tr = body.insertRow();
|
|
19971
|
-
tr.insertCell().textContent = translate(locale,
|
|
19931
|
+
tr.insertCell().textContent = translate(locale, row3.label);
|
|
19972
19932
|
const kbd = document.createElement("kbd");
|
|
19973
|
-
kbd.textContent =
|
|
19933
|
+
kbd.textContent = row3.keys;
|
|
19974
19934
|
tr.insertCell().append(kbd);
|
|
19975
19935
|
}
|
|
19976
19936
|
setDialogOpen(element, true);
|