storybook-solidjs-vite 10.2.0 → 10.4.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.
Files changed (123) hide show
  1. package/README.md +65 -60
  2. package/dist/{SolidComponentMetaManager-KXVARPHU.js → SolidComponentMetaManager-4SWET2OG.js} +3 -3
  3. package/dist/{SolidComponentMetaManager-KXVARPHU.js.map → SolidComponentMetaManager-4SWET2OG.js.map} +1 -1
  4. package/dist/before-all-MeQv4iKF.d.ts +4 -0
  5. package/dist/{chunk-D5AOR3VU.js → chunk-4R2BK5SE.js} +83 -24
  6. package/dist/chunk-4R2BK5SE.js.map +1 -0
  7. package/dist/chunk-FGS26NTB.js +68 -0
  8. package/dist/chunk-FGS26NTB.js.map +1 -0
  9. package/dist/{chunk-QRPXDQGQ.js → chunk-KZXNQC4Q.js} +10 -10
  10. package/dist/chunk-KZXNQC4Q.js.map +1 -0
  11. package/dist/{chunk-FGHVLJAL.js → chunk-LKTA6WTO.js} +14 -7
  12. package/dist/chunk-LKTA6WTO.js.map +1 -0
  13. package/dist/chunk-NOGINBE3.js +8 -0
  14. package/dist/chunk-NOGINBE3.js.map +1 -0
  15. package/dist/{chunk-GZ3XWUGK.js → chunk-OHDHM5OZ.js} +20 -16
  16. package/dist/chunk-OHDHM5OZ.js.map +1 -0
  17. package/dist/chunk-QCGKL2ZI.js +70 -0
  18. package/dist/chunk-QCGKL2ZI.js.map +1 -0
  19. package/dist/{chunk-6566KBHG.js → chunk-TKOWB3JL.js} +6 -6
  20. package/dist/chunk-TKOWB3JL.js.map +1 -0
  21. package/dist/{chunk-H7QHQTFU.js → chunk-UQOUKQDU.js} +6 -6
  22. package/dist/chunk-UQOUKQDU.js.map +1 -0
  23. package/dist/define-preview-eX4EepPY.d.ts +41 -0
  24. package/dist/framework/preset.d.ts +2 -83
  25. package/dist/framework/preset.js +17 -348
  26. package/dist/framework/preset.js.map +1 -1
  27. package/dist/index.d.ts +10 -49
  28. package/dist/index.js +9 -19
  29. package/dist/index.js.map +1 -1
  30. package/dist/next.d.ts +10 -49
  31. package/dist/next.js +9 -19
  32. package/dist/next.js.map +1 -1
  33. package/dist/node.d.ts +8 -0
  34. package/dist/node.js +4 -0
  35. package/dist/{renderer/playwright.js → playwright.js} +1 -1
  36. package/dist/{public-types-BZgbgZlw.d.ts → public-api-CJkmyX7u.d.ts} +5 -1
  37. package/dist/{entry-preview → renderer}/argtypes.d.ts +1 -1
  38. package/dist/renderer/argtypes.js +4 -0
  39. package/dist/{entry-preview → renderer}/docs.d.ts +1 -1
  40. package/dist/{entry-preview → renderer}/docs.js +1 -1
  41. package/dist/renderer/solid-1.d.ts +16 -0
  42. package/dist/renderer/solid-1.js +5 -0
  43. package/dist/renderer/solid-2.d.ts +16 -0
  44. package/dist/renderer/solid-2.js +5 -0
  45. package/dist/renderer.d.ts +109 -2
  46. package/dist/renderer.js +948 -5
  47. package/dist/renderer.js.map +1 -1
  48. package/dist/toDocgenInfo-LDHSOTP4.js +4 -0
  49. package/dist/{toDocgenInfo-PQOQHVB2.js.map → toDocgenInfo-LDHSOTP4.js.map} +1 -1
  50. package/dist/{types-3qJHo3rN.d.ts → types-DkyU_XEU.d.ts} +1 -2
  51. package/package.json +28 -28
  52. package/src/framework/preset.ts +16 -4
  53. package/src/framework/{node.ts → public-api.ts} +2 -0
  54. package/src/framework/types.ts +0 -2
  55. package/src/index.ts +6 -4
  56. package/src/internal/codeExamples/enrichCsf.ts +106 -0
  57. package/src/internal/codeExamples/generateCodeSnippet.test.ts +235 -0
  58. package/src/internal/codeExamples/generateCodeSnippet.ts +728 -0
  59. package/src/internal/codeExamples/invariant.ts +11 -0
  60. package/src/{componentManifest → internal/componentManifest}/manifests.ts +31 -12
  61. package/src/internal/componentManifest/toDocgenInfo.test.ts +39 -0
  62. package/src/{componentManifest → internal/componentManifest}/toDocgenInfo.ts +20 -5
  63. package/src/{framework → internal}/solidVersion.ts +4 -19
  64. package/src/next.ts +6 -7
  65. package/src/node.ts +2 -0
  66. package/src/{renderer/v2 → preview}/define-preview.ts +46 -8
  67. package/src/{renderer/shared/public-types.ts → preview/public-api.ts} +24 -1
  68. package/src/renderer/{docs/entry-preview-argtypes.ts → argtypes.ts} +18 -13
  69. package/src/renderer/{docs/entry-preview.ts → docs.ts} +1 -1
  70. package/src/renderer/index.ts +17 -14
  71. package/src/renderer/shared/apply-decorators.ts +10 -16
  72. package/src/renderer/shared/{preview-annotations.ts → before-all.ts} +0 -25
  73. package/src/renderer/shared/default-render.ts +16 -0
  74. package/src/renderer/shared/mount.ts +37 -0
  75. package/src/renderer/shared/render-to-canvas.ts +72 -0
  76. package/src/renderer/shared/story-store.ts +1 -1
  77. package/src/renderer/solid-1.ts +90 -0
  78. package/src/renderer/solid-2.ts +94 -0
  79. package/dist/chunk-6566KBHG.js.map +0 -1
  80. package/dist/chunk-7IQZHF5A.js +0 -87
  81. package/dist/chunk-7IQZHF5A.js.map +0 -1
  82. package/dist/chunk-D5AOR3VU.js.map +0 -1
  83. package/dist/chunk-FGHVLJAL.js.map +0 -1
  84. package/dist/chunk-GF3JOYAC.js +0 -89
  85. package/dist/chunk-GF3JOYAC.js.map +0 -1
  86. package/dist/chunk-GZ3XWUGK.js.map +0 -1
  87. package/dist/chunk-H7QHQTFU.js.map +0 -1
  88. package/dist/chunk-NNSMHFZY.js +0 -42
  89. package/dist/chunk-NNSMHFZY.js.map +0 -1
  90. package/dist/chunk-QRPXDQGQ.js.map +0 -1
  91. package/dist/chunk-T3EBLI6L.js +0 -8
  92. package/dist/chunk-T3EBLI6L.js.map +0 -1
  93. package/dist/entry-preview/argtypes.js +0 -4
  94. package/dist/entry-preview/solid-1.d.ts +0 -14
  95. package/dist/entry-preview/solid-1.js +0 -5
  96. package/dist/entry-preview/solid-2.d.ts +0 -14
  97. package/dist/entry-preview/solid-2.js +0 -5
  98. package/dist/framework/node.d.ts +0 -7
  99. package/dist/framework/node.js +0 -4
  100. package/dist/preview-annotations-CYD5LX4X.d.ts +0 -13
  101. package/dist/toDocgenInfo-PQOQHVB2.js +0 -4
  102. package/src/renderer/shared/create-define-preview.ts +0 -45
  103. package/src/renderer/v1/define-preview.ts +0 -101
  104. package/src/renderer/v1/entry-preview.ts +0 -115
  105. package/src/renderer/v1/index.ts +0 -5
  106. package/src/renderer/v1/public-api.ts +0 -29
  107. package/src/renderer/v2/entry-preview.ts +0 -116
  108. package/src/renderer/v2/index.ts +0 -5
  109. package/src/renderer/v2/public-api.ts +0 -29
  110. /package/dist/{framework/node.js.map → node.js.map} +0 -0
  111. /package/dist/{renderer/playwright.d.ts → playwright.d.ts} +0 -0
  112. /package/dist/{renderer/playwright.js.map → playwright.js.map} +0 -0
  113. /package/dist/{entry-preview → renderer}/argtypes.js.map +0 -0
  114. /package/dist/{entry-preview → renderer}/docs.js.map +0 -0
  115. /package/dist/{entry-preview → renderer}/solid-1.js.map +0 -0
  116. /package/dist/{entry-preview → renderer}/solid-2.js.map +0 -0
  117. /package/src/{componentManifest → internal/componentManifest}/getComponents.ts +0 -0
  118. /package/src/{componentManifest → internal/componentManifest}/solidComponentMeta/SolidComponentMetaManager.ts +0 -0
  119. /package/src/{componentManifest → internal/componentManifest}/solidComponentMeta/SolidComponentMetaProject.ts +0 -0
  120. /package/src/{componentManifest → internal/componentManifest}/solidComponentMeta/resolveProps.ts +0 -0
  121. /package/src/{componentManifest → internal/componentManifest}/solidComponentMetaPlugin.ts +0 -0
  122. /package/src/{componentManifest → internal/componentManifest}/types.ts +0 -0
  123. /package/src/{renderer/playwright.ts → playwright.ts} +0 -0
