paperlab 0.3.1 → 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 +16 -16
- package/dist/{chunk-XE4E43MD.js → chunk-6IADJZX5.js} +2424 -2242
- package/dist/chunk-6IADJZX5.js.map +1 -0
- package/dist/index.cjs +887 -843
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +450 -1934
- package/dist/index.d.ts +450 -1934
- package/dist/index.js +202 -429
- package/dist/index.js.map +1 -1
- package/dist/slots-CIo7FnlY.d.cts +13357 -0
- package/dist/slots-CIo7FnlY.d.ts +13357 -0
- package/dist/stage.cjs +2377 -2125
- package/dist/stage.cjs.map +1 -1
- package/dist/stage.d.cts +52 -204
- package/dist/stage.d.ts +52 -204
- package/dist/stage.js +29 -18
- package/dist/stage.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-XE4E43MD.js.map +0 -1
- package/dist/slots-DUMR64HB.d.cts +0 -6661
- package/dist/slots-DUMR64HB.d.ts +0 -6661
package/dist/stage.d.cts
CHANGED
|
@@ -1,163 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-
|
|
2
|
+
import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-CIo7FnlY.cjs';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* The room the walk is in.
|
|
7
|
-
*
|
|
8
|
-
* Stage mode was a void with a horizon: a graded dome, a flat plane, and a
|
|
9
|
-
* bright rectangle at the end, none of it a knowable size. That is why the
|
|
10
|
-
* walking figure was carrying the whole scale burden by itself — and why
|
|
11
|
-
* simply removing the figure would have left an abstraction rather than a
|
|
12
|
-
* hall. Architecture is the better answer: objects whose size the viewer
|
|
13
|
-
* already knows, made of flat surfaces under good light, which is the one
|
|
14
|
-
* thing a renderer never gets wrong.
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* What holds the paper up.
|
|
18
|
-
*
|
|
19
|
-
* Every paper installation shows its hardware — monofilament from a ceiling
|
|
20
|
-
* grid, steel wire, bulldog clips, a rod — and in the scattered-sheet pieces
|
|
21
|
-
* the threads are half the composition. Stage mode's banners hung from
|
|
22
|
-
* nothing at all, which is a bigger realism gap than any shader in the
|
|
23
|
-
* backlog and closes for a few thin lines of geometry.
|
|
24
|
-
*/
|
|
25
|
-
declare const stageSuspensionSchema: z.ZodObject<{
|
|
26
|
-
/**
|
|
27
|
-
* What carries the load.
|
|
28
|
-
*
|
|
29
|
-
* `thread` is monofilament to the ceiling — one straight line per sheet.
|
|
30
|
-
* `rod` is a dowel across each sheet's top edge, hung from the ceiling at
|
|
31
|
-
* both ends, which is a different image entirely: a rank on threads reads
|
|
32
|
-
* as sheets floating in a row, and a rank on rods reads as sheets that
|
|
33
|
-
* were HUNG, by someone, on something. `none` is for a stage where the
|
|
34
|
-
* paper is meant to be impossible.
|
|
35
|
-
*/
|
|
36
|
-
type: z.ZodDefault<z.ZodEnum<["none", "thread", "rod"]>>;
|
|
37
|
-
color: z.ZodDefault<z.ZodString>;
|
|
38
|
-
/**
|
|
39
|
-
* What grips the sheet.
|
|
40
|
-
*
|
|
41
|
-
* A clip is wide and shallow — the bulldog clip of a gallery. A peg is
|
|
42
|
-
* narrow and deep, and grips DOWN the face of the sheet rather than
|
|
43
|
-
* across its edge: the domestic one, a line of paper on a washing line.
|
|
44
|
-
* They are told apart by silhouette at any distance, which is the only
|
|
45
|
-
* thing that survives being one instanced box at the top of an
|
|
46
|
-
* eight-metre banner.
|
|
47
|
-
*
|
|
48
|
-
* This replaced a `clips: boolean`. Two of the four pieces of hardware the
|
|
49
|
-
* plan named — pegs, and a rod — had no way to be asked for, and a boolean
|
|
50
|
-
* cannot grow a third answer.
|
|
51
|
-
*/
|
|
52
|
-
hardware: z.ZodDefault<z.ZodEnum<["none", "clip", "peg"]>>;
|
|
53
|
-
}, "strip", z.ZodTypeAny, {
|
|
54
|
-
type: "none" | "thread" | "rod";
|
|
55
|
-
color: string;
|
|
56
|
-
hardware: "none" | "clip" | "peg";
|
|
57
|
-
}, {
|
|
58
|
-
type?: "none" | "thread" | "rod" | undefined;
|
|
59
|
-
color?: string | undefined;
|
|
60
|
-
hardware?: "none" | "clip" | "peg" | undefined;
|
|
61
|
-
}>;
|
|
62
|
-
declare const stageRoomSchema: z.ZodObject<{
|
|
63
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
64
|
-
/**
|
|
65
|
-
* Ceiling height, as a multiple of the paper's own height.
|
|
66
|
-
*
|
|
67
|
-
* Relative rather than absolute because the banners ARE the architecture
|
|
68
|
-
* here: a hall whose ceiling sits just above its hangings reads as built
|
|
69
|
-
* for them, and one at a fixed world height reads as whatever the paper
|
|
70
|
-
* happened to be scaled to that day.
|
|
71
|
-
*/
|
|
72
|
-
height: z.ZodDefault<z.ZodNumber>;
|
|
73
|
-
color: z.ZodDefault<z.ZodString>;
|
|
74
|
-
/** Columns flanking the walk — see `stageColumnsSchema`. */
|
|
75
|
-
columns: z.ZodDefault<z.ZodObject<{
|
|
76
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
77
|
-
/** Centres this far apart along the walk. Roughly a bay. */
|
|
78
|
-
spacing: z.ZodDefault<z.ZodNumber>;
|
|
79
|
-
/** Shaft width. The number doing the work — a column is a known size. */
|
|
80
|
-
width: z.ZodDefault<z.ZodNumber>;
|
|
81
|
-
/**
|
|
82
|
-
* How far off the walk's centreline each rank stands.
|
|
83
|
-
*
|
|
84
|
-
* Outside the banners, always. Columns are the room; the paper is the
|
|
85
|
-
* subject, and a column standing between the viewer and a banner has
|
|
86
|
-
* swapped the two over. Default clears a `colonnade`'s widest sensible
|
|
87
|
-
* aisle with room to spare.
|
|
88
|
-
*/
|
|
89
|
-
offset: z.ZodDefault<z.ZodNumber>;
|
|
90
|
-
/**
|
|
91
|
-
* Stone, and darker than paper on purpose.
|
|
92
|
-
*
|
|
93
|
-
* The brightest thing in any of these frames has to be the light, and the
|
|
94
|
-
* second brightest has to be the paper. A column the same value as a
|
|
95
|
-
* banner does not read as architecture behind the subject; it reads as
|
|
96
|
-
* more banners, and the eye stops being able to tell what the room is made
|
|
97
|
-
* of from what is hanging in it.
|
|
98
|
-
*/
|
|
99
|
-
color: z.ZodDefault<z.ZodString>;
|
|
100
|
-
}, "strip", z.ZodTypeAny, {
|
|
101
|
-
width: number;
|
|
102
|
-
offset: number;
|
|
103
|
-
color: string;
|
|
104
|
-
spacing: number;
|
|
105
|
-
enabled: boolean;
|
|
106
|
-
}, {
|
|
107
|
-
width?: number | undefined;
|
|
108
|
-
offset?: number | undefined;
|
|
109
|
-
color?: string | undefined;
|
|
110
|
-
spacing?: number | undefined;
|
|
111
|
-
enabled?: boolean | undefined;
|
|
112
|
-
}>>;
|
|
113
|
-
/** A wall at the end of the walk with the source in it. */
|
|
114
|
-
doorway: z.ZodDefault<z.ZodObject<{
|
|
115
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
116
|
-
/** Opening size, as a multiple of the source's own. 1 frames it exactly. */
|
|
117
|
-
opening: z.ZodDefault<z.ZodNumber>;
|
|
118
|
-
color: z.ZodDefault<z.ZodString>;
|
|
119
|
-
}, "strip", z.ZodTypeAny, {
|
|
120
|
-
color: string;
|
|
121
|
-
enabled: boolean;
|
|
122
|
-
opening: number;
|
|
123
|
-
}, {
|
|
124
|
-
color?: string | undefined;
|
|
125
|
-
enabled?: boolean | undefined;
|
|
126
|
-
opening?: number | undefined;
|
|
127
|
-
}>>;
|
|
128
|
-
}, "strip", z.ZodTypeAny, {
|
|
129
|
-
height: number;
|
|
130
|
-
color: string;
|
|
131
|
-
enabled: boolean;
|
|
132
|
-
columns: {
|
|
133
|
-
width: number;
|
|
134
|
-
offset: number;
|
|
135
|
-
color: string;
|
|
136
|
-
spacing: number;
|
|
137
|
-
enabled: boolean;
|
|
138
|
-
};
|
|
139
|
-
doorway: {
|
|
140
|
-
color: string;
|
|
141
|
-
enabled: boolean;
|
|
142
|
-
opening: number;
|
|
143
|
-
};
|
|
144
|
-
}, {
|
|
145
|
-
height?: number | undefined;
|
|
146
|
-
color?: string | undefined;
|
|
147
|
-
enabled?: boolean | undefined;
|
|
148
|
-
columns?: {
|
|
149
|
-
width?: number | undefined;
|
|
150
|
-
offset?: number | undefined;
|
|
151
|
-
color?: string | undefined;
|
|
152
|
-
spacing?: number | undefined;
|
|
153
|
-
enabled?: boolean | undefined;
|
|
154
|
-
} | undefined;
|
|
155
|
-
doorway?: {
|
|
156
|
-
color?: string | undefined;
|
|
157
|
-
enabled?: boolean | undefined;
|
|
158
|
-
opening?: number | undefined;
|
|
159
|
-
} | undefined;
|
|
160
|
-
}>;
|
|
161
5
|
/**
|
|
162
6
|
* The print: what happens to the frame after the scene is drawn.
|
|
163
7
|
*
|
|
@@ -374,15 +218,15 @@ declare const stageSchema: z.ZodObject<{
|
|
|
374
218
|
spread: z.ZodDefault<z.ZodNumber>;
|
|
375
219
|
}, "strip", z.ZodTypeAny, {
|
|
376
220
|
color: string;
|
|
377
|
-
enabled: boolean;
|
|
378
221
|
spread: number;
|
|
222
|
+
enabled: boolean;
|
|
379
223
|
zenith: string;
|
|
380
224
|
beyond: number;
|
|
381
225
|
surround: boolean;
|
|
382
226
|
}, {
|
|
383
227
|
color?: string | undefined;
|
|
384
|
-
enabled?: boolean | undefined;
|
|
385
228
|
spread?: number | undefined;
|
|
229
|
+
enabled?: boolean | undefined;
|
|
386
230
|
zenith?: string | undefined;
|
|
387
231
|
beyond?: number | undefined;
|
|
388
232
|
surround?: boolean | undefined;
|
|
@@ -634,6 +478,17 @@ declare const stageSchema: z.ZodObject<{
|
|
|
634
478
|
closed: boolean;
|
|
635
479
|
};
|
|
636
480
|
lighting: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox";
|
|
481
|
+
light: {
|
|
482
|
+
key?: number | undefined;
|
|
483
|
+
height?: number | undefined;
|
|
484
|
+
color?: string | undefined;
|
|
485
|
+
studio?: number | undefined;
|
|
486
|
+
exposure?: number | undefined;
|
|
487
|
+
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
488
|
+
direction?: number | undefined;
|
|
489
|
+
ambient?: number | undefined;
|
|
490
|
+
haze?: number | undefined;
|
|
491
|
+
};
|
|
637
492
|
figure: {
|
|
638
493
|
height: number;
|
|
639
494
|
speed: number;
|
|
@@ -646,23 +501,12 @@ declare const stageSchema: z.ZodObject<{
|
|
|
646
501
|
};
|
|
647
502
|
source: {
|
|
648
503
|
color: string;
|
|
649
|
-
enabled: boolean;
|
|
650
504
|
spread: number;
|
|
505
|
+
enabled: boolean;
|
|
651
506
|
zenith: string;
|
|
652
507
|
beyond: number;
|
|
653
508
|
surround: boolean;
|
|
654
509
|
};
|
|
655
|
-
light: {
|
|
656
|
-
key?: number | undefined;
|
|
657
|
-
height?: number | undefined;
|
|
658
|
-
color?: string | undefined;
|
|
659
|
-
studio?: number | undefined;
|
|
660
|
-
exposure?: number | undefined;
|
|
661
|
-
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
662
|
-
direction?: number | undefined;
|
|
663
|
-
ambient?: number | undefined;
|
|
664
|
-
haze?: number | undefined;
|
|
665
|
-
};
|
|
666
510
|
shot: {
|
|
667
511
|
height: number;
|
|
668
512
|
offset: number;
|
|
@@ -711,6 +555,17 @@ declare const stageSchema: z.ZodObject<{
|
|
|
711
555
|
closed?: boolean | undefined;
|
|
712
556
|
} | undefined;
|
|
713
557
|
lighting?: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox" | undefined;
|
|
558
|
+
light?: {
|
|
559
|
+
key?: number | undefined;
|
|
560
|
+
height?: number | undefined;
|
|
561
|
+
color?: string | undefined;
|
|
562
|
+
studio?: number | undefined;
|
|
563
|
+
exposure?: number | undefined;
|
|
564
|
+
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
565
|
+
direction?: number | undefined;
|
|
566
|
+
ambient?: number | undefined;
|
|
567
|
+
haze?: number | undefined;
|
|
568
|
+
} | undefined;
|
|
714
569
|
figure?: {
|
|
715
570
|
height?: number | undefined;
|
|
716
571
|
speed?: number | undefined;
|
|
@@ -723,23 +578,12 @@ declare const stageSchema: z.ZodObject<{
|
|
|
723
578
|
} | undefined;
|
|
724
579
|
source?: {
|
|
725
580
|
color?: string | undefined;
|
|
726
|
-
enabled?: boolean | undefined;
|
|
727
581
|
spread?: number | undefined;
|
|
582
|
+
enabled?: boolean | undefined;
|
|
728
583
|
zenith?: string | undefined;
|
|
729
584
|
beyond?: number | undefined;
|
|
730
585
|
surround?: boolean | undefined;
|
|
731
586
|
} | undefined;
|
|
732
|
-
light?: {
|
|
733
|
-
key?: number | undefined;
|
|
734
|
-
height?: number | undefined;
|
|
735
|
-
color?: string | undefined;
|
|
736
|
-
studio?: number | undefined;
|
|
737
|
-
exposure?: number | undefined;
|
|
738
|
-
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
739
|
-
direction?: number | undefined;
|
|
740
|
-
ambient?: number | undefined;
|
|
741
|
-
haze?: number | undefined;
|
|
742
|
-
} | undefined;
|
|
743
587
|
shot?: {
|
|
744
588
|
height?: number | undefined;
|
|
745
589
|
offset?: number | undefined;
|
|
@@ -895,6 +739,28 @@ declare const qualityNames: readonly ["auto", "low", "medium", "high"];
|
|
|
895
739
|
type QualityName = (typeof qualityNames)[number];
|
|
896
740
|
type QualityTier = Exclude<QualityName, 'auto'>;
|
|
897
741
|
|
|
742
|
+
/**
|
|
743
|
+
* Stage mode: paper as architecture, with a figure walking through it.
|
|
744
|
+
*
|
|
745
|
+
* The one guarantee worth stating — every part of the scene reads the SAME
|
|
746
|
+
* walk. The layout arranges along it, the figure follows it, the camera is
|
|
747
|
+
* stationed on it, and the source stands at the end of it. Handing those
|
|
748
|
+
* four their own copies of a path is the failure this component exists to
|
|
749
|
+
* prevent: a colonnade whose aisle the figure does not walk down is not a
|
|
750
|
+
* near-miss, it is a completely different picture.
|
|
751
|
+
*/
|
|
752
|
+
/** A banner: tall, translucent, with folds running the length of its drop. */
|
|
753
|
+
/**
|
|
754
|
+
* The sheet a stage hangs when the caller does not name one.
|
|
755
|
+
*
|
|
756
|
+
* Exported because it is the base anyone RESHAPING a banner has to start
|
|
757
|
+
* from. A caller who wants a wider drop wants this stock, this grain and
|
|
758
|
+
* this drape with different dimensions — and rebuilding it from the schema
|
|
759
|
+
* defaults instead gives a sheet of printer paper with no fold in it, which
|
|
760
|
+
* is a different object. A second copy of these numbers in a caller is a
|
|
761
|
+
* copy free to drift from the one the scene actually falls back to.
|
|
762
|
+
*/
|
|
763
|
+
declare const stageBanner: PaperConfigInput;
|
|
898
764
|
interface PaperStageSceneProps {
|
|
899
765
|
/** Walk, shot, figure, lighting — see `stageSchema`. */
|
|
900
766
|
stage?: StageConfigInput;
|
|
@@ -962,16 +828,6 @@ declare function PaperStageScene({ stage: stageInput, quality, onQualityChange,
|
|
|
962
828
|
/** `<PaperStage />` owns its Canvas; `<PaperStageScene />` drops into an existing one. */
|
|
963
829
|
declare function PaperStage({ children, className, style, ...sceneProps }: PaperStageProps): react.JSX.Element;
|
|
964
830
|
|
|
965
|
-
/**
|
|
966
|
-
* The source's default burn, in linear light.
|
|
967
|
-
*
|
|
968
|
-
* Chosen by matching: at 3.4 the tone-mapped source lands on the same read
|
|
969
|
-
* as the un-mapped plane it replaces, so a stage that never mounts a
|
|
970
|
-
* composer looks the way it always did, and one that does gets a source
|
|
971
|
-
* that blooms instead of a rectangle that clips.
|
|
972
|
-
*/
|
|
973
|
-
declare const SOURCE_INTENSITY = 3.4;
|
|
974
|
-
|
|
975
831
|
/**
|
|
976
832
|
* Named stages. A mode with no presets asks its visitor to invent a space
|
|
977
833
|
* out of eleven sliders before it will show them anything — and stage mode
|
|
@@ -1128,24 +984,16 @@ interface StageExportInput {
|
|
|
1128
984
|
paper?: PaperConfigInput;
|
|
1129
985
|
/** The words the space is built from. Omitted renders blank banners. */
|
|
1130
986
|
text?: string;
|
|
987
|
+
/** Pictures on the banners, one per drop, instead of words. */
|
|
988
|
+
images?: string[];
|
|
1131
989
|
count?: number;
|
|
1132
990
|
/** Bind the walk to page scroll, pinned, rather than to the clock. */
|
|
1133
991
|
scroll?: boolean;
|
|
1134
992
|
/** Exported component name. */
|
|
1135
993
|
componentName?: string;
|
|
1136
994
|
}
|
|
1137
|
-
/** Which named walk these points are, if any — the export reads better for it. */
|
|
1138
|
-
declare function walkNameFor(path: StageConfig['path']): WalkName | undefined;
|
|
1139
995
|
/** The stage config with defaults removed — what actually needs writing down. */
|
|
1140
996
|
declare function diffStage(stage: StageConfigInput): Record<string, unknown>;
|
|
1141
|
-
/**
|
|
1142
|
-
* JSON.stringify, except an array of plain numbers stays on one line. A walk
|
|
1143
|
-
* is a list of coordinate pairs, and the default pretty-printer spreads each
|
|
1144
|
-
* `[6, 17]` over four lines — twenty lines of punctuation for one gentle
|
|
1145
|
-
* curve. Exported code is a product surface; it should read like something a
|
|
1146
|
-
* person wrote.
|
|
1147
|
-
*/
|
|
1148
|
-
declare function stringifyStage(value: unknown, indent?: number): string;
|
|
1149
997
|
/** The one-line visual an agent verifies after `npm run dev`. */
|
|
1150
998
|
declare function describeStage(input: StageExportInput): string;
|
|
1151
999
|
/** Component source shared by the JSX snippet and the agent payload. */
|
|
@@ -1153,4 +1001,4 @@ declare function buildStageComponentSource(input: StageExportInput): string;
|
|
|
1153
1001
|
/** The self-contained stage integration brief — one paste into a coding agent. */
|
|
1154
1002
|
declare function buildStageAgentPayload(input: StageExportInput): string;
|
|
1155
1003
|
|
|
1156
|
-
export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier,
|
|
1004
|
+
export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier, type ShotName, type ShotOptions, type StageConfig, type StageConfigInput, type StageExportInput, type StageGradeConfig, type StageMotion, type StageMotionInput, type StagePreset, type StageScale, type StageShot, type WalkName, type WalkPath, type WalkPathOptions, buildStageAgentPayload, buildStageComponentSource, createWalkPath, describeStage, diffStage, getStagePreset, getWalk, listStagePresets, qualityNames, shotNames, stageBanner, stagePresets, stageSchema, walkNames, walks };
|
package/dist/stage.d.ts
CHANGED
|
@@ -1,163 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-
|
|
2
|
+
import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-CIo7FnlY.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* The room the walk is in.
|
|
7
|
-
*
|
|
8
|
-
* Stage mode was a void with a horizon: a graded dome, a flat plane, and a
|
|
9
|
-
* bright rectangle at the end, none of it a knowable size. That is why the
|
|
10
|
-
* walking figure was carrying the whole scale burden by itself — and why
|
|
11
|
-
* simply removing the figure would have left an abstraction rather than a
|
|
12
|
-
* hall. Architecture is the better answer: objects whose size the viewer
|
|
13
|
-
* already knows, made of flat surfaces under good light, which is the one
|
|
14
|
-
* thing a renderer never gets wrong.
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* What holds the paper up.
|
|
18
|
-
*
|
|
19
|
-
* Every paper installation shows its hardware — monofilament from a ceiling
|
|
20
|
-
* grid, steel wire, bulldog clips, a rod — and in the scattered-sheet pieces
|
|
21
|
-
* the threads are half the composition. Stage mode's banners hung from
|
|
22
|
-
* nothing at all, which is a bigger realism gap than any shader in the
|
|
23
|
-
* backlog and closes for a few thin lines of geometry.
|
|
24
|
-
*/
|
|
25
|
-
declare const stageSuspensionSchema: z.ZodObject<{
|
|
26
|
-
/**
|
|
27
|
-
* What carries the load.
|
|
28
|
-
*
|
|
29
|
-
* `thread` is monofilament to the ceiling — one straight line per sheet.
|
|
30
|
-
* `rod` is a dowel across each sheet's top edge, hung from the ceiling at
|
|
31
|
-
* both ends, which is a different image entirely: a rank on threads reads
|
|
32
|
-
* as sheets floating in a row, and a rank on rods reads as sheets that
|
|
33
|
-
* were HUNG, by someone, on something. `none` is for a stage where the
|
|
34
|
-
* paper is meant to be impossible.
|
|
35
|
-
*/
|
|
36
|
-
type: z.ZodDefault<z.ZodEnum<["none", "thread", "rod"]>>;
|
|
37
|
-
color: z.ZodDefault<z.ZodString>;
|
|
38
|
-
/**
|
|
39
|
-
* What grips the sheet.
|
|
40
|
-
*
|
|
41
|
-
* A clip is wide and shallow — the bulldog clip of a gallery. A peg is
|
|
42
|
-
* narrow and deep, and grips DOWN the face of the sheet rather than
|
|
43
|
-
* across its edge: the domestic one, a line of paper on a washing line.
|
|
44
|
-
* They are told apart by silhouette at any distance, which is the only
|
|
45
|
-
* thing that survives being one instanced box at the top of an
|
|
46
|
-
* eight-metre banner.
|
|
47
|
-
*
|
|
48
|
-
* This replaced a `clips: boolean`. Two of the four pieces of hardware the
|
|
49
|
-
* plan named — pegs, and a rod — had no way to be asked for, and a boolean
|
|
50
|
-
* cannot grow a third answer.
|
|
51
|
-
*/
|
|
52
|
-
hardware: z.ZodDefault<z.ZodEnum<["none", "clip", "peg"]>>;
|
|
53
|
-
}, "strip", z.ZodTypeAny, {
|
|
54
|
-
type: "none" | "thread" | "rod";
|
|
55
|
-
color: string;
|
|
56
|
-
hardware: "none" | "clip" | "peg";
|
|
57
|
-
}, {
|
|
58
|
-
type?: "none" | "thread" | "rod" | undefined;
|
|
59
|
-
color?: string | undefined;
|
|
60
|
-
hardware?: "none" | "clip" | "peg" | undefined;
|
|
61
|
-
}>;
|
|
62
|
-
declare const stageRoomSchema: z.ZodObject<{
|
|
63
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
64
|
-
/**
|
|
65
|
-
* Ceiling height, as a multiple of the paper's own height.
|
|
66
|
-
*
|
|
67
|
-
* Relative rather than absolute because the banners ARE the architecture
|
|
68
|
-
* here: a hall whose ceiling sits just above its hangings reads as built
|
|
69
|
-
* for them, and one at a fixed world height reads as whatever the paper
|
|
70
|
-
* happened to be scaled to that day.
|
|
71
|
-
*/
|
|
72
|
-
height: z.ZodDefault<z.ZodNumber>;
|
|
73
|
-
color: z.ZodDefault<z.ZodString>;
|
|
74
|
-
/** Columns flanking the walk — see `stageColumnsSchema`. */
|
|
75
|
-
columns: z.ZodDefault<z.ZodObject<{
|
|
76
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
77
|
-
/** Centres this far apart along the walk. Roughly a bay. */
|
|
78
|
-
spacing: z.ZodDefault<z.ZodNumber>;
|
|
79
|
-
/** Shaft width. The number doing the work — a column is a known size. */
|
|
80
|
-
width: z.ZodDefault<z.ZodNumber>;
|
|
81
|
-
/**
|
|
82
|
-
* How far off the walk's centreline each rank stands.
|
|
83
|
-
*
|
|
84
|
-
* Outside the banners, always. Columns are the room; the paper is the
|
|
85
|
-
* subject, and a column standing between the viewer and a banner has
|
|
86
|
-
* swapped the two over. Default clears a `colonnade`'s widest sensible
|
|
87
|
-
* aisle with room to spare.
|
|
88
|
-
*/
|
|
89
|
-
offset: z.ZodDefault<z.ZodNumber>;
|
|
90
|
-
/**
|
|
91
|
-
* Stone, and darker than paper on purpose.
|
|
92
|
-
*
|
|
93
|
-
* The brightest thing in any of these frames has to be the light, and the
|
|
94
|
-
* second brightest has to be the paper. A column the same value as a
|
|
95
|
-
* banner does not read as architecture behind the subject; it reads as
|
|
96
|
-
* more banners, and the eye stops being able to tell what the room is made
|
|
97
|
-
* of from what is hanging in it.
|
|
98
|
-
*/
|
|
99
|
-
color: z.ZodDefault<z.ZodString>;
|
|
100
|
-
}, "strip", z.ZodTypeAny, {
|
|
101
|
-
width: number;
|
|
102
|
-
offset: number;
|
|
103
|
-
color: string;
|
|
104
|
-
spacing: number;
|
|
105
|
-
enabled: boolean;
|
|
106
|
-
}, {
|
|
107
|
-
width?: number | undefined;
|
|
108
|
-
offset?: number | undefined;
|
|
109
|
-
color?: string | undefined;
|
|
110
|
-
spacing?: number | undefined;
|
|
111
|
-
enabled?: boolean | undefined;
|
|
112
|
-
}>>;
|
|
113
|
-
/** A wall at the end of the walk with the source in it. */
|
|
114
|
-
doorway: z.ZodDefault<z.ZodObject<{
|
|
115
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
116
|
-
/** Opening size, as a multiple of the source's own. 1 frames it exactly. */
|
|
117
|
-
opening: z.ZodDefault<z.ZodNumber>;
|
|
118
|
-
color: z.ZodDefault<z.ZodString>;
|
|
119
|
-
}, "strip", z.ZodTypeAny, {
|
|
120
|
-
color: string;
|
|
121
|
-
enabled: boolean;
|
|
122
|
-
opening: number;
|
|
123
|
-
}, {
|
|
124
|
-
color?: string | undefined;
|
|
125
|
-
enabled?: boolean | undefined;
|
|
126
|
-
opening?: number | undefined;
|
|
127
|
-
}>>;
|
|
128
|
-
}, "strip", z.ZodTypeAny, {
|
|
129
|
-
height: number;
|
|
130
|
-
color: string;
|
|
131
|
-
enabled: boolean;
|
|
132
|
-
columns: {
|
|
133
|
-
width: number;
|
|
134
|
-
offset: number;
|
|
135
|
-
color: string;
|
|
136
|
-
spacing: number;
|
|
137
|
-
enabled: boolean;
|
|
138
|
-
};
|
|
139
|
-
doorway: {
|
|
140
|
-
color: string;
|
|
141
|
-
enabled: boolean;
|
|
142
|
-
opening: number;
|
|
143
|
-
};
|
|
144
|
-
}, {
|
|
145
|
-
height?: number | undefined;
|
|
146
|
-
color?: string | undefined;
|
|
147
|
-
enabled?: boolean | undefined;
|
|
148
|
-
columns?: {
|
|
149
|
-
width?: number | undefined;
|
|
150
|
-
offset?: number | undefined;
|
|
151
|
-
color?: string | undefined;
|
|
152
|
-
spacing?: number | undefined;
|
|
153
|
-
enabled?: boolean | undefined;
|
|
154
|
-
} | undefined;
|
|
155
|
-
doorway?: {
|
|
156
|
-
color?: string | undefined;
|
|
157
|
-
enabled?: boolean | undefined;
|
|
158
|
-
opening?: number | undefined;
|
|
159
|
-
} | undefined;
|
|
160
|
-
}>;
|
|
161
5
|
/**
|
|
162
6
|
* The print: what happens to the frame after the scene is drawn.
|
|
163
7
|
*
|
|
@@ -374,15 +218,15 @@ declare const stageSchema: z.ZodObject<{
|
|
|
374
218
|
spread: z.ZodDefault<z.ZodNumber>;
|
|
375
219
|
}, "strip", z.ZodTypeAny, {
|
|
376
220
|
color: string;
|
|
377
|
-
enabled: boolean;
|
|
378
221
|
spread: number;
|
|
222
|
+
enabled: boolean;
|
|
379
223
|
zenith: string;
|
|
380
224
|
beyond: number;
|
|
381
225
|
surround: boolean;
|
|
382
226
|
}, {
|
|
383
227
|
color?: string | undefined;
|
|
384
|
-
enabled?: boolean | undefined;
|
|
385
228
|
spread?: number | undefined;
|
|
229
|
+
enabled?: boolean | undefined;
|
|
386
230
|
zenith?: string | undefined;
|
|
387
231
|
beyond?: number | undefined;
|
|
388
232
|
surround?: boolean | undefined;
|
|
@@ -634,6 +478,17 @@ declare const stageSchema: z.ZodObject<{
|
|
|
634
478
|
closed: boolean;
|
|
635
479
|
};
|
|
636
480
|
lighting: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox";
|
|
481
|
+
light: {
|
|
482
|
+
key?: number | undefined;
|
|
483
|
+
height?: number | undefined;
|
|
484
|
+
color?: string | undefined;
|
|
485
|
+
studio?: number | undefined;
|
|
486
|
+
exposure?: number | undefined;
|
|
487
|
+
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
488
|
+
direction?: number | undefined;
|
|
489
|
+
ambient?: number | undefined;
|
|
490
|
+
haze?: number | undefined;
|
|
491
|
+
};
|
|
637
492
|
figure: {
|
|
638
493
|
height: number;
|
|
639
494
|
speed: number;
|
|
@@ -646,23 +501,12 @@ declare const stageSchema: z.ZodObject<{
|
|
|
646
501
|
};
|
|
647
502
|
source: {
|
|
648
503
|
color: string;
|
|
649
|
-
enabled: boolean;
|
|
650
504
|
spread: number;
|
|
505
|
+
enabled: boolean;
|
|
651
506
|
zenith: string;
|
|
652
507
|
beyond: number;
|
|
653
508
|
surround: boolean;
|
|
654
509
|
};
|
|
655
|
-
light: {
|
|
656
|
-
key?: number | undefined;
|
|
657
|
-
height?: number | undefined;
|
|
658
|
-
color?: string | undefined;
|
|
659
|
-
studio?: number | undefined;
|
|
660
|
-
exposure?: number | undefined;
|
|
661
|
-
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
662
|
-
direction?: number | undefined;
|
|
663
|
-
ambient?: number | undefined;
|
|
664
|
-
haze?: number | undefined;
|
|
665
|
-
};
|
|
666
510
|
shot: {
|
|
667
511
|
height: number;
|
|
668
512
|
offset: number;
|
|
@@ -711,6 +555,17 @@ declare const stageSchema: z.ZodObject<{
|
|
|
711
555
|
closed?: boolean | undefined;
|
|
712
556
|
} | undefined;
|
|
713
557
|
lighting?: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox" | undefined;
|
|
558
|
+
light?: {
|
|
559
|
+
key?: number | undefined;
|
|
560
|
+
height?: number | undefined;
|
|
561
|
+
color?: string | undefined;
|
|
562
|
+
studio?: number | undefined;
|
|
563
|
+
exposure?: number | undefined;
|
|
564
|
+
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
565
|
+
direction?: number | undefined;
|
|
566
|
+
ambient?: number | undefined;
|
|
567
|
+
haze?: number | undefined;
|
|
568
|
+
} | undefined;
|
|
714
569
|
figure?: {
|
|
715
570
|
height?: number | undefined;
|
|
716
571
|
speed?: number | undefined;
|
|
@@ -723,23 +578,12 @@ declare const stageSchema: z.ZodObject<{
|
|
|
723
578
|
} | undefined;
|
|
724
579
|
source?: {
|
|
725
580
|
color?: string | undefined;
|
|
726
|
-
enabled?: boolean | undefined;
|
|
727
581
|
spread?: number | undefined;
|
|
582
|
+
enabled?: boolean | undefined;
|
|
728
583
|
zenith?: string | undefined;
|
|
729
584
|
beyond?: number | undefined;
|
|
730
585
|
surround?: boolean | undefined;
|
|
731
586
|
} | undefined;
|
|
732
|
-
light?: {
|
|
733
|
-
key?: number | undefined;
|
|
734
|
-
height?: number | undefined;
|
|
735
|
-
color?: string | undefined;
|
|
736
|
-
studio?: number | undefined;
|
|
737
|
-
exposure?: number | undefined;
|
|
738
|
-
film?: "agx" | "neutral" | "filmic" | undefined;
|
|
739
|
-
direction?: number | undefined;
|
|
740
|
-
ambient?: number | undefined;
|
|
741
|
-
haze?: number | undefined;
|
|
742
|
-
} | undefined;
|
|
743
587
|
shot?: {
|
|
744
588
|
height?: number | undefined;
|
|
745
589
|
offset?: number | undefined;
|
|
@@ -895,6 +739,28 @@ declare const qualityNames: readonly ["auto", "low", "medium", "high"];
|
|
|
895
739
|
type QualityName = (typeof qualityNames)[number];
|
|
896
740
|
type QualityTier = Exclude<QualityName, 'auto'>;
|
|
897
741
|
|
|
742
|
+
/**
|
|
743
|
+
* Stage mode: paper as architecture, with a figure walking through it.
|
|
744
|
+
*
|
|
745
|
+
* The one guarantee worth stating — every part of the scene reads the SAME
|
|
746
|
+
* walk. The layout arranges along it, the figure follows it, the camera is
|
|
747
|
+
* stationed on it, and the source stands at the end of it. Handing those
|
|
748
|
+
* four their own copies of a path is the failure this component exists to
|
|
749
|
+
* prevent: a colonnade whose aisle the figure does not walk down is not a
|
|
750
|
+
* near-miss, it is a completely different picture.
|
|
751
|
+
*/
|
|
752
|
+
/** A banner: tall, translucent, with folds running the length of its drop. */
|
|
753
|
+
/**
|
|
754
|
+
* The sheet a stage hangs when the caller does not name one.
|
|
755
|
+
*
|
|
756
|
+
* Exported because it is the base anyone RESHAPING a banner has to start
|
|
757
|
+
* from. A caller who wants a wider drop wants this stock, this grain and
|
|
758
|
+
* this drape with different dimensions — and rebuilding it from the schema
|
|
759
|
+
* defaults instead gives a sheet of printer paper with no fold in it, which
|
|
760
|
+
* is a different object. A second copy of these numbers in a caller is a
|
|
761
|
+
* copy free to drift from the one the scene actually falls back to.
|
|
762
|
+
*/
|
|
763
|
+
declare const stageBanner: PaperConfigInput;
|
|
898
764
|
interface PaperStageSceneProps {
|
|
899
765
|
/** Walk, shot, figure, lighting — see `stageSchema`. */
|
|
900
766
|
stage?: StageConfigInput;
|
|
@@ -962,16 +828,6 @@ declare function PaperStageScene({ stage: stageInput, quality, onQualityChange,
|
|
|
962
828
|
/** `<PaperStage />` owns its Canvas; `<PaperStageScene />` drops into an existing one. */
|
|
963
829
|
declare function PaperStage({ children, className, style, ...sceneProps }: PaperStageProps): react.JSX.Element;
|
|
964
830
|
|
|
965
|
-
/**
|
|
966
|
-
* The source's default burn, in linear light.
|
|
967
|
-
*
|
|
968
|
-
* Chosen by matching: at 3.4 the tone-mapped source lands on the same read
|
|
969
|
-
* as the un-mapped plane it replaces, so a stage that never mounts a
|
|
970
|
-
* composer looks the way it always did, and one that does gets a source
|
|
971
|
-
* that blooms instead of a rectangle that clips.
|
|
972
|
-
*/
|
|
973
|
-
declare const SOURCE_INTENSITY = 3.4;
|
|
974
|
-
|
|
975
831
|
/**
|
|
976
832
|
* Named stages. A mode with no presets asks its visitor to invent a space
|
|
977
833
|
* out of eleven sliders before it will show them anything — and stage mode
|
|
@@ -1128,24 +984,16 @@ interface StageExportInput {
|
|
|
1128
984
|
paper?: PaperConfigInput;
|
|
1129
985
|
/** The words the space is built from. Omitted renders blank banners. */
|
|
1130
986
|
text?: string;
|
|
987
|
+
/** Pictures on the banners, one per drop, instead of words. */
|
|
988
|
+
images?: string[];
|
|
1131
989
|
count?: number;
|
|
1132
990
|
/** Bind the walk to page scroll, pinned, rather than to the clock. */
|
|
1133
991
|
scroll?: boolean;
|
|
1134
992
|
/** Exported component name. */
|
|
1135
993
|
componentName?: string;
|
|
1136
994
|
}
|
|
1137
|
-
/** Which named walk these points are, if any — the export reads better for it. */
|
|
1138
|
-
declare function walkNameFor(path: StageConfig['path']): WalkName | undefined;
|
|
1139
995
|
/** The stage config with defaults removed — what actually needs writing down. */
|
|
1140
996
|
declare function diffStage(stage: StageConfigInput): Record<string, unknown>;
|
|
1141
|
-
/**
|
|
1142
|
-
* JSON.stringify, except an array of plain numbers stays on one line. A walk
|
|
1143
|
-
* is a list of coordinate pairs, and the default pretty-printer spreads each
|
|
1144
|
-
* `[6, 17]` over four lines — twenty lines of punctuation for one gentle
|
|
1145
|
-
* curve. Exported code is a product surface; it should read like something a
|
|
1146
|
-
* person wrote.
|
|
1147
|
-
*/
|
|
1148
|
-
declare function stringifyStage(value: unknown, indent?: number): string;
|
|
1149
997
|
/** The one-line visual an agent verifies after `npm run dev`. */
|
|
1150
998
|
declare function describeStage(input: StageExportInput): string;
|
|
1151
999
|
/** Component source shared by the JSX snippet and the agent payload. */
|
|
@@ -1153,4 +1001,4 @@ declare function buildStageComponentSource(input: StageExportInput): string;
|
|
|
1153
1001
|
/** The self-contained stage integration brief — one paste into a coding agent. */
|
|
1154
1002
|
declare function buildStageAgentPayload(input: StageExportInput): string;
|
|
1155
1003
|
|
|
1156
|
-
export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier,
|
|
1004
|
+
export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier, type ShotName, type ShotOptions, type StageConfig, type StageConfigInput, type StageExportInput, type StageGradeConfig, type StageMotion, type StageMotionInput, type StagePreset, type StageScale, type StageShot, type WalkName, type WalkPath, type WalkPathOptions, buildStageAgentPayload, buildStageComponentSource, createWalkPath, describeStage, diffStage, getStagePreset, getWalk, listStagePresets, qualityNames, shotNames, stageBanner, stagePresets, stageSchema, walkNames, walks };
|