ooxml-core 1.6.2 → 1.8.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 (308) hide show
  1. package/dist/automation/index.cjs +11143 -6014
  2. package/dist/automation/index.mjs +11143 -6014
  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 +344 -0
  28. package/dist/geometry/index.d.ts +2 -0
  29. package/dist/geometry/index.d.ts.map +1 -1
  30. package/dist/geometry/index.mjs +327 -1
  31. package/dist/geometry/nudge.d.ts +12 -0
  32. package/dist/geometry/nudge.d.ts.map +1 -0
  33. package/dist/geometry/preset-shape-definitions-chart-marks.d.ts.map +1 -1
  34. package/dist/geometry/preset-shape-paths.d.ts +1 -1
  35. package/dist/geometry/preset-shape-paths.d.ts.map +1 -1
  36. package/dist/geometry/rotation-drag.d.ts +6 -0
  37. package/dist/geometry/rotation-drag.d.ts.map +1 -1
  38. package/dist/index.cjs +535 -3
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.mjs +535 -4
  42. package/dist/math/omml-to-latex.d.ts.map +1 -1
  43. package/dist/pptx/automation/index.cjs +7 -2
  44. package/dist/pptx/automation/index.d.ts.map +1 -1
  45. package/dist/pptx/chunks/index-Cn-GzYGp.d.ts.map +1 -1
  46. package/dist/pptx/cli/index.cjs +7 -2
  47. package/dist/pptx/converter/index.cjs +7 -2
  48. package/dist/pptx/index.cjs +7 -2
  49. package/dist/pptx/signature-node/index.cjs +37 -7
  50. package/dist/pptx/signature-node/index.d.ts.map +1 -1
  51. package/dist/pptx/signature-node/index.mjs +37 -7
  52. package/dist/pptx/ui/index.cjs +22 -24
  53. package/dist/pptx/ui/index.d.ts +14 -7
  54. package/dist/pptx/ui/index.d.ts.map +1 -1
  55. package/dist/pptx/ui/index.mjs +22 -24
  56. package/dist/ribbon/add-in.d.ts +53 -0
  57. package/dist/ribbon/add-in.d.ts.map +1 -0
  58. package/dist/ribbon/index.cjs +28 -0
  59. package/dist/ribbon/index.d.ts +2 -0
  60. package/dist/ribbon/index.d.ts.map +1 -0
  61. package/dist/ribbon/index.mjs +23 -0
  62. package/dist/teams/files.d.ts.map +1 -1
  63. package/dist/teams/index.cjs +36 -17
  64. package/dist/teams/index.mjs +36 -17
  65. package/dist/text/font-metrics/advance-width.d.ts +9 -0
  66. package/dist/text/font-metrics/advance-width.d.ts.map +1 -0
  67. package/dist/text/font-metrics/design-advances.generated.d.ts +12 -0
  68. package/dist/text/font-metrics/design-advances.generated.d.ts.map +1 -0
  69. package/dist/text/index.cjs +53 -0
  70. package/dist/text/index.d.ts +1 -0
  71. package/dist/text/index.d.ts.map +1 -1
  72. package/dist/text/index.mjs +52 -1
  73. package/dist/visio/clipboard-types.d.ts +8 -0
  74. package/dist/visio/clipboard-types.d.ts.map +1 -1
  75. package/dist/visio/clipboard-xml.d.ts.map +1 -1
  76. package/dist/visio/clipboard.d.ts.map +1 -1
  77. package/dist/visio/connector-route-avoid.d.ts +24 -0
  78. package/dist/visio/connector-route-avoid.d.ts.map +1 -0
  79. package/dist/visio/connector-route-walk.d.ts +37 -0
  80. package/dist/visio/connector-route-walk.d.ts.map +1 -0
  81. package/dist/visio/connector-route.d.ts +5 -2
  82. package/dist/visio/connector-route.d.ts.map +1 -1
  83. package/dist/visio/create-document.d.ts +6 -0
  84. package/dist/visio/create-document.d.ts.map +1 -1
  85. package/dist/visio/edit-change-shape-builtin.d.ts +18 -0
  86. package/dist/visio/edit-change-shape-builtin.d.ts.map +1 -0
  87. package/dist/visio/edit-change-shape-commands.d.ts +10 -4
  88. package/dist/visio/edit-change-shape-commands.d.ts.map +1 -1
  89. package/dist/visio/edit-change-shape.d.ts +3 -1
  90. package/dist/visio/edit-change-shape.d.ts.map +1 -1
  91. package/dist/visio/edit-commands.d.ts +7 -1
  92. package/dist/visio/edit-commands.d.ts.map +1 -1
  93. package/dist/visio/edit-connector-layout.d.ts +2 -2
  94. package/dist/visio/edit-connector-layout.d.ts.map +1 -1
  95. package/dist/visio/edit-connector-obstacles.d.ts +14 -0
  96. package/dist/visio/edit-connector-obstacles.d.ts.map +1 -0
  97. package/dist/visio/edit-connector-reroute.d.ts +7 -0
  98. package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
  99. package/dist/visio/edit-connector.d.ts +2 -0
  100. package/dist/visio/edit-connector.d.ts.map +1 -1
  101. package/dist/visio/edit-delete.d.ts +4 -2
  102. package/dist/visio/edit-delete.d.ts.map +1 -1
  103. package/dist/visio/edit-duplicate-scope.d.ts +7 -2
  104. package/dist/visio/edit-duplicate-scope.d.ts.map +1 -1
  105. package/dist/visio/edit-duplicate.d.ts.map +1 -1
  106. package/dist/visio/edit-formatting-cell-admission.d.ts.map +1 -1
  107. package/dist/visio/edit-formatting-commands.d.ts +17 -0
  108. package/dist/visio/edit-formatting-commands.d.ts.map +1 -1
  109. package/dist/visio/edit-formatting-paint.d.ts.map +1 -1
  110. package/dist/visio/edit-formatting-scope.d.ts +6 -1
  111. package/dist/visio/edit-formatting-scope.d.ts.map +1 -1
  112. package/dist/visio/edit-formatting-text.d.ts.map +1 -1
  113. package/dist/visio/edit-formatting.d.ts.map +1 -1
  114. package/dist/visio/edit-group-formulas.d.ts +22 -0
  115. package/dist/visio/edit-group-formulas.d.ts.map +1 -0
  116. package/dist/visio/edit-group-rotation.d.ts +3 -1
  117. package/dist/visio/edit-group-rotation.d.ts.map +1 -1
  118. package/dist/visio/edit-group.d.ts +10 -3
  119. package/dist/visio/edit-group.d.ts.map +1 -1
  120. package/dist/visio/edit-instance-checks.d.ts +18 -0
  121. package/dist/visio/edit-instance-checks.d.ts.map +1 -0
  122. package/dist/visio/edit-instance-clipboard.d.ts +22 -0
  123. package/dist/visio/edit-instance-clipboard.d.ts.map +1 -0
  124. package/dist/visio/edit-instance-delete.d.ts +19 -0
  125. package/dist/visio/edit-instance-delete.d.ts.map +1 -0
  126. package/dist/visio/edit-instance-duplicate.d.ts +17 -0
  127. package/dist/visio/edit-instance-duplicate.d.ts.map +1 -0
  128. package/dist/visio/edit-instance-format.d.ts +31 -0
  129. package/dist/visio/edit-instance-format.d.ts.map +1 -0
  130. package/dist/visio/edit-instance-geometry.d.ts +21 -0
  131. package/dist/visio/edit-instance-geometry.d.ts.map +1 -0
  132. package/dist/visio/edit-instance-group.d.ts +18 -0
  133. package/dist/visio/edit-instance-group.d.ts.map +1 -0
  134. package/dist/visio/edit-instance-order.d.ts +16 -0
  135. package/dist/visio/edit-instance-order.d.ts.map +1 -0
  136. package/dist/visio/edit-instance-recalculate.d.ts +32 -0
  137. package/dist/visio/edit-instance-recalculate.d.ts.map +1 -0
  138. package/dist/visio/edit-instance-replace.d.ts +18 -0
  139. package/dist/visio/edit-instance-replace.d.ts.map +1 -0
  140. package/dist/visio/edit-instance-scope.d.ts +29 -0
  141. package/dist/visio/edit-instance-scope.d.ts.map +1 -0
  142. package/dist/visio/edit-instance-shape.d.ts +52 -0
  143. package/dist/visio/edit-instance-shape.d.ts.map +1 -0
  144. package/dist/visio/edit-instance-sheet.d.ts +52 -0
  145. package/dist/visio/edit-instance-sheet.d.ts.map +1 -0
  146. package/dist/visio/edit-layer-properties.d.ts +22 -0
  147. package/dist/visio/edit-layer-properties.d.ts.map +1 -0
  148. package/dist/visio/edit-master-drop.d.ts +39 -0
  149. package/dist/visio/edit-master-drop.d.ts.map +1 -0
  150. package/dist/visio/edit-master-index.d.ts.map +1 -1
  151. package/dist/visio/edit-master-instance-extras.d.ts +15 -0
  152. package/dist/visio/edit-master-instance-extras.d.ts.map +1 -0
  153. package/dist/visio/edit-master-instance-group.d.ts +25 -0
  154. package/dist/visio/edit-master-instance-group.d.ts.map +1 -0
  155. package/dist/visio/edit-master-instance.d.ts +42 -0
  156. package/dist/visio/edit-master-instance.d.ts.map +1 -0
  157. package/dist/visio/edit-master-scope.d.ts.map +1 -1
  158. package/dist/visio/edit-page-auto-size.d.ts.map +1 -1
  159. package/dist/visio/edit-page-layout.d.ts +15 -0
  160. package/dist/visio/edit-page-layout.d.ts.map +1 -0
  161. package/dist/visio/edit-page-setup-commands.d.ts +3 -1
  162. package/dist/visio/edit-page-setup-commands.d.ts.map +1 -1
  163. package/dist/visio/edit-page-theme-refresh.d.ts +4 -0
  164. package/dist/visio/edit-page-theme-refresh.d.ts.map +1 -0
  165. package/dist/visio/edit-page-theme.d.ts.map +1 -1
  166. package/dist/visio/edit-pages.d.ts.map +1 -1
  167. package/dist/visio/edit-paste.d.ts +3 -1
  168. package/dist/visio/edit-paste.d.ts.map +1 -1
  169. package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
  170. package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
  171. package/dist/visio/edit-shape-order.d.ts +19 -4
  172. package/dist/visio/edit-shape-order.d.ts.map +1 -1
  173. package/dist/visio/edit-snap-glue.d.ts +16 -0
  174. package/dist/visio/edit-snap-glue.d.ts.map +1 -0
  175. package/dist/visio/edit-stencil-connector-drop.d.ts +9 -0
  176. package/dist/visio/edit-stencil-connector-drop.d.ts.map +1 -0
  177. package/dist/visio/edit-stencil-connector-layout.d.ts +14 -0
  178. package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -0
  179. package/dist/visio/edit-stencil-connector-write.d.ts +16 -0
  180. package/dist/visio/edit-stencil-connector-write.d.ts.map +1 -0
  181. package/dist/visio/edit-stencil-connector.d.ts +29 -0
  182. package/dist/visio/edit-stencil-connector.d.ts.map +1 -0
  183. package/dist/visio/edit-stencil-master.d.ts +17 -0
  184. package/dist/visio/edit-stencil-master.d.ts.map +1 -0
  185. package/dist/visio/edit-text-instance.d.ts +21 -0
  186. package/dist/visio/edit-text-instance.d.ts.map +1 -0
  187. package/dist/visio/edit-text-ranges.d.ts.map +1 -1
  188. package/dist/visio/edit-text-scope.d.ts +6 -1
  189. package/dist/visio/edit-text-scope.d.ts.map +1 -1
  190. package/dist/visio/edit-text-size-formula.d.ts +17 -0
  191. package/dist/visio/edit-text-size-formula.d.ts.map +1 -0
  192. package/dist/visio/edit-text-size.d.ts +34 -0
  193. package/dist/visio/edit-text-size.d.ts.map +1 -0
  194. package/dist/visio/edit-text-target.d.ts +11 -1
  195. package/dist/visio/edit-text-target.d.ts.map +1 -1
  196. package/dist/visio/edit-text.d.ts +2 -1
  197. package/dist/visio/edit-text.d.ts.map +1 -1
  198. package/dist/visio/edit.d.ts +1 -1
  199. package/dist/visio/edit.d.ts.map +1 -1
  200. package/dist/visio/formula-evaluate.d.ts +2 -0
  201. package/dist/visio/formula-evaluate.d.ts.map +1 -1
  202. package/dist/visio/formula-functions.d.ts +13 -0
  203. package/dist/visio/formula-functions.d.ts.map +1 -0
  204. package/dist/visio/formula-numeric-functions.d.ts.map +1 -1
  205. package/dist/visio/formula.d.ts +14 -0
  206. package/dist/visio/formula.d.ts.map +1 -1
  207. package/dist/visio/index.cjs +11307 -5982
  208. package/dist/visio/index.d.ts +11 -1
  209. package/dist/visio/index.d.ts.map +1 -1
  210. package/dist/visio/index.mjs +11281 -5983
  211. package/dist/visio/line-jumps.d.ts +21 -0
  212. package/dist/visio/line-jumps.d.ts.map +1 -0
  213. package/dist/visio/master-list.d.ts +20 -0
  214. package/dist/visio/master-list.d.ts.map +1 -0
  215. package/dist/visio/model.d.ts +41 -0
  216. package/dist/visio/model.d.ts.map +1 -1
  217. package/dist/visio/page-layout.d.ts +40 -0
  218. package/dist/visio/page-layout.d.ts.map +1 -0
  219. package/dist/visio/page-theme.d.ts.map +1 -1
  220. package/dist/visio/parser.d.ts.map +1 -1
  221. package/dist/visio/shape-connections.d.ts +2 -2
  222. package/dist/visio/shape-connections.d.ts.map +1 -1
  223. package/dist/visio/snap-glue.d.ts +49 -0
  224. package/dist/visio/snap-glue.d.ts.map +1 -0
  225. package/dist/visio/stencil-master-part.d.ts +15 -0
  226. package/dist/visio/stencil-master-part.d.ts.map +1 -0
  227. package/dist/visio/stencil-masters.d.ts +19 -0
  228. package/dist/visio/stencil-masters.d.ts.map +1 -0
  229. package/dist/visio/stencil-windows.d.ts +20 -0
  230. package/dist/visio/stencil-windows.d.ts.map +1 -0
  231. package/dist/visio/stencils.d.ts +2 -0
  232. package/dist/visio/stencils.d.ts.map +1 -1
  233. package/dist/visio/style.d.ts +5 -0
  234. package/dist/visio/style.d.ts.map +1 -1
  235. package/dist/visio/text-extent.d.ts +40 -0
  236. package/dist/visio/text-extent.d.ts.map +1 -0
  237. package/dist/visio/text-fields.d.ts.map +1 -1
  238. package/dist/visio/theme-color-ref.d.ts +33 -0
  239. package/dist/visio/theme-color-ref.d.ts.map +1 -0
  240. package/dist/visio/ui/auto-connect.d.ts +80 -0
  241. package/dist/visio/ui/auto-connect.d.ts.map +1 -0
  242. package/dist/visio/ui/connection-points.d.ts +7 -2
  243. package/dist/visio/ui/connection-points.d.ts.map +1 -1
  244. package/dist/visio/ui/connector-preview.d.ts +3 -2
  245. package/dist/visio/ui/connector-preview.d.ts.map +1 -1
  246. package/dist/visio/ui/contract.d.ts +7 -2
  247. package/dist/visio/ui/contract.d.ts.map +1 -1
  248. package/dist/visio/ui/data-graphics.d.ts +6 -2
  249. package/dist/visio/ui/data-graphics.d.ts.map +1 -1
  250. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  251. package/dist/visio/ui/edit-error.d.ts +4 -1
  252. package/dist/visio/ui/edit-error.d.ts.map +1 -1
  253. package/dist/visio/ui/formatting.d.ts +27 -0
  254. package/dist/visio/ui/formatting.d.ts.map +1 -1
  255. package/dist/visio/ui/guides.d.ts +14 -0
  256. package/dist/visio/ui/guides.d.ts.map +1 -1
  257. package/dist/visio/ui/index.cjs +27125 -3841
  258. package/dist/visio/ui/index.d.ts +4 -0
  259. package/dist/visio/ui/index.d.ts.map +1 -1
  260. package/dist/visio/ui/index.mjs +27090 -3842
  261. package/dist/visio/ui/master-drop.d.ts +38 -0
  262. package/dist/visio/ui/master-drop.d.ts.map +1 -0
  263. package/dist/visio/ui/page-edit.d.ts.map +1 -1
  264. package/dist/visio/ui/ruler-grid.d.ts +45 -0
  265. package/dist/visio/ui/ruler-grid.d.ts.map +1 -0
  266. package/dist/visio/ui/sample-drawing.d.ts +9 -0
  267. package/dist/visio/ui/sample-drawing.d.ts.map +1 -0
  268. package/dist/visio/ui/scene-validation.d.ts.map +1 -1
  269. package/dist/visio/ui/shape-change.d.ts +16 -4
  270. package/dist/visio/ui/shape-change.d.ts.map +1 -1
  271. package/dist/visio/ui/shape-clipboard.d.ts.map +1 -1
  272. package/dist/visio/ui/shape-duplicate.d.ts +7 -1
  273. package/dist/visio/ui/shape-duplicate.d.ts.map +1 -1
  274. package/dist/visio/ui/shape-group.d.ts.map +1 -1
  275. package/dist/visio/ui/shape-move.d.ts +6 -0
  276. package/dist/visio/ui/shape-move.d.ts.map +1 -1
  277. package/dist/visio/ui/shape-order.d.ts +6 -1
  278. package/dist/visio/ui/shape-order.d.ts.map +1 -1
  279. package/dist/visio/ui/shape-resize.d.ts.map +1 -1
  280. package/dist/visio/ui/shape-rotation.d.ts +10 -1
  281. package/dist/visio/ui/shape-rotation.d.ts.map +1 -1
  282. package/dist/visio/ui/size-position.d.ts.map +1 -1
  283. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
  284. package/dist/xlsx/conditional-extensions.d.ts.map +1 -1
  285. package/dist/xlsx/edit/cell-shift.d.ts.map +1 -1
  286. package/dist/xlsx/edit/shift-rule-anchors.d.ts +9 -0
  287. package/dist/xlsx/edit/shift-rule-anchors.d.ts.map +1 -0
  288. package/dist/xlsx/edit/structure.d.ts.map +1 -1
  289. package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
  290. package/dist/xlsx/formula/engine-util.d.ts.map +1 -1
  291. package/dist/xlsx/index.cjs +55 -15
  292. package/dist/xlsx/index.mjs +55 -15
  293. package/dist/xlsx/load/index.cjs +70 -16
  294. package/dist/xlsx/load/index.mjs +70 -16
  295. package/dist/xlsx/load/text-decode.d.ts.map +1 -1
  296. package/dist/xlsx/model.d.ts +2 -0
  297. package/dist/xlsx/model.d.ts.map +1 -1
  298. package/dist/xlsx/read/package.d.ts.map +1 -1
  299. package/dist/xlsx/read/tables.d.ts.map +1 -1
  300. package/dist/xlsx/ui/commands/number.d.ts.map +1 -1
  301. package/dist/xlsx/ui/commands/util.d.ts.map +1 -1
  302. package/dist/xlsx/ui/index.cjs +26 -0
  303. package/dist/xlsx/ui/index.mjs +26 -0
  304. package/dist/xlsx/ui/ribbon/parts.d.ts.map +1 -1
  305. package/dist/xlsx/write/conditional.d.ts.map +1 -1
  306. package/dist/xlsx/write/styles.d.ts.map +1 -1
  307. package/dist/xlsx/write/table-patch.d.ts.map +1 -1
  308. package/package.json +7 -1
