flowfig 0.10.0 → 0.12.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.
@@ -0,0 +1,233 @@
1
+ import type { FigLook, FlowProps } from './model.ts';
2
+ import { truckArt } from './world-art.ts';
3
+ import type { Gate, Lot, Pt } from './world-art.ts';
4
+ export type { Pt };
5
+ export type Carry = {
6
+ thing: string;
7
+ form: 'box' | 'barrel' | 'notes';
8
+ count: number;
9
+ from: number;
10
+ };
11
+ export type Hop = {
12
+ edge: string;
13
+ from: string;
14
+ to: string;
15
+ label: string;
16
+ data: string;
17
+ async: boolean;
18
+ fail: boolean;
19
+ carry?: Carry;
20
+ };
21
+ export type Box = {
22
+ label: string;
23
+ actor: number;
24
+ dead: boolean;
25
+ check: string;
26
+ done?: string;
27
+ };
28
+ export type Device = 'phone' | 'cab' | 'antenna';
29
+ export type SceneActor = {
30
+ name: string;
31
+ look?: FigLook;
32
+ device: Device;
33
+ lot: Lot;
34
+ gate: Gate;
35
+ port: Pt;
36
+ checks: boolean;
37
+ };
38
+ export type Story = {
39
+ name: string;
40
+ moments: Hop[][];
41
+ acting: string[];
42
+ path: number[];
43
+ end: string;
44
+ };
45
+ export type Form = 'narrow' | 'wide' | 'stack' | 'spread';
46
+ export type Scene = {
47
+ svg: string;
48
+ bends: Pt[];
49
+ actors: SceneActor[];
50
+ boxes: Record<string, Box>;
51
+ stories: Story[];
52
+ truck: number;
53
+ truckArt: ReturnType<typeof truckArt> | null;
54
+ things: Map<string, {
55
+ form: Carry['form'];
56
+ count: number;
57
+ }>;
58
+ keys: ('data' | 'thing' | 'check')[];
59
+ clear: number;
60
+ };
61
+ export declare function scene(fig: FlowProps, form?: Form): Scene;
62
+ export type Status = {
63
+ label: string;
64
+ fail: boolean;
65
+ done?: string;
66
+ };
67
+ export type Arc = {
68
+ a: Pt;
69
+ c1: Pt;
70
+ c2: Pt;
71
+ b: Pt;
72
+ t: number;
73
+ text: string;
74
+ fail: boolean;
75
+ hold: boolean;
76
+ gate: number;
77
+ dashed: boolean;
78
+ moment: number;
79
+ near: number[];
80
+ to: number;
81
+ };
82
+ export type Unit = {
83
+ thing: string;
84
+ k: number;
85
+ p: Pt;
86
+ where: 'yard' | 'bed' | 'air' | 'road' | 'gate' | 'in';
87
+ at: number;
88
+ fail: boolean;
89
+ moment: number;
90
+ };
91
+ export type Truck = {
92
+ orient: 'y' | 'L' | 'R' | 'D' | 'U';
93
+ x: number;
94
+ y: number;
95
+ lot: number;
96
+ door: number;
97
+ load: string[];
98
+ };
99
+ export type GateState = {
100
+ rows: {
101
+ box: string;
102
+ q: string;
103
+ a: string;
104
+ fail: boolean;
105
+ }[];
106
+ deg: number;
107
+ fail: boolean;
108
+ on: number;
109
+ };
110
+ export type State = {
111
+ story: number;
112
+ moment: number;
113
+ summary: boolean;
114
+ hi: number[];
115
+ ever: Record<number, Status>;
116
+ arcs: Arc[];
117
+ units: Record<string, Unit>;
118
+ truck: Truck | null;
119
+ gates: Record<number, GateState>;
120
+ dev: number[];
121
+ screens: Record<number, 'idle' | 'in' | 'tx'>;
122
+ frame: Pt[];
123
+ lead?: Pt;
124
+ fade?: number;
125
+ };
126
+ export type Ev = {
127
+ kind: 'camera' | 'pulse' | 'door' | 'drive' | 'unit' | 'parcel' | 'question' | 'answer' | 'arm' | 'release' | 'fail' | 'reply';
128
+ hop: number;
129
+ start: number;
130
+ end: number;
131
+ };
132
+ export declare const CAM = 700;
133
+ export declare const ease: {
134
+ out: (x: number) => number;
135
+ inOut: (x: number) => number;
136
+ };
137
+ export declare function timeline(sc: Scene, story: number, moment: number): {
138
+ events: Ev[];
139
+ end: number;
140
+ };
141
+ export declare function stateAt(sc: Scene, story: number, moment: number, t: number): State;
142
+ export type Rect = {
143
+ x: number;
144
+ y: number;
145
+ w: number;
146
+ h: number;
147
+ };
148
+ export type Cam = {
149
+ x: number;
150
+ y: number;
151
+ z: number;
152
+ };
153
+ export type Stage = {
154
+ w: number;
155
+ h: number;
156
+ narrow: boolean;
157
+ form: Form;
158
+ region: {
159
+ l: number;
160
+ t: number;
161
+ r: number;
162
+ b: number;
163
+ };
164
+ };
165
+ type Mark = '✓' | '✗' | '';
166
+ export type Tag = {
167
+ actor: number;
168
+ r: Rect;
169
+ anchor: Pt;
170
+ pin?: 'l' | 'r' | 't' | 'b';
171
+ line: [Pt, Pt];
172
+ name: string;
173
+ status: string;
174
+ mark: Mark;
175
+ quiet: boolean;
176
+ end: boolean;
177
+ cargo: string[];
178
+ };
179
+ export type Sign = {
180
+ actor: number;
181
+ r: Rect;
182
+ anchor: Pt;
183
+ rows: {
184
+ q: string;
185
+ a: string;
186
+ fail: boolean;
187
+ }[];
188
+ kick: boolean;
189
+ };
190
+ export type Chip = {
191
+ text: string;
192
+ r: Rect;
193
+ mark?: Mark;
194
+ };
195
+ export type Placed = {
196
+ cam: Cam;
197
+ tags: Tag[];
198
+ signs: Sign[];
199
+ chips: Chip[];
200
+ devices: {
201
+ actor: number;
202
+ r: Rect;
203
+ }[];
204
+ gates: {
205
+ actor: number;
206
+ r: Rect;
207
+ }[];
208
+ hulls: Pt[][];
209
+ truck?: Pt[];
210
+ arcs: Pt[][];
211
+ faults: number;
212
+ };
213
+ export declare const ZMIN = 0.45;
214
+ export declare const hit: (a: Rect, b: Rect, pad?: number) => boolean;
215
+ export declare function polyHit(poly: Pt[], r: Rect, pad?: number): boolean;
216
+ export declare function stageFor(w: number, h: number, sheet?: number): Stage;
217
+ export declare function layout(sc: Scene, s: State, stage: Stage, cam: Cam, full?: boolean, cap?: number): {
218
+ placed: Placed;
219
+ bad: number;
220
+ pr: (p: Pt) => Pt;
221
+ };
222
+ export declare function place(sc: Scene, s: State, stage: Stage, top?: number): Placed;
223
+ export declare function storyCams(sc: Scene, story: number, stage: Stage): Placed[];
224
+ export declare function storyView(get: (form: Form) => Scene, story: number, stage: Stage): {
225
+ sc: Scene;
226
+ cams: Placed[];
227
+ };
228
+ export type World = {
229
+ show(story: number, moment: number, motion: boolean, say: string): number;
230
+ fits(story: number): boolean;
231
+ stop(): void;
232
+ };
233
+ export declare function mountWorld(stage: HTMLElement, fig: FlowProps, resized: () => void, hud: (story: number) => number): World;