package/README.md CHANGED
@@ -9,16 +9,16 @@
9
9
  [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](./LICENSE)
10
10
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/solidjs-community/storybook/pulls)
11
11
 
12
- [Storybook](https://storybook.js.org/) **framework adapter** for [SolidJS](https://solidjs.com/), using Vite.
13
-
14
- Adds SolidJS support to Storybook.
12
+ [Storybook](https://storybook.js.org/) framework adapter for [SolidJS](https://solidjs.com/) on Vite.
15
13
 
16
14
  ## ✨ Features
17
15
 
18
16
  - [Solid 1](#solid-1) and [Solid 2](#solid-2) support
19
17
  - [Vite-powered builder](https://storybook.js.org/docs/builders/vite)
20
18
  - [TypeScript-first setup](https://storybook.js.org/docs/configure/integration/typescript)
21
- - Component props show up automatically in [Controls and Docs](#docgen)
19
+ - Automatic props in [Controls and Docs](#docgen)
20
+ - [Autodocs code snippets](#autodocs-code-snippets) — static JSX **Show code** blocks from story source (CSF Next + CSF3, enabled by default)
21
+ - [Components manifest](https://storybook.js.org/docs/ai/manifests) for AI agents ([debugger](#components-manifest-debugger))
22
22
  - [Storybook MCP](https://storybook.js.org/docs/ai/mcp/overview) support ([setup](#storybook-mcp))
23
23
  - [CSF Next](https://storybook.js.org/docs/api/csf/csf-next) factory API ([setup](#csf-next), optional)
24
24
  - [Integrated testing](https://storybook.js.org/docs/writing-tests) (Vitest, Playwright)
@@ -30,26 +30,18 @@ Run in your project:
30
30
 
31
31
  ```bash
32
32
  npx create-storybook --type=solid
33
- ```
34
-
35
- Then start Storybook:
36
-
37
- ```bash
38
- bun run storybook
33
+ npm run storybook
39
34
  ```
40
35
 
41
36
  Open the URL shown in the terminal.
42
37
 
43
38
  ## ⚙️ Configuration
44
39
 
45
- You can customize Vite and Storybook as usual.
46
-
47
- - Add stories in `src/**/*.stories.tsx` or `src/**/*.stories.js`
48
- - Use Storybook addons for additional functionality
40
+ Customize Vite and Storybook as usual. Add stories in `src/**/*.stories.{tsx,js}` and install addons as needed.
49
41
 
50
42
  ### Solid 1
51
43
 
52
- On Solid 1, import from `storybook-solidjs-vite` in config, preview, and stories:
44
+ Import from `storybook-solidjs-vite` in config, preview, and stories:
53
45
 
54
46
  ```ts
55
47
  // .storybook/main.ts
@@ -69,21 +61,19 @@ import type { Preview, Meta, StoryObj } from 'storybook-solidjs-vite';
69
61
 
70
62
  ### Solid 2
71
63
 
72
- On Solid 2, use `storybook-solidjs-vite/next` in preview and stories — the types there match the Solid 2 renderer:
64
+ Use `storybook-solidjs-vite/next` in preview and stories:
73
65
 
74
66
  ```ts
75
67
  import type { Preview, Meta, StoryObj } from 'storybook-solidjs-vite/next';
76
68
  ```
77
69
 
78
- Imports without `/next` often still run, but TypeScript may complain because those types describe the Solid 1 renderer.
70
+ Imports without `/next` may still run, but TypeScript can complain.
79
71
 
80
- In `main.ts` either framework name is fine: `storybook-solidjs-vite` reads the major version from your installed `solid-js`, and `storybook-solidjs-vite/next` forces Solid 2.
72
+ In `main.ts`, either framework name works: `storybook-solidjs-vite` reads the major version from `solid-js`; `storybook-solidjs-vite/next` forces Solid 2.
81
73
 
82
74
  ```ts
83
- // Solid 1 & 2
84
- framework: 'storybook-solidjs-vite'
85
- // Solid 2
86
- framework: 'storybook-solidjs-vite/next'
75
+ framework: 'storybook-solidjs-vite' // Solid auto-detect
76
+ framework: 'storybook-solidjs-vite/next' // Solid 2 only
87
77
  ```
88
78
 
89
79
  ### CSF Next
@@ -92,7 +82,7 @@ framework: 'storybook-solidjs-vite/next'
92
82
 
93
83
  ```ts
94
84
  // .storybook/main.ts
95
- import { defineMain } from 'storybook-solidjs-vite/node';
85
+ import { defineMain } from 'storybook-solidjs-vite';
96
86
 
97
87
  export default defineMain({
98
88
  framework: { name: 'storybook-solidjs-vite' },
@@ -101,9 +91,14 @@ export default defineMain({
101
91
 
102
92
  ```ts
103
93
  // .storybook/preview.tsx
94
+ import addonDocs from '@storybook/addon-docs';
104
95
  import { definePreview } from 'storybook-solidjs-vite';
105
96
  // for Solid 2, use:
106
- import { definePreview } from 'storybook-solidjs-vite/next';
97
+ // import { definePreview } from 'storybook-solidjs-vite/next';
98
+
99
+ export default definePreview({
100
+ addons: [addonDocs()],
101
+ });
107
102
  ```
108
103
 
109
104
  ```ts
@@ -122,13 +117,11 @@ export const Primary = meta.story({
122
117
 
123
118
  ### Docgen
124
119
 
125
- TypeScript props for **Controls**, **Docs**, and the **components manifest** come from **React component-meta** (RCM) — a TypeScript LanguageService extractor aligned with Storybook’s `react-component-meta` format.
126
-
127
- Docgen is **enabled by default**. The components manifest debugger is also enabled at:
120
+ Props for **Controls**, **Docs**, and the **components manifest** come from a TypeScript LanguageService extractor aligned with Storybook's `react-component-meta` format.
128
121
 
129
- `http://localhost:<port>/manifests/components.html`
122
+ Enabled by default. Inspect output in the [manifest debugger](#components-manifest-debugger).
130
123
 
131
- To disable docgen:
124
+ To disable:
132
125
 
133
126
  ```ts
134
127
  import type { StorybookConfig } from 'storybook-solidjs-vite';
@@ -136,9 +129,25 @@ import type { StorybookConfig } from 'storybook-solidjs-vite';
136
129
  const config: StorybookConfig = {
137
130
  framework: {
138
131
  name: 'storybook-solidjs-vite',
139
- options: {
140
- docgen: false,
141
- },
132
+ options: { docgen: false },
133
+ },
134
+ };
135
+
136
+ export default config;
137
+ ```
138
+
139
+ ### Autodocs code snippets
140
+
141
+ **Show code** blocks are static snippets generated from story source at index time (`experimentalCodeExamples`). Enabled by default.
142
+
143
+ To disable:
144
+
145
+ ```ts
146
+ import type { StorybookConfig } from 'storybook-solidjs-vite';
147
+
148
+ const config: StorybookConfig = {
149
+ features: {
150
+ experimentalCodeExamples: false
142
151
  },
143
152
  };
144
153
 
@@ -153,61 +162,57 @@ Solid projects can use [Storybook MCP](https://storybook.js.org/docs/ai/mcp/over
153
162
  npx storybook add @storybook/addon-mcp
154
163
  ```
155
164
 
156
- With Storybook running, the MCP server is at `http://localhost:<port>/mcp`. Connect your agent to that URL (see [Storybook MCP docs](https://storybook.js.org/docs/ai/mcp/overview#2-add-the-mcp-server-to-your-agent)). The components manifest debugger remains at `/manifests/components.html`.
165
+ See [Storybook MCP docs](https://storybook.js.org/docs/ai/mcp/overview#2-add-the-mcp-server-to-your-agent) for agent setup.
157
166
 
158
- ## 🎨 Decorators
167
+ ### Components manifest debugger
159
168
 
160
- On args or globals changes, Storybook re-runs decorators and stories — the same model as React, where each update calls your functions again. Solid updates through fine-grained signals and usually does not need that.
169
+ Storybook builds [JSON manifests](https://storybook.js.org/docs/ai/manifests) from CSF stories and component source — names, props, JSDoc, story ids, and more. Enabled by default (`features.componentsManifest`). Prop data comes from [docgen](#docgen); story snippets use the same [code generator](#autodocs-code-snippets).
170
+
171
+ While Storybook runs (or in a static build):
172
+
173
+ - **Debugger UI:** `http://localhost:6006/manifests/components.html` — browse manifests and generation errors/warnings
174
+ - **Components JSON:** `http://localhost:6006/manifests/components.json`
175
+ - **Docs JSON:** `http://localhost:6006/manifests/docs.json` (when MDX docs are present)
176
+
177
+ ## 🎨 Decorators
161
178
 
162
- If a decorator returns JSX, the extra runs can leave duplicate nodes in the DOM.
179
+ On args or globals changes, Storybook re-runs decorators and stories functions follows React reactivity model. Solid updates via fine-grained signals and usually doesn't need that. JSX decorators re-run can leave duplicate DOM nodes. To avoid this, use `createJSXDecorator` function to define decorators that return JSX.
163
180
 
164
181
  ### createJSXDecorator
165
182
 
166
- Use for decorators that return JSX. Ensures they run only once per story mount.
183
+ For decorators that return JSX. Runs once per story mount — `context.globals` and `context.args` are reactive stores, so bindings in JSX still update without re-running the decorator:
167
184
 
168
185
  ```tsx
169
186
  import { createJSXDecorator } from 'storybook-solidjs-vite';
170
187
 
171
- export const decorator = createJSXDecorator((Story) => {
172
- return (
173
- <main>
174
- <Story />
175
- </main>
176
- );
177
- });
188
+ export const withLayout = createJSXDecorator((Story, context) => (
189
+ <main data-theme={context.globals.theme}>
190
+ <Story />
191
+ </main>
192
+ ));
178
193
  ```
179
194
 
180
195
  ### createDecorator
181
196
 
182
- Use for decorators that do not return JSX.
197
+ For side effects that should run on every story update — e.g. sync `document.body` when globals change:
183
198
 
184
199
  ```tsx
185
200
  import { createDecorator } from 'storybook-solidjs-vite';
186
201
 
187
- export const decorator = createDecorator((Story) => {
202
+ export const withTheme = createDecorator((Story, context) => {
203
+ // Will run on every story update
204
+ document.body.setAttribute('data-theme', context.globals.theme);
188
205
  return Story();
189
206
  });
190
207
  ```
191
208
 
192
- ### Manual flag
193
-
194
- ```tsx
195
- import { IS_SOLID_JSX_FLAG } from 'storybook-solidjs-vite';
196
-
197
- export const decorator = (Story) => {
198
- return <div><Story /></div>;
199
- };
200
-
201
- decorator[IS_SOLID_JSX_FLAG] = true;
202
- ```
203
-
204
209
  ## 🔄 Migration from v9
205
210
 
206
- Check out [Migration Guide](./MIGRATION.md) for the instructions and breaking changes.
211
+ See [Migration Guide](./MIGRATION.md) for breaking changes.
207
212
 
208
213
  ## 🤝 Contributing
209
214
 
210
- Contributions, issues and feature requests are welcome! Feel free to [open an issue](https://github.com/solidjs-community/storybook/issues) or submit a PR.
215
+ Issues and PRs welcome — [open an issue](https://github.com/solidjs-community/storybook/issues) or submit a pull request.
211
216
 
212
217
  ## 📖 License
213
218
 
@@ -1,4 +1,4 @@
1
- export { DOCGEN_ENGINE, MANIFEST_DOCGEN_ENGINE, SolidComponentMetaManager, getOrCreateSolidComponentMetaManager } from './chunk-6566KBHG.js';
1
+ export { DOCGEN_ENGINE, MANIFEST_DOCGEN_ENGINE, SolidComponentMetaManager, getOrCreateSolidComponentMetaManager } from './chunk-TKOWB3JL.js';
2
2
  import './chunk-PZ5AY32C.js';
3
- //# sourceMappingURL=SolidComponentMetaManager-KXVARPHU.js.map
4
- //# sourceMappingURL=SolidComponentMetaManager-KXVARPHU.js.map
3
+ //# sourceMappingURL=SolidComponentMetaManager-4SWET2OG.js.map
4
+ //# sourceMappingURL=SolidComponentMetaManager-4SWET2OG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SolidComponentMetaManager-KXVARPHU.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"SolidComponentMetaManager-4SWET2OG.js"}
@@ -0,0 +1,4 @@
1
+ /** Configures `storybook/test` wrappers so Solid updates flush after async play steps. */
2
+ declare const beforeAll: () => Promise<void>;
3
+
4
+ export { beforeAll as b };
@@ -1,10 +1,15 @@
1
1
  import { defaultDecorateStory } from 'storybook/preview-api';
2
- import { global } from '@storybook/global';
3
- import { createComponent } from 'solid-js';
4
2
  import { configure } from 'storybook/test';
5
3
 
6
- // src/renderer/shared/public-types.ts
4
+ // src/preview/public-api.ts
7
5
  var IS_SOLID_JSX_FLAG = "__isJSX";
6
+ var createDecorator = (decorator) => {
7
+ return decorator;
8
+ };
9
+ var createJSXDecorator = (decorator) => {
10
+ decorator[IS_SOLID_JSX_FLAG] = true;
11
+ return decorator;
12
+ };
8
13
 
9
14
  // src/renderer/shared/story-store.ts
10
15
  var getStoryId = (context) => {
@@ -67,7 +72,9 @@ function createStoryState(createStore) {
67
72
  }
68
73
  };
69
74
  }
70
- function createApplyDecorators(store, createComponent2) {
75
+ function createApplyDecorators({
76
+ storyStore
77
+ }) {
71
78
  return (storyFn, rawDecorators) => {
72
79
  const decorators = rawDecorators.map(
73
80
  (decorator) => {
@@ -78,7 +85,7 @@ function createApplyDecorators(store, createComponent2) {
78
85
  return (StoryFn, context) => {
79
86
  if (isJSX) {
80
87
  const storyId = getStoryId(context);
81
- if (storyId && store.isStoryRendered(storyId)) {
88
+ if (storyId && storyStore.isStoryRendered(storyId)) {
82
89
  return StoryFn(context);
83
90
  }
84
91
  }
@@ -88,27 +95,13 @@ function createApplyDecorators(store, createComponent2) {
88
95
  );
89
96
  return defaultDecorateStory((context) => {
90
97
  const storyId = getStoryId(context);
91
- if (storyId && store.isStoryRendered(storyId)) {
98
+ if (storyId && storyStore.isStoryRendered(storyId)) {
92
99
  return null;
93
100
  }
94
- return createComponent2(storyFn, context);
101
+ return storyFn(context);
95
102
  }, decorators);
96
103
  };
97
104
  }
98
- if (global.window) {
99
- global.window.STORYBOOK_ENV = "solid";
100
- }
101
- var parameters = {
102
- renderer: "solid"
103
- };
104
- var render = (_, context) => {
105
- if (!context.component) {
106
- throw new Error(
107
- `Unable to render story ${context.id} as the component annotation is missing from the default export`
108
- );
109
- }
110
- return createComponent(context.component, context.args);
111
- };
112
105
  var beforeAll = async () => {
113
106
  try {
114
107
  configure({
@@ -129,6 +122,72 @@ var beforeAll = async () => {
129
122
  }
130
123
  };
131
124
 
132
- export { IS_SOLID_JSX_FLAG, beforeAll, createApplyDecorators, createStoryState, getStoryId, parameters, render };
133
- //# sourceMappingURL=chunk-D5AOR3VU.js.map
134
- //# sourceMappingURL=chunk-D5AOR3VU.js.map
125
+ // src/renderer/shared/default-render.ts
126
+ function createDefaultRender(createComponent) {
127
+ return (_, context) => {
128
+ if (!context.component) {
129
+ throw new Error(
130
+ `Unable to render story ${context.id} as the component annotation is missing from the default export`
131
+ );
132
+ }
133
+ return createComponent(context.component, context.args);
134
+ };
135
+ }
136
+
137
+ // src/renderer/shared/mount.ts
138
+ function createMount({ storyStore }) {
139
+ return (context) => {
140
+ const storyId = getStoryId(context);
141
+ const { forceRemount } = context;
142
+ if (!storyId) {
143
+ throw new Error("Story ID is required");
144
+ }
145
+ return async (ui) => {
146
+ if (ui != null) {
147
+ context.originalStoryFn = () => ui;
148
+ }
149
+ if (forceRemount) {
150
+ storyStore.disposeStory(storyId);
151
+ }
152
+ if (!storyStore.isStoryRendered(storyId) || forceRemount) {
153
+ storyStore.resetStory(storyId);
154
+ }
155
+ storyStore.makeContextReactive(context);
156
+ await context.renderToCanvas();
157
+ return context.canvas;
158
+ };
159
+ };
160
+ }
161
+
162
+ // src/renderer/shared/render-to-canvas.ts
163
+ function createRenderToCanvas(options) {
164
+ const { storyStore, createComponent, render, createStoryApp } = options;
165
+ return async (renderContext, canvasElement) => {
166
+ const storyId = getStoryId({ ...renderContext, canvasElement });
167
+ if (!storyId) {
168
+ throw new Error("Story ID is required");
169
+ }
170
+ const { storyContext, storyFn: StoryFn, showMain, showException } = renderContext;
171
+ if (!storyStore.isStoryRendered(storyId)) {
172
+ const App = createStoryApp({
173
+ Story: StoryFn,
174
+ storyContext,
175
+ showMain,
176
+ showException,
177
+ storyId
178
+ });
179
+ const disposeFn = render(() => createComponent(App, {}), canvasElement);
180
+ storyStore.setDisposeFn(storyId, disposeFn);
181
+ } else {
182
+ StoryFn();
183
+ }
184
+ return () => {
185
+ storyStore.disposeStory(storyId);
186
+ storyStore.resetStory(storyId);
187
+ };
188
+ };
189
+ }
190
+
191
+ export { IS_SOLID_JSX_FLAG, beforeAll, createApplyDecorators, createDecorator, createDefaultRender, createJSXDecorator, createMount, createRenderToCanvas, createStoryState };
192
+ //# sourceMappingURL=chunk-4R2BK5SE.js.map
193
+ //# sourceMappingURL=chunk-4R2BK5SE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/preview/public-api.ts","../src/renderer/shared/story-store.ts","../src/renderer/shared/apply-decorators.ts","../src/renderer/shared/before-all.ts","../src/renderer/shared/default-render.ts","../src/renderer/shared/mount.ts","../src/renderer/shared/render-to-canvas.ts"],"names":[],"mappings":"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","file":"chunk-4R2BK5SE.js","sourcesContent":["import type { Component, ComponentProps } from 'solid-js';\nimport type {\n AnnotatedStoryFn,\n Args,\n ArgsFromMeta,\n ArgsStoryFn,\n Canvas,\n ComponentAnnotations,\n DecoratorFunction,\n RenderContext as GenericRenderContext,\n StoryContext as GenericStoryContext,\n LoaderFunction,\n ProjectAnnotations,\n StoryAnnotations,\n StrictArgs,\n WebRenderer,\n} from 'storybook/internal/types';\nimport type { SetOptional, Simplify } from 'type-fest';\n\nexport type {\n DefinePreviewInput,\n SolidMeta,\n SolidPreview,\n SolidStory,\n} from './define-preview';\n\n/**\n * Marks decorators that return JSX so they are not re-run on every Storybook update.\n * Prefer `createJSXDecorator` over setting this flag manually.\n */\nexport const IS_SOLID_JSX_FLAG = '__isJSX';\n\n/**\n * Meta `args` when `preview.meta()` omits `args`. Matches `@storybook/react`'s `{}` sentinel:\n * `keyof` is `never`, so `AddMocks` does not match every component prop key.\n */\nexport type EmptyMetaArgs = { [Key in never]: never };\n\n// This performs a downcast to function types that are mocks, when a mock fn is given to meta args.\nexport type AddMocks<TArgs, DefaultArgs> = Simplify<{\n [T in keyof TArgs]: T extends keyof DefaultArgs\n ? DefaultArgs[T] extends (...args: any) => any & { mock: object }\n ? DefaultArgs[T]\n : TArgs[T]\n : TArgs[T];\n}>;\n\nexport type SolidComponent<P extends Record<string, any> = Record<string, any>> = Component<P>;\nexport type SolidComponentProps<T extends SolidComponent> = ComponentProps<T>;\n\nexport type StoryFnReturnType = ReturnType<SolidComponent>;\n\nexport interface SolidRenderer extends WebRenderer {\n component: SolidComponent<any>;\n storyResult: StoryFnReturnType;\n mount: (ui?: StoryFnReturnType) => Promise<Canvas>;\n}\n\nexport interface SolidParameters {\n /** Solid renderer configuration */\n solid?: Record<string, never>;\n}\n\n/** Mirroring React's `ReactTypes`. */\nexport interface SolidTypes extends SolidRenderer {\n parameters: SolidParameters;\n}\n\nexport type Meta<TCmpOrArgs = Args> = [TCmpOrArgs] extends [SolidComponent<any>]\n ? ComponentAnnotations<SolidRenderer, SolidComponentProps<TCmpOrArgs>>\n : ComponentAnnotations<SolidRenderer, TCmpOrArgs>;\n\nexport type StoryFn<TCmpOrArgs = Args> = [TCmpOrArgs] extends [SolidComponent<any>]\n ? AnnotatedStoryFn<SolidRenderer, SolidComponentProps<TCmpOrArgs>>\n : AnnotatedStoryFn<SolidRenderer, TCmpOrArgs>;\n\nexport type StoryObj<TMetaOrCmpOrArgs = Args> = [TMetaOrCmpOrArgs] extends [\n {\n render?: ArgsStoryFn<SolidRenderer, any>;\n component?: infer Cmp;\n args?: infer DefaultArgs;\n }\n]\n ? Simplify<\n (Cmp extends SolidComponent<any> ? SolidComponentProps<Cmp> : unknown)\n & ArgsFromMeta<SolidRenderer, TMetaOrCmpOrArgs>\n > extends infer TArgs\n ? StoryAnnotations<\n SolidRenderer,\n AddMocks<TArgs, DefaultArgs>,\n SetOptional<TArgs, keyof TArgs & keyof DefaultArgs>\n >\n : never\n : [TMetaOrCmpOrArgs] extends [SolidComponent<any>]\n ? StoryAnnotations<SolidRenderer, SolidComponentProps<TMetaOrCmpOrArgs>>\n : StoryAnnotations<SolidRenderer, TMetaOrCmpOrArgs>;\n\nexport type Decorator<TArgs = StrictArgs> = DecoratorFunction<SolidRenderer, TArgs> & {\n [IS_SOLID_JSX_FLAG]?: boolean;\n};\n\nexport type Loader<TArgs = StrictArgs> = LoaderFunction<SolidRenderer, TArgs>;\nexport type Preview = ProjectAnnotations<SolidRenderer>;\nexport type StoryContext<TArgs = StrictArgs> = GenericStoryContext<SolidRenderer, TArgs> & {\n renderToCanvas: () => Promise<void>;\n};\n\nexport type RenderContext = GenericRenderContext<SolidRenderer>;\n\n/** Use for decorators that do not return JSX (e.g. they only call `Story()`). */\nexport const createDecorator = (\n decorator: DecoratorFunction<SolidRenderer>\n): Decorator => {\n return decorator as Decorator;\n};\n\n/** Use for decorators that return JSX. Ensures they run only once per story mount. */\nexport const createJSXDecorator = (\n decorator: DecoratorFunction<SolidRenderer>\n): Decorator => {\n (decorator as Decorator)[IS_SOLID_JSX_FLAG] = true;\n\n return decorator as Decorator;\n};\n\nexport type { Args, ArgTypes, Parameters, StrictArgs } from 'storybook/internal/types';\n","import type { Args, Globals, StoryContext as InternalStoryContext } from 'storybook/internal/types';\nimport type { SolidRenderer } from '../../preview/public-api';\n\n/** Update store via `(prev) => next` (version layer applies reconcile/draft setter). */\ntype SetStoreFn<T extends object> = (update: (prev: T) => T) => void;\n\n/** Reactive store tuple returned by `createStore` (state + setter). */\ntype SolidStore<T extends object> = readonly [\n state: T,\n setState: SetStoreFn<T>\n];\n\ntype CreateStoreFn = <T extends object>(initial: T) => SolidStore<T>;\n\nexport interface StoryStateStore {\n isStoryRendered: (storyId: string) => boolean;\n resetStory: (storyId: string) => void;\n setRendered: (storyId: string, rendered: boolean) => void;\n setDisposeFn: (storyId: string, disposeFn: (() => void) | null) => void;\n makeContextReactive: (context: InternalStoryContext<SolidRenderer, Args>) => void;\n disposeStory: (storyId: string) => void;\n}\n\nexport const getStoryId = (context: { id?: string; canvasElement?: { id?: string } }): string | undefined => {\n const canvasId = context.canvasElement?.id;\n\n if (!canvasId || canvasId === 'storybook-root') {\n return context.id;\n }\n\n return canvasId;\n};\n\nexport function createStoryState(createStore: CreateStoreFn): StoryStateStore {\n const [globals, setGlobals] = createStore<Globals>({});\n const renderedStories = new Set<string>();\n const argsStores = new Map<string, SolidStore<Args>>();\n const disposers = new Map<string, () => void>();\n\n const getArgsStore = (storyId: string): SolidStore<Args> => {\n let store = argsStores.get(storyId);\n\n if (!store) {\n store = createStore({} as Args);\n argsStores.set(storyId, store);\n }\n\n return store;\n };\n\n return {\n isStoryRendered(storyId) {\n return renderedStories.has(storyId);\n },\n\n resetStory(storyId) {\n renderedStories.delete(storyId);\n disposers.delete(storyId);\n argsStores.delete(storyId);\n },\n\n setRendered(storyId, isRendered) {\n if (isRendered) {\n renderedStories.add(storyId);\n }\n else {\n renderedStories.delete(storyId);\n }\n },\n\n setDisposeFn(storyId, disposeFn) {\n if (disposeFn) {\n disposers.set(storyId, disposeFn);\n }\n else {\n disposers.delete(storyId);\n }\n },\n\n makeContextReactive(context) {\n const storyId = getStoryId(context);\n\n if (!storyId) {\n throw new Error('Story ID is required');\n }\n\n const [args, setArgs] = getArgsStore(storyId);\n\n // Update reactive stores with the new values\n setArgs(() => context.args);\n setGlobals(() => context.globals);\n\n // Sync the reactive stores to the context\n context.args = args;\n context.globals = globals;\n },\n\n disposeStory(storyId) {\n disposers.get(storyId)?.();\n disposers.delete(storyId);\n },\n };\n}\n","import { defaultDecorateStory } from 'storybook/preview-api';\n\nimport { IS_SOLID_JSX_FLAG, type Decorator, type SolidRenderer } from '../../preview/public-api';\nimport { getStoryId } from './story-store';\n\nimport type { LegacyStoryFn } from 'storybook/internal/types';\nimport type { StoryStateStore } from './story-store';\n\nexport function createApplyDecorators({\n storyStore,\n}: {\n storyStore: StoryStateStore;\n}): (\n storyFn: LegacyStoryFn<SolidRenderer>,\n rawDecorators: Decorator[]\n) => LegacyStoryFn<SolidRenderer> {\n return (storyFn, rawDecorators) => {\n const decorators = rawDecorators.map(\n (decorator): Decorator => {\n const originalFn = (decorator as Decorator & { originalFn?: Decorator }).originalFn;\n const isJSX = Boolean(\n decorator[IS_SOLID_JSX_FLAG] || originalFn?.[IS_SOLID_JSX_FLAG]\n );\n\n return (StoryFn, context) => {\n if (isJSX) {\n const storyId = getStoryId(context);\n\n if (storyId && storyStore.isStoryRendered(storyId)) {\n return StoryFn(context);\n }\n }\n\n return decorator(StoryFn, context);\n };\n }\n );\n\n return defaultDecorateStory((context) => {\n const storyId = getStoryId(context);\n\n if (storyId && storyStore.isStoryRendered(storyId)) {\n return null;\n }\n\n return storyFn(context);\n }, decorators);\n };\n}\n","import { configure } from 'storybook/test';\n\n/** Configures `storybook/test` wrappers so Solid updates flush after async play steps. */\nexport const beforeAll = async() => {\n try {\n configure({\n unstable_advanceTimersWrapper: (cb: () => any) => cb(),\n asyncWrapper: async(cb: () => any) => {\n const result = await cb();\n\n await new Promise<void>((resolve) => {\n setTimeout(() => resolve(), 0);\n\n // @ts-expect-error global jest\n if (typeof jest !== 'undefined' && jest != null && ((setTimeout as any)._isMockFunction === true || Object.prototype.hasOwnProperty.call(setTimeout, 'clock'))) {\n // @ts-expect-error global jest\n jest!.advanceTimersByTime(0);\n }\n });\n\n return result;\n },\n eventWrapper: (cb: () => any) => cb(),\n });\n }\n catch {\n // storybook/test might not be available; noop\n }\n};\n","import type { ArgsStoryFn } from 'storybook/internal/types';\nimport type { SolidRenderer } from '../../preview/public-api';\nimport type { SolidRuntimeCreateComponent } from './render-to-canvas';\n\n/** Default render for meta/stories with `component` + `args` and no custom `render` (CSF 3+). */\nexport function createDefaultRender(createComponent: SolidRuntimeCreateComponent): ArgsStoryFn<SolidRenderer> {\n return (_, context) => {\n if (!context.component) {\n throw new Error(\n `Unable to render story ${ context.id } as the component annotation is missing from the default export`\n );\n }\n\n return createComponent(context.component, context.args);\n };\n}\n","import { getStoryId } from './story-store';\n\nimport type { Args } from 'storybook/internal/types';\nimport type { StoryContext, StoryFnReturnType } from '../../preview/public-api';\nimport type { StoryStateStore } from './story-store';\n\n/** Play/mount API: sync reactive args and globals, then render via `renderToCanvas`. */\nexport function createMount({ storyStore }: { storyStore: StoryStateStore }) {\n return (context: StoryContext<Args>) => {\n const storyId = getStoryId(context);\n const { forceRemount } = context;\n\n if (!storyId) {\n throw new Error('Story ID is required');\n }\n\n return async(ui: StoryFnReturnType) => {\n if (ui != null) {\n context.originalStoryFn = () => ui;\n }\n\n if (forceRemount) {\n storyStore.disposeStory(storyId);\n }\n\n if (!storyStore.isStoryRendered(storyId) || forceRemount) {\n storyStore.resetStory(storyId);\n }\n\n storyStore.makeContextReactive(context);\n\n await context.renderToCanvas();\n\n return context.canvas;\n };\n };\n}\n","import { getStoryId } from './story-store';\n\nimport type { RenderContext, SolidComponent, SolidRenderer } from '../../preview/public-api';\nimport type { StoryStateStore } from './story-store';\n\nexport type SolidRuntimeCreateComponent = (\n component: SolidComponent,\n props: object\n) => SolidRenderer['storyResult'];\n\nexport type SolidRendererRuntime = {\n storyStore: StoryStateStore;\n createComponent: SolidRuntimeCreateComponent;\n render: (\n renderFn: () => SolidRenderer['storyResult'],\n canvasElement: SolidRenderer['canvasElement']\n ) => () => void;\n};\n\nexport type StoryThunk = () => SolidRenderer['storyResult'];\n\nexport type StoryAppContext = {\n Story: StoryThunk;\n storyContext: RenderContext['storyContext'];\n showMain: RenderContext['showMain'];\n showException: RenderContext['showException'];\n storyId: string;\n};\n\ntype RenderToCanvasOptions = SolidRendererRuntime & {\n createStoryApp: (context: StoryAppContext) => SolidComponent;\n};\n\n/** Mounts or updates the story in the preview canvas. Returns cleanup when the story changes. */\nexport function createRenderToCanvas(options: RenderToCanvasOptions) {\n const { storyStore, createComponent, render, createStoryApp } = options;\n\n return async(\n renderContext: RenderContext,\n canvasElement: SolidRenderer['canvasElement']\n ) => {\n const storyId = getStoryId({ ...renderContext, canvasElement });\n\n if (!storyId) {\n throw new Error('Story ID is required');\n }\n\n const { storyContext, storyFn: StoryFn, showMain, showException } = renderContext;\n\n if (!storyStore.isStoryRendered(storyId)) {\n const App = createStoryApp({\n Story: StoryFn,\n storyContext,\n showMain,\n showException,\n storyId,\n });\n\n const disposeFn = render(() => createComponent(App, {}), canvasElement);\n\n storyStore.setDisposeFn(storyId, disposeFn);\n }\n else {\n StoryFn();\n }\n\n return () => {\n storyStore.disposeStory(storyId);\n storyStore.resetStory(storyId);\n };\n };\n}\n"]}
@@ -0,0 +1,68 @@
1
+ import { createRenderToCanvas, createDefaultRender, createMount, beforeAll, createApplyDecorators, createStoryState } from './chunk-4R2BK5SE.js';
2
+ import { __export } from './chunk-PZ5AY32C.js';
3
+ import { global } from '@storybook/global';
4
+ import { createComponent, onMount, onCleanup, ErrorBoundary } from 'solid-js';
5
+ import { createStore as createStore$1, reconcile } from 'solid-js/store';
6
+ import { render as render$1 } from 'solid-js/web';
7
+
8
+ // src/renderer/solid-1.ts
9
+ var solid_1_exports = {};
10
+ __export(solid_1_exports, {
11
+ applyDecorators: () => applyDecorators,
12
+ beforeAll: () => beforeAll,
13
+ mount: () => mount,
14
+ parameters: () => parameters,
15
+ render: () => render,
16
+ renderToCanvas: () => renderToCanvas
17
+ });
18
+ if (global.window) {
19
+ global.window.STORYBOOK_ENV = "solid";
20
+ }
21
+ var createStore = (initial) => {
22
+ const [state, setStore] = createStore$1(initial);
23
+ const setState = (update) => {
24
+ setStore(reconcile(update(state)));
25
+ };
26
+ return [state, setState];
27
+ };
28
+ var storyStore = createStoryState(createStore);
29
+ var runtime = {
30
+ storyStore,
31
+ createComponent,
32
+ render: render$1
33
+ };
34
+ var applyDecorators = createApplyDecorators({ storyStore });
35
+ var mount = createMount(runtime);
36
+ var render = createDefaultRender(runtime.createComponent);
37
+ var renderToCanvas = createRenderToCanvas({
38
+ ...runtime,
39
+ createStoryApp: ({ Story, storyContext, showMain, showException, storyId }) => {
40
+ const App = () => {
41
+ onMount(() => {
42
+ showMain();
43
+ storyStore.setRendered(storyId, true);
44
+ });
45
+ onCleanup(() => {
46
+ storyStore.setRendered(storyId, false);
47
+ });
48
+ if (storyContext?.parameters?.["__isPortableStory"]) {
49
+ return createComponent(() => Story(), {});
50
+ }
51
+ return createComponent(ErrorBoundary, {
52
+ fallback: (err) => {
53
+ showException(err);
54
+ return err;
55
+ },
56
+ children: createComponent(() => Story(), {})
57
+ });
58
+ };
59
+ return App;
60
+ }
61
+ });
62
+ var parameters = {
63
+ renderer: "solid"
64
+ };
65
+
66
+ export { applyDecorators, mount, parameters, render, renderToCanvas, solid_1_exports };
67
+ //# sourceMappingURL=chunk-FGS26NTB.js.map
68
+ //# sourceMappingURL=chunk-FGS26NTB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/renderer/solid-1.ts"],"names":["solidCreateStore","solidRender"],"mappings":";;;;;;;;AAAA,IAAA,eAAA,GAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,cAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAoBA,IAAI,OAAO,MAAA,EAAQ;AACf,EAAA,MAAA,CAAO,OAAO,aAAA,GAAgB,OAAA;AAClC;AAEA,IAAM,WAAA,GAAc,CAAmB,OAAA,KAAe;AAClD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,cAAoB,OAAO,CAAA;AAErD,EAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAA2B;AACzC,IAAA,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA,EACrC,CAAA;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AAC3B,CAAA;AAEA,IAAM,UAAA,GAAa,iBAAiB,WAAW,CAAA;AAE/C,IAAM,OAAA,GAAgC;AAAA,EAClC,UAAA;AAAA,EACA,eAAA;AAAA,EACA,MAAA,EAAQC;AACZ,CAAA;AAEA,IAAM,eAAA,GAAkB,qBAAA,CAAsB,EAAE,UAAA,EAAY;AAC5D,IAAM,KAAA,GAAQ,YAAY,OAAO;AACjC,IAAM,MAAA,GAAS,mBAAA,CAAoB,OAAA,CAAQ,eAAe;AAC1D,IAAM,iBAAiB,oBAAA,CAAqB;AAAA,EACxC,GAAG,OAAA;AAAA,EACH,cAAA,EAAgB,CAAC,EAAE,KAAA,EAAO,cAAc,QAAA,EAAU,aAAA,EAAe,SAAQ,KAAM;AAC3E,IAAA,MAAM,MAAsB,MAAM;AAC9B,MAAA,OAAA,CAAQ,MAAM;AACV,QAAA,QAAA,EAAS;AACT,QAAA,UAAA,CAAW,WAAA,CAAY,SAAS,IAAI,CAAA;AAAA,MACxC,CAAC,CAAA;AAED,MAAA,SAAA,CAAU,MAAM;AACZ,QAAA,UAAA,CAAW,WAAA,CAAY,SAAS,KAAK,CAAA;AAAA,MACzC,CAAC,CAAA;AAGD,MAAA,IAAI,YAAA,EAAc,UAAA,GAAa,mBAAmB,CAAA,EAAG;AACjD,QAAA,OAAO,eAAA,CAAgB,MAAM,KAAA,EAAM,EAAG,EAAE,CAAA;AAAA,MAC5C;AAEA,MAAA,OAAO,gBAAgB,aAAA,EAAe;AAAA,QAClC,QAAA,EAAU,CAAC,GAAA,KAAe;AACtB,UAAA,aAAA,CAAc,GAAG,CAAA;AAEjB,UAAA,OAAO,GAAA;AAAA,QACX,CAAA;AAAA,QACA,UAAU,eAAA,CAAgB,MAAM,KAAA,EAAM,EAAG,EAAE;AAAA,OAC9C,CAAA;AAAA,IACL,CAAA;AAEA,IAAA,OAAO,GAAA;AAAA,EACX;AACJ,CAAC;AAGD,IAAM,UAAA,GAAa;AAAA,EACf,QAAA,EAAU;AACd","file":"chunk-FGS26NTB.js","sourcesContent":["import { global } from '@storybook/global';\nimport {\n createComponent,\n ErrorBoundary,\n onCleanup,\n onMount,\n} from 'solid-js';\nimport { reconcile, createStore as solidCreateStore } from 'solid-js/store';\nimport { render as solidRender } from 'solid-js/web';\n\nimport { createApplyDecorators } from './shared/apply-decorators';\nimport { beforeAll } from './shared/before-all';\nimport { createDefaultRender } from './shared/default-render';\nimport { createMount } from './shared/mount';\nimport { createRenderToCanvas } from './shared/render-to-canvas';\nimport { createStoryState } from './shared/story-store';\n\nimport type { SolidComponent } from '../preview/public-api';\nimport type { SolidRendererRuntime } from './shared/render-to-canvas';\n\nif (global.window) {\n global.window.STORYBOOK_ENV = 'solid';\n}\n\nconst createStore = <T extends object>(initial: T) => {\n const [state, setStore] = solidCreateStore<T>(initial);\n\n const setState = (update: (prev: T) => T) => {\n setStore(reconcile(update(state)));\n };\n\n return [state, setState] as const;\n};\n\nconst storyStore = createStoryState(createStore);\n\nconst runtime: SolidRendererRuntime = {\n storyStore,\n createComponent,\n render: solidRender,\n};\n\nconst applyDecorators = createApplyDecorators({ storyStore });\nconst mount = createMount(runtime);\nconst render = createDefaultRender(runtime.createComponent);\nconst renderToCanvas = createRenderToCanvas({\n ...runtime,\n createStoryApp: ({ Story, storyContext, showMain, showException, storyId }) => {\n const App: SolidComponent = () => {\n onMount(() => {\n showMain();\n storyStore.setRendered(storyId, true);\n });\n\n onCleanup(() => {\n storyStore.setRendered(storyId, false);\n });\n\n\n if (storyContext?.parameters?.['__isPortableStory']) {\n return createComponent(() => Story(), {});\n }\n\n return createComponent(ErrorBoundary, {\n fallback: (err: Error) => {\n showException(err);\n\n return err as any;\n },\n children: createComponent(() => Story(), {}),\n });\n };\n\n return App;\n },\n});\n\n/** Preview-wide parameters for the Solid renderer. */\nconst parameters = {\n renderer: 'solid',\n};\n\nexport {\n applyDecorators,\n beforeAll,\n mount,\n parameters,\n render,\n renderToCanvas,\n};\n"]}
@@ -1,16 +1,16 @@
1
- import { entry_preview_argtypes_exports } from './chunk-GZ3XWUGK.js';
2
- import { entry_preview_exports } from './chunk-H7QHQTFU.js';
1
+ import { argtypes_exports } from './chunk-OHDHM5OZ.js';
2
+ import { docs_exports } from './chunk-UQOUKQDU.js';
3
3
  import { definePreview } from 'storybook/internal/csf';
4
4
 
5
- function createDefinePreview(solidAnnotations) {
6
- return function definePreview$1(input) {
5
+ function createSolidDefinePreview(solidAnnotations) {
6
+ return ((input) => {
7
7
  const { addons, ...projectAnnotations } = input;
8
8
  const preview = definePreview({
9
9
  ...projectAnnotations,
10
10
  addons: [
11
11
  solidAnnotations,
12
- entry_preview_argtypes_exports,
13
- entry_preview_exports,
12
+ argtypes_exports,
13
+ docs_exports,
14
14
  ...addons ?? []
15
15
  ]
16
16
  });
@@ -26,9 +26,9 @@ function createDefinePreview(solidAnnotations) {
26
26
  return meta;
27
27
  };
28
28
  return preview;
29
- };
29
+ });
30
30
  }
31
31
 
32
- export { createDefinePreview };
33
- //# sourceMappingURL=chunk-QRPXDQGQ.js.map
34
- //# sourceMappingURL=chunk-QRPXDQGQ.js.map
32
+ export { createSolidDefinePreview };
33
+ //# sourceMappingURL=chunk-KZXNQC4Q.js.map
34
+ //# sourceMappingURL=chunk-KZXNQC4Q.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/preview/define-preview.ts"],"names":["definePreviewBase"],"mappings":";;;;AAkGO,SAAS,yBAAyB,gBAAA,EAAuC;AAC5E,EAAA,QAAQ,CACJ,KAAA,KACC;AACD,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,kBAAA,EAAmB,GAAI,KAAA;AAE1C,IAAA,MAAM,UAAUA,aAAA,CAAkB;AAAA,MAC9B,GAAG,kBAAA;AAAA,MACH,MAAA,EAAQ;AAAA,QACJ,gBAAA;AAAA,QACA,gBAAA;AAAA,QACA,YAAA;AAAA,QACA,GAAI,UAAU;AAAC;AACnB,KACH,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA;AAE5C,IAAA,OAAA,CAAQ,IAAA,GAAO,CAAC,MAAA,KAAW;AACvB,MAAA,MAAM,IAAA,GAAO,WAAW,MAAM,CAAA;AAC9B,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAExC,MAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,OAAA,KAAiB;AAC3B,QAAA,MAAM,KAAA,GAAQ,YAAY,OAAO,CAAA;AAGjC,QAAA,KAAA,CAAM,SAAA,GAAY,MAAM,SAAA,EAAU;AAElC,QAAA,OAAO,KAAA;AAAA,MACX,CAAA;AAEA,MAAA,OAAO,IAAA;AAAA,IACX,CAAA;AAEA,IAAA,OAAO,OAAA;AAAA,EACX,CAAA;AAKJ","file":"chunk-KZXNQC4Q.js","sourcesContent":["import { definePreview as definePreviewBase } from 'storybook/internal/csf';\n\nimport * as solidArgTypesAnnotations from '../renderer/argtypes';\nimport * as solidDocsAnnotations from '../renderer/docs';\n\nimport type { AddonTypes, InferTypes, Meta, Preview, PreviewAddon, Story } from 'storybook/internal/csf';\nimport type {\n Args,\n ArgsStoryFn,\n ComponentAnnotations,\n DecoratorFunction,\n ProjectAnnotations,\n Renderer,\n StoryAnnotations,\n} from 'storybook/internal/types';\nimport type { OmitIndexSignature, SetOptional, Simplify, UnionToIntersection } from 'type-fest';\nimport type { AddMocks, EmptyMetaArgs, SolidComponent, SolidTypes } from './public-api';\n\n/** Extracts and unions all args types from an array of decorators. */\ntype DecoratorsArgs<TRenderer extends Renderer, Decorators> = UnionToIntersection<\n Decorators extends DecoratorFunction<TRenderer, infer TArgs> ? TArgs : unknown\n>;\n\ntype InferArgs<TArgs, T, Decorators> = Simplify<\n TArgs & Simplify<OmitIndexSignature<DecoratorsArgs<SolidTypes & T, Decorators>>>\n>;\n\ntype InferSolidTypes<T, TArgs, Decorators> = SolidTypes & T & {\n args: Simplify<InferArgs<TArgs, T, Decorators>>;\n};\n\nexport type DefinePreviewInput<Addons extends PreviewAddon<never>[] = []> = {\n addons?: Addons;\n} & ProjectAnnotations<SolidTypes & InferTypes<Addons>>;\n\n/** @ts-expect-error We cannot implement the meta faithfully here, but that is okay. */\nexport interface SolidPreview<T extends AddonTypes> extends Preview<SolidTypes & T> {\n type: <R>() => SolidPreview<T & R>;\n\n meta: <\n TArgs extends Args,\n Decorators extends DecoratorFunction<SolidTypes & T, any>,\n TMetaArgs extends Partial<TArgs & T['args']>\n >(\n meta: {\n render?: ArgsStoryFn<SolidTypes & T, TArgs & T['args']>;\n component?: SolidComponent<TArgs>;\n decorators?: Decorators | Decorators[];\n args?: TMetaArgs;\n } & Omit<\n ComponentAnnotations<SolidTypes & T, TArgs>,\n 'decorators' | 'component' | 'args' | 'render'\n >\n ) => SolidMeta<\n InferSolidTypes<T, TArgs, Decorators>,\n Omit<ComponentAnnotations<InferSolidTypes<T, TArgs, Decorators>>, 'args'> & {\n args: Partial<TArgs> extends TMetaArgs ? EmptyMetaArgs : TMetaArgs;\n }\n >;\n}\n\nexport interface SolidMeta<T extends SolidTypes, MetaInput extends ComponentAnnotations<T>>\n /** @ts-expect-error SolidMeta requires two type parameters, but Meta's constraints differ */\n extends Meta<T, MetaInput> {\n story: (<\n TInput extends\n | (() => SolidTypes['storyResult'])\n | (StoryAnnotations<T, T['args']> & {\n render: () => SolidTypes['storyResult'];\n })\n >(\n story: TInput\n ) => SolidStory<T, TInput extends () => SolidTypes['storyResult'] ? { render: TInput } : TInput>) & (<\n TInput extends Simplify<\n StoryAnnotations<\n T,\n AddMocks<T['args'], MetaInput['args']>,\n SetOptional<T['args'], keyof T['args'] & keyof MetaInput['args']>\n >\n >\n >(\n story: TInput\n /** @ts-expect-error hard */\n ) => SolidStory<T, TInput>) & ((\n ..._args: Partial<T['args']> extends SetOptional<\n T['args'],\n keyof T['args'] & keyof MetaInput['args']\n >\n ? []\n : [never]\n ) => SolidStory<T, EmptyMetaArgs>);\n}\n\nexport interface SolidStory<T extends SolidTypes, TInput extends StoryAnnotations<T, T['args']>>\n extends Story<T, TInput> {\n Component: SolidComponent<Partial<T['args']>>;\n}\n\nexport function createSolidDefinePreview(solidAnnotations: PreviewAddon<never>) {\n return (<Addons extends PreviewAddon<never>[] = []>(\n input: DefinePreviewInput<Addons>\n ) => {\n const { addons, ...projectAnnotations } = input;\n\n const preview = definePreviewBase({\n ...projectAnnotations,\n addons: [\n solidAnnotations,\n solidArgTypesAnnotations,\n solidDocsAnnotations,\n ...(addons ?? []),\n ],\n });\n\n const defineMeta = preview.meta.bind(preview);\n\n preview.meta = (_input) => {\n const meta = defineMeta(_input);\n const defineStory = meta.story.bind(meta);\n\n meta.story = (__input: any) => {\n const story = defineStory(__input);\n\n // @ts-ignore this is a private property used only here\n story.Component = story.__compose();\n\n return story;\n };\n\n return meta;\n };\n\n return preview;\n }) as unknown as <\n Addons extends PreviewAddon<never>[] = []\n >(\n input: DefinePreviewInput<Addons>\n ) => SolidPreview<SolidTypes & InferTypes<Addons>>;\n}\n"]}
@@ -1,4 +1,14 @@
1
- // src/componentManifest/toDocgenInfo.ts
1
+ // src/internal/componentManifest/toDocgenInfo.ts
2
+ function serializeDocgenPropType(type) {
3
+ const docgenType = {
4
+ name: type.name,
5
+ raw: type.raw ?? type.name
6
+ };
7
+ if (type.value != null) {
8
+ docgenType.value = type.value;
9
+ }
10
+ return docgenType;
11
+ }
2
12
  function solidComponentDocToDocgenInfo(doc) {
3
13
  return {
4
14
  ...doc.displayName !== void 0 ? { displayName: doc.displayName } : {},
@@ -8,10 +18,7 @@ function solidComponentDocToDocgenInfo(doc) {
8
18
  const entry = {
9
19
  name: prop.name,
10
20
  required: prop.required,
11
- type: {
12
- name: prop.type.name,
13
- raw: prop.type.raw ?? prop.type.name
14
- },
21
+ type: serializeDocgenPropType(prop.type),
15
22
  defaultValue: prop.defaultValue ?? null
16
23
  };
17
24
  if (prop.description !== void 0) {
@@ -38,5 +45,5 @@ function solidComponentDocToArgTypesData(doc) {
38
45
  }
39
46
 
40
47
  export { solidComponentDocToArgTypesData, solidComponentDocToDocgenInfo };
41
- //# sourceMappingURL=chunk-FGHVLJAL.js.map
42
- //# sourceMappingURL=chunk-FGHVLJAL.js.map
48
+ //# sourceMappingURL=chunk-LKTA6WTO.js.map
49
+ //# sourceMappingURL=chunk-LKTA6WTO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/componentManifest/toDocgenInfo.ts"],"names":[],"mappings":";AAqBA,SAAS,wBAAwB,IAAA,EAAkD;AAC/E,EAAA,MAAM,UAAA,GAAkD;AAAA,IACpD,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,GAAA,EAAK,IAAA,CAAK,GAAA,IAAO,IAAA,CAAK;AAAA,GAC1B;AAEA,EAAA,IAAI,IAAA,CAAK,SAAS,IAAA,EAAM;AACpB,IAAA,UAAA,CAAW,QAAQ,IAAA,CAAK,KAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,UAAA;AACX;AAEO,SAAS,8BAA8B,GAAA,EAAoC;AAC9E,EAAA,OAAO;AAAA,IACH,GAAI,IAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,EAAa,GAAA,CAAI,WAAA,EAAY,GAAI,EAAC;AAAA,IACxE,GAAI,IAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,EAAa,GAAA,CAAI,WAAA,EAAY,GAAI,EAAC;AAAA,IACxE,OAAO,MAAA,CAAO,WAAA;AAAA,MACV,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,IAAA,EAAM,IAAI,CAAA,KAAM;AAC5C,QAAA,MAAM,KAAA,GAAqC;AAAA,UACvC,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,IAAA,EAAM,uBAAA,CAAwB,IAAA,CAAK,IAAI,CAAA;AAAA,UACvC,YAAA,EAAc,KAAK,YAAA,IAAgB;AAAA,SACvC;AAEA,QAAA,IAAI,IAAA,CAAK,gBAAgB,MAAA,EAAW;AAChC,UAAA,KAAA,CAAM,cAAc,IAAA,CAAK,WAAA;AAAA,QAC7B;AAEA,QAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAAA,MACvB,CAAC;AAAA;AACL,GACJ;AACJ;AAEO,SAAS,gCAAgC,GAAA,EAAiD;AAC7F,EAAA,MAAM,UAAA,GAAa,8BAA8B,GAAG,CAAA;AAEpD,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACV,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,IAAA,EAAM,IAAI,CAAA,KAAM;AAAA,MACnD,IAAA;AAAA,MACA;AAAA,QACI,IAAA;AAAA,QACA,IAAA,EAAM,KAAK,IAAA,CAAK,IAAA;AAAA,QAChB,QAAA,EAAU,KAAK,QAAA,IAAY,KAAA;AAAA,QAC3B,aAAa,IAAA,CAAK;AAAA;AACtB,KACH;AAAA,GACL;AACJ","file":"chunk-LKTA6WTO.js","sourcesContent":["import type { SolidComponentDoc } from './types';\n\n/** Maps Solid component-meta (RCM) output to the `__docgenInfo` shape consumed by `storybook/internal/docs-tools`. */\nexport type DocgenInfo = {\n displayName?: string;\n description?: string;\n props: Record<string, {\n name: string;\n description?: string;\n required?: boolean;\n type: {\n name: string;\n raw?: string;\n value?: unknown;\n computed?: boolean;\n };\n defaultValue?: { value: string } | null;\n parent?: { name: string; fileName: string };\n }>;\n};\n\nfunction serializeDocgenPropType(type: SolidComponentDoc['props'][string]['type']) {\n const docgenType: DocgenInfo['props'][string]['type'] = {\n name: type.name,\n raw: type.raw ?? type.name,\n };\n\n if (type.value != null) {\n docgenType.value = type.value;\n }\n\n return docgenType;\n}\n\nexport function solidComponentDocToDocgenInfo(doc: SolidComponentDoc): DocgenInfo {\n return {\n ...(doc.displayName !== undefined ? { displayName: doc.displayName } : {}),\n ...(doc.description !== undefined ? { description: doc.description } : {}),\n props: Object.fromEntries(\n Object.entries(doc.props).map(([name, prop]) => {\n const entry: DocgenInfo['props'][string] = {\n name: prop.name,\n required: prop.required,\n type: serializeDocgenPropType(prop.type),\n defaultValue: prop.defaultValue ?? null,\n };\n\n if (prop.description !== undefined) {\n entry.description = prop.description;\n }\n\n return [name, entry];\n })\n ),\n };\n}\n\nexport function solidComponentDocToArgTypesData(doc: SolidComponentDoc): Record<string, unknown> {\n const docgenInfo = solidComponentDocToDocgenInfo(doc);\n\n return Object.fromEntries(\n Object.entries(docgenInfo.props).map(([name, prop]) => [\n name,\n {\n name,\n type: prop.type.name,\n required: prop.required ?? false,\n description: prop.description,\n },\n ])\n );\n}\n"]}
@@ -0,0 +1,8 @@
1
+ // src/framework/public-api.ts
2
+ function defineMain(config) {
3
+ return config;
4
+ }
5
+
6
+ export { defineMain };
7
+ //# sourceMappingURL=chunk-NOGINBE3.js.map
8
+ //# sourceMappingURL=chunk-NOGINBE3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/framework/public-api.ts"],"names":[],"mappings":";AAEO,SAAS,WAAW,MAAA,EAAyB;AAChD,EAAA,OAAO,MAAA;AACX","file":"chunk-NOGINBE3.js","sourcesContent":["import type { StorybookConfig } from './types';\n\nexport function defineMain(config: StorybookConfig) {\n return config;\n}\n\nexport type * from './types';\n"]}