ooxml-core 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/automation/index.cjs +10903 -5961
  2. package/dist/automation/index.mjs +10903 -5961
  3. package/dist/collab/session.d.ts.map +1 -1
  4. package/dist/color/index.cjs +103 -0
  5. package/dist/color/index.d.ts +1 -0
  6. package/dist/color/index.d.ts.map +1 -1
  7. package/dist/color/index.mjs +94 -1
  8. package/dist/color/theme-palette.d.ts +55 -0
  9. package/dist/color/theme-palette.d.ts.map +1 -0
  10. package/dist/docx/layout/page-cursor.d.ts.map +1 -1
  11. package/dist/docx/model.d.ts +2 -2
  12. package/dist/docx/model.d.ts.map +1 -1
  13. package/dist/docx/style-numbering-package.d.ts.map +1 -1
  14. package/dist/docx/tab-stops.d.ts.map +1 -1
  15. package/dist/docx/table-styles.d.ts.map +1 -1
  16. package/dist/docx/write-drawing.d.ts.map +1 -1
  17. package/dist/docx/write-table.d.ts.map +1 -1
  18. package/dist/geometry/connector-router-astar.d.ts +24 -0
  19. package/dist/geometry/connector-router-astar.d.ts.map +1 -0
  20. package/dist/geometry/connector-router-graph.d.ts +38 -0
  21. package/dist/geometry/connector-router-graph.d.ts.map +1 -0
  22. package/dist/geometry/connector-router-types.d.ts +53 -0
  23. package/dist/geometry/connector-router-types.d.ts.map +1 -0
  24. package/dist/geometry/connector-router.d.ts +35 -0
  25. package/dist/geometry/connector-router.d.ts.map +1 -0
  26. package/dist/geometry/guide-formula-api.d.ts.map +1 -1
  27. package/dist/geometry/index.cjs +319 -0
  28. package/dist/geometry/index.d.ts +1 -0
  29. package/dist/geometry/index.d.ts.map +1 -1
  30. package/dist/geometry/index.mjs +304 -1
  31. package/dist/geometry/preset-shape-definitions-chart-marks.d.ts.map +1 -1
  32. package/dist/geometry/preset-shape-paths.d.ts +1 -1
  33. package/dist/geometry/preset-shape-paths.d.ts.map +1 -1
  34. package/dist/index.cjs +510 -3
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.mjs +510 -4
  38. package/dist/math/omml-to-latex.d.ts.map +1 -1
  39. package/dist/pptx/automation/index.d.ts.map +1 -1
  40. package/dist/pptx/chunks/index-Cn-GzYGp.d.ts.map +1 -1
  41. package/dist/pptx/signature-node/index.cjs +37 -7
  42. package/dist/pptx/signature-node/index.d.ts.map +1 -1
  43. package/dist/pptx/signature-node/index.mjs +37 -7
  44. package/dist/pptx/ui/index.cjs +22 -24
  45. package/dist/pptx/ui/index.d.ts +14 -7
  46. package/dist/pptx/ui/index.d.ts.map +1 -1
  47. package/dist/pptx/ui/index.mjs +22 -24
  48. package/dist/ribbon/add-in.d.ts +53 -0
  49. package/dist/ribbon/add-in.d.ts.map +1 -0
  50. package/dist/ribbon/index.cjs +28 -0
  51. package/dist/ribbon/index.d.ts +2 -0
  52. package/dist/ribbon/index.d.ts.map +1 -0
  53. package/dist/ribbon/index.mjs +23 -0
  54. package/dist/teams/files.d.ts.map +1 -1
  55. package/dist/teams/index.cjs +29 -15
  56. package/dist/teams/index.mjs +29 -15
  57. package/dist/text/font-metrics/advance-width.d.ts +9 -0
  58. package/dist/text/font-metrics/advance-width.d.ts.map +1 -0
  59. package/dist/text/font-metrics/design-advances.generated.d.ts +12 -0
  60. package/dist/text/font-metrics/design-advances.generated.d.ts.map +1 -0
  61. package/dist/text/index.cjs +53 -0
  62. package/dist/text/index.d.ts +1 -0
  63. package/dist/text/index.d.ts.map +1 -1
  64. package/dist/text/index.mjs +52 -1
  65. package/dist/visio/clipboard-types.d.ts +8 -0
  66. package/dist/visio/clipboard-types.d.ts.map +1 -1
  67. package/dist/visio/clipboard-xml.d.ts.map +1 -1
  68. package/dist/visio/clipboard.d.ts.map +1 -1
  69. package/dist/visio/connector-route-avoid.d.ts +24 -0
  70. package/dist/visio/connector-route-avoid.d.ts.map +1 -0
  71. package/dist/visio/connector-route-walk.d.ts +37 -0
  72. package/dist/visio/connector-route-walk.d.ts.map +1 -0
  73. package/dist/visio/connector-route.d.ts +5 -2
  74. package/dist/visio/connector-route.d.ts.map +1 -1
  75. package/dist/visio/create-document.d.ts +6 -0
  76. package/dist/visio/create-document.d.ts.map +1 -1
  77. package/dist/visio/edit-change-shape-builtin.d.ts +18 -0
  78. package/dist/visio/edit-change-shape-builtin.d.ts.map +1 -0
  79. package/dist/visio/edit-change-shape-commands.d.ts +10 -4
  80. package/dist/visio/edit-change-shape-commands.d.ts.map +1 -1
  81. package/dist/visio/edit-change-shape.d.ts +3 -1
  82. package/dist/visio/edit-change-shape.d.ts.map +1 -1
  83. package/dist/visio/edit-commands.d.ts +5 -1
  84. package/dist/visio/edit-commands.d.ts.map +1 -1
  85. package/dist/visio/edit-connector-layout.d.ts +2 -2
  86. package/dist/visio/edit-connector-layout.d.ts.map +1 -1
  87. package/dist/visio/edit-connector-obstacles.d.ts +14 -0
  88. package/dist/visio/edit-connector-obstacles.d.ts.map +1 -0
  89. package/dist/visio/edit-connector-reroute.d.ts +7 -0
  90. package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
  91. package/dist/visio/edit-connector.d.ts +2 -0
  92. package/dist/visio/edit-connector.d.ts.map +1 -1
  93. package/dist/visio/edit-delete.d.ts +4 -2
  94. package/dist/visio/edit-delete.d.ts.map +1 -1
  95. package/dist/visio/edit-duplicate-scope.d.ts +7 -2
  96. package/dist/visio/edit-duplicate-scope.d.ts.map +1 -1
  97. package/dist/visio/edit-duplicate.d.ts.map +1 -1
  98. package/dist/visio/edit-formatting-cell-admission.d.ts.map +1 -1
  99. package/dist/visio/edit-formatting-commands.d.ts +17 -0
  100. package/dist/visio/edit-formatting-commands.d.ts.map +1 -1
  101. package/dist/visio/edit-formatting-paint.d.ts.map +1 -1
  102. package/dist/visio/edit-formatting-scope.d.ts +6 -1
  103. package/dist/visio/edit-formatting-scope.d.ts.map +1 -1
  104. package/dist/visio/edit-formatting-text.d.ts.map +1 -1
  105. package/dist/visio/edit-formatting.d.ts.map +1 -1
  106. package/dist/visio/edit-group-formulas.d.ts +22 -0
  107. package/dist/visio/edit-group-formulas.d.ts.map +1 -0
  108. package/dist/visio/edit-group-rotation.d.ts +3 -1
  109. package/dist/visio/edit-group-rotation.d.ts.map +1 -1
  110. package/dist/visio/edit-group.d.ts +10 -3
  111. package/dist/visio/edit-group.d.ts.map +1 -1
  112. package/dist/visio/edit-instance-checks.d.ts +18 -0
  113. package/dist/visio/edit-instance-checks.d.ts.map +1 -0
  114. package/dist/visio/edit-instance-clipboard.d.ts +22 -0
  115. package/dist/visio/edit-instance-clipboard.d.ts.map +1 -0
  116. package/dist/visio/edit-instance-delete.d.ts +19 -0
  117. package/dist/visio/edit-instance-delete.d.ts.map +1 -0
  118. package/dist/visio/edit-instance-duplicate.d.ts +17 -0
  119. package/dist/visio/edit-instance-duplicate.d.ts.map +1 -0
  120. package/dist/visio/edit-instance-format.d.ts +31 -0
  121. package/dist/visio/edit-instance-format.d.ts.map +1 -0
  122. package/dist/visio/edit-instance-geometry.d.ts +21 -0
  123. package/dist/visio/edit-instance-geometry.d.ts.map +1 -0
  124. package/dist/visio/edit-instance-group.d.ts +18 -0
  125. package/dist/visio/edit-instance-group.d.ts.map +1 -0
  126. package/dist/visio/edit-instance-order.d.ts +16 -0
  127. package/dist/visio/edit-instance-order.d.ts.map +1 -0
  128. package/dist/visio/edit-instance-recalculate.d.ts +32 -0
  129. package/dist/visio/edit-instance-recalculate.d.ts.map +1 -0
  130. package/dist/visio/edit-instance-replace.d.ts +18 -0
  131. package/dist/visio/edit-instance-replace.d.ts.map +1 -0
  132. package/dist/visio/edit-instance-scope.d.ts +29 -0
  133. package/dist/visio/edit-instance-scope.d.ts.map +1 -0
  134. package/dist/visio/edit-instance-shape.d.ts +52 -0
  135. package/dist/visio/edit-instance-shape.d.ts.map +1 -0
  136. package/dist/visio/edit-instance-sheet.d.ts +52 -0
  137. package/dist/visio/edit-instance-sheet.d.ts.map +1 -0
  138. package/dist/visio/edit-master-drop.d.ts +39 -0
  139. package/dist/visio/edit-master-drop.d.ts.map +1 -0
  140. package/dist/visio/edit-master-index.d.ts.map +1 -1
  141. package/dist/visio/edit-master-instance-extras.d.ts +15 -0
  142. package/dist/visio/edit-master-instance-extras.d.ts.map +1 -0
  143. package/dist/visio/edit-master-instance-group.d.ts +25 -0
  144. package/dist/visio/edit-master-instance-group.d.ts.map +1 -0
  145. package/dist/visio/edit-master-instance.d.ts +42 -0
  146. package/dist/visio/edit-master-instance.d.ts.map +1 -0
  147. package/dist/visio/edit-master-scope.d.ts.map +1 -1
  148. package/dist/visio/edit-page-auto-size.d.ts.map +1 -1
  149. package/dist/visio/edit-page-layout.d.ts +15 -0
  150. package/dist/visio/edit-page-layout.d.ts.map +1 -0
  151. package/dist/visio/edit-page-setup-commands.d.ts +3 -1
  152. package/dist/visio/edit-page-setup-commands.d.ts.map +1 -1
  153. package/dist/visio/edit-page-theme-refresh.d.ts +4 -0
  154. package/dist/visio/edit-page-theme-refresh.d.ts.map +1 -0
  155. package/dist/visio/edit-page-theme.d.ts.map +1 -1
  156. package/dist/visio/edit-pages.d.ts.map +1 -1
  157. package/dist/visio/edit-paste.d.ts +3 -1
  158. package/dist/visio/edit-paste.d.ts.map +1 -1
  159. package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
  160. package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
  161. package/dist/visio/edit-shape-order.d.ts +19 -4
  162. package/dist/visio/edit-shape-order.d.ts.map +1 -1
  163. package/dist/visio/edit-snap-glue.d.ts +16 -0
  164. package/dist/visio/edit-snap-glue.d.ts.map +1 -0
  165. package/dist/visio/edit-stencil-connector-drop.d.ts +9 -0
  166. package/dist/visio/edit-stencil-connector-drop.d.ts.map +1 -0
  167. package/dist/visio/edit-stencil-connector-layout.d.ts +14 -0
  168. package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -0
  169. package/dist/visio/edit-stencil-connector-write.d.ts +16 -0
  170. package/dist/visio/edit-stencil-connector-write.d.ts.map +1 -0
  171. package/dist/visio/edit-stencil-connector.d.ts +29 -0
  172. package/dist/visio/edit-stencil-connector.d.ts.map +1 -0
  173. package/dist/visio/edit-stencil-master.d.ts +17 -0
  174. package/dist/visio/edit-stencil-master.d.ts.map +1 -0
  175. package/dist/visio/edit-text-size-formula.d.ts +17 -0
  176. package/dist/visio/edit-text-size-formula.d.ts.map +1 -0
  177. package/dist/visio/edit-text-size.d.ts +34 -0
  178. package/dist/visio/edit-text-size.d.ts.map +1 -0
  179. package/dist/visio/edit.d.ts +1 -1
  180. package/dist/visio/edit.d.ts.map +1 -1
  181. package/dist/visio/formula-evaluate.d.ts +2 -0
  182. package/dist/visio/formula-evaluate.d.ts.map +1 -1
  183. package/dist/visio/formula-functions.d.ts +13 -0
  184. package/dist/visio/formula-functions.d.ts.map +1 -0
  185. package/dist/visio/formula-numeric-functions.d.ts.map +1 -1
  186. package/dist/visio/formula.d.ts +14 -0
  187. package/dist/visio/formula.d.ts.map +1 -1
  188. package/dist/visio/index.cjs +11004 -5929
  189. package/dist/visio/index.d.ts +11 -1
  190. package/dist/visio/index.d.ts.map +1 -1
  191. package/dist/visio/index.mjs +10978 -5930
  192. package/dist/visio/line-jumps.d.ts +21 -0
  193. package/dist/visio/line-jumps.d.ts.map +1 -0
  194. package/dist/visio/master-list.d.ts +20 -0
  195. package/dist/visio/master-list.d.ts.map +1 -0
  196. package/dist/visio/model.d.ts +41 -0
  197. package/dist/visio/model.d.ts.map +1 -1
  198. package/dist/visio/page-layout.d.ts +40 -0
  199. package/dist/visio/page-layout.d.ts.map +1 -0
  200. package/dist/visio/page-theme.d.ts.map +1 -1
  201. package/dist/visio/parser.d.ts.map +1 -1
  202. package/dist/visio/shape-connections.d.ts +2 -2
  203. package/dist/visio/shape-connections.d.ts.map +1 -1
  204. package/dist/visio/snap-glue.d.ts +49 -0
  205. package/dist/visio/snap-glue.d.ts.map +1 -0
  206. package/dist/visio/stencil-master-part.d.ts +15 -0
  207. package/dist/visio/stencil-master-part.d.ts.map +1 -0
  208. package/dist/visio/stencil-masters.d.ts +19 -0
  209. package/dist/visio/stencil-masters.d.ts.map +1 -0
  210. package/dist/visio/stencil-windows.d.ts +20 -0
  211. package/dist/visio/stencil-windows.d.ts.map +1 -0
  212. package/dist/visio/stencils.d.ts +2 -0
  213. package/dist/visio/stencils.d.ts.map +1 -1
  214. package/dist/visio/style.d.ts +5 -0
  215. package/dist/visio/style.d.ts.map +1 -1
  216. package/dist/visio/text-extent.d.ts +40 -0
  217. package/dist/visio/text-extent.d.ts.map +1 -0
  218. package/dist/visio/text-fields.d.ts.map +1 -1
  219. package/dist/visio/theme-color-ref.d.ts +33 -0
  220. package/dist/visio/theme-color-ref.d.ts.map +1 -0
  221. package/dist/visio/ui/auto-connect.d.ts +80 -0
  222. package/dist/visio/ui/auto-connect.d.ts.map +1 -0
  223. package/dist/visio/ui/connection-points.d.ts +7 -2
  224. package/dist/visio/ui/connection-points.d.ts.map +1 -1
  225. package/dist/visio/ui/connector-preview.d.ts +3 -2
  226. package/dist/visio/ui/connector-preview.d.ts.map +1 -1
  227. package/dist/visio/ui/contract.d.ts +7 -2
  228. package/dist/visio/ui/contract.d.ts.map +1 -1
  229. package/dist/visio/ui/data-graphics.d.ts +6 -2
  230. package/dist/visio/ui/data-graphics.d.ts.map +1 -1
  231. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  232. package/dist/visio/ui/formatting.d.ts +27 -0
  233. package/dist/visio/ui/formatting.d.ts.map +1 -1
  234. package/dist/visio/ui/guides.d.ts +11 -2
  235. package/dist/visio/ui/guides.d.ts.map +1 -1
  236. package/dist/visio/ui/index.cjs +22141 -16751
  237. package/dist/visio/ui/index.d.ts +3 -0
  238. package/dist/visio/ui/index.d.ts.map +1 -1
  239. package/dist/visio/ui/index.mjs +22112 -16752
  240. package/dist/visio/ui/master-drop.d.ts +38 -0
  241. package/dist/visio/ui/master-drop.d.ts.map +1 -0
  242. package/dist/visio/ui/page-edit.d.ts.map +1 -1
  243. package/dist/visio/ui/ruler-grid.d.ts +45 -0
  244. package/dist/visio/ui/ruler-grid.d.ts.map +1 -0
  245. package/dist/visio/ui/sample-drawing.d.ts +3 -2
  246. package/dist/visio/ui/sample-drawing.d.ts.map +1 -1
  247. package/dist/visio/ui/scene-validation.d.ts.map +1 -1
  248. package/dist/visio/ui/shape-change.d.ts +16 -4
  249. package/dist/visio/ui/shape-change.d.ts.map +1 -1
  250. package/dist/visio/ui/shape-clipboard.d.ts.map +1 -1
  251. package/dist/visio/ui/shape-duplicate.d.ts +7 -1
  252. package/dist/visio/ui/shape-duplicate.d.ts.map +1 -1
  253. package/dist/visio/ui/shape-group.d.ts.map +1 -1
  254. package/dist/visio/ui/shape-order.d.ts +6 -1
  255. package/dist/visio/ui/shape-order.d.ts.map +1 -1
  256. package/dist/visio/ui/shape-resize.d.ts.map +1 -1
  257. package/dist/visio/ui/shape-rotation.d.ts +10 -1
  258. package/dist/visio/ui/shape-rotation.d.ts.map +1 -1
  259. package/dist/visio/ui/size-position.d.ts.map +1 -1
  260. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
  261. package/dist/xlsx/conditional-extensions.d.ts.map +1 -1
  262. package/dist/xlsx/edit/cell-shift.d.ts.map +1 -1
  263. package/dist/xlsx/edit/insert-guard.d.ts +6 -0
  264. package/dist/xlsx/edit/insert-guard.d.ts.map +1 -0
  265. package/dist/xlsx/edit/shift-preserved.d.ts +2 -0
  266. package/dist/xlsx/edit/shift-preserved.d.ts.map +1 -1
  267. package/dist/xlsx/edit/shift-rule-anchors.d.ts +9 -0
  268. package/dist/xlsx/edit/shift-rule-anchors.d.ts.map +1 -0
  269. package/dist/xlsx/edit/shift-sheet.d.ts.map +1 -1
  270. package/dist/xlsx/edit/structure.d.ts.map +1 -1
  271. package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
  272. package/dist/xlsx/formula/engine-util.d.ts.map +1 -1
  273. package/dist/xlsx/index.cjs +118 -16
  274. package/dist/xlsx/index.mjs +118 -16
  275. package/dist/xlsx/load/index.cjs +70 -16
  276. package/dist/xlsx/load/index.mjs +70 -16
  277. package/dist/xlsx/load/text-decode.d.ts.map +1 -1
  278. package/dist/xlsx/model.d.ts +2 -0
  279. package/dist/xlsx/model.d.ts.map +1 -1
  280. package/dist/xlsx/read/package.d.ts.map +1 -1
  281. package/dist/xlsx/read/tables.d.ts.map +1 -1
  282. package/dist/xlsx/ui/commands/number.d.ts.map +1 -1
  283. package/dist/xlsx/ui/commands/util.d.ts.map +1 -1
  284. package/dist/xlsx/ui/index.cjs +100 -1
  285. package/dist/xlsx/ui/index.mjs +100 -1
  286. package/dist/xlsx/ui/locales/de/grid.d.ts.map +1 -1
  287. package/dist/xlsx/ui/locales/en/grid.d.ts.map +1 -1
  288. package/dist/xlsx/ui/locales/es/grid.d.ts.map +1 -1
  289. package/dist/xlsx/ui/locales/fr/grid.d.ts.map +1 -1
  290. package/dist/xlsx/ui/locales/zh-CN/grid.d.ts.map +1 -1
  291. package/dist/xlsx/ui/ribbon/parts.d.ts.map +1 -1
  292. package/dist/xlsx/write/conditional.d.ts.map +1 -1
  293. package/dist/xlsx/write/styles.d.ts.map +1 -1
  294. package/dist/xlsx/write/table-patch.d.ts.map +1 -1
  295. package/package.json +6 -1
