ooxml-core 1.7.0 → 1.8.1

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 (295) hide show
  1. package/dist/automation/index.cjs +10903 -5961
  2. package/dist/automation/index.mjs +10903 -5961
  3. package/dist/collab/session.d.ts.map +1 -1
  4. package/dist/color/index.cjs +103 -0
  5. package/dist/color/index.d.ts +1 -0
  6. package/dist/color/index.d.ts.map +1 -1
  7. package/dist/color/index.mjs +94 -1
  8. package/dist/color/theme-palette.d.ts +55 -0
  9. package/dist/color/theme-palette.d.ts.map +1 -0
  10. package/dist/docx/layout/page-cursor.d.ts.map +1 -1
  11. package/dist/docx/model.d.ts +2 -2
  12. package/dist/docx/model.d.ts.map +1 -1
  13. package/dist/docx/style-numbering-package.d.ts.map +1 -1
  14. package/dist/docx/tab-stops.d.ts.map +1 -1
  15. package/dist/docx/table-styles.d.ts.map +1 -1
  16. package/dist/docx/write-drawing.d.ts.map +1 -1
  17. package/dist/docx/write-table.d.ts.map +1 -1
  18. package/dist/geometry/connector-router-astar.d.ts +24 -0
  19. package/dist/geometry/connector-router-astar.d.ts.map +1 -0
  20. package/dist/geometry/connector-router-graph.d.ts +38 -0
  21. package/dist/geometry/connector-router-graph.d.ts.map +1 -0
  22. package/dist/geometry/connector-router-types.d.ts +53 -0
  23. package/dist/geometry/connector-router-types.d.ts.map +1 -0
  24. package/dist/geometry/connector-router.d.ts +35 -0
  25. package/dist/geometry/connector-router.d.ts.map +1 -0
  26. package/dist/geometry/guide-formula-api.d.ts.map +1 -1
  27. package/dist/geometry/index.cjs +319 -0
  28. package/dist/geometry/index.d.ts +1 -0
  29. package/dist/geometry/index.d.ts.map +1 -1
  30. package/dist/geometry/index.mjs +304 -1
  31. package/dist/geometry/preset-shape-definitions-chart-marks.d.ts.map +1 -1
  32. package/dist/geometry/preset-shape-paths.d.ts +1 -1
  33. package/dist/geometry/preset-shape-paths.d.ts.map +1 -1
  34. package/dist/index.cjs +510 -3
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.mjs +510 -4
  38. package/dist/math/omml-to-latex.d.ts.map +1 -1
  39. package/dist/pptx/automation/index.d.ts.map +1 -1
  40. package/dist/pptx/chunks/index-Cn-GzYGp.d.ts.map +1 -1
  41. package/dist/pptx/signature-node/index.cjs +37 -7
  42. package/dist/pptx/signature-node/index.d.ts.map +1 -1
  43. package/dist/pptx/signature-node/index.mjs +37 -7
  44. package/dist/pptx/ui/index.cjs +22 -24
  45. package/dist/pptx/ui/index.d.ts +14 -7
  46. package/dist/pptx/ui/index.d.ts.map +1 -1
  47. package/dist/pptx/ui/index.mjs +22 -24
  48. package/dist/ribbon/add-in.d.ts +53 -0
  49. package/dist/ribbon/add-in.d.ts.map +1 -0
  50. package/dist/ribbon/index.cjs +28 -0
  51. package/dist/ribbon/index.d.ts +2 -0
  52. package/dist/ribbon/index.d.ts.map +1 -0
  53. package/dist/ribbon/index.mjs +23 -0
  54. package/dist/teams/files.d.ts.map +1 -1
  55. package/dist/teams/index.cjs +29 -15
  56. package/dist/teams/index.mjs +29 -15
  57. package/dist/text/font-metrics/advance-width.d.ts +9 -0
  58. package/dist/text/font-metrics/advance-width.d.ts.map +1 -0
  59. package/dist/text/font-metrics/design-advances.generated.d.ts +12 -0
  60. package/dist/text/font-metrics/design-advances.generated.d.ts.map +1 -0
  61. package/dist/text/index.cjs +53 -0
  62. package/dist/text/index.d.ts +1 -0
  63. package/dist/text/index.d.ts.map +1 -1
  64. package/dist/text/index.mjs +52 -1
  65. package/dist/visio/clipboard-types.d.ts +8 -0
  66. package/dist/visio/clipboard-types.d.ts.map +1 -1
  67. package/dist/visio/clipboard-xml.d.ts.map +1 -1
  68. package/dist/visio/clipboard.d.ts.map +1 -1
  69. package/dist/visio/connector-route-avoid.d.ts +24 -0
  70. package/dist/visio/connector-route-avoid.d.ts.map +1 -0
  71. package/dist/visio/connector-route-walk.d.ts +37 -0
  72. package/dist/visio/connector-route-walk.d.ts.map +1 -0
  73. package/dist/visio/connector-route.d.ts +5 -2
  74. package/dist/visio/connector-route.d.ts.map +1 -1
  75. package/dist/visio/create-document.d.ts +6 -0
  76. package/dist/visio/create-document.d.ts.map +1 -1
  77. package/dist/visio/edit-change-shape-builtin.d.ts +18 -0
  78. package/dist/visio/edit-change-shape-builtin.d.ts.map +1 -0
  79. package/dist/visio/edit-change-shape-commands.d.ts +10 -4
  80. package/dist/visio/edit-change-shape-commands.d.ts.map +1 -1
  81. package/dist/visio/edit-change-shape.d.ts +3 -1
  82. package/dist/visio/edit-change-shape.d.ts.map +1 -1
  83. package/dist/visio/edit-commands.d.ts +5 -1
  84. package/dist/visio/edit-commands.d.ts.map +1 -1
  85. package/dist/visio/edit-connector-layout.d.ts +2 -2
  86. package/dist/visio/edit-connector-layout.d.ts.map +1 -1
  87. package/dist/visio/edit-connector-obstacles.d.ts +14 -0
  88. package/dist/visio/edit-connector-obstacles.d.ts.map +1 -0
  89. package/dist/visio/edit-connector-reroute.d.ts +7 -0
  90. package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
  91. package/dist/visio/edit-connector.d.ts +2 -0
  92. package/dist/visio/edit-connector.d.ts.map +1 -1
  93. package/dist/visio/edit-delete.d.ts +4 -2
  94. package/dist/visio/edit-delete.d.ts.map +1 -1
  95. package/dist/visio/edit-duplicate-scope.d.ts +7 -2
  96. package/dist/visio/edit-duplicate-scope.d.ts.map +1 -1
  97. package/dist/visio/edit-duplicate.d.ts.map +1 -1
  98. package/dist/visio/edit-formatting-cell-admission.d.ts.map +1 -1
  99. package/dist/visio/edit-formatting-commands.d.ts +17 -0
  100. package/dist/visio/edit-formatting-commands.d.ts.map +1 -1
  101. package/dist/visio/edit-formatting-paint.d.ts.map +1 -1
  102. package/dist/visio/edit-formatting-scope.d.ts +6 -1
  103. package/dist/visio/edit-formatting-scope.d.ts.map +1 -1
  104. package/dist/visio/edit-formatting-text.d.ts.map +1 -1
  105. package/dist/visio/edit-formatting.d.ts.map +1 -1
  106. package/dist/visio/edit-group-formulas.d.ts +22 -0
  107. package/dist/visio/edit-group-formulas.d.ts.map +1 -0
  108. package/dist/visio/edit-group-rotation.d.ts +3 -1
  109. package/dist/visio/edit-group-rotation.d.ts.map +1 -1
  110. package/dist/visio/edit-group.d.ts +10 -3
  111. package/dist/visio/edit-group.d.ts.map +1 -1
  112. package/dist/visio/edit-instance-checks.d.ts +18 -0
  113. package/dist/visio/edit-instance-checks.d.ts.map +1 -0
  114. package/dist/visio/edit-instance-clipboard.d.ts +22 -0
  115. package/dist/visio/edit-instance-clipboard.d.ts.map +1 -0
  116. package/dist/visio/edit-instance-delete.d.ts +19 -0
  117. package/dist/visio/edit-instance-delete.d.ts.map +1 -0
  118. package/dist/visio/edit-instance-duplicate.d.ts +17 -0
  119. package/dist/visio/edit-instance-duplicate.d.ts.map +1 -0
  120. package/dist/visio/edit-instance-format.d.ts +31 -0
  121. package/dist/visio/edit-instance-format.d.ts.map +1 -0
  122. package/dist/visio/edit-instance-geometry.d.ts +21 -0
  123. package/dist/visio/edit-instance-geometry.d.ts.map +1 -0
  124. package/dist/visio/edit-instance-group.d.ts +18 -0
  125. package/dist/visio/edit-instance-group.d.ts.map +1 -0
  126. package/dist/visio/edit-instance-order.d.ts +16 -0
  127. package/dist/visio/edit-instance-order.d.ts.map +1 -0
  128. package/dist/visio/edit-instance-recalculate.d.ts +32 -0
  129. package/dist/visio/edit-instance-recalculate.d.ts.map +1 -0
  130. package/dist/visio/edit-instance-replace.d.ts +18 -0
  131. package/dist/visio/edit-instance-replace.d.ts.map +1 -0
  132. package/dist/visio/edit-instance-scope.d.ts +29 -0
  133. package/dist/visio/edit-instance-scope.d.ts.map +1 -0
  134. package/dist/visio/edit-instance-shape.d.ts +52 -0
  135. package/dist/visio/edit-instance-shape.d.ts.map +1 -0
  136. package/dist/visio/edit-instance-sheet.d.ts +52 -0
  137. package/dist/visio/edit-instance-sheet.d.ts.map +1 -0
  138. package/dist/visio/edit-master-drop.d.ts +39 -0
  139. package/dist/visio/edit-master-drop.d.ts.map +1 -0
  140. package/dist/visio/edit-master-index.d.ts.map +1 -1
  141. package/dist/visio/edit-master-instance-extras.d.ts +15 -0
  142. package/dist/visio/edit-master-instance-extras.d.ts.map +1 -0
  143. package/dist/visio/edit-master-instance-group.d.ts +25 -0
  144. package/dist/visio/edit-master-instance-group.d.ts.map +1 -0
  145. package/dist/visio/edit-master-instance.d.ts +42 -0
  146. package/dist/visio/edit-master-instance.d.ts.map +1 -0
  147. package/dist/visio/edit-master-scope.d.ts.map +1 -1
  148. package/dist/visio/edit-page-auto-size.d.ts.map +1 -1
  149. package/dist/visio/edit-page-layout.d.ts +15 -0
  150. package/dist/visio/edit-page-layout.d.ts.map +1 -0
  151. package/dist/visio/edit-page-setup-commands.d.ts +3 -1
  152. package/dist/visio/edit-page-setup-commands.d.ts.map +1 -1
  153. package/dist/visio/edit-page-theme-refresh.d.ts +4 -0
  154. package/dist/visio/edit-page-theme-refresh.d.ts.map +1 -0
  155. package/dist/visio/edit-page-theme.d.ts.map +1 -1
  156. package/dist/visio/edit-pages.d.ts.map +1 -1
  157. package/dist/visio/edit-paste.d.ts +3 -1
  158. package/dist/visio/edit-paste.d.ts.map +1 -1
  159. package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
  160. package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
  161. package/dist/visio/edit-shape-order.d.ts +19 -4
  162. package/dist/visio/edit-shape-order.d.ts.map +1 -1
  163. package/dist/visio/edit-snap-glue.d.ts +16 -0
  164. package/dist/visio/edit-snap-glue.d.ts.map +1 -0
  165. package/dist/visio/edit-stencil-connector-drop.d.ts +9 -0
  166. package/dist/visio/edit-stencil-connector-drop.d.ts.map +1 -0
  167. package/dist/visio/edit-stencil-connector-layout.d.ts +14 -0
  168. package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -0
  169. package/dist/visio/edit-stencil-connector-write.d.ts +16 -0
  170. package/dist/visio/edit-stencil-connector-write.d.ts.map +1 -0
  171. package/dist/visio/edit-stencil-connector.d.ts +29 -0
  172. package/dist/visio/edit-stencil-connector.d.ts.map +1 -0
  173. package/dist/visio/edit-stencil-master.d.ts +17 -0
  174. package/dist/visio/edit-stencil-master.d.ts.map +1 -0
  175. package/dist/visio/edit-text-size-formula.d.ts +17 -0
  176. package/dist/visio/edit-text-size-formula.d.ts.map +1 -0
  177. package/dist/visio/edit-text-size.d.ts +34 -0
  178. package/dist/visio/edit-text-size.d.ts.map +1 -0
  179. package/dist/visio/edit.d.ts +1 -1
  180. package/dist/visio/edit.d.ts.map +1 -1
  181. package/dist/visio/formula-evaluate.d.ts +2 -0
  182. package/dist/visio/formula-evaluate.d.ts.map +1 -1
  183. package/dist/visio/formula-functions.d.ts +13 -0
  184. package/dist/visio/formula-functions.d.ts.map +1 -0
  185. package/dist/visio/formula-numeric-functions.d.ts.map +1 -1
  186. package/dist/visio/formula.d.ts +14 -0
  187. package/dist/visio/formula.d.ts.map +1 -1
  188. package/dist/visio/index.cjs +11004 -5929
  189. package/dist/visio/index.d.ts +11 -1
  190. package/dist/visio/index.d.ts.map +1 -1
  191. package/dist/visio/index.mjs +10978 -5930
  192. package/dist/visio/line-jumps.d.ts +21 -0
  193. package/dist/visio/line-jumps.d.ts.map +1 -0
  194. package/dist/visio/master-list.d.ts +20 -0
  195. package/dist/visio/master-list.d.ts.map +1 -0
  196. package/dist/visio/model.d.ts +41 -0
  197. package/dist/visio/model.d.ts.map +1 -1
  198. package/dist/visio/page-layout.d.ts +40 -0
  199. package/dist/visio/page-layout.d.ts.map +1 -0
  200. package/dist/visio/page-theme.d.ts.map +1 -1
  201. package/dist/visio/parser.d.ts.map +1 -1
  202. package/dist/visio/shape-connections.d.ts +2 -2
  203. package/dist/visio/shape-connections.d.ts.map +1 -1
  204. package/dist/visio/snap-glue.d.ts +49 -0
  205. package/dist/visio/snap-glue.d.ts.map +1 -0
  206. package/dist/visio/stencil-master-part.d.ts +15 -0
  207. package/dist/visio/stencil-master-part.d.ts.map +1 -0
  208. package/dist/visio/stencil-masters.d.ts +19 -0
  209. package/dist/visio/stencil-masters.d.ts.map +1 -0
  210. package/dist/visio/stencil-windows.d.ts +20 -0
  211. package/dist/visio/stencil-windows.d.ts.map +1 -0
  212. package/dist/visio/stencils.d.ts +2 -0
  213. package/dist/visio/stencils.d.ts.map +1 -1
  214. package/dist/visio/style.d.ts +5 -0
  215. package/dist/visio/style.d.ts.map +1 -1
  216. package/dist/visio/text-extent.d.ts +40 -0
  217. package/dist/visio/text-extent.d.ts.map +1 -0
  218. package/dist/visio/text-fields.d.ts.map +1 -1
  219. package/dist/visio/theme-color-ref.d.ts +33 -0
  220. package/dist/visio/theme-color-ref.d.ts.map +1 -0
  221. package/dist/visio/ui/auto-connect.d.ts +80 -0
  222. package/dist/visio/ui/auto-connect.d.ts.map +1 -0
  223. package/dist/visio/ui/connection-points.d.ts +7 -2
  224. package/dist/visio/ui/connection-points.d.ts.map +1 -1
  225. package/dist/visio/ui/connector-preview.d.ts +3 -2
  226. package/dist/visio/ui/connector-preview.d.ts.map +1 -1
  227. package/dist/visio/ui/contract.d.ts +7 -2
  228. package/dist/visio/ui/contract.d.ts.map +1 -1
  229. package/dist/visio/ui/data-graphics.d.ts +6 -2
  230. package/dist/visio/ui/data-graphics.d.ts.map +1 -1
  231. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  232. package/dist/visio/ui/formatting.d.ts +27 -0
  233. package/dist/visio/ui/formatting.d.ts.map +1 -1
  234. package/dist/visio/ui/guides.d.ts +11 -2
  235. package/dist/visio/ui/guides.d.ts.map +1 -1
  236. package/dist/visio/ui/index.cjs +22141 -16751
  237. package/dist/visio/ui/index.d.ts +3 -0
  238. package/dist/visio/ui/index.d.ts.map +1 -1
  239. package/dist/visio/ui/index.mjs +22112 -16752
  240. package/dist/visio/ui/master-drop.d.ts +38 -0
  241. package/dist/visio/ui/master-drop.d.ts.map +1 -0
  242. package/dist/visio/ui/page-edit.d.ts.map +1 -1
  243. package/dist/visio/ui/ruler-grid.d.ts +45 -0
  244. package/dist/visio/ui/ruler-grid.d.ts.map +1 -0
  245. package/dist/visio/ui/sample-drawing.d.ts +3 -2
  246. package/dist/visio/ui/sample-drawing.d.ts.map +1 -1
  247. package/dist/visio/ui/scene-validation.d.ts.map +1 -1
  248. package/dist/visio/ui/shape-change.d.ts +16 -4
  249. package/dist/visio/ui/shape-change.d.ts.map +1 -1
  250. package/dist/visio/ui/shape-clipboard.d.ts.map +1 -1
  251. package/dist/visio/ui/shape-duplicate.d.ts +7 -1
  252. package/dist/visio/ui/shape-duplicate.d.ts.map +1 -1
  253. package/dist/visio/ui/shape-group.d.ts.map +1 -1
  254. package/dist/visio/ui/shape-order.d.ts +6 -1
  255. package/dist/visio/ui/shape-order.d.ts.map +1 -1
  256. package/dist/visio/ui/shape-resize.d.ts.map +1 -1
  257. package/dist/visio/ui/shape-rotation.d.ts +10 -1
  258. package/dist/visio/ui/shape-rotation.d.ts.map +1 -1
  259. package/dist/visio/ui/size-position.d.ts.map +1 -1
  260. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
  261. package/dist/xlsx/conditional-extensions.d.ts.map +1 -1
  262. package/dist/xlsx/edit/cell-shift.d.ts.map +1 -1
  263. package/dist/xlsx/edit/insert-guard.d.ts +6 -0
  264. package/dist/xlsx/edit/insert-guard.d.ts.map +1 -0
  265. package/dist/xlsx/edit/shift-preserved.d.ts +2 -0
  266. package/dist/xlsx/edit/shift-preserved.d.ts.map +1 -1
  267. package/dist/xlsx/edit/shift-rule-anchors.d.ts +9 -0
  268. package/dist/xlsx/edit/shift-rule-anchors.d.ts.map +1 -0
  269. package/dist/xlsx/edit/shift-sheet.d.ts.map +1 -1
  270. package/dist/xlsx/edit/structure.d.ts.map +1 -1
  271. package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
  272. package/dist/xlsx/formula/engine-util.d.ts.map +1 -1
  273. package/dist/xlsx/index.cjs +118 -16
  274. package/dist/xlsx/index.mjs +118 -16
  275. package/dist/xlsx/load/index.cjs +70 -16
  276. package/dist/xlsx/load/index.mjs +70 -16
  277. package/dist/xlsx/load/text-decode.d.ts.map +1 -1
  278. package/dist/xlsx/model.d.ts +2 -0
  279. package/dist/xlsx/model.d.ts.map +1 -1
  280. package/dist/xlsx/read/package.d.ts.map +1 -1
  281. package/dist/xlsx/read/tables.d.ts.map +1 -1
  282. package/dist/xlsx/ui/commands/number.d.ts.map +1 -1
  283. package/dist/xlsx/ui/commands/util.d.ts.map +1 -1
  284. package/dist/xlsx/ui/index.cjs +100 -1
  285. package/dist/xlsx/ui/index.mjs +100 -1
  286. package/dist/xlsx/ui/locales/de/grid.d.ts.map +1 -1
  287. package/dist/xlsx/ui/locales/en/grid.d.ts.map +1 -1
  288. package/dist/xlsx/ui/locales/es/grid.d.ts.map +1 -1
  289. package/dist/xlsx/ui/locales/fr/grid.d.ts.map +1 -1
  290. package/dist/xlsx/ui/locales/zh-CN/grid.d.ts.map +1 -1
  291. package/dist/xlsx/ui/ribbon/parts.d.ts.map +1 -1
  292. package/dist/xlsx/write/conditional.d.ts.map +1 -1
  293. package/dist/xlsx/write/styles.d.ts.map +1 -1
  294. package/dist/xlsx/write/table-patch.d.ts.map +1 -1
  295. package/package.json +6 -1
