pro-visu 0.4.0 → 0.5.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.
- package/README.md +22 -14
- package/dist/cli/index.js +780 -347
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +31 -29
- package/dist/index.js.map +1 -1
- package/dist/scene-app/assets/{index-sed_MW8w.js → index-Bu-Vjjhs.js} +1 -1
- package/dist/scene-app/index.html +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
-
declare const easingSchema: z.ZodEnum<["linear", "
|
|
3
|
+
declare const easingSchema: z.ZodEnum<["linear", "ease-in-out-cubic", "ease-in-out-quad", "ease-out-cubic", "ease-in-out-sine", "ease-in-out-expo", "ease-out-quint"]>;
|
|
4
4
|
type Easing = z.infer<typeof easingSchema>;
|
|
5
5
|
/** One choreographed scroll step. */
|
|
6
6
|
interface ChoreographyStepInput {
|
|
@@ -10,7 +10,7 @@ interface ChoreographyStepInput {
|
|
|
10
10
|
durationMs?: number;
|
|
11
11
|
/** Hold time at this target after arriving (ms). Default 800. */
|
|
12
12
|
holdMs?: number;
|
|
13
|
-
/** Easing for the travel to this target. Default "
|
|
13
|
+
/** Easing for the travel to this target. Default "ease-in-out-cubic". */
|
|
14
14
|
easing?: Easing;
|
|
15
15
|
}
|
|
16
16
|
/** One step of a scripted interaction (`actions` / `focus.actions`). */
|
|
@@ -83,7 +83,7 @@ interface KenBurnsInput {
|
|
|
83
83
|
scaleFrom?: number;
|
|
84
84
|
/** End scale. Default 1.08. */
|
|
85
85
|
scaleTo?: number;
|
|
86
|
-
/** Easing for the zoom ramp. Default "
|
|
86
|
+
/** Easing for the zoom ramp. Default "ease-in-out-cubic". */
|
|
87
87
|
easing?: Easing;
|
|
88
88
|
/** Zoom origin X within the viewport (0 = left, 1 = right). Default 0.5. */
|
|
89
89
|
originX?: number;
|
|
@@ -111,7 +111,7 @@ interface FocusInput {
|
|
|
111
111
|
holdMs?: number;
|
|
112
112
|
}
|
|
113
113
|
/** One extra viewport to also capture the reel at (`viewports`). */
|
|
114
|
-
interface ViewportInput {
|
|
114
|
+
interface ViewportInput$1 {
|
|
115
115
|
/** Name appended to the asset (<name>-<viewport name>). */
|
|
116
116
|
name: string;
|
|
117
117
|
/** Viewport width in CSS px. */
|
|
@@ -153,8 +153,8 @@ interface ScrollReelOptionsInput {
|
|
|
153
153
|
/** Output frames per second (re-encoded from the recording). Default 30. */
|
|
154
154
|
fps?: number;
|
|
155
155
|
/** Time to scroll from top to bottom (ms). Default 6000. */
|
|
156
|
-
|
|
157
|
-
/** Easing for the default top→bottom scroll. Default "
|
|
156
|
+
durationMs?: number;
|
|
157
|
+
/** Easing for the default top→bottom scroll. Default "ease-in-out-cubic". */
|
|
158
158
|
easing?: Easing;
|
|
159
159
|
/** Dwell at the top before scrolling (ms). Default 500. */
|
|
160
160
|
startDelayMs?: number;
|
|
@@ -207,7 +207,7 @@ interface ScrollReelOptionsInput {
|
|
|
207
207
|
/** Add this class to <html> before capture (e.g. to trigger a CSS-class dark theme). Omit for none. */
|
|
208
208
|
themeClass?: string;
|
|
209
209
|
/** Also capture the reel at these viewports; each emits an asset (<name>-<viewport name>). */
|
|
210
|
-
viewports?: ViewportInput[];
|
|
210
|
+
viewports?: ViewportInput$1[];
|
|
211
211
|
/**
|
|
212
212
|
* Capture several routes and concatenate them into one reel ("frames" path). Emits a single asset
|
|
213
213
|
* (variants skipped; aspect/outputs apply to the final tour).
|
|
@@ -257,8 +257,8 @@ interface ScrollReelOptionsInput {
|
|
|
257
257
|
/** Author-facing input (documented for editor hover; the schema validates it at run time). */
|
|
258
258
|
type ScrollReelOptions = ScrollReelOptionsInput;
|
|
259
259
|
|
|
260
|
-
/** A named viewport to capture at; each
|
|
261
|
-
interface
|
|
260
|
+
/** A named viewport to capture at; each viewport emits its own asset. */
|
|
261
|
+
interface ViewportInput {
|
|
262
262
|
/** Label for this viewport — used in the filename + manifest id (e.g. "desktop"). */
|
|
263
263
|
name: string;
|
|
264
264
|
/** Viewport width in CSS px. */
|
|
@@ -268,10 +268,10 @@ interface BreakpointInput {
|
|
|
268
268
|
* full page height); only affects viewport/element captures.
|
|
269
269
|
*/
|
|
270
270
|
height?: number;
|
|
271
|
-
/** Override the generator-level `deviceScaleFactor` for this
|
|
271
|
+
/** Override the generator-level `deviceScaleFactor` for this viewport. Omit to inherit it. */
|
|
272
272
|
deviceScaleFactor?: number;
|
|
273
273
|
}
|
|
274
|
-
/** A specific element to capture (in addition to the page) at each
|
|
274
|
+
/** A specific element to capture (in addition to the page) at each viewport. */
|
|
275
275
|
interface ElementShotInput {
|
|
276
276
|
/** CSS selector of the element to shoot. */
|
|
277
277
|
selector: string;
|
|
@@ -280,14 +280,14 @@ interface ElementShotInput {
|
|
|
280
280
|
}
|
|
281
281
|
/**
|
|
282
282
|
* Author-facing options for the `screenshots` generator — responsive stills of a page (one per
|
|
283
|
-
*
|
|
283
|
+
* viewport), plus optional per-element crops. Everything is optional; sensible defaults apply.
|
|
284
284
|
*/
|
|
285
285
|
interface ScreenshotsOptionsInput {
|
|
286
286
|
/**
|
|
287
287
|
* Viewports to capture at (at least one); each emits its own asset. Default:
|
|
288
288
|
* desktop 1440×900 + mobile 390×844.
|
|
289
289
|
*/
|
|
290
|
-
|
|
290
|
+
viewports?: ViewportInput[];
|
|
291
291
|
/** Capture the entire scrollable page (vs. just the viewport). Default true. */
|
|
292
292
|
fullPage?: boolean;
|
|
293
293
|
/** Image format. Default "png". */
|
|
@@ -300,7 +300,7 @@ interface ScreenshotsOptionsInput {
|
|
|
300
300
|
waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
|
|
301
301
|
/** Optional element to wait for before capturing (e.g. a hero image). Omit to skip. */
|
|
302
302
|
waitForSelector?: string;
|
|
303
|
-
/** Specific elements to crop (in addition to the page) at every
|
|
303
|
+
/** Specific elements to crop (in addition to the page) at every viewport. Default none. */
|
|
304
304
|
elements?: ElementShotInput[];
|
|
305
305
|
/** Capture with a transparent background (png only). Default false. */
|
|
306
306
|
omitBackground?: boolean;
|
|
@@ -318,9 +318,9 @@ type WallEasing = z.infer<typeof wallEasingEnum>;
|
|
|
318
318
|
interface WallPulseInput {
|
|
319
319
|
/** When the pulse starts, as a fraction of the clip (0..1). */
|
|
320
320
|
at: number;
|
|
321
|
-
/** How long the move takes, as a fraction of the clip (0..1). If `at +
|
|
321
|
+
/** How long the move takes, as a fraction of the clip (0..1). If `at + span > 1`, the start
|
|
322
322
|
* shifts back so the move ends at the loop point. */
|
|
323
|
-
|
|
323
|
+
span: number;
|
|
324
324
|
/** How far it travels, in periods (1 = one full tile-set / one wrap). Usually 0..1. */
|
|
325
325
|
distance: number;
|
|
326
326
|
/** Easing of the move's ramp. Default "ease-in-out". */
|
|
@@ -373,8 +373,8 @@ interface WallOptionsInput {
|
|
|
373
373
|
deviceScaleFactor?: number;
|
|
374
374
|
/** Output frames per second. Default 30. */
|
|
375
375
|
fps?: number;
|
|
376
|
-
/** Clip length in
|
|
377
|
-
|
|
376
|
+
/** Clip length in ms — the whole loop. Default 16000. */
|
|
377
|
+
durationMs?: number;
|
|
378
378
|
/** x264 quality, 0–51 (lower = better quality / larger file). Default 18. */
|
|
379
379
|
crf?: number;
|
|
380
380
|
/**
|
|
@@ -430,8 +430,8 @@ type WallOptions = WallOptionsInput;
|
|
|
430
430
|
interface PulseInput {
|
|
431
431
|
/** Human label for the beat, e.g. "color sweep" — purely to keep the config readable. */
|
|
432
432
|
name?: string;
|
|
433
|
-
/** Length of this beat
|
|
434
|
-
|
|
433
|
+
/** Length of this beat in ms. */
|
|
434
|
+
durationMs: number;
|
|
435
435
|
/** Fraction of cells whose glyph changes during this beat (0..1; 1 = every cell once; 0 = a hold). */
|
|
436
436
|
chars?: number;
|
|
437
437
|
/** Fraction of cells whose color changes during this beat (0..1; 1 = every cell once). */
|
|
@@ -496,8 +496,8 @@ interface SpecimenOptionsInput {
|
|
|
496
496
|
demo?: boolean;
|
|
497
497
|
/** Output frames per second. Default 30. */
|
|
498
498
|
fps?: number;
|
|
499
|
-
/** Clip length in
|
|
500
|
-
|
|
499
|
+
/** Clip length in ms. Defaults to the (mirrored) sum of the pulse durations; set to override. */
|
|
500
|
+
durationMs?: number;
|
|
501
501
|
/** Output frame width in px. Default 1920. */
|
|
502
502
|
width?: number;
|
|
503
503
|
/** Output frame height in px. Default 1080. */
|
|
@@ -626,10 +626,10 @@ interface PaletteReelOptionsInput {
|
|
|
626
626
|
orientation?: "rows" | "columns";
|
|
627
627
|
/** Fields revealed when a color expands (the name is always shown, so it's ignored here). Default hex + oklch + rgb. */
|
|
628
628
|
details?: FieldId[];
|
|
629
|
-
/** How long each color stays fully open before handing off to the next. Default
|
|
630
|
-
|
|
631
|
-
/** Crossfade length from one open color to the next. Default
|
|
632
|
-
|
|
629
|
+
/** How long each color stays fully open before handing off to the next (ms). Default 2000. */
|
|
630
|
+
holdMs?: number;
|
|
631
|
+
/** Crossfade length from one open color to the next (ms). Default 700. */
|
|
632
|
+
transitionMs?: number;
|
|
633
633
|
/**
|
|
634
634
|
* Ping-pong the sweep (down the list then back up) so every handoff is between neighbouring bands —
|
|
635
635
|
* the open band only ever slides by one, avoiding the "pinch" of a last→first jump at the loop seam.
|
|
@@ -638,8 +638,8 @@ interface PaletteReelOptionsInput {
|
|
|
638
638
|
bounce?: boolean;
|
|
639
639
|
/** Easing applied to the crossfade ramp. Default "ease-in-out". */
|
|
640
640
|
easing?: "linear" | "ease-in" | "ease-out" | "ease-in-out";
|
|
641
|
-
/** Clip length override (
|
|
642
|
-
|
|
641
|
+
/** Clip length override (ms). Omit to derive (count × (hold + transition)) for a clean loop. */
|
|
642
|
+
durationMs?: number;
|
|
643
643
|
/** How many times a sliver's share a fully-open band takes (a collapsed sliver is the baseline). Default 12. */
|
|
644
644
|
grownFlex?: number;
|
|
645
645
|
/** Minimum cross-size of a sliver in px so its name stays legible. Default 0 (derive from height). */
|
|
@@ -782,9 +782,11 @@ interface ShowcaseSettingsInput {
|
|
|
782
782
|
defaults?: {
|
|
783
783
|
"scroll-reel"?: ScrollReelOptions;
|
|
784
784
|
screenshots?: ScreenshotsOptions;
|
|
785
|
+
wall?: WallOptions;
|
|
785
786
|
specimen?: SpecimenOptions;
|
|
786
787
|
palette?: PaletteOptions;
|
|
787
788
|
"palette-reel"?: PaletteReelOptions;
|
|
789
|
+
image?: ImageOptions;
|
|
788
790
|
};
|
|
789
791
|
}
|
|
790
792
|
/** Fields common to every asset. */
|
|
@@ -797,7 +799,7 @@ interface AssetBaseInput {
|
|
|
797
799
|
/**
|
|
798
800
|
* Discriminated by `generator` so each asset gets the right `options` autocomplete. URL-based
|
|
799
801
|
* generators take a `url` — absolute, or a `/path` resolved against the managed server; omit it
|
|
800
|
-
* to capture the managed server's root.
|
|
802
|
+
* to capture the managed server's root. Local generators (wall, specimen, palette, image) need none.
|
|
801
803
|
*/
|
|
802
804
|
type AssetSpecInput = (AssetBaseInput & {
|
|
803
805
|
url?: string;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/define-config.ts"],"sourcesContent":["import type { ScrollReelOptions } from \"@/generators/scroll-reel/options\";\nimport type { ScreenshotsOptions } from \"@/generators/screenshots/options\";\nimport type { WallOptions } from \"@/generators/wall/options\";\nimport type { SpecimenOptions } from \"@/generators/specimen/options\";\nimport type { PaletteOptions } from \"@/generators/palette/options\";\nimport type { PaletteReelOptions } from \"@/generators/palette-reel/options\";\nimport type { ImageOptions } from \"@/generators/image/options\";\n\n/**\n * Author-facing config types. These power editor autocomplete in `pro-visu.config.ts`.\n * The runtime validator lives in `schema.ts`; each generator validates its own options.\n * When a new generator is added, extend `AssetSpecInput` and `defaults` here.\n */\n\nexport type LogLevel = \"silent\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nexport interface BrowserSettingsInput {\n /** Run the browser without a visible window (default true). Set false to watch captures. */\n headless?: boolean;\n /** Browser channel, e.g. \"chrome\" or \"msedge\". Omit to use the managed Chromium. */\n channel?: string;\n /** Absolute path to a browser executable (overrides `channel` + managed Chromium). */\n executablePath?: string;\n /** Extra launch args, e.g. [\"--no-sandbox\"] on CI. */\n args?: string[];\n /** Browser launch timeout (ms). */\n timeout?: number;\n}\n\nexport interface ServerSettingsInput {\n /**\n * Command that starts the server, run via the shell. The tool sets PORT/HOST in its environment\n * to the readiness port/host, so frameworks that honor PORT (Next, Vite, …) bind it\n * automatically — `command: \"next start\"` is enough. An explicit flag still wins.\n */\n command: string;\n /** Optional one-shot build to run first, e.g. \"next build\". */\n build?: string;\n /** Health-check URL polled until it responds. Defaults to http://127.0.0.1:<port>. */\n url?: string;\n /**\n * Port the readiness check polls — also derives `url` when `url` is omitted, and is passed to\n * the command as PORT so it binds the same port automatically. Defaults to 3101.\n */\n port?: number;\n /** Working dir for build + command, relative to the config dir. Defaults to it. */\n cwd?: string;\n /** Max time to wait for the server to become reachable (ms). Default 120000. */\n readyTimeoutMs?: number;\n /** If a server is already reachable at the URL, use it as-is (don't start/stop one). */\n reuseExisting?: boolean;\n}\n\nexport interface CaptureSettingsInput {\n /** Query params appended to every URL-based asset, e.g. `{ capture: \"1\" }` → `?capture=1`. */\n query?: Record<string, string>;\n /** Cookies set on every capture context before navigation (scoped to the asset's origin). */\n cookies?: { name: string; value: string }[];\n /** localStorage entries seeded (per origin) before the page's own scripts run. */\n localStorage?: Record<string, string>;\n /** JS run in every page before its own scripts, e.g. `window.__PV_CAPTURE__ = true`. */\n initScript?: string;\n}\n\nexport interface ShowcaseSettingsInput {\n /** Output directory for generated assets, relative to the repo root (default \"pro-visu\"). */\n outDir?: string;\n /** How many assets to generate in parallel (shared browser, separate contexts). */\n concurrency?: number;\n /**\n * Raise the Node heap (V8 old-space) to this many MB. Heavy jobs — large frame-stepped walls\n * especially — can exceed Node's ~4 GB default and crash with \"JavaScript heap out of memory\".\n * When set above the current limit, the CLI re-execs itself with `--max-old-space-size`. This is\n * the Node process heap, not the browser's.\n */\n maxMemoryMB?: number;\n /** CLI log verbosity. */\n logLevel?: LogLevel;\n /** Playwright launch controls. */\n browser?: BrowserSettingsInput;\n /** Build → start → wait → capture → stop a server automatically. */\n server?: ServerSettingsInput;\n /** Capture-mode toggles applied to every URL-based asset (disable animations, hide cookie banner, …). */\n capture?: CaptureSettingsInput;\n /** \"draft\" lowers fps/scale and speeds the encoder for fast iteration. */\n quality?: \"draft\" | \"final\";\n /** Skip assets whose inputs+options+tool fingerprint is unchanged (opt-in). */\n cache?: boolean;\n /** Per-generator option defaults, keyed by generator id, merged under each asset. */\n defaults?: {\n \"scroll-reel\"?: ScrollReelOptions;\n screenshots?: ScreenshotsOptions;\n specimen?: SpecimenOptions;\n palette?: PaletteOptions;\n \"palette-reel\"?: PaletteReelOptions;\n };\n}\n\n/** Fields common to every asset. */\nexport interface AssetBaseInput {\n /** Unique id for this asset — also the output filename (`<slug(name)>.mp4`) and manifest key. */\n name: string;\n /** Other assets this one consumes, as `{ slotName: assetName }`. Producers run first. */\n inputs?: Record<string, string>;\n}\n\n/**\n * Discriminated by `generator` so each asset gets the right `options` autocomplete. URL-based\n * generators take a `url` — absolute, or a `/path` resolved against the managed server; omit it\n * to capture the managed server's root.
|
|
1
|
+
{"version":3,"sources":["../src/config/define-config.ts"],"sourcesContent":["import type { ScrollReelOptions } from \"@/generators/scroll-reel/options\";\nimport type { ScreenshotsOptions } from \"@/generators/screenshots/options\";\nimport type { WallOptions } from \"@/generators/wall/options\";\nimport type { SpecimenOptions } from \"@/generators/specimen/options\";\nimport type { PaletteOptions } from \"@/generators/palette/options\";\nimport type { PaletteReelOptions } from \"@/generators/palette-reel/options\";\nimport type { ImageOptions } from \"@/generators/image/options\";\n\n/**\n * Author-facing config types. These power editor autocomplete in `pro-visu.config.ts`.\n * The runtime validator lives in `schema.ts`; each generator validates its own options.\n * When a new generator is added, extend `AssetSpecInput` and `defaults` here.\n */\n\nexport type LogLevel = \"silent\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nexport interface BrowserSettingsInput {\n /** Run the browser without a visible window (default true). Set false to watch captures. */\n headless?: boolean;\n /** Browser channel, e.g. \"chrome\" or \"msedge\". Omit to use the managed Chromium. */\n channel?: string;\n /** Absolute path to a browser executable (overrides `channel` + managed Chromium). */\n executablePath?: string;\n /** Extra launch args, e.g. [\"--no-sandbox\"] on CI. */\n args?: string[];\n /** Browser launch timeout (ms). */\n timeout?: number;\n}\n\nexport interface ServerSettingsInput {\n /**\n * Command that starts the server, run via the shell. The tool sets PORT/HOST in its environment\n * to the readiness port/host, so frameworks that honor PORT (Next, Vite, …) bind it\n * automatically — `command: \"next start\"` is enough. An explicit flag still wins.\n */\n command: string;\n /** Optional one-shot build to run first, e.g. \"next build\". */\n build?: string;\n /** Health-check URL polled until it responds. Defaults to http://127.0.0.1:<port>. */\n url?: string;\n /**\n * Port the readiness check polls — also derives `url` when `url` is omitted, and is passed to\n * the command as PORT so it binds the same port automatically. Defaults to 3101.\n */\n port?: number;\n /** Working dir for build + command, relative to the config dir. Defaults to it. */\n cwd?: string;\n /** Max time to wait for the server to become reachable (ms). Default 120000. */\n readyTimeoutMs?: number;\n /** If a server is already reachable at the URL, use it as-is (don't start/stop one). */\n reuseExisting?: boolean;\n}\n\nexport interface CaptureSettingsInput {\n /** Query params appended to every URL-based asset, e.g. `{ capture: \"1\" }` → `?capture=1`. */\n query?: Record<string, string>;\n /** Cookies set on every capture context before navigation (scoped to the asset's origin). */\n cookies?: { name: string; value: string }[];\n /** localStorage entries seeded (per origin) before the page's own scripts run. */\n localStorage?: Record<string, string>;\n /** JS run in every page before its own scripts, e.g. `window.__PV_CAPTURE__ = true`. */\n initScript?: string;\n}\n\nexport interface ShowcaseSettingsInput {\n /** Output directory for generated assets, relative to the repo root (default \"pro-visu\"). */\n outDir?: string;\n /** How many assets to generate in parallel (shared browser, separate contexts). */\n concurrency?: number;\n /**\n * Raise the Node heap (V8 old-space) to this many MB. Heavy jobs — large frame-stepped walls\n * especially — can exceed Node's ~4 GB default and crash with \"JavaScript heap out of memory\".\n * When set above the current limit, the CLI re-execs itself with `--max-old-space-size`. This is\n * the Node process heap, not the browser's.\n */\n maxMemoryMB?: number;\n /** CLI log verbosity. */\n logLevel?: LogLevel;\n /** Playwright launch controls. */\n browser?: BrowserSettingsInput;\n /** Build → start → wait → capture → stop a server automatically. */\n server?: ServerSettingsInput;\n /** Capture-mode toggles applied to every URL-based asset (disable animations, hide cookie banner, …). */\n capture?: CaptureSettingsInput;\n /** \"draft\" lowers fps/scale and speeds the encoder for fast iteration. */\n quality?: \"draft\" | \"final\";\n /** Skip assets whose inputs+options+tool fingerprint is unchanged (opt-in). */\n cache?: boolean;\n /** Per-generator option defaults, keyed by generator id, merged under each asset. */\n defaults?: {\n \"scroll-reel\"?: ScrollReelOptions;\n screenshots?: ScreenshotsOptions;\n wall?: WallOptions;\n specimen?: SpecimenOptions;\n palette?: PaletteOptions;\n \"palette-reel\"?: PaletteReelOptions;\n image?: ImageOptions;\n };\n}\n\n/** Fields common to every asset. */\nexport interface AssetBaseInput {\n /** Unique id for this asset — also the output filename (`<slug(name)>.mp4`) and manifest key. */\n name: string;\n /** Other assets this one consumes, as `{ slotName: assetName }`. Producers run first. */\n inputs?: Record<string, string>;\n}\n\n/**\n * Discriminated by `generator` so each asset gets the right `options` autocomplete. URL-based\n * generators take a `url` — absolute, or a `/path` resolved against the managed server; omit it\n * to capture the managed server's root. Local generators (wall, specimen, palette, image) need none.\n */\nexport type AssetSpecInput =\n | (AssetBaseInput & { url?: string; generator: \"scroll-reel\"; options?: ScrollReelOptions })\n | (AssetBaseInput & { url?: string; generator: \"screenshots\"; options?: ScreenshotsOptions })\n | (AssetBaseInput & { generator: \"wall\"; options?: WallOptions })\n | (AssetBaseInput & { generator: \"specimen\"; options: SpecimenOptions })\n | (AssetBaseInput & { generator: \"palette\"; options: PaletteOptions })\n | (AssetBaseInput & { generator: \"palette-reel\"; options: PaletteReelOptions })\n | (AssetBaseInput & { generator: \"image\"; options: ImageOptions });\n\nexport interface ShowcaseUserConfig {\n settings?: ShowcaseSettingsInput;\n assets: AssetSpecInput[];\n}\n\n/** Identity helper that gives `pro-visu.config.ts` full type-checking + autocomplete. */\nexport function defineConfig(config: ShowcaseUserConfig): ShowcaseUserConfig {\n return config;\n}\n"],"mappings":";AAgIO,SAAS,aAAa,QAAgD;AAC3E,SAAO;AACT;","names":[]}
|