ooxml-core 1.0.0 → 1.1.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 (230) hide show
  1. package/dist/{PptxHandler-G63S6YZU.mjs → PptxHandler-75LOVF7I.mjs} +2 -2
  2. package/dist/automation/index.cjs +2559 -1169
  3. package/dist/automation/index.mjs +2559 -1169
  4. package/dist/chart/gradient-definition.d.ts +2 -2
  5. package/dist/chart/gradient-definition.d.ts.map +1 -1
  6. package/dist/chart/index.cjs +7 -7
  7. package/dist/chart/index.mjs +7 -7
  8. package/dist/{chunk-BICQYRPW.mjs → chunk-75LA7H3F.mjs} +1339 -1435
  9. package/dist/{chunk-CKJSWE7N.mjs → chunk-LA7D6ZYQ.mjs} +244 -115
  10. package/dist/{chunk-ROM5MZ7O.mjs → chunk-OMGH6IKY.mjs} +3 -3
  11. package/dist/{chunk-RWXFQJVF.mjs → chunk-Q27H4HFS.mjs} +1 -1
  12. package/dist/{chunk-DDG5HTGX.mjs → chunk-RFX7AJDZ.mjs} +1 -1
  13. package/dist/crypto/index.cjs +1406 -184
  14. package/dist/crypto/index.mjs +1406 -184
  15. package/dist/diagram/dom.d.ts +1 -14
  16. package/dist/diagram/dom.d.ts.map +1 -1
  17. package/dist/diagram/index.cjs +15 -15
  18. package/dist/diagram/index.d.ts +12 -12
  19. package/dist/diagram/index.d.ts.map +1 -1
  20. package/dist/diagram/index.mjs +15 -15
  21. package/dist/diagram/types.d.ts +12 -148
  22. package/dist/diagram/types.d.ts.map +1 -1
  23. package/dist/digest/algorithm-names.d.ts +2 -2
  24. package/dist/digest/algorithm-names.d.ts.map +1 -1
  25. package/dist/digest/bit-ops.d.ts +30 -0
  26. package/dist/digest/bit-ops.d.ts.map +1 -0
  27. package/dist/digest/digest.d.ts +2 -2
  28. package/dist/digest/digest.d.ts.map +1 -1
  29. package/dist/digest/index.cjs +1319 -90
  30. package/dist/digest/index.d.ts +7 -1
  31. package/dist/digest/index.d.ts.map +1 -1
  32. package/dist/digest/index.mjs +1313 -91
  33. package/dist/digest/md2.d.ts +22 -0
  34. package/dist/digest/md2.d.ts.map +1 -0
  35. package/dist/digest/md4.d.ts +3 -0
  36. package/dist/digest/md4.d.ts.map +1 -0
  37. package/dist/digest/md5.d.ts +3 -0
  38. package/dist/digest/md5.d.ts.map +1 -0
  39. package/dist/digest/password-hash.d.ts +7 -0
  40. package/dist/digest/password-hash.d.ts.map +1 -1
  41. package/dist/digest/ripemd-functions.d.ts +18 -0
  42. package/dist/digest/ripemd-functions.d.ts.map +1 -0
  43. package/dist/digest/ripemd128.d.ts +3 -0
  44. package/dist/digest/ripemd128.d.ts.map +1 -0
  45. package/dist/digest/ripemd160.d.ts +3 -0
  46. package/dist/digest/ripemd160.d.ts.map +1 -0
  47. package/dist/digest/whirlpool-sbox.d.ts +15 -0
  48. package/dist/digest/whirlpool-sbox.d.ts.map +1 -0
  49. package/dist/digest/whirlpool-table.d.ts +12 -0
  50. package/dist/digest/whirlpool-table.d.ts.map +1 -0
  51. package/dist/digest/whirlpool.d.ts +3 -0
  52. package/dist/digest/whirlpool.d.ts.map +1 -0
  53. package/dist/docx/block-parser.d.ts.map +1 -1
  54. package/dist/docx/diagram-theme.d.ts +3 -3
  55. package/dist/docx/diagram-theme.d.ts.map +1 -1
  56. package/dist/docx/embedded.cjs +470 -276
  57. package/dist/docx/embedded.mjs +470 -276
  58. package/dist/docx/field-flags.d.ts +8 -0
  59. package/dist/docx/field-flags.d.ts.map +1 -0
  60. package/dist/docx/field-lock.d.ts +6 -0
  61. package/dist/docx/field-lock.d.ts.map +1 -0
  62. package/dist/docx/field-runs.d.ts +4 -1
  63. package/dist/docx/field-runs.d.ts.map +1 -1
  64. package/dist/docx/index.cjs +1029 -850
  65. package/dist/docx/index.d.ts +2 -0
  66. package/dist/docx/index.d.ts.map +1 -1
  67. package/dist/docx/index.mjs +1027 -850
  68. package/dist/docx/layout/adapter.d.ts.map +1 -1
  69. package/dist/docx/layout/index.cjs +61 -47
  70. package/dist/docx/layout/index.mjs +61 -47
  71. package/dist/docx/layout/page-fields.d.ts.map +1 -1
  72. package/dist/docx/load/index.cjs +1883 -467
  73. package/dist/docx/load/index.mjs +1883 -467
  74. package/dist/docx/model-run.d.ts +5 -0
  75. package/dist/docx/model-run.d.ts.map +1 -1
  76. package/dist/docx/numbering-model.d.ts +1 -1
  77. package/dist/docx/numbering-model.d.ts.map +1 -1
  78. package/dist/docx/numbering-package.d.ts +4 -4
  79. package/dist/docx/numbering-package.d.ts.map +1 -1
  80. package/dist/docx/numbering-start-edit.d.ts +8 -0
  81. package/dist/docx/numbering-start-edit.d.ts.map +1 -0
  82. package/dist/docx/numbering-start-patch.d.ts +13 -0
  83. package/dist/docx/numbering-start-patch.d.ts.map +1 -0
  84. package/dist/docx/theme-color.d.ts.map +1 -1
  85. package/dist/docx/theme-model.d.ts +3 -2
  86. package/dist/docx/theme-model.d.ts.map +1 -1
  87. package/dist/docx/theme.d.ts +5 -1
  88. package/dist/docx/theme.d.ts.map +1 -1
  89. package/dist/docx/ui/field-guard.d.ts +2 -0
  90. package/dist/docx/ui/field-guard.d.ts.map +1 -1
  91. package/dist/docx/ui/field-results.d.ts.map +1 -1
  92. package/dist/docx/ui/index.cjs +547 -375
  93. package/dist/docx/ui/index.mjs +547 -376
  94. package/dist/docx/ui/review-commands.d.ts.map +1 -1
  95. package/dist/docx/ui/run-extra-mark.d.ts +1 -1
  96. package/dist/docx/ui/run-extra-mark.d.ts.map +1 -1
  97. package/dist/docx/ui/simple-field-input.d.ts +3 -0
  98. package/dist/docx/ui/simple-field-input.d.ts.map +1 -1
  99. package/dist/docx/ui/track-changes-mode.d.ts.map +1 -1
  100. package/dist/docx/ui/track-paragraph-boundaries.d.ts +5 -0
  101. package/dist/docx/ui/track-paragraph-boundaries.d.ts.map +1 -0
  102. package/dist/docx/write-inline.d.ts.map +1 -1
  103. package/dist/docx/write-run.d.ts.map +1 -1
  104. package/dist/drawingml/dom.d.ts +15 -0
  105. package/dist/drawingml/dom.d.ts.map +1 -0
  106. package/dist/drawingml/drawing-color-brightness.d.ts +6 -0
  107. package/dist/drawingml/drawing-color-brightness.d.ts.map +1 -0
  108. package/dist/drawingml/drawing-color-css.d.ts.map +1 -0
  109. package/dist/{diagram → drawingml}/drawing-color.d.ts +5 -5
  110. package/dist/drawingml/drawing-color.d.ts.map +1 -0
  111. package/dist/{diagram → drawingml}/drawing-fill.d.ts +3 -3
  112. package/dist/drawingml/drawing-fill.d.ts.map +1 -0
  113. package/dist/{diagram → drawingml}/drawing-geometry.d.ts +4 -4
  114. package/dist/drawingml/drawing-geometry.d.ts.map +1 -0
  115. package/dist/drawingml/drawing-shadow.d.ts.map +1 -0
  116. package/dist/{diagram → drawingml}/drawing-text.d.ts +2 -2
  117. package/dist/drawingml/drawing-text.d.ts.map +1 -0
  118. package/dist/{diagram → drawingml}/gradient-geometry.d.ts +2 -2
  119. package/dist/drawingml/gradient-geometry.d.ts.map +1 -0
  120. package/dist/drawingml/gradient-preset-data.d.ts.map +1 -0
  121. package/dist/{diagram → drawingml}/gradient-presets.d.ts +3 -3
  122. package/dist/drawingml/gradient-presets.d.ts.map +1 -0
  123. package/dist/drawingml/index.cjs +1545 -0
  124. package/dist/drawingml/index.d.ts +19 -0
  125. package/dist/drawingml/index.d.ts.map +1 -0
  126. package/dist/drawingml/index.mjs +1497 -0
  127. package/dist/{diagram → drawingml}/ordered-color-transforms.d.ts +2 -2
  128. package/dist/drawingml/ordered-color-transforms.d.ts.map +1 -0
  129. package/dist/drawingml/rect-path-gradient.d.ts.map +1 -0
  130. package/dist/drawingml/theme-color.d.ts +19 -0
  131. package/dist/drawingml/theme-color.d.ts.map +1 -0
  132. package/dist/drawingml/theme-model.d.ts +40 -0
  133. package/dist/drawingml/theme-model.d.ts.map +1 -0
  134. package/dist/drawingml/theme.d.ts +21 -0
  135. package/dist/drawingml/theme.d.ts.map +1 -0
  136. package/dist/drawingml/types.d.ts +152 -0
  137. package/dist/drawingml/types.d.ts.map +1 -0
  138. package/dist/drawingml/write-color.d.ts +4 -0
  139. package/dist/drawingml/write-color.d.ts.map +1 -0
  140. package/dist/{diagram → drawingml}/write-fill.d.ts +2 -2
  141. package/dist/drawingml/write-fill.d.ts.map +1 -0
  142. package/dist/geometry/connector-elbow-geometry.d.ts +14 -0
  143. package/dist/geometry/connector-elbow-geometry.d.ts.map +1 -1
  144. package/dist/geometry/index.cjs +43 -0
  145. package/dist/geometry/index.mjs +42 -1
  146. package/dist/i18n/dictionary.d.ts +13 -0
  147. package/dist/i18n/dictionary.d.ts.map +1 -0
  148. package/dist/i18n/index.cjs +68 -0
  149. package/dist/i18n/index.d.ts +4 -0
  150. package/dist/i18n/index.d.ts.map +1 -0
  151. package/dist/i18n/index.mjs +60 -0
  152. package/dist/i18n/locale.d.ts +17 -0
  153. package/dist/i18n/locale.d.ts.map +1 -0
  154. package/dist/i18n/translator.d.ts +18 -0
  155. package/dist/i18n/translator.d.ts.map +1 -0
  156. package/dist/index.cjs +3712 -2178
  157. package/dist/index.d.ts +2 -0
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.mjs +3711 -2179
  160. package/dist/pptx/automation/index.cjs +2852 -1568
  161. package/dist/pptx/automation/index.d.ts +3 -3
  162. package/dist/pptx/automation/index.mjs +5 -5
  163. package/dist/pptx/chunks/{index-C4mfzVoY.d.ts → index-BHqL5KXH.d.ts} +2 -2
  164. package/dist/pptx/chunks/{index-C4mfzVoY.d.ts.map → index-BHqL5KXH.d.ts.map} +1 -1
  165. package/dist/pptx/chunks/{index-lk7dyOPS.d.ts → index-BYkdcS8J.d.ts} +12 -16
  166. package/dist/pptx/chunks/index-BYkdcS8J.d.ts.map +1 -0
  167. package/dist/pptx/chunks/smart-art-CO2jmJFf.d.ts.map +1 -1
  168. package/dist/pptx/chunks/{text-operations-CDLx4hD5.d.ts → text-operations-DEJ7alZR.d.ts} +2 -2
  169. package/dist/pptx/chunks/text-operations-DEJ7alZR.d.ts.map +1 -0
  170. package/dist/pptx/cli/index.cjs +2680 -1396
  171. package/dist/pptx/cli/index.d.ts +1 -1
  172. package/dist/pptx/cli/index.mjs +4 -4
  173. package/dist/pptx/converter/index.d.ts +1 -1
  174. package/dist/pptx/converter/index.mjs +2 -2
  175. package/dist/pptx/index.cjs +1771 -1756
  176. package/dist/pptx/index.d.ts +3 -3
  177. package/dist/pptx/index.mjs +5 -5
  178. package/dist/teams/index.cjs +144 -74
  179. package/dist/teams/index.mjs +144 -74
  180. package/dist/visio/ui/index.cjs +14 -3
  181. package/dist/visio/ui/index.mjs +14 -3
  182. package/dist/visio/ui/shape-rotation.d.ts +1 -1
  183. package/dist/visio/ui/shape-rotation.d.ts.map +1 -1
  184. package/dist/xlsx/edit/chart-series-gradient.d.ts +1 -1
  185. package/dist/xlsx/edit/chart-series-gradient.d.ts.map +1 -1
  186. package/dist/xlsx/edit/protection.d.ts +1 -1
  187. package/dist/xlsx/index.cjs +3222 -1886
  188. package/dist/xlsx/index.mjs +3222 -1886
  189. package/dist/xlsx/layout/chart-appearance.d.ts +1 -1
  190. package/dist/xlsx/layout/chart-appearance.d.ts.map +1 -1
  191. package/dist/xlsx/layout/chart-scale.d.ts +5 -1
  192. package/dist/xlsx/layout/chart-scale.d.ts.map +1 -1
  193. package/dist/xlsx/layout/chart-svg-legend.d.ts +13 -0
  194. package/dist/xlsx/layout/chart-svg-legend.d.ts.map +1 -0
  195. package/dist/xlsx/layout/chart-svg.d.ts.map +1 -1
  196. package/dist/xlsx/layout/chart-view.d.ts +3 -1
  197. package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
  198. package/dist/xlsx/load/index.cjs +2110 -838
  199. package/dist/xlsx/load/index.mjs +2110 -838
  200. package/dist/xlsx/read/theme.d.ts +2 -4
  201. package/dist/xlsx/read/theme.d.ts.map +1 -1
  202. package/dist/xlsx/ui/index.cjs +2017 -771
  203. package/dist/xlsx/ui/index.mjs +2017 -771
  204. package/dist/xlsx/ui/locales/merge.d.ts +2 -1
  205. package/dist/xlsx/ui/locales/merge.d.ts.map +1 -1
  206. package/dist/xlsx/ui/localization.d.ts.map +1 -1
  207. package/dist/xlsx/write/theme.d.ts.map +1 -1
  208. package/package.json +11 -1
  209. package/dist/diagram/drawing-color-brightness.d.ts +0 -6
  210. package/dist/diagram/drawing-color-brightness.d.ts.map +0 -1
  211. package/dist/diagram/drawing-color-css.d.ts.map +0 -1
  212. package/dist/diagram/drawing-color.d.ts.map +0 -1
  213. package/dist/diagram/drawing-fill.d.ts.map +0 -1
  214. package/dist/diagram/drawing-geometry.d.ts.map +0 -1
  215. package/dist/diagram/drawing-shadow.d.ts.map +0 -1
  216. package/dist/diagram/drawing-text.d.ts.map +0 -1
  217. package/dist/diagram/gradient-geometry.d.ts.map +0 -1
  218. package/dist/diagram/gradient-preset-data.d.ts.map +0 -1
  219. package/dist/diagram/gradient-presets.d.ts.map +0 -1
  220. package/dist/diagram/ordered-color-transforms.d.ts.map +0 -1
  221. package/dist/diagram/rect-path-gradient.d.ts.map +0 -1
  222. package/dist/diagram/write-color.d.ts +0 -4
  223. package/dist/diagram/write-color.d.ts.map +0 -1
  224. package/dist/diagram/write-fill.d.ts.map +0 -1
  225. package/dist/pptx/chunks/index-lk7dyOPS.d.ts.map +0 -1
  226. package/dist/pptx/chunks/text-operations-CDLx4hD5.d.ts.map +0 -1
  227. /package/dist/{diagram → drawingml}/drawing-color-css.d.ts +0 -0
  228. /package/dist/{diagram → drawingml}/drawing-shadow.d.ts +0 -0
  229. /package/dist/{diagram → drawingml}/gradient-preset-data.d.ts +0 -0
  230. /package/dist/{diagram → drawingml}/rect-path-gradient.d.ts +0 -0