package/dist/index.cjs CHANGED
@@ -16,26 +16,36 @@ var __export = (target, all) => {
16
16
  // color/index.ts
17
17
  var color_exports = {};
18
18
  __export(color_exports, {
19
+ OFFICE_STANDARD_COLORS: () => OFFICE_STANDARD_COLORS,
20
+ OFFICE_THEME_PALETTE_COLORS: () => OFFICE_THEME_PALETTE_COLORS,
21
+ THEME_PALETTE_COLUMN_NAMES: () => THEME_PALETTE_COLUMN_NAMES,
22
+ applyThemePaletteVariant: () => applyThemePaletteVariant,
19
23
  blendColorOntoWhite: () => blendColorOntoWhite,
24
+ buildThemePalette: () => buildThemePalette,
20
25
  clampUnitInterval: () => clampUnitInterval,
21
26
  colorWithOpacity: () => colorWithOpacity,
22
27
  contrastTextColor: () => contrastTextColor,
28
+ describeThemePaletteSwatch: () => describeThemePaletteSwatch,
23
29
  hexToRgbChannels: () => hexToRgbChannels,
24
30
  hexToRgbUnit: () => hexToRgbUnit,
25
31
  hslToRgb: () => hslToRgb,
26
32
  linearToSrgb255: () => linearToSrgb255,
27
33
  normalizeHexColor: () => normalizeHexColor,
34
+ normalizePaletteHex: () => normalizePaletteHex,
28
35
  parseArgbHex: () => parseArgbHex,
29
36
  parseDrawingFraction: () => parseDrawingFraction,
30
37
  parseDrawingHueDegrees: () => parseDrawingHueDegrees,
31
38
  parseDrawingPercent: () => parseDrawingPercent,
32
39
  parseHex: () => parseHex,
33
40
  parseOoxmlPercent: () => parseOoxmlPercent,
41
+ pushRecentColor: () => pushRecentColor,
34
42
  rgbToHsl: () => rgbToHsl,
35
43
  rgbToUpperHex: () => rgbToUpperHex,
36
44
  scrgbLinearToSrgb8: () => scrgbLinearToSrgb8,
37
45
  sigmaGradientStops: () => sigmaGradientStops,
38
46
  srgb255ToLinear: () => srgb255ToLinear,
47
+ themePaletteVariantLuminance: () => themePaletteVariantLuminance,
48
+ themePaletteVariantsForLuminance: () => themePaletteVariantsForLuminance,
39
49
  toHex: () => toHex
40
50
  });
41
51
 
@@ -517,6 +527,99 @@ function parseArgbHex(hex) {
517
527
  var clamp255 = (v) => Math.max(0, Math.min(255, v));
518
528
  var rgbToUpperHex = (rgb) => `#${rgb.map((v) => clamp255(Math.round(v)).toString(16).padStart(2, "0")).join("").toUpperCase()}`;
519
529
 
530
+ // color/theme-palette.ts
531
+ var THEME_PALETTE_COLUMN_NAMES = [
532
+ "Background 1",
533
+ "Text 1",
534
+ "Background 2",
535
+ "Text 2",
536
+ "Accent 1",
537
+ "Accent 2",
538
+ "Accent 3",
539
+ "Accent 4",
540
+ "Accent 5",
541
+ "Accent 6"
542
+ ];
543
+ var OFFICE_THEME_PALETTE_COLORS = [
544
+ "#ffffff",
545
+ "#000000",
546
+ "#e7e6e6",
547
+ "#44546a",
548
+ "#4472c4",
549
+ "#ed7d31",
550
+ "#a5a5a5",
551
+ "#ffc000",
552
+ "#5b9bd5",
553
+ "#70ad47"
554
+ ];
555
+ var OFFICE_STANDARD_COLORS = [
556
+ { hex: "#c00000", label: "Dark Red" },
557
+ { hex: "#ff0000", label: "Red" },
558
+ { hex: "#ffc000", label: "Orange" },
559
+ { hex: "#ffff00", label: "Yellow" },
560
+ { hex: "#92d050", label: "Light Green" },
561
+ { hex: "#00b050", label: "Green" },
562
+ { hex: "#00b0f0", label: "Light Blue" },
563
+ { hex: "#0070c0", label: "Blue" },
564
+ { hex: "#002060", label: "Dark Blue" },
565
+ { hex: "#7030a0", label: "Purple" }
566
+ ];
567
+ var lighter = (percent) => ({ kind: "lighter", percent });
568
+ var darker = (percent) => ({ kind: "darker", percent });
569
+ function themePaletteVariantsForLuminance(l) {
570
+ if (l < 0.05) return [lighter(50), lighter(35), lighter(25), lighter(15), lighter(5)];
571
+ if (l < 0.25) return [lighter(90), lighter(75), lighter(50), lighter(25), lighter(10)];
572
+ if (l < 0.75) return [lighter(80), lighter(60), lighter(40), darker(25), darker(50)];
573
+ if (l < 0.95) return [darker(10), darker(25), darker(50), darker(75), darker(90)];
574
+ return [darker(5), darker(15), darker(25), darker(35), darker(50)];
575
+ }
576
+ function themePaletteVariantLuminance(variant) {
577
+ const fraction = variant.percent / 100;
578
+ const lumMod = Math.round((1 - fraction) * 1e5) / 1e5;
579
+ return variant.kind === "lighter" ? { lumMod, lumOff: fraction } : { lumMod };
580
+ }
581
+ function normalizePaletteHex(value) {
582
+ const digits = value.trim().replace(/^#/, "");
583
+ const rgb = hexToRgbChannels(
584
+ /^[0-9a-f]{3}$/i.test(digits) ? digits.replace(/./g, "$&$&") : digits
585
+ );
586
+ return rgb ? `#${toHex(rgb.r)}${toHex(rgb.g)}${toHex(rgb.b)}`.toLowerCase() : void 0;
587
+ }
588
+ function applyThemePaletteVariant(hex, variant) {
589
+ const rgb = hexToRgbChannels(hex);
590
+ if (!rgb) return hex;
591
+ const { h: h2, s, l } = rgbToHsl(rgb.r, rgb.g, rgb.b);
592
+ const { lumMod, lumOff } = themePaletteVariantLuminance(variant);
593
+ const next = hslToRgb(h2, s, l * lumMod + (lumOff ?? 0), (value) => Math.floor(value + 1e-6));
594
+ return `#${toHex(next.r)}${toHex(next.g)}${toHex(next.b)}`.toLowerCase();
595
+ }
596
+ function describeThemePaletteSwatch(name, variant) {
597
+ if (!variant) return name;
598
+ return `${name}, ${variant.kind === "lighter" ? "Lighter" : "Darker"} ${variant.percent}%`;
599
+ }
600
+ function buildThemePalette(colors = OFFICE_THEME_PALETTE_COLORS, names = THEME_PALETTE_COLUMN_NAMES) {
601
+ return THEME_PALETTE_COLUMN_NAMES.map((fallback, index) => {
602
+ const name = names[index] ?? fallback;
603
+ const hex = (colors[index] === void 0 ? void 0 : normalizePaletteHex(colors[index])) ?? OFFICE_THEME_PALETTE_COLORS[index];
604
+ const rgb = hexToRgbChannels(hex);
605
+ const { l } = rgbToHsl(rgb.r, rgb.g, rgb.b);
606
+ return {
607
+ name,
608
+ base: { hex, label: name },
609
+ variants: themePaletteVariantsForLuminance(l).map((variant) => ({
610
+ hex: applyThemePaletteVariant(hex, variant),
611
+ label: describeThemePaletteSwatch(name, variant),
612
+ variant
613
+ }))
614
+ };
615
+ });
616
+ }
617
+ function pushRecentColor(recent, hex, limit = 10) {
618
+ const color = normalizePaletteHex(hex);
619
+ if (!color) return [...recent];
620
+ return [color, ...recent.filter((item) => item.toLowerCase() !== color)].slice(0, limit);
621
+ }
622
+
520
623
  // chart/index.ts
521
624
  var chart_exports = {};
522
625
  __export(chart_exports, {
@@ -5896,9 +5999,11 @@ __export(text_exports, {
5896
5999
  changeTextCaseRanges: () => changeTextCaseRanges,
5897
6000
  decimalAnchorIndex: () => decimalAnchorIndex,
5898
6001
  decimalSeparatorForLanguage: () => decimalSeparatorForLanguage,
6002
+ designTextWidthEm: () => designTextWidthEm,
5899
6003
  detectFontScript: () => detectFontScript,
5900
6004
  getLeaderCharacter: () => getLeaderCharacter,
5901
6005
  getLeaderStyles: () => getLeaderStyles,
6006
+ hasDesignAdvances: () => hasDesignAdvances,
5902
6007
  hasDistinctScriptFonts: () => hasDistinctScriptFonts,
5903
6008
  resolveFontForScript: () => resolveFontForScript,
5904
6009
  segmentByScript: () => segmentByScript,
@@ -6155,6 +6260,57 @@ function changeTextCaseRanges(text3, mode, boundaries = []) {
6155
6260
  return ranges;
6156
6261
  }
6157
6262
 
6263
+ // text/font-metrics/design-advances.generated.ts
6264
+ var DESIGN_ADVANCES = {
6265
+ arial: {
6266
+ regular: "277.83 277.83 354.98 556.15 556.15 889.16 666.99 190.92 333.01 333.01 389.16 583.98 277.83 333.01 277.83 277.83 556.15 556.15 556.15 556.15 556.15 556.15 556.15 556.15 556.15 556.15 277.83 277.83 583.98 583.98 583.98 556.15 1015.14 666.99 666.99 722.17 722.17 666.99 610.84 777.83 722.17 277.83 500 666.99 556.15 833.01 722.17 777.83 666.99 777.83 722.17 666.99 610.84 722.17 666.99 943.85 666.99 666.99 610.84 277.83 277.83 277.83 469.24 556.15 333.01 556.15 556.15 500 556.15 556.15 277.83 556.15 556.15 222.17 222.17 500 222.17 833.01 556.15 556.15 556.15 556.15 333.01 500 277.83 556.15 500 722.17 500 500 500 333.98 259.77 333.98 583.98",
6267
+ bold: "277.83 333.01 474.12 556.15 556.15 889.16 722.17 237.79 333.01 333.01 389.16 583.98 277.83 333.01 277.83 277.83 556.15 556.15 556.15 556.15 556.15 556.15 556.15 556.15 556.15 556.15 333.01 333.01 583.98 583.98 583.98 610.84 975.1 722.17 722.17 722.17 722.17 666.99 610.84 777.83 722.17 277.83 556.15 722.17 610.84 833.01 722.17 777.83 666.99 777.83 722.17 666.99 610.84 722.17 666.99 943.85 666.99 666.99 610.84 333.01 277.83 333.01 583.98 556.15 333.01 556.15 610.84 556.15 610.84 556.15 333.01 610.84 610.84 277.83 277.83 556.15 277.83 889.16 610.84 610.84 610.84 610.84 389.16 556.15 333.01 610.84 556.15 777.83 556.15 556.15 500 389.16 279.79 389.16 583.98"
6268
+ },
6269
+ calibri: {
6270
+ regular: "226.07 325.68 400.88 498.05 506.83 714.85 682.13 220.7 303.22 303.22 498.05 498.05 249.51 306.15 252.44 386.23 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 267.58 267.58 498.05 498.05 498.05 463.38 894.04 578.61 543.95 533.2 615.23 488.28 459.47 630.86 623.05 251.95 318.85 519.53 420.41 854.98 645.51 662.11 516.6 672.85 542.97 459.47 487.3 641.6 567.38 889.65 519.04 487.3 468.26 306.64 386.23 306.64 498.05 498.05 291.02 479 525.39 422.85 525.39 497.56 305.18 470.7 525.39 229.49 239.26 454.59 229.49 798.83 525.39 527.34 525.39 525.39 348.63 391.11 334.96 525.39 451.66 714.85 433.11 452.64 395.02 314.45 460.45 314.45 498.05",
6271
+ bold: "226.07 325.68 438.48 498.05 506.83 729 704.59 233.4 311.52 311.52 498.05 498.05 257.81 306.15 267.09 429.69 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 275.88 275.88 498.05 498.05 498.05 463.38 898.44 605.96 560.55 529.3 630.37 487.79 458.98 637.21 630.86 266.6 331.05 546.88 422.85 874.02 658.69 676.27 532.23 686.04 562.99 472.66 495.12 652.83 591.31 906.25 550.78 519.53 478.03 324.71 429.69 324.71 498.05 498.05 300.29 493.65 536.62 418.46 536.62 503.42 316.41 474.12 536.62 245.6 255.37 479.98 245.6 813.48 536.62 537.6 536.62 536.62 355.47 398.93 346.68 536.62 473.14 745.12 459.47 473.63 397.46 343.75 475.1 343.75 498.05"
6272
+ },
6273
+ "calibri light": {
6274
+ regular: "226.07 325.68 380.37 498.05 506.83 707.03 669.92 213.87 298.83 298.83 498.05 498.05 244.63 306.15 244.63 362.3 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 506.83 262.69 262.69 498.05 498.05 498.05 463.38 891.6 563.48 535.16 535.16 606.93 488.77 459.96 627.44 619.14 244.14 312.5 504.4 418.94 844.73 638.18 654.3 507.81 666.02 532.23 452.64 483.4 635.74 554.2 880.86 501.46 469.24 463.38 296.88 362.3 296.88 498.05 498.05 286.13 470.7 519.53 425.29 519.53 494.14 298.83 468.75 519.53 220.7 229.98 440.92 220.7 791.02 519.53 521.49 519.53 519.53 344.73 386.72 328.61 519.53 439.94 698.73 418.46 440.92 393.56 298.83 452.64 298.83 498.05",
6275
+ bold: "222.17 319.82 373.54 488.77 497.56 693.85 657.23 209.96 293.46 293.46 488.77 488.77 240.24 300.78 240.24 355.96 497.56 497.56 497.56 497.56 497.56 497.56 497.56 497.56 497.56 497.56 258.3 258.3 488.77 488.77 488.77 454.59 874.51 552.74 525.39 525.39 595.7 479.49 451.66 615.72 607.42 239.75 307.13 495.12 411.13 828.61 625.98 642.09 498.54 653.32 522.46 444.34 474.61 624.02 543.95 864.26 492.19 460.45 454.59 291.5 355.96 291.5 488.77 488.77 281.25 461.92 509.77 417.48 509.77 484.86 293.46 459.96 509.77 216.8 226.07 432.62 216.8 775.88 509.77 511.72 509.77 509.77 338.38 379.88 322.75 509.77 431.64 685.55 410.64 432.62 386.23 293.46 444.34 293.46 488.77"
6276
+ },
6277
+ "segoe ui": {
6278
+ regular: "273.93 284.18 392.09 590.82 539.06 818.36 800.29 229.98 301.76 301.76 416.99 684.08 216.8 399.9 216.8 389.65 539.06 539.06 539.06 539.06 539.06 539.06 539.06 539.06 539.06 539.06 216.8 216.8 684.08 684.08 684.08 448.24 955.08 645.02 573.24 619.14 701.17 505.86 488.28 686.04 709.96 266.11 356.94 580.08 470.7 897.95 748.05 753.91 560.06 753.91 598.14 531.25 523.93 687.01 621.09 934.08 589.85 552.74 570.31 301.76 378.91 301.76 684.08 415.04 268.07 508.79 587.89 461.92 588.87 522.95 312.99 588.87 565.92 242.19 242.19 497.07 242.19 861.33 565.92 585.94 587.89 588.87 347.66 424.32 338.87 565.92 479 722.66 458.98 483.89 452.15 301.76 239.26 301.76 684.08",
6279
+ bold: "275.88 327.15 493.17 592.29 575.2 867.19 849.61 292.97 369.14 369.14 455.08 707.03 271 404.3 271 443.36 575.2 575.2 575.2 575.2 575.2 575.2 575.2 575.2 575.2 575.2 271 271 707.03 707.03 707.03 437.99 954.1 703.12 641.11 624.02 737.31 532.23 520.02 710.94 766.11 316.89 445.31 648.93 511.23 957.03 790.04 758.3 614.26 758.3 652.83 560.55 585.94 723.14 666.99 1004.88 655.27 606.93 606.93 369.14 436.04 369.14 707.03 415.04 313.96 538.09 620.12 479.98 619.14 541.02 383.3 619.14 602.05 284.18 284.18 559.08 284.18 916.01 604.98 611.33 620.12 619.14 397.95 439.94 389.16 604.98 541.99 797.36 552.25 538.09 479 369.14 326.17 369.14 707.03"
6280
+ },
6281
+ "times new roman": {
6282
+ regular: "250 333.01 408.2 500 500 833.01 777.83 180.18 333.01 333.01 500 563.96 250 333.01 250 277.83 500 500 500 500 500 500 500 500 500 500 277.83 277.83 563.96 563.96 563.96 443.85 920.9 722.17 666.99 666.99 722.17 610.84 556.15 722.17 722.17 333.01 389.16 722.17 610.84 889.16 722.17 722.17 556.15 722.17 666.99 556.15 610.84 722.17 722.17 943.85 722.17 722.17 610.84 333.01 277.83 333.01 469.24 500 333.01 443.85 500 443.85 500 443.85 333.01 500 500 277.83 277.83 500 277.83 777.83 500 500 500 500 333.01 389.16 277.83 500 500 722.17 500 500 443.85 479.98 200.2 479.98 541.02",
6283
+ bold: "250 333.01 555.17 500 500 1000 833.01 277.83 333.01 333.01 500 569.83 250 333.01 250 277.83 500 500 500 500 500 500 500 500 500 500 333.01 333.01 569.83 569.83 569.83 500 930.18 722.17 666.99 722.17 722.17 666.99 610.84 777.83 777.83 389.16 500 777.83 666.99 943.85 722.17 777.83 610.84 777.83 722.17 556.15 666.99 722.17 722.17 1000 722.17 722.17 666.99 333.01 277.83 333.01 581.06 500 333.01 500 556.15 443.85 556.15 443.85 333.01 500 556.15 277.83 333.01 556.15 277.83 833.01 556.15 500 556.15 556.15 443.85 389.16 333.01 556.15 500 722.17 500 500 443.85 394.04 220.22 394.04 520.02"
6284
+ }
6285
+ };
6286
+
6287
+ // text/font-metrics/advance-width.ts
6288
+ var FIRST = 32;
6289
+ var decoded = /* @__PURE__ */ new Map();
6290
+ function advances(family, bold) {
6291
+ const name = family.trim().toLowerCase();
6292
+ const key = `${name}|${bold ? "b" : "r"}`;
6293
+ const known = decoded.get(key);
6294
+ if (known) return known;
6295
+ const table = Object.hasOwn(DESIGN_ADVANCES, name) ? DESIGN_ADVANCES[name] : void 0;
6296
+ if (!table) return void 0;
6297
+ const values = (bold ? table.bold : table.regular).split(" ").map(Number);
6298
+ decoded.set(key, values);
6299
+ return values;
6300
+ }
6301
+ var hasDesignAdvances = (family) => !!advances(family, false);
6302
+ function designTextWidthEm(text3, family, bold = false) {
6303
+ const table = advances(family, bold);
6304
+ if (!table) return void 0;
6305
+ let units2 = 0;
6306
+ for (let index = 0; index < text3.length; ++index) {
6307
+ const advance = table[text3.charCodeAt(index) - FIRST];
6308
+ if (advance === void 0 || Number.isNaN(advance)) return void 0;
6309
+ units2 += advance;
6310
+ }
6311
+ return units2 / 1e3;
6312
+ }
6313
+
6158
6314
  // i18n/index.ts
6159
6315
  var i18n_exports = {};
6160
6316
  __export(i18n_exports, {
@@ -6226,6 +6382,37 @@ function createTranslator(messages, fallbacks = [], options = {}) {
6226
6382
  };
6227
6383
  }
6228
6384
 
6385
+ // ribbon/index.ts
6386
+ var ribbon_exports = {};
6387
+ __export(ribbon_exports, {
6388
+ RIBBON_ADD_IN_EVENT: () => RIBBON_ADD_IN_EVENT,
6389
+ acceptedRibbonAddIns: () => acceptedRibbonAddIns,
6390
+ findRibbonAddInCommand: () => findRibbonAddInCommand,
6391
+ ribbonAddInCommands: () => ribbonAddInCommands
6392
+ });
6393
+
6394
+ // ribbon/add-in.ts
6395
+ var RIBBON_ADD_IN_EVENT = "office-ribbon-add-in";
6396
+ function acceptedRibbonAddIns(tabs, reserved = []) {
6397
+ const taken = new Set(reserved);
6398
+ const accepted = [];
6399
+ for (const tab of tabs ?? []) {
6400
+ if (!tab || typeof tab.id !== "string" || !tab.id || taken.has(tab.id)) continue;
6401
+ taken.add(tab.id);
6402
+ accepted.push(tab);
6403
+ }
6404
+ return accepted;
6405
+ }
6406
+ function ribbonAddInCommands(tab) {
6407
+ const flatten = (commands) => commands.flatMap((command) => [command, ...flatten(command.items ?? [])]);
6408
+ return flatten(tab.groups.flatMap((group) => group.commands));
6409
+ }
6410
+ function findRibbonAddInCommand(tab, id) {
6411
+ if (id === void 0) return void 0;
6412
+ const command = ribbonAddInCommands(tab).find((candidate) => candidate.id === id);
6413
+ return command && !command.disabled ? command : void 0;
6414
+ }
6415
+
6229
6416
  // drawingml/index.ts
6230
6417
  var drawingml_exports = {};
6231
6418
  __export(drawingml_exports, {
@@ -30648,8 +30835,8 @@ function resolveReferenceUriToPart(uri) {
30648
30835
  if (trimmed.length === 0 || trimmed.startsWith("#")) {
30649
30836
  return void 0;
30650
30837
  }
30651
- const decoded = decodeURIComponent(trimmed);
30652
- return normalizePartPath(decoded.startsWith("/") ? decoded.slice(1) : decoded);
30838
+ const decoded2 = decodeURIComponent(trimmed);
30839
+ return normalizePartPath(decoded2.startsWith("/") ? decoded2.slice(1) : decoded2);
30653
30840
  }
30654
30841
 
30655
30842
  // opc/signature/digest.ts
@@ -33028,6 +33215,7 @@ __export(geometry_exports, {
33028
33215
  BRACE_TEXT_RECTS: () => BRACE_TEXT_RECTS,
33029
33216
  CALLOUT_CONNECTION_SITES: () => CALLOUT_CONNECTION_SITES,
33030
33217
  CALLOUT_TEXT_RECTS: () => CALLOUT_TEXT_RECTS,
33218
+ CANVAS_SENTINEL: () => CANVAS_SENTINEL,
33031
33219
  CARDINAL_SITES: () => CARDINAL_SITES,
33032
33220
  CHART_MARK_PRESET_DEFINITIONS: () => CHART_MARK_PRESET_DEFINITIONS,
33033
33221
  CIRCULAR_ARROW_CONNECTION_SITES: () => CIRCULAR_ARROW_CONNECTION_SITES,
@@ -33058,6 +33246,7 @@ __export(geometry_exports, {
33058
33246
  MISC_SHAPE_CONNECTION_SITES: () => MISC_SHAPE_CONNECTION_SITES,
33059
33247
  MISC_TEXT_RECTS_A: () => MISC_TEXT_RECTS_A,
33060
33248
  MISC_TEXT_RECTS_B: () => MISC_TEXT_RECTS_B,
33249
+ PADDING_DEFAULT: () => PADDING_DEFAULT,
33061
33250
  POLYGON_CONNECTION_SITES: () => POLYGON_CONNECTION_SITES,
33062
33251
  POLYGON_TEXT_RECTS: () => POLYGON_TEXT_RECTS,
33063
33252
  PRESET_GEOMETRY_ALIASES: () => PRESET_GEOMETRY_ALIASES,
@@ -33073,6 +33262,7 @@ __export(geometry_exports, {
33073
33262
  REFINED_ARROW_PRESET_DEFINITIONS: () => REFINED_ARROW_PRESET_DEFINITIONS,
33074
33263
  RIBBON_CONNECTION_SITES: () => RIBBON_CONNECTION_SITES,
33075
33264
  RIBBON_TEXT_RECTS: () => RIBBON_TEXT_RECTS,
33265
+ ROUTING_PADDING_DEFAULT: () => ROUTING_PADDING_DEFAULT,
33076
33266
  SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS: () => SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS,
33077
33267
  SNAP_THRESHOLD: () => SNAP_THRESHOLD,
33078
33268
  STAR_CONNECTION_SITES: () => STAR_CONNECTION_SITES,
@@ -33082,12 +33272,14 @@ __export(geometry_exports, {
33082
33272
  TAB_CONNECTION_SITES: () => TAB_CONNECTION_SITES,
33083
33273
  TAB_TEXT_RECTS: () => TAB_TEXT_RECTS,
33084
33274
  _internalForTests: () => _internalForTests,
33275
+ aStarOrthogonal: () => aStarOrthogonal,
33085
33276
  alignElements: () => alignElements,
33086
33277
  angleToRadians: () => angleToRadians,
33087
33278
  arrowKeyDelta: () => arrowKeyDelta,
33088
33279
  at: () => at,
33089
33280
  autoAlignBoxes: () => autoAlignBoxes,
33090
33281
  buildCalloutLeaderLineSvgPath: () => buildCalloutLeaderLineSvgPath,
33282
+ buildGraphNodes: () => buildGraphNodes,
33091
33283
  clipPolygons: () => clipPolygons,
33092
33284
  combineShapes: () => combineShapes,
33093
33285
  composeAffine: () => composeAffine,
@@ -33104,6 +33296,7 @@ __export(geometry_exports, {
33104
33296
  curvedElbowPathD: () => curvedElbowPathD,
33105
33297
  cxn: () => cxn,
33106
33298
  dedupPoly: () => dedupPoly,
33299
+ directPathClear: () => directPathClear,
33107
33300
  distributeElements: () => distributeElements,
33108
33301
  elbowCurveSegments: () => elbowCurveSegments,
33109
33302
  elbowSegmentCount: () => elbowSegmentCount,
@@ -33128,6 +33321,8 @@ __export(geometry_exports, {
33128
33321
  getPresetConnectionSites: () => getPresetConnectionSites,
33129
33322
  getPresetShapeClipPath: () => getPresetShapeClipPath,
33130
33323
  getPresetTextRect: () => getPresetTextRect,
33324
+ heuristic: () => heuristic,
33325
+ inflateRect: () => inflateRect,
33131
33326
  insertIntersections: () => insertIntersections,
33132
33327
  intersectPolygons: () => intersectPolygons,
33133
33328
  intersectShapes: () => intersectShapes,
@@ -33147,15 +33342,21 @@ __export(geometry_exports, {
33147
33342
  parseFormula: () => parseFormula,
33148
33343
  parseGuideDefinitions: () => parseGuideDefinitions,
33149
33344
  pointInPolygon: () => pointInPolygon,
33345
+ pointInRect: () => pointInRect,
33150
33346
  pointInTriangle: () => pointInTriangle,
33347
+ pointKey: () => pointKey,
33151
33348
  polygonArea: () => polygonArea,
33152
33349
  polygonsToSvgPath: () => polygonsToSvgPath,
33153
33350
  resolveAlignReferenceBox: () => resolveAlignReferenceBox,
33154
33351
  resolveCoordinate: () => resolveCoordinate,
33155
33352
  resolveOperand: () => resolveOperand,
33156
33353
  resolveRotateHandlePlacement: () => resolveRotateHandlePlacement,
33354
+ routeConnector: () => routeConnector,
33355
+ routeOrthogonalConnector: () => routeOrthogonalConnector,
33157
33356
  segmentIntersection: () => segmentIntersection,
33357
+ segmentIntersectsRect: () => segmentIntersectsRect,
33158
33358
  signedArea: () => signedArea,
33359
+ simplifyPath: () => simplifyPath,
33159
33360
  snapAngle: () => snapAngle,
33160
33361
  snapBox: () => snapBox,
33161
33362
  snapToGridStep: () => snapToGridStep,
@@ -33170,7 +33371,9 @@ __export(geometry_exports, {
33170
33371
  unionShapes: () => unionShapes,
33171
33372
  unionSvgPaths: () => unionSvgPaths,
33172
33373
  usesSlideReference: () => usesSlideReference,
33173
- vec2Eq: () => vec2Eq
33374
+ vec2Eq: () => vec2Eq,
33375
+ waypointsToPathD: () => waypointsToPathD,
33376
+ waypointsToPathData: () => waypointsToPathData
33174
33377
  });
33175
33378
 
33176
33379
  // geometry/adjustment-aware-shapes.ts
@@ -34111,6 +34314,309 @@ function curvedElbowPathD(startX, startY, endX, endY, segments, adj1, adj2, adj3
34111
34314
  ].join(" ");
34112
34315
  }
34113
34316
 
34317
+ // geometry/connector-router-types.ts
34318
+ var PADDING_DEFAULT = 12;
34319
+ var ROUTING_PADDING_DEFAULT = PADDING_DEFAULT;
34320
+ var CANVAS_SENTINEL = 1e5;
34321
+
34322
+ // geometry/connector-router-graph.ts
34323
+ function inflateRect(r, pad2) {
34324
+ return {
34325
+ x: r.x - pad2,
34326
+ y: r.y - pad2,
34327
+ width: r.width + pad2 * 2,
34328
+ height: r.height + pad2 * 2
34329
+ };
34330
+ }
34331
+ function pointInRect(p, r) {
34332
+ return p.x >= r.x && p.x <= r.x + r.width && p.y >= r.y && p.y <= r.y + r.height;
34333
+ }
34334
+ function segmentIntersectsRect(a2, b, r) {
34335
+ const minX = Math.min(a2.x, b.x);
34336
+ const maxX = Math.max(a2.x, b.x);
34337
+ const minY = Math.min(a2.y, b.y);
34338
+ const maxY = Math.max(a2.y, b.y);
34339
+ const rRight = r.x + r.width;
34340
+ const rBottom = r.y + r.height;
34341
+ if (maxX < r.x || minX > rRight || maxY < r.y || minY > rBottom) {
34342
+ return false;
34343
+ }
34344
+ if (Math.abs(a2.y - b.y) < 0.5) {
34345
+ return a2.y >= r.y && a2.y <= rBottom && maxX >= r.x && minX <= rRight;
34346
+ }
34347
+ if (Math.abs(a2.x - b.x) < 0.5) {
34348
+ return a2.x >= r.x && a2.x <= rRight && maxY >= r.y && minY <= rBottom;
34349
+ }
34350
+ return true;
34351
+ }
34352
+ function directPathClear(start, end, inflated) {
34353
+ for (const rect3 of inflated) {
34354
+ if (segmentIntersectsRect(start, end, rect3)) {
34355
+ return false;
34356
+ }
34357
+ }
34358
+ return true;
34359
+ }
34360
+ function heuristic(a2, b) {
34361
+ return Math.abs(a2.x - b.x) + Math.abs(a2.y - b.y);
34362
+ }
34363
+ function pointKey(p) {
34364
+ return `${Math.round(p.x)},${Math.round(p.y)}`;
34365
+ }
34366
+ function buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight) {
34367
+ const margin = 4;
34368
+ const nodes = [start, end];
34369
+ for (const r of inflated) {
34370
+ const corners = [
34371
+ { x: r.x - margin, y: r.y - margin },
34372
+ { x: r.x + r.width + margin, y: r.y - margin },
34373
+ { x: r.x - margin, y: r.y + r.height + margin },
34374
+ { x: r.x + r.width + margin, y: r.y + r.height + margin }
34375
+ ];
34376
+ for (const c2 of corners) {
34377
+ if (c2.x >= 0 && c2.x <= canvasWidth && c2.y >= 0 && c2.y <= canvasHeight) {
34378
+ let blocked = false;
34379
+ for (const rect3 of inflated) {
34380
+ if (pointInRect(c2, rect3)) {
34381
+ blocked = true;
34382
+ break;
34383
+ }
34384
+ }
34385
+ if (!blocked) {
34386
+ nodes.push(c2);
34387
+ }
34388
+ }
34389
+ }
34390
+ }
34391
+ const projections = [];
34392
+ for (const node of nodes) {
34393
+ projections.push({ x: start.x, y: node.y });
34394
+ projections.push({ x: node.x, y: start.y });
34395
+ projections.push({ x: end.x, y: node.y });
34396
+ projections.push({ x: node.x, y: end.y });
34397
+ }
34398
+ for (const p of projections) {
34399
+ if (p.x >= 0 && p.x <= canvasWidth && p.y >= 0 && p.y <= canvasHeight) {
34400
+ let blocked = false;
34401
+ for (const rect3 of inflated) {
34402
+ if (pointInRect(p, rect3)) {
34403
+ blocked = true;
34404
+ break;
34405
+ }
34406
+ }
34407
+ if (!blocked) {
34408
+ nodes.push(p);
34409
+ }
34410
+ }
34411
+ }
34412
+ return nodes;
34413
+ }
34414
+
34415
+ // geometry/connector-router-astar.ts
34416
+ var MAX_ASTAR_ITERATIONS = 2e3;
34417
+ function aStarOrthogonal(nodes, start, end, inflated) {
34418
+ const startKey = pointKey(start);
34419
+ const endKey = pointKey(end);
34420
+ const canConnect = (a2, b) => {
34421
+ const isHoriz = Math.abs(a2.y - b.y) < 1;
34422
+ const isVert = Math.abs(a2.x - b.x) < 1;
34423
+ if (isHoriz || isVert) {
34424
+ for (const rect3 of inflated) {
34425
+ if (segmentIntersectsRect(a2, b, rect3)) {
34426
+ return false;
34427
+ }
34428
+ }
34429
+ return true;
34430
+ }
34431
+ const bend1 = { x: b.x, y: a2.y };
34432
+ const bend2 = { x: a2.x, y: b.y };
34433
+ let path1Clear = true;
34434
+ let path2Clear = true;
34435
+ for (const rect3 of inflated) {
34436
+ if (path1Clear && (segmentIntersectsRect(a2, bend1, rect3) || segmentIntersectsRect(bend1, b, rect3))) {
34437
+ path1Clear = false;
34438
+ }
34439
+ if (path2Clear && (segmentIntersectsRect(a2, bend2, rect3) || segmentIntersectsRect(bend2, b, rect3))) {
34440
+ path2Clear = false;
34441
+ }
34442
+ if (!path1Clear && !path2Clear) {
34443
+ break;
34444
+ }
34445
+ }
34446
+ return path1Clear || path2Clear;
34447
+ };
34448
+ const gScore = /* @__PURE__ */ new Map();
34449
+ const fScore = /* @__PURE__ */ new Map();
34450
+ const cameFrom = /* @__PURE__ */ new Map();
34451
+ const bendPoint = /* @__PURE__ */ new Map();
34452
+ gScore.set(startKey, 0);
34453
+ fScore.set(startKey, heuristic(start, end));
34454
+ const openSet = /* @__PURE__ */ new Set([startKey]);
34455
+ const nodeMap = /* @__PURE__ */ new Map();
34456
+ for (const n2 of nodes) {
34457
+ nodeMap.set(pointKey(n2), n2);
34458
+ }
34459
+ const getLowest = () => {
34460
+ let best;
34461
+ let bestScore = Infinity;
34462
+ for (const key of openSet) {
34463
+ const score = fScore.get(key) ?? Infinity;
34464
+ if (score < bestScore) {
34465
+ bestScore = score;
34466
+ best = key;
34467
+ }
34468
+ }
34469
+ return best;
34470
+ };
34471
+ let iterations = 0;
34472
+ while (openSet.size > 0 && iterations < MAX_ASTAR_ITERATIONS) {
34473
+ iterations++;
34474
+ const currentKey = getLowest();
34475
+ if (currentKey === void 0) {
34476
+ break;
34477
+ }
34478
+ if (currentKey === endKey) {
34479
+ const path2 = [];
34480
+ let key = endKey;
34481
+ while (key !== void 0) {
34482
+ const node = nodeMap.get(key);
34483
+ if (node !== void 0) {
34484
+ const bp = bendPoint.get(key);
34485
+ if (bp !== void 0 && bp !== null) {
34486
+ path2.unshift(node);
34487
+ path2.unshift(bp);
34488
+ } else {
34489
+ path2.unshift(node);
34490
+ }
34491
+ }
34492
+ key = cameFrom.get(key);
34493
+ }
34494
+ return path2;
34495
+ }
34496
+ openSet.delete(currentKey);
34497
+ const current = nodeMap.get(currentKey);
34498
+ if (current === void 0) {
34499
+ continue;
34500
+ }
34501
+ for (const neighbor of nodes) {
34502
+ const neighborKey = pointKey(neighbor);
34503
+ if (neighborKey === currentKey) {
34504
+ continue;
34505
+ }
34506
+ if (!canConnect(current, neighbor)) {
34507
+ continue;
34508
+ }
34509
+ const isHoriz = Math.abs(current.y - neighbor.y) < 1;
34510
+ const isVert = Math.abs(current.x - neighbor.x) < 1;
34511
+ let dist;
34512
+ let bp = null;
34513
+ if (isHoriz || isVert) {
34514
+ dist = heuristic(current, neighbor);
34515
+ } else {
34516
+ const bend1 = { x: neighbor.x, y: current.y };
34517
+ const bend2 = { x: current.x, y: neighbor.y };
34518
+ let use1 = true;
34519
+ for (const rect3 of inflated) {
34520
+ if (segmentIntersectsRect(current, bend1, rect3) || segmentIntersectsRect(bend1, neighbor, rect3)) {
34521
+ use1 = false;
34522
+ break;
34523
+ }
34524
+ }
34525
+ bp = use1 ? bend1 : bend2;
34526
+ dist = Math.abs(current.x - bp.x) + Math.abs(current.y - bp.y) + Math.abs(bp.x - neighbor.x) + Math.abs(bp.y - neighbor.y);
34527
+ }
34528
+ const tentativeG = (gScore.get(currentKey) ?? Infinity) + dist;
34529
+ if (tentativeG < (gScore.get(neighborKey) ?? Infinity)) {
34530
+ cameFrom.set(neighborKey, currentKey);
34531
+ bendPoint.set(neighborKey, bp);
34532
+ gScore.set(neighborKey, tentativeG);
34533
+ fScore.set(neighborKey, tentativeG + heuristic(neighbor, end));
34534
+ openSet.add(neighborKey);
34535
+ }
34536
+ }
34537
+ }
34538
+ return [start, end];
34539
+ }
34540
+ function simplifyPath(points) {
34541
+ if (points.length <= 2) {
34542
+ return [...points];
34543
+ }
34544
+ const result = [points[0]];
34545
+ for (let i2 = 1; i2 < points.length - 1; i2++) {
34546
+ const prev = result[result.length - 1];
34547
+ const curr = points[i2];
34548
+ const next = points[i2 + 1];
34549
+ const sameX = Math.abs(prev.x - curr.x) < 1 && Math.abs(curr.x - next.x) < 1;
34550
+ const sameY = Math.abs(prev.y - curr.y) < 1 && Math.abs(curr.y - next.y) < 1;
34551
+ if (!sameX && !sameY) {
34552
+ result.push(curr);
34553
+ } else if (!sameX || !sameY) {
34554
+ if (!(sameX || sameY)) {
34555
+ result.push(curr);
34556
+ }
34557
+ }
34558
+ }
34559
+ result.push(points[points.length - 1]);
34560
+ return result;
34561
+ }
34562
+
34563
+ // geometry/connector-router.ts
34564
+ function routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight) {
34565
+ if (obstacles.length === 0) {
34566
+ return [start, end];
34567
+ }
34568
+ const inflated = obstacles.map((r) => inflateRect(r, padding));
34569
+ if (directPathClear(start, end, inflated)) {
34570
+ return [start, end];
34571
+ }
34572
+ const midH = { x: end.x, y: start.y };
34573
+ const midV = { x: start.x, y: end.y };
34574
+ let elbowHClear = true;
34575
+ let elbowVClear = true;
34576
+ for (const rect3 of inflated) {
34577
+ if (elbowHClear && (segmentIntersectsRect(start, midH, rect3) || segmentIntersectsRect(midH, end, rect3))) {
34578
+ elbowHClear = false;
34579
+ }
34580
+ if (elbowVClear && (segmentIntersectsRect(start, midV, rect3) || segmentIntersectsRect(midV, end, rect3))) {
34581
+ elbowVClear = false;
34582
+ }
34583
+ if (!elbowHClear && !elbowVClear) {
34584
+ break;
34585
+ }
34586
+ }
34587
+ if (elbowHClear) {
34588
+ return [start, midH, end];
34589
+ }
34590
+ if (elbowVClear) {
34591
+ return [start, midV, end];
34592
+ }
34593
+ const nodes = buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight);
34594
+ const path2 = aStarOrthogonal(nodes, start, end, inflated);
34595
+ return simplifyPath(path2);
34596
+ }
34597
+ function routeConnector(options) {
34598
+ const { start, end, obstacles, canvasWidth, canvasHeight, padding = PADDING_DEFAULT } = options;
34599
+ return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
34600
+ }
34601
+ function waypointsToPathData(waypoints) {
34602
+ if (waypoints.length === 0) {
34603
+ return "";
34604
+ }
34605
+ return waypoints.map((point, index) => `${index === 0 ? "M" : "L"} ${point.x} ${point.y}`).join(" ");
34606
+ }
34607
+ function routeOrthogonalConnector(start, end, obstacles, opts) {
34608
+ const padding = opts?.padding ?? PADDING_DEFAULT;
34609
+ const canvasWidth = opts?.canvasWidth ?? CANVAS_SENTINEL;
34610
+ const canvasHeight = opts?.canvasHeight ?? CANVAS_SENTINEL;
34611
+ return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
34612
+ }
34613
+ function waypointsToPathD(waypoints) {
34614
+ if (waypoints.length === 0) {
34615
+ return "";
34616
+ }
34617
+ return waypoints.map((point, index) => `${index === 0 ? "M" : "L"}${point.x},${point.y}`).join(" ");
34618
+ }
34619
+
34114
34620
  // geometry/preset-clip-paths-core.ts
34115
34621
  var CLIP_PATHS_CORE = {
34116
34622
  // ── Lines ─────────────────────────────────────────────────────────────
@@ -41925,6 +42431,7 @@ exports.geometry = geometry_exports;
41925
42431
  exports.i18n = i18n_exports;
41926
42432
  exports.math = math_exports;
41927
42433
  exports.opc = opc_exports;
42434
+ exports.ribbon = ribbon_exports;
41928
42435
  exports.text = text_exports;
41929
42436
  exports.units = units_exports;
41930
42437
  exports.xml = xml_exports;
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * as color from './color/index.js';
2
2
  export * as chart from './chart/index.js';
3
3
  export * as text from './text/index.js';
4
4
  export * as i18n from './i18n/index.js';
5
+ export * as ribbon from './ribbon/index.js';
5
6
  export * as drawingml from './drawingml/index.js';
6
7
  export * as diagram from './diagram/index.js';
7
8
  export * as digest from './digest/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC"}