component-previewer 0.1.0 → 0.2.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 +67 -12
- package/lib/module/PreviewControls.js +159 -14
- package/lib/module/PreviewControls.js.map +1 -1
- package/lib/module/PreviewList.js +3 -0
- package/lib/module/PreviewList.js.map +1 -1
- package/lib/module/PreviewStage.js +47 -12
- package/lib/module/PreviewStage.js.map +1 -1
- package/lib/module/Previewer.js +22 -3
- package/lib/module/Previewer.js.map +1 -1
- package/lib/module/controls.js +32 -6
- package/lib/module/controls.js.map +1 -1
- package/lib/module/csf.js +5 -2
- package/lib/module/csf.js.map +1 -1
- package/lib/module/globals.js +14 -0
- package/lib/module/globals.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/persistence.js +45 -0
- package/lib/module/persistence.js.map +1 -0
- package/lib/module/shell.js +13 -3
- package/lib/module/shell.js.map +1 -1
- package/lib/typescript/src/PreviewControls.d.ts +6 -1
- package/lib/typescript/src/PreviewControls.d.ts.map +1 -1
- package/lib/typescript/src/PreviewList.d.ts.map +1 -1
- package/lib/typescript/src/PreviewStage.d.ts +8 -2
- package/lib/typescript/src/PreviewStage.d.ts.map +1 -1
- package/lib/typescript/src/Previewer.d.ts +6 -2
- package/lib/typescript/src/Previewer.d.ts.map +1 -1
- package/lib/typescript/src/controls.d.ts +8 -0
- package/lib/typescript/src/controls.d.ts.map +1 -1
- package/lib/typescript/src/csf.d.ts.map +1 -1
- package/lib/typescript/src/globals.d.ts +3 -0
- package/lib/typescript/src/globals.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/persistence.d.ts +11 -0
- package/lib/typescript/src/persistence.d.ts.map +1 -0
- package/lib/typescript/src/shell.d.ts +3 -2
- package/lib/typescript/src/shell.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +9 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/PreviewControls.tsx +109 -6
- package/src/PreviewList.tsx +7 -1
- package/src/PreviewStage.tsx +54 -9
- package/src/Previewer.tsx +30 -3
- package/src/controls.ts +24 -4
- package/src/csf.ts +6 -1
- package/src/globals.ts +13 -0
- package/src/index.ts +6 -0
- package/src/persistence.ts +49 -0
- package/src/shell.tsx +15 -5
- package/src/types.ts +19 -1
package/lib/module/controls.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
// A render-ready control descriptor. Pure data — the UI maps these to inputs.
|
|
4
4
|
|
|
5
|
+
// A full hex color: #rgb, #rgba, #rrggbb, or #rrggbbaa.
|
|
6
|
+
const HEX_COLOR = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
|
|
5
7
|
// Normalize an ArgType's `control` (string shorthand or { type, ... }) into a
|
|
6
8
|
// kind plus any numeric bounds. Returns kind: undefined when no control given.
|
|
7
9
|
function explicit(argType) {
|
|
@@ -82,6 +84,23 @@ export function inferControls(args, argTypes = {}) {
|
|
|
82
84
|
});
|
|
83
85
|
continue;
|
|
84
86
|
}
|
|
87
|
+
if (kind === 'color') {
|
|
88
|
+
controls.push({
|
|
89
|
+
name,
|
|
90
|
+
kind: 'color',
|
|
91
|
+
value: toText(value)
|
|
92
|
+
});
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (kind === 'object') {
|
|
96
|
+
// Editable as JSON; the value passes through as-is until edited.
|
|
97
|
+
controls.push({
|
|
98
|
+
name,
|
|
99
|
+
kind: 'object',
|
|
100
|
+
value
|
|
101
|
+
});
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
85
104
|
if (kind === 'text') {
|
|
86
105
|
controls.push({
|
|
87
106
|
name,
|
|
@@ -92,11 +111,18 @@ export function inferControls(args, argTypes = {}) {
|
|
|
92
111
|
}
|
|
93
112
|
|
|
94
113
|
// No explicit control — infer from the value type.
|
|
95
|
-
if (typeof value === 'string')
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
114
|
+
if (typeof value === 'string') {
|
|
115
|
+
// A bare hex string is unambiguously a color; everything else is text.
|
|
116
|
+
controls.push(HEX_COLOR.test(value) ? {
|
|
117
|
+
name,
|
|
118
|
+
kind: 'color',
|
|
119
|
+
value
|
|
120
|
+
} : {
|
|
121
|
+
name,
|
|
122
|
+
kind: 'text',
|
|
123
|
+
value
|
|
124
|
+
});
|
|
125
|
+
} else if (typeof value === 'number') controls.push({
|
|
100
126
|
name,
|
|
101
127
|
kind: 'number',
|
|
102
128
|
value
|
|
@@ -105,7 +131,7 @@ export function inferControls(args, argTypes = {}) {
|
|
|
105
131
|
kind: 'boolean',
|
|
106
132
|
value
|
|
107
133
|
});
|
|
108
|
-
// else: skipped (function/object/array/null/undefined).
|
|
134
|
+
// else: skipped (function/object/array/null/undefined) — pass through untouched.
|
|
109
135
|
}
|
|
110
136
|
return controls;
|
|
111
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["explicit","argType","c","control","kind","min","max","step","type","toNumber","value","Number","toText","String","inferControls","args","argTypes","controls","name","Object","keys","options","length","push","Boolean"],"sourceRoot":"../../src","sources":["controls.ts"],"mappings":";;AAEA;;AASA;AACA;AACA,
|
|
1
|
+
{"version":3,"names":["HEX_COLOR","explicit","argType","c","control","kind","min","max","step","type","toNumber","value","Number","toText","String","inferControls","args","argTypes","controls","name","Object","keys","options","length","push","Boolean","test"],"sourceRoot":"../../src","sources":["controls.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/csf.js
CHANGED
|
@@ -42,9 +42,12 @@ export function parseCsfModule(id, mod) {
|
|
|
42
42
|
// Story decorators wrap innermost, meta decorators outer (Storybook order).
|
|
43
43
|
const decorators = [...(story.decorators ?? []), ...(meta?.decorators ?? [])];
|
|
44
44
|
const name = story.name ?? exportName;
|
|
45
|
-
|
|
45
|
+
|
|
46
|
+
// Resolution order (Storybook CSF3): the story's own render, then a
|
|
47
|
+
// meta-level default render, then the meta `component` itself.
|
|
48
|
+
const render = story.render ?? meta?.render ?? (a => {
|
|
46
49
|
if (!meta?.component) {
|
|
47
|
-
throw new Error(`Story "${exportName}" in ${id}: no render
|
|
50
|
+
throw new Error(`Story "${exportName}" in ${id}: no story render, no meta render, and meta has no component`);
|
|
48
51
|
}
|
|
49
52
|
return /*#__PURE__*/createElement(meta.component, a);
|
|
50
53
|
});
|
package/lib/module/csf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createElement","RESERVED","Set","slug","s","toLowerCase","replace","deriveTitle","meta","id","title","c","component","displayName","name","normalizeStory","raw","render","parseCsfModule","mod","default","entries","exportName","Object","keys","has","story","args","argTypes","decorators","a","Error","push"],"sourceRoot":"../../src","sources":["csf.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,OAAO;AAGrC,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEnD,SAASC,IAAIA,CAACC,CAAS,EAAU;EAC/B,OAAOA,CAAC,CACLC,WAAW,CAAC,CAAC,CACbC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAC3BA,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC1B;AAEA,SAASC,WAAWA,CAACC,IAAsB,EAAEC,EAAU,EAAU;EAC/D,IAAID,IAAI,EAAEE,KAAK,EAAE,OAAOF,IAAI,CAACE,KAAK;EAClC,MAAMC,CAAC,GAAGH,IAAI,EAAEI,SAAgE;EAChF,IAAID,CAAC,EAAEE,WAAW,EAAE,OAAOF,CAAC,CAACE,WAAW;EACxC,IAAIF,CAAC,EAAEG,IAAI,EAAE,OAAOH,CAAC,CAACG,IAAI;EAC1B,OAAOL,EAAE,CAACH,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;AACnE;AAEA,SAASS,cAAcA,CAACC,GAAY,EAAkD;EACpF,IAAI,OAAOA,GAAG,KAAK,UAAU,EAAE,OAAO;IAAEC,MAAM,EAAED;EAAwD,CAAC;EACzG,IAAIA,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAOA,GAAG;EAC9C,OAAO,IAAI;AACb;;AAEA;AACA;AACA,OAAO,SAASE,cAAcA,CAACT,EAAU,EAAEU,GAAc,EAAgB;EACvE,MAAMX,IAAI,GAAGW,GAAG,CAACC,OAAO;EACxB,MAAMV,KAAK,GAAGH,WAAW,CAACC,IAAI,EAAEC,EAAE,CAAC;EACnC,MAAMY,OAAqB,GAAG,EAAE;EAEhC,KAAK,MAAMC,UAAU,IAAIC,MAAM,CAACC,IAAI,CAACL,GAAG,CAAC,EAAE;IACzC,IAAIlB,QAAQ,CAACwB,GAAG,CAACH,UAAU,CAAC,EAAE;IAC9B,MAAMI,KAAK,GAAGX,cAAc,CAACI,GAAG,CAACG,UAAU,CAAC,CAAC;IAC7C,IAAI,CAACI,KAAK,EAAE;IAEZ,MAAMC,IAAU,GAAG;MAAE,IAAInB,IAAI,EAAEmB,IAAI,IAAI,CAAC,CAAC,CAAC;MAAE,IAAID,KAAK,CAACC,IAAI,IAAI,CAAC,CAAC;IAAE,CAAC;IACnE;IACA,MAAMC,QAAkB,GAAG;MAAE,IAAIpB,IAAI,EAAEoB,QAAQ,IAAI,CAAC,CAAC,CAAC;MAAE,IAAIF,KAAK,CAACE,QAAQ,IAAI,CAAC,CAAC;IAAE,CAAC;IACnF;IACA,MAAMC,UAAU,GAAG,CAAC,IAAIH,KAAK,CAACG,UAAU,IAAI,EAAE,CAAC,EAAE,IAAIrB,IAAI,EAAEqB,UAAU,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAMf,IAAI,GAAGY,KAAK,CAACZ,IAAI,IAAIQ,UAAU;
|
|
1
|
+
{"version":3,"names":["createElement","RESERVED","Set","slug","s","toLowerCase","replace","deriveTitle","meta","id","title","c","component","displayName","name","normalizeStory","raw","render","parseCsfModule","mod","default","entries","exportName","Object","keys","has","story","args","argTypes","decorators","a","Error","push"],"sourceRoot":"../../src","sources":["csf.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Build the initial globals object from the declared globalTypes: each key takes
|
|
4
|
+
// its `default`, falling back to the first option. Pure; the Previewer seeds its
|
|
5
|
+
// state from this and the shell reads the result.
|
|
6
|
+
export function initGlobals(globalTypes = {}) {
|
|
7
|
+
const globals = {};
|
|
8
|
+
for (const key of Object.keys(globalTypes)) {
|
|
9
|
+
const gt = globalTypes[key];
|
|
10
|
+
globals[key] = gt.default !== undefined ? gt.default : gt.options[0];
|
|
11
|
+
}
|
|
12
|
+
return globals;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=globals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["initGlobals","globalTypes","globals","key","Object","keys","gt","default","undefined","options"],"sourceRoot":"../../src","sources":["globals.ts"],"mappings":";;AAEA;AACA;AACA;AACA,OAAO,SAASA,WAAWA,CAACC,WAAwB,GAAG,CAAC,CAAC,EAAW;EAClE,MAAMC,OAAgB,GAAG,CAAC,CAAC;EAC3B,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,EAAE;IAC1C,MAAMK,EAAE,GAAGL,WAAW,CAACE,GAAG,CAAC;IAC3BD,OAAO,CAACC,GAAG,CAAC,GAAGG,EAAE,CAACC,OAAO,KAAKC,SAAS,GAAGF,EAAE,CAACC,OAAO,GAAGD,EAAE,CAACG,OAAO,CAAC,CAAC,CAAC;EACtE;EACA,OAAOP,OAAO;AAChB","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -5,6 +5,8 @@ export { parseCsfModule } from "./csf.js";
|
|
|
5
5
|
export { buildRegistry, fromRequireContext, fromGlob } from "./registry.js";
|
|
6
6
|
export { composeStory } from "./shell.js";
|
|
7
7
|
export { inferControls } from "./controls.js";
|
|
8
|
+
export { initGlobals } from "./globals.js";
|
|
9
|
+
export { loadArgs, saveArgs, resetArgs } from "./persistence.js";
|
|
8
10
|
// UI (reused by backends)
|
|
9
11
|
export { Previewer } from "./Previewer.js";
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["parseCsfModule","buildRegistry","fromRequireContext","fromGlob","composeStory","inferControls","Previewer"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,cAAc,QAAQ,UAAO;AACtC,SAASC,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,eAAY;AACxE,SAASC,YAAY,QAAQ,YAAS;AAEtC,SAASC,aAAa,QAAQ,eAAY;
|
|
1
|
+
{"version":3,"names":["parseCsfModule","buildRegistry","fromRequireContext","fromGlob","composeStory","inferControls","initGlobals","loadArgs","saveArgs","resetArgs","Previewer"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,cAAc,QAAQ,UAAO;AACtC,SAASC,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,eAAY;AACxE,SAASC,YAAY,QAAQ,YAAS;AAEtC,SAASC,aAAa,QAAQ,eAAY;AAE1C,SAASC,WAAW,QAAQ,cAAW;AACvC,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,kBAAe;AAmB7D;AACA,SAASC,SAAS,QAAQ,gBAAa","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Optional host-provided adapter for cross-reload persistence. The package stays
|
|
4
|
+
// dependency-free, so it never imports AsyncStorage/MMKV itself — the host wires
|
|
5
|
+
// one if it wants edited args to survive a COLD reload:
|
|
6
|
+
//
|
|
7
|
+
// import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
8
|
+
// // ...a thin synchronous cache around AsyncStorage, or any sync store...
|
|
9
|
+
// <Previewer persistence={myAdapter} ... />
|
|
10
|
+
|
|
11
|
+
// In-memory session store. Survives list <-> stage navigation AND Fast Refresh
|
|
12
|
+
// (this module is untouched when a *.stories.tsx file edits), with zero deps.
|
|
13
|
+
// Cleared only on a cold reload; pass `persistence` to outlast that too.
|
|
14
|
+
const session = new Map();
|
|
15
|
+
|
|
16
|
+
// Resolve the args to seed a story with: a live session edit wins, then a
|
|
17
|
+
// host-persisted value (cached back into the session), then the declared args.
|
|
18
|
+
export function loadArgs(storyId, declared, persistence) {
|
|
19
|
+
const live = session.get(storyId);
|
|
20
|
+
if (live) return live;
|
|
21
|
+
const stored = persistence?.get(storyId);
|
|
22
|
+
if (stored) {
|
|
23
|
+
session.set(storyId, stored);
|
|
24
|
+
return stored;
|
|
25
|
+
}
|
|
26
|
+
return declared;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Record an edit. Always updates the session; mirrors to the host adapter.
|
|
30
|
+
export function saveArgs(storyId, args, persistence) {
|
|
31
|
+
session.set(storyId, args);
|
|
32
|
+
persistence?.set(storyId, args);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Drop the override so the story falls back to its declared args.
|
|
36
|
+
export function resetArgs(storyId, persistence) {
|
|
37
|
+
session.delete(storyId);
|
|
38
|
+
persistence?.remove?.(storyId);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Test seam: forget every session edit.
|
|
42
|
+
export function _clearSession() {
|
|
43
|
+
session.clear();
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["session","Map","loadArgs","storyId","declared","persistence","live","get","stored","set","saveArgs","args","resetArgs","delete","remove","_clearSession","clear"],"sourceRoot":"../../src","sources":["persistence.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA,MAAMA,OAAO,GAAG,IAAIC,GAAG,CAAe,CAAC;;AAEvC;AACA;AACA,OAAO,SAASC,QAAQA,CAACC,OAAe,EAAEC,QAAc,EAAEC,WAA6B,EAAQ;EAC7F,MAAMC,IAAI,GAAGN,OAAO,CAACO,GAAG,CAACJ,OAAO,CAAC;EACjC,IAAIG,IAAI,EAAE,OAAOA,IAAI;EACrB,MAAME,MAAM,GAAGH,WAAW,EAAEE,GAAG,CAACJ,OAAO,CAAC;EACxC,IAAIK,MAAM,EAAE;IACVR,OAAO,CAACS,GAAG,CAACN,OAAO,EAAEK,MAAM,CAAC;IAC5B,OAAOA,MAAM;EACf;EACA,OAAOJ,QAAQ;AACjB;;AAEA;AACA,OAAO,SAASM,QAAQA,CAACP,OAAe,EAAEQ,IAAU,EAAEN,WAA6B,EAAQ;EACzFL,OAAO,CAACS,GAAG,CAACN,OAAO,EAAEQ,IAAI,CAAC;EAC1BN,WAAW,EAAEI,GAAG,CAACN,OAAO,EAAEQ,IAAI,CAAC;AACjC;;AAEA;AACA,OAAO,SAASC,SAASA,CAACT,OAAe,EAAEE,WAA6B,EAAQ;EAC9EL,OAAO,CAACa,MAAM,CAACV,OAAO,CAAC;EACvBE,WAAW,EAAES,MAAM,GAAGX,OAAO,CAAC;AAChC;;AAEA;AACA,OAAO,SAASY,aAAaA,CAAA,EAAS;EACpCf,OAAO,CAACgB,KAAK,CAAC,CAAC;AACjB","ignoreList":[]}
|
package/lib/module/shell.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { createElement } from 'react';
|
|
4
|
+
|
|
5
|
+
// The host's real app shell. Receives `children` always, and `globals` (the
|
|
6
|
+
// toolbar params) so the SAME shell can switch theme/locale instead of being
|
|
7
|
+
// forked. Shells written before globals existed (`{ children }` only) keep
|
|
8
|
+
// working — the extra prop is simply ignored.
|
|
9
|
+
|
|
4
10
|
// Compose the full element for a story:
|
|
5
|
-
// AppShell (outer, single source of truth) > decorators >
|
|
11
|
+
// AppShell(globals) (outer, single source of truth) > decorators > render(args).
|
|
6
12
|
// The real-shell contract: the host's AppShell ALWAYS wraps outside; CSF
|
|
7
13
|
// decorators run inside it. Pure — returns an element tree, does not mount.
|
|
8
14
|
// `args` defaults to the story's declared args; pass an override for live edits.
|
|
9
|
-
|
|
15
|
+
// `globals` parameterize the shell (theme, locale, ...).
|
|
16
|
+
export function composeStory(entry, Shell, args = entry.args, globals) {
|
|
10
17
|
let node = entry.render(args);
|
|
11
18
|
for (const decorate of entry.decorators) {
|
|
12
19
|
const inner = node;
|
|
13
20
|
const Story = () => inner;
|
|
14
21
|
node = decorate(Story);
|
|
15
22
|
}
|
|
16
|
-
return Shell ? /*#__PURE__*/createElement(Shell,
|
|
23
|
+
return Shell ? /*#__PURE__*/createElement(Shell, {
|
|
24
|
+
children: node,
|
|
25
|
+
globals
|
|
26
|
+
}) : node;
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=shell.js.map
|
package/lib/module/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createElement","composeStory","entry","Shell","args","node","render","decorate","decorators","inner","Story"],"sourceRoot":"../../src","sources":["shell.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"names":["createElement","composeStory","entry","Shell","args","globals","node","render","decorate","decorators","inner","Story","children"],"sourceRoot":"../../src","sources":["shell.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,OAAO;;AAIrC;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAC1BC,KAAiB,EACjBC,KAAsB,EACtBC,IAAU,GAAGF,KAAK,CAACE,IAAI,EACvBC,OAAiB,EACH;EACd,IAAIC,IAAkB,GAAGJ,KAAK,CAACK,MAAM,CAACH,IAAI,CAAC;EAE3C,KAAK,MAAMI,QAAQ,IAAIN,KAAK,CAACO,UAAU,EAAE;IACvC,MAAMC,KAAK,GAAGJ,IAAI;IAClB,MAAMK,KAAoB,GAAGA,CAAA,KAAMD,KAAK;IACxCJ,IAAI,GAAGE,QAAQ,CAACG,KAAK,CAAC;EACxB;EAEA,OAAOR,KAAK,gBAAGH,aAAa,CAACG,KAAK,EAAE;IAAES,QAAQ,EAAEN,IAAI;IAAED;EAAQ,CAAC,CAAC,GAAGC,IAAI;AACzE","ignoreList":[]}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { Control } from './controls.js';
|
|
3
|
-
|
|
3
|
+
import type { GlobalTypes, Globals } from './types.js';
|
|
4
|
+
export declare function PreviewControls({ controls, onChange, onReset, onCopy, globalTypes, globals, onGlobalChange, }: {
|
|
4
5
|
controls: Control[];
|
|
5
6
|
onChange: (name: string, value: unknown) => void;
|
|
6
7
|
onReset: () => void;
|
|
8
|
+
onCopy?: () => void;
|
|
9
|
+
globalTypes?: GlobalTypes;
|
|
10
|
+
globals?: Globals;
|
|
11
|
+
onGlobalChange?: (key: string, value: unknown) => void;
|
|
7
12
|
}): React.JSX.Element;
|
|
8
13
|
//# sourceMappingURL=PreviewControls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewControls.d.ts","sourceRoot":"","sources":["../../../src/PreviewControls.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"PreviewControls.d.ts","sourceRoot":"","sources":["../../../src/PreviewControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAS,CAAC;AAKpD,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxD,qBA4DA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewList.d.ts","sourceRoot":"","sources":["../../../src/PreviewList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAS,CAAC;AAI1C,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC,
|
|
1
|
+
{"version":3,"file":"PreviewList.d.ts","sourceRoot":"","sources":["../../../src/PreviewList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAS,CAAC;AAI1C,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC,qBA8CA"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type ArgsPersistence } from './persistence.js';
|
|
2
3
|
import { type ShellComponent } from './shell.js';
|
|
3
|
-
import type { StoryEntry } from './types.js';
|
|
4
|
-
export declare function PreviewStage({ entry, shell, onBack, }: {
|
|
4
|
+
import type { Args, GlobalTypes, Globals, StoryEntry } from './types.js';
|
|
5
|
+
export declare function PreviewStage({ entry, shell, onBack, persistence, onCopyArgs, globalTypes, globals, onGlobalChange, }: {
|
|
5
6
|
entry: StoryEntry;
|
|
6
7
|
shell?: ShellComponent;
|
|
7
8
|
onBack: () => void;
|
|
9
|
+
persistence?: ArgsPersistence;
|
|
10
|
+
onCopyArgs?: (args: Args, entry: StoryEntry) => void;
|
|
11
|
+
globalTypes?: GlobalTypes;
|
|
12
|
+
globals?: Globals;
|
|
13
|
+
onGlobalChange?: (key: string, value: unknown) => void;
|
|
8
14
|
}): React.JSX.Element;
|
|
9
15
|
//# sourceMappingURL=PreviewStage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewStage.d.ts","sourceRoot":"","sources":["../../../src/PreviewStage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,YAAS,CAAC;AAC5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PreviewStage.d.ts","sourceRoot":"","sources":["../../../src/PreviewStage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,EAAiC,KAAK,eAAe,EAAE,MAAM,kBAAe,CAAC;AACpF,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,YAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAS,CAAC;AAQtE,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,MAAM,EACN,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,EACP,cAAc,GACf,EAAE;IACD,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxD,qBA4DA"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { ArgsPersistence } from './persistence.js';
|
|
2
3
|
import type { ShellComponent } from './shell.js';
|
|
3
|
-
import type { StoryEntry } from './types.js';
|
|
4
|
-
export declare function Previewer({ stories, shell, initialStoryId, }: {
|
|
4
|
+
import type { Args, GlobalTypes, StoryEntry } from './types.js';
|
|
5
|
+
export declare function Previewer({ stories, shell, initialStoryId, persistence, onCopyArgs, globalTypes, }: {
|
|
5
6
|
stories: StoryEntry[];
|
|
6
7
|
shell?: ShellComponent;
|
|
7
8
|
initialStoryId?: string;
|
|
9
|
+
persistence?: ArgsPersistence;
|
|
10
|
+
onCopyArgs?: (args: Args, entry: StoryEntry) => void;
|
|
11
|
+
globalTypes?: GlobalTypes;
|
|
8
12
|
}): React.JSX.Element;
|
|
9
13
|
//# sourceMappingURL=Previewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Previewer.d.ts","sourceRoot":"","sources":["../../../src/Previewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Previewer.d.ts","sourceRoot":"","sources":["../../../src/Previewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAe,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAS,CAAC;AAU7D,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,qBAwBA"}
|
|
@@ -3,6 +3,10 @@ export type Control = {
|
|
|
3
3
|
name: string;
|
|
4
4
|
kind: 'text';
|
|
5
5
|
value: string;
|
|
6
|
+
} | {
|
|
7
|
+
name: string;
|
|
8
|
+
kind: 'color';
|
|
9
|
+
value: string;
|
|
6
10
|
} | {
|
|
7
11
|
name: string;
|
|
8
12
|
kind: 'boolean';
|
|
@@ -19,6 +23,10 @@ export type Control = {
|
|
|
19
23
|
kind: 'select';
|
|
20
24
|
value: unknown;
|
|
21
25
|
options: unknown[];
|
|
26
|
+
} | {
|
|
27
|
+
name: string;
|
|
28
|
+
kind: 'object';
|
|
29
|
+
value: unknown;
|
|
22
30
|
};
|
|
23
31
|
export declare function inferControls(args: Args, argTypes?: ArgTypes): Control[];
|
|
24
32
|
//# sourceMappingURL=controls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/controls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,QAAQ,EAAe,MAAM,YAAS,CAAC;AAGpE,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/controls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,QAAQ,EAAe,MAAM,YAAS,CAAC;AAGpE,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AA+BrD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,QAAa,GAAG,OAAO,EAAE,CAsD5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csf.d.ts","sourceRoot":"","sources":["../../../src/csf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,SAAS,EAAe,UAAU,EAAE,MAAM,YAAS,CAAC;AA2BlF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"csf.d.ts","sourceRoot":"","sources":["../../../src/csf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,SAAS,EAAe,UAAU,EAAE,MAAM,YAAS,CAAC;AA2BlF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,EAAE,CAmCvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../../src/globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAS,CAAC;AAKpD,wBAAgB,WAAW,CAAC,WAAW,GAAE,WAAgB,GAAG,OAAO,CAOlE"}
|
|
@@ -4,6 +4,9 @@ export { composeStory } from './shell.js';
|
|
|
4
4
|
export type { ShellComponent } from './shell.js';
|
|
5
5
|
export { inferControls } from './controls.js';
|
|
6
6
|
export type { Control } from './controls.js';
|
|
7
|
-
export
|
|
7
|
+
export { initGlobals } from './globals.js';
|
|
8
|
+
export { loadArgs, saveArgs, resetArgs } from './persistence.js';
|
|
9
|
+
export type { ArgsPersistence } from './persistence.js';
|
|
10
|
+
export type { Args, ArgType, ArgTypes, ControlKind, CsfModule, Decorator, GlobModules, Globals, GlobalType, GlobalTypes, Meta, RequireContext, Story, StoryEntry, } from './types.js';
|
|
8
11
|
export { Previewer } from './Previewer.js';
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAO,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,eAAY,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAY,CAAC;AAC3C,YAAY,EAAE,OAAO,EAAE,MAAM,eAAY,CAAC;AAC1C,YAAY,EACV,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,IAAI,EACJ,cAAc,EACd,KAAK,EACL,UAAU,GACX,MAAM,YAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAO,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,eAAY,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAY,CAAC;AAC3C,YAAY,EAAE,OAAO,EAAE,MAAM,eAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAe,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAe,CAAC;AACrD,YAAY,EACV,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,IAAI,EACJ,cAAc,EACd,KAAK,EACL,UAAU,GACX,MAAM,YAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAa,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Args } from './types.js';
|
|
2
|
+
export type ArgsPersistence = {
|
|
3
|
+
get(storyId: string): Args | undefined;
|
|
4
|
+
set(storyId: string, args: Args): void;
|
|
5
|
+
remove?(storyId: string): void;
|
|
6
|
+
};
|
|
7
|
+
export declare function loadArgs(storyId: string, declared: Args, persistence?: ArgsPersistence): Args;
|
|
8
|
+
export declare function saveArgs(storyId: string, args: Args, persistence?: ArgsPersistence): void;
|
|
9
|
+
export declare function resetArgs(storyId: string, persistence?: ArgsPersistence): void;
|
|
10
|
+
export declare function _clearSession(): void;
|
|
11
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAS,CAAC;AASpC,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACvC,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AASF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAS7F;AAGD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAGzF;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAG9E;AAGD,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ComponentType, ReactElement } from 'react';
|
|
2
|
-
import type { Args, StoryEntry } from './types.js';
|
|
2
|
+
import type { Args, Globals, StoryEntry } from './types.js';
|
|
3
3
|
export type ShellComponent = ComponentType<{
|
|
4
4
|
children: ReactElement;
|
|
5
|
+
globals?: Globals;
|
|
5
6
|
}>;
|
|
6
|
-
export declare function composeStory(entry: StoryEntry, Shell?: ShellComponent, args?: Args): ReactElement;
|
|
7
|
+
export declare function composeStory(entry: StoryEntry, Shell?: ShellComponent, args?: Args, globals?: Globals): ReactElement;
|
|
7
8
|
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/shell.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/shell.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAS,CAAC;AAMzD,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAQ1F,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,KAAK,CAAC,EAAE,cAAc,EACtB,IAAI,GAAE,IAAiB,EACvB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAUd"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentType, ReactElement } from 'react';
|
|
2
2
|
export type Args = Record<string, unknown>;
|
|
3
3
|
export type Decorator = (Story: ComponentType) => ReactElement;
|
|
4
|
-
export type ControlKind = 'text' | 'number' | 'boolean' | 'select' | 'range';
|
|
4
|
+
export type ControlKind = 'text' | 'number' | 'boolean' | 'select' | 'range' | 'color' | 'object';
|
|
5
5
|
export type ArgType = {
|
|
6
6
|
control?: ControlKind | {
|
|
7
7
|
type: ControlKind;
|
|
@@ -15,12 +15,20 @@ export type ArgType = {
|
|
|
15
15
|
step?: number;
|
|
16
16
|
};
|
|
17
17
|
export type ArgTypes = Record<string, ArgType>;
|
|
18
|
+
export type Globals = Record<string, unknown>;
|
|
19
|
+
export type GlobalType = {
|
|
20
|
+
options: unknown[];
|
|
21
|
+
default?: unknown;
|
|
22
|
+
label?: string;
|
|
23
|
+
};
|
|
24
|
+
export type GlobalTypes = Record<string, GlobalType>;
|
|
18
25
|
export type Meta = {
|
|
19
26
|
title?: string;
|
|
20
27
|
component?: ComponentType<any>;
|
|
21
28
|
args?: Args;
|
|
22
29
|
argTypes?: ArgTypes;
|
|
23
30
|
decorators?: Decorator[];
|
|
31
|
+
render?: (args: Args) => ReactElement;
|
|
24
32
|
};
|
|
25
33
|
export type Story = {
|
|
26
34
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAI3C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,YAAY,CAAC;AAI/D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAI3C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,YAAY,CAAC;AAI/D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElG,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzF,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAO/C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAGrD,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IAGzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC;CACvC,CAAC;AAGF,MAAM,MAAM,KAAK,GACb;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC;CACvC,GACD,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC;AAGnC,MAAM,MAAM,SAAS,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAIrE,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC;CACtC,CAAC;AAKF,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,IAAI,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAGzE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "component-previewer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Render a single React Native component instantly in its app's real provider shell, without booting the app.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"packageManager": "pnpm@11.5.3",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
],
|
|
48
48
|
"scripts": {
|
|
49
49
|
"build": "bob build",
|
|
50
|
-
"lint": "eslint
|
|
50
|
+
"lint": "eslint .",
|
|
51
51
|
"typecheck": "tsc --noEmit",
|
|
52
52
|
"test": "vitest run",
|
|
53
53
|
"test:watch": "vitest",
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
|
-
"react": "
|
|
76
|
-
"react-native": "
|
|
75
|
+
"react": ">=18.0.0",
|
|
76
|
+
"react-native": ">=0.70.0"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@types/react": "^19.2.17",
|