@@ -1,10 +1,10 @@
1
- import type { DiagramColor } from './types.js';
1
+ import type { DrawingColor } from './types.js';
2
2
  /** Apply transforms in document order, keeping fractional channels until the final quantization. */
3
3
  export declare function orderedColorTransforms(channels: {
4
4
  r: number;
5
5
  g: number;
6
6
  b: number;
7
- }, transforms: DiagramColor['transforms']): {
7
+ }, transforms: DrawingColor['transforms']): {
8
8
  r: number;
9
9
  g: number;
10
10
  b: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ordered-color-transforms.d.ts","sourceRoot":"","sources":["../../drawingml/ordered-color-transforms.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,oGAAoG;AACpG,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,GACpC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgDpD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rect-path-gradient.d.ts","sourceRoot":"","sources":["../../drawingml/rect-path-gradient.ts"],"names":[],"mappings":"AA6CA,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uFAAuF;AACvF,MAAM,WAAW,0BAA0B;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED,0DAA0D;AAC1D,MAAM,WAAW,0BAA0B;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AA6HD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,oBAAoB,EAAE,EAC7B,UAAU,CAAC,EAAE,0BAA0B,EACvC,UAAU,CAAC,EAAE,0BAA0B,EACvC,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD,MAAM,CA6CR;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,oBAAoB,EAAE,EAC7B,UAAU,CAAC,EAAE,0BAA0B,EACvC,UAAU,CAAC,EAAE,0BAA0B,GACrC,MAAM,CAGR"}
@@ -0,0 +1,19 @@
1
+ import type { DrawingColorTheme } from './drawing-color.js';
2
+ import { type ThemeColorMap, type ThemeColorScheme, type ThemeColorSlot } from './theme-model.js';
3
+ import type { DrawingColor } from './types.js';
4
+ /**
5
+ * The scheme slot a scheme colour name uses. `bg1`/`tx1`/`bg2`/`tx2` go through `colorMap`,
6
+ * falling back to the conventional mapping; slot names (`dk1`, `accent3`) stand for themselves
7
+ * unless the map reassigns them; anything else (`phClr`) has no slot.
8
+ */
9
+ export declare function themeColorSlotFor(name: string, colorMap?: ThemeColorMap): ThemeColorSlot | undefined;
10
+ /** The colour of a scheme name, through the colour map; `undefined` when the scheme lacks it. */
11
+ export declare function resolveSchemeColor(scheme: ThemeColorScheme, name: string, colorMap?: ThemeColorMap): DrawingColor | undefined;
12
+ /**
13
+ * The `RRGGBB` (upper case, no `#`) a scheme slot colour stands for: an `srgbClr` value or a
14
+ * `sysClr`'s `lastClr`. Other kinds are not plain values in a scheme and give `undefined`.
15
+ */
16
+ export declare function themeSlotHex(color: DrawingColor | undefined): string | undefined;
17
+ /** A `DrawingColorTheme` (`#RRGGBB` per scheme name) over a colour scheme and optional colour map. */
18
+ export declare function themeDrawingColorTheme(scheme: ThemeColorScheme | undefined, colorMap?: ThemeColorMap): DrawingColorTheme;
19
+ //# sourceMappingURL=theme-color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-color.d.ts","sourceRoot":"","sources":["../../drawingml/theme-color.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM5C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,aAAkB,GAC1B,cAAc,GAAG,SAAS,CAK5B;AAED,iGAAiG;AACjG,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,aAAa,GACtB,YAAY,GAAG,SAAS,CAG1B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKhF;AAED,sGAAsG;AACtG,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,QAAQ,CAAC,EAAE,aAAa,GACtB,iBAAiB,CAOnB"}
@@ -0,0 +1,40 @@
1
+ import type { DrawingColor } from './types.js';
2
+ /** The twelve `a:clrScheme` slots, in schema order. */
3
+ export type ThemeColorSlot = 'dk1' | 'lt1' | 'dk2' | 'lt2' | 'accent1' | 'accent2' | 'accent3' | 'accent4' | 'accent5' | 'accent6' | 'hlink' | 'folHlink';
4
+ /** The colour scheme slots in schema order. */
5
+ export declare const THEME_COLOR_SLOTS: readonly ThemeColorSlot[];
6
+ /** The four logical background and text names. */
7
+ export type ThemeLogicalColor = 'bg1' | 'tx1' | 'bg2' | 'tx2';
8
+ /** The names a colour map (`p:clrMap`, `a:overrideClrMapping`) assigns to scheme slots. */
9
+ export type ThemeColorMapKey = ThemeLogicalColor | Exclude<ThemeColorSlot, 'dk1' | 'lt1' | 'dk2' | 'lt2'>;
10
+ /** A colour map: which scheme slot each name uses. Missing keys use `DEFAULT_THEME_COLOR_MAP`. */
11
+ export type ThemeColorMap = Partial<Record<ThemeColorMapKey, ThemeColorSlot>>;
12
+ /** The conventional mapping (light background, dark text) every Office default master uses. */
13
+ export declare const DEFAULT_THEME_COLOR_MAP: Readonly<Record<ThemeLogicalColor, ThemeColorSlot>>;
14
+ /** A parsed `a:clrScheme`. Colours stay as written (a `sysClr` keeps its `lastClr` as `fallback`). */
15
+ export interface ThemeColorScheme {
16
+ name?: string;
17
+ colors: Partial<Record<ThemeColorSlot, DrawingColor>>;
18
+ }
19
+ /** One `a:majorFont` or `a:minorFont`. Empty typefaces are omitted. */
20
+ export interface ThemeFontCollection {
21
+ latin?: string;
22
+ eastAsia?: string;
23
+ complexScript?: string;
24
+ /** `a:font` overrides by script tag (`Jpan`, `Arab`...). */
25
+ scripts: Record<string, string>;
26
+ }
27
+ /** A parsed `a:fontScheme`. */
28
+ export interface ThemeFontScheme {
29
+ name?: string;
30
+ major: ThemeFontCollection;
31
+ minor: ThemeFontCollection;
32
+ }
33
+ /** A parsed `a:theme` (or `a:themeOverride`): the parts every format shares. */
34
+ export interface DrawingTheme {
35
+ /** `a:theme/@name`. */
36
+ name?: string;
37
+ colorScheme: ThemeColorScheme;
38
+ fontScheme: ThemeFontScheme;
39
+ }
40
+ //# sourceMappingURL=theme-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-model.d.ts","sourceRoot":"","sources":["../../drawingml/theme-model.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,uDAAuD;AACvD,MAAM,MAAM,cAAc,GACvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,UAAU,CAAC;AAEd,+CAA+C;AAC/C,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAatD,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9D,2FAA2F;AAC3F,MAAM,MAAM,gBAAgB,GACzB,iBAAiB,GACjB,OAAO,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAE1D,kGAAkG;AAClG,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;AAE9E,+FAA+F;AAC/F,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAKvF,CAAC;AAEF,sGAAsG;AACtG,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;CACtD;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mBAAmB,CAAC;IAC3B,KAAK,EAAE,mBAAmB,CAAC;CAC3B;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC5B,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC;CAC5B"}
@@ -0,0 +1,21 @@
1
+ import { type XmlDocument, type XmlElement } from '../xml/index.js';
2
+ import { type DrawingTheme, type ThemeColorMap, type ThemeColorScheme, type ThemeColorSlot, type ThemeFontScheme } from './theme-model.js';
3
+ /** Whether `value` names one of the twelve colour scheme slots. */
4
+ export declare function isThemeColorSlot(value: string): value is ThemeColorSlot;
5
+ /** Reads an `a:clrScheme`. */
6
+ export declare function parseThemeColorScheme(scheme: XmlElement | undefined): ThemeColorScheme;
7
+ /** Reads an `a:fontScheme`. */
8
+ export declare function parseThemeFontScheme(scheme: XmlElement | undefined): ThemeFontScheme;
9
+ /**
10
+ * Reads a theme part: `a:theme` (schemes under `a:themeElements`) or `a:themeOverride` (schemes
11
+ * directly under the root). Missing schemes give empty ones; nothing is defaulted.
12
+ */
13
+ export declare function parseTheme(source: XmlDocument | XmlElement): DrawingTheme;
14
+ /** Parses theme part text; `label` names the format in parse errors (`XLSX theme`). */
15
+ export declare function parseThemeXml(xml: string, label?: string): DrawingTheme;
16
+ /**
17
+ * Reads a colour map element (`p:clrMap`, `a:overrideClrMapping`): each name to the scheme slot
18
+ * it uses. Unknown names and slots are skipped.
19
+ */
20
+ export declare function parseThemeColorMap(element: XmlElement | undefined): ThemeColorMap;
21
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../drawingml/theme.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEhG,OAAO,EAEN,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,KAAK,eAAe,EACpB,MAAM,eAAe,CAAC;AAkBvB,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAMD,8BAA8B;AAC9B,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAUtF;AAsBD,+BAA+B;AAC/B,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,CAQpF;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,YAAY,CAUzE;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAoB,GAAG,YAAY,CAElF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAQjF"}
@@ -0,0 +1,152 @@
1
+ /** Reads one attribute by local name; `undefined` when absent. Lets one parser serve a DOM element and an object tree. */
2
+ export type AttributeReader = (name: string) => string | undefined;
3
+ /** A theme-independent DrawingML colour as written in a part. */
4
+ export interface DrawingColor {
5
+ kind: 'srgb' | 'scheme' | 'system' | 'preset' | 'scrgb' | 'hsl';
6
+ /** Hex for `srgb`, the scheme/preset/system name, or the serialized channels for `scrgb`/`hsl`. */
7
+ value: string;
8
+ /** Colour transforms in document order (`alpha`, `lumMod`, `shade`...), raw attribute values. */
9
+ transforms: {
10
+ name: string;
11
+ value: string;
12
+ }[];
13
+ /** `lastClr` of a system colour: the value the producer saw. */
14
+ fallback?: string;
15
+ }
16
+ /** A DrawingML fill (`a:noFill`, `a:solidFill`, `a:gradFill`, `a:pattFill`, `a:blipFill`). */
17
+ export type DrawingFill = {
18
+ kind: 'none';
19
+ } | {
20
+ kind: 'solid';
21
+ color: DrawingColor;
22
+ } | {
23
+ kind: 'gradient';
24
+ /** Original gradient XML, retaining flags and unsupported properties for editing. */
25
+ sourceXml?: string;
26
+ stops: {
27
+ position: number;
28
+ color: DrawingColor;
29
+ }[];
30
+ /** Linear angle in degrees, when `a:lin` is present. */
31
+ angle?: number;
32
+ /** Whether the linear vector scales with the shape's bounding box. */
33
+ scaled?: boolean;
34
+ path?: string;
35
+ /** DrawingML path-gradient focus rectangle, as fractions of the shape box. */
36
+ fillToRect?: {
37
+ l: number;
38
+ t: number;
39
+ r: number;
40
+ b: number;
41
+ };
42
+ /** Gradient tile insets; corner directions can extend beyond the shape box. */
43
+ tileRect?: {
44
+ l: number;
45
+ t: number;
46
+ r: number;
47
+ b: number;
48
+ };
49
+ } | {
50
+ kind: 'pattern';
51
+ preset: string;
52
+ foreground?: DrawingColor;
53
+ background?: DrawingColor;
54
+ } | {
55
+ kind: 'picture';
56
+ relId?: string;
57
+ } | {
58
+ kind: 'unsupported';
59
+ element: string;
60
+ };
61
+ /** A DrawingML outline (`a:ln`). */
62
+ export interface DrawingLine {
63
+ /** Width in EMU. */
64
+ widthEmu?: number;
65
+ fill?: DrawingFill;
66
+ dash?: string;
67
+ cap?: string;
68
+ }
69
+ /** One run of a DrawingML text body. */
70
+ export interface DrawingTextRun {
71
+ text: string;
72
+ /** Font size in points. */
73
+ sizePt?: number;
74
+ bold?: boolean;
75
+ italic?: boolean;
76
+ underline?: boolean;
77
+ color?: DrawingColor;
78
+ typeface?: string;
79
+ }
80
+ /** DrawingML spacing, retaining absolute points or a fractional percentage. */
81
+ export interface DrawingTextSpacing {
82
+ unit: 'points' | 'percent';
83
+ value: number;
84
+ }
85
+ export interface DrawingTextParagraph {
86
+ /** Paragraph default run properties, inherited by individual runs. */
87
+ defaultProperties?: Omit<DrawingTextRun, 'text'>;
88
+ /** `l`, `ctr`, `r`, `just`... */
89
+ align?: string;
90
+ lineSpacing?: DrawingTextSpacing;
91
+ spaceBefore?: DrawingTextSpacing;
92
+ spaceAfter?: DrawingTextSpacing;
93
+ runs: DrawingTextRun[];
94
+ }
95
+ /** A DrawingML text body (`a:txBody`, `dsp:txBody`, `c:txPr`...). */
96
+ export interface DrawingTextBody {
97
+ /** `t`, `ctr`, `b`... */
98
+ anchor?: string;
99
+ /** Insets in EMU: left, top, right, bottom. */
100
+ insetsEmu?: {
101
+ left?: number;
102
+ top?: number;
103
+ right?: number;
104
+ bottom?: number;
105
+ };
106
+ paragraphs: DrawingTextParagraph[];
107
+ /** Paragraph texts joined by a newline. */
108
+ text: string;
109
+ }
110
+ /** Position and size in EMU. */
111
+ export interface DrawingFrame {
112
+ x: number;
113
+ y: number;
114
+ width: number;
115
+ height: number;
116
+ }
117
+ export type DrawingPathCommand = {
118
+ op: 'M' | 'L';
119
+ x: number;
120
+ y: number;
121
+ } | {
122
+ op: 'C';
123
+ x1: number;
124
+ y1: number;
125
+ x2: number;
126
+ y2: number;
127
+ x: number;
128
+ y: number;
129
+ } | {
130
+ op: 'Q';
131
+ x1: number;
132
+ y1: number;
133
+ x: number;
134
+ y: number;
135
+ } | {
136
+ op: 'A';
137
+ wR: number;
138
+ hR: number;
139
+ startAngle: number;
140
+ swingAngle: number;
141
+ } | {
142
+ op: 'Z';
143
+ };
144
+ /** One `a:path` of a custom geometry, in the path's own coordinate space. */
145
+ export interface DrawingPath {
146
+ width?: number;
147
+ height?: number;
148
+ fill?: string;
149
+ stroke?: boolean;
150
+ commands: DrawingPathCommand[];
151
+ }
152
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../drawingml/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DrawingColor } from './types.js';
2
+ /** One DrawingML color choice, with its ordered transforms and system-color fallback. */
3
+ export declare function drawingColorXml(color: DrawingColor): string;
4
+ //# sourceMappingURL=write-color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-color.d.ts","sourceRoot":"","sources":["../../drawingml/write-color.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAW5C,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAmB3D"}
@@ -1,7 +1,7 @@
1
1
  import { type XmlElement } from '../xml/index.js';
