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.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,11 +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,
33278
+ arrowKeyDelta: () => arrowKeyDelta,
33087
33279
  at: () => at,
33088
33280
  autoAlignBoxes: () => autoAlignBoxes,
33089
33281
  buildCalloutLeaderLineSvgPath: () => buildCalloutLeaderLineSvgPath,
33282
+ buildGraphNodes: () => buildGraphNodes,
33090
33283
  clipPolygons: () => clipPolygons,
33091
33284
  combineShapes: () => combineShapes,
33092
33285
  composeAffine: () => composeAffine,
@@ -33103,6 +33296,7 @@ __export(geometry_exports, {
33103
33296
  curvedElbowPathD: () => curvedElbowPathD,
33104
33297
  cxn: () => cxn,
33105
33298
  dedupPoly: () => dedupPoly,
33299
+ directPathClear: () => directPathClear,
33106
33300
  distributeElements: () => distributeElements,
33107
33301
  elbowCurveSegments: () => elbowCurveSegments,
33108
33302
  elbowSegmentCount: () => elbowSegmentCount,
@@ -33127,6 +33321,8 @@ __export(geometry_exports, {
33127
33321
  getPresetConnectionSites: () => getPresetConnectionSites,
33128
33322
  getPresetShapeClipPath: () => getPresetShapeClipPath,
33129
33323
  getPresetTextRect: () => getPresetTextRect,
33324
+ heuristic: () => heuristic,
33325
+ inflateRect: () => inflateRect,
33130
33326
  insertIntersections: () => insertIntersections,
33131
33327
  intersectPolygons: () => intersectPolygons,
33132
33328
  intersectShapes: () => intersectShapes,
@@ -33146,15 +33342,22 @@ __export(geometry_exports, {
33146
33342
  parseFormula: () => parseFormula,
33147
33343
  parseGuideDefinitions: () => parseGuideDefinitions,
33148
33344
  pointInPolygon: () => pointInPolygon,
33345
+ pointInRect: () => pointInRect,
33149
33346
  pointInTriangle: () => pointInTriangle,
33347
+ pointKey: () => pointKey,
33150
33348
  polygonArea: () => polygonArea,
33151
33349
  polygonsToSvgPath: () => polygonsToSvgPath,
33152
33350
  resolveAlignReferenceBox: () => resolveAlignReferenceBox,
33153
33351
  resolveCoordinate: () => resolveCoordinate,
33154
33352
  resolveOperand: () => resolveOperand,
33155
33353
  resolveRotateHandlePlacement: () => resolveRotateHandlePlacement,
33354
+ routeConnector: () => routeConnector,
33355
+ routeOrthogonalConnector: () => routeOrthogonalConnector,
33156
33356
  segmentIntersection: () => segmentIntersection,
33357
+ segmentIntersectsRect: () => segmentIntersectsRect,
33157
33358
  signedArea: () => signedArea,
33359
+ simplifyPath: () => simplifyPath,
33360
+ snapAngle: () => snapAngle,
33158
33361
  snapBox: () => snapBox,
33159
33362
  snapToGridStep: () => snapToGridStep,
33160
33363
  snapValue: () => snapValue,
@@ -33168,7 +33371,9 @@ __export(geometry_exports, {
33168
33371
  unionShapes: () => unionShapes,
33169
33372
  unionSvgPaths: () => unionSvgPaths,
33170
33373
  usesSlideReference: () => usesSlideReference,
33171
- vec2Eq: () => vec2Eq
33374
+ vec2Eq: () => vec2Eq,
33375
+ waypointsToPathD: () => waypointsToPathD,
33376
+ waypointsToPathData: () => waypointsToPathData
33172
33377
  });
33173
33378
 
33174
33379
  // geometry/adjustment-aware-shapes.ts
@@ -34109,6 +34314,309 @@ function curvedElbowPathD(startX, startY, endX, endY, segments, adj1, adj2, adj3
34109
34314
  ].join(" ");
34110
34315
  }
34111
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
+
34112
34620
  // geometry/preset-clip-paths-core.ts
34113
34621
  var CLIP_PATHS_CORE = {
34114
34622
  // ── Lines ─────────────────────────────────────────────────────────────
@@ -39375,6 +39883,13 @@ function createRotationDrag(center, startPointer, startRotation, options = {}) {
39375
39883
  return rotation;
39376
39884
  };
39377
39885
  }
39886
+ function snapAngle(angleDeg, step = 15, tolerance = step / 2) {
39887
+ const nearest = Math.round(angleDeg / step) * step;
39888
+ if (Math.abs(angleDeg - nearest) <= tolerance) {
39889
+ return (nearest % 360 + 360) % 360;
39890
+ }
39891
+ return angleDeg;
39892
+ }
39378
39893
 
39379
39894
  // geometry/rotate-handle-placement.ts
39380
39895
  function resolveRotateHandlePlacement(input) {
@@ -39792,6 +40307,22 @@ function autoAlignBoxes(boxes, options = {}) {
39792
40307
  return result;
39793
40308
  }
39794
40309
 
40310
+ // geometry/nudge.ts
40311
+ function arrowKeyDelta(key, step) {
40312
+ switch (key) {
40313
+ case "ArrowLeft":
40314
+ return { dx: -step, dy: 0 };
40315
+ case "ArrowRight":
40316
+ return { dx: step, dy: 0 };
40317
+ case "ArrowUp":
40318
+ return { dx: 0, dy: -step };
40319
+ case "ArrowDown":
40320
+ return { dx: 0, dy: step };
40321
+ default:
40322
+ return null;
40323
+ }
40324
+ }
40325
+
39795
40326
  // units/index.ts
39796
40327
  var units_exports = {};
39797
40328
  __export(units_exports, {
@@ -41900,6 +42431,7 @@ exports.geometry = geometry_exports;
41900
42431
  exports.i18n = i18n_exports;
41901
42432
  exports.math = math_exports;
41902
42433
  exports.opc = opc_exports;
42434
+ exports.ribbon = ribbon_exports;
41903
42435
  exports.text = text_exports;
41904
42436
  exports.units = units_exports;
41905
42437
  exports.xml = xml_exports;