package/dist/index.mjs CHANGED
@@ -10,26 +10,36 @@ var __export = (target, all) => {
10
10
  // color/index.ts
11
11
  var color_exports = {};
12
12
  __export(color_exports, {
13
+ OFFICE_STANDARD_COLORS: () => OFFICE_STANDARD_COLORS,
14
+ OFFICE_THEME_PALETTE_COLORS: () => OFFICE_THEME_PALETTE_COLORS,
15
+ THEME_PALETTE_COLUMN_NAMES: () => THEME_PALETTE_COLUMN_NAMES,
16
+ applyThemePaletteVariant: () => applyThemePaletteVariant,
13
17
  blendColorOntoWhite: () => blendColorOntoWhite,
18
+ buildThemePalette: () => buildThemePalette,
14
19
  clampUnitInterval: () => clampUnitInterval,
15
20
  colorWithOpacity: () => colorWithOpacity,
16
21
  contrastTextColor: () => contrastTextColor,
22
+ describeThemePaletteSwatch: () => describeThemePaletteSwatch,
17
23
  hexToRgbChannels: () => hexToRgbChannels,
18
24
  hexToRgbUnit: () => hexToRgbUnit,
19
25
  hslToRgb: () => hslToRgb,
20
26
  linearToSrgb255: () => linearToSrgb255,
21
27
  normalizeHexColor: () => normalizeHexColor,
28
+ normalizePaletteHex: () => normalizePaletteHex,
22
29
  parseArgbHex: () => parseArgbHex,
23
30
  parseDrawingFraction: () => parseDrawingFraction,
24
31
  parseDrawingHueDegrees: () => parseDrawingHueDegrees,
25
32
  parseDrawingPercent: () => parseDrawingPercent,
26
33
  parseHex: () => parseHex,
27
34
  parseOoxmlPercent: () => parseOoxmlPercent,
35
+ pushRecentColor: () => pushRecentColor,
28
36
  rgbToHsl: () => rgbToHsl,
29
37
  rgbToUpperHex: () => rgbToUpperHex,
30
38
  scrgbLinearToSrgb8: () => scrgbLinearToSrgb8,
31
39
  sigmaGradientStops: () => sigmaGradientStops,
32
40
  srgb255ToLinear: () => srgb255ToLinear,
41
+ themePaletteVariantLuminance: () => themePaletteVariantLuminance,
42
+ themePaletteVariantsForLuminance: () => themePaletteVariantsForLuminance,
33
43
  toHex: () => toHex
34
44
  });
35
45
 
@@ -511,6 +521,99 @@ function parseArgbHex(hex) {
511
521
  var clamp255 = (v) => Math.max(0, Math.min(255, v));
512
522
  var rgbToUpperHex = (rgb) => `#${rgb.map((v) => clamp255(Math.round(v)).toString(16).padStart(2, "0")).join("").toUpperCase()}`;
513
523
 
524
+ // color/theme-palette.ts
525
+ var THEME_PALETTE_COLUMN_NAMES = [
526
+ "Background 1",
527
+ "Text 1",
528
+ "Background 2",
529
+ "Text 2",
530
+ "Accent 1",
531
+ "Accent 2",
532
+ "Accent 3",
533
+ "Accent 4",
534
+ "Accent 5",
535
+ "Accent 6"
536
+ ];
537
+ var OFFICE_THEME_PALETTE_COLORS = [
538
+ "#ffffff",
539
+ "#000000",
540
+ "#e7e6e6",
541
+ "#44546a",
542
+ "#4472c4",
543
+ "#ed7d31",
544
+ "#a5a5a5",
545
+ "#ffc000",
546
+ "#5b9bd5",
547
+ "#70ad47"
548
+ ];
549
+ var OFFICE_STANDARD_COLORS = [
550
+ { hex: "#c00000", label: "Dark Red" },
551
+ { hex: "#ff0000", label: "Red" },
552
+ { hex: "#ffc000", label: "Orange" },
553
+ { hex: "#ffff00", label: "Yellow" },
554
+ { hex: "#92d050", label: "Light Green" },
555
+ { hex: "#00b050", label: "Green" },
556
+ { hex: "#00b0f0", label: "Light Blue" },
557
+ { hex: "#0070c0", label: "Blue" },
558
+ { hex: "#002060", label: "Dark Blue" },
559
+ { hex: "#7030a0", label: "Purple" }
560
+ ];
561
+ var lighter = (percent) => ({ kind: "lighter", percent });
562
+ var darker = (percent) => ({ kind: "darker", percent });
563
+ function themePaletteVariantsForLuminance(l) {
564
+ if (l < 0.05) return [lighter(50), lighter(35), lighter(25), lighter(15), lighter(5)];
565
+ if (l < 0.25) return [lighter(90), lighter(75), lighter(50), lighter(25), lighter(10)];
566
+ if (l < 0.75) return [lighter(80), lighter(60), lighter(40), darker(25), darker(50)];
567
+ if (l < 0.95) return [darker(10), darker(25), darker(50), darker(75), darker(90)];
568
+ return [darker(5), darker(15), darker(25), darker(35), darker(50)];
569
+ }
570
+ function themePaletteVariantLuminance(variant) {
571
+ const fraction = variant.percent / 100;
572
+ const lumMod = Math.round((1 - fraction) * 1e5) / 1e5;
573
+ return variant.kind === "lighter" ? { lumMod, lumOff: fraction } : { lumMod };
574
+ }
575
+ function normalizePaletteHex(value) {
576
+ const digits = value.trim().replace(/^#/, "");
577
+ const rgb = hexToRgbChannels(
578
+ /^[0-9a-f]{3}$/i.test(digits) ? digits.replace(/./g, "$&$&") : digits
579
+ );
580
+ return rgb ? `#${toHex(rgb.r)}${toHex(rgb.g)}${toHex(rgb.b)}`.toLowerCase() : void 0;
581
+ }
582
+ function applyThemePaletteVariant(hex, variant) {
583
+ const rgb = hexToRgbChannels(hex);
584
+ if (!rgb) return hex;
585
+ const { h: h2, s, l } = rgbToHsl(rgb.r, rgb.g, rgb.b);
586
+ const { lumMod, lumOff } = themePaletteVariantLuminance(variant);
587
+ const next = hslToRgb(h2, s, l * lumMod + (lumOff ?? 0), (value) => Math.floor(value + 1e-6));
588
+ return `#${toHex(next.r)}${toHex(next.g)}${toHex(next.b)}`.toLowerCase();
589
+ }
590
+ function describeThemePaletteSwatch(name, variant) {
591
+ if (!variant) return name;
592
+ return `${name}, ${variant.kind === "lighter" ? "Lighter" : "Darker"} ${variant.percent}%`;
593
+ }
594
+ function buildThemePalette(colors = OFFICE_THEME_PALETTE_COLORS, names = THEME_PALETTE_COLUMN_NAMES) {
595
+ return THEME_PALETTE_COLUMN_NAMES.map((fallback, index) => {
596
+ const name = names[index] ?? fallback;
597
+ const hex = (colors[index] === void 0 ? void 0 : normalizePaletteHex(colors[index])) ?? OFFICE_THEME_PALETTE_COLORS[index];
598
+ const rgb = hexToRgbChannels(hex);
599
+ const { l } = rgbToHsl(rgb.r, rgb.g, rgb.b);
600
+ return {
601
+ name,
602
+ base: { hex, label: name },
603
+ variants: themePaletteVariantsForLuminance(l).map((variant) => ({
604
+ hex: applyThemePaletteVariant(hex, variant),
605
+ label: describeThemePaletteSwatch(name, variant),
606
+ variant
607
+ }))
608
+ };
609
+ });
610
+ }
611
+ function pushRecentColor(recent, hex, limit = 10) {
612
+ const color = normalizePaletteHex(hex);
613
+ if (!color) return [...recent];
614
+ return [color, ...recent.filter((item) => item.toLowerCase() !== color)].slice(0, limit);
615
+ }
616
+
514
617
  // chart/index.ts
515
618
  var chart_exports = {};
516
619
  __export(chart_exports, {
@@ -5890,9 +5993,11 @@ __export(text_exports, {
5890
5993
  changeTextCaseRanges: () => changeTextCaseRanges,
5891
5994
  decimalAnchorIndex: () => decimalAnchorIndex,
5892
5995
  decimalSeparatorForLanguage: () => decimalSeparatorForLanguage,
5996
+ designTextWidthEm: () => designTextWidthEm,
5893
5997
  detectFontScript: () => detectFontScript,
5894
5998
  getLeaderCharacter: () => getLeaderCharacter,
5895
5999
  getLeaderStyles: () => getLeaderStyles,
6000
+ hasDesignAdvances: () => hasDesignAdvances,
5896
6001
  hasDistinctScriptFonts: () => hasDistinctScriptFonts,
5897
6002
  resolveFontForScript: () => resolveFontForScript,
5898
6003
  segmentByScript: () => segmentByScript,
@@ -6149,6 +6254,57 @@ function changeTextCaseRanges(text3, mode, boundaries = []) {
6149
6254
  return ranges;
6150
6255
  }
6151
6256
 
6257
+ // text/font-metrics/design-advances.generated.ts
6258
+ var DESIGN_ADVANCES = {
6259
+ arial: {
6260
+ 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",
6261
+ 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"
6262
+ },
6263
+ calibri: {
6264
+ 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",
6265
+ 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"
6266
+ },
6267
+ "calibri light": {
6268
+ 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",
6269
+ 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"
6270
+ },
6271
+ "segoe ui": {
6272
+ 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",
6273
+ 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"
6274
+ },
6275
+ "times new roman": {
6276
+ 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",
6277
+ 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"
6278
+ }
6279
+ };
6280
+
6281
+ // text/font-metrics/advance-width.ts
6282
+ var FIRST = 32;
6283
+ var decoded = /* @__PURE__ */ new Map();
6284
+ function advances(family, bold) {
6285
+ const name = family.trim().toLowerCase();
6286
+ const key = `${name}|${bold ? "b" : "r"}`;
6287
+ const known = decoded.get(key);
6288
+ if (known) return known;
6289
+ const table = Object.hasOwn(DESIGN_ADVANCES, name) ? DESIGN_ADVANCES[name] : void 0;
6290
+ if (!table) return void 0;
6291
+ const values = (bold ? table.bold : table.regular).split(" ").map(Number);
6292
+ decoded.set(key, values);
6293
+ return values;
6294
+ }
6295
+ var hasDesignAdvances = (family) => !!advances(family, false);
6296
+ function designTextWidthEm(text3, family, bold = false) {
6297
+ const table = advances(family, bold);
6298
+ if (!table) return void 0;
6299
+ let units2 = 0;
6300
+ for (let index = 0; index < text3.length; ++index) {
6301
+ const advance = table[text3.charCodeAt(index) - FIRST];
6302
+ if (advance === void 0 || Number.isNaN(advance)) return void 0;
6303
+ units2 += advance;
6304
+ }
6305
+ return units2 / 1e3;
6306
+ }
6307
+
6152
6308
  // i18n/index.ts
6153
6309
  var i18n_exports = {};
6154
6310
  __export(i18n_exports, {
@@ -6220,6 +6376,37 @@ function createTranslator(messages, fallbacks = [], options = {}) {
6220
6376
  };
6221
6377
  }
6222
6378
 
6379
+ // ribbon/index.ts
6380
+ var ribbon_exports = {};
6381
+ __export(ribbon_exports, {
6382
+ RIBBON_ADD_IN_EVENT: () => RIBBON_ADD_IN_EVENT,
6383
+ acceptedRibbonAddIns: () => acceptedRibbonAddIns,
6384
+ findRibbonAddInCommand: () => findRibbonAddInCommand,
6385
+ ribbonAddInCommands: () => ribbonAddInCommands
6386
+ });
6387
+
6388
+ // ribbon/add-in.ts
6389
+ var RIBBON_ADD_IN_EVENT = "office-ribbon-add-in";
6390
+ function acceptedRibbonAddIns(tabs, reserved = []) {
6391
+ const taken = new Set(reserved);
6392
+ const accepted = [];
6393
+ for (const tab of tabs ?? []) {
6394
+ if (!tab || typeof tab.id !== "string" || !tab.id || taken.has(tab.id)) continue;
6395
+ taken.add(tab.id);
6396
+ accepted.push(tab);
6397
+ }
6398
+ return accepted;
6399
+ }
6400
+ function ribbonAddInCommands(tab) {
6401
+ const flatten = (commands) => commands.flatMap((command) => [command, ...flatten(command.items ?? [])]);
6402
+ return flatten(tab.groups.flatMap((group) => group.commands));
6403
+ }
6404
+ function findRibbonAddInCommand(tab, id) {
6405
+ if (id === void 0) return void 0;
6406
+ const command = ribbonAddInCommands(tab).find((candidate) => candidate.id === id);
6407
+ return command && !command.disabled ? command : void 0;
6408
+ }
6409
+
6223
6410
  // drawingml/index.ts
6224
6411
  var drawingml_exports = {};
6225
6412
  __export(drawingml_exports, {
@@ -30642,8 +30829,8 @@ function resolveReferenceUriToPart(uri) {
30642
30829
  if (trimmed.length === 0 || trimmed.startsWith("#")) {
30643
30830
  return void 0;
30644
30831
  }
30645
- const decoded = decodeURIComponent(trimmed);
30646
- return normalizePartPath(decoded.startsWith("/") ? decoded.slice(1) : decoded);
30832
+ const decoded2 = decodeURIComponent(trimmed);
30833
+ return normalizePartPath(decoded2.startsWith("/") ? decoded2.slice(1) : decoded2);
30647
30834
  }
30648
30835
 
30649
30836
  // opc/signature/digest.ts
@@ -33022,6 +33209,7 @@ __export(geometry_exports, {
33022
33209
  BRACE_TEXT_RECTS: () => BRACE_TEXT_RECTS,
33023
33210
  CALLOUT_CONNECTION_SITES: () => CALLOUT_CONNECTION_SITES,
33024
33211
  CALLOUT_TEXT_RECTS: () => CALLOUT_TEXT_RECTS,
33212
+ CANVAS_SENTINEL: () => CANVAS_SENTINEL,
33025
33213
  CARDINAL_SITES: () => CARDINAL_SITES,
33026
33214
  CHART_MARK_PRESET_DEFINITIONS: () => CHART_MARK_PRESET_DEFINITIONS,
33027
33215
  CIRCULAR_ARROW_CONNECTION_SITES: () => CIRCULAR_ARROW_CONNECTION_SITES,
@@ -33052,6 +33240,7 @@ __export(geometry_exports, {
33052
33240
  MISC_SHAPE_CONNECTION_SITES: () => MISC_SHAPE_CONNECTION_SITES,
33053
33241
  MISC_TEXT_RECTS_A: () => MISC_TEXT_RECTS_A,
33054
33242
  MISC_TEXT_RECTS_B: () => MISC_TEXT_RECTS_B,
33243
+ PADDING_DEFAULT: () => PADDING_DEFAULT,
33055
33244
  POLYGON_CONNECTION_SITES: () => POLYGON_CONNECTION_SITES,
33056
33245
  POLYGON_TEXT_RECTS: () => POLYGON_TEXT_RECTS,
33057
33246
  PRESET_GEOMETRY_ALIASES: () => PRESET_GEOMETRY_ALIASES,
@@ -33067,6 +33256,7 @@ __export(geometry_exports, {
33067
33256
  REFINED_ARROW_PRESET_DEFINITIONS: () => REFINED_ARROW_PRESET_DEFINITIONS,
33068
33257
  RIBBON_CONNECTION_SITES: () => RIBBON_CONNECTION_SITES,
33069
33258
  RIBBON_TEXT_RECTS: () => RIBBON_TEXT_RECTS,
33259
+ ROUTING_PADDING_DEFAULT: () => ROUTING_PADDING_DEFAULT,
33070
33260
  SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS: () => SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS,
33071
33261
  SNAP_THRESHOLD: () => SNAP_THRESHOLD,
33072
33262
  STAR_CONNECTION_SITES: () => STAR_CONNECTION_SITES,
@@ -33076,11 +33266,14 @@ __export(geometry_exports, {
33076
33266
  TAB_CONNECTION_SITES: () => TAB_CONNECTION_SITES,
33077
33267
  TAB_TEXT_RECTS: () => TAB_TEXT_RECTS,
33078
33268
  _internalForTests: () => _internalForTests,
33269
+ aStarOrthogonal: () => aStarOrthogonal,
33079
33270
  alignElements: () => alignElements,
33080
33271
  angleToRadians: () => angleToRadians,
33272
+ arrowKeyDelta: () => arrowKeyDelta,
33081
33273
  at: () => at,
33082
33274
  autoAlignBoxes: () => autoAlignBoxes,
33083
33275
  buildCalloutLeaderLineSvgPath: () => buildCalloutLeaderLineSvgPath,
33276
+ buildGraphNodes: () => buildGraphNodes,
33084
33277
  clipPolygons: () => clipPolygons,
33085
33278
  combineShapes: () => combineShapes,
33086
33279
  composeAffine: () => composeAffine,
@@ -33097,6 +33290,7 @@ __export(geometry_exports, {
33097
33290
  curvedElbowPathD: () => curvedElbowPathD,
33098
33291
  cxn: () => cxn,
33099
33292
  dedupPoly: () => dedupPoly,
33293
+ directPathClear: () => directPathClear,
33100
33294
  distributeElements: () => distributeElements,
33101
33295
  elbowCurveSegments: () => elbowCurveSegments,
33102
33296
  elbowSegmentCount: () => elbowSegmentCount,
@@ -33121,6 +33315,8 @@ __export(geometry_exports, {
33121
33315
  getPresetConnectionSites: () => getPresetConnectionSites,
33122
33316
  getPresetShapeClipPath: () => getPresetShapeClipPath,
33123
33317
  getPresetTextRect: () => getPresetTextRect,
33318
+ heuristic: () => heuristic,
33319
+ inflateRect: () => inflateRect,
33124
33320
  insertIntersections: () => insertIntersections,
33125
33321
  intersectPolygons: () => intersectPolygons,
33126
33322
  intersectShapes: () => intersectShapes,
@@ -33140,15 +33336,22 @@ __export(geometry_exports, {
33140
33336
  parseFormula: () => parseFormula,
33141
33337
  parseGuideDefinitions: () => parseGuideDefinitions,
33142
33338
  pointInPolygon: () => pointInPolygon,
33339
+ pointInRect: () => pointInRect,
33143
33340
  pointInTriangle: () => pointInTriangle,
33341
+ pointKey: () => pointKey,
33144
33342
  polygonArea: () => polygonArea,
33145
33343
  polygonsToSvgPath: () => polygonsToSvgPath,
33146
33344
  resolveAlignReferenceBox: () => resolveAlignReferenceBox,
33147
33345
  resolveCoordinate: () => resolveCoordinate,
33148
33346
  resolveOperand: () => resolveOperand,
33149
33347
  resolveRotateHandlePlacement: () => resolveRotateHandlePlacement,
33348
+ routeConnector: () => routeConnector,
33349
+ routeOrthogonalConnector: () => routeOrthogonalConnector,
33150
33350
  segmentIntersection: () => segmentIntersection,
33351
+ segmentIntersectsRect: () => segmentIntersectsRect,
33151
33352
  signedArea: () => signedArea,
33353
+ simplifyPath: () => simplifyPath,
33354
+ snapAngle: () => snapAngle,
33152
33355
  snapBox: () => snapBox,
33153
33356
  snapToGridStep: () => snapToGridStep,
33154
33357
  snapValue: () => snapValue,
@@ -33162,7 +33365,9 @@ __export(geometry_exports, {
33162
33365
  unionShapes: () => unionShapes,
33163
33366
  unionSvgPaths: () => unionSvgPaths,
33164
33367
  usesSlideReference: () => usesSlideReference,
33165
- vec2Eq: () => vec2Eq
33368
+ vec2Eq: () => vec2Eq,
33369
+ waypointsToPathD: () => waypointsToPathD,
33370
+ waypointsToPathData: () => waypointsToPathData
33166
33371
  });
33167
33372
 
33168
33373
  // geometry/adjustment-aware-shapes.ts
@@ -34103,6 +34308,309 @@ function curvedElbowPathD(startX, startY, endX, endY, segments, adj1, adj2, adj3
34103
34308
  ].join(" ");
34104
34309
  }
34105
34310
 
34311
+ // geometry/connector-router-types.ts
34312
+ var PADDING_DEFAULT = 12;
34313
+ var ROUTING_PADDING_DEFAULT = PADDING_DEFAULT;
34314
+ var CANVAS_SENTINEL = 1e5;
34315
+
34316
+ // geometry/connector-router-graph.ts
34317
+ function inflateRect(r, pad2) {
34318
+ return {
34319
+ x: r.x - pad2,
34320
+ y: r.y - pad2,
34321
+ width: r.width + pad2 * 2,
34322
+ height: r.height + pad2 * 2
34323
+ };
34324
+ }
34325
+ function pointInRect(p, r) {
34326
+ return p.x >= r.x && p.x <= r.x + r.width && p.y >= r.y && p.y <= r.y + r.height;
34327
+ }
34328
+ function segmentIntersectsRect(a2, b, r) {
34329
+ const minX = Math.min(a2.x, b.x);
34330
+ const maxX = Math.max(a2.x, b.x);
34331
+ const minY = Math.min(a2.y, b.y);
34332
+ const maxY = Math.max(a2.y, b.y);
34333
+ const rRight = r.x + r.width;
34334
+ const rBottom = r.y + r.height;
34335
+ if (maxX < r.x || minX > rRight || maxY < r.y || minY > rBottom) {
34336
+ return false;
34337
+ }
34338
+ if (Math.abs(a2.y - b.y) < 0.5) {
34339
+ return a2.y >= r.y && a2.y <= rBottom && maxX >= r.x && minX <= rRight;
34340
+ }
34341
+ if (Math.abs(a2.x - b.x) < 0.5) {
34342
+ return a2.x >= r.x && a2.x <= rRight && maxY >= r.y && minY <= rBottom;
34343
+ }
34344
+ return true;
34345
+ }
34346
+ function directPathClear(start, end, inflated) {
34347
+ for (const rect3 of inflated) {
34348
+ if (segmentIntersectsRect(start, end, rect3)) {
34349
+ return false;
34350
+ }
34351
+ }
34352
+ return true;
34353
+ }
34354
+ function heuristic(a2, b) {
34355
+ return Math.abs(a2.x - b.x) + Math.abs(a2.y - b.y);
34356
+ }
34357
+ function pointKey(p) {
34358
+ return `${Math.round(p.x)},${Math.round(p.y)}`;
34359
+ }
34360
+ function buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight) {
34361
+ const margin = 4;
34362
+ const nodes = [start, end];
34363
+ for (const r of inflated) {
34364
+ const corners = [
34365
+ { x: r.x - margin, y: r.y - margin },
34366
+ { x: r.x + r.width + margin, y: r.y - margin },
34367
+ { x: r.x - margin, y: r.y + r.height + margin },
34368
+ { x: r.x + r.width + margin, y: r.y + r.height + margin }
34369
+ ];
34370
+ for (const c2 of corners) {
34371
+ if (c2.x >= 0 && c2.x <= canvasWidth && c2.y >= 0 && c2.y <= canvasHeight) {
34372
+ let blocked = false;
34373
+ for (const rect3 of inflated) {
34374
+ if (pointInRect(c2, rect3)) {
34375
+ blocked = true;
34376
+ break;
34377
+ }
34378
+ }
34379
+ if (!blocked) {
34380
+ nodes.push(c2);
34381
+ }
34382
+ }
34383
+ }
34384
+ }
34385
+ const projections = [];
34386
+ for (const node of nodes) {
34387
+ projections.push({ x: start.x, y: node.y });
34388
+ projections.push({ x: node.x, y: start.y });
34389
+ projections.push({ x: end.x, y: node.y });
34390
+ projections.push({ x: node.x, y: end.y });
34391
+ }
34392
+ for (const p of projections) {
34393
+ if (p.x >= 0 && p.x <= canvasWidth && p.y >= 0 && p.y <= canvasHeight) {
34394
+ let blocked = false;
34395
+ for (const rect3 of inflated) {
34396
+ if (pointInRect(p, rect3)) {
34397
+ blocked = true;
34398
+ break;
34399
+ }
34400
+ }
34401
+ if (!blocked) {
34402
+ nodes.push(p);
34403
+ }
34404
+ }
34405
+ }
34406
+ return nodes;
34407
+ }
34408
+
34409
+ // geometry/connector-router-astar.ts
34410
+ var MAX_ASTAR_ITERATIONS = 2e3;
34411
+ function aStarOrthogonal(nodes, start, end, inflated) {
34412
+ const startKey = pointKey(start);
34413
+ const endKey = pointKey(end);
34414
+ const canConnect = (a2, b) => {
34415
+ const isHoriz = Math.abs(a2.y - b.y) < 1;
34416
+ const isVert = Math.abs(a2.x - b.x) < 1;
34417
+ if (isHoriz || isVert) {
34418
+ for (const rect3 of inflated) {
34419
+ if (segmentIntersectsRect(a2, b, rect3)) {
34420
+ return false;
34421
+ }
34422
+ }
34423
+ return true;
34424
+ }
34425
+ const bend1 = { x: b.x, y: a2.y };
34426
+ const bend2 = { x: a2.x, y: b.y };
34427
+ let path1Clear = true;
34428
+ let path2Clear = true;
34429
+ for (const rect3 of inflated) {
34430
+ if (path1Clear && (segmentIntersectsRect(a2, bend1, rect3) || segmentIntersectsRect(bend1, b, rect3))) {
34431
+ path1Clear = false;
34432
+ }
34433
+ if (path2Clear && (segmentIntersectsRect(a2, bend2, rect3) || segmentIntersectsRect(bend2, b, rect3))) {
34434
+ path2Clear = false;
34435
+ }
34436
+ if (!path1Clear && !path2Clear) {
34437
+ break;
34438
+ }
34439
+ }
34440
+ return path1Clear || path2Clear;
34441
+ };
34442
+ const gScore = /* @__PURE__ */ new Map();
34443
+ const fScore = /* @__PURE__ */ new Map();
34444
+ const cameFrom = /* @__PURE__ */ new Map();
34445
+ const bendPoint = /* @__PURE__ */ new Map();
34446
+ gScore.set(startKey, 0);
34447
+ fScore.set(startKey, heuristic(start, end));
34448
+ const openSet = /* @__PURE__ */ new Set([startKey]);
34449
+ const nodeMap = /* @__PURE__ */ new Map();
34450
+ for (const n2 of nodes) {
34451
+ nodeMap.set(pointKey(n2), n2);
34452
+ }
34453
+ const getLowest = () => {
34454
+ let best;
34455
+ let bestScore = Infinity;
34456
+ for (const key of openSet) {
34457
+ const score = fScore.get(key) ?? Infinity;
34458
+ if (score < bestScore) {
34459
+ bestScore = score;
34460
+ best = key;
34461
+ }
34462
+ }
34463
+ return best;
34464
+ };
34465
+ let iterations = 0;
34466
+ while (openSet.size > 0 && iterations < MAX_ASTAR_ITERATIONS) {
34467
+ iterations++;
34468
+ const currentKey = getLowest();
34469
+ if (currentKey === void 0) {
34470
+ break;
34471
+ }
34472
+ if (currentKey === endKey) {
34473
+ const path2 = [];
34474
+ let key = endKey;
34475
+ while (key !== void 0) {
34476
+ const node = nodeMap.get(key);
34477
+ if (node !== void 0) {
34478
+ const bp = bendPoint.get(key);
34479
+ if (bp !== void 0 && bp !== null) {
34480
+ path2.unshift(node);
34481
+ path2.unshift(bp);
34482
+ } else {
34483
+ path2.unshift(node);
34484
+ }
34485
+ }
34486
+ key = cameFrom.get(key);
34487
+ }
34488
+ return path2;
34489
+ }
34490
+ openSet.delete(currentKey);
34491
+ const current = nodeMap.get(currentKey);
34492
+ if (current === void 0) {
34493
+ continue;
34494
+ }
34495
+ for (const neighbor of nodes) {
34496
+ const neighborKey = pointKey(neighbor);
34497
+ if (neighborKey === currentKey) {
34498
+ continue;
34499
+ }
34500
+ if (!canConnect(current, neighbor)) {
34501
+ continue;
34502
+ }
34503
+ const isHoriz = Math.abs(current.y - neighbor.y) < 1;
34504
+ const isVert = Math.abs(current.x - neighbor.x) < 1;
34505
+ let dist;
34506
+ let bp = null;
34507
+ if (isHoriz || isVert) {
34508
+ dist = heuristic(current, neighbor);
34509
+ } else {
34510
+ const bend1 = { x: neighbor.x, y: current.y };
34511
+ const bend2 = { x: current.x, y: neighbor.y };
34512
+ let use1 = true;
34513
+ for (const rect3 of inflated) {
34514
+ if (segmentIntersectsRect(current, bend1, rect3) || segmentIntersectsRect(bend1, neighbor, rect3)) {
34515
+ use1 = false;
34516
+ break;
34517
+ }
34518
+ }
34519
+ bp = use1 ? bend1 : bend2;
34520
+ 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);
34521
+ }
34522
+ const tentativeG = (gScore.get(currentKey) ?? Infinity) + dist;
34523
+ if (tentativeG < (gScore.get(neighborKey) ?? Infinity)) {
34524
+ cameFrom.set(neighborKey, currentKey);
34525
+ bendPoint.set(neighborKey, bp);
34526
+ gScore.set(neighborKey, tentativeG);
34527
+ fScore.set(neighborKey, tentativeG + heuristic(neighbor, end));
34528
+ openSet.add(neighborKey);
34529
+ }
34530
+ }
34531
+ }
34532
+ return [start, end];
34533
+ }
34534
+ function simplifyPath(points) {
34535
+ if (points.length <= 2) {
34536
+ return [...points];
34537
+ }
34538
+ const result = [points[0]];
34539
+ for (let i2 = 1; i2 < points.length - 1; i2++) {
34540
+ const prev = result[result.length - 1];
34541
+ const curr = points[i2];
34542
+ const next = points[i2 + 1];
34543
+ const sameX = Math.abs(prev.x - curr.x) < 1 && Math.abs(curr.x - next.x) < 1;
34544
+ const sameY = Math.abs(prev.y - curr.y) < 1 && Math.abs(curr.y - next.y) < 1;
34545
+ if (!sameX && !sameY) {
34546
+ result.push(curr);
34547
+ } else if (!sameX || !sameY) {
34548
+ if (!(sameX || sameY)) {
34549
+ result.push(curr);
34550
+ }
34551
+ }
34552
+ }
34553
+ result.push(points[points.length - 1]);
34554
+ return result;
34555
+ }
34556
+
34557
+ // geometry/connector-router.ts
34558
+ function routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight) {
34559
+ if (obstacles.length === 0) {
34560
+ return [start, end];
34561
+ }
34562
+ const inflated = obstacles.map((r) => inflateRect(r, padding));
34563
+ if (directPathClear(start, end, inflated)) {
34564
+ return [start, end];
34565
+ }
34566
+ const midH = { x: end.x, y: start.y };
34567
+ const midV = { x: start.x, y: end.y };
34568
+ let elbowHClear = true;
34569
+ let elbowVClear = true;
34570
+ for (const rect3 of inflated) {
34571
+ if (elbowHClear && (segmentIntersectsRect(start, midH, rect3) || segmentIntersectsRect(midH, end, rect3))) {
34572
+ elbowHClear = false;
34573
+ }
34574
+ if (elbowVClear && (segmentIntersectsRect(start, midV, rect3) || segmentIntersectsRect(midV, end, rect3))) {
34575
+ elbowVClear = false;
34576
+ }
34577
+ if (!elbowHClear && !elbowVClear) {
34578
+ break;
34579
+ }
34580
+ }
34581
+ if (elbowHClear) {
34582
+ return [start, midH, end];
34583
+ }
34584
+ if (elbowVClear) {
34585
+ return [start, midV, end];
34586
+ }
34587
+ const nodes = buildGraphNodes(start, end, inflated, canvasWidth, canvasHeight);
34588
+ const path2 = aStarOrthogonal(nodes, start, end, inflated);
34589
+ return simplifyPath(path2);
34590
+ }
34591
+ function routeConnector(options) {
34592
+ const { start, end, obstacles, canvasWidth, canvasHeight, padding = PADDING_DEFAULT } = options;
34593
+ return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
34594
+ }
34595
+ function waypointsToPathData(waypoints) {
34596
+ if (waypoints.length === 0) {
34597
+ return "";
34598
+ }
34599
+ return waypoints.map((point, index) => `${index === 0 ? "M" : "L"} ${point.x} ${point.y}`).join(" ");
34600
+ }
34601
+ function routeOrthogonalConnector(start, end, obstacles, opts) {
34602
+ const padding = opts?.padding ?? PADDING_DEFAULT;
34603
+ const canvasWidth = opts?.canvasWidth ?? CANVAS_SENTINEL;
34604
+ const canvasHeight = opts?.canvasHeight ?? CANVAS_SENTINEL;
34605
+ return routeCore(start, end, obstacles, padding, canvasWidth, canvasHeight);
34606
+ }
34607
+ function waypointsToPathD(waypoints) {
34608
+ if (waypoints.length === 0) {
34609
+ return "";
34610
+ }
34611
+ return waypoints.map((point, index) => `${index === 0 ? "M" : "L"}${point.x},${point.y}`).join(" ");
34612
+ }
34613
+
34106
34614
  // geometry/preset-clip-paths-core.ts
34107
34615
  var CLIP_PATHS_CORE = {
34108
34616
  // ── Lines ─────────────────────────────────────────────────────────────
@@ -39369,6 +39877,13 @@ function createRotationDrag(center, startPointer, startRotation, options = {}) {
39369
39877
  return rotation;
39370
39878
  };
39371
39879
  }
39880
+ function snapAngle(angleDeg, step = 15, tolerance = step / 2) {
39881
+ const nearest = Math.round(angleDeg / step) * step;
39882
+ if (Math.abs(angleDeg - nearest) <= tolerance) {
39883
+ return (nearest % 360 + 360) % 360;
39884
+ }
39885
+ return angleDeg;
39886
+ }
39372
39887
 
39373
39888
  // geometry/rotate-handle-placement.ts
39374
39889
  function resolveRotateHandlePlacement(input) {
@@ -39786,6 +40301,22 @@ function autoAlignBoxes(boxes, options = {}) {
39786
40301
  return result;
39787
40302
  }
39788
40303
 
40304
+ // geometry/nudge.ts
40305
+ function arrowKeyDelta(key, step) {
40306
+ switch (key) {
40307
+ case "ArrowLeft":
40308
+ return { dx: -step, dy: 0 };
40309
+ case "ArrowRight":
40310
+ return { dx: step, dy: 0 };
40311
+ case "ArrowUp":
40312
+ return { dx: 0, dy: -step };
40313
+ case "ArrowDown":
40314
+ return { dx: 0, dy: step };
40315
+ default:
40316
+ return null;
40317
+ }
40318
+ }
40319
+
39789
40320
  // units/index.ts
39790
40321
  var units_exports = {};
39791
40322
  __export(units_exports, {
@@ -41885,4 +42416,4 @@ function parseOmml(xml) {
41885
42416
  return ommlFromElement(parseXml(xml, { label: "OMML" }).documentElement);
41886
42417
  }
41887
42418
 
41888
- export { chart_exports as chart, color_exports as color, diagram_exports as diagram, digest_exports as digest, drawingml_exports as drawingml, geometry_exports as geometry, i18n_exports as i18n, math_exports as math, opc_exports as opc, text_exports as text, units_exports as units, xml_exports as xml };
42419
+ export { chart_exports as chart, color_exports as color, diagram_exports as diagram, digest_exports as digest, drawingml_exports as drawingml, geometry_exports as geometry, i18n_exports as i18n, math_exports as math, opc_exports as opc, ribbon_exports as ribbon, text_exports as text, units_exports as units, xml_exports as xml };