deckjsx 0.8.1 → 0.8.2

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.
package/README.md CHANGED
@@ -237,6 +237,11 @@ styles. Class conflicts are resolved by selector specificity first, then stylesh
237
237
  rule order. Supported selectors are intentionally small: class selectors, tag/class compounds, and
238
238
  descendant selectors such as `.title`, `p.title`, or `.card .caption`.
239
239
 
240
+ Inline `span` text runs inherit text-related parent values such as `color`, `fontFamily`,
241
+ `fontSize`, `fontWeight`, `lineHeight`, `letterSpacing`, `direction`, and wrapping controls. The
242
+ inherited values are visible in resolved-style inspection; Project avoids duplicating inherited-only
243
+ run styles when the parent text box already carries the concrete PPTX text body style.
244
+
240
245
  Style cascade is source-local. A mounted child deck resolves its own theme and stylesheets against
241
246
  its own slides, which keeps sandboxed and HMR-style composition predictable.
242
247
 
@@ -262,7 +267,9 @@ const deck = new Deck({
262
267
  deck.slide({ template: "report" }, ({ template }) => (
263
268
  <main>
264
269
  <h1 area={template.title}>Quarterly Review</h1>
265
- <section area={template.body}>Performance highlights</section>
270
+ <section area={template.body}>
271
+ <p style={{ width: "100%", height: 0.5 }}>Performance highlights</p>
272
+ </section>
266
273
  </main>
267
274
  ));
268
275
  ```
@@ -307,6 +314,25 @@ If a loader claims an image source but cannot provide dimensions, treat that as
307
314
  retrieval failure and report it through Project diagnostics rather than waiting for the writer to
308
315
  guess.
309
316
 
317
+ When an `img` has probed intrinsic `width` and `height`, layout uses that ratio if the author did
318
+ not provide `aspectRatio`. This means an image with only `width` can derive its projected height,
319
+ and an image with only `height` can derive its projected width. Author `aspectRatio` still wins for
320
+ intentional crops, logos, or placeholder boxes. `aspectRatio: "auto"` is accepted as the CSS-like
321
+ spelling for no authored ratio.
322
+
323
+ For foreground images, use `objectFit` / `fit`, `objectPosition`, and `crop`. `objectFit: "fill"`
324
+ uses the same projection as deckjsx's `stretch` fit; unsupported CSS values such as `"none"` and
325
+ `"scale-down"` are preserved as diagnostics and fall back to `contain`:
326
+
327
+ ```tsx
328
+ <img src="hero.png" style={{ x: 1, y: 1, width: 4 }} />
329
+ <img src="portrait.png" style={{ x: 5.3, y: 1, width: 2, height: 2, objectFit: "cover" }} />
330
+ <img src="map.png" style={{ x: 1, y: 3.4, width: 4, height: 1.6, objectPosition: "right 25% bottom 10%" }} />
331
+ ```
332
+
333
+ For decorative or underlay images inside a box, use background layers with `backgroundSize`,
334
+ `backgroundPosition`, `backgroundRepeat`, `backgroundClip`, and `backgroundOrigin`.
335
+
310
336
  Primitive string and number children inside view-like elements are normalized to implicit text
311
337
  nodes. Inline rich text uses `span` inside text-like elements:
312
338
 
@@ -336,6 +362,10 @@ and simple `gridColumn` / `gridRow` spans resolve to concrete slide coordinates
336
362
  rendering. Absolutely positioned children inside flex or grid containers also use the
337
363
  container content frame, including padding, as their containing block.
338
364
 
365
+ `display: "flex"` follows CSS-like defaults for the supported subset: row direction when
366
+ `flexDirection` is omitted, and cross-axis stretch when `alignItems` is omitted. The older
367
+ deck-specific `layout: "stack"` default remains vertical.
368
+
339
369
  Use direct slide children when you want slide-global absolute placement. Use children
340
370
  inside a view-like element when you want a local, web-like layout region.
341
371
 
@@ -350,6 +380,29 @@ include the unsupported feature, the projected value, and a fallback strategy de
350
380
  were preserved and which behavior is still missing. Malformed projected unsupported-semantic payloads
351
381
  from custom projections fail before Render emits bytes.
352
382
 
383
+ ## CSS-like Defaults And Gotchas
384
+
385
+ deckjsx intentionally stays close to HTML/CSS naming, but the current v0.8 layout engine is a slide
386
+ layout solver, not a browser. These are the defaults most likely to surprise CSS authors:
387
+
388
+ | Area | deckjsx v0.8 behavior | Browser expectation | Guidance |
389
+ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
390
+ | Block views | `display: "block"` creates a local containing block and vertically flows unpositioned children; explicit frame props still opt into local absolute placement. | Block formatting creates vertical flow. | Use ordinary block flow for simple stacks; use flex/grid or explicit frames for decks. |
391
+ | Flex | `display: "flex"` defaults to row and cross-axis stretch. | Same for the supported subset. | Prefer flex for simple rows/columns. |
392
+ | Sizing | Block-flow text gets available width and a line-height based height; explicit/local absolute boxes still need size, insets, layout stretch, or image ratio. | Many elements have intrinsic or content-based size. | Use declared sizes for precise PPTX geometry; rely on block defaults for simple text. |
393
+ | Text measurement | Stack/grid do not measure wrapped text to push later siblings. | Browser layout uses measured content. | Use declared heights or `fit: "shrink"` for text boxes. |
394
+ | Units | Layout numbers are inches; font-size-like numbers are points. Strings support common CSS units including `cm`, `mm`, `Q`, `pc`, `vmin`, and `vmax`. | CSS unitless numbers are property-specific. | Use strings for CSS-like units when supported, or keep numeric domains explicit. |
395
+ | CSS-wide keywords | `initial`, `inherit`, `unset`, `revert`, and `revert-layer` fall back to supported-subset defaults with diagnostics where full cascade/reset semantics are missing. | CSS has full cascade defaulting semantics. | Prefer ordinary omission for defaults; inspect diagnostics when using reset keywords. |
396
+ | Text spacing | `letterSpacing` accepts `normal` or point lengths; paragraph before/after spacing accepts point lengths. | CSS text spacing uses property-specific length rules. | Prefer `px`, `pt`, `em`, or `rem` when porting CSS-like text spacing. |
397
+ | Style keys | Unsupported CSS-like property names produce nonblocking compile warnings and remain visible in graph inspection. | Browsers ignore invalid declarations after parsing rules. | Use supported style keys; expect warnings for `flex`, `flexFlow`, or logical aliases. |
398
+ | Box sizing | Containers, text, and shapes default to `border-box`. | CSS initial is `content-box`. | This is deliberate for slide geometry. |
399
+ | Border radius | Single-value `borderRadius` supports percentages against the projected short side. | CSS supports richer per-corner radii. | `borderRadius: "50%"` works for capsule-like PPTX geometry. |
400
+ | Shadows | One shadow layer projects offset/blur/color; spread radius is preserved as unsupported fallback metadata. | CSS box-shadow supports spread and multiple layers. | Avoid relying on spread for exact PPTX output; Project diagnostics preserve it. |
401
+ | Grid | Missing tracks fill the available grid content frame. | CSS implicit tracks default to `auto`. | Declare tracks for precise dashboards. |
402
+ | Images | Foreground images default to contain/center and can use probed natural ratio. | `<img>` has intrinsic layout behavior in normal document flow. | Use one axis plus probed dimensions, or set both axes for a fixed box. |
403
+ | Shapes | Shapes default to visible white fill with no stroke. | CSS boxes are transparent unless styled. | Use `fill: "transparent"` or a `div` when you need a layout/debug box. |
404
+ | zIndex | Simple projected paint-order number. | CSS stacking contexts and `auto`. | Use it for slide paint order, not browser compositing semantics. |
405
+
353
406
  ## Development
354
407
 
355
408
  ```bash
@@ -1,5 +1,5 @@
1
- import { $ as Diagnostics } from "./index-BlOsGMTm.mjs";
2
- import { bn as RenderedArtifact, hn as RenderInspectionSummary, in as OutputFormat, rn as InspectionDetailLevel, sn as ProjectionFormat, w as PptxPackageModel } from "./model-oqG9gKTq.mjs";
1
+ import { $ as Diagnostics } from "./index-DOxigSfK.mjs";
2
+ import { bn as RenderedArtifact, hn as RenderInspectionSummary, in as OutputFormat, rn as InspectionDetailLevel, sn as ProjectionFormat, w as PptxPackageModel } from "./model-C82_FI4k.mjs";
3
3
 
4
4
  //#region src/adapter.d.ts
5
5
  type PptxRenderOptions = {
@@ -63,8 +63,15 @@ const EMU_PER_INCH = 914400;
63
63
  const POINTS_PER_INCH = 72;
64
64
  const DEFAULT_FONT_SIZE_PT = 16 / 96 * 72;
65
65
  const CH_WIDTH_RATIO = .5;
66
- const DECK_LENGTH_PATTERN = /^[-+]?(?:\d+|\d*\.\d+)(?:in|pt|px|%|em|rem|vh|vw|ch)$/i;
67
- const DECK_POINT_LENGTH_PATTERN = /^[-+]?(?:\d+|\d*\.\d+)(?:pt|in|px|em|rem|vh|vw|ch)$/i;
66
+ const DECK_LENGTH_PATTERN = /^[-+]?(?:\d+|\d*\.\d+)(?:in|cm|mm|q|pt|pc|px|%|em|rem|vh|vw|vmin|vmax|ch)$/i;
67
+ const DECK_POINT_LENGTH_PATTERN = /^[-+]?(?:\d+|\d*\.\d+)(?:in|cm|mm|q|pt|pc|px|em|rem|vh|vw|vmin|vmax|ch)$/i;
68
+ const CSS_WIDE_KEYWORDS = new Set([
69
+ "initial",
70
+ "inherit",
71
+ "unset",
72
+ "revert",
73
+ "revert-layer"
74
+ ]);
68
75
  function pointsToEmu(value) {
69
76
  return value / 72 * EMU_PER_INCH;
70
77
  }
@@ -76,86 +83,103 @@ function parsePercentage(value) {
76
83
  function resolvePointUnitBase(context) {
77
84
  return context?.fontSizePt ?? DEFAULT_FONT_SIZE_PT;
78
85
  }
86
+ function absoluteLengthInInches(normalized) {
87
+ if (normalized.endsWith("vmin") || normalized.endsWith("vmax")) return;
88
+ if (normalized.endsWith("in")) return Number.parseFloat(normalized.slice(0, -2));
89
+ if (normalized.endsWith("cm")) return Number.parseFloat(normalized.slice(0, -2)) / 2.54;
90
+ if (normalized.endsWith("mm")) return Number.parseFloat(normalized.slice(0, -2)) / 25.4;
91
+ if (normalized.endsWith("q")) return Number.parseFloat(normalized.slice(0, -1)) / 101.6;
92
+ if (normalized.endsWith("pt")) return Number.parseFloat(normalized.slice(0, -2)) / 72;
93
+ if (normalized.endsWith("pc")) return Number.parseFloat(normalized.slice(0, -2)) / 6;
94
+ if (normalized.endsWith("px")) return Number.parseFloat(normalized.slice(0, -2)) / 96;
95
+ }
96
+ function resolveViewportEmu(normalized, context, errorContext) {
97
+ if (normalized.endsWith("vw")) {
98
+ const viewportWidthEmu = context?.viewportWidthEmu;
99
+ if (viewportWidthEmu === void 0) throw new Error(`Unsupported viewport ${errorContext} without viewport context: ${normalized}`);
100
+ return viewportWidthEmu * Number.parseFloat(normalized.slice(0, -2)) / 100;
101
+ }
102
+ if (normalized.endsWith("vh")) {
103
+ const viewportHeightEmu = context?.viewportHeightEmu;
104
+ if (viewportHeightEmu === void 0) throw new Error(`Unsupported viewport ${errorContext} without viewport context: ${normalized}`);
105
+ return viewportHeightEmu * Number.parseFloat(normalized.slice(0, -2)) / 100;
106
+ }
107
+ if (normalized.endsWith("vmin") || normalized.endsWith("vmax")) {
108
+ const viewportWidthEmu = context?.viewportWidthEmu;
109
+ const viewportHeightEmu = context?.viewportHeightEmu;
110
+ if (viewportWidthEmu === void 0 || viewportHeightEmu === void 0) throw new Error(`Unsupported viewport ${errorContext} without viewport context: ${normalized}`);
111
+ const base = normalized.endsWith("vmin") ? Math.min(viewportWidthEmu, viewportHeightEmu) : Math.max(viewportWidthEmu, viewportHeightEmu);
112
+ const suffixLength = normalized.endsWith("vmin") ? 4 : 4;
113
+ return base * Number.parseFloat(normalized.slice(0, -suffixLength)) / 100;
114
+ }
115
+ }
79
116
  function isDeckLengthString(value) {
80
117
  return DECK_LENGTH_PATTERN.test(value.trim());
81
118
  }
82
119
  function isDeckPointLengthString(value) {
83
120
  return DECK_POINT_LENGTH_PATTERN.test(value.trim());
84
121
  }
122
+ function isCssWideKeyword(value) {
123
+ return typeof value === "string" && CSS_WIDE_KEYWORDS.has(value.trim().toLowerCase());
124
+ }
85
125
  function parseLengthToken(value, baseEmu, fallback = 0, context) {
86
126
  const trimmed = value.trim();
87
127
  if (trimmed === "0") return 0;
128
+ if (isCssWideKeyword(trimmed)) return fallback;
88
129
  if (!isDeckLengthString(trimmed)) throw new Error(`Unsupported length value: ${value}`);
89
130
  return parseLength(trimmed, baseEmu, fallback, context);
90
131
  }
91
132
  function parsePointToken(value, fallback = 0, context) {
92
133
  const trimmed = value.trim();
93
134
  if (trimmed === "0") return 0;
135
+ if (isCssWideKeyword(trimmed)) return fallback;
94
136
  if (!isDeckPointLengthString(trimmed)) throw new Error(`Unsupported point value: ${value}`);
95
137
  return parsePointValue(trimmed, fallback, context);
96
138
  }
97
139
  function parsePointValue(value, fallback = 0, context) {
98
140
  if (value === void 0) return fallback;
99
141
  if (typeof value === "number") return value;
100
- if (value.endsWith("pt")) return Number.parseFloat(value.slice(0, -2));
101
- if (value.endsWith("in")) return Number.parseFloat(value.slice(0, -2)) * 72;
102
- if (value.endsWith("px")) return Number.parseFloat(value.slice(0, -2)) / 96 * 72;
103
- if (value.endsWith("rem")) return Number.parseFloat(value.slice(0, -3)) * DEFAULT_FONT_SIZE_PT;
104
- if (value.endsWith("em")) return Number.parseFloat(value.slice(0, -2)) * resolvePointUnitBase(context);
105
- if (value.endsWith("ch")) return Number.parseFloat(value.slice(0, -2)) * resolvePointUnitBase(context) * CH_WIDTH_RATIO;
106
- if (value.endsWith("vw")) {
107
- const viewportWidthEmu = context?.viewportWidthEmu;
108
- if (viewportWidthEmu === void 0) throw new Error(`Unsupported viewport point value without viewport context: ${value}`);
109
- return viewportWidthEmu * Number.parseFloat(value.slice(0, -2)) / 100 / EMU_PER_INCH * 72;
110
- }
111
- if (value.endsWith("vh")) {
112
- const viewportHeightEmu = context?.viewportHeightEmu;
113
- if (viewportHeightEmu === void 0) throw new Error(`Unsupported viewport point value without viewport context: ${value}`);
114
- return viewportHeightEmu * Number.parseFloat(value.slice(0, -2)) / 100 / EMU_PER_INCH * 72;
115
- }
142
+ const normalized = value.trim().toLowerCase();
143
+ if (normalized === "0") return 0;
144
+ if (isCssWideKeyword(normalized)) return fallback;
145
+ const absoluteInches = absoluteLengthInInches(normalized);
146
+ if (absoluteInches !== void 0) return absoluteInches * 72;
147
+ if (normalized.endsWith("rem")) return Number.parseFloat(normalized.slice(0, -3)) * DEFAULT_FONT_SIZE_PT;
148
+ if (normalized.endsWith("em")) return Number.parseFloat(normalized.slice(0, -2)) * resolvePointUnitBase(context);
149
+ if (normalized.endsWith("ch")) return Number.parseFloat(normalized.slice(0, -2)) * resolvePointUnitBase(context) * CH_WIDTH_RATIO;
150
+ const viewportEmu = resolveViewportEmu(normalized, context, "point value");
151
+ if (viewportEmu !== void 0) return viewportEmu / EMU_PER_INCH * 72;
116
152
  throw new Error(`Unsupported point value: ${value}`);
117
153
  }
118
154
  function parseStrokeWidth(value, fallback = 0, context) {
119
155
  if (value === void 0) return fallback;
120
156
  if (typeof value === "number") return value;
121
- if (value.endsWith("pt")) return Number.parseFloat(value.slice(0, -2));
122
- if (value.endsWith("in")) return Number.parseFloat(value.slice(0, -2)) * 72;
123
- if (value.endsWith("px")) return Number.parseFloat(value.slice(0, -2)) / 96 * 72;
124
- if (value.endsWith("rem")) return Number.parseFloat(value.slice(0, -3)) * DEFAULT_FONT_SIZE_PT;
125
- if (value.endsWith("em")) return Number.parseFloat(value.slice(0, -2)) * resolvePointUnitBase(context);
126
- if (value.endsWith("ch")) return Number.parseFloat(value.slice(0, -2)) * resolvePointUnitBase(context) * CH_WIDTH_RATIO;
127
- if (value.endsWith("vw")) {
128
- const viewportWidthEmu = context?.viewportWidthEmu;
129
- if (viewportWidthEmu === void 0) throw new Error(`Unsupported viewport stroke width without viewport context: ${value}`);
130
- return viewportWidthEmu * Number.parseFloat(value.slice(0, -2)) / 100 / EMU_PER_INCH * 72;
131
- }
132
- if (value.endsWith("vh")) {
133
- const viewportHeightEmu = context?.viewportHeightEmu;
134
- if (viewportHeightEmu === void 0) throw new Error(`Unsupported viewport stroke width without viewport context: ${value}`);
135
- return viewportHeightEmu * Number.parseFloat(value.slice(0, -2)) / 100 / EMU_PER_INCH * 72;
136
- }
157
+ const normalized = value.trim().toLowerCase();
158
+ if (normalized === "0") return 0;
159
+ if (isCssWideKeyword(normalized)) return fallback;
160
+ const absoluteInches = absoluteLengthInInches(normalized);
161
+ if (absoluteInches !== void 0) return absoluteInches * 72;
162
+ if (normalized.endsWith("rem")) return Number.parseFloat(normalized.slice(0, -3)) * DEFAULT_FONT_SIZE_PT;
163
+ if (normalized.endsWith("em")) return Number.parseFloat(normalized.slice(0, -2)) * resolvePointUnitBase(context);
164
+ if (normalized.endsWith("ch")) return Number.parseFloat(normalized.slice(0, -2)) * resolvePointUnitBase(context) * CH_WIDTH_RATIO;
165
+ const viewportEmu = resolveViewportEmu(normalized, context, "stroke width");
166
+ if (viewportEmu !== void 0) return viewportEmu / EMU_PER_INCH * 72;
137
167
  throw new Error(`Unsupported stroke width: ${value}`);
138
168
  }
139
169
  function parseLength(value, baseEmu, fallback = 0, context) {
140
170
  if (value === void 0) return fallback;
141
171
  if (typeof value === "number") return value * EMU_PER_INCH;
142
- if (value.endsWith("%")) return baseEmu * Number.parseFloat(value.slice(0, -1)) / 100;
143
- if (value.endsWith("in")) return Number.parseFloat(value.slice(0, -2)) * EMU_PER_INCH;
144
- if (value.endsWith("pt")) return Number.parseFloat(value.slice(0, -2)) / 72 * EMU_PER_INCH;
145
- if (value.endsWith("px")) return Number.parseFloat(value.slice(0, -2)) / 96 * EMU_PER_INCH;
146
- if (value.endsWith("rem")) return Number.parseFloat(value.slice(0, -3)) * DEFAULT_FONT_SIZE_PT * EMU_PER_INCH / 72;
147
- if (value.endsWith("em")) return Number.parseFloat(value.slice(0, -2)) * resolvePointUnitBase(context) * EMU_PER_INCH / 72;
148
- if (value.endsWith("ch")) return Number.parseFloat(value.slice(0, -2)) * resolvePointUnitBase(context) * CH_WIDTH_RATIO * EMU_PER_INCH / 72;
149
- if (value.endsWith("vw")) {
150
- const viewportWidthEmu = context?.viewportWidthEmu;
151
- if (viewportWidthEmu === void 0) throw new Error(`Unsupported viewport length without viewport context: ${value}`);
152
- return viewportWidthEmu * Number.parseFloat(value.slice(0, -2)) / 100;
153
- }
154
- if (value.endsWith("vh")) {
155
- const viewportHeightEmu = context?.viewportHeightEmu;
156
- if (viewportHeightEmu === void 0) throw new Error(`Unsupported viewport length without viewport context: ${value}`);
157
- return viewportHeightEmu * Number.parseFloat(value.slice(0, -2)) / 100;
158
- }
172
+ const normalized = value.trim().toLowerCase();
173
+ if (normalized === "0") return 0;
174
+ if (isCssWideKeyword(normalized)) return fallback;
175
+ if (normalized.endsWith("%")) return baseEmu * Number.parseFloat(normalized.slice(0, -1)) / 100;
176
+ const absoluteInches = absoluteLengthInInches(normalized);
177
+ if (absoluteInches !== void 0) return absoluteInches * EMU_PER_INCH;
178
+ if (normalized.endsWith("rem")) return Number.parseFloat(normalized.slice(0, -3)) * DEFAULT_FONT_SIZE_PT * EMU_PER_INCH / 72;
179
+ if (normalized.endsWith("em")) return Number.parseFloat(normalized.slice(0, -2)) * resolvePointUnitBase(context) * EMU_PER_INCH / 72;
180
+ if (normalized.endsWith("ch")) return Number.parseFloat(normalized.slice(0, -2)) * resolvePointUnitBase(context) * CH_WIDTH_RATIO * EMU_PER_INCH / 72;
181
+ const viewportEmu = resolveViewportEmu(normalized, context, "length");
182
+ if (viewportEmu !== void 0) return viewportEmu;
159
183
  throw new Error(`Unsupported length value: ${value}`);
160
184
  }
161
185
  //#endregion
@@ -458,7 +482,9 @@ const UNSUPPORTED_SEMANTIC_FEATURES = [
458
482
  "border",
459
483
  "clipping",
460
484
  "filter",
485
+ "image",
461
486
  "isolation",
487
+ "layout",
462
488
  "outline",
463
489
  "opacity",
464
490
  "shadow",
@@ -1024,6 +1050,29 @@ function validateDrawingFrame(input) {
1024
1050
  });
1025
1051
  return issues;
1026
1052
  }
1053
+ function validateDrawingFrameExtent(input) {
1054
+ const frame = input.element.frame;
1055
+ if (typeof frame !== "object" || frame === null) return [];
1056
+ const { widthEmu, heightEmu } = frame;
1057
+ if (typeof widthEmu !== "number" || typeof heightEmu !== "number" || !Number.isFinite(widthEmu) || !Number.isFinite(heightEmu)) return [];
1058
+ if (input.element.kind === "shape" && input.element.shape === "line") return widthEmu === 0 && heightEmu === 0 ? [drawingMetadataDiagnostic({
1059
+ path: `${input.path}.frame`,
1060
+ message: "line shape frame must have a non-zero axis",
1061
+ title: "pptx drawing frame is degenerate"
1062
+ })] : [];
1063
+ const issues = [];
1064
+ if (widthEmu === 0) issues.push(drawingMetadataDiagnostic({
1065
+ path: `${input.path}.frame.widthEmu`,
1066
+ message: "drawing frame width must be greater than zero",
1067
+ title: "pptx drawing frame is degenerate"
1068
+ }));
1069
+ if (heightEmu === 0) issues.push(drawingMetadataDiagnostic({
1070
+ path: `${input.path}.frame.heightEmu`,
1071
+ message: "drawing frame height must be greater than zero",
1072
+ title: "pptx drawing frame is degenerate"
1073
+ }));
1074
+ return issues;
1075
+ }
1027
1076
  function validateSlideLayoutAnchor(input) {
1028
1077
  const issues = [];
1029
1078
  if (typeof input.anchor.template !== "string" || input.anchor.template.length === 0) issues.push(diagnostic({
@@ -3266,6 +3315,10 @@ function validateDrawingMetadata(input) {
3266
3315
  frame: input.element.frame,
3267
3316
  path: `${input.path}.frame`
3268
3317
  }),
3318
+ ...validateDrawingFrameExtent({
3319
+ element: input.element,
3320
+ path: input.path
3321
+ }),
3269
3322
  ...element.opacity === void 0 || typeof element.opacity === "number" && Number.isFinite(element.opacity) && element.opacity >= 0 && element.opacity <= 1 ? [] : [drawingMetadataDiagnostic({
3270
3323
  path: `${input.path}.opacity`,
3271
3324
  message: "invalid opacity"
@@ -8610,4 +8663,4 @@ function pptx(options = {}) {
8610
8663
  };
8611
8664
  }
8612
8665
  //#endregion
8613
- export { CompositionDiagnosticError as A, parsePointValue as C, POINTS_PER_INCH as D, EMU_PER_INCH as E, formatDiagnostics as F, SemanticGraphDiagnosticError as M, StyleDiagnosticError as N, createDiagnostics as O, formatDiagnostic as P, parsePointToken as S, pointsToEmu as T, isDeckLengthString as _, isInspectableThemePayload as a, parseLengthToken as b, fingerprintString as c, createWriterRenderContext as d, createTemplateHandle as f, DEFAULT_FONT_SIZE_PT as g, validateSlideTemplates as h, isContentTypesPayload as i, DeckDiagnosticError as j, diagnostic as k, stableJson$1 as l, templateRefValue as m, pptxMediaAssetLoadRequirements as n, isRecord as o, isTemplateAreaRef as p, validatePptxPackageModel as r, projectedRelationshipTarget as s, pptx as t, withPackagePartFingerprints as u, isDeckPointLengthString as v, parseStrokeWidth as w, parsePercentage as x, parseLength as y };
8666
+ export { diagnostic as A, parsePointToken as C, EMU_PER_INCH as D, pointsToEmu as E, formatDiagnostic as F, formatDiagnostics as I, DeckDiagnosticError as M, SemanticGraphDiagnosticError as N, POINTS_PER_INCH as O, StyleDiagnosticError as P, parsePercentage as S, parseStrokeWidth as T, isCssWideKeyword as _, isInspectableThemePayload as a, parseLength as b, fingerprintString as c, createWriterRenderContext as d, createTemplateHandle as f, DEFAULT_FONT_SIZE_PT as g, validateSlideTemplates as h, isContentTypesPayload as i, CompositionDiagnosticError as j, createDiagnostics as k, stableJson$1 as l, templateRefValue as m, pptxMediaAssetLoadRequirements as n, isRecord as o, isTemplateAreaRef as p, validatePptxPackageModel as r, projectedRelationshipTarget as s, pptx as t, withPackagePartFingerprints as u, isDeckLengthString as v, parsePointValue as w, parseLengthToken as x, isDeckPointLengthString as y };
@@ -1,2 +1,2 @@
1
- import { a as WriterRenderContext, i as WriterAdapterResult, n as RenderOptions, o as pptx, r as WriterAdapter, t as PptxRenderOptions } from "./adapter-B-bVXjv-.mjs";
1
+ import { a as WriterRenderContext, i as WriterAdapterResult, n as RenderOptions, o as pptx, r as WriterAdapter, t as PptxRenderOptions } from "./adapter-B0PALTZN.mjs";
2
2
  export { PptxRenderOptions, RenderOptions, WriterAdapter, WriterAdapterResult, WriterRenderContext, pptx };
package/dist/adapter.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as pptx } from "./adapter-CNSvvD4i.mjs";
1
+ import { t as pptx } from "./adapter-B3Efckbf.mjs";
2
2
  export { pptx };
@@ -3,11 +3,14 @@ type AuthoredTag = "article" | "aside" | "div" | "figure" | "footer" | "h1" | "h
3
3
  type SectioningTag = "article" | "aside" | "footer" | "header" | "main" | "nav" | "section";
4
4
  //#endregion
5
5
  //#region src/style/types.d.ts
6
- type DeckLength = number | `${number}${"in" | "pt" | "px" | "%" | "em" | "rem" | "vh" | "vw" | "ch"}`;
7
- type DeckPointLength = number | `${number}${"pt" | "in" | "px" | "em" | "rem" | "vh" | "vw" | "ch"}`;
8
- type CssAspectRatio = number | `${number}/${number}` | `${number} / ${number}`;
6
+ type CssWideKeyword = "initial" | "inherit" | "unset" | "revert" | "revert-layer";
7
+ type DeckLength = number | CssWideKeyword | `${number}${"in" | "cm" | "mm" | "q" | "pt" | "pc" | "px" | "%" | "em" | "rem" | "vh" | "vw" | "vmin" | "vmax" | "ch"}`;
8
+ type DeckPointLength = number | CssWideKeyword | `${number}${"in" | "cm" | "mm" | "q" | "pt" | "pc" | "px" | "em" | "rem" | "vh" | "vw" | "vmin" | "vmax" | "ch"}`;
9
+ type CssLetterSpacing = DeckPointLength | "normal";
10
+ type CssAspectRatio = number | "auto" | `${number}` | `${number}/${number}` | `${number} / ${number}`;
9
11
  type CssBoxSizing = "border-box" | "content-box";
10
- type Spacing = DeckLength | readonly [DeckLength, DeckLength, DeckLength, DeckLength];
12
+ type CssSpacingShorthand = `${string} ${string}`;
13
+ type Spacing = DeckLength | CssSpacingShorthand | readonly [DeckLength, DeckLength, DeckLength, DeckLength];
11
14
  type StackAxis = "horizontal" | "vertical";
12
15
  type StackAlignment = "start" | "center" | "end";
13
16
  type LayoutMode = "absolute" | "stack" | "grid";
@@ -18,7 +21,7 @@ type StrokeLineJoin = "miter" | "round" | "bevel";
18
21
  type VerticalAlign = "top" | "middle" | "bottom";
19
22
  type TextFit = "none" | "shrink" | "resize";
20
23
  type CssDisplay = "flex" | "block" | "grid" | "none";
21
- type CssPosition = "absolute" | "relative";
24
+ type CssPosition = "static" | "absolute" | "relative";
22
25
  type CssVisibility = "visible" | "hidden";
23
26
  type CssOverflow = "visible" | "hidden";
24
27
  type CssFlexDirection = "row" | "column";
@@ -205,12 +208,12 @@ type TextStyle = FrameAuthorProps & BoxStyleAuthorProps & {
205
208
  lineSpacing?: number;
206
209
  lineSpacingMultiple?: number;
207
210
  lineHeight?: DeckPointLength | "normal";
208
- paragraphSpacingBefore?: number;
209
- paragraphSpacingAfter?: number;
211
+ paragraphSpacingBefore?: DeckPointLength;
212
+ paragraphSpacingAfter?: DeckPointLength;
210
213
  textIndent?: DeckPointLength;
211
214
  tabStops?: readonly TextTabStopAuthoring[];
212
- charSpacing?: number;
213
- letterSpacing?: number;
215
+ charSpacing?: DeckPointLength;
216
+ letterSpacing?: CssLetterSpacing;
214
217
  whiteSpace?: "normal" | "nowrap" | "pre" | "pre-wrap" | "pre-line";
215
218
  wordBreak?: "normal" | "break-all" | "keep-all" | "break-word";
216
219
  overflowWrap?: "normal" | "break-word" | "anywhere";
@@ -225,9 +228,10 @@ type TextStyle = FrameAuthorProps & BoxStyleAuthorProps & {
225
228
  fit?: TextFit;
226
229
  wrap?: boolean;
227
230
  };
231
+ type ImageFit = "contain" | "cover" | "stretch" | "fill";
228
232
  type ImageStyle = FrameAuthorProps & {
229
- fit?: "contain" | "cover" | "stretch";
230
- objectFit?: "contain" | "cover" | "stretch";
233
+ fit?: ImageFit;
234
+ objectFit?: ImageFit;
231
235
  objectPosition?: CssObjectPosition;
232
236
  crop?: ImageCropAuthoring;
233
237
  href?: string;
@@ -762,4 +766,4 @@ type DeckJsxIntrinsicElements = {
762
766
  span: IntrinsicSpanProps;
763
767
  } & { [Tag in IntrinsicViewTag]: IntrinsicDivProps } & { [Tag in IntrinsicTextTag]: IntrinsicPProps };
764
768
  //#endregion
765
- export { Diagnostics as $, StackAlignment as $t, BaseSemanticNode as A, CssGridAutoFlow as At, SemanticRole as B, CssObjectPosition as Bt, SourceContextValue as C, CssAlignSelf as Ct, StyleSheet as D, CssFlexBasis as Dt, ThemeDefaults as E, CssDisplay as Et, SemanticDocumentNode as F, CssGridTemplateAreas as Ft, SourceIdentity as G, DeckPointLength as Gt, SemanticSlideNode as H, CssPosition as Ht, SemanticImageNode as I, CssGridTemplateShorthand as It, StyleEntity as J, ImageStyle as Jt, SourceOrigin as K, ImageCropAuthoring as Kt, SemanticNode as L, CssGridTrack as Lt, GraphNodeId as M, CssGridPlacement as Mt, SemanticAuthorGraph as N, CssGridShorthand as Nt, AssetEntity as O, CssFlexDirection as Ot, SemanticContainerNode as P, CssGridTemplate as Pt, DiagnosticSeverity as Q, Spacing as Qt, SemanticNodeKind as R, CssJustifyContent as Rt, SourceContextMapper as S, CssAlignItems as St, ThemeInput as T, CssBoxSizing as Tt, SemanticTextNode as U, CssVisibility as Ut, SemanticShapeNode as V, CssOverflow as Vt, SemanticTextRunNode as W, DeckLength as Wt, Diagnostic as X, ShapeStyle as Xt, StyleEntityId as Y, LayoutMode as Yt, DiagnosticLabel as Z, SlideStyle as Zt, SlideFactory as _, TemplateFrame as _t, IntrinsicDivProps as a, StyleDeclarationValue as an, StyleDiagnosticError as at, SlideOptions as b, BorderStyle as bt, IntrinsicShapeProps as c, TextStyle as cn, ClassNameObject as ct, JsxNode as d, TextTabStopLength as dn, EmptySlideTemplateSet as dt, StackAxis as en, formatDiagnostic as et, TextJsxChild as f, VerticalAlign as fn, SlideTemplate as ft, CompositionSourceInternals as g, TemplateAreaRef as gt, CompositionSource as h, TemplateAreaKind as ht, DeckOptions as i, StyleDeclaration as in, SemanticGraphDiagnosticError as it, Brand as j, CssGridLine as jt, AssetEntityId as k, CssFlexWrap as kt, IntrinsicTextTag as l, TextTabStopAlignment as ln, ClassNameValue as lt, CompositionContext as m, TemplateArea as mt, DeckJsxElement as n, StrokeLineCap as nn, CompositionDiagnosticError as nt, IntrinsicImgProps as o, TextFit as on, JsxKey as ot, COMPOSITION_SOURCE as p, ViewStyle as pn, SlideTemplateSet as pt, StyleClassRef as q, ImageCropValue as qt, DeckJsxIntrinsicElements as r, StrokeLineJoin as rn, DeckDiagnosticError as rt, IntrinsicPProps as s, TextRunStyle as sn, SourceSpan as st, ContentJsxChild as t, StrokeDashType as tn, formatDiagnostics as tt, IntrinsicViewTag as u, TextTabStopAuthoring as un, ClassNameValueArray as ut, SlideFactoryInput as v, TemplateHandle as vt, Theme as w, CssAspectRatio as wt, SourceContextInput as x, CssAlignContent as xt, SlideFactoryInputWithTemplate as y, TemplateName as yt, SemanticOrigin as z, CssJustifySelf as zt };
769
+ export { Diagnostics as $, Spacing as $t, BaseSemanticNode as A, CssGridAutoFlow as At, SemanticRole as B, CssLetterSpacing as Bt, SourceContextValue as C, CssAlignSelf as Ct, StyleSheet as D, CssFlexBasis as Dt, ThemeDefaults as E, CssDisplay as Et, SemanticDocumentNode as F, CssGridTemplateAreas as Ft, SourceIdentity as G, DeckLength as Gt, SemanticSlideNode as H, CssOverflow as Ht, SemanticImageNode as I, CssGridTemplateShorthand as It, StyleEntity as J, ImageCropValue as Jt, SourceOrigin as K, DeckPointLength as Kt, SemanticNode as L, CssGridTrack as Lt, GraphNodeId as M, CssGridPlacement as Mt, SemanticAuthorGraph as N, CssGridShorthand as Nt, AssetEntity as O, CssFlexDirection as Ot, SemanticContainerNode as P, CssGridTemplate as Pt, DiagnosticSeverity as Q, SlideStyle as Qt, SemanticNodeKind as R, CssJustifyContent as Rt, SourceContextMapper as S, CssAlignItems as St, ThemeInput as T, CssBoxSizing as Tt, SemanticTextNode as U, CssPosition as Ut, SemanticShapeNode as V, CssObjectPosition as Vt, SemanticTextRunNode as W, CssVisibility as Wt, Diagnostic as X, LayoutMode as Xt, StyleEntityId as Y, ImageStyle as Yt, DiagnosticLabel as Z, ShapeStyle as Zt, SlideFactory as _, TemplateFrame as _t, IntrinsicDivProps as a, StyleDeclaration as an, StyleDiagnosticError as at, SlideOptions as b, BorderStyle as bt, IntrinsicShapeProps as c, TextRunStyle as cn, ClassNameObject as ct, JsxNode as d, TextTabStopAuthoring as dn, EmptySlideTemplateSet as dt, StackAlignment as en, formatDiagnostic as et, TextJsxChild as f, TextTabStopLength as fn, SlideTemplate as ft, CompositionSourceInternals as g, TemplateAreaRef as gt, CompositionSource as h, TemplateAreaKind as ht, DeckOptions as i, StrokeLineJoin as in, SemanticGraphDiagnosticError as it, Brand as j, CssGridLine as jt, AssetEntityId as k, CssFlexWrap as kt, IntrinsicTextTag as l, TextStyle as ln, ClassNameValue as lt, CompositionContext as m, ViewStyle as mn, TemplateArea as mt, DeckJsxElement as n, StrokeDashType as nn, CompositionDiagnosticError as nt, IntrinsicImgProps as o, StyleDeclarationValue as on, JsxKey as ot, COMPOSITION_SOURCE as p, VerticalAlign as pn, SlideTemplateSet as pt, StyleClassRef as q, ImageCropAuthoring as qt, DeckJsxIntrinsicElements as r, StrokeLineCap as rn, DeckDiagnosticError as rt, IntrinsicPProps as s, TextFit as sn, SourceSpan as st, ContentJsxChild as t, StackAxis as tn, formatDiagnostics as tt, IntrinsicViewTag as u, TextTabStopAlignment as un, ClassNameValueArray as ut, SlideFactoryInput as v, TemplateHandle as vt, Theme as w, CssAspectRatio as wt, SourceContextInput as x, CssAlignContent as xt, SlideFactoryInputWithTemplate as y, TemplateName as yt, SemanticOrigin as z, CssJustifySelf as zt };
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { $ as Diagnostics, $t as StackAlignment, At as CssGridAutoFlow, Bt as CssObjectPosition, C as SourceContextValue, Ct as CssAlignSelf, D as StyleSheet, Dt as CssFlexBasis, E as ThemeDefaults, Et as CssDisplay, Ft as CssGridTemplateAreas, Gt as DeckPointLength, Ht as CssPosition, It as CssGridTemplateShorthand, Jt as ImageStyle, Kt as ImageCropAuthoring, Lt as CssGridTrack, Mt as CssGridPlacement, N as SemanticAuthorGraph, Nt as CssGridShorthand, Ot as CssFlexDirection, Pt as CssGridTemplate, Q as DiagnosticSeverity, Qt as Spacing, Rt as CssJustifyContent, S as SourceContextMapper, St as CssAlignItems, T as ThemeInput, Tt as CssBoxSizing, Ut as CssVisibility, Vt as CssOverflow, Wt as DeckLength, X as Diagnostic, Xt as ShapeStyle, Yt as LayoutMode, Z as DiagnosticLabel, Zt as SlideStyle, _ as SlideFactory, _t as TemplateFrame, a as IntrinsicDivProps, at as StyleDiagnosticError, b as SlideOptions, bt as BorderStyle, c as IntrinsicShapeProps, cn as TextStyle, ct as ClassNameObject, dn as TextTabStopLength, dt as EmptySlideTemplateSet, en as StackAxis, et as formatDiagnostic, f as TextJsxChild, fn as VerticalAlign, ft as SlideTemplate, g as CompositionSourceInternals, gt as TemplateAreaRef, h as CompositionSource, ht as TemplateAreaKind, i as DeckOptions, it as SemanticGraphDiagnosticError, jt as CssGridLine, kt as CssFlexWrap, l as IntrinsicTextTag, ln as TextTabStopAlignment, lt as ClassNameValue, m as CompositionContext, mt as TemplateArea, n as DeckJsxElement, nn as StrokeLineCap, nt as CompositionDiagnosticError, o as IntrinsicImgProps, on as TextFit, ot as JsxKey, p as COMPOSITION_SOURCE, pn as ViewStyle, pt as SlideTemplateSet, qt as ImageCropValue, r as DeckJsxIntrinsicElements, rn as StrokeLineJoin, rt as DeckDiagnosticError, s as IntrinsicPProps, sn as TextRunStyle, st as SourceSpan, t as ContentJsxChild, tn as StrokeDashType, tt as formatDiagnostics, u as IntrinsicViewTag, un as TextTabStopAuthoring, ut as ClassNameValueArray, v as SlideFactoryInput, vt as TemplateHandle, w as Theme, wt as CssAspectRatio, x as SourceContextInput, xt as CssAlignContent, y as SlideFactoryInputWithTemplate, yt as TemplateName, zt as CssJustifySelf } from "./index-BlOsGMTm.mjs";
2
- import { An as AssetSource, Cn as StageSummary, Dn as AssetLoaderContext, En as AssetLoader, Gt as ProjectInspectionSummary, On as AssetMediaType, Sn as StageName, T as PptxPackageModelCandidate, Tn as AssetLoadResult, _n as RenderOutputSideEffectStatus, an as ProjectOptions, bn as RenderedArtifact, cn as RenderAssemblyBuildSummary, dn as RenderAssemblyFingerprintDelta, fn as RenderAssemblyPlanEntrySummary, gn as RenderOutputSideEffectReason, hn as RenderInspectionSummary, in as OutputFormat, kn as AssetProbeResult, ln as RenderAssemblyExpectedEntrySummary, mn as RenderAssemblyReasonDetails, nn as CompileStages, on as ProjectStages, pn as RenderAssemblyPlanSummary, rn as InspectionDetailLevel, sn as ProjectionFormat, un as RenderAssemblyFinalEntrySummary, vn as RenderOutputSideEffectSummary, w as PptxPackageModel, wn as WrittenOutput, xn as StageArtifactStatus, yn as RenderStages } from "./model-oqG9gKTq.mjs";
3
- import { n as RenderOptions, r as WriterAdapter } from "./adapter-B-bVXjv-.mjs";
4
- import { r as ResolvedStyleMap } from "./resolve-CfjiMtv5.mjs";
1
+ import { $ as Diagnostics, $t as Spacing, At as CssGridAutoFlow, Bt as CssLetterSpacing, C as SourceContextValue, Ct as CssAlignSelf, D as StyleSheet, Dt as CssFlexBasis, E as ThemeDefaults, Et as CssDisplay, Ft as CssGridTemplateAreas, Gt as DeckLength, Ht as CssOverflow, It as CssGridTemplateShorthand, Jt as ImageCropValue, Kt as DeckPointLength, Lt as CssGridTrack, Mt as CssGridPlacement, N as SemanticAuthorGraph, Nt as CssGridShorthand, Ot as CssFlexDirection, Pt as CssGridTemplate, Q as DiagnosticSeverity, Qt as SlideStyle, Rt as CssJustifyContent, S as SourceContextMapper, St as CssAlignItems, T as ThemeInput, Tt as CssBoxSizing, Ut as CssPosition, Vt as CssObjectPosition, Wt as CssVisibility, X as Diagnostic, Xt as LayoutMode, Yt as ImageStyle, Z as DiagnosticLabel, Zt as ShapeStyle, _ as SlideFactory, _t as TemplateFrame, a as IntrinsicDivProps, at as StyleDiagnosticError, b as SlideOptions, bt as BorderStyle, c as IntrinsicShapeProps, cn as TextRunStyle, ct as ClassNameObject, dn as TextTabStopAuthoring, dt as EmptySlideTemplateSet, en as StackAlignment, et as formatDiagnostic, f as TextJsxChild, fn as TextTabStopLength, ft as SlideTemplate, g as CompositionSourceInternals, gt as TemplateAreaRef, h as CompositionSource, ht as TemplateAreaKind, i as DeckOptions, in as StrokeLineJoin, it as SemanticGraphDiagnosticError, jt as CssGridLine, kt as CssFlexWrap, l as IntrinsicTextTag, ln as TextStyle, lt as ClassNameValue, m as CompositionContext, mn as ViewStyle, mt as TemplateArea, n as DeckJsxElement, nn as StrokeDashType, nt as CompositionDiagnosticError, o as IntrinsicImgProps, ot as JsxKey, p as COMPOSITION_SOURCE, pn as VerticalAlign, pt as SlideTemplateSet, qt as ImageCropAuthoring, r as DeckJsxIntrinsicElements, rn as StrokeLineCap, rt as DeckDiagnosticError, s as IntrinsicPProps, sn as TextFit, st as SourceSpan, t as ContentJsxChild, tn as StackAxis, tt as formatDiagnostics, u as IntrinsicViewTag, un as TextTabStopAlignment, ut as ClassNameValueArray, v as SlideFactoryInput, vt as TemplateHandle, w as Theme, wt as CssAspectRatio, x as SourceContextInput, xt as CssAlignContent, y as SlideFactoryInputWithTemplate, yt as TemplateName, zt as CssJustifySelf } from "./index-DOxigSfK.mjs";
2
+ import { An as AssetSource, Cn as StageSummary, Dn as AssetLoaderContext, En as AssetLoader, Gt as ProjectInspectionSummary, On as AssetMediaType, Sn as StageName, T as PptxPackageModelCandidate, Tn as AssetLoadResult, _n as RenderOutputSideEffectStatus, an as ProjectOptions, bn as RenderedArtifact, cn as RenderAssemblyBuildSummary, dn as RenderAssemblyFingerprintDelta, fn as RenderAssemblyPlanEntrySummary, gn as RenderOutputSideEffectReason, hn as RenderInspectionSummary, in as OutputFormat, kn as AssetProbeResult, ln as RenderAssemblyExpectedEntrySummary, mn as RenderAssemblyReasonDetails, nn as CompileStages, on as ProjectStages, pn as RenderAssemblyPlanSummary, rn as InspectionDetailLevel, sn as ProjectionFormat, un as RenderAssemblyFinalEntrySummary, vn as RenderOutputSideEffectSummary, w as PptxPackageModel, wn as WrittenOutput, xn as StageArtifactStatus, yn as RenderStages } from "./model-C82_FI4k.mjs";
3
+ import { n as RenderOptions, r as WriterAdapter } from "./adapter-B0PALTZN.mjs";
4
+ import { r as ResolvedStyleMap } from "./resolve-DH0cI2C3.mjs";
5
5
 
6
6
  //#region src/pipeline-runner.d.ts
7
7
  type PresentStageArtifactStatus = Exclude<StageArtifactStatus, "missing">;
@@ -243,4 +243,4 @@ declare global {
243
243
  }
244
244
  }
245
245
  //#endregion
246
- export { type AssetLoadResult, type AssetLoader, type AssetLoaderContext, type AssetMediaType, type AssetProbeResult, type AssetSource, type BorderStyle, type BoundSource, type ClassNameObject, type ClassNameValue, type ClassNameValueArray, type CompileResult, type CompositionContext, CompositionDiagnosticError, type ContentJsxChild, type CssAlignContent, type CssAlignItems, type CssAlignSelf, type CssAspectRatio, type CssBoxSizing, type CssDisplay, type CssFlexBasis, type CssFlexDirection, type CssFlexWrap, type CssGridAutoFlow, type CssGridLine, type CssGridPlacement, type CssGridShorthand, type CssGridTemplate, type CssGridTemplateAreas, type CssGridTemplateShorthand, type CssGridTrack, type CssJustifyContent, type CssJustifySelf, type CssObjectPosition, type CssOverflow, type CssPosition, type CssVisibility, Deck, DeckDiagnosticError, type DeckJsxElement, type DeckJsxIntrinsicElements, type DeckLength, type DeckOptions, type DeckPointLength, type Diagnostic, type DiagnosticLabel, type DiagnosticSeverity, type Diagnostics, EMU_PER_INCH, type ImageCropAuthoring, type ImageCropValue, type ImageStyle, type InspectionDetailLevel, type IntrinsicDivProps, type IntrinsicImgProps, type IntrinsicPProps, type IntrinsicShapeProps, type IntrinsicTextTag, type IntrinsicViewTag, type JsxKey, type LayoutMode, type OutputFormat, POINTS_PER_INCH, type ProjectOptions, type ProjectResult, type ProjectionFormat, type RenderAssemblyBuildSummary, type RenderAssemblyExpectedEntrySummary, type RenderAssemblyFinalEntrySummary, type RenderAssemblyFingerprintDelta, type RenderAssemblyPlanEntrySummary, type RenderAssemblyPlanSummary, type RenderAssemblyReasonDetails, type RenderInspectionSummary, type RenderOutputSideEffectReason, type RenderOutputSideEffectStatus, type RenderOutputSideEffectSummary, type RenderResult, type RenderedArtifact, SemanticGraphDiagnosticError, type ShapeStyle, type SlideFactory, type SlideFactoryInput, type SlideFactoryInputWithTemplate, type SlideOptions, type SlideStyle, type SlideTemplate, type SlideTemplateSet, type SourceContextMapper, type SourceSpan, type Spacing, type StackAlignment, type StackAxis, type StageArtifactStatus, type StageName, type StageSummary, type StrokeDashType, type StrokeLineCap, type StrokeLineJoin, StyleDiagnosticError, StyleSheet, type TemplateArea, type TemplateAreaKind, type TemplateAreaRef, type TemplateFrame, type TemplateHandle, type TextFit, type TextJsxChild, type TextRunStyle, type TextStyle, type TextTabStopAlignment, type TextTabStopAuthoring, type TextTabStopLength, Theme, type ThemeDefaults, type ThemeInput, type VerticalAlign, type ViewStyle, type WrittenOutput, formatDiagnostic, formatDiagnostics };
246
+ export { type AssetLoadResult, type AssetLoader, type AssetLoaderContext, type AssetMediaType, type AssetProbeResult, type AssetSource, type BorderStyle, type BoundSource, type ClassNameObject, type ClassNameValue, type ClassNameValueArray, type CompileResult, type CompositionContext, CompositionDiagnosticError, type ContentJsxChild, type CssAlignContent, type CssAlignItems, type CssAlignSelf, type CssAspectRatio, type CssBoxSizing, type CssDisplay, type CssFlexBasis, type CssFlexDirection, type CssFlexWrap, type CssGridAutoFlow, type CssGridLine, type CssGridPlacement, type CssGridShorthand, type CssGridTemplate, type CssGridTemplateAreas, type CssGridTemplateShorthand, type CssGridTrack, type CssJustifyContent, type CssJustifySelf, type CssLetterSpacing, type CssObjectPosition, type CssOverflow, type CssPosition, type CssVisibility, Deck, DeckDiagnosticError, type DeckJsxElement, type DeckJsxIntrinsicElements, type DeckLength, type DeckOptions, type DeckPointLength, type Diagnostic, type DiagnosticLabel, type DiagnosticSeverity, type Diagnostics, EMU_PER_INCH, type ImageCropAuthoring, type ImageCropValue, type ImageStyle, type InspectionDetailLevel, type IntrinsicDivProps, type IntrinsicImgProps, type IntrinsicPProps, type IntrinsicShapeProps, type IntrinsicTextTag, type IntrinsicViewTag, type JsxKey, type LayoutMode, type OutputFormat, POINTS_PER_INCH, type ProjectOptions, type ProjectResult, type ProjectionFormat, type RenderAssemblyBuildSummary, type RenderAssemblyExpectedEntrySummary, type RenderAssemblyFinalEntrySummary, type RenderAssemblyFingerprintDelta, type RenderAssemblyPlanEntrySummary, type RenderAssemblyPlanSummary, type RenderAssemblyReasonDetails, type RenderInspectionSummary, type RenderOutputSideEffectReason, type RenderOutputSideEffectStatus, type RenderOutputSideEffectSummary, type RenderResult, type RenderedArtifact, SemanticGraphDiagnosticError, type ShapeStyle, type SlideFactory, type SlideFactoryInput, type SlideFactoryInputWithTemplate, type SlideOptions, type SlideStyle, type SlideTemplate, type SlideTemplateSet, type SourceContextMapper, type SourceSpan, type Spacing, type StackAlignment, type StackAxis, type StageArtifactStatus, type StageName, type StageSummary, type StrokeDashType, type StrokeLineCap, type StrokeLineJoin, StyleDiagnosticError, StyleSheet, type TemplateArea, type TemplateAreaKind, type TemplateAreaRef, type TemplateFrame, type TemplateHandle, type TextFit, type TextJsxChild, type TextRunStyle, type TextStyle, type TextTabStopAlignment, type TextTabStopAuthoring, type TextTabStopLength, Theme, type ThemeDefaults, type ThemeInput, type VerticalAlign, type ViewStyle, type WrittenOutput, formatDiagnostic, formatDiagnostics };