2
- import type { DiagramFill } from './types.js';
2
+ import type { DrawingFill } from './types.js';
3
3
  /** Replace only the DrawingML fill, retaining geometry, outlines, effects and extensions. */
4
4
  export declare function setDrawingFillXml(properties: XmlElement, xml: string): void;
5
5
  /** Serializes modelled DrawingML fills, retaining imported gradient flags and extensions. */
6
- export declare function drawingFillXml(fill: DiagramFill): string | undefined;
6
+ export declare function drawingFillXml(fill: DrawingFill): string | undefined;
7
7
  //# sourceMappingURL=write-fill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-fill.d.ts","sourceRoot":"","sources":["../../drawingml/write-fill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGlG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CA2B3E;AAED,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CA+EpE"}
@@ -38,4 +38,18 @@ export declare function elbowWaypoints(startX: number, startY: number, endX: num
38
38
  * yields `segments - 1` curve segments.
39
39
  */
40
40
  export declare function elbowCurveSegments(startX: number, startY: number, endX: number, endY: number, width: number, height: number, segments: ElbowSegments, adj1: number, adj2: number, adj3: number): ElbowCurveSegment[];
41
+ /**
42
+ * Segment count implied by a lower-cased `bentConnector*` / `curvedConnector*`
43
+ * shape type. Unknown or missing suffixes fall back to `3` (the Z-shape).
44
+ */
45
+ export declare function elbowSegmentCount(lowerShapeType: string): ElbowSegments;
46
+ /**
47
+ * Render a `segments`-segment elbow as a smooth SVG path: cubic Beziers whose
48
+ * control points sit on the elbow's own corners, so curved connectors get the
49
+ * same horizontal-first routing as {@link elbowWaypoints} without a sharp
50
+ * corner. `3` emits one cubic through the two corner points; `4` and `5`
51
+ * insert one breakpoint per interior corner (halfway along the secondary
52
+ * axis) so the curve bends near the corner instead of overshooting it.
53
+ */
54
+ export declare function curvedElbowPathD(startX: number, startY: number, endX: number, endY: number, segments: ElbowSegments, adj1: number, adj2: number, adj3: number): string;
41
55
  //# sourceMappingURL=connector-elbow-geometry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector-elbow-geometry.d.ts","sourceRoot":"","sources":["../../geometry/connector-elbow-geometry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtC,6BAA6B;AAC7B,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,UAAU,CAAC;CAChB;AAYD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhF;AAmBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV,UAAU,EAAE,CA6Bd;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV,iBAAiB,EAAE,CAkCrB"}
1
+ {"version":3,"file":"connector-elbow-geometry.d.ts","sourceRoot":"","sources":["../../geometry/connector-elbow-geometry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtC,6BAA6B;AAC7B,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,UAAU,CAAC;CAChB;AAYD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhF;AAmBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV,UAAU,EAAE,CA6Bd;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV,iBAAiB,EAAE,CAkCrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAQvE;AAUD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV,MAAM,CA6BR"}
@@ -905,6 +905,47 @@ function elbowCurveSegments(startX, startY, endX, endY, width, height, segments,
905
905
  { control: toXY(mid2, secondaryEnd), end: toXY(primaryEnd, secondaryEnd) }
906
906
  ];
907
907
  }
908
+ function elbowSegmentCount(lowerShapeType) {
909
+ if (lowerShapeType.includes("connector4")) {
910
+ return 4;
911
+ }
912
+ if (lowerShapeType.includes("connector5")) {
913
+ return 5;
914
+ }
915
+ return 3;
916
+ }
917
+ function fmtPoint(p) {
918
+ return `${p[0]},${p[1]}`;
919
+ }
920
+ function cubicTo(control, end) {
921
+ return `C${fmtPoint(control)} ${fmtPoint(control)} ${fmtPoint(end)}`;
922
+ }
923
+ function curvedElbowPathD(startX, startY, endX, endY, segments, adj1, adj2, adj3) {
924
+ const start = [startX, startY];
925
+ const mu1 = startX + (endX - startX) * adj1;
926
+ if (segments === 3) {
927
+ return `M${fmtPoint(start)} C${fmtPoint([mu1, startY])} ${fmtPoint([mu1, endY])} ${fmtPoint([endX, endY])}`;
928
+ }
929
+ const mv = startY + (endY - startY) * adj2;
930
+ const vq1 = startY + (mv - startY) * 0.5;
931
+ if (segments === 4) {
932
+ return [
933
+ `M${fmtPoint(start)}`,
934
+ cubicTo([mu1, startY], [mu1, vq1]),
935
+ cubicTo([mu1, mv], [(mu1 + endX) / 2, mv]),
936
+ cubicTo([endX, mv], [endX, endY])
937
+ ].join(" ");
938
+ }
939
+ const mu2 = startX + (endX - startX) * adj3;
940
+ const vq2 = mv + (endY - mv) * 0.5;
941
+ return [
942
+ `M${fmtPoint(start)}`,
943
+ cubicTo([mu1, startY], [mu1, vq1]),
944
+ cubicTo([mu1, mv], [(mu1 + mu2) / 2, mv]),
945
+ cubicTo([mu2, mv], [mu2, vq2]),
946
+ cubicTo([mu2, endY], [endX, endY])
947
+ ].join(" ");
948
+ }
908
949
 
909
950
  // geometry/guide-formula-eval.ts
910
951
  var ANGLE_SCALE = 6e4;
@@ -15585,10 +15626,12 @@ exports.convexHull = convexHull;
15585
15626
  exports.createBuiltinVariables = createBuiltinVariables;
15586
15627
  exports.createRotationDrag = createRotationDrag;
15587
15628
  exports.cross2 = cross2;
15629
+ exports.curvedElbowPathD = curvedElbowPathD;
15588
15630
  exports.cxn = cxn;
15589
15631
  exports.dedupPoly = dedupPoly;
15590
15632
  exports.distributeElements = distributeElements;
15591
15633
  exports.elbowCurveSegments = elbowCurveSegments;
15634
+ exports.elbowSegmentCount = elbowSegmentCount;
15592
15635
  exports.elbowWaypoints = elbowWaypoints;
15593
15636
  exports.ensureCCW = ensureCCW;
15594
15637
  exports.ensureCW = ensureCW;
@@ -903,6 +903,47 @@ function elbowCurveSegments(startX, startY, endX, endY, width, height, segments,
903
903
  { control: toXY(mid2, secondaryEnd), end: toXY(primaryEnd, secondaryEnd) }
904
904
  ];
905
905
  }
