ooxml-core 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/automation/index.cjs +210 -20
  2. package/dist/automation/index.mjs +210 -20
  3. package/dist/docx/embedded.cjs +1 -1
  4. package/dist/docx/embedded.mjs +1 -1
  5. package/dist/docx/index.cjs +1 -1
  6. package/dist/docx/index.mjs +1 -1
  7. package/dist/docx/layout/adapt-table.d.ts.map +1 -1
  8. package/dist/docx/layout/flow-table.d.ts.map +1 -1
  9. package/dist/docx/layout/index.cjs +145 -9
  10. package/dist/docx/layout/index.d.ts +1 -0
  11. package/dist/docx/layout/index.d.ts.map +1 -1
  12. package/dist/docx/layout/index.mjs +145 -10
  13. package/dist/docx/layout/input.d.ts +5 -0
  14. package/dist/docx/layout/input.d.ts.map +1 -1
  15. package/dist/docx/layout/layout-session.d.ts +10 -0
  16. package/dist/docx/layout/layout-session.d.ts.map +1 -0
  17. package/dist/docx/layout/nested-fragment-edges.d.ts.map +1 -1
  18. package/dist/docx/layout/paragraph-cache.d.ts +8 -0
  19. package/dist/docx/layout/paragraph-cache.d.ts.map +1 -0
  20. package/dist/docx/layout/paragraph-layout.d.ts.map +1 -1
  21. package/dist/docx/layout/paragraph-tokens.d.ts +1 -1
  22. package/dist/docx/layout/paragraph-tokens.d.ts.map +1 -1
  23. package/dist/docx/layout/table-paragraph-keeps.d.ts +14 -0
  24. package/dist/docx/layout/table-paragraph-keeps.d.ts.map +1 -0
  25. package/dist/docx/load/index.cjs +1 -1
  26. package/dist/docx/load/index.mjs +1 -1
  27. package/dist/docx/ui/index.cjs +83 -6
  28. package/dist/docx/ui/index.mjs +83 -7
  29. package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
  30. package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
  31. package/dist/docx/ui/word-count.d.ts +3 -0
  32. package/dist/docx/ui/word-count.d.ts.map +1 -1
  33. package/dist/geometry/element-transform.d.ts +90 -0
  34. package/dist/geometry/element-transform.d.ts.map +1 -0
  35. package/dist/geometry/index.cjs +90 -0
  36. package/dist/geometry/index.d.ts +1 -0
  37. package/dist/geometry/index.d.ts.map +1 -1
  38. package/dist/geometry/index.mjs +83 -1
  39. package/dist/index.cjs +90 -0
  40. package/dist/index.mjs +90 -0
  41. package/dist/visio/index.cjs +314 -39
  42. package/dist/visio/index.d.ts +1 -0
  43. package/dist/visio/index.d.ts.map +1 -1
  44. package/dist/visio/index.mjs +313 -40
  45. package/dist/visio/model.d.ts +12 -0
  46. package/dist/visio/model.d.ts.map +1 -1
  47. package/dist/visio/paper-sizes.d.ts +5 -0
  48. package/dist/visio/paper-sizes.d.ts.map +1 -1
  49. package/dist/visio/parser.d.ts.map +1 -1
  50. package/dist/visio/print-count.d.ts +20 -0
  51. package/dist/visio/print-count.d.ts.map +1 -0
  52. package/dist/visio/print-settings.d.ts +14 -0
  53. package/dist/visio/print-settings.d.ts.map +1 -0
  54. package/dist/visio/ui/index.cjs +194 -4
  55. package/dist/visio/ui/index.mjs +194 -4
  56. package/dist/xlsx/ui/ribbon/parts.d.ts +1 -0
  57. package/dist/xlsx/ui/ribbon/parts.d.ts.map +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import type { LayoutParagraph, LayoutTable } from './input.js';
