@westopp/windo 0.1.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/LICENSE +21 -0
- package/README.md +146 -0
- package/dist/chunk-5RM2VYAM.js +150 -0
- package/dist/chunk-5RM2VYAM.js.map +1 -0
- package/dist/cli.cjs +303 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +138 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.cjs +219 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +374 -0
- package/dist/index.d.ts +374 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.cjs +185 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.cts +11 -0
- package/dist/plugin.d.ts +11 -0
- package/dist/plugin.js +11 -0
- package/dist/plugin.js.map +1 -0
- package/package.json +95 -0
- package/src/cli/index.ts +160 -0
- package/src/client/App.tsx +310 -0
- package/src/client/Canvas.tsx +358 -0
- package/src/client/Inspector.tsx +586 -0
- package/src/client/Sidebar.tsx +108 -0
- package/src/client/bridge.ts +124 -0
- package/src/client/chrome.css +1966 -0
- package/src/client/icons.tsx +110 -0
- package/src/client/index.ts +15 -0
- package/src/client/internal-types.ts +147 -0
- package/src/client/persist.ts +38 -0
- package/src/define-config.ts +54 -0
- package/src/descriptor.test.ts +59 -0
- package/src/descriptor.ts +185 -0
- package/src/globals.d.ts +9 -0
- package/src/index.ts +54 -0
- package/src/plugin/index.ts +181 -0
- package/src/preview/ctx.ts +43 -0
- package/src/preview/index.ts +283 -0
- package/src/preview/preview.css +81 -0
- package/src/preview/registry.ts +159 -0
- package/src/preview/render.tsx +90 -0
- package/src/preview/virtual.d.ts +8 -0
- package/src/protocol.ts +59 -0
- package/src/types.ts +319 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
type WindoStatus = 'stable' | 'beta' | 'deprecated';
|
|
5
|
+
declare const WINDO_STATUSES: readonly WindoStatus[];
|
|
6
|
+
/** Anchor a component within the canvas frame. */
|
|
7
|
+
type WindoPlacementBase = 'center' | 'fill' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
8
|
+
/**
|
|
9
|
+
* Where a component renders inside the canvas frame. Placements render flush by
|
|
10
|
+
* default; append `-padding` to inset the component from the frame edges
|
|
11
|
+
* (e.g. `top` sits flush at the top, `top-padding` adds breathing room).
|
|
12
|
+
*/
|
|
13
|
+
type WindoPlacement = WindoPlacementBase | `${WindoPlacementBase}-padding`;
|
|
14
|
+
declare const WINDO_PLACEMENTS: readonly WindoPlacement[];
|
|
15
|
+
/** A configured group. Components reference a group by its `slug`. */
|
|
16
|
+
interface WindoGroup {
|
|
17
|
+
name: string;
|
|
18
|
+
slug: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
}
|
|
21
|
+
type WindoControlType = 'enum' | 'boolean' | 'string' | 'number';
|
|
22
|
+
/** A single ambient control: a value plus the metadata to render its toggle. */
|
|
23
|
+
interface WindoControlSpec<T = unknown> {
|
|
24
|
+
type: WindoControlType;
|
|
25
|
+
label?: string;
|
|
26
|
+
default: T;
|
|
27
|
+
options?: readonly string[];
|
|
28
|
+
min?: number;
|
|
29
|
+
max?: number;
|
|
30
|
+
step?: number;
|
|
31
|
+
}
|
|
32
|
+
type WindoControlMap = Record<string, WindoControlSpec>;
|
|
33
|
+
/** Resolve a control map to the value object it produces. */
|
|
34
|
+
type WindoControlValues<C extends WindoControlMap> = {
|
|
35
|
+
[K in keyof C]: C[K] extends WindoControlSpec<infer T> ? T : never;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* A named context. Two capabilities, either or both:
|
|
39
|
+
* - `controls` → ambient values + UI toggles (free, no opt-in needed)
|
|
40
|
+
* - `provider` → a React wrapper, mounted inside the iframe around components
|
|
41
|
+
* that opt in via `uses`
|
|
42
|
+
*/
|
|
43
|
+
interface WindoContextDefinition<Values = unknown, Provided = Values> {
|
|
44
|
+
label?: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
controls?: WindoControlMap;
|
|
47
|
+
provider?: ComponentType<{
|
|
48
|
+
children: ReactNode;
|
|
49
|
+
values: Values;
|
|
50
|
+
ctx: WindoRenderContext;
|
|
51
|
+
}>;
|
|
52
|
+
/** Derive the value exposed on `ctx.contexts[name]`. Defaults to the control values. */
|
|
53
|
+
resolve?: (values: Values, ctx: WindoRenderContext) => Provided;
|
|
54
|
+
}
|
|
55
|
+
type WindoContextMap = Record<string, WindoContextDefinition<any, any>>;
|
|
56
|
+
interface WindoViewport {
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
name: 'mobile' | 'tablet' | 'desktop';
|
|
60
|
+
}
|
|
61
|
+
/** Console channel: `ctx.logger.log(…)` posts an entry to the chrome's Console tab. */
|
|
62
|
+
interface WindoLogger {
|
|
63
|
+
log: (...args: unknown[]) => void;
|
|
64
|
+
}
|
|
65
|
+
/** How an action fires. `click` renders a toolbar button; the rest bind to the stage's pointer events. */
|
|
66
|
+
type WindoActionTrigger = 'click' | 'enter' | 'exit' | 'hover';
|
|
67
|
+
declare const WINDO_ACTION_TRIGGERS: readonly WindoActionTrigger[];
|
|
68
|
+
/**
|
|
69
|
+
* An out-of-band action that drives a component's state. `click` actions render as
|
|
70
|
+
* toolbar buttons; `enter`/`exit`/`hover` bind to the stage's pointer events. `run`
|
|
71
|
+
* receives the live ctx and an `active` flag — for `hover` it is `true` on
|
|
72
|
+
* pointer-enter and `false` on pointer-leave; for the others it is always `true`.
|
|
73
|
+
*/
|
|
74
|
+
interface WindoAction<State = unknown> {
|
|
75
|
+
label: string;
|
|
76
|
+
/** Defaults to `click`. */
|
|
77
|
+
on?: WindoActionTrigger;
|
|
78
|
+
run: (ctx: WindoRenderContext<State>, active: boolean) => void;
|
|
79
|
+
/** Greys out a `click` action's toolbar button. Evaluated against the live state. */
|
|
80
|
+
disabled?: (ctx: WindoRenderContext<State>) => boolean;
|
|
81
|
+
}
|
|
82
|
+
/** Live environment handed to every render-time function inside the iframe. */
|
|
83
|
+
interface WindoRenderContext<State = unknown> {
|
|
84
|
+
colorScheme: 'light' | 'dark';
|
|
85
|
+
viewport: WindoViewport;
|
|
86
|
+
reducedMotion: boolean;
|
|
87
|
+
direction: 'ltr' | 'rtl';
|
|
88
|
+
locale: string;
|
|
89
|
+
logger: WindoLogger;
|
|
90
|
+
/** Current component-local state, typed by the windo's `State` generic. */
|
|
91
|
+
state: State;
|
|
92
|
+
/** Merge a patch into the component-local state and re-render. */
|
|
93
|
+
setState: (patch: Partial<State>) => void;
|
|
94
|
+
/** Resolved values of opted-in contexts, keyed by context name. */
|
|
95
|
+
contexts: Record<string, unknown>;
|
|
96
|
+
}
|
|
97
|
+
/** A variant: a label plus a partial prop patch. Renders in the gallery and is click-to-apply. */
|
|
98
|
+
interface WindoVariant<Props> {
|
|
99
|
+
label: string;
|
|
100
|
+
props: Partial<Props>;
|
|
101
|
+
}
|
|
102
|
+
/** A row in the authored Props documentation table. */
|
|
103
|
+
interface WindoPropDoc {
|
|
104
|
+
name: string;
|
|
105
|
+
type: string;
|
|
106
|
+
default?: string;
|
|
107
|
+
desc?: string;
|
|
108
|
+
}
|
|
109
|
+
type WindoDefaultProps<Props, State = unknown> = Props | ((ctx: WindoRenderContext<State>) => Props);
|
|
110
|
+
/**
|
|
111
|
+
* The object returned by a `windo(...)` factory.
|
|
112
|
+
*
|
|
113
|
+
* Keystone rule: the surrounding factory runs ONCE (definition-time) for static
|
|
114
|
+
* fields (title, group, schema). Every function field below — `defaultProps`,
|
|
115
|
+
* `actions`, `providers`, `component` — runs at render-time with the live `ctx`.
|
|
116
|
+
* Never close over live values in the static factory body.
|
|
117
|
+
*/
|
|
118
|
+
interface WindoDefinition<Props = unknown, State = unknown, GroupSlug extends string = string> {
|
|
119
|
+
title: string;
|
|
120
|
+
group: GroupSlug;
|
|
121
|
+
status?: WindoStatus;
|
|
122
|
+
description?: string;
|
|
123
|
+
deprecation?: string;
|
|
124
|
+
placement?: WindoPlacement;
|
|
125
|
+
/** Initial component-local state. Its shape is the `State` generic; `ctx.state`/`ctx.setState` derive from it. */
|
|
126
|
+
state?: State;
|
|
127
|
+
/** Out-of-band actions that drive state: toolbar buttons (`click`) and stage pointer triggers (`enter`/`exit`/`hover`). */
|
|
128
|
+
actions?: WindoAction<State>[];
|
|
129
|
+
/** zod schema: validator + parser for the JSON-editable prop subset. `z.output ⊆ Props`. */
|
|
130
|
+
configurableProps?: z.ZodType;
|
|
131
|
+
/** Full props incl. functions/JSX. The editor's JSON overrides merge on top. */
|
|
132
|
+
defaultProps: WindoDefaultProps<Props, State>;
|
|
133
|
+
/** Names of provider contexts this component opts into. */
|
|
134
|
+
uses?: string[];
|
|
135
|
+
variants?: WindoVariant<Props>[];
|
|
136
|
+
/** Authored documentation table (not derived from the schema). */
|
|
137
|
+
props?: WindoPropDoc[];
|
|
138
|
+
/** Optional authored code snippet for the Code tab. */
|
|
139
|
+
code?: (values: Props) => string;
|
|
140
|
+
/** A local provider wrapping just this windo (in addition to `uses`). */
|
|
141
|
+
providers?: ComponentType<{
|
|
142
|
+
children: ReactNode;
|
|
143
|
+
ctx: WindoRenderContext<State>;
|
|
144
|
+
}>;
|
|
145
|
+
component: (props: Props, ctx: WindoRenderContext<State>) => ReactNode;
|
|
146
|
+
}
|
|
147
|
+
/** Argument handed to the `windo(w => ...)` factory. */
|
|
148
|
+
interface WindoFactoryArg<Groups extends readonly WindoGroup[], Contexts extends WindoContextMap> {
|
|
149
|
+
/** Configured groups keyed by slug. */
|
|
150
|
+
groups: Record<Groups[number]['slug'], WindoGroup>;
|
|
151
|
+
contexts: Contexts;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The default export of a `*.windo.tsx` file. A branded, lazily-resolved
|
|
155
|
+
* definition — the runtime calls `resolve(w)` with the config-derived factory arg.
|
|
156
|
+
*/
|
|
157
|
+
interface WindoModule<Props = any, State = any> {
|
|
158
|
+
readonly __windo: true;
|
|
159
|
+
resolve: (w: WindoFactoryArg<readonly WindoGroup[], WindoContextMap>) => WindoDefinition<Props, State>;
|
|
160
|
+
}
|
|
161
|
+
interface WindoConfig<Groups extends readonly WindoGroup[] = readonly WindoGroup[], Contexts extends WindoContextMap = WindoContextMap> {
|
|
162
|
+
/** Configured groups. A component's `group` must be one of these slugs. */
|
|
163
|
+
groups: Groups;
|
|
164
|
+
/** Named contexts available to components. */
|
|
165
|
+
contexts?: Contexts;
|
|
166
|
+
/** Glob(s) for discovery, relative to project root. Default `**\/*.windo.tsx`. */
|
|
167
|
+
include?: string | string[];
|
|
168
|
+
/** Title shown in the workbench chrome. */
|
|
169
|
+
title?: string;
|
|
170
|
+
}
|
|
171
|
+
type WindoControlKind = 'string' | 'number' | 'boolean' | 'enum' | 'date' | 'array' | 'object' | 'unknown';
|
|
172
|
+
interface WindoControlDescriptor {
|
|
173
|
+
key: string;
|
|
174
|
+
kind: WindoControlKind;
|
|
175
|
+
optional: boolean;
|
|
176
|
+
options?: string[];
|
|
177
|
+
min?: number;
|
|
178
|
+
max?: number;
|
|
179
|
+
description?: string;
|
|
180
|
+
}
|
|
181
|
+
interface WindoSchemaDescriptor {
|
|
182
|
+
fields: WindoControlDescriptor[];
|
|
183
|
+
}
|
|
184
|
+
/** Serialisable metadata for one action — drives the canvas toolbar. */
|
|
185
|
+
interface WindoActionMeta {
|
|
186
|
+
id: string;
|
|
187
|
+
label: string;
|
|
188
|
+
on: WindoActionTrigger;
|
|
189
|
+
}
|
|
190
|
+
/** Static, serialisable metadata for one windo — drives the sidebar. */
|
|
191
|
+
interface WindoManifestEntry {
|
|
192
|
+
id: string;
|
|
193
|
+
title: string;
|
|
194
|
+
group: string;
|
|
195
|
+
status: WindoStatus;
|
|
196
|
+
description?: string;
|
|
197
|
+
deprecation?: string;
|
|
198
|
+
placement: WindoPlacement;
|
|
199
|
+
uses: string[];
|
|
200
|
+
hasVariants: boolean;
|
|
201
|
+
actions: WindoActionMeta[];
|
|
202
|
+
hasState: boolean;
|
|
203
|
+
}
|
|
204
|
+
interface WindoVariantMeta {
|
|
205
|
+
label: string;
|
|
206
|
+
props: Record<string, unknown>;
|
|
207
|
+
}
|
|
208
|
+
/** Ambient environment pushed from the chrome down into the iframe. */
|
|
209
|
+
interface WindoEnvState {
|
|
210
|
+
colorScheme: 'light' | 'dark';
|
|
211
|
+
viewport: WindoViewport;
|
|
212
|
+
reducedMotion: boolean;
|
|
213
|
+
direction: 'ltr' | 'rtl';
|
|
214
|
+
locale: string;
|
|
215
|
+
/** Per-context control values, keyed by context name then control key. */
|
|
216
|
+
contexts: Record<string, Record<string, unknown>>;
|
|
217
|
+
}
|
|
218
|
+
interface WindoLogEntry {
|
|
219
|
+
ts: number;
|
|
220
|
+
args: unknown[];
|
|
221
|
+
}
|
|
222
|
+
interface WindoFieldError {
|
|
223
|
+
path: string;
|
|
224
|
+
message: string;
|
|
225
|
+
}
|
|
226
|
+
interface WindoContextControlMeta {
|
|
227
|
+
key: string;
|
|
228
|
+
type: WindoControlType;
|
|
229
|
+
label?: string;
|
|
230
|
+
options?: string[];
|
|
231
|
+
default: unknown;
|
|
232
|
+
min?: number;
|
|
233
|
+
max?: number;
|
|
234
|
+
step?: number;
|
|
235
|
+
}
|
|
236
|
+
interface WindoContextMeta {
|
|
237
|
+
name: string;
|
|
238
|
+
label?: string;
|
|
239
|
+
description?: string;
|
|
240
|
+
/** True when the context contributes controls (ambient values). */
|
|
241
|
+
ambient: boolean;
|
|
242
|
+
/** True when the context mounts a provider (opt-in via `uses`). */
|
|
243
|
+
hasProvider: boolean;
|
|
244
|
+
controls: WindoContextControlMeta[];
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
interface DefineWindoConfigResult<Groups extends readonly WindoGroup[], Contexts extends WindoContextMap> {
|
|
248
|
+
config: WindoConfig<Groups, Contexts>;
|
|
249
|
+
windo: <Props, State = Record<string, never>>(factory: (w: WindoFactoryArg<Groups, Contexts>) => WindoDefinition<Props, State, Groups[number]['slug']>) => WindoModule<Props, State>;
|
|
250
|
+
}
|
|
251
|
+
declare function defineWindoConfig<const Groups extends readonly WindoGroup[], Contexts extends WindoContextMap = Record<string, never>>(config: WindoConfig<Groups, Contexts>): DefineWindoConfigResult<Groups, Contexts>;
|
|
252
|
+
/**
|
|
253
|
+
* Define a named context. A context can contribute ambient `controls` (values +
|
|
254
|
+
* UI), a `provider` (mounted inside the iframe for components that opt in via
|
|
255
|
+
* `uses`), or both.
|
|
256
|
+
*
|
|
257
|
+
* No cast: `def` is already structurally a `WindoContextDefinition<WindoControlValues<C>,
|
|
258
|
+
* Provided>` (only `controls` widens, covariantly). The unavoidable variance — TS has
|
|
259
|
+
* no existential type to hold contexts heterogeneous in `C` — is absorbed once, in
|
|
260
|
+
* `WindoContextMap`, not here and not at call sites.
|
|
261
|
+
*/
|
|
262
|
+
declare function defineContext<C extends WindoControlMap, Provided = WindoControlValues<C>>(def: {
|
|
263
|
+
label?: string;
|
|
264
|
+
description?: string;
|
|
265
|
+
controls?: C;
|
|
266
|
+
provider?: ComponentType<{
|
|
267
|
+
children: ReactNode;
|
|
268
|
+
values: WindoControlValues<C>;
|
|
269
|
+
ctx: WindoRenderContext;
|
|
270
|
+
}>;
|
|
271
|
+
resolve?: (values: WindoControlValues<C>, ctx: WindoRenderContext) => Provided;
|
|
272
|
+
}): WindoContextDefinition<WindoControlValues<C>, Provided>;
|
|
273
|
+
/**
|
|
274
|
+
* Bind a zod schema to a component's props. The generic carries the component's
|
|
275
|
+
* prop type so the schema's output stays a subset of it; the returned schema is
|
|
276
|
+
* the runtime validator + parser (`z.input` is the JSON edit surface, `z.output`
|
|
277
|
+
* is what the component receives).
|
|
278
|
+
*/
|
|
279
|
+
declare function configurableProps<P>(): <S extends z.ZodType<Partial<P>>>(schema: S) => S;
|
|
280
|
+
|
|
281
|
+
declare function describeSchema(schema: z.ZodType | undefined | null): WindoSchemaDescriptor;
|
|
282
|
+
|
|
283
|
+
declare const WINDO_MSG = "windo";
|
|
284
|
+
/** chrome -> iframe */
|
|
285
|
+
type WindoHostMessage = {
|
|
286
|
+
source: typeof WINDO_MSG;
|
|
287
|
+
dir: 'host';
|
|
288
|
+
type: 'request-manifest';
|
|
289
|
+
} | {
|
|
290
|
+
source: typeof WINDO_MSG;
|
|
291
|
+
dir: 'host';
|
|
292
|
+
type: 'select';
|
|
293
|
+
id: string;
|
|
294
|
+
} | {
|
|
295
|
+
source: typeof WINDO_MSG;
|
|
296
|
+
dir: 'host';
|
|
297
|
+
type: 'set-props';
|
|
298
|
+
id: string;
|
|
299
|
+
json: string;
|
|
300
|
+
} | {
|
|
301
|
+
source: typeof WINDO_MSG;
|
|
302
|
+
dir: 'host';
|
|
303
|
+
type: 'set-env';
|
|
304
|
+
env: WindoEnvState;
|
|
305
|
+
} | {
|
|
306
|
+
source: typeof WINDO_MSG;
|
|
307
|
+
dir: 'host';
|
|
308
|
+
type: 'invoke-action';
|
|
309
|
+
id: string;
|
|
310
|
+
actionId: string;
|
|
311
|
+
};
|
|
312
|
+
/** iframe -> chrome */
|
|
313
|
+
type WindoPreviewMessage = {
|
|
314
|
+
source: typeof WINDO_MSG;
|
|
315
|
+
dir: 'preview';
|
|
316
|
+
type: 'ready';
|
|
317
|
+
} | {
|
|
318
|
+
source: typeof WINDO_MSG;
|
|
319
|
+
dir: 'preview';
|
|
320
|
+
type: 'manifest';
|
|
321
|
+
title: string;
|
|
322
|
+
entries: WindoManifestEntry[];
|
|
323
|
+
groups: WindoGroup[];
|
|
324
|
+
contexts: WindoContextMeta[];
|
|
325
|
+
} | {
|
|
326
|
+
source: typeof WINDO_MSG;
|
|
327
|
+
dir: 'preview';
|
|
328
|
+
type: 'describe';
|
|
329
|
+
id: string;
|
|
330
|
+
descriptor: WindoSchemaDescriptor;
|
|
331
|
+
props: WindoPropDoc[];
|
|
332
|
+
variants: WindoVariantMeta[];
|
|
333
|
+
defaults: unknown;
|
|
334
|
+
code: string | null;
|
|
335
|
+
} | {
|
|
336
|
+
source: typeof WINDO_MSG;
|
|
337
|
+
dir: 'preview';
|
|
338
|
+
type: 'parse-ok';
|
|
339
|
+
id: string;
|
|
340
|
+
} | {
|
|
341
|
+
source: typeof WINDO_MSG;
|
|
342
|
+
dir: 'preview';
|
|
343
|
+
type: 'parse-error';
|
|
344
|
+
id: string;
|
|
345
|
+
errors: WindoFieldError[];
|
|
346
|
+
} | {
|
|
347
|
+
source: typeof WINDO_MSG;
|
|
348
|
+
dir: 'preview';
|
|
349
|
+
type: 'log';
|
|
350
|
+
entry: WindoLogEntry;
|
|
351
|
+
} | {
|
|
352
|
+
source: typeof WINDO_MSG;
|
|
353
|
+
dir: 'preview';
|
|
354
|
+
type: 'state';
|
|
355
|
+
id: string;
|
|
356
|
+
state: Record<string, unknown>;
|
|
357
|
+
actions: {
|
|
358
|
+
id: string;
|
|
359
|
+
disabled: boolean;
|
|
360
|
+
}[];
|
|
361
|
+
} | {
|
|
362
|
+
source: typeof WINDO_MSG;
|
|
363
|
+
dir: 'preview';
|
|
364
|
+
type: 'render-error';
|
|
365
|
+
id: string;
|
|
366
|
+
message: string;
|
|
367
|
+
stack?: string;
|
|
368
|
+
};
|
|
369
|
+
type WindoMessage = WindoHostMessage | WindoPreviewMessage;
|
|
370
|
+
declare function isWindoMessage(data: unknown): data is WindoMessage;
|
|
371
|
+
declare function isHostMessage(msg: WindoMessage): msg is WindoHostMessage;
|
|
372
|
+
declare function isPreviewMessage(msg: WindoMessage): msg is WindoPreviewMessage;
|
|
373
|
+
|
|
374
|
+
export { type DefineWindoConfigResult, WINDO_ACTION_TRIGGERS, WINDO_MSG, WINDO_PLACEMENTS, WINDO_STATUSES, type WindoAction, type WindoActionMeta, type WindoActionTrigger, type WindoConfig, type WindoContextControlMeta, type WindoContextDefinition, type WindoContextMap, type WindoContextMeta, type WindoControlDescriptor, type WindoControlKind, type WindoControlMap, type WindoControlSpec, type WindoControlType, type WindoControlValues, type WindoDefaultProps, type WindoDefinition, type WindoEnvState, type WindoFactoryArg, type WindoFieldError, type WindoGroup, type WindoHostMessage, type WindoLogEntry, type WindoLogger, type WindoManifestEntry, type WindoMessage, type WindoModule, type WindoPlacement, type WindoPreviewMessage, type WindoPropDoc, type WindoRenderContext, type WindoSchemaDescriptor, type WindoStatus, type WindoVariant, type WindoVariantMeta, type WindoViewport, configurableProps, defineContext, defineWindoConfig, describeSchema, isHostMessage, isPreviewMessage, isWindoMessage };
|