@@ -2,6 +2,22 @@ import { THEME_COLOR_PALETTE_COLUMNS } from '../../chunk-EP5BJIUW.mjs';
2
2
  import { resolveThemeColorRef, hexToRgbChannels, rgbToHsl } from '../../chunk-KII4AAYH.mjs';
3
3
  import '../../chunk-7P6ASYW6.mjs';
4
4
 
5
+ // color/theme-palette.ts
6
+ var lighter = (percent) => ({ kind: "lighter", percent });
7
+ var darker = (percent) => ({ kind: "darker", percent });
8
+ function themePaletteVariantsForLuminance(l) {
9
+ if (l < 0.05) return [lighter(50), lighter(35), lighter(25), lighter(15), lighter(5)];
10
+ if (l < 0.25) return [lighter(90), lighter(75), lighter(50), lighter(25), lighter(10)];
11
+ if (l < 0.75) return [lighter(80), lighter(60), lighter(40), darker(25), darker(50)];
12
+ if (l < 0.95) return [darker(10), darker(25), darker(50), darker(75), darker(90)];
13
+ return [darker(5), darker(15), darker(25), darker(35), darker(50)];
14
+ }
15
+ function themePaletteVariantLuminance(variant) {
16
+ const fraction = variant.percent / 100;
17
+ const lumMod = Math.round((1 - fraction) * 1e5) / 1e5;
18
+ return variant.kind === "lighter" ? { lumMod, lumOff: fraction } : { lumMod };
19
+ }
20
+
5
21
  // pptx/ui/theme-color-swatches.ts