2
+ import type { RowLayout } from './table-layout.js';
3
+ /** Source-backed admission for the measured ordinary, note-free keep-lines profile. */
4
+ export declare function tableParagraphKeeps(table: LayoutTable): TableParagraphKeeps | undefined;
5
+ /** Uses existing paragraph boxes and source tokens; it does not lay out or paginate another story. */
6
+ export declare class TableParagraphKeeps {
7
+ private readonly sources;
8
+ constructor(sources: ReadonlyMap<string, LayoutParagraph>);
9
+ /** Before an ordinary row starts, a first kept paragraph can defer the entire row. */
10
+ startupMinimum(row: RowLayout): number;
11
+ /** Defer an unstarted paragraph and its following cell content, leaving other cells independent. */
12
+ cuts(row: RowLayout, available: number, fresh: boolean): Map<string, number> | undefined;
13
+ }
14
+ //# sourceMappingURL=table-paragraph-keeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-paragraph-keeps.d.ts","sourceRoot":"","sources":["../../../docx/layout/table-paragraph-keeps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAgDvF;AAED,sGAAsG;AACtG,qBAAa,mBAAmB;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,EAAI;IAC9E,sFAAsF;IACtF,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAUrC;IACD,oGAAoG;IACpG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAoBvF;CACD"}
@@ -11859,7 +11859,7 @@ function parseRowProperties(row) {
11859
11859
  const result = {};
11860
11860
  const height = first2(trPr, "trHeight");
11861
11861
  const heightTwips = dxa(getW(height, "val"));
11862
- if (heightTwips) {
11862
+ if (heightTwips !== void 0) {
11863
11863
  result.heightTwips = heightTwips;
11864
11864
  result.heightRule = getW(height, "hRule") === "exact" ? "exact" : "atLeast";
11865
11865
  }
@@ -11853,7 +11853,7 @@ function parseRowProperties(row) {
11853
11853
  const result = {};
11854
11854
  const height = first2(trPr, "trHeight");
11855
11855
  const heightTwips = dxa(getW(height, "val"));
11856
- if (heightTwips) {
11856
+ if (heightTwips !== void 0) {
11857
11857
  result.heightTwips = heightTwips;
11858
11858
  result.heightRule = getW(height, "hRule") === "exact" ? "exact" : "atLeast";
11859
11859
  }
@@ -9690,6 +9690,33 @@ function createToggleFormat(schema, getModel = () => void 0) {
9690
9690
  // docx/ui/ribbon-action-ids.ts
9691
9691
  var RIBBON_ACTION_IDS = [
9692
9692
  "paste",
9693
+ "paste-options",
9694
+ "underline-style",
9695
+ "bullets-options",
9696
+ "numbering-options",
9697
+ "document-themes",
9698
+ "document-colors",
9699
+ "document-fonts",
9700
+ "document-paragraph-spacing",
9701
+ "document-effects",
9702
+ "set-default-formatting",
9703
+ "envelopes",
9704
+ "labels",
9705
+ "start-mail-merge",
9706
+ "select-recipients",
9707
+ "edit-recipient-list",
9708
+ "highlight-merge-fields",
9709
+ "address-block",
9710
+ "greeting-line",
9711
+ "insert-merge-field",
9712
+ "merge-rules",
9713
+ "match-fields",
9714
+ "update-labels",
9715
+ "preview-results",
9716
+ "find-recipient",
9717
+ "check-merge-errors",
9718
+ "finish-merge",
9719
+ "help",
9693
9720
  "delete-comment",
9694
9721
  "previous-comment",
9695
9722
  "next-comment",
@@ -9836,6 +9863,33 @@ var RIBBON_ACTION_IDS = [
9836
9863
  ];
9837
9864
  var RIBBON_ACTION_LABELS = {
9838
9865
  paste: "Paste",
9866
+ "paste-options": "Paste options",
9867
+ "underline-style": "Underline style",
9868
+ "bullets-options": "Bullets options",
9869
+ "numbering-options": "Numbering options",
9870
+ "document-themes": "Themes",
9871
+ "document-colors": "Colors",
9872
+ "document-fonts": "Fonts",
9873
+ "document-paragraph-spacing": "Paragraph spacing",
9874
+ "document-effects": "Effects",
9875
+ "set-default-formatting": "Set as Default",
9876
+ envelopes: "Envelopes",
9877
+ labels: "Labels",
9878
+ "start-mail-merge": "Start Mail Merge",
9879
+ "select-recipients": "Select Recipients",
9880
+ "edit-recipient-list": "Edit Recipient List",
9881
+ "highlight-merge-fields": "Highlight Merge Fields",
9882
+ "address-block": "Address Block",
9883
+ "greeting-line": "Greeting Line",
9884
+ "insert-merge-field": "Insert Merge Field",
9885
+ "merge-rules": "Rules",
9886
+ "match-fields": "Match Fields",
9887
+ "update-labels": "Update Labels",
9888
+ "preview-results": "Preview Results",
9889
+ "find-recipient": "Find Recipient",
9890
+ "check-merge-errors": "Check for Errors",
9891
+ "finish-merge": "Finish & Merge",
9892
+ help: "Help",
9839
9893
  "delete-comment": "Delete comment",
9840
9894
  "previous-comment": "Previous comment",
9841
9895
  "next-comment": "Next comment",
@@ -10512,18 +10566,40 @@ function applyThemeColors(host, previous, colors) {
10512
10566
  }
10513
10567
 
10514
10568
  // docx/ui/word-count.ts
10569
+ var segmenters = /* @__PURE__ */ new Map();
10570
+ var documentCounts = /* @__PURE__ */ new WeakMap();
10515
10571
  function countWords(text2, locale) {
10516
10572
  if (typeof Intl.Segmenter === "function") {
10517
- let segmenter;
10518
- try {
10519
- segmenter = new Intl.Segmenter(locale || void 0, { granularity: "word" });
10520
- } catch {
10521
- segmenter = new Intl.Segmenter(void 0, { granularity: "word" });
10573
+ const key = locale || "";
10574
+ let segmenter = segmenters.get(key);
10575
+ if (!segmenter) {
10576
+ try {
10577
+ segmenter = new Intl.Segmenter(locale || void 0, { granularity: "word" });
10578
+ } catch {
10579
+ segmenter = new Intl.Segmenter(void 0, { granularity: "word" });
10580
+ }
10581
+ if (segmenters.size >= 16) segmenters.clear();
10582
+ segmenters.set(key, segmenter);
10522
10583
  }
10523
- return [...segmenter.segment(text2)].filter((part) => part.isWordLike).length;
10584
+ let count = 0;
10585
+ for (const part of segmenter.segment(text2)) if (part.isWordLike) count++;
10586
+ return count;
10524
10587
  }
10525
10588
  return text2.match(/[\p{L}\p{N}][\p{L}\p{M}\p{N}'’]*/gu)?.length ?? 0;
10526
10589
  }
10590
+ function documentWordCount(node, locale) {
10591
+ const key = locale || "";
10592
+ const cached2 = documentCounts.get(node);
10593
+ const value = cached2?.get(key);
10594
+ if (value !== void 0) return value;
10595
+ let count = 0;
10596
+ if (node.isTextblock) count = countWords(node.textBetween(0, node.content.size, " "), locale);
10597
+ else node.forEach((child) => count += documentWordCount(child, locale));
10598
+ const counts = cached2 ?? /* @__PURE__ */ new Map();
10599
+ counts.set(key, count);
10600
+ documentCounts.set(node, counts);
10601
+ return count;
10602
+ }
10527
10603
 
10528
10604
  // docx/ui/zoom-fit.ts
10529
10605
  var PAGE_GAP = 24;
@@ -10580,6 +10656,7 @@ exports.deleteAroundMarkers = deleteAroundMarkers;
10580
10656
  exports.deleteComment = deleteComment;
10581
10657
  exports.deleteFieldSelection = deleteFieldSelection;
10582
10658
  exports.dispatchIsolatedCommand = dispatchIsolatedCommand;
10659
+ exports.documentWordCount = documentWordCount;
10583
10660
  exports.expectDefined = expectDefined;
10584
10661
  exports.explicitOffFields = explicitOffFields;
10585
10662
  exports.extraRunFields = extraRunFields;
@@ -9668,6 +9668,33 @@ function createToggleFormat(schema, getModel = () => void 0) {
9668
9668
  // docx/ui/ribbon-action-ids.ts
9669
9669
  var RIBBON_ACTION_IDS = [
9670
9670
  "paste",
9671
+ "paste-options",
9672
+ "underline-style",
9673
+ "bullets-options",
9674
+ "numbering-options",
9675
+ "document-themes",
9676
+ "document-colors",
9677
+ "document-fonts",
9678
+ "document-paragraph-spacing",
9679
+ "document-effects",
9680
+ "set-default-formatting",
9681
+ "envelopes",
9682
+ "labels",
9683
+ "start-mail-merge",
9684
+ "select-recipients",
9685
+ "edit-recipient-list",
9686
+ "highlight-merge-fields",
9687
+ "address-block",
9688
+ "greeting-line",
9689
+ "insert-merge-field",
9690
+ "merge-rules",
9691
+ "match-fields",
9692
+ "update-labels",
9693
+ "preview-results",
9694
+ "find-recipient",
9695
+ "check-merge-errors",
9696
+ "finish-merge",
9697
+ "help",
9671
9698
  "delete-comment",
9672
9699
  "previous-comment",
9673
9700
  "next-comment",
@@ -9814,6 +9841,33 @@ var RIBBON_ACTION_IDS = [
9814
9841
  ];
9815
9842
  var RIBBON_ACTION_LABELS = {
9816
9843
  paste: "Paste",
9844
+ "paste-options": "Paste options",
9845
+ "underline-style": "Underline style",
9846
+ "bullets-options": "Bullets options",
9847
+ "numbering-options": "Numbering options",
9848
+ "document-themes": "Themes",
9849
+ "document-colors": "Colors",
9850
+ "document-fonts": "Fonts",
9851
+ "document-paragraph-spacing": "Paragraph spacing",
9852
+ "document-effects": "Effects",
9853
+ "set-default-formatting": "Set as Default",
9854
+ envelopes: "Envelopes",
9855
+ labels: "Labels",
9856
+ "start-mail-merge": "Start Mail Merge",
9857
+ "select-recipients": "Select Recipients",
9858
+ "edit-recipient-list": "Edit Recipient List",
9859
+ "highlight-merge-fields": "Highlight Merge Fields",
9860
+ "address-block": "Address Block",
9861
+ "greeting-line": "Greeting Line",
9862
+ "insert-merge-field": "Insert Merge Field",
9863
+ "merge-rules": "Rules",
9864
+ "match-fields": "Match Fields",
9865
+ "update-labels": "Update Labels",
9866
+ "preview-results": "Preview Results",
9867
+ "find-recipient": "Find Recipient",
9868
+ "check-merge-errors": "Check for Errors",
9869
+ "finish-merge": "Finish & Merge",
9870
+ help: "Help",
9817
9871
  "delete-comment": "Delete comment",
9818
9872
  "previous-comment": "Previous comment",
9819
9873
  "next-comment": "Next comment",
@@ -10490,18 +10544,40 @@ function applyThemeColors(host, previous, colors) {
10490
10544
  }
10491
10545
 
10492
10546
  // docx/ui/word-count.ts
10547
+ var segmenters = /* @__PURE__ */ new Map();
10548
+ var documentCounts = /* @__PURE__ */ new WeakMap();
10493
10549
  function countWords(text2, locale) {
10494
10550
  if (typeof Intl.Segmenter === "function") {
10495
- let segmenter;
10496
- try {
10497
- segmenter = new Intl.Segmenter(locale || void 0, { granularity: "word" });
10498
- } catch {
10499
- segmenter = new Intl.Segmenter(void 0, { granularity: "word" });
10551
+ const key = locale || "";
10552
+ let segmenter = segmenters.get(key);
10553
+ if (!segmenter) {
10554
+ try {
10555
+ segmenter = new Intl.Segmenter(locale || void 0, { granularity: "word" });
10556
+ } catch {
10557
+ segmenter = new Intl.Segmenter(void 0, { granularity: "word" });
10558
+ }
10559
+ if (segmenters.size >= 16) segmenters.clear();
10560
+ segmenters.set(key, segmenter);
10500
10561
  }
10501
- return [...segmenter.segment(text2)].filter((part) => part.isWordLike).length;
10562
+ let count = 0;
10563
+ for (const part of segmenter.segment(text2)) if (part.isWordLike) count++;
10564
+ return count;
10502
10565
  }
10503
10566
  return text2.match(/[\p{L}\p{N}][\p{L}\p{M}\p{N}'’]*/gu)?.length ?? 0;
10504
10567
  }
10568
+ function documentWordCount(node, locale) {
10569
+ const key = locale || "";
10570
+ const cached2 = documentCounts.get(node);
10571
+ const value = cached2?.get(key);
10572
+ if (value !== void 0) return value;
10573
+ let count = 0;
10574
+ if (node.isTextblock) count = countWords(node.textBetween(0, node.content.size, " "), locale);
10575
+ else node.forEach((child) => count += documentWordCount(child, locale));
10576
+ const counts = cached2 ?? /* @__PURE__ */ new Map();
10577
+ counts.set(key, count);
10578
+ documentCounts.set(node, counts);
10579
+ return count;
10580
+ }
10505
10581
 
10506
10582
  // docx/ui/zoom-fit.ts
10507
10583
  var PAGE_GAP = 24;
@@ -10512,4 +10588,4 @@ function fitZoomPercent(mode, viewport, page) {
10512
10588
  return Math.max(10, Math.min(500, Math.floor(ratio * 100)));
10513
10589
  }
10514
10590
 
10515
- export { CollaborationAuthority, CollaborationClient, DirtyState, EDITOR_THEME_MODES, FIELD_RESULT_REPAIR_META, HEADER_FOOTER_INPUT, NotePartsStep, PAGE_GAP, PARAGRAPH_KEEP_KEYS, REMOTE_TRANSACTION_META, RIBBON_ACTION_IDS, RIBBON_ACTION_LABELS, SectionPartsStep, THEME_KEYS, WordYjsCollaboration, WordYjsComments, WordYjsMedia, acceptAllChanges, acceptChangeAtCursor, acceptRevisionRange, addComment, appendInlineNode, applyMarkFormatting, applyRunFormattingPatch, applyThemeColors, applyWordLink, authorColor, backstageFocus, chartNodeSpec, clearDirectRunFormatting, collectRevisionRanges, commentAnchors, commentHistoryAttributes, commentIdsAtSelection, commentIdsFromMarks, commentIdsFromNode, commentThreadsFromDoc, countWords, createCollaborationIdGenerator, createToggleFormat, cssBorderSide, darkTheme, deleteAroundMarkers, deleteComment, deleteFieldSelection, dispatchIsolatedCommand, expectDefined, explicitOffFields, extraRunFields, extraRunProperties, fieldGuardPlugin, fieldMarkerNodeSpec, fieldResultRanges, fieldsBalanced, fitZoomPercent, formattingRevision, freezeBatch, goToComment, goToNextChange, goToPreviousChange, hardBreakNodeSpec, hasAnyChange, hasChangeAtCursor, hasNoteRevisions, imageNodeSpec, inlineNodeRun, insertWordHardBreak, isNavigableHref, isRibbonActionId, isWordYjsRemoteTransaction, ligatureCss, ligatureStyle, lightTheme, linkFromMarks, linkMarkSpec, markSpecs, marksForRun, moveName, nodeChart, nodeNumbering, normalizeRibbonActions, normalizeThemeMode, notePartsJson, noteReferenceNodeSpec, pageBreakNodeSpec, paragraphAttrs, paragraphBoxCss, paragraphFormattingRevision, paragraphFromAttrs, parseBatch, parseBordersJson, placementClass, refreshWordYjsPresence, rejectAllChanges, rejectChangeAtCursor, rejectRevisionRange, removeCommentAnchor, removeCommentThread, removeWordLink, repairCollaborativeDocumentIds, repairCollaborativeParagraphIds, replaceAroundMarkers, replyToComment, resolveCellVisuals, resolveComment, resolveNoteRevisions, restoreNoteParts, restoreSectionParts, reviewMarks, ribbonActionIdForLabel, runPropertiesMark, runToInlineNodes, sameJson2 as sameJson, sameRuns, sectionPartsJson, setCommentThreads, setReviewRecordingPreferences, svgMarkupSpec, swatchColor, tableCellStyle, tableStructureGuardPlugin, tableStyle, themeDrawing, themeToCssVars, toggleTrackChanges, toggleTrackFormatting, toggleTrackMoves, trackChangesPlugin, trackChangesPluginKey, updateCommentThreads, wordHighlightColors, wordLinkRangeAt, wordYjsPluginKey, wordYjsPresencePlugin, wordYjsRedo, wordYjsUndo };
10591
+ export { CollaborationAuthority, CollaborationClient, DirtyState, EDITOR_THEME_MODES, FIELD_RESULT_REPAIR_META, HEADER_FOOTER_INPUT, NotePartsStep, PAGE_GAP, PARAGRAPH_KEEP_KEYS, REMOTE_TRANSACTION_META, RIBBON_ACTION_IDS, RIBBON_ACTION_LABELS, SectionPartsStep, THEME_KEYS, WordYjsCollaboration, WordYjsComments, WordYjsMedia, acceptAllChanges, acceptChangeAtCursor, acceptRevisionRange, addComment, appendInlineNode, applyMarkFormatting, applyRunFormattingPatch, applyThemeColors, applyWordLink, authorColor, backstageFocus, chartNodeSpec, clearDirectRunFormatting, collectRevisionRanges, commentAnchors, commentHistoryAttributes, commentIdsAtSelection, commentIdsFromMarks, commentIdsFromNode, commentThreadsFromDoc, countWords, createCollaborationIdGenerator, createToggleFormat, cssBorderSide, darkTheme, deleteAroundMarkers, deleteComment, deleteFieldSelection, dispatchIsolatedCommand, documentWordCount, expectDefined, explicitOffFields, extraRunFields, extraRunProperties, fieldGuardPlugin, fieldMarkerNodeSpec, fieldResultRanges, fieldsBalanced, fitZoomPercent, formattingRevision, freezeBatch, goToComment, goToNextChange, goToPreviousChange, hardBreakNodeSpec, hasAnyChange, hasChangeAtCursor, hasNoteRevisions, imageNodeSpec, inlineNodeRun, insertWordHardBreak, isNavigableHref, isRibbonActionId, isWordYjsRemoteTransaction, ligatureCss, ligatureStyle, lightTheme, linkFromMarks, linkMarkSpec, markSpecs, marksForRun, moveName, nodeChart, nodeNumbering, normalizeRibbonActions, normalizeThemeMode, notePartsJson, noteReferenceNodeSpec, pageBreakNodeSpec, paragraphAttrs, paragraphBoxCss, paragraphFormattingRevision, paragraphFromAttrs, parseBatch, parseBordersJson, placementClass, refreshWordYjsPresence, rejectAllChanges, rejectChangeAtCursor, rejectRevisionRange, removeCommentAnchor, removeCommentThread, removeWordLink, repairCollaborativeDocumentIds, repairCollaborativeParagraphIds, replaceAroundMarkers, replyToComment, resolveCellVisuals, resolveComment, resolveNoteRevisions, restoreNoteParts, restoreSectionParts, reviewMarks, ribbonActionIdForLabel, runPropertiesMark, runToInlineNodes, sameJson2 as sameJson, sameRuns, sectionPartsJson, setCommentThreads, setReviewRecordingPreferences, svgMarkupSpec, swatchColor, tableCellStyle, tableStructureGuardPlugin, tableStyle, themeDrawing, themeToCssVars, toggleTrackChanges, toggleTrackFormatting, toggleTrackMoves, trackChangesPlugin, trackChangesPluginKey, updateCommentThreads, wordHighlightColors, wordLinkRangeAt, wordYjsPluginKey, wordYjsPresencePlugin, wordYjsRedo, wordYjsUndo };
@@ -5,7 +5,7 @@ import type { LegacyRibbonLabel } from './ribbon-legacy-labels.js';
5
5
  * `element-api.test.ts` fails when a control is added to or removed from the ribbon without
6
6
  * updating this list.
7
7
  */
8
- export declare const RIBBON_ACTION_IDS: readonly ['paste', 'delete-comment', 'previous-comment', 'next-comment', 'insert-caption', 'cross-reference', 'ruler', 'page-setup-dialog', 'cover-page', 'bookmark', 'sort', 'find-options', 'select-options', 'add-text', 'blank-page', 'read-aloud', 'gridlines', 'navigation-pane', 'shading', 'borders', 'header', 'footer', 'page-number', 'header-footer-link', 'header-footer-close', 'header-footer-go-header', 'header-footer-go-footer', 'header-footer-previous', 'header-footer-next', 'header-from-top', 'footer-from-bottom', 'page-size', 'font-dialog', 'paragraph-dialog', 'indent-left', 'indent-right', 'zoom-actual-size', 'multiple-pages', 'page-width', 'one-page', 'word-count', 'spelling', 'symbol', 'date-and-time', 'line-numbers', 'multilevel-list', 'drop-cap', 'change-case', 'format-painter', 'show-paragraph-marks', 'select-all', 'replace', 'cut', 'copy', 'grow-font', 'shrink-font', 'font-family', 'font-size', 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'font-color', 'text-highlight', 'clear-formatting', 'decrease-indent', 'increase-indent', 'spacing-after', 'spacing-before', 'line-spacing', 'bulleted-list', 'numbered-list', 'decrease-list-level', 'increase-list-level', 'remove-list', 'align-left', 'align-center', 'align-right', 'justify', 'find-and-replace', 'insert-table', 'insert-picture', 'format-picture', 'insert-link', 'insert-page-break', 'insert-column-break', 'margins', 'orientation', 'vertical-alignment', 'columns', 'page-color', 'text-box', 'page-borders', 'watermark', 'hyphenation', 'page-number-format', 'page-numbering', 'different-first-page', 'different-odd-and-even-pages', 'next-page-section-break', 'continuous-section-break', 'even-page-section-break', 'odd-page-section-break', 'insert-table-of-contents', 'update-table-of-contents', 'update-fields', 'insert-table-of-figures', 'insert-footnote', 'insert-endnote', 'paragraph-direction', 'text-language', 'custom-text-language-tag', 'east-asian-language', 'custom-east-asian-language-tag', 'complex-script-language', 'custom-complex-script-language-tag', 'run-direction', 'track-changes', 'tracking-options', 'display-for-review', 'previous-change', 'next-change', 'accept', 'reject', 'accept-all', 'reject-all', 'add-comment', 'comments', 'show-hidden-text', 'page-thumbnails', 'zoom', 'zoom-dialog', 'layout-view', 'print', 'insert-row-above', 'insert-row-below', 'delete-row', 'insert-column-left', 'insert-column-right', 'delete-column', 'delete-table', 'table-properties'];
8
+ export declare const RIBBON_ACTION_IDS: readonly ['paste', 'paste-options', 'underline-style', 'bullets-options', 'numbering-options', 'document-themes', 'document-colors', 'document-fonts', 'document-paragraph-spacing', 'document-effects', 'set-default-formatting', 'envelopes', 'labels', 'start-mail-merge', 'select-recipients', 'edit-recipient-list', 'highlight-merge-fields', 'address-block', 'greeting-line', 'insert-merge-field', 'merge-rules', 'match-fields', 'update-labels', 'preview-results', 'find-recipient', 'check-merge-errors', 'finish-merge', 'help', 'delete-comment', 'previous-comment', 'next-comment', 'insert-caption', 'cross-reference', 'ruler', 'page-setup-dialog', 'cover-page', 'bookmark', 'sort', 'find-options', 'select-options', 'add-text', 'blank-page', 'read-aloud', 'gridlines', 'navigation-pane', 'shading', 'borders', 'header', 'footer', 'page-number', 'header-footer-link', 'header-footer-close', 'header-footer-go-header', 'header-footer-go-footer', 'header-footer-previous', 'header-footer-next', 'header-from-top', 'footer-from-bottom', 'page-size', 'font-dialog', 'paragraph-dialog', 'indent-left', 'indent-right', 'zoom-actual-size', 'multiple-pages', 'page-width', 'one-page', 'word-count', 'spelling', 'symbol', 'date-and-time', 'line-numbers', 'multilevel-list', 'drop-cap', 'change-case', 'format-painter', 'show-paragraph-marks', 'select-all', 'replace', 'cut', 'copy', 'grow-font', 'shrink-font', 'font-family', 'font-size', 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'font-color', 'text-highlight', 'clear-formatting', 'decrease-indent', 'increase-indent', 'spacing-after', 'spacing-before', 'line-spacing', 'bulleted-list', 'numbered-list', 'decrease-list-level', 'increase-list-level', 'remove-list', 'align-left', 'align-center', 'align-right', 'justify', 'find-and-replace', 'insert-table', 'insert-picture', 'format-picture', 'insert-link', 'insert-page-break', 'insert-column-break', 'margins', 'orientation', 'vertical-alignment', 'columns', 'page-color', 'text-box', 'page-borders', 'watermark', 'hyphenation', 'page-number-format', 'page-numbering', 'different-first-page', 'different-odd-and-even-pages', 'next-page-section-break', 'continuous-section-break', 'even-page-section-break', 'odd-page-section-break', 'insert-table-of-contents', 'update-table-of-contents', 'update-fields', 'insert-table-of-figures', 'insert-footnote', 'insert-endnote', 'paragraph-direction', 'text-language', 'custom-text-language-tag', 'east-asian-language', 'custom-east-asian-language-tag', 'complex-script-language', 'custom-complex-script-language-tag', 'run-direction', 'track-changes', 'tracking-options', 'display-for-review', 'previous-change', 'next-change', 'accept', 'reject', 'accept-all', 'reject-all', 'add-comment', 'comments', 'show-hidden-text', 'page-thumbnails', 'zoom', 'zoom-dialog', 'layout-view', 'print', 'insert-row-above', 'insert-row-below', 'delete-row', 'insert-column-left', 'insert-column-right', 'delete-column', 'delete-table', 'table-properties'];
9
9
  export type RibbonActionId = (typeof RIBBON_ACTION_IDS)[number];
10
10
  /** English control label of each action, the lookup key into the locale strings. Display-only. */
11
11
  export declare const RIBBON_ACTION_LABELS: Readonly<Record<RibbonActionId, string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ribbon-action-ids.d.ts","sourceRoot":"","sources":["../../../docx/ui/ribbon-action-ids.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ribbon-action-ids.d.ts","sourceRoot":"","sources":["../../../docx/ui/ribbon-action-ids.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import type { Node } from 'prosemirror-model';
1
2
  /** Unicode-aware word counting; segmentation is provided by the host's ICU data. */
2
3
  export declare function countWords(text: string, locale?: string): number;
4
+ /** Immutable editor subtrees retain their counts across typing, selection changes and undo. */
5
+ export declare function documentWordCount(node: Node, locale?: string): number;
3
6
  //# sourceMappingURL=word-count.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"word-count.d.ts","sourceRoot":"","sources":["../../../docx/ui/word-count.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAYhE"}
1
+ {"version":3,"file":"word-count.d.ts","sourceRoot":"","sources":["../../../docx/ui/word-count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAK9C,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBhE;AAED,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAYrE"}
@@ -0,0 +1,90 @@
1
+ /** Format-neutral move and resize geometry, extracted from the PowerPoint editing overlay. */
2
+ export declare const DEFAULT_INTERACTION_MIN_SIZE = 12;
3
+ /** Axis-aligned box in element (unscaled) coordinate space, plus rotation. */
4
+ export interface InteractionBox {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ /** Degrees. Defaults to 0 when omitted. */
10
+ rotation?: number;
11
+ }
12
+ /** Result of a drag/resize/rotate computation. */
13
+ export interface BoxTransform {
14
+ x: number;
15
+ y: number;
16
+ width: number;
17
+ height: number;
18
+ rotation: number;
19
+ }
20
+ /** The eight resize handles, named by compass direction. */
21
+ export type ResizeHandleId = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w';
22
+ export declare const RESIZE_HANDLES: readonly ResizeHandleId[];
23
+ /** Where one resize handle sits on the box, and the cursor it shows. */
24
+ export interface ResizeHandleGeometry {
25
+ /** CSS cursor value (not a class name). */
26
+ cursor: string;
27
+ /** Fractional x within the box: 0 = left edge, 1 = right edge. */
28
+ fx: number;
29
+ /** Fractional y within the box: 0 = top edge, 1 = bottom edge. */
30
+ fy: number;
31
+ }
32
+ /**
33
+ * The canonical placement + cursor for all eight handles.
34
+ *
35
+ * All five bindings had their own copy of this table: Vue as `HANDLE_META`,
36
+ * Svelte and Vanilla as a `HANDLE_CURSORS` / `HANDLE_POSITIONS` pair, Angular
37
+ * as a `switch` plus a string-matching `handleAnchor`, and React as `cursor-*`
38
+ * Tailwind classes on hand-placed corner/edge lists. Five copies of eight
39
+ * constants is five chances for one binding to put a handle on the wrong corner
40
+ * or show a resize cursor pointing the wrong way, with nothing to catch it.
41
+ */
42
+ export declare const RESIZE_HANDLE_GEOMETRY: Readonly<Record<ResizeHandleId, ResizeHandleGeometry>>;
43
+ /**
44
+ * Rotate-handle stem length in SCREEN px, i.e. constant at any zoom.
45
+ *
46
+ * The overlay lives inside the zoom-scaled stage, so this is divided by the
47
+ * zoom wherever it is applied; a stem that scaled with the zoom would drift
48
+ * away from the box as the user zoomed out.
49
+ */
50
+ export declare const ROTATE_STEM_PX = 24;
51
+ export interface Point {
52
+ x: number;
53
+ y: number;
54
+ }
55
+ export interface ResizeOptions {
56
+ /** Minimum width/height in element px. Defaults to `DEFAULT_INTERACTION_MIN_SIZE`. */
57
+ minSize?: number;
58
+ }
59
+ /**
60
+ * Rotate a screen-space delta into element-local space.
61
+ *
62
+ * Given a vector expressed in the canvas (screen) frame and the element's
63
+ * rotation in degrees, return the same vector expressed in the element's local
64
+ * (un-rotated) frame. This is the inverse rotation of `rotationDeg`.
65
+ */
66
+ export declare function rotateDelta(dx: number, dy: number, rotationDeg: number): Point;
67
+ /** Center point of a box in element coordinates. */
68
+ export declare function boxCenter(box: InteractionBox): Point;
69
+ /**
70
+ * Apply a screen-space pointer delta as a plain move of the whole box.
71
+ *
72
+ * Position is stored axis-aligned, so rotation does NOT affect a move - we only
73
+ * scale the screen delta down by `zoom` to get element px.
74
+ */
75
+ export declare function applyDragDelta(box: InteractionBox, dxScreen: number, dyScreen: number, zoom: number): BoxTransform;
76
+ /**
77
+ * Compute the new geometry for a resize drag on a given handle.
78
+ *
79
+ * `dxScreen`/`dyScreen` are the *total* pointer delta from the gesture start,
80
+ * in screen px. They are scaled by `zoom` into element px and (when the element
81
+ * is rotated) rotated into the element's local frame so the handle behaves
82
+ * intuitively. The min-size clamp uses `opts.minSize` (default
83
+ * `DEFAULT_INTERACTION_MIN_SIZE`).
84
+ *
85
+ * The returned box keeps the element's `rotation` unchanged. x/y describe the
86
+ * new axis-aligned top-left in element space; for rotated elements this matches
87
+ * the React behaviour of resizing in local space under a CSS transform.
88
+ */
89
+ export declare function applyResize(box: InteractionBox, handle: ResizeHandleId, dxScreen: number, dyScreen: number, zoom: number, opts?: ResizeOptions): BoxTransform;
90
+ //# sourceMappingURL=element-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-transform.d.ts","sourceRoot":"","sources":["../../geometry/element-transform.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,4DAA4D;AAC5D,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAE/E,eAAO,MAAM,cAAc,EAAE,SAAS,cAAc,EAS1C,CAAC;AAEX,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACpC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC,CASzF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,MAAM,WAAW,KAAK;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED,MAAM,WAAW,aAAa;IAC7B,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,CAW9E;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,KAAK,CAEpD;AAMD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC7B,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACV,YAAY,CASd;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAC1B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,aAAkB,GACtB,YAAY,CAmCd"}
@@ -16218,6 +16218,88 @@ function arrowKeyDelta(key, step) {
16218
16218
  }
16219
16219
  }
16220
16220
 
16221
+ // geometry/element-transform.ts
16222
+ var DEFAULT_INTERACTION_MIN_SIZE = 12;
16223
+ var RESIZE_HANDLES = [
16224
+ "nw",
16225
+ "n",
16226
+ "ne",
16227
+ "e",
16228
+ "se",
16229
+ "s",
16230
+ "sw",
16231
+ "w"
16232
+ ];
16233
+ var RESIZE_HANDLE_GEOMETRY = {
16234
+ nw: { cursor: "nwse-resize", fx: 0, fy: 0 },
16235
+ n: { cursor: "ns-resize", fx: 0.5, fy: 0 },
16236
+ ne: { cursor: "nesw-resize", fx: 1, fy: 0 },
16237
+ e: { cursor: "ew-resize", fx: 1, fy: 0.5 },
16238
+ se: { cursor: "nwse-resize", fx: 1, fy: 1 },
16239
+ s: { cursor: "ns-resize", fx: 0.5, fy: 1 },
16240
+ sw: { cursor: "nesw-resize", fx: 0, fy: 1 },
16241
+ w: { cursor: "ew-resize", fx: 0, fy: 0.5 }
16242
+ };
16243
+ var ROTATE_STEM_PX = 24;
16244
+ var DEG_TO_RAD = Math.PI / 180;
16245
+ function rotationOf(box) {
16246
+ return box.rotation ?? 0;
16247
+ }
16248
+ function rotateDelta(dx, dy, rotationDeg) {
16249
+ if (!rotationDeg) {
16250
+ return { x: dx, y: dy };
16251
+ }
16252
+ const rad = -rotationDeg * DEG_TO_RAD;
16253
+ const cos = Math.cos(rad);
16254
+ const sin = Math.sin(rad);
16255
+ return {
16256
+ x: dx * cos - dy * sin,
16257
+ y: dx * sin + dy * cos
16258
+ };
16259
+ }
16260
+ function boxCenter(box) {
16261
+ return { x: box.x + box.width / 2, y: box.y + box.height / 2 };
16262
+ }
16263
+ function applyDragDelta(box, dxScreen, dyScreen, zoom) {
16264
+ const scale = zoom || 1;
16265
+ return {
16266
+ x: box.x + dxScreen / scale,
16267
+ y: box.y + dyScreen / scale,
16268
+ width: box.width,
16269
+ height: box.height,
16270
+ rotation: rotationOf(box)
16271
+ };
16272
+ }
16273
+ function applyResize(box, handle, dxScreen, dyScreen, zoom, opts = {}) {
16274
+ const scale = zoom || 1;
16275
+ const minSize = opts.minSize ?? DEFAULT_INTERACTION_MIN_SIZE;
16276
+ const rotation = rotationOf(box);
16277
+ const local = rotateDelta(dxScreen / scale, dyScreen / scale, rotation);
16278
+ const dx = local.x;
16279
+ const dy = local.y;
16280
+ let newX = box.x;
16281
+ let newY = box.y;
16282
+ let newW = box.width;
16283
+ let newH = box.height;
16284
+ const affectsLeft = handle === "nw" || handle === "w" || handle === "sw";
16285
+ const affectsRight = handle === "ne" || handle === "e" || handle === "se";
16286
+ const affectsTop = handle === "nw" || handle === "n" || handle === "ne";
16287
+ const affectsBottom = handle === "sw" || handle === "s" || handle === "se";
16288
+ if (affectsRight) {
16289
+ newW = Math.max(minSize, box.width + dx);
16290
+ } else if (affectsLeft) {
16291
+ newW = Math.max(minSize, box.width - dx);
16292
+ newX = box.x + (box.width - newW);
16293
+ }
16294
+ if (affectsBottom) {
16295
+ newH = Math.max(minSize, box.height + dy);
16296
+ } else if (affectsTop) {
16297
+ newH = Math.max(minSize, box.height - dy);
16298
+ newY = box.y + (box.height - newH);
16299
+ }
16300
+ return { x: newX, y: newY, width: newW, height: newH, rotation };
16301
+ }
16302
+
16221
16303
  exports.ACTION_BUTTON_CONNECTION_SITES = ACTION_BUTTON_CONNECTION_SITES;
16222
16304
  exports.ACTION_BUTTON_PRESET_DEFINITIONS = ACTION_BUTTON_PRESET_DEFINITIONS;
16223
16305
  exports.ACTION_BUTTON_TEXT_RECTS = ACTION_BUTTON_TEXT_RECTS;
@@ -16247,6 +16329,7 @@ exports.COM_AVLST_GROUND_TRUTH = COM_AVLST_GROUND_TRUTH;
16247
16329
  exports.CONNECTORS_BRACKETS_PRESET_DEFINITIONS = CONNECTORS_BRACKETS_PRESET_DEFINITIONS;
16248
16330
  exports.CURVED_ARROWS_CONNECTORS_PRESET_DEFINITIONS = CURVED_ARROWS_CONNECTORS_PRESET_DEFINITIONS;
16249
16331
  exports.CURVED_ARROW_CONNECTION_SITES = CURVED_ARROW_CONNECTION_SITES;
16332
+ exports.DEFAULT_INTERACTION_MIN_SIZE = DEFAULT_INTERACTION_MIN_SIZE;
16250
16333
  exports.EPSILON = EPSILON;
16251
16334
  exports.EXACT_CURVED_ARROW_PRESET_DEFINITIONS = EXACT_CURVED_ARROW_PRESET_DEFINITIONS;
16252
16335
  exports.EXTENDED_SHAPE_DEFINITIONS = EXTENDED_SHAPE_DEFINITIONS;
@@ -16278,8 +16361,11 @@ exports.QUAD_TEXT_RECTS = QUAD_TEXT_RECTS;
16278
16361
  exports.RECTS_SNIPS_PRESET_DEFINITIONS = RECTS_SNIPS_PRESET_DEFINITIONS;
16279
16362
  exports.RECT_VARIANT_CONNECTION_SITES = RECT_VARIANT_CONNECTION_SITES;
16280
16363
  exports.REFINED_ARROW_PRESET_DEFINITIONS = REFINED_ARROW_PRESET_DEFINITIONS;
16364
+ exports.RESIZE_HANDLES = RESIZE_HANDLES;
16365
+ exports.RESIZE_HANDLE_GEOMETRY = RESIZE_HANDLE_GEOMETRY;
16281
16366
  exports.RIBBON_CONNECTION_SITES = RIBBON_CONNECTION_SITES;
16282
16367
  exports.RIBBON_TEXT_RECTS = RIBBON_TEXT_RECTS;
16368
+ exports.ROTATE_STEM_PX = ROTATE_STEM_PX;
16283
16369
  exports.ROUTING_PADDING_DEFAULT = ROUTING_PADDING_DEFAULT;
16284
16370
  exports.SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS = SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS;
16285
16371
  exports.SNAP_THRESHOLD = SNAP_THRESHOLD;
@@ -16293,9 +16379,12 @@ exports._internalForTests = _internalForTests;
16293
16379
  exports.aStarOrthogonal = aStarOrthogonal;
16294
16380
  exports.alignElements = alignElements;
16295
16381
  exports.angleToRadians = angleToRadians;
16382
+ exports.applyDragDelta = applyDragDelta;
16383
+ exports.applyResize = applyResize;
16296
16384
  exports.arrowKeyDelta = arrowKeyDelta;
16297
16385
  exports.at = at;
16298
16386
  exports.autoAlignBoxes = autoAlignBoxes;
16387
+ exports.boxCenter = boxCenter;
16299
16388
  exports.buildCalloutLeaderLineSvgPath = buildCalloutLeaderLineSvgPath;
16300
16389
  exports.buildGraphNodes = buildGraphNodes;
16301
16390
  exports.clipPolygons = clipPolygons;
@@ -16369,6 +16458,7 @@ exports.resolveAlignReferenceBox = resolveAlignReferenceBox;
16369
16458
  exports.resolveCoordinate = resolveCoordinate;
16370
16459
  exports.resolveOperand = resolveOperand;
16371
16460
  exports.resolveRotateHandlePlacement = resolveRotateHandlePlacement;
16461
+ exports.rotateDelta = rotateDelta;
16372
16462
  exports.routeConnector = routeConnector;
16373
16463
  exports.routeOrthogonalConnector = routeOrthogonalConnector;
16374
16464
  exports.segmentIntersection = segmentIntersection;
@@ -87,4 +87,5 @@ export * from './rotate-handle-placement.js';
87
87
  export * from './graph-layout.js';
88
88
  export * from './auto-align.js';
89
89
  export * from './nudge.js';
90
+ export * from './element-transform.js';
90
91
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../geometry/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../geometry/index.ts"],"names":[],"mappings":"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"}