@shbernal/ts-pptx 4.0.1 → 4.2.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 (139) hide show
  1. package/README.md +147 -114
  2. package/dist/anim-presets-Qbgh8uut.js +55 -0
  3. package/dist/anim-presets-Qbgh8uut.js.map +1 -0
  4. package/dist/{autopage-odPz7zZO.js → autopage-DqZ37VpL.js} +11 -12
  5. package/dist/autopage-DqZ37VpL.js.map +1 -0
  6. package/dist/{binary-string-CKVAYI3M.js → binary-string-Ba8VM3b9.js} +3 -4
  7. package/dist/binary-string-Ba8VM3b9.js.map +1 -0
  8. package/dist/{body-insets-Dw_BeWD_.js → body-insets-BDHymJvz.js} +7 -9
  9. package/dist/body-insets-BDHymJvz.js.map +1 -0
  10. package/dist/browser.d.ts +24 -16
  11. package/dist/browser.d.ts.map +1 -1
  12. package/dist/browser.js +19 -19
  13. package/dist/browser.js.map +1 -1
  14. package/dist/{image-size-CvN2iCA4.js → chart-metadata-CwiTTcJq.js} +634 -537
  15. package/dist/chart-metadata-CwiTTcJq.js.map +1 -0
  16. package/dist/{clip-Bl01BPcN.d.ts → clip-ISfCMtWA.d.ts} +6 -10
  17. package/dist/clip-ISfCMtWA.d.ts.map +1 -0
  18. package/dist/{notes-Dh12JAbn.js → comments-CKIZYRbZ.js} +530 -401
  19. package/dist/comments-CKIZYRbZ.js.map +1 -0
  20. package/dist/{diagnostics-D8ot4Ei7.d.ts → diagnostics-MoA4MBq5.d.ts} +55 -53
  21. package/dist/diagnostics-MoA4MBq5.d.ts.map +1 -0
  22. package/dist/{embedded-fonts-DarT9aoa.d.ts → embedded-fonts-U7HIIhPO.d.ts} +4 -6
  23. package/dist/embedded-fonts-U7HIIhPO.d.ts.map +1 -0
  24. package/dist/{entry-compose-DCnvBZz2.d.ts → entry-compose-CiakSt-f.d.ts} +62 -81
  25. package/dist/entry-compose-CiakSt-f.d.ts.map +1 -0
  26. package/dist/{errors-C4oENPcu.js → entry-errors-JMthgJ2g.js} +45 -29
  27. package/dist/entry-errors-JMthgJ2g.js.map +1 -0
  28. package/dist/{table-cell-margins-EVg0EwxT.js → enums-BP9wsb9Q.js} +44 -47
  29. package/dist/enums-BP9wsb9Q.js.map +1 -0
  30. package/dist/{enums-BUKTUB6V.d.ts → enums-PcXr3o3J.d.ts} +13 -14
  31. package/dist/{enums-BUKTUB6V.d.ts.map → enums-PcXr3o3J.d.ts.map} +1 -1
  32. package/dist/families.d.ts +24 -26
  33. package/dist/families.d.ts.map +1 -1
  34. package/dist/families.js +3 -4
  35. package/dist/{fit-Cb7naFj6.js → fit-Bpmzep6O.js} +64 -56
  36. package/dist/fit-Bpmzep6O.js.map +1 -0
  37. package/dist/{font-metrics-v5fn7s7e.d.ts → font-metrics-DTppw4t3.d.ts} +62 -38
  38. package/dist/font-metrics-DTppw4t3.d.ts.map +1 -0
  39. package/dist/{grid-DikTjFey.js → grid-DUIMxjfl.js} +23 -26
  40. package/dist/grid-DUIMxjfl.js.map +1 -0
  41. package/dist/{html-dom-Iuog2wdK.js → html-dom-LZCgntnJ.js} +46 -47
  42. package/dist/html-dom-LZCgntnJ.js.map +1 -0
  43. package/dist/html.d.ts +53 -9
  44. package/dist/html.d.ts.map +1 -1
  45. package/dist/html.js +12 -13
  46. package/dist/html.js.map +1 -1
  47. package/dist/index.d.ts +21 -13
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +15 -15
  50. package/dist/index.js.map +1 -1
  51. package/dist/inspect.d.ts +16 -18
  52. package/dist/inspect.d.ts.map +1 -1
  53. package/dist/inspect.js +18 -19
  54. package/dist/inspect.js.map +1 -1
  55. package/dist/{text-anchor-CrYXAfUu.js → lock-attrs-CSQnFDHP.js} +62 -12
  56. package/dist/lock-attrs-CSQnFDHP.js.map +1 -0
  57. package/dist/math.d.ts +2 -4
  58. package/dist/math.d.ts.map +1 -1
  59. package/dist/math.js +12 -13
  60. package/dist/math.js.map +1 -1
  61. package/dist/measure.d.ts +23 -12
  62. package/dist/measure.d.ts.map +1 -1
  63. package/dist/measure.js +3 -3
  64. package/dist/node.d.ts +21 -13
  65. package/dist/node.d.ts.map +1 -1
  66. package/dist/node.js +12 -12
  67. package/dist/node.js.map +1 -1
  68. package/dist/{options-internal-WqgMf720.js → options-internal-BWgmLPdx.js} +4 -5
  69. package/dist/options-internal-BWgmLPdx.js.map +1 -0
  70. package/dist/{package-J49Ck6S2.d.ts → package-CANBWuSm.d.ts} +9 -13
  71. package/dist/package-CANBWuSm.d.ts.map +1 -0
  72. package/dist/{playbtn-CUqQdoDf.js → playbtn-BQZFJir9.js} +4 -5
  73. package/dist/playbtn-BQZFJir9.js.map +1 -0
  74. package/dist/{pres-C6qgOFAa.d.ts → pres-BkEkUAEM.d.ts} +410 -237
  75. package/dist/pres-BkEkUAEM.d.ts.map +1 -0
  76. package/dist/{presentation-DGYlAWhl.js → presentation-4Ggq0_Xa.js} +470 -315
  77. package/dist/presentation-4Ggq0_Xa.js.map +1 -0
  78. package/dist/{presentation-types-8jLQHI4M.d.ts → presentation-types-BgnZR-0a.d.ts} +1119 -468
  79. package/dist/presentation-types-BgnZR-0a.d.ts.map +1 -0
  80. package/dist/read.d.ts +18 -13
  81. package/dist/read.d.ts.map +1 -1
  82. package/dist/read.js +4 -4
  83. package/dist/script.d.ts +116 -65
  84. package/dist/script.d.ts.map +1 -1
  85. package/dist/script.js +2700 -780
  86. package/dist/script.js.map +1 -1
  87. package/dist/{shapes-re0KyQk_.js → shapes-CAPOjU0Q.js} +1564 -491
  88. package/dist/shapes-CAPOjU0Q.js.map +1 -0
  89. package/dist/{slide-Dx2ZeVZ6.d.ts → slide-BmT4kMoO.d.ts} +102 -89
  90. package/dist/slide-BmT4kMoO.d.ts.map +1 -0
  91. package/dist/{slide-size-BalTjFuv.js → slide-size-SkScz1ig.js} +2 -3
  92. package/dist/{slide-size-BalTjFuv.js.map → slide-size-SkScz1ig.js.map} +1 -1
  93. package/dist/{table-dom-BTDP3lEP.js → table-dom-BYga4FYY.js} +4 -5
  94. package/dist/{table-dom-BTDP3lEP.js.map → table-dom-BYga4FYY.js.map} +1 -1
  95. package/dist/{text-sN64Otf_.js → text-CU08xJGs.js} +393 -344
  96. package/dist/text-CU08xJGs.js.map +1 -0
  97. package/dist/{transition-speed-kUEWDWTx.js → transition-speed-CNJ0fSpQ.js} +2 -3
  98. package/dist/{transition-speed-kUEWDWTx.js.map → transition-speed-CNJ0fSpQ.js.map} +1 -1
  99. package/dist/{units-internal-XJlf-hOl.js → units-internal-BR3a4cIi.js} +34 -32
  100. package/dist/units-internal-BR3a4cIi.js.map +1 -0
  101. package/dist/{zip-CKd8ihcf.js → zip-7JTh61LX.js} +8 -10
  102. package/dist/zip-7JTh61LX.js.map +1 -0
  103. package/dist/{zip-C0leZZMj.d.ts → zip-uUjs9Cqx.d.ts} +4 -6
  104. package/dist/zip-uUjs9Cqx.d.ts.map +1 -0
  105. package/dist/zip.d.ts +3 -3
  106. package/dist/zip.js +3 -3
  107. package/dist/{zoom-DPUHh85d.js → zoom-CSSeOwM8.js} +1204 -620
  108. package/dist/zoom-CSSeOwM8.js.map +1 -0
  109. package/package.json +27 -28
  110. package/skills/{ts-pptx-upstream → pptx-ts-upstream}/SKILL.md +37 -84
  111. package/dist/autopage-odPz7zZO.js.map +0 -1
  112. package/dist/binary-string-CKVAYI3M.js.map +0 -1
  113. package/dist/body-insets-Dw_BeWD_.js.map +0 -1
  114. package/dist/clip-Bl01BPcN.d.ts.map +0 -1
  115. package/dist/diagnostics-D8ot4Ei7.d.ts.map +0 -1
  116. package/dist/embedded-fonts-DarT9aoa.d.ts.map +0 -1
  117. package/dist/entry-compose-DCnvBZz2.d.ts.map +0 -1
  118. package/dist/errors-C4oENPcu.js.map +0 -1
  119. package/dist/fit-Cb7naFj6.js.map +0 -1
  120. package/dist/font-metrics-v5fn7s7e.d.ts.map +0 -1
  121. package/dist/grid-DikTjFey.js.map +0 -1
  122. package/dist/html-dom-Iuog2wdK.js.map +0 -1
  123. package/dist/image-size-CvN2iCA4.js.map +0 -1
  124. package/dist/notes-Dh12JAbn.js.map +0 -1
  125. package/dist/options-internal-WqgMf720.js.map +0 -1
  126. package/dist/package-J49Ck6S2.d.ts.map +0 -1
  127. package/dist/playbtn-CUqQdoDf.js.map +0 -1
  128. package/dist/pres-C6qgOFAa.d.ts.map +0 -1
  129. package/dist/presentation-DGYlAWhl.js.map +0 -1
  130. package/dist/presentation-types-8jLQHI4M.d.ts.map +0 -1
  131. package/dist/shapes-re0KyQk_.js.map +0 -1
  132. package/dist/slide-Dx2ZeVZ6.d.ts.map +0 -1
  133. package/dist/table-cell-margins-EVg0EwxT.js.map +0 -1
  134. package/dist/text-anchor-CrYXAfUu.js.map +0 -1
  135. package/dist/text-sN64Otf_.js.map +0 -1
  136. package/dist/units-internal-XJlf-hOl.js.map +0 -1
  137. package/dist/zip-C0leZZMj.d.ts.map +0 -1
  138. package/dist/zip-CKd8ihcf.js.map +0 -1
  139. package/dist/zoom-DPUHh85d.js.map +0 -1