906
+ function elbowSegmentCount(lowerShapeType) {
907
+ if (lowerShapeType.includes("connector4")) {
908
+ return 4;
909
+ }
910
+ if (lowerShapeType.includes("connector5")) {
911
+ return 5;
912
+ }
913
+ return 3;
914
+ }
915
+ function fmtPoint(p) {
916
+ return `${p[0]},${p[1]}`;
917
+ }
918
+ function cubicTo(control, end) {
919
+ return `C${fmtPoint(control)} ${fmtPoint(control)} ${fmtPoint(end)}`;
920
+ }
921
+ function curvedElbowPathD(startX, startY, endX, endY, segments, adj1, adj2, adj3) {
922
+ const start = [startX, startY];
923
+ const mu1 = startX + (endX - startX) * adj1;
924
+ if (segments === 3) {
925
+ return `M${fmtPoint(start)} C${fmtPoint([mu1, startY])} ${fmtPoint([mu1, endY])} ${fmtPoint([endX, endY])}`;
926
+ }
927
+ const mv = startY + (endY - startY) * adj2;
928
+ const vq1 = startY + (mv - startY) * 0.5;
929
+ if (segments === 4) {
930
+ return [
931
+ `M${fmtPoint(start)}`,
932
+ cubicTo([mu1, startY], [mu1, vq1]),
933
+ cubicTo([mu1, mv], [(mu1 + endX) / 2, mv]),
934
+ cubicTo([endX, mv], [endX, endY])
935
+ ].join(" ");
936
+ }
937
+ const mu2 = startX + (endX - startX) * adj3;
938
+ const vq2 = mv + (endY - mv) * 0.5;
939
+ return [
940
+ `M${fmtPoint(start)}`,
941
+ cubicTo([mu1, startY], [mu1, vq1]),
942
+ cubicTo([mu1, mv], [(mu1 + mu2) / 2, mv]),
943
+ cubicTo([mu2, mv], [mu2, vq2]),
944
+ cubicTo([mu2, endY], [endX, endY])
945
+ ].join(" ");
946
+ }
906
947
 
907
948
  // geometry/guide-formula-eval.ts
908
949
  var ANGLE_SCALE = 6e4;
@@ -15498,4 +15539,4 @@ function resolveRotateHandlePlacement(input) {
15498
15539
  })[0] ?? null;
15499
15540
  }
15500
15541
 
15501
- export { ACTION_BUTTON_CONNECTION_SITES, ACTION_BUTTON_PRESET_DEFINITIONS, ACTION_BUTTON_TEXT_RECTS, ANGLE_SCALE, ARROW_CALLOUT_CONNECTION_SITES, ARROW_CALLOUT_PRESET_DEFINITIONS, ARROW_CONNECTION_SITES, ARROW_PRESET_DEFINITIONS, ARROW_TEXT_RECTS, BASIC_SHAPE_CONNECTION_SITES_A, BASIC_SHAPE_CONNECTION_SITES_B, BRACE_CONNECTION_SITES, BRACE_TEXT_RECTS, CALLOUT_CONNECTION_SITES, CALLOUT_TEXT_RECTS, CARDINAL_SITES, CHART_MARK_PRESET_DEFINITIONS, CIRCULAR_ARROW_CONNECTION_SITES, CIRCULAR_ARROW_TEXT_RECTS, CLIP_PATHS_CORE, CLIP_PATHS_EXTENDED, CLOUD_CALLOUT_PRESET_DEFINITIONS, CLOUD_CALLOUT_TAIL_COUNT, CLOUD_LOBE_COUNT, COM_AVLST_GROUND_TRUTH, CONNECTORS_BRACKETS_PRESET_DEFINITIONS, CURVED_ARROWS_CONNECTORS_PRESET_DEFINITIONS, CURVED_ARROW_CONNECTION_SITES, EPSILON, EXACT_CURVED_ARROW_PRESET_DEFINITIONS, EXTENDED_SHAPE_DEFINITIONS, FLOWCHART_CONNECTION_SITES, FLOWCHART_PRESET_DEFINITIONS, FLOWCHART_TEXT_RECTS, GEAR9_CONNECTION_SITES, IDENTITY_AFFINE, LEFT_CIRCULAR_ARROW_CONNECTION_SITES, LEFT_RIGHT_CIRCULAR_ARROW_CONNECTION_SITES, MATH_SYMBOL_CONNECTION_SITES, MISC_ARROW_CONNECTION_SITES, MISC_PRESET_DEFINITIONS, MISC_SHAPE_CONNECTION_SITES, MISC_TEXT_RECTS_A, MISC_TEXT_RECTS_B, POLYGON_CONNECTION_SITES, POLYGON_TEXT_RECTS, PRESET_GEOMETRY_ALIASES, PRESET_SHAPE_CATEGORY_LABELS, PRESET_SHAPE_CLIP_PATHS, PRESET_SHAPE_DEFINITIONS, PRESET_SHAPE_GEOMETRY_TABLE, PRIMARY_SHAPE_DEFINITIONS, QUAD_CONNECTION_SITES, QUAD_TEXT_RECTS, RECTS_SNIPS_PRESET_DEFINITIONS, RECT_VARIANT_CONNECTION_SITES, REFINED_ARROW_PRESET_DEFINITIONS, RIBBON_CONNECTION_SITES, RIBBON_TEXT_RECTS, SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS, SNAP_THRESHOLD, STAR_CONNECTION_SITES, STAR_TEXT_RECTS, ST_SHAPE_TYPE_VALUES, TABS_DECORATIONS_PRESET_DEFINITIONS, TAB_CONNECTION_SITES, TAB_TEXT_RECTS, _internalForTests, alignElements, angleToRadians, at, buildCalloutLeaderLineSvgPath, clipPolygons, combineShapes, composeAffine, computeAlign, computeDistribute, computeRotation, computeSnap, computeSnapToShape, computeUnionWalk, convexHull, createBuiltinVariables, createRotationDrag, cross2, cxn, dedupPoly, distributeElements, elbowCurveSegments, elbowWaypoints, ensureCCW, ensureCW, evaluateFormula, evaluateGuides, findAllIntersections, flattenSvgPath, fmtNum, fragmentShapes, gd, gear6, gear9, getAdjustmentAwareClipPath, getCalloutLeaderLineGeometry, getCalloutTier, getCalloutViewBoxBounds, getCloudCalloutClipPath, getCloudClipPath, getPresetConnectionSites, getPresetShapeClipPath, getPresetTextRect, insertIntersections, intersectPolygons, intersectShapes, intersectSvgPaths, isCalloutShape, isConvex, isHorizontalPrimaryAxis, isStShapeType, lineIntersection, lookupPresetConnectionSites, lookupPresetTextRectOverride, mergeOverlappingPolygons, mergeShapes, normalizeStShapeType, parseAdjustmentValues, parseFormula, parseGuideDefinitions, pointInPolygon, pointInTriangle, polygonArea, polygonsToSvgPath, resolveAlignReferenceBox, resolveCoordinate, resolveOperand, resolveRotateHandlePlacement, segmentIntersection, signedArea, snapBox, snapToGridStep, snapValue, subtractPolygons, subtractShapes, subtractSvgPaths, sutherlandHodgman, svgPathToPolygons, triangulate, unionPolygons, unionShapes, unionSvgPaths, usesSlideReference, vec2Eq };
15542
+ export { ACTION_BUTTON_CONNECTION_SITES, ACTION_BUTTON_PRESET_DEFINITIONS, ACTION_BUTTON_TEXT_RECTS, ANGLE_SCALE, ARROW_CALLOUT_CONNECTION_SITES, ARROW_CALLOUT_PRESET_DEFINITIONS, ARROW_CONNECTION_SITES, ARROW_PRESET_DEFINITIONS, ARROW_TEXT_RECTS, BASIC_SHAPE_CONNECTION_SITES_A, BASIC_SHAPE_CONNECTION_SITES_B, BRACE_CONNECTION_SITES, BRACE_TEXT_RECTS, CALLOUT_CONNECTION_SITES, CALLOUT_TEXT_RECTS, CARDINAL_SITES, CHART_MARK_PRESET_DEFINITIONS, CIRCULAR_ARROW_CONNECTION_SITES, CIRCULAR_ARROW_TEXT_RECTS, CLIP_PATHS_CORE, CLIP_PATHS_EXTENDED, CLOUD_CALLOUT_PRESET_DEFINITIONS, CLOUD_CALLOUT_TAIL_COUNT, CLOUD_LOBE_COUNT, COM_AVLST_GROUND_TRUTH, CONNECTORS_BRACKETS_PRESET_DEFINITIONS, CURVED_ARROWS_CONNECTORS_PRESET_DEFINITIONS, CURVED_ARROW_CONNECTION_SITES, EPSILON, EXACT_CURVED_ARROW_PRESET_DEFINITIONS, EXTENDED_SHAPE_DEFINITIONS, FLOWCHART_CONNECTION_SITES, FLOWCHART_PRESET_DEFINITIONS, FLOWCHART_TEXT_RECTS, GEAR9_CONNECTION_SITES, IDENTITY_AFFINE, LEFT_CIRCULAR_ARROW_CONNECTION_SITES, LEFT_RIGHT_CIRCULAR_ARROW_CONNECTION_SITES, MATH_SYMBOL_CONNECTION_SITES, MISC_ARROW_CONNECTION_SITES, MISC_PRESET_DEFINITIONS, MISC_SHAPE_CONNECTION_SITES, MISC_TEXT_RECTS_A, MISC_TEXT_RECTS_B, POLYGON_CONNECTION_SITES, POLYGON_TEXT_RECTS, PRESET_GEOMETRY_ALIASES, PRESET_SHAPE_CATEGORY_LABELS, PRESET_SHAPE_CLIP_PATHS, PRESET_SHAPE_DEFINITIONS, PRESET_SHAPE_GEOMETRY_TABLE, PRIMARY_SHAPE_DEFINITIONS, QUAD_CONNECTION_SITES, QUAD_TEXT_RECTS, RECTS_SNIPS_PRESET_DEFINITIONS, RECT_VARIANT_CONNECTION_SITES, REFINED_ARROW_PRESET_DEFINITIONS, RIBBON_CONNECTION_SITES, RIBBON_TEXT_RECTS, SCROLLS_ACCENT_CALLOUTS_PRESET_DEFINITIONS, SNAP_THRESHOLD, STAR_CONNECTION_SITES, STAR_TEXT_RECTS, ST_SHAPE_TYPE_VALUES, TABS_DECORATIONS_PRESET_DEFINITIONS, TAB_CONNECTION_SITES, TAB_TEXT_RECTS, _internalForTests, alignElements, angleToRadians, at, buildCalloutLeaderLineSvgPath, clipPolygons, combineShapes, composeAffine, computeAlign, computeDistribute, computeRotation, computeSnap, computeSnapToShape, computeUnionWalk, convexHull, createBuiltinVariables, createRotationDrag, cross2, curvedElbowPathD, cxn, dedupPoly, distributeElements, elbowCurveSegments, elbowSegmentCount, elbowWaypoints, ensureCCW, ensureCW, evaluateFormula, evaluateGuides, findAllIntersections, flattenSvgPath, fmtNum, fragmentShapes, gd, gear6, gear9, getAdjustmentAwareClipPath, getCalloutLeaderLineGeometry, getCalloutTier, getCalloutViewBoxBounds, getCloudCalloutClipPath, getCloudClipPath, getPresetConnectionSites, getPresetShapeClipPath, getPresetTextRect, insertIntersections, intersectPolygons, intersectShapes, intersectSvgPaths, isCalloutShape, isConvex, isHorizontalPrimaryAxis, isStShapeType, lineIntersection, lookupPresetConnectionSites, lookupPresetTextRectOverride, mergeOverlappingPolygons, mergeShapes, normalizeStShapeType, parseAdjustmentValues, parseFormula, parseGuideDefinitions, pointInPolygon, pointInTriangle, polygonArea, polygonsToSvgPath, resolveAlignReferenceBox, resolveCoordinate, resolveOperand, resolveRotateHandlePlacement, segmentIntersection, signedArea, snapBox, snapToGridStep, snapValue, subtractPolygons, subtractShapes, subtractSvgPaths, sutherlandHodgman, svgPathToPolygons, triangulate, unionPolygons, unionShapes, unionSvgPaths, usesSlideReference, vec2Eq };
@@ -0,0 +1,13 @@
1
+ /** A flat dictionary keyed by an English phrase or a dotted id (`ribbon.home.paste`). */
2
+ export type MessageDictionary = Readonly<Record<string, string>>;
3
+ /** Every locale's dictionary, keyed by its code. */
4
+ export type LocaleDictionaries<L extends string = string> = Readonly<Record<L, MessageDictionary>>;
5
+ /**
6
+ * Merges the string files of one locale folder (`shell.ts`, `grid.ts`, ...). Each module may export
7
+ * its table under any name (or as default); every exported plain object whose values are all
8
+ * strings is merged, in module-path order, so files can be added independently. Later keys win.
9
+ */
10
+ export declare function mergeMessageModules(modules: Record<string, Record<string, unknown>>): MessageDictionary;
11
+ /** Keys of `baseline` that `dictionary` does not define (for locale completeness tests). */
12
+ export declare function missingMessageKeys(baseline: MessageDictionary, dictionary: MessageDictionary): string[];
13
+ //# sourceMappingURL=dictionary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dictionary.d.ts","sourceRoot":"","sources":["../../i18n/dictionary.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEjE,oDAAoD;AACpD,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAEnG;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC9C,iBAAiB,CAanB;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,EAAE,iBAAiB,GAC3B,MAAM,EAAE,CAEV"}
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ // i18n/locale.ts
4
+ var SUPPORTED_OFFICE_LOCALES = ["en", "fr", "de", "es", "zh-CN"];
5
+ var DEFAULT_REJECTED_SUBTAGS = ["hant", "tw", "hk", "mo"];
6
+ function normalizeLocale(input, supported, fallback, options = {}) {
7
+ const parts = (input ?? "").trim().toLowerCase().split(/[-_]/).filter(Boolean);
8
+ const language = parts[0];
9
+ if (!language) return fallback;
10
+ const find = (tag) => supported.find((item) => item.toLowerCase() === tag);
11
+ const exact = find(parts.join("-"));
12
+ if (exact) return exact;
13
+ const base = find(language);
14
+ if (base) return base;
15
+ const rejected = options.rejectedSubtags ?? DEFAULT_REJECTED_SUBTAGS;
16
+ if (parts.slice(1).some((part) => rejected.includes(part))) return fallback;
17
+ return supported.find((item) => item.toLowerCase().split("-")[0] === language && item.includes("-")) ?? fallback;
18
+ }
19
+ function normalizeOfficeLocale(input) {
20
+ return normalizeLocale(input, SUPPORTED_OFFICE_LOCALES, "en");
21
+ }
22
+
23
+ // i18n/dictionary.ts
24
+ function mergeMessageModules(modules) {
25
+ const merged = {};
26
+ for (const path of Object.keys(modules).sort()) {
27
+ const module = modules[path];
28
+ if (!module) continue;
29
+ for (const value of Object.values(module)) {
30
+ if (!value || typeof value !== "object" || Array.isArray(value)) continue;
31
+ const entries = Object.entries(value);
32
+ if (!entries.every(([, text]) => typeof text === "string")) continue;
33
+ for (const [key, text] of entries) merged[key] = text;
34
+ }
35
+ }
36
+ return merged;
37
+ }
38
+ function missingMessageKeys(baseline, dictionary) {
39
+ return Object.keys(baseline).filter((key) => !(key in dictionary));
40
+ }
41
+
42
+ // i18n/translator.ts
43
+ var SINGLE = /\{(\w+)\}/g;
44
+ var DOUBLE = /\{\{\s*(\w+)\s*\}\}/g;
45
+ function interpolate(template, params, placeholder = "single") {
46
+ if (!params) return template;
47
+ const pattern = placeholder === "double" ? DOUBLE : SINGLE;
48
+ return template.replace(
49
+ pattern,
50
+ (match, name) => Object.prototype.hasOwnProperty.call(params, name) && params[name] !== void 0 ? String(params[name]) : match
51
+ );
52
+ }
53
+ function createTranslator(messages, fallbacks = [], options = {}) {
54
+ const placeholder = options.placeholder ?? "single";
55
+ return (key, params) => {
56
+ let text = messages?.[key];
57
+ for (let i = 0; text === void 0 && i < fallbacks.length; i++) text = fallbacks[i]?.[key];
58
+ return interpolate(text ?? options.missing?.(key) ?? key, params, placeholder);
59
+ };
60
+ }
61
+
62
+ exports.SUPPORTED_OFFICE_LOCALES = SUPPORTED_OFFICE_LOCALES;
63
+ exports.createTranslator = createTranslator;
64
+ exports.interpolate = interpolate;
65
+ exports.mergeMessageModules = mergeMessageModules;
66
+ exports.missingMessageKeys = missingMessageKeys;
67
+ exports.normalizeLocale = normalizeLocale;
68
+ exports.normalizeOfficeLocale = normalizeOfficeLocale;
@@ -0,0 +1,4 @@
1
+ export * from './locale.js';
2
+ export * from './dictionary.js';
3
+ export * from './translator.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../i18n/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,60 @@
1
+ // i18n/locale.ts
2
+ var SUPPORTED_OFFICE_LOCALES = ["en", "fr", "de", "es", "zh-CN"];
3
+ var DEFAULT_REJECTED_SUBTAGS = ["hant", "tw", "hk", "mo"];
4
+ function normalizeLocale(input, supported, fallback, options = {}) {
5
+ const parts = (input ?? "").trim().toLowerCase().split(/[-_]/).filter(Boolean);
6
+ const language = parts[0];
7
+ if (!language) return fallback;
8
+ const find = (tag) => supported.find((item) => item.toLowerCase() === tag);
9
+ const exact = find(parts.join("-"));
10
+ if (exact) return exact;
11
+ const base = find(language);
12
+ if (base) return base;
13
+ const rejected = options.rejectedSubtags ?? DEFAULT_REJECTED_SUBTAGS;
14
+ if (parts.slice(1).some((part) => rejected.includes(part))) return fallback;
15
+ return supported.find((item) => item.toLowerCase().split("-")[0] === language && item.includes("-")) ?? fallback;
16
+ }
17
+ function normalizeOfficeLocale(input) {
18
+ return normalizeLocale(input, SUPPORTED_OFFICE_LOCALES, "en");
19
+ }
20
+
21
+ // i18n/dictionary.ts
22
+ function mergeMessageModules(modules) {
23
+ const merged = {};
24
+ for (const path of Object.keys(modules).sort()) {
25
+ const module = modules[path];
26
+ if (!module) continue;
27
+ for (const value of Object.values(module)) {
28
+ if (!value || typeof value !== "object" || Array.isArray(value)) continue;
29
+ const entries = Object.entries(value);
30
+ if (!entries.every(([, text]) => typeof text === "string")) continue;
31
+ for (const [key, text] of entries) merged[key] = text;
32
+ }
33
+ }
34
+ return merged;
35
+ }
36
+ function missingMessageKeys(baseline, dictionary) {
37
+ return Object.keys(baseline).filter((key) => !(key in dictionary));
38
+ }
39
+
40
+ // i18n/translator.ts
41
+ var SINGLE = /\{(\w+)\}/g;
42
+ var DOUBLE = /\{\{\s*(\w+)\s*\}\}/g;
43
+ function interpolate(template, params, placeholder = "single") {
44
+ if (!params) return template;
45
+ const pattern = placeholder === "double" ? DOUBLE : SINGLE;
46
+ return template.replace(
47
+ pattern,
48
+ (match, name) => Object.prototype.hasOwnProperty.call(params, name) && params[name] !== void 0 ? String(params[name]) : match
49
+ );
50
+ }
51
+ function createTranslator(messages, fallbacks = [], options = {}) {
52
+ const placeholder = options.placeholder ?? "single";
53
+ return (key, params) => {
54
+ let text = messages?.[key];
55
+ for (let i = 0; text === void 0 && i < fallbacks.length; i++) text = fallbacks[i]?.[key];
56
+ return interpolate(text ?? options.missing?.(key) ?? key, params, placeholder);
57
+ };
58
+ }
59
+
60
+ export { SUPPORTED_OFFICE_LOCALES, createTranslator, interpolate, mergeMessageModules, missingMessageKeys, normalizeLocale, normalizeOfficeLocale };
@@ -0,0 +1,17 @@
1
+ /** The five display languages every Office product UI ships. */
2
+ export declare const SUPPORTED_OFFICE_LOCALES: readonly ['en', 'fr', 'de', 'es', 'zh-CN'];
3
+ export type OfficeLocale = (typeof SUPPORTED_OFFICE_LOCALES)[number];
4
+ export interface NormalizeLocaleOptions {
5
+ /** Subtags that make a tag fall back instead of matching a regional entry (`zh-TW`). */
6
+ readonly rejectedSubtags?: readonly string[];
7
+ }
8
+ /**
9
+ * Maps any BCP 47 tag (`_` or `-`, any case) to one of `supported`, else `fallback`. Resolution:
10
+ * the exact tag; then its language alone (`de-AT` -> `de`); then a regional entry of the same
11
+ * language (`zh`, `zh-Hans-CN`, `zh-SG` -> `zh-CN`) unless the tag carries a rejected subtag
12
+ * (`zh-TW`, `zh-Hant`).
13
+ */
14
+ export declare function normalizeLocale<T extends string>(input: string | null | undefined, supported: readonly T[], fallback: T, options?: NormalizeLocaleOptions): T;
15
+ /** `normalizeLocale` over the five shared Office locales, falling back to English. */
16
+ export declare function normalizeOfficeLocale(input: string | null | undefined): OfficeLocale;
17
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../i18n/locale.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,eAAO,MAAM,wBAAwB,YAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAU,CAAC;AAEnF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAKrE,MAAM,WAAW,sBAAsB;IACtC,wFAAwF;IACxF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC/C,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,SAAS,EAAE,SAAS,CAAC,EAAE,EACvB,QAAQ,EAAE,CAAC,EACX,OAAO,GAAE,sBAA2B,GAClC,CAAC,CAeH;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAEpF"}