6
22
  var COLUMN_LABELS = {
7
23
  bg1: "Background 1",
@@ -21,31 +37,13 @@ var COLUMN_LABELS = {
21
37
  hlink: "Hyperlink",
22
38
  folHlink: "Followed Hyperlink"
23
39
  };
24
- function lighter(percent) {
25
- return { kind: "lighter", percent };
26
- }
27
- function darker(percent) {
28
- return { kind: "darker", percent };
29
- }
40
+ var lighter2 = (percent) => ({ kind: "lighter", percent });
41
+ var darker2 = (percent) => ({ kind: "darker", percent });
30
42
  function themeColorVariantsForLuminance(l) {
31
- if (l < 0.05) {
32
- return [lighter(50), lighter(35), lighter(25), lighter(15), lighter(5)];
33
- }
34
- if (l < 0.25) {
35
- return [lighter(90), lighter(75), lighter(50), lighter(25), lighter(10)];
36
- }
37
- if (l < 0.75) {
38
- return [lighter(80), lighter(60), lighter(40), darker(25), darker(50)];
39
- }
40
- if (l < 0.95) {
41
- return [darker(10), darker(25), darker(50), darker(75), darker(90)];
42
- }
43
- return [darker(5), darker(15), darker(25), darker(35), darker(50)];
43
+ return themePaletteVariantsForLuminance(l);
44
44
  }
45
45
  function themeColorVariantToRef(scheme, variant) {
46
- const fraction = variant.percent / 100;
47
- const lumMod = Math.round((1 - fraction) * 1e5) / 1e5;
48
- return variant.kind === "lighter" ? { scheme, lumMod, lumOff: fraction } : { scheme, lumMod };
46
+ return { scheme, ...themePaletteVariantLuminance(variant) };
49
47
  }
50
48
  function describeThemeColorSwatch(ref, variant) {
51
49
  const column = COLUMN_LABELS[ref.scheme] ?? ref.scheme;
@@ -61,9 +59,9 @@ function themeColorVariantOfRef(ref) {
61
59
  }
62
60
  const percent = Math.round((1 - ref.lumMod) * 100);
63
61
  if (ref.lumOff !== void 0) {
64
- return Math.round(ref.lumOff * 100) === percent ? lighter(percent) : void 0;
62
+ return Math.round(ref.lumOff * 100) === percent ? lighter2(percent) : void 0;
65
63
  }
66
- return darker(percent);
64
+ return darker2(percent);
67
65
  }
68
66
  function buildThemeColorSwatchGrid(themeColorMap) {
69
67
  if (!themeColorMap) {
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Ribbon add-in tabs: tabs a host application adds after a product's own, as an Office add-in
3
+ * does (the ACROBAT tab in Visio and Excel). The descriptor is plain data, so one tab works in
4
+ * every editor and every framework binding; the DOM that renders it lives in `ooxml-ui`
5
+ * (`syncRibbonAddIns`) and in the PowerPoint ribbon descriptors.
6
+ */
7
+ /** One command of an add-in group. With `items` it is a drop-down of those commands. */
8
+ export interface RibbonAddInCommand {
9
+ /** Unique within the tab; reported in the event detail. */
10
+ id: string;
11
+ label: string;
12
+ /** A name from the shared icon set (`registerIcon` of `ooxml-ui` adds the host's own). */
13
+ icon?: string;
14
+ /** `large` (the default) stacks the icon over the label; `small` commands fill columns of three. */
15
+ size?: 'large' | 'small';
16
+ /** Tooltip; the label when omitted. */
17
+ title?: string;
18
+ disabled?: boolean;
19
+ items?: readonly RibbonAddInCommand[];
20
+ run?: () => void;
21
+ }
22
+ export interface RibbonAddInGroup {
23
+ label: string;
24
+ commands: readonly RibbonAddInCommand[];
25
+ }
26
+ export interface RibbonAddInTab {
27
+ /** Unique among the add-in tabs and different from the product's tab ids (`home`, `insert`...). */
28
+ id: string;
29
+ label: string;
30
+ /** Key tip of the tab, for products that show key tips. */
31
+ keytip?: string;
32
+ groups: readonly RibbonAddInGroup[];
33
+ }
34
+ /** Name of the DOM event an editor dispatches when an add-in command is chosen. */
35
+ export declare const RIBBON_ADD_IN_EVENT = "office-ribbon-add-in";
36
+ /** Detail of the `office-ribbon-add-in` event: the tab and the command that was chosen. */
37
+ export interface RibbonAddInCommandDetail {
38
+ tab: string;
39
+ command: string;
40
+ }
41
+ /**
42
+ * The tabs a ribbon may show, in order: a tab whose id is empty, repeated or one of `reserved`
43
+ * (the product's own tab ids) is left out, so an add-in can never replace a built-in tab.
44
+ */
45
+ export declare function acceptedRibbonAddIns(tabs: readonly RibbonAddInTab[] | null | undefined, reserved?: Iterable<string>): RibbonAddInTab[];
46
+ /** Every command of a tab, drop-down items included, in document order. */
47
+ export declare function ribbonAddInCommands(tab: RibbonAddInTab): RibbonAddInCommand[];
48
+ /**
49
+ * The enabled command `id` of the tab, or undefined when it is unknown or disabled. Renderers
50
+ * call this before running a command, so a disabled command never runs however it was reached.
51
+ */
52
+ export declare function findRibbonAddInCommand(tab: RibbonAddInTab, id: string | undefined): RibbonAddInCommand | undefined;
53
+ //# sourceMappingURL=add-in.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-in.d.ts","sourceRoot":"","sources":["../../ribbon/add-in.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IAClC,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC9B,mGAAmG;IACnG,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACpC;AAED,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAE1D,2FAA2F;AAC3F,MAAM,WAAW,wBAAwB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,EAClD,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,cAAc,EAAE,CASlB;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,kBAAkB,EAAE,CAI7E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,GAAG,SAAS,GACpB,kBAAkB,GAAG,SAAS,CAIhC"}
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ // ribbon/add-in.ts
4
+ var RIBBON_ADD_IN_EVENT = "office-ribbon-add-in";
5
+ function acceptedRibbonAddIns(tabs, reserved = []) {
6
+ const taken = new Set(reserved);
7
+ const accepted = [];
8
+ for (const tab of tabs ?? []) {
9
+ if (!tab || typeof tab.id !== "string" || !tab.id || taken.has(tab.id)) continue;
10
+ taken.add(tab.id);
11
+ accepted.push(tab);
12
+ }
13
+ return accepted;
14
+ }
15
+ function ribbonAddInCommands(tab) {
16
+ const flatten = (commands) => commands.flatMap((command) => [command, ...flatten(command.items ?? [])]);
17
+ return flatten(tab.groups.flatMap((group) => group.commands));
18
+ }
19
+ function findRibbonAddInCommand(tab, id) {
20
+ if (id === void 0) return void 0;
21
+ const command = ribbonAddInCommands(tab).find((candidate) => candidate.id === id);
22
+ return command && !command.disabled ? command : void 0;
23
+ }
24
+
25
+ exports.RIBBON_ADD_IN_EVENT = RIBBON_ADD_IN_EVENT;
26
+ exports.acceptedRibbonAddIns = acceptedRibbonAddIns;
27
+ exports.findRibbonAddInCommand = findRibbonAddInCommand;
28
+ exports.ribbonAddInCommands = ribbonAddInCommands;
@@ -0,0 +1,2 @@
1
+ export * from './add-in.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ribbon/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,23 @@
1
+ // ribbon/add-in.ts
2
+ var RIBBON_ADD_IN_EVENT = "office-ribbon-add-in";
3
+ function acceptedRibbonAddIns(tabs, reserved = []) {
4
+ const taken = new Set(reserved);
5
+ const accepted = [];
6
+ for (const tab of tabs ?? []) {
7
+ if (!tab || typeof tab.id !== "string" || !tab.id || taken.has(tab.id)) continue;
8
+ taken.add(tab.id);
9
+ accepted.push(tab);
10
+ }
11
+ return accepted;
12
+ }
13
+ function ribbonAddInCommands(tab) {
14
+ const flatten = (commands) => commands.flatMap((command) => [command, ...flatten(command.items ?? [])]);
15
+ return flatten(tab.groups.flatMap((group) => group.commands));
16
+ }
17
+ function findRibbonAddInCommand(tab, id) {
18
+ if (id === void 0) return void 0;
19
+ const command = ribbonAddInCommands(tab).find((candidate) => candidate.id === id);
20
+ return command && !command.disabled ? command : void 0;
21
+ }
22
+
23
+ export { RIBBON_ADD_IN_EVENT, acceptedRibbonAddIns, findRibbonAddInCommand, ribbonAddInCommands };
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../teams/files.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE3D,KAAK,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC;AACtC,UAAU,WAAW;IACpB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,SAAS,IAAI,OAAO,CAAC;IACrB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;CAC1E;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,WAAW,GAClB,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,aAAa,GAAG,gBAAgB,CAAC,CAoGtE"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../teams/files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE3D,KAAK,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC;AACtC,UAAU,WAAW;IACpB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,SAAS,IAAI,OAAO,CAAC;IACrB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;CAC1E;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,WAAW,GAClB,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,aAAa,GAAG,gBAAgB,CAAC,CAoGtE"}
@@ -18727,6 +18727,8 @@ function parseTable(xml, partName) {
18727
18727
  const columns = xChildren(xFirst(root, "tableColumns") ?? root, "tableColumn").map(
18728
18728
  (node) => {
18729
18729
  const column = { name: att(node, "name") ?? "" };
18730
+ const id = numAttr(node, "id");
18731
+ if (id !== void 0 && Number.isInteger(id) && id >= 0) column.sourceId = id;
18730
18732
  const fn = att(node, "totalsRowFunction");
18731
18733
  if (fn && fn !== "none") column.totalsRowFunction = fn;
18732
18734
  const label2 = att(node, "totalsRowLabel");
@@ -19090,7 +19092,22 @@ function tableFilterRange(table2) {
19090
19092
  end: { ...table2.range.end, row: table2.range.end.row - (table2.totalsRow ? 1 : 0) }
19091
19093
  };
19092
19094
  }
19093
- function patchAutoFilter(doc, root, table2, before) {
19095
+ function sourceColumnsForPatch(root, table2, names2) {
19096
+ const list = xKid(root, "tableColumns");
19097
+ const source2 = list ? xKids(list, "tableColumn") : [];
19098
+ const byId = new Map(source2.map((c2) => [Number(c2.getAttribute("id")), c2]));
19099
+ const byName = new Map(source2.map((c2) => [(c2.getAttribute("name") ?? "").toLowerCase(), c2]));
19100
+ const tracked = table2.partName !== void 0 || table2.columns.some((c2) => c2.sourceId !== void 0);
19101
+ const used = /* @__PURE__ */ new Set();
19102
+ return names2.map((name, index2) => {
19103
+ const id = table2.columns[index2]?.sourceId;
19104
+ const match2 = id !== void 0 ? byId.get(id) : tracked ? void 0 : source2.length === names2.length ? source2[index2] : byName.get(name.toLowerCase());
19105
+ if (!match2 || used.has(match2)) return void 0;
19106
+ used.add(match2);
19107
+ return match2;
19108
+ });
19109
+ }
19110
+ function patchAutoFilter(doc, root, table2, before, names2) {
19094
19111
  const existing = xKid(root, "autoFilter");
19095
19112
  if (!table2.headerRow) {
19096
19113
  if (existing) root.removeChild(existing);
@@ -19099,10 +19116,14 @@ function patchAutoFilter(doc, root, table2, before) {
19099
19116
  const filter2 = existing ?? doc.createElementNS(NS.x, "autoFilter");
19100
19117
  const range = tableFilterRange(table2);
19101
19118
  filter2.setAttribute("ref", formatRange(range));
19102
- const width = range.end.col - range.start.col + 1;
19119
+ const list = xKid(root, "tableColumns");
19120
+ const original = list ? xKids(list, "tableColumn") : [];
19121
+ const current = new Map(sourceColumnsForPatch(root, table2, names2).map((c2, index2) => [c2, index2]));
19103
19122
  for (const column of xKids(filter2, "filterColumn")) {
19104
- const colId = Number(column.getAttribute("colId") ?? "0");
19105
- if (!(colId < width)) filter2.removeChild(column);
19123
+ const old = original[Number(column.getAttribute("colId") ?? "0")];
19124
+ const index2 = old ? current.get(old) : void 0;
19125
+ if (index2 === void 0) filter2.removeChild(column);
19126
+ else column.setAttribute("colId", num(index2));
19106
19127
  }
19107
19128
  if (!existing) insertBefore(root, filter2, ["sortState", "tableColumns"]);
19108
19129
  const sort2 = xKid(filter2, "sortState") ?? xKid(root, "sortState");
@@ -19135,18 +19156,11 @@ function patchColumns(doc, root, sheet, table2, names2) {
19135
19156
  insertBefore(root, list, ["tableStyleInfo", "extLst"]);
19136
19157
  }
19137
19158
  const sourceColumns = xKids(list, "tableColumn");
19138
- const byName = new Map(
19139
- sourceColumns.map((c2) => [(c2.getAttribute("name") ?? "").toLowerCase(), c2])
19140
- );
19141
- const sameCount = sourceColumns.length === names2.length;
19142
- const used = /* @__PURE__ */ new Set();
19143
19159
  const ids = /* @__PURE__ */ new Set();
19144
- const picked = names2.map((name, index2) => {
19145
- const match2 = sameCount ? sourceColumns[index2] : byName.get(name.toLowerCase());
19146
- if (!match2 || used.has(match2)) return void 0;
19147
- used.add(match2);
19160
+ const picked = sourceColumnsForPatch(root, table2, names2).map((match2) => {
19161
+ if (!match2) return void 0;
19148
19162
  const id = Number(match2.getAttribute("id"));
19149
- if (Number.isInteger(id) && id > 0 && !ids.has(id)) ids.add(id);
19163
+ if (Number.isInteger(id) && id >= 0 && !ids.has(id)) ids.add(id);
19150
19164
  else match2.removeAttribute("id");
19151
19165
  return match2;
19152
19166
  });
@@ -19219,7 +19233,7 @@ function patchTableXml(sourceXml, sheet, table2, id, names2) {
19219
19233
  root.removeAttribute("totalsRowCount");
19220
19234
  if (!root.hasAttribute("totalsRowShown")) root.setAttribute("totalsRowShown", "0");
19221
19235
  }
19222
- patchAutoFilter(doc, root, table2, before);
19236
+ patchAutoFilter(doc, root, table2, before, names2);
19223
19237
  patchColumns(doc, root, sheet, table2, names2);
19224
19238
  patchStyleInfo(doc, root, table2);
19225
19239
  return buildXml(doc);
@@ -18700,6 +18700,8 @@ function parseTable(xml, partName) {
18700
18700
  const columns = xChildren(xFirst(root, "tableColumns") ?? root, "tableColumn").map(
18701
18701
  (node) => {
18702
18702
  const column = { name: att(node, "name") ?? "" };
18703
+ const id = numAttr(node, "id");
18704
+ if (id !== void 0 && Number.isInteger(id) && id >= 0) column.sourceId = id;
18703
18705
  const fn = att(node, "totalsRowFunction");
18704
18706
  if (fn && fn !== "none") column.totalsRowFunction = fn;
18705
18707
  const label2 = att(node, "totalsRowLabel");
@@ -19063,7 +19065,22 @@ function tableFilterRange(table2) {
19063
19065
  end: { ...table2.range.end, row: table2.range.end.row - (table2.totalsRow ? 1 : 0) }
19064
19066
  };
19065
19067
  }
19066
- function patchAutoFilter(doc, root, table2, before) {
19068
+ function sourceColumnsForPatch(root, table2, names2) {
19069
+ const list = xKid(root, "tableColumns");
19070
+ const source2 = list ? xKids(list, "tableColumn") : [];
19071
+ const byId = new Map(source2.map((c2) => [Number(c2.getAttribute("id")), c2]));
19072
+ const byName = new Map(source2.map((c2) => [(c2.getAttribute("name") ?? "").toLowerCase(), c2]));
19073
+ const tracked = table2.partName !== void 0 || table2.columns.some((c2) => c2.sourceId !== void 0);
19074
+ const used = /* @__PURE__ */ new Set();
19075
+ return names2.map((name, index2) => {
19076
+ const id = table2.columns[index2]?.sourceId;
19077
+ const match2 = id !== void 0 ? byId.get(id) : tracked ? void 0 : source2.length === names2.length ? source2[index2] : byName.get(name.toLowerCase());
19078
+ if (!match2 || used.has(match2)) return void 0;
19079
+ used.add(match2);
19080
+ return match2;
19081
+ });
19082
+ }
19083
+ function patchAutoFilter(doc, root, table2, before, names2) {
19067
19084
  const existing = xKid(root, "autoFilter");
19068
19085
  if (!table2.headerRow) {
19069
19086
  if (existing) root.removeChild(existing);
@@ -19072,10 +19089,14 @@ function patchAutoFilter(doc, root, table2, before) {
19072
19089
  const filter2 = existing ?? doc.createElementNS(NS.x, "autoFilter");
19073
19090
  const range = tableFilterRange(table2);
19074
19091
  filter2.setAttribute("ref", formatRange(range));
19075
- const width = range.end.col - range.start.col + 1;
19092
+ const list = xKid(root, "tableColumns");
19093
+ const original = list ? xKids(list, "tableColumn") : [];
19094
+ const current = new Map(sourceColumnsForPatch(root, table2, names2).map((c2, index2) => [c2, index2]));
19076
19095
  for (const column of xKids(filter2, "filterColumn")) {
19077
- const colId = Number(column.getAttribute("colId") ?? "0");
19078
- if (!(colId < width)) filter2.removeChild(column);
19096
+ const old = original[Number(column.getAttribute("colId") ?? "0")];
19097
+ const index2 = old ? current.get(old) : void 0;
19098
+ if (index2 === void 0) filter2.removeChild(column);
19099
+ else column.setAttribute("colId", num(index2));
19079
19100
  }
19080
19101
  if (!existing) insertBefore(root, filter2, ["sortState", "tableColumns"]);
19081
19102
  const sort2 = xKid(filter2, "sortState") ?? xKid(root, "sortState");
@@ -19108,18 +19129,11 @@ function patchColumns(doc, root, sheet, table2, names2) {
19108
19129
  insertBefore(root, list, ["tableStyleInfo", "extLst"]);
19109
19130
  }
19110
19131
  const sourceColumns = xKids(list, "tableColumn");
19111
- const byName = new Map(
19112
- sourceColumns.map((c2) => [(c2.getAttribute("name") ?? "").toLowerCase(), c2])
19113
- );
19114
- const sameCount = sourceColumns.length === names2.length;
19115
- const used = /* @__PURE__ */ new Set();
19116
19132
  const ids = /* @__PURE__ */ new Set();
19117
- const picked = names2.map((name, index2) => {
19118
- const match2 = sameCount ? sourceColumns[index2] : byName.get(name.toLowerCase());
19119
- if (!match2 || used.has(match2)) return void 0;
19120
- used.add(match2);
19133
+ const picked = sourceColumnsForPatch(root, table2, names2).map((match2) => {
19134
+ if (!match2) return void 0;
19121
19135
  const id = Number(match2.getAttribute("id"));
19122
- if (Number.isInteger(id) && id > 0 && !ids.has(id)) ids.add(id);
19136
+ if (Number.isInteger(id) && id >= 0 && !ids.has(id)) ids.add(id);
19123
19137
  else match2.removeAttribute("id");
19124
19138
  return match2;
19125
19139
  });
@@ -19192,7 +19206,7 @@ function patchTableXml(sourceXml, sheet, table2, id, names2) {
19192
19206
  root.removeAttribute("totalsRowCount");
19193
19207
  if (!root.hasAttribute("totalsRowShown")) root.setAttribute("totalsRowShown", "0");
19194
19208
  }
19195
- patchAutoFilter(doc, root, table2, before);
19209
+ patchAutoFilter(doc, root, table2, before, names2);
19196
19210
  patchColumns(doc, root, sheet, table2, names2);
19197
19211
  patchStyleInfo(doc, root, table2);
19198
19212
  return buildXml(doc);
@@ -0,0 +1,9 @@
1
+ /** Whether `family` has measured design advances (regular and bold upright faces). */
2
+ export declare const hasDesignAdvances: (family: string) => boolean;
3
+ /**
4
+ * The unhinted, unkerned width of `text` in em (multiply by the font size) from the font's own
5
+ * advance widths. `undefined` when the family was not measured or a character is outside
6
+ * printable ASCII: a caller that needs a width it can rely on must not get a guess.
7
+ */
8
+ export declare function designTextWidthEm(text: string, family: string, bold?: boolean): number | undefined;
9
+ //# sourceMappingURL=advance-width.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advance-width.d.ts","sourceRoot":"","sources":["../../../text/font-metrics/advance-width.ts"],"names":[],"mappings":"AAiBA,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,OAAoC,CAAC;AAExF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,GAAG,SAAS,CAUhG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Unhinted glyph advances per 1000 em for printable ASCII (code points 32 to 126, in order),
3
+ * regular and bold, as Visio 16 measures them: `TEXTWIDTH` of a repeated character at 100 pt
4
+ * (`scripts/record-visio-glyph-advances.ps1`). They equal the font files' own advance widths
5
+ * (Calibri "P" is 1058/2048 em), so they suit any layout that does not hint or kern.
6
+ * GENERATED by `scripts/make-visio-advance-table.py`: do not edit by hand.
7
+ */
8
+ export declare const DESIGN_ADVANCES: Readonly<Record<string, {
9
+ readonly regular: string;
10
+ readonly bold: string;
11
+ }>>;
12
+ //# sourceMappingURL=design-advances.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-advances.generated.d.ts","sourceRoot":"","sources":["../../../text/font-metrics/design-advances.generated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CACrC,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BnE,CAAC"}
@@ -314,15 +314,68 @@ function changeTextCaseRanges(text, mode, boundaries = []) {
314
314
  return ranges;
315
315
  }
316
316
 
317
+ // text/font-metrics/design-advances.generated.ts
318
+ var DESIGN_ADVANCES = {
319
+ arial: {
320
+ 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",
321
+ 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"
322
+ },
323
+ calibri: {
324
+ 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",
325
+ 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"
326
+ },
327
+ "calibri light": {
328
+ 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",
329
+ 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"
330
+ },
331
+ "segoe ui": {
332
+ 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",
333
+ 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"
334
+ },
335
+ "times new roman": {
336
+ 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",
337
+ 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"
338
+ }
339
+ };
340
+
341
+ // text/font-metrics/advance-width.ts
342
+ var FIRST = 32;
343
+ var decoded = /* @__PURE__ */ new Map();
344
+ function advances(family, bold) {
345
+ const name = family.trim().toLowerCase();
346
+ const key = `${name}|${bold ? "b" : "r"}`;
347
+ const known = decoded.get(key);
348
+ if (known) return known;
349
+ const table = Object.hasOwn(DESIGN_ADVANCES, name) ? DESIGN_ADVANCES[name] : void 0;
350
+ if (!table) return void 0;
351
+ const values = (bold ? table.bold : table.regular).split(" ").map(Number);
352
+ decoded.set(key, values);
353
+ return values;
354
+ }
355
+ var hasDesignAdvances = (family) => !!advances(family, false);
356
+ function designTextWidthEm(text, family, bold = false) {
357
+ const table = advances(family, bold);
358
+ if (!table) return void 0;
359
+ let units = 0;
360
+ for (let index = 0; index < text.length; ++index) {
361
+ const advance = table[text.charCodeAt(index) - FIRST];
362
+ if (advance === void 0 || Number.isNaN(advance)) return void 0;
363
+ units += advance;
364
+ }
365
+ return units / 1e3;
366
+ }
367
+
317
368
  exports.TEXT_CASE_MODES = TEXT_CASE_MODES;
318
369
  exports.buildLeaderString = buildLeaderString;
319
370
  exports.changeTextCase = changeTextCase;
320
371
  exports.changeTextCaseRanges = changeTextCaseRanges;
321
372
  exports.decimalAnchorIndex = decimalAnchorIndex;
322
373
  exports.decimalSeparatorForLanguage = decimalSeparatorForLanguage;
374
+ exports.designTextWidthEm = designTextWidthEm;
323
375
  exports.detectFontScript = detectFontScript;
324
376
  exports.getLeaderCharacter = getLeaderCharacter;
325
377
  exports.getLeaderStyles = getLeaderStyles;
378
+ exports.hasDesignAdvances = hasDesignAdvances;
326
379
  exports.hasDistinctScriptFonts = hasDistinctScriptFonts;
327
380
  exports.resolveFontForScript = resolveFontForScript;
328
381
  exports.segmentByScript = segmentByScript;
@@ -4,4 +4,5 @@ export * from './tab-leader.js';
4
4
  export * from './decimal-tab.js';
5
5
  export * from './wrap-styled-runs.js';
6
6
  export * from './change-case.js';
7
+ export * from './font-metrics/advance-width.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../text/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,SAAS,GACd,MAAM,4BAA4B,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../text/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,SAAS,GACd,MAAM,4BAA4B,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC"}
@@ -312,4 +312,55 @@ function changeTextCaseRanges(text, mode, boundaries = []) {
312
312
  return ranges;
313
313
  }
314
314
 
315
- export { TEXT_CASE_MODES, buildLeaderString, changeTextCase, changeTextCaseRanges, decimalAnchorIndex, decimalSeparatorForLanguage, detectFontScript, getLeaderCharacter, getLeaderStyles, hasDistinctScriptFonts, resolveFontForScript, segmentByScript, wrapStyledRuns };
315
+ // text/font-metrics/design-advances.generated.ts
316
+ var DESIGN_ADVANCES = {
317
+ arial: {
318
+ 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",
319
+ 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"
320
+ },
321
+ calibri: {
322
+ 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",
323
+ 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"
324
+ },
325
+ "calibri light": {
326
+ 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",
327
+ 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"
328
+ },
329
+ "segoe ui": {
330
+ 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",
331
+ 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"
332
+ },
333
+ "times new roman": {
334
+ 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",
335
+ 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"
336
+ }
337
+ };
338
+
339
+ // text/font-metrics/advance-width.ts
340
+ var FIRST = 32;
341
+ var decoded = /* @__PURE__ */ new Map();
342
+ function advances(family, bold) {
343
+ const name = family.trim().toLowerCase();
344
+ const key = `${name}|${bold ? "b" : "r"}`;
345
+ const known = decoded.get(key);
346
+ if (known) return known;
347
+ const table = Object.hasOwn(DESIGN_ADVANCES, name) ? DESIGN_ADVANCES[name] : void 0;
348
+ if (!table) return void 0;
349
+ const values = (bold ? table.bold : table.regular).split(" ").map(Number);
350
+ decoded.set(key, values);
351
+ return values;
352
+ }
353
+ var hasDesignAdvances = (family) => !!advances(family, false);
354
+ function designTextWidthEm(text, family, bold = false) {
355
+ const table = advances(family, bold);
356
+ if (!table) return void 0;
357
+ let units = 0;
358
+ for (let index = 0; index < text.length; ++index) {
359
+ const advance = table[text.charCodeAt(index) - FIRST];
360
+ if (advance === void 0 || Number.isNaN(advance)) return void 0;
361
+ units += advance;
362
+ }
363
+ return units / 1e3;
364
+ }
365
+
366
+ export { TEXT_CASE_MODES, buildLeaderString, changeTextCase, changeTextCaseRanges, decimalAnchorIndex, decimalSeparatorForLanguage, designTextWidthEm, detectFontScript, getLeaderCharacter, getLeaderStyles, hasDesignAdvances, hasDistinctScriptFonts, resolveFontForScript, segmentByScript, wrapStyledRuns };
@@ -15,6 +15,14 @@ export interface VisioClipboardSnapshot {
15
15
  xml: string;
16
16
  }[];
17
17
  pageContext: string;
18
+ /**
19
+ * The masters captured stencil shapes are instances of: the master ID in the source drawing and
20
+ * what identifies the master itself. A paste needs the same master under the same ID.
21
+ */
22
+ masters?: readonly {
23
+ id: string;
24
+ identity: string;
25
+ }[];
18
26
  }
19
27
  export declare const VISIO_CLIPBOARD_MAGIC = "OOXML-VISIO-SHAPES/1\n";
20
28
  export declare const VISIO_CLIPBOARD_MAX_CHARS: number;
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard-types.d.ts","sourceRoot":"","sources":["../../visio/clipboard-types.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD,SAAS,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;CACpB;AACD,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAC9D,eAAO,MAAM,yBAAyB,QAAkB,CAAC;AACzD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIlD;AACD,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,sBAAsB,CA8D5F;AACD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAK7E;AACD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAe9E"}
1
+ {"version":3,"file":"clipboard-types.d.ts","sourceRoot":"","sources":["../../visio/clipboard-types.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD,SAAS,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACtD;AACD,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAC9D,eAAO,MAAM,yBAAyB,QAAkB,CAAC;AACzD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIlD;AACD,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,sBAAsB,CAgF5F;AACD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAK7E;AACD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAe9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard-xml.d.ts","sourceRoot":"","sources":["../../visio/clipboard-xml.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,8FAA8F;AAC9F,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,MAAM,IAAI,GACf,IAAI,CAcN;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAKpE;AACD,yFAAyF;AACzF,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,MAAM,IAAI,GACf,IAAI,CAyBN;AACD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CA6B/F"}
1
+ {"version":3,"file":"clipboard-xml.d.ts","sourceRoot":"","sources":["../../visio/clipboard-xml.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,8FAA8F;AAC9F,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,MAAM,IAAI,GACf,IAAI,CAcN;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAKpE;AACD,yFAAyF;AACzF,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,MAAM,IAAI,GACf,IAAI,CAyBN;AACD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAmC/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../visio/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAiB9C,OAAO,EAIN,KAAK,sBAAsB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wFAAwF;AACxF,wBAAsB,qBAAqB,CAC1C,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAgEjC"}
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../visio/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAqB9C,OAAO,EAIN,KAAK,sBAAsB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wFAAwF;AACxF,wBAAsB,qBAAqB,CAC1C,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAkFjC"}
@@ -0,0 +1,24 @@
1
+ import type { VisioRouteBox, VisioRoutePoint } from './connector-route.js';
2
+ /**
3
+ * Clearance kept around a shape: 3/16 inch, the distance Visio's own router was recorded passing
4
+ * a placeable shape at. It must stay below the stub a route leaves a glued shape with.
5
+ */
6
+ export declare const VISIO_ROUTE_CLEARANCE = 0.1875;
7
+ /** The search is quadratic in obstacles; the nearest ones decide the route. */
8
+ export declare const VISIO_ROUTE_OBSTACLE_LIMIT = 24;
9
+ /** Whether the axis-aligned segment `p`-`q` passes through the inside of `box`. */
10
+ export declare function segmentCrossesBox(p: VisioRoutePoint, q: VisioRoutePoint, box: VisioRouteBox): boolean;
11
+ /** How many obstacle boxes a polyline passes through. */
12
+ export declare function routeCrossings(path: readonly VisioRoutePoint[], boxes: readonly VisioRouteBox[]): number;
13
+ /**
14
+ * The obstacles worth routing around: boxes with an area, near the two ends, that neither end
15
+ * sits in (a container holding an end is routed through, as in Visio), nearest first and capped.
16
+ */
17
+ export declare function relevantObstacles(from: VisioRoutePoint, to: VisioRoutePoint, boxes: readonly VisioRouteBox[]): VisioRouteBox[];
18
+ /**
19
+ * A right-angle path from `from` to `to` around `boxes`, found by the shared orthogonal router
20
+ * (`geometry/connector-router`, the one PowerPoint uses). Undefined when the router finds no
21
+ * axis-aligned path, so the caller keeps its own route.
22
+ */
23
+ export declare function routeAroundBoxes(from: VisioRoutePoint, to: VisioRoutePoint, boxes: readonly VisioRouteBox[]): VisioRoutePoint[] | undefined;
24
+ //# sourceMappingURL=connector-route-avoid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-route-avoid.d.ts","sourceRoot":"","sources":["../../visio/connector-route-avoid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOxE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,SAAS,CAAC;AAK5C,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAG7C,mFAAmF;AACnF,wBAAgB,iBAAiB,CAChC,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,EAClB,GAAG,EAAE,aAAa,GAChB,OAAO,CAMT;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAC7B,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,KAAK,EAAE,SAAS,aAAa,EAAE,GAC7B,MAAM,CAMR;AAQD;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,eAAe,EACnB,KAAK,EAAE,SAAS,aAAa,EAAE,GAC7B,aAAa,EAAE,CA2BjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,eAAe,EACnB,KAAK,EAAE,SAAS,aAAa,EAAE,GAC7B,eAAe,EAAE,GAAG,SAAS,CAqD/B"}