package/dist/measure.d.ts CHANGED
@@ -1,7 +1,23 @@
1
- import { Bt as TextMeasurement, Ht as TextPropsOptions, Ot as MeasureTextOptions, Vt as TextProps, jt as OverflowBoxOptions } from "./pres-C6qgOFAa.js";
2
- import { C as solveShrink, S as solveResize, _ as ShrinkOutcome, a as makeRegistryResolver, b as measureHeightPt, c as FitBox, d as HEIGHT_SAFETY_FACTOR, f as LayoutResult, g as SINGLE_LINE_PITCH, h as ResizeOutcome, i as getHeuristicFontMetrics, l as FitParagraph, m as MetricsResolver, n as FontMetricsRegistry, o as parseFontMetrics, p as MIN_FONT_SCALE_PCT, r as ParseFontMetricsOptions, s as FONT_SCALE_STEP_PCT, t as FontMetrics, u as FitRun, v as ShrinkResult, w as ObjectOptionsInternal, x as measureLayout, y as WIDTH_SAFETY_FACTOR } from "./font-metrics-v5fn7s7e.js";
3
- import { _ as PackageReadErrorCode, a as InternalError, c as PackageReadError, d as UnsupportedFeatureError, f as DiagnosticCode, g as MediaErrorCode, h as InvalidOptionErrorCode, i as setDiagnosticHandler, l as TsPptxError, m as InternalErrorCode, n as DiagnosticHandler, o as InvalidOptionError, p as ErrorCode, r as resetDiagnosticState, s as MediaError, t as Diagnostic, u as TsPptxErrorOptions, v as TsPptxCode, y as UnsupportedFeatureErrorCode } from "./diagnostics-D8ot4Ei7.js";
4
- //#region src/measure/font-collection.d.ts
1
+ /**
2
+ * The calibrated text-measurement engine as a standalone,
3
+ * public surface, so a consumer can lay out its own geometry (grow a card, reflow
4
+ * a grid, detect overflow) **before export** without a `PptxTs` instance.
5
+ *
6
+ * This is the same wrap model + solvers the export-time autofit bake uses (see
7
+ * `docs/contributing/design/text-fit.md`), so a layout-time prediction never disagrees with
8
+ * the baked result. For the ergonomic, inches-based path use
9
+ * `pptx.measureText()` / `pptx.overflowsBox()` on a presentation instance; reach
10
+ * for these primitives when you need to build your own resolver/registry and
11
+ * measure standalone.
12
+ *
13
+ * `opentype.js` (used by `parseFontMetrics`) is imported lazily, so importing this
14
+ * module does not pull it into the bundle until a font is actually parsed.
15
+ *
16
+ * @module
17
+ */
18
+ import { C as solveShrink, S as solveResize, _ as ShrinkOutcome, a as makeRegistryResolver, b as measureHeightPt, c as FitBox, d as HEIGHT_SAFETY_FACTOR, f as LayoutResult, g as SINGLE_LINE_PITCH, h as ResizeOutcome, i as getHeuristicFontMetrics, l as FitParagraph, m as MetricsResolver, n as FontMetricsRegistry, o as parseFontMetrics, p as MIN_FONT_SCALE_PCT, r as ParseFontMetricsOptions, s as FONT_SCALE_STEP_PCT, t as FontMetrics, u as FitRun, v as ShrinkResult, w as ObjectOptionsInternal, x as measureLayout, y as WIDTH_SAFETY_FACTOR } from "./font-metrics-DTppw4t3.js";
19
+ import { It as MeasureTextOptions, Jt as TextMeasurement, Xt as TextPropsOptions, Yt as TextProps, zt as OverflowBoxOptions } from "./pres-BkEkUAEM.js";
20
+ import { S as UnsupportedFeatureErrorCode, _ as InternalErrorCode, a as TsPptxCode, b as PackageReadErrorCode, c as InternalError, d as PackageReadError, f as PptxTsError, g as ErrorCode, h as DiagnosticCode, i as setDiagnosticHandler, l as InvalidOptionError, m as UnsupportedFeatureError, n as DiagnosticHandler, o as TsPptxError, p as PptxTsErrorOptions, r as resetDiagnosticState, s as TsPptxErrorOptions, t as Diagnostic, u as MediaError, v as InvalidOptionErrorCode, x as PptxTsCode, y as MediaErrorCode } from "./diagnostics-MoA4MBq5.js";
5
21
  /**
6
22
  * Font **collection** (`.ttc` / `.otc`) support for the write-side metrics.
7
23
  *
@@ -62,10 +78,8 @@ export declare function isFontCollection(data: Uint8Array): boolean;
62
78
  * @example listFontFaces(readFileSync('C:/Windows/Fonts/msgothic.ttc')).map((f) => f.family)
63
79
  */
64
80
  export declare function listFontFaces(data: Uint8Array): FontFaceInfo[];
65
- //#endregion
66
- //#region src/measure/fit.d.ts
67
81
  /**
68
- * Layout-time text measurement against registered metrics — the public engine
82
+ * Layout-time text measurement against registered metrics: the public engine
69
83
  * behind `pptx.measureText()`. Uses the **same** calibrated wrap model, resolver
70
84
  * semantics, and conservative safety factors as the export-time bake
71
85
  * (`applyMeasuredFit` / {@link solveResize} / {@link solveShrink}), so a
@@ -82,11 +96,9 @@ export declare function listFontFaces(data: Uint8Array): FontFaceInfo[];
82
96
  * and is reported in `approximatedFaces`; an unnamed theme-default face returns
83
97
  * `measurable: false`. Code points a *registered* face has no glyph for are reported
84
98
  * in `uncoveredCodepoints`, and are the one case where the height may come back short
85
- * rather than tall — there is no font fallback here, only the font's `.notdef` advance.
99
+ * rather than tall: there is no font fallback here, only the font's `.notdef` advance.
86
100
  */
87
101
  export declare function measureText(registry: FontMetricsRegistry, text: string | TextProps[], opts: MeasureTextOptions): TextMeasurement;
88
- //#endregion
89
- //#region src/measure/paragraphs.d.ts
90
102
  type RunOpts = TextPropsOptions & ObjectOptionsInternal;
91
103
  /**
92
104
  * Convert a run list (+ box-level default options) into a measurable
@@ -95,6 +107,5 @@ type RunOpts = TextPropsOptions & ObjectOptionsInternal;
95
107
  * `measureText` API, so a layout-time prediction and the baked export never drift.
96
108
  */
97
109
  export declare function buildFitParagraphs(runs: TextProps[], opts: RunOpts): FitParagraph[] | null;
98
- //#endregion
99
- export { type Diagnostic, type DiagnosticCode, type DiagnosticHandler, type ErrorCode, FONT_SCALE_STEP_PCT, type FitBox, type FitParagraph, type FitRun, type FontFaceInfo, type FontMetrics, FontMetricsRegistry, HEIGHT_SAFETY_FACTOR, InternalError, type InternalErrorCode, InvalidOptionError, type InvalidOptionErrorCode, type LayoutResult, MIN_FONT_SCALE_PCT, type MeasureTextOptions, MediaError, type MediaErrorCode, type MetricsResolver, type OverflowBoxOptions, PackageReadError, type PackageReadErrorCode, type ParseFontMetricsOptions, type ResizeOutcome, SINGLE_LINE_PITCH, type ShrinkOutcome, type ShrinkResult, type TextMeasurement, type TsPptxCode, TsPptxError, type TsPptxErrorOptions, UnsupportedFeatureError, type UnsupportedFeatureErrorCode, WIDTH_SAFETY_FACTOR, getHeuristicFontMetrics, makeRegistryResolver, measureHeightPt, measureLayout, parseFontMetrics, resetDiagnosticState, setDiagnosticHandler, solveResize, solveShrink };
110
+ export { type Diagnostic, type DiagnosticCode, type DiagnosticHandler, type ErrorCode, FONT_SCALE_STEP_PCT, type FitBox, type FitParagraph, type FitRun, type FontFaceInfo, type FontMetrics, FontMetricsRegistry, HEIGHT_SAFETY_FACTOR, InternalError, type InternalErrorCode, InvalidOptionError, type InvalidOptionErrorCode, type LayoutResult, MIN_FONT_SCALE_PCT, type MeasureTextOptions, MediaError, type MediaErrorCode, type MetricsResolver, type OverflowBoxOptions, PackageReadError, type PackageReadErrorCode, type ParseFontMetricsOptions, type PptxTsCode, PptxTsError, type PptxTsErrorOptions, type ResizeOutcome, SINGLE_LINE_PITCH, type ShrinkOutcome, type ShrinkResult, type TextMeasurement, TsPptxCode, TsPptxError, TsPptxErrorOptions, UnsupportedFeatureError, type UnsupportedFeatureErrorCode, WIDTH_SAFETY_FACTOR, getHeuristicFontMetrics, makeRegistryResolver, measureHeightPt, measureLayout, parseFontMetrics, resetDiagnosticState, setDiagnosticHandler, solveResize, solveShrink };
100
111
  //# sourceMappingURL=measure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"measure.d.ts","names":[],"sources":["../src/measure/font-collection.ts","../src/measure/fit.ts","../src/measure/paragraphs.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAmDiB;;WAEP;;WAEA;;WAEA;;WAEA;;WAEA;;;wBA+BM,iBAAiB,MAAM;;;;;;;;;;;;;wBA0HvB,cAAc,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;wBC5GjC,YACf,UAAU,qBACV,eAAe,aACf,MAAM,qBACJ;;;KCzFS,UAAU,mBAAmB;;;;;;;wBAoDzB,mBAAmB,MAAM,aAAa,MAAM,UAAU"}
1
+ {"version":3,"file":"measure.d.ts","names":[],"sources":["../src/measure/font-collection.ts","../src/measure/fit.ts","../src/measure/paragraphs.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAmDiB;;WAEP;;WAEA;;WAEA;;WAEA;;WAEA;;;wBA+BM,iBAAiB,MAAM;;;;;;;;;;;;;wBA0HvB,cAAc,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;wBC5GjC,YACf,UAAU,qBACV,eAAe,aACf,MAAM,qBACJ;KCzFS,UAAU,mBAAmB;;;;;;;wBAkDzB,mBAAmB,MAAM,aAAa,MAAM,UAAU"}
package/dist/measure.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as TsPptxError, c as setDiagnosticHandler, i as PackageReadError, n as InvalidOptionError, o as UnsupportedFeatureError, r as MediaError, s as resetDiagnosticState, t as InternalError } from "./errors-C4oENPcu.js";
2
- import { _ as getHeuristicFontMetrics, b as isFontCollection, c as HEIGHT_SAFETY_FACTOR, d as WIDTH_SAFETY_FACTOR, f as measureHeightPt, g as FontMetricsRegistry, h as solveShrink, l as MIN_FONT_SCALE_PCT, m as solveResize, n as measureText, o as buildFitParagraphs, p as measureLayout, s as FONT_SCALE_STEP_PCT, u as SINGLE_LINE_PITCH, v as makeRegistryResolver, x as listFontFaces, y as parseFontMetrics } from "./fit-Cb7naFj6.js";
3
- export { FONT_SCALE_STEP_PCT, FontMetricsRegistry, HEIGHT_SAFETY_FACTOR, InternalError, InvalidOptionError, MIN_FONT_SCALE_PCT, MediaError, PackageReadError, SINGLE_LINE_PITCH, TsPptxError, UnsupportedFeatureError, WIDTH_SAFETY_FACTOR, buildFitParagraphs, getHeuristicFontMetrics, isFontCollection, listFontFaces, makeRegistryResolver, measureHeightPt, measureLayout, measureText, parseFontMetrics, resetDiagnosticState, setDiagnosticHandler, solveResize, solveShrink };
1
+ import { _ as getHeuristicFontMetrics, b as isFontCollection, c as HEIGHT_SAFETY_FACTOR, d as WIDTH_SAFETY_FACTOR, f as measureHeightPt, g as FontMetricsRegistry, h as solveShrink, l as MIN_FONT_SCALE_PCT, m as solveResize, n as measureText, o as buildFitParagraphs, p as measureLayout, s as FONT_SCALE_STEP_PCT, u as SINGLE_LINE_PITCH, v as makeRegistryResolver, x as listFontFaces, y as parseFontMetrics } from "./fit-Bpmzep6O.js";
2
+ import { a as PackageReadError, c as resetDiagnosticState, i as MediaError, l as setDiagnosticHandler, n as InternalError, o as PptxTsError, r as InvalidOptionError, s as UnsupportedFeatureError, t as TsPptxError } from "./entry-errors-JMthgJ2g.js";
3
+ export { FONT_SCALE_STEP_PCT, FontMetricsRegistry, HEIGHT_SAFETY_FACTOR, InternalError, InvalidOptionError, MIN_FONT_SCALE_PCT, MediaError, PackageReadError, PptxTsError, SINGLE_LINE_PITCH, TsPptxError, UnsupportedFeatureError, WIDTH_SAFETY_FACTOR, buildFitParagraphs, getHeuristicFontMetrics, isFontCollection, listFontFaces, makeRegistryResolver, measureHeightPt, measureLayout, measureText, parseFontMetrics, resetDiagnosticState, setDiagnosticHandler, solveResize, solveShrink };
package/dist/node.d.ts CHANGED
@@ -1,25 +1,30 @@
1
- import { C as isChartType, S as isChartExType, _ as VALID_SHAPE_PRESETS, a as CONNECTOR_PRESET_NAME, b as asChartType, c as PLACEHOLDER_TYPE, d as SHAPE_NAME, f as SchemeColor, g as TextAnchor, h as TableStyle, i as CHART_NAME, l as PlaceholderType, m as SlideObjectType, n as AlignV, o as ChartType, p as ShapeType, r as BulletType, s as OutputType, t as AlignH, u as SCHEME_COLORS, v as WRITE_OUTPUT_TYPE, x as connectorPresetFor, y as ZIP_OUTPUT_TYPE } from "./enums-BUKTUB6V.js";
2
- import { $ as ChartPropsAxisCat, $t as ShapeAdjustValue, A as TextVertType, At as NotesTextOptions, B as ShapeFillProps, Bt as TextMeasurement, C as ImageFillProps, Cn as TimeUnit, Ct as CommonObjectDescriptor, D as PatternPreset, Dt as CommentProps, E as PatternFillProps, Et as PlaceholderProps, F as ConnectorType, Ft as TableLayoutResult, G as ChartDataPointStyle, Gt as ImageBaseProps, H as StrokeProps, Ht as TextPropsOptions, I as FillOption, It as TextBaseProps, J as ChartExGeography, Jt as MediaType, K as ChartErrorBarOptions, Kt as ImageProps, L as HyperlinkActionJump, Lt as TextBulletProps, M as VAlign, Mt as ResolvedCommentAuthor, N as BorderProps, Nt as SlideComment, O as PositionProps, Ot as MeasureTextOptions, P as ConnectorProps, Pt as TableCellLayout, Q as ChartOpts, Qt as ShapeAdjustHandleXY, R as HyperlinkProps, Rt as TextFitShrinkProps, S as HexColor, St as OptsChartGridLine, T as Margin, Tt as ObjectNameProps, U as ChartAreaProps, Ut as textRun, V as ShapeLineProps, Vt as TextProps, W as ChartAxisTickMark, Wt as textRuns, X as ChartLineDash, Xt as ShapeAdjustHandle, Y as ChartExStatistics, Yt as OleObjectProps, Z as ChartMulti, Zt as ShapeAdjustHandlePolar, _ as DataOrPathRequiredProps, _n as RadarStyleAlias, _t as ChartPropsLegend, a as PresentationProps, an as BarGrouping, at as ChartPropsChartDoughnut, b as GradientStopProps, bt as LineCap, c as WriteFileProps, cn as DataLabelPosition, ct as ChartPropsChartPie, d as ThemeProps, dn as LegendPosition, dt as ChartPropsChartStock, en as ShapeConnectionSite, et as ChartPropsAxisSer, f as BackgroundOption, fn as LightRigDirection, ft as ChartPropsChartSurface, g as DataOrPathProps, gn as RadarStyle, gt as ChartPropsFillLine, h as Coord, hn as PresetMaterialType, ht as ChartPropsDataTable, i as PresLayout, in as BarDirection, it as ChartPropsChartBoxWhisker, j as ThemeColor, jt as OverflowBoxOptions, k as RadialGradientFillProps, kt as NotesProps, l as WriteProps, ln as DisplayBlanksAs, lt as ChartPropsChartRadar, m as Color, mn as LineDataSymbol, mt as ChartPropsDataLabel, n as PackagePart, nn as ShapeProps, nt as ChartPropsBase, o as SectionProps, on as BevelPresetType, ot as ChartPropsChartHistogram, p as BackgroundProps, pn as LightRigType, pt as ChartPropsChartWaterfall, q as ChartExBinning, qt as MediaProps, r as PartsProps, rn as Bar3DShape, rt as ChartPropsChartBar, s as WriteBaseProps, st as ChartPropsChartLine, t as CustomPropertyValue, tn as ShapeGuide, tt as ChartPropsAxisVal, u as ThemeColorScheme, ut as ChartPropsChartRegionMap, v as GeometryPoint, vt as ChartPropsTitle, w as LinearGradientFillProps, wt as ObjectLockProps, x as HAlign, xt as OptsChartData, y as GradientFillProps, yt as ChartSeriesOpts, z as ShadowProps, zt as TextGlowProps } from "./pres-C6qgOFAa.js";
3
- import { A as TableCellDiagonals, C as AnimationTrigger, D as TransitionType, E as TransitionSoundProps, F as TableToSlidesDocument, I as TableToSlidesElement, L as TableToSlidesProps, M as TableProps, N as TableRow, O as TableCell, P as TableRowSlide, S as AnimationProps, T as TransitionProps, _ as MasterTextStyleProps, a as Slide, b as SlideMasterProps, c as SectionZoomProps, d as ZoomBaseProps, f as Model3dCameraProps, g as MasterTextStyleLevel, h as MasterBulletProps, i as ObjectOptions, j as TableCellProps, k as TableCell3DProps, l as SlideZoomProps, m as Model3dProps, n as GroupChildProps, o as SlideLayout, p as Model3dPoint, r as GroupProps, s as SlideObjectInfo, t as AddSlideProps, u as SummaryZoomProps, v as SlideMasterChartProps, w as PresetEffect, x as SlideNumberProps, y as SlideMasterObject } from "./slide-Dx2ZeVZ6.js";
4
- import { _ as PackageReadErrorCode, a as InternalError, c as PackageReadError, d as UnsupportedFeatureError, f as DiagnosticCode, g as MediaErrorCode, h as InvalidOptionErrorCode, i as setDiagnosticHandler, l as TsPptxError, m as InternalErrorCode, n as DiagnosticHandler, o as InvalidOptionError, p as ErrorCode, r as resetDiagnosticState, s as MediaError, t as Diagnostic, u as TsPptxErrorOptions, v as TsPptxCode, y as UnsupportedFeatureErrorCode } from "./diagnostics-D8ot4Ei7.js";
5
- import { A as pixelsToEmu, C as StandardLayoutName, D as emuToPoints, E as emuToPixels, M as ptToHundredths, O as inchesToEmu, S as StandardLayout, T as emuToInches, _ as HUNDREDTHS_PER_POINT, b as PERCENT_SCALE, c as ConstructFamily, g as FIXED_PCT_PER_PERCENT, h as Emu, i as ComposedSlide, j as pointsToEmu, k as percentToEmu, m as DEFAULT_PX_PER_INCH, n as Composed, p as ANGLE_UNITS_PER_DEGREE, r as ComposedPresentation, s as PresentationCore, t as ComposeOptions, v as MAX_COORDINATE_EMU, w as coordToEmu, x as STANDARD_LAYOUTS, y as MIN_COORDINATE_EMU } from "./entry-compose-DCnvBZz2.js";
6
- import { a as EMU_PER_INCH, i as clipPath, n as FlatSide, o as EMU_PER_POINT, r as HalfDiscPreset, s as POINTS_PER_INCH, t as ClipShape } from "./clip-Bl01BPcN.js";
7
- //#region src/node.d.ts
8
1
  /**
9
- * The Node entry, reached through the `node` export condition — a consumer importing the bare
2
+ * The Node authoring entry, which the bare `pptx-ts` specifier resolves to under the `node`
3
+ * export condition.
4
+ *
5
+ * @module
6
+ */
7
+ import { C as isChartType, S as isChartExType, _ as VALID_SHAPE_PRESETS, a as CONNECTOR_PRESET_NAME, b as asChartType, c as PLACEHOLDER_TYPE, d as SHAPE_NAME, f as SchemeColor, g as TextAnchor, h as TableStyle, i as CHART_NAME, l as PlaceholderType, m as SlideObjectType, n as AlignV, o as ChartType, p as ShapeType, r as BulletType, s as OutputType, t as AlignH, u as SCHEME_COLORS, v as WRITE_OUTPUT_TYPE, x as connectorPresetFor, y as ZIP_OUTPUT_TYPE } from "./enums-PcXr3o3J.js";
8
+ import { $ as ChartExBinning, $t as ImageBaseProps, A as PositionProps, At as ObjectLockProps, B as HyperlinkActionJump, Bt as ResolvedCommentAuthor, C as HexColor, Ct as ChartPropsLegend, D as PatternFillProps, Dt as OptsChartData, E as Margin, En as RadarStyleAlias, Et as LineCap, F as ActionHyperlinkProps, Ft as CommentProps, G as ShapeLineProps, Gt as TextBulletProps, H as HyperlinkProps, Ht as TableCellLayout, I as BorderProps, It as MeasureTextOptions, J as UrlHyperlinkProps, Jt as TextMeasurement, K as SlideHyperlinkProps, Kt as TextFitShrinkProps, L as ConnectorProps, Lt as NotesProps, M as TextVertType, Mn as TimeUnit, Mt as PlaceholderBinding, N as ThemeColor, Nt as PlaceholderOption, O as PatternPreset, Ot as OptsChartGridLine, P as VAlign, Pt as PlaceholderProps, Q as ChartErrorBarOptions, Qt as textRuns, R as ConnectorType, Rt as NotesTextOptions, S as HAlign, Sn as LineDataSymbol, St as ChartPropsFillLine, T as LinearGradientFillProps, Tn as RadarStyle, Tt as ChartSeriesOpts, U as ShadowProps, Ut as TableLayoutResult, V as HyperlinkBaseProps, Vt as SlideComment, W as ShapeFillProps, Wt as TextBaseProps, X as ChartAxisTickMark, Xt as TextPropsOptions, Y as ChartAreaProps, Yt as TextProps, Z as ChartDataPointStyle, Zt as textRun, _ as DataOrPathProps, _n as DisplayBlanksAs, _t as ChartPropsChartStock, a as PresentationProps, an as ShapeAdjustHandlePolar, at as ChartPropsAxisCat, b as GradientFillProps, bn as LightRigDirection, bt as ChartPropsDataLabel, c as WriteFileProps, cn as ShapeConnectionSite, ct as ChartPropsBase, d as ThemeColorScheme, dn as Bar3DShape, dt as ChartPropsChartDoughnut, en as ImageProps, et as ChartExGeography, f as ThemeProps, fn as BarDirection, ft as ChartPropsChartHistogram, g as Coord, gn as DataLabelPosition, gt as ChartPropsChartRegionMap, h as Color, ht as ChartPropsChartRadar, i as PresLayout, in as ShapeAdjustHandle, it as ChartOpts, j as RadialGradientFillProps, jt as ObjectNameProps, k as PlaceholderPositionProps, kt as CommonObjectDescriptor, l as WriteOutputMap, ln as ShapeGuide, lt as ChartPropsChartBar, m as BackgroundProps, mn as BevelPresetType, mt as ChartPropsChartPie, n as PackagePart, nn as MediaType, nt as ChartLineDash, o as SectionProps, on as ShapeAdjustHandleXY, ot as ChartPropsAxisSer, p as BackgroundOption, pn as BarGrouping, pt as ChartPropsChartLine, q as StrokeProps, qt as TextGlowProps, r as PartsProps, rn as OleObjectProps, rt as ChartMulti, s as WriteBaseProps, sn as ShapeAdjustValue, st as ChartPropsAxisVal, t as CustomPropertyValue, tn as MediaProps, tt as ChartExStatistics, u as WriteProps, un as ShapeProps, ut as ChartPropsChartBoxWhisker, v as DataOrPathRequiredProps, vt as ChartPropsChartSurface, w as ImageFillProps, wn as PresetMaterialType, wt as ChartPropsTitle, x as GradientStopProps, xn as LightRigType, xt as ChartPropsDataTable, y as GeometryPoint, yn as LegendPosition, yt as ChartPropsChartWaterfall, z as FillOption, zt as OverflowBoxOptions } from "./pres-BkEkUAEM.js";
9
+ import { A as TableCellDiagonals, C as AnimationTrigger, D as TransitionType, E as TransitionSoundProps, F as TableToSlidesDocument, I as TableToSlidesElement, L as TableToSlidesProps, M as TableProps, N as TableRow, O as TableCell, P as TableRowSlide, S as AnimationProps, T as TransitionProps, _ as MasterTextStyleProps, a as Slide, b as SlideMasterProps, c as SectionZoomProps, d as ZoomBaseProps, f as Model3dCameraProps, g as MasterTextStyleLevel, h as MasterBulletProps, i as ObjectOptions, j as TableCellProps, k as TableCell3DProps, l as SlideZoomProps, m as Model3dProps, n as GroupChildProps, o as SlideLayout, p as Model3dPoint, r as GroupProps, s as SlideObjectInfo, t as AddSlideProps, u as SummaryZoomProps, v as SlideMasterChartProps, w as PresetEffect, x as SlideNumberProps, y as SlideMasterObject } from "./slide-BmT4kMoO.js";
10
+ import { S as UnsupportedFeatureErrorCode, _ as InternalErrorCode, a as TsPptxCode, b as PackageReadErrorCode, c as InternalError, d as PackageReadError, f as PptxTsError, g as ErrorCode, h as DiagnosticCode, i as setDiagnosticHandler, l as InvalidOptionError, m as UnsupportedFeatureError, n as DiagnosticHandler, o as TsPptxError, p as PptxTsErrorOptions, r as resetDiagnosticState, s as TsPptxErrorOptions, t as Diagnostic, u as MediaError, v as InvalidOptionErrorCode, x as PptxTsCode, y as MediaErrorCode } from "./diagnostics-MoA4MBq5.js";
11
+ import { A as pixelsToEmu, C as StandardLayoutName, D as emuToPoints, E as emuToPixels, M as ptToHundredths, O as inchesToEmu, S as StandardLayout, T as emuToInches, _ as HUNDREDTHS_PER_POINT, b as PERCENT_SCALE, c as ConstructFamily, g as FIXED_PCT_PER_PERCENT, h as Emu, i as ComposedSlide, j as pointsToEmu, k as percentToEmu, m as DEFAULT_PX_PER_INCH, n as Composed, p as ANGLE_UNITS_PER_DEGREE, r as ComposedPresentation, s as PresentationCore, t as ComposeOptions, v as MAX_COORDINATE_EMU, w as coordToEmu, x as STANDARD_LAYOUTS, y as MIN_COORDINATE_EMU } from "./entry-compose-CiakSt-f.js";
12
+ import { a as EMU_PER_INCH, i as clipPath, n as FlatSide, o as EMU_PER_POINT, r as HalfDiscPreset, s as POINTS_PER_INCH, t as ClipShape } from "./clip-ISfCMtWA.js";
13
+ /**
14
+ * The Node entry, reached through the `node` export condition. A consumer importing the bare
10
15
  * `pptx-ts` specifier under Node lands here without naming this subpath.
11
16
  *
12
17
  * Same authoring API as every other entry (see `entry-surface.ts`); the runtime adapter is what
13
18
  * differs. This one can reach the filesystem, so `writeFile` writes a real file and media may be
14
- * loaded from a path — both of which throw on the runtime-agnostic entry.
19
+ * loaded from a path, both of which throw on the runtime-agnostic entry.
15
20
  */
16
- export declare class TsPptx extends PresentationCore {
21
+ export declare class PptxTs extends PresentationCore {
17
22
  constructor();
18
23
  }
19
24
  /**
20
25
  * Compose a presentation from the construct families it needs, on the Node adapter.
21
26
  *
22
- * The counterpart to {@link TsPptx}, which is composed with every family there is. This one costs
27
+ * The counterpart to {@link PptxTs}, which is composed with every family there is. This one costs
23
28
  * what it carries: the core tier (text, shapes, images, groups, speaker notes) plus whatever
24
29
  * `use` names, and nothing else reaches the bundle.
25
30
  * @param {ComposeOptions} opts - the families to compose in, from `pptx-ts/families`
@@ -29,6 +34,9 @@ export declare class TsPptx extends PresentationCore {
29
34
  * const pres = createPresentation({ use: [charts] })
30
35
  */
31
36
  export declare function createPresentation<const Fs extends readonly ConstructFamily[] = []>(opts?: ComposeOptions<Fs>): Composed<Fs>;
32
- //#endregion
33
- export { ANGLE_UNITS_PER_DEGREE, AddSlideProps, AlignH, AlignV, AnimationProps, AnimationTrigger, BackgroundOption, BackgroundProps, type Bar3DShape, type BarDirection, type BarGrouping, type BevelPresetType, BorderProps, BulletType, CHART_NAME, CONNECTOR_PRESET_NAME, ChartAreaProps, ChartAxisTickMark, ChartDataPointStyle, ChartErrorBarOptions, ChartExBinning, ChartExGeography, ChartExStatistics, ChartLineDash, ChartMulti, ChartOpts, ChartPropsAxisCat, ChartPropsAxisSer, ChartPropsAxisVal, ChartPropsBase, ChartPropsChartBar, ChartPropsChartBoxWhisker, ChartPropsChartDoughnut, ChartPropsChartHistogram, ChartPropsChartLine, ChartPropsChartPie, ChartPropsChartRadar, ChartPropsChartRegionMap, ChartPropsChartStock, ChartPropsChartSurface, ChartPropsChartWaterfall, ChartPropsDataLabel, ChartPropsDataTable, ChartPropsFillLine, ChartPropsLegend, ChartPropsTitle, ChartSeriesOpts, ChartType, ClipShape, Color, CommentProps, CommonObjectDescriptor, type ComposeOptions, type Composed, type ComposedPresentation, type ComposedSlide, ConnectorProps, ConnectorType, type ConstructFamily, Coord, CustomPropertyValue, DEFAULT_PX_PER_INCH, type DataLabelPosition, DataOrPathProps, DataOrPathRequiredProps, type Diagnostic, type DiagnosticCode, type DiagnosticHandler, type DisplayBlanksAs, EMU_PER_INCH, EMU_PER_POINT, Emu, type ErrorCode, FIXED_PCT_PER_PERCENT, FillOption, FlatSide, GeometryPoint, GradientFillProps, GradientStopProps, GroupChildProps, GroupProps, HAlign, HUNDREDTHS_PER_POINT, HalfDiscPreset, HexColor, HyperlinkActionJump, HyperlinkProps, ImageBaseProps, ImageFillProps, ImageProps, InternalError, type InternalErrorCode, InvalidOptionError, type InvalidOptionErrorCode, type LegendPosition, type LightRigDirection, type LightRigType, LineCap, type LineDataSymbol, LinearGradientFillProps, MAX_COORDINATE_EMU, MIN_COORDINATE_EMU, Margin, MasterBulletProps, MasterTextStyleLevel, MasterTextStyleProps, MeasureTextOptions, MediaError, type MediaErrorCode, MediaProps, MediaType, Model3dCameraProps, Model3dPoint, Model3dProps, NotesProps, NotesTextOptions, ObjectLockProps, ObjectNameProps, ObjectOptions, OleObjectProps, OptsChartData, OptsChartGridLine, OutputType, OverflowBoxOptions, PERCENT_SCALE, PLACEHOLDER_TYPE, POINTS_PER_INCH, PackagePart, PackageReadError, type PackageReadErrorCode, PartsProps, PatternFillProps, PatternPreset, PlaceholderProps, PlaceholderType, PositionProps, PresLayout, PresentationProps, PresetEffect, type PresetMaterialType, type RadarStyle, type RadarStyleAlias, RadialGradientFillProps, ResolvedCommentAuthor, SCHEME_COLORS, SHAPE_NAME, STANDARD_LAYOUTS, SchemeColor, SectionProps, SectionZoomProps, ShadowProps, ShapeAdjustHandle, ShapeAdjustHandlePolar, ShapeAdjustHandleXY, ShapeAdjustValue, ShapeConnectionSite, ShapeFillProps, ShapeGuide, ShapeLineProps, ShapeProps, ShapeType, Slide, SlideComment, SlideLayout, SlideMasterChartProps, SlideMasterObject, SlideMasterProps, SlideNumberProps, SlideObjectInfo, SlideObjectType, SlideZoomProps, StandardLayout, StandardLayoutName, StrokeProps, SummaryZoomProps, TableCell, TableCell3DProps, TableCellDiagonals, TableCellLayout, TableCellProps, TableLayoutResult, TableProps, TableRow, TableRowSlide, TableStyle, TableToSlidesDocument, TableToSlidesElement, TableToSlidesProps, TextAnchor, TextBaseProps, TextBulletProps, TextFitShrinkProps, TextGlowProps, TextMeasurement, TextProps, TextPropsOptions, TextVertType, ThemeColor, ThemeColorScheme, ThemeProps, type TimeUnit, TransitionProps, TransitionSoundProps, TransitionType, TsPptx as default, type TsPptxCode, TsPptxError, type TsPptxErrorOptions, UnsupportedFeatureError, type UnsupportedFeatureErrorCode, VALID_SHAPE_PRESETS, VAlign, WRITE_OUTPUT_TYPE, WriteBaseProps, WriteFileProps, WriteProps, ZIP_OUTPUT_TYPE, ZoomBaseProps, asChartType, clipPath, connectorPresetFor, coordToEmu, emuToInches, emuToPixels, emuToPoints, inchesToEmu, isChartExType, isChartType, percentToEmu, pixelsToEmu, pointsToEmu, ptToHundredths, resetDiagnosticState, setDiagnosticHandler, textRun, textRuns };
37
+ /** @deprecated Renamed to {@link PptxTs}. This alias is removed in v5. */
38
+ export declare const TsPptx: typeof PptxTs;
39
+ /** @deprecated Renamed to {@link PptxTs}. This alias is removed in v5. */
40
+ export type TsPptx = PptxTs;
41
+ export { ANGLE_UNITS_PER_DEGREE, ActionHyperlinkProps, AddSlideProps, AlignH, AlignV, AnimationProps, AnimationTrigger, BackgroundOption, BackgroundProps, type Bar3DShape, type BarDirection, type BarGrouping, type BevelPresetType, BorderProps, BulletType, CHART_NAME, CONNECTOR_PRESET_NAME, ChartAreaProps, ChartAxisTickMark, ChartDataPointStyle, ChartErrorBarOptions, ChartExBinning, ChartExGeography, ChartExStatistics, ChartLineDash, ChartMulti, ChartOpts, ChartPropsAxisCat, ChartPropsAxisSer, ChartPropsAxisVal, ChartPropsBase, ChartPropsChartBar, ChartPropsChartBoxWhisker, ChartPropsChartDoughnut, ChartPropsChartHistogram, ChartPropsChartLine, ChartPropsChartPie, ChartPropsChartRadar, ChartPropsChartRegionMap, ChartPropsChartStock, ChartPropsChartSurface, ChartPropsChartWaterfall, ChartPropsDataLabel, ChartPropsDataTable, ChartPropsFillLine, ChartPropsLegend, ChartPropsTitle, ChartSeriesOpts, ChartType, ClipShape, Color, CommentProps, CommonObjectDescriptor, type ComposeOptions, type Composed, type ComposedPresentation, type ComposedSlide, ConnectorProps, ConnectorType, type ConstructFamily, Coord, CustomPropertyValue, DEFAULT_PX_PER_INCH, type DataLabelPosition, DataOrPathProps, DataOrPathRequiredProps, type Diagnostic, type DiagnosticCode, type DiagnosticHandler, type DisplayBlanksAs, EMU_PER_INCH, EMU_PER_POINT, Emu, type ErrorCode, FIXED_PCT_PER_PERCENT, FillOption, FlatSide, GeometryPoint, GradientFillProps, GradientStopProps, GroupChildProps, GroupProps, HAlign, HUNDREDTHS_PER_POINT, HalfDiscPreset, HexColor, HyperlinkActionJump, HyperlinkBaseProps, HyperlinkProps, ImageBaseProps, ImageFillProps, ImageProps, InternalError, type InternalErrorCode, InvalidOptionError, type InvalidOptionErrorCode, type LegendPosition, type LightRigDirection, type LightRigType, LineCap, type LineDataSymbol, LinearGradientFillProps, MAX_COORDINATE_EMU, MIN_COORDINATE_EMU, Margin, MasterBulletProps, MasterTextStyleLevel, MasterTextStyleProps, MeasureTextOptions, MediaError, type MediaErrorCode, MediaProps, MediaType, Model3dCameraProps, Model3dPoint, Model3dProps, NotesProps, NotesTextOptions, ObjectLockProps, ObjectNameProps, ObjectOptions, OleObjectProps, OptsChartData, OptsChartGridLine, OutputType, OverflowBoxOptions, PERCENT_SCALE, PLACEHOLDER_TYPE, POINTS_PER_INCH, PackagePart, PackageReadError, type PackageReadErrorCode, PartsProps, PatternFillProps, PatternPreset, PlaceholderBinding, PlaceholderOption, PlaceholderPositionProps, PlaceholderProps, PlaceholderType, PositionProps, PptxTs as default, type PptxTsCode, PptxTsError, type PptxTsErrorOptions, PresLayout, PresentationProps, PresetEffect, type PresetMaterialType, type RadarStyle, type RadarStyleAlias, RadialGradientFillProps, ResolvedCommentAuthor, SCHEME_COLORS, SHAPE_NAME, STANDARD_LAYOUTS, SchemeColor, SectionProps, SectionZoomProps, ShadowProps, ShapeAdjustHandle, ShapeAdjustHandlePolar, ShapeAdjustHandleXY, ShapeAdjustValue, ShapeConnectionSite, ShapeFillProps, ShapeGuide, ShapeLineProps, ShapeProps, ShapeType, Slide, SlideComment, SlideHyperlinkProps, SlideLayout, SlideMasterChartProps, SlideMasterObject, SlideMasterProps, SlideNumberProps, SlideObjectInfo, SlideObjectType, SlideZoomProps, StandardLayout, StandardLayoutName, StrokeProps, SummaryZoomProps, TableCell, TableCell3DProps, TableCellDiagonals, TableCellLayout, TableCellProps, TableLayoutResult, TableProps, TableRow, TableRowSlide, TableStyle, TableToSlidesDocument, TableToSlidesElement, TableToSlidesProps, TextAnchor, TextBaseProps, TextBulletProps, TextFitShrinkProps, TextGlowProps, TextMeasurement, TextProps, TextPropsOptions, TextVertType, ThemeColor, ThemeColorScheme, ThemeProps, type TimeUnit, TransitionProps, TransitionSoundProps, TransitionType, TsPptxCode, TsPptxError, TsPptxErrorOptions, UnsupportedFeatureError, type UnsupportedFeatureErrorCode, UrlHyperlinkProps, VALID_SHAPE_PRESETS, VAlign, WRITE_OUTPUT_TYPE, WriteBaseProps, WriteFileProps, WriteOutputMap, WriteProps, ZIP_OUTPUT_TYPE, ZoomBaseProps, asChartType, clipPath, connectorPresetFor, coordToEmu, emuToInches, emuToPixels, emuToPoints, inchesToEmu, isChartExType, isChartType, percentToEmu, pixelsToEmu, pointsToEmu, ptToHundredths, resetDiagnosticState, setDiagnosticHandler, textRun, textRuns };
34
42
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","names":[],"sources":["../src/node.ts"],"mappings":";;;;;;;;;;;;;;;qBAoBa,eAAe;EAC3B;;;;;;;;;;;;;;wBAiBe,yBAAyB,oBAAoB,wBAC5D,OAAO,eAAe,MACpB,SAAS"}
1
+ {"version":3,"file":"node.d.ts","names":[],"sources":["../src/node.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;qBAoBa,eAAe;EAC3B;;;;;;;;;;;;;;wBAiBe,yBAAyB,oBAAoB,wBAC5D,OAAO,eAAe,MACpB,SAAS;;qBAOC,eAAM;;YAEP,SAAS"}
package/dist/node.js CHANGED
@@ -1,9 +1,9 @@
1
- import { a as TsPptxError, c as setDiagnosticHandler, i as PackageReadError, n as InvalidOptionError, o as UnsupportedFeatureError, r as MediaError, s as resetDiagnosticState, t as InternalError } from "./errors-C4oENPcu.js";
2
- import { A as inchesToEmu, C as MIN_COORDINATE_EMU, D as emuToInches, E as coordToEmu, F as EMU_PER_INCH, I as EMU_PER_POINT, L as POINTS_PER_INCH, M as pixelsToEmu, N as pointsToEmu, O as emuToPixels, P as ptToHundredths, S as MAX_COORDINATE_EMU, T as STANDARD_LAYOUTS, _ as isChartType, a as ChartType, b as FIXED_PCT_PER_PERCENT, c as SchemeColor, d as TableStyle, f as TextAnchor, g as isChartExType, h as connectorPresetFor, i as BulletType, j as percentToEmu, k as emuToPoints, l as ShapeType, m as asChartType, n as AlignH, o as OutputType, p as VALID_SHAPE_PRESETS, r as AlignV, s as PlaceholderType, u as SlideObjectType, v as ANGLE_UNITS_PER_DEGREE, w as PERCENT_SCALE, x as HUNDREDTHS_PER_POINT, y as DEFAULT_PX_PER_INCH } from "./table-cell-margins-EVg0EwxT.js";
3
- import { a as fetchMediaBase64, c as ALL_CONSTRUCT_FAMILIES, i as fetchFontBytes, l as composePresentation, n as textRuns, o as isRemote, r as clipPath, s as placeholderSvgPreview, t as textRun, u as PresentationCore } from "./text-sN64Otf_.js";
1
+ import { a as fetchMediaBase64, c as ALL_CONSTRUCT_FAMILIES, i as fetchFontBytes, l as composePresentation, n as textRuns, o as isRemote, r as clipPath, s as placeholderSvgPreview, t as textRun, u as PresentationCore } from "./text-CU08xJGs.js";
2
+ import { A as inchesToEmu, C as MIN_COORDINATE_EMU, D as emuToInches, E as coordToEmu, F as EMU_PER_INCH, I as EMU_PER_POINT, L as POINTS_PER_INCH, M as pixelsToEmu, N as pointsToEmu, O as emuToPixels, P as ptToHundredths, S as MAX_COORDINATE_EMU, T as STANDARD_LAYOUTS, a as OutputType, b as FIXED_PCT_PER_PERCENT, c as ShapeType, d as TextAnchor, f as VALID_SHAPE_PRESETS, g as isChartType, h as isChartExType, i as ChartType, j as percentToEmu, k as emuToPoints, l as SlideObjectType, m as connectorPresetFor, n as AlignV, o as PlaceholderType, p as asChartType, r as BulletType, s as SchemeColor, t as AlignH, u as TableStyle, v as ANGLE_UNITS_PER_DEGREE, w as PERCENT_SCALE, x as HUNDREDTHS_PER_POINT, y as DEFAULT_PX_PER_INCH } from "./enums-BP9wsb9Q.js";
3
+ import { a as PackageReadError, c as resetDiagnosticState, i as MediaError, l as setDiagnosticHandler, n as InternalError, o as PptxTsError, r as InvalidOptionError, s as UnsupportedFeatureError, t as TsPptxError } from "./entry-errors-JMthgJ2g.js";
4
4
  import { Buffer } from "node:buffer";
5
5
  import fs from "node:fs/promises";
6
- //#region src/runtime/node.ts
6
+ // src/runtime/node.ts
7
7
  function createNodeRuntime() {
8
8
  return {
9
9
  writeFileOutputType: "nodebuffer",
@@ -33,8 +33,7 @@ async function writeFile(fileName, data) {
33
33
  await fs.writeFile(fileName, data);
34
34
  return fileName;
35
35
  }
36
- //#endregion
37
- //#region src/node.ts
36
+ // src/node.ts
38
37
  /**
39
38
  * The Node authoring entry, which the bare `pptx-ts` specifier resolves to under the `node`
40
39
  * export condition.
@@ -42,14 +41,14 @@ async function writeFile(fileName, data) {
42
41
  * @module
43
42
  */
44
43
  /**
45
- * The Node entry, reached through the `node` export condition — a consumer importing the bare
44
+ * The Node entry, reached through the `node` export condition. A consumer importing the bare
46
45
  * `pptx-ts` specifier under Node lands here without naming this subpath.
47
46
  *
48
47
  * Same authoring API as every other entry (see `entry-surface.ts`); the runtime adapter is what
49
48
  * differs. This one can reach the filesystem, so `writeFile` writes a real file and media may be
50
- * loaded from a path — both of which throw on the runtime-agnostic entry.
49
+ * loaded from a path, both of which throw on the runtime-agnostic entry.
51
50
  */
52
- var TsPptx = class extends PresentationCore {
51
+ var PptxTs = class extends PresentationCore {
53
52
  constructor() {
54
53
  super(createNodeRuntime(), ALL_CONSTRUCT_FAMILIES);
55
54
  }
@@ -57,7 +56,7 @@ var TsPptx = class extends PresentationCore {
57
56
  /**
58
57
  * Compose a presentation from the construct families it needs, on the Node adapter.
59
58
  *
60
- * The counterpart to {@link TsPptx}, which is composed with every family there is. This one costs
59
+ * The counterpart to {@link PptxTs}, which is composed with every family there is. This one costs
61
60
  * what it carries: the core tier (text, shapes, images, groups, speaker notes) plus whatever
62
61
  * `use` names, and nothing else reaches the bundle.
63
62
  * @param {ComposeOptions} opts - the families to compose in, from `pptx-ts/families`
@@ -69,7 +68,8 @@ var TsPptx = class extends PresentationCore {
69
68
  function createPresentation(opts) {
70
69
  return composePresentation(createNodeRuntime(), opts);
71
70
  }
72
- //#endregion
73
- export { ANGLE_UNITS_PER_DEGREE, AlignH, AlignV, BulletType, ChartType, DEFAULT_PX_PER_INCH, EMU_PER_INCH, EMU_PER_POINT, FIXED_PCT_PER_PERCENT, HUNDREDTHS_PER_POINT, InternalError, InvalidOptionError, MAX_COORDINATE_EMU, MIN_COORDINATE_EMU, MediaError, OutputType, PERCENT_SCALE, POINTS_PER_INCH, PackageReadError, PlaceholderType, STANDARD_LAYOUTS, SchemeColor, ShapeType, SlideObjectType, TableStyle, TextAnchor, TsPptx, TsPptx as default, TsPptxError, UnsupportedFeatureError, VALID_SHAPE_PRESETS, asChartType, clipPath, connectorPresetFor, coordToEmu, createPresentation, emuToInches, emuToPixels, emuToPoints, inchesToEmu, isChartExType, isChartType, percentToEmu, pixelsToEmu, pointsToEmu, ptToHundredths, resetDiagnosticState, setDiagnosticHandler, textRun, textRuns };
71
+ /** @deprecated Renamed to {@link PptxTs}. This alias is removed in v5. */
72
+ const TsPptx = PptxTs;
73
+ export { ANGLE_UNITS_PER_DEGREE, AlignH, AlignV, BulletType, ChartType, DEFAULT_PX_PER_INCH, EMU_PER_INCH, EMU_PER_POINT, FIXED_PCT_PER_PERCENT, HUNDREDTHS_PER_POINT, InternalError, InvalidOptionError, MAX_COORDINATE_EMU, MIN_COORDINATE_EMU, MediaError, OutputType, PERCENT_SCALE, POINTS_PER_INCH, PackageReadError, PlaceholderType, PptxTs, PptxTs as default, PptxTsError, STANDARD_LAYOUTS, SchemeColor, ShapeType, SlideObjectType, TableStyle, TextAnchor, TsPptx, TsPptxError, UnsupportedFeatureError, VALID_SHAPE_PRESETS, asChartType, clipPath, connectorPresetFor, coordToEmu, createPresentation, emuToInches, emuToPixels, emuToPoints, inchesToEmu, isChartExType, isChartType, percentToEmu, pixelsToEmu, pointsToEmu, ptToHundredths, resetDiagnosticState, setDiagnosticHandler, textRun, textRuns };
74
74
 
75
75
  //# sourceMappingURL=node.js.map
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","names":[],"sources":["../src/runtime/node.ts","../src/node.ts"],"sourcesContent":["import { Buffer } from 'node:buffer'\nimport fs from 'node:fs/promises'\nimport { MediaError } from '../errors.js'\nimport type { SlideRelMedia } from '../types/internal.js'\nimport type { RuntimeAdapter } from './types.js'\nimport { fetchFontBytes, fetchMediaBase64, isRemote, placeholderSvgPreview } from './fetch-media.js'\n\nexport function createNodeRuntime(): RuntimeAdapter {\n\treturn {\n\t\twriteFileOutputType: 'nodebuffer',\n\t\tloadMedia,\n\t\tcreateSvgPngPreview: placeholderSvgPreview,\n\t\twriteFile,\n\t\tloadFontData,\n\t}\n}\n\nasync function loadFontData(source: string): Promise<Uint8Array> {\n\tif (isRemote(source)) return await fetchFontBytes(source)\n\ttry {\n\t\treturn new Uint8Array(await fs.readFile(source))\n\t} catch (ex) {\n\t\tthrow new MediaError('font/read-failed', `Unable to read font file: \"${source}\"\\n${String(ex)}`, {\n\t\t\tcause: ex,\n\t\t})\n\t}\n}\n\nasync function loadMedia(rel: SlideRelMedia & { path: string }): Promise<string> {\n\tif (isRemote(rel.path)) return await fetchMediaBase64(rel.path)\n\n\ttry {\n\t\treturn Buffer.from(await fs.readFile(rel.path)).toString('base64')\n\t} catch (ex) {\n\t\tthrow new MediaError('media/read-failed', `Unable to read media: \"${rel.path}\"\\n${String(ex)}`, {\n\t\t\tcause: ex,\n\t\t})\n\t}\n}\n\nasync function writeFile(fileName: string, data: string | ArrayBuffer | Blob | Uint8Array): Promise<string> {\n\tawait fs.writeFile(fileName, data as string | Uint8Array)\n\treturn fileName\n}\n","/**\n * The Node authoring entry, which the bare `pptx-ts` specifier resolves to under the `node`\n * export condition.\n *\n * @module\n */\nimport PresentationCore from './presentation.js'\nimport { composePresentation, type ComposeOptions, type Composed } from './entry-compose.js'\nimport type { ConstructFamily } from './families/shared.js'\nimport { ALL_CONSTRUCT_FAMILIES } from './entry-families.js'\nimport { createNodeRuntime } from './runtime/node.js'\n\n/**\n * The Node entry, reached through the `node` export condition — a consumer importing the bare\n * `pptx-ts` specifier under Node lands here without naming this subpath.\n *\n * Same authoring API as every other entry (see `entry-surface.ts`); the runtime adapter is what\n * differs. This one can reach the filesystem, so `writeFile` writes a real file and media may be\n * loaded from a path — both of which throw on the runtime-agnostic entry.\n */\nexport class TsPptx extends PresentationCore {\n\tconstructor() {\n\t\tsuper(createNodeRuntime(), ALL_CONSTRUCT_FAMILIES)\n\t}\n}\n\n/**\n * Compose a presentation from the construct families it needs, on the Node adapter.\n *\n * The counterpart to {@link TsPptx}, which is composed with every family there is. This one costs\n * what it carries: the core tier (text, shapes, images, groups, speaker notes) plus whatever\n * `use` names, and nothing else reaches the bundle.\n * @param {ComposeOptions} opts - the families to compose in, from `pptx-ts/families`\n * @example\n * import { createPresentation } from 'pptx-ts/node'\n * import { charts } from 'pptx-ts/families'\n * const pres = createPresentation({ use: [charts] })\n */\nexport function createPresentation<const Fs extends readonly ConstructFamily[] = []>(\n\topts?: ComposeOptions<Fs>\n): Composed<Fs> {\n\treturn composePresentation(createNodeRuntime(), opts)\n}\n\nexport { TsPptx as default }\nexport * from './entry-surface.js'\n"],"mappings":";;;;;;AAOA,SAAgB,oBAAoC;CACnD,OAAO;EACN,qBAAqB;EACrB;EACA,qBAAqB;EACrB;EACA;CACD;AACD;AAEA,eAAe,aAAa,QAAqC;CAChE,IAAI,SAAS,MAAM,GAAG,OAAO,MAAM,eAAe,MAAM;CACxD,IAAI;EACH,OAAO,IAAI,WAAW,MAAM,GAAG,SAAS,MAAM,CAAC;CAChD,SAAS,IAAI;EACZ,MAAM,IAAI,WAAW,oBAAoB,8BAA8B,OAAO,KAAK,OAAO,EAAE,KAAK,EAChG,OAAO,GACR,CAAC;CACF;AACD;AAEA,eAAe,UAAU,KAAwD;CAChF,IAAI,SAAS,IAAI,IAAI,GAAG,OAAO,MAAM,iBAAiB,IAAI,IAAI;CAE9D,IAAI;EACH,OAAO,OAAO,KAAK,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,QAAQ;CAClE,SAAS,IAAI;EACZ,MAAM,IAAI,WAAW,qBAAqB,0BAA0B,IAAI,KAAK,KAAK,OAAO,EAAE,KAAK,EAC/F,OAAO,GACR,CAAC;CACF;AACD;AAEA,eAAe,UAAU,UAAkB,MAAiE;CAC3G,MAAM,GAAG,UAAU,UAAU,IAA2B;CACxD,OAAO;AACR;;;;;;;;;;;;;;;;;ACvBA,IAAa,SAAb,cAA4B,iBAAiB;CAC5C,cAAc;EACb,MAAM,kBAAkB,GAAG,sBAAsB;CAClD;AACD;;;;;;;;;;;;;AAcA,SAAgB,mBACf,MACe;CACf,OAAO,oBAAoB,kBAAkB,GAAG,IAAI;AACrD"}
1
+ {"version":3,"file":"node.js","names":[],"sources":["../src/runtime/node.ts","../src/node.ts"],"sourcesContent":["import { Buffer } from 'node:buffer'\nimport fs from 'node:fs/promises'\nimport { MediaError } from '../errors.js'\nimport type { SlideRelMedia } from '../types/internal.js'\nimport type { RuntimeAdapter } from './types.js'\nimport { fetchFontBytes, fetchMediaBase64, isRemote, placeholderSvgPreview } from './fetch-media.js'\n\nexport function createNodeRuntime(): RuntimeAdapter {\n\treturn {\n\t\twriteFileOutputType: 'nodebuffer',\n\t\tloadMedia,\n\t\tcreateSvgPngPreview: placeholderSvgPreview,\n\t\twriteFile,\n\t\tloadFontData,\n\t}\n}\n\nasync function loadFontData(source: string): Promise<Uint8Array> {\n\tif (isRemote(source)) return await fetchFontBytes(source)\n\ttry {\n\t\treturn new Uint8Array(await fs.readFile(source))\n\t} catch (ex) {\n\t\tthrow new MediaError('font/read-failed', `Unable to read font file: \"${source}\"\\n${String(ex)}`, {\n\t\t\tcause: ex,\n\t\t})\n\t}\n}\n\nasync function loadMedia(rel: SlideRelMedia & { path: string }): Promise<string> {\n\tif (isRemote(rel.path)) return await fetchMediaBase64(rel.path)\n\n\ttry {\n\t\treturn Buffer.from(await fs.readFile(rel.path)).toString('base64')\n\t} catch (ex) {\n\t\tthrow new MediaError('media/read-failed', `Unable to read media: \"${rel.path}\"\\n${String(ex)}`, {\n\t\t\tcause: ex,\n\t\t})\n\t}\n}\n\nasync function writeFile(fileName: string, data: string | ArrayBuffer | Blob | Uint8Array): Promise<string> {\n\tawait fs.writeFile(fileName, data as string | Uint8Array)\n\treturn fileName\n}\n","/**\n * The Node authoring entry, which the bare `pptx-ts` specifier resolves to under the `node`\n * export condition.\n *\n * @module\n */\nimport PresentationCore from './presentation.js'\nimport { composePresentation, type ComposeOptions, type Composed } from './entry-compose.js'\nimport type { ConstructFamily } from './families/shared.js'\nimport { ALL_CONSTRUCT_FAMILIES } from './entry-families.js'\nimport { createNodeRuntime } from './runtime/node.js'\n\n/**\n * The Node entry, reached through the `node` export condition. A consumer importing the bare\n * `pptx-ts` specifier under Node lands here without naming this subpath.\n *\n * Same authoring API as every other entry (see `entry-surface.ts`); the runtime adapter is what\n * differs. This one can reach the filesystem, so `writeFile` writes a real file and media may be\n * loaded from a path, both of which throw on the runtime-agnostic entry.\n */\nexport class PptxTs extends PresentationCore {\n\tconstructor() {\n\t\tsuper(createNodeRuntime(), ALL_CONSTRUCT_FAMILIES)\n\t}\n}\n\n/**\n * Compose a presentation from the construct families it needs, on the Node adapter.\n *\n * The counterpart to {@link PptxTs}, which is composed with every family there is. This one costs\n * what it carries: the core tier (text, shapes, images, groups, speaker notes) plus whatever\n * `use` names, and nothing else reaches the bundle.\n * @param {ComposeOptions} opts - the families to compose in, from `pptx-ts/families`\n * @example\n * import { createPresentation } from 'pptx-ts/node'\n * import { charts } from 'pptx-ts/families'\n * const pres = createPresentation({ use: [charts] })\n */\nexport function createPresentation<const Fs extends readonly ConstructFamily[] = []>(\n\topts?: ComposeOptions<Fs>\n): Composed<Fs> {\n\treturn composePresentation(createNodeRuntime(), opts)\n}\n\nexport { PptxTs as default }\n\n/** @deprecated Renamed to {@link PptxTs}. This alias is removed in v5. */\nexport const TsPptx = PptxTs\n/** @deprecated Renamed to {@link PptxTs}. This alias is removed in v5. */\nexport type TsPptx = PptxTs\n\nexport * from './entry-surface.js'\n"],"mappings":";;;;;;AAOA,SAAgB,oBAAoC;CACnD,OAAO;EACN,qBAAqB;EACrB;EACA,qBAAqB;EACrB;EACA;CACD;AACD;AAEA,eAAe,aAAa,QAAqC;CAChE,IAAI,SAAS,MAAM,GAAG,OAAO,MAAM,eAAe,MAAM;CACxD,IAAI;EACH,OAAO,IAAI,WAAW,MAAM,GAAG,SAAS,MAAM,CAAC;CAChD,SAAS,IAAI;EACZ,MAAM,IAAI,WAAW,oBAAoB,8BAA8B,OAAO,KAAK,OAAO,EAAE,KAAK,EAChG,OAAO,GACR,CAAC;CACF;AACD;AAEA,eAAe,UAAU,KAAwD;CAChF,IAAI,SAAS,IAAI,IAAI,GAAG,OAAO,MAAM,iBAAiB,IAAI,IAAI;CAE9D,IAAI;EACH,OAAO,OAAO,KAAK,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,QAAQ;CAClE,SAAS,IAAI;EACZ,MAAM,IAAI,WAAW,qBAAqB,0BAA0B,IAAI,KAAK,KAAK,OAAO,EAAE,KAAK,EAC/F,OAAO,GACR,CAAC;CACF;AACD;AAEA,eAAe,UAAU,UAAkB,MAAiE;CAC3G,MAAM,GAAG,UAAU,UAAU,IAA2B;CACxD,OAAO;AACR;;;;;;;;;;;;;;;;ACvBA,IAAa,SAAb,cAA4B,iBAAiB;CAC5C,cAAc;EACb,MAAM,kBAAkB,GAAG,sBAAsB;CAClD;AACD;;;;;;;;;;;;;AAcA,SAAgB,mBACf,MACe;CACf,OAAO,oBAAoB,kBAAkB,GAAG,IAAI;AACrD;;AAKA,MAAa,SAAS"}
@@ -1,9 +1,9 @@
1
- //#region src/options-internal.ts
1
+ // src/options-internal.ts
2
2
  /**
3
3
  * Write a normalized value onto an option bag, spelling "no value" as an *absent* key.
4
4
  *
5
- * Reach for this wherever a normalizer's result may be nothing —
6
- * `setOrClear(opts, 'holeSize', clampChartPct(opts.holeSize, 10, 90, 'holeSize'))` — rather than
5
+ * Reach for this wherever a normalizer's result may be nothing, as in
6
+ * `setOrClear(opts, 'holeSize', clampChartPct(opts.holeSize, 10, 90, 'holeSize'))`, rather than
7
7
  * assigning the result directly, which leaves the caller's rejected value replaced by an
8
8
  * `undefined` instead of removed.
9
9
  *
@@ -37,7 +37,6 @@ function pickDefined(source, keys) {
37
37
  }
38
38
  return out;
39
39
  }
40
- //#endregion
41
40
  export { setOrClear as n, pickDefined as t };
42
41
 
43
- //# sourceMappingURL=options-internal-WqgMf720.js.map
42
+ //# sourceMappingURL=options-internal-BWgmLPdx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options-internal-BWgmLPdx.js","names":[],"sources":["../src/options-internal.ts"],"sourcesContent":["/**\n * pptx-ts: option-bag normalization helpers for one spelling of absent.\n *\n * `exactOptionalPropertyTypes` draws a line this library needs drawn: a `foo?: T` declaration says\n * the key is either *missing* or holds a `T`, and a key present with an `undefined` in it is a\n * third state. Readers here cannot see that state (every option is read with truthiness or\n * `?.`), but spreads can, and the generator spreads these bags constantly: a layout placeholder's\n * options onto a slide's, a column default under a cell's own, a combo subchart's overrides onto\n * the chart's. There the side that wins is decided by whether the key *exists*, not by what it\n * holds, so \"the caller said nothing\" and \"the caller said nothing, in writing\" produce different\n * output.\n *\n * These two helpers are how a normalizer stays on the right side of that. They are the write-side\n * twin of `compact()` (`script/from-read/values.ts`), which keeps the same invariant on the read\n * side and for the same reason.\n *\n * Internal: nothing here is exported from an entrypoint, the same way `constants-internal.ts` and\n * `units-internal.ts` are not.\n */\n\nimport type { OptionalKeysOf } from './types/internal.js'\n\n/**\n * Write a normalized value onto an option bag, spelling \"no value\" as an *absent* key.\n *\n * Reach for this wherever a normalizer's result may be nothing, as in\n * `setOrClear(opts, 'holeSize', clampChartPct(opts.holeSize, 10, 90, 'holeSize'))`, rather than\n * assigning the result directly, which leaves the caller's rejected value replaced by an\n * `undefined` instead of removed.\n *\n * Only optional keys are accepted, so this cannot be used to unset something required.\n * @param bag - the options bag to write onto\n * @param key - the key to set or remove\n * @param value - the normalized value, or `undefined` to remove the key\n */\nexport function setOrClear<T extends object, K extends OptionalKeysOf<T> & keyof T>(bag: T, key: K, value: T[K]): void {\n\tif (value === undefined) delete bag[key]\n\telse bag[key] = value\n}\n\n/**\n * The named properties of `source` that are actually set, as a new object.\n *\n * For the other shape this problem takes: a literal that projects a fixed key list off a bag that\n * may not state them all (`{ x: opts.x, y: opts.y, rotate: opts.rotate, … }`), which writes a key\n * for every name whether or not the source had one. Naming the keys once is also shorter than\n * spelling out the copy, and it cannot drift from itself the way a hand-written list can.\n *\n * Every key comes back optional and with `undefined` excluded from its type, which is the whole\n * claim: what this returns is the subset that was actually stated.\n * @param source - the bag to read from\n * @param keys - the keys to carry over\n */\nexport function pickDefined<T extends object, K extends keyof T>(\n\tsource: T,\n\tkeys: readonly K[]\n): { [P in K]?: Exclude<T[P], undefined> } {\n\tconst out: { [P in K]?: Exclude<T[P], undefined> } = {}\n\tfor (const key of keys) {\n\t\tconst value = source[key]\n\t\tif (value !== undefined) out[key] = value as Exclude<T[K], undefined>\n\t}\n\treturn out\n}\n"],"mappings":";;;;;;;;;;;;;;AAmCA,SAAgB,WAAoE,KAAQ,KAAQ,OAAmB;CACtH,IAAI,UAAU,KAAA,GAAW,OAAO,IAAI;MAC/B,IAAI,OAAO;AACjB;;;;;;;;;;;;;;AAeA,SAAgB,YACf,QACA,MAC0C;CAC1C,MAAM,MAA+C,CAAC;CACtD,KAAK,MAAM,OAAO,MAAM;EACvB,MAAM,QAAQ,OAAO;EACrB,IAAI,UAAU,KAAA,GAAW,IAAI,OAAO;CACrC;CACA,OAAO;AACR"}
@@ -1,5 +1,4 @@
1
1
  import { Document, Element } from "@xmldom/xmldom";
2
- //#region src/read/opc/content-types.d.ts
3
2
  /**
4
3
  * Overlay over `[Content_Types].xml`, used to resolve part content types at
5
4
  * load and to register new ones when parts are added. While clean, the original
@@ -22,7 +21,7 @@ declare class ContentTypes {
22
21
  ensureRegistered(partName: string, contentType: string): void;
23
22
  /**
24
23
  * Drop the `Override` for `partName` if present (e.g. when a part is removed).
25
- * `Default` rules by extension are left untouched — they may still serve other
24
+ * `Default` rules by extension are left untouched; they may still serve other
26
25
  * parts. Marks the overlay dirty when something was removed.
27
26
  */
28
27
  removeOverride(partName: string): void;
@@ -30,8 +29,6 @@ declare class ContentTypes {
30
29
  ensureDefault(extension: string, contentType: string): void;
31
30
  serialize(): string;
32
31
  }
33
- //#endregion
34
- //#region src/read/opc/part.d.ts
35
32
  /**
36
33
  * One OPC part. Holds the original bytes from the zip for its whole life;
37
34
  * parses to a DOM only on demand; serializes back to the original bytes
@@ -73,8 +70,6 @@ declare class Part {
73
70
  */
74
71
  serialize(): Uint8Array;
75
72
  }
76
- //#endregion
77
- //#region src/read/opc/relationships.d.ts
78
73
  interface Relationship {
79
74
  id: string;
80
75
  type: string;
@@ -130,8 +125,6 @@ declare class Relationships {
130
125
  resolveTarget(id: string): string;
131
126
  serialize(): string;
132
127
  }
133
- //#endregion
134
- //#region src/read/opc/package.d.ts
135
128
  /**
136
129
  * Input to {@link OpcPackage.load}. A `string` is a **filesystem path** (Node)
137
130
  * read from disk; pass `Uint8Array`/`ArrayBuffer`/`Blob`/`number[]` for an
@@ -143,7 +136,7 @@ type OpcInput = string | number[] | Uint8Array | ArrayBuffer | Blob;
143
136
  *
144
137
  * Fidelity contract: parts that are never mutated (`Part.markDirty()`) are
145
138
  * written back byte-identically by `save()`. Whole-zip byte-identity is not
146
- * promised — zip metadata and compression may differ — but part bodies, the
139
+ * promised (zip metadata and compression may differ), but part bodies, the
147
140
  * part-name set, and part order are preserved.
148
141
  */
149
142
  declare class OpcPackage {
@@ -154,7 +147,11 @@ declare class OpcPackage {
154
147
  /** All parts, keyed by partname, in zip/add order. */
155
148
  get parts(): ReadonlyMap<string, Part>;
156
149
  static load(input: OpcInput): Promise<OpcPackage>;
157
- part(partName: string): Part | undefined;
150
+ /**
151
+ * The part at `partName`, or `undefined`. Takes `null`, as a part-name getter such as
152
+ * `Picture.imagePartName` reads when there is no part to name, and misses on it.
153
+ */
154
+ part(partName: string | null): Part | undefined;
158
155
  partsByContentType(contentType: string): Part[];
159
156
  /**
160
157
  * Relationships owned by a part ('/' for the package-level
@@ -172,7 +169,7 @@ declare class OpcPackage {
172
169
  * later `save()` neither re-emits it nor flushes a stale `.rels` for it. A relationship set
173
170
  * belongs to its part: one left behind would come back as the relationships of the next part
174
171
  * added under the same name. Low-level: it does not touch references *to* this part
175
- * (dangling rels are the caller's concern) nor cascade to parts this one referenced — see
172
+ * (dangling rels are the caller's concern) nor cascade to parts this one referenced; see
176
173
  * {@link Presentation.removeSlide} for the slide-aware variant that unwires the presentation
177
174
  * and prunes orphans.
178
175
  */
@@ -203,6 +200,5 @@ declare class OpcPackage {
203
200
  */
204
201
  save(): Promise<Uint8Array>;
205
202
  }
206
- //#endregion
207
203
  export { Part as a, Relationships as i, OpcPackage as n, Element as o, Relationship as r, ContentTypes as s, OpcInput as t };
208
- //# sourceMappingURL=package-J49Ck6S2.d.ts.map
204
+ //# sourceMappingURL=package-CANBWuSm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-CANBWuSm.d.ts","names":[],"sources":["../src/read/opc/content-types.ts","../src/read/opc/part.ts","../src/read/opc/relationships.ts","../src/read/opc/package.ts"],"mappings":";;;;;;;cAaa;;SAKL,MAAM,cAAc;;EAgC3B,eAAe;;MAKX;;;;;;;EAUJ,iBAAiB,kBAAkB;;;;;;EAWnC,eAAe;;EAKf,cAAc,mBAAmB;EAOjC;;;;;;;;;cCxEY;;WACH;WACA;EAKT,YAAY,kBAAkB,qBAAqB,OAAO;;MAOtD;;MAOA;;;;;;;;;;MAaA,iBAAiB;;;;;MAQjB,OAAO;;EAWX;MASI;;;;;;EASJ,aAAa;;UChFG;EAChB;EACA;EACA;EACA;;;;;;;;cASY;;;WAEH;UAIF;;;;;SAQA,MAAM,aAAa,yBAAyB;;SAuC5C,MAAM,yBAAyB;MAIlC;;MAKA;;;;;;;EAUJ,IAAI,cAAc,gBAAgB,uCAAuC;;;;;;;;EAgBzE,UAAU,YAAY,cAAc,gBAAgB,uCAAuC;;;;;;EA8B3F,OAAO;EASP,IAAI,aAAa;EAIjB,OAAO,eAAe;GAIrB,OAAO,aAAa,iBAAiB;;EAiBtC,cAAc;EAoBd;;;;;;;KCnLW,+BAA+B,aAAa,cAAc;;;;;;;;;cAezD;;;WAIH,cAAc;UAchB;;MAOH,SAAS,oBAAoB;SAIpB,KAAK,OAAO,WAAW,QAAQ;;;;;EAgC5C,KAAK,0BAA0B;EAI/B,mBAAmB,sBAAsB;;;;;EAoBzC,iBAAiB,0BAAuB;;;;;EAexC,QAAQ,kBAAkB,qBAAqB,OAAO,aAAa;;;;;;;;;;;EAuBnE,WAAW;;;;;EAgBX,qBAAqB,mBAAmB;;;;;;;;;;;;;;EAqBxC,oBAAoB,0BAA0B,QAAQ;;;;;;EAiChD,QAAQ,QAAQ"}
@@ -1,4 +1,4 @@
1
- //#region src/media/playbtn.ts
1
+ // src/media/playbtn.ts
2
2
  /**
3
3
  * The default poster frame for an embedded video: PowerPoint's play-button overlay.
4
4
  *
@@ -9,14 +9,13 @@
9
9
  * dynamic import instead, and leave it out of the entry chunk.
10
10
  *
11
11
  * It is resolved during the async media pass, for a deck that actually carries media and only
12
- * where the caller supplied no `cover` of their own — see `SlideRelMedia.isDefaultCover`.
12
+ * where the caller supplied no `cover` of their own (see `SlideRelMedia.isDefaultCover`).
13
13
  *
14
- * **Generated — do not hand-edit.** `scripts/gen-playbtn.mjs` draws it from measured geometry and
14
+ * **Generated: do not hand-edit.** `scripts/gen-playbtn.mjs` draws it from measured geometry and
15
15
  * writes this file; that script's header is where the design and its two deliberate departures
16
16
  * from the original artwork are written down. `pnpm run media:playbtn` rewrites it.
17
17
  */
18
18
  const IMG_PLAYBTN = "data:image/png;base64,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5OTk1HVDcU43fo2Q+8EHH3xkRRcABGAAKLi4q/iaa675PAzPnTu3ZdasWScNx3V1dRc0NTVNBeqxsbGhycnJkwbV9957b+To0aOf36n78ssvj7hjFwAEYAAAAPijzlUCAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAgET+L42bXdU+VqmBAAAAAElFTkSuQmCC";
19
- //#endregion
20
19
  export { IMG_PLAYBTN };
21
20
 
22
- //# sourceMappingURL=playbtn-CUqQdoDf.js.map
21
+ //# sourceMappingURL=playbtn-BQZFJir9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbtn-BQZFJir9.js","names":[],"sources":["../src/media/playbtn.ts"],"sourcesContent":["/**\n * The default poster frame for an embedded video: PowerPoint's play-button overlay.\n *\n * Alone in a module because of its size. 19,312 base64 characters is about 14 kB of PNG, and\n * base64 of an already-compressed image barely deflates, so it is still the largest thing the\n * write path can reach. The chunker splits by module, so every chunk reaching this module is\n * charged the whole payload; keeping it alone is what lets `gen/media.ts` reach it through a\n * dynamic import instead, and leave it out of the entry chunk.\n *\n * It is resolved during the async media pass, for a deck that actually carries media and only\n * where the caller supplied no `cover` of their own (see `SlideRelMedia.isDefaultCover`).\n *\n * **Generated: do not hand-edit.** `scripts/gen-playbtn.mjs` draws it from measured geometry and\n * writes this file; that script's header is where the design and its two deliberate departures\n * from the original artwork are written down. `pnpm run media:playbtn` rewrites it.\n */\nexport const IMG_PLAYBTN =\n\t'data:image/png;base64,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5OTk1HVDcU43fo2Q+8EHH3xkRRcABGAAKLi4q/iaa675PAzPnTu3ZdasWScNx3V1dRc0NTVNBeqxsbGhycnJkwbV9957b+To0aOf36n78ssvj7hjFwAEYAAAAPijzlUCAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAAAAARgAAAAEYAAAABCAAQAAQAAGAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAAABGAAAAARgAAAAEIABAABAAAYAAEAABgAAAAEYAAAABGAAAAAQgAEAAEAABgAAgET+L42bXdU+VqmBAAAAAElFTkSuQmCC'\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,MAAa,cACZ"}