storybook-solidjs-vite 10.3.0 → 10.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +7 -2
  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-FRWD6B5X.js +13 -0
  6. package/dist/chunk-FRWD6B5X.js.map +1 -0
  7. package/dist/{chunk-FGHVLJAL.js → chunk-LKTA6WTO.js} +14 -7
  8. package/dist/chunk-LKTA6WTO.js.map +1 -0
  9. package/dist/chunk-NK66FCKE.js +8 -0
  10. package/dist/chunk-NK66FCKE.js.map +1 -0
  11. package/dist/{chunk-GZ3XWUGK.js → chunk-OHDHM5OZ.js} +20 -16
  12. package/dist/chunk-OHDHM5OZ.js.map +1 -0
  13. package/dist/{chunk-D5AOR3VU.js → chunk-SWPHHVAM.js} +76 -26
  14. package/dist/chunk-SWPHHVAM.js.map +1 -0
  15. package/dist/{chunk-6566KBHG.js → chunk-TKOWB3JL.js} +6 -6
  16. package/dist/chunk-TKOWB3JL.js.map +1 -0
  17. package/dist/{chunk-H7QHQTFU.js → chunk-UQOUKQDU.js} +6 -6
  18. package/dist/chunk-UQOUKQDU.js.map +1 -0
  19. package/dist/{chunk-NNSMHFZY.js → chunk-XA62EQZW.js} +7 -15
  20. package/dist/chunk-XA62EQZW.js.map +1 -0
  21. package/dist/framework/preset.d.ts +3 -110
  22. package/dist/framework/preset.js +38 -923
  23. package/dist/framework/preset.js.map +1 -1
  24. package/dist/index.d.ts +8 -11
  25. package/dist/index.js +35 -18
  26. package/dist/index.js.map +1 -1
  27. package/dist/{types-3qJHo3rN.d.ts → node.d.ts} +3 -4
  28. package/dist/node.js +4 -0
  29. package/dist/{renderer/playwright.js → playwright.js} +1 -1
  30. package/dist/{public-types-BZgbgZlw.d.ts → public-api-DVMx11qI.d.ts} +6 -1
  31. package/dist/{entry-preview → renderer}/argtypes.d.ts +1 -1
  32. package/dist/renderer/argtypes.js +4 -0
  33. package/dist/{entry-preview → renderer}/docs.d.ts +1 -1
  34. package/dist/{entry-preview → renderer}/docs.js +1 -1
  35. package/dist/renderer/solid-next.d.ts +15 -0
  36. package/dist/renderer/solid-next.js +63 -0
  37. package/dist/renderer/solid-next.js.map +1 -0
  38. package/dist/renderer/solid.d.ts +15 -0
  39. package/dist/renderer/solid.js +61 -0
  40. package/dist/renderer/solid.js.map +1 -0
  41. package/dist/renderer.d.ts +109 -2
  42. package/dist/renderer.js +928 -6
  43. package/dist/renderer.js.map +1 -1
  44. package/dist/toDocgenInfo-LDHSOTP4.js +4 -0
  45. package/dist/{toDocgenInfo-PQOQHVB2.js.map → toDocgenInfo-LDHSOTP4.js.map} +1 -1
  46. package/package.json +30 -30
  47. package/src/framework/preset.ts +50 -15
  48. package/src/framework/{types.ts → public-api.ts} +9 -5
  49. package/src/index.ts +9 -4
  50. package/src/internal/componentManifest/toDocgenInfo.test.ts +39 -0
  51. package/src/{componentManifest → internal/componentManifest}/toDocgenInfo.ts +20 -5
  52. package/src/{framework → internal}/solidVersion.ts +10 -17
  53. package/src/node.ts +2 -0
  54. package/src/{renderer/v1 → preview}/define-preview.ts +56 -4
  55. package/src/{renderer/shared/public-types.ts → preview/public-api.ts} +26 -2
  56. package/src/renderer/{docs/entry-preview-argtypes.ts → argtypes.ts} +18 -13
  57. package/src/renderer/{docs/entry-preview.ts → docs.ts} +1 -1
  58. package/src/renderer/index.ts +17 -15
  59. package/src/renderer/shared/apply-decorators.ts +10 -16
  60. package/src/renderer/shared/{preview-annotations.ts → before-all.ts} +0 -25
  61. package/src/renderer/shared/default-render.ts +16 -0
  62. package/src/renderer/shared/mount.ts +37 -0
  63. package/src/renderer/shared/render-to-canvas.ts +72 -0
  64. package/src/renderer/shared/story-store.ts +1 -1
  65. package/src/renderer/solid-next.ts +95 -0
  66. package/src/renderer/solid.ts +91 -0
  67. package/src/typings.d.ts +1 -1
  68. package/dist/chunk-6566KBHG.js.map +0 -1
  69. package/dist/chunk-7IQZHF5A.js +0 -87
  70. package/dist/chunk-7IQZHF5A.js.map +0 -1
  71. package/dist/chunk-D5AOR3VU.js.map +0 -1
  72. package/dist/chunk-FGHVLJAL.js.map +0 -1
  73. package/dist/chunk-GF3JOYAC.js +0 -89
  74. package/dist/chunk-GF3JOYAC.js.map +0 -1
  75. package/dist/chunk-GZ3XWUGK.js.map +0 -1
  76. package/dist/chunk-H7QHQTFU.js.map +0 -1
  77. package/dist/chunk-NNSMHFZY.js.map +0 -1
  78. package/dist/chunk-QRPXDQGQ.js +0 -34
  79. package/dist/chunk-QRPXDQGQ.js.map +0 -1
  80. package/dist/chunk-T3EBLI6L.js +0 -8
  81. package/dist/chunk-T3EBLI6L.js.map +0 -1
  82. package/dist/entry-preview/argtypes.js +0 -4
  83. package/dist/entry-preview/solid-1.d.ts +0 -14
  84. package/dist/entry-preview/solid-1.js +0 -5
  85. package/dist/entry-preview/solid-1.js.map +0 -1
  86. package/dist/entry-preview/solid-2.d.ts +0 -14
  87. package/dist/entry-preview/solid-2.js +0 -5
  88. package/dist/entry-preview/solid-2.js.map +0 -1
  89. package/dist/framework/node.d.ts +0 -7
  90. package/dist/framework/node.js +0 -4
  91. package/dist/next.d.ts +0 -53
  92. package/dist/next.js +0 -24
  93. package/dist/next.js.map +0 -1
  94. package/dist/preview-annotations-CYD5LX4X.d.ts +0 -13
  95. package/dist/toDocgenInfo-PQOQHVB2.js +0 -4
  96. package/src/framework/node.ts +0 -5
  97. package/src/next.ts +0 -15
  98. package/src/renderer/shared/create-define-preview.ts +0 -45
  99. package/src/renderer/v1/entry-preview.ts +0 -115
  100. package/src/renderer/v1/index.ts +0 -5
  101. package/src/renderer/v1/public-api.ts +0 -29
  102. package/src/renderer/v2/define-preview.ts +0 -101
  103. package/src/renderer/v2/entry-preview.ts +0 -116
  104. package/src/renderer/v2/index.ts +0 -5
  105. package/src/renderer/v2/public-api.ts +0 -29
  106. /package/dist/{framework/node.js.map → node.js.map} +0 -0
  107. /package/dist/{renderer/playwright.d.ts → playwright.d.ts} +0 -0
  108. /package/dist/{renderer/playwright.js.map → playwright.js.map} +0 -0
  109. /package/dist/{entry-preview → renderer}/argtypes.js.map +0 -0
  110. /package/dist/{entry-preview → renderer}/docs.js.map +0 -0
  111. /package/src/{codeExamples → internal/codeExamples}/enrichCsf.ts +0 -0
  112. /package/src/{codeExamples → internal/codeExamples}/generateCodeSnippet.test.ts +0 -0
  113. /package/src/{codeExamples → internal/codeExamples}/generateCodeSnippet.ts +0 -0
  114. /package/src/{codeExamples → internal/codeExamples}/invariant.ts +0 -0
  115. /package/src/{componentManifest → internal/componentManifest}/getComponents.ts +0 -0
  116. /package/src/{componentManifest → internal/componentManifest}/manifests.ts +0 -0
  117. /package/src/{componentManifest → internal/componentManifest}/solidComponentMeta/SolidComponentMetaManager.ts +0 -0
  118. /package/src/{componentManifest → internal/componentManifest}/solidComponentMeta/SolidComponentMetaProject.ts +0 -0
  119. /package/src/{componentManifest → internal/componentManifest}/solidComponentMeta/resolveProps.ts +0 -0
  120. /package/src/{componentManifest → internal/componentManifest}/solidComponentMetaPlugin.ts +0 -0
  121. /package/src/{componentManifest → internal/componentManifest}/types.ts +0 -0
  122. /package/src/{renderer/playwright.ts → playwright.ts} +0 -0
package/README.md CHANGED
@@ -82,7 +82,7 @@ framework: 'storybook-solidjs-vite/next' // Solid 2 only
82
82
 
83
83
  ```ts
84
84
  // .storybook/main.ts
85
- import { defineMain } from 'storybook-solidjs-vite/node';
85
+ import { defineMain } from 'storybook-solidjs-vite';
86
86
 
87
87
  export default defineMain({
88
88
  framework: { name: 'storybook-solidjs-vite' },
@@ -91,9 +91,14 @@ export default defineMain({
91
91
 
92
92
  ```ts
93
93
  // .storybook/preview.tsx
94
+ import addonDocs from '@storybook/addon-docs';
94
95
  import { definePreview } from 'storybook-solidjs-vite';
95
96
  // for Solid 2, use:
96
- import { definePreview } from 'storybook-solidjs-vite/next';
97
+ // import { definePreview } from 'storybook-solidjs-vite/next';
98
+
99
+ export default definePreview({
100
+ addons: [addonDocs()],
101
+ });
97
102
  ```
98
103
 
99
104
  ```ts
@@ -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 };
@@ -0,0 +1,13 @@
1
+ // src/preview/public-api.ts
2
+ var IS_SOLID_JSX_FLAG = "__isJSX";
3
+ var createDecorator = (decorator) => {
4
+ return decorator;
5
+ };
6
+ var createJSXDecorator = (decorator) => {
7
+ decorator[IS_SOLID_JSX_FLAG] = true;
8
+ return decorator;
9
+ };
10
+
11
+ export { IS_SOLID_JSX_FLAG, createDecorator, createJSXDecorator };
12
+ //# sourceMappingURL=chunk-FRWD6B5X.js.map
13
+ //# sourceMappingURL=chunk-FRWD6B5X.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/preview/public-api.ts"],"names":[],"mappings":";AAuBO,IAAM,iBAAA,GAAoB;AA0F1B,IAAM,eAAA,GAAkB,CAC3B,SAAA,KACY;AACZ,EAAA,OAAO,SAAA;AACX;AAGO,IAAM,kBAAA,GAAqB,CAC9B,SAAA,KACY;AACZ,EAAC,SAAA,CAAwB,iBAAiB,CAAA,GAAI,IAAA;AAE9C,EAAA,OAAO,SAAA;AACX","file":"chunk-FRWD6B5X.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\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\nexport type {\n DefinePreviewInput,\n SolidDefinePreview,\n SolidMeta,\n SolidPreview,\n SolidStory,\n} from './define-preview';\n\nexport type { Args, ArgTypes, Parameters, StrictArgs } from 'storybook/internal/types';\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"]}
@@ -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-NK66FCKE.js.map
8
+ //# sourceMappingURL=chunk-NK66FCKE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/framework/public-api.ts"],"names":[],"mappings":";AAgDO,SAAS,WAAW,MAAA,EAAyB;AAChD,EAAA,OAAO,MAAA;AACX","file":"chunk-NK66FCKE.js","sourcesContent":["import type { BuilderOptions, StorybookConfigVite } from '@storybook/builder-vite';\nimport type {\n CompatibleString,\n StorybookConfig as StorybookConfigBase,\n} from 'storybook/internal/types';\n\ntype FrameworkName = CompatibleString<'storybook-solidjs-vite' | 'storybook-solidjs-vite/next'>;\ntype BuilderName = CompatibleString<'@storybook/builder-vite'>;\n\nexport type FrameworkOptions = {\n builder?: BuilderOptions;\n /** Set to `false` to disable Solid component-meta docgen (Controls, Docs, manifest). */\n docgen?: false;\n};\n\ntype FrameworkConfig\n = | FrameworkName\n | {\n name: FrameworkName;\n options?: FrameworkOptions;\n };\n\ntype StorybookConfigFramework = {\n framework: FrameworkConfig;\n core?: StorybookConfigBase['core'] & {\n builder?:\n | BuilderName\n | {\n name: BuilderName;\n options: BuilderOptions;\n };\n };\n features?: StorybookConfigBase['features'] & {\n /**\n * Enable the experimental `.test` function in CSF Next\n *\n * @see https://storybook.js.org/docs/10/api/main-config/main-config-features#experimentalTestSyntax\n */\n experimentalTestSyntax?: boolean;\n };\n};\n\n/** The interface for Storybook configuration in `main.ts` files. */\nexport type StorybookConfig = Omit<\n StorybookConfigBase,\n keyof StorybookConfigVite | keyof StorybookConfigFramework\n> & StorybookConfigVite & StorybookConfigFramework;\n\nexport function defineMain(config: StorybookConfig) {\n return config;\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import { __export } from './chunk-PZ5AY32C.js';
2
2
  import { extractComponentDescription, enhanceArgTypes, hasDocgen, extractComponentProps } from 'storybook/internal/docs-tools';
3
3
 
4
- // src/renderer/docs/entry-preview-argtypes.ts
5
- var entry_preview_argtypes_exports = {};
6
- __export(entry_preview_argtypes_exports, {
4
+ // src/renderer/argtypes.ts
5
+ var argtypes_exports = {};
6
+ __export(argtypes_exports, {
7
7
  argTypesEnhancers: () => argTypesEnhancers,
8
8
  parameters: () => parameters
9
9
  });
@@ -39,18 +39,22 @@ var extractArgTypes = (component) => {
39
39
  if (!component) {
40
40
  return null;
41
41
  }
42
- let processedComponent = component;
43
- if (!hasDocgen(component) && component.type != null) {
44
- processedComponent = component.type;
45
- }
46
- const extractedProps = extractComponentProps(processedComponent, "props");
47
- if (!extractedProps.length) {
42
+ try {
43
+ let processedComponent = component;
44
+ if (!hasDocgen(component) && component.type != null) {
45
+ processedComponent = component.type;
46
+ }
47
+ const extractedProps = extractComponentProps(processedComponent, "props");
48
+ if (!Array.isArray(extractedProps) || extractedProps.length === 0) {
49
+ return null;
50
+ }
51
+ return extractedProps.reduce((acc, { propDef }) => {
52
+ acc[propDef.name] = propDefToInputType(propDef);
53
+ return acc;
54
+ }, {});
55
+ } catch {
48
56
  return null;
49
57
  }
50
- return extractedProps.reduce((acc, { propDef }) => {
51
- acc[propDef.name] = propDefToInputType(propDef);
52
- return acc;
53
- }, {});
54
58
  };
55
59
  var parameters = {
56
60
  docs: {
@@ -60,6 +64,6 @@ var parameters = {
60
64
  };
61
65
  var argTypesEnhancers = [enhanceArgTypes];
62
66
 
63
- export { argTypesEnhancers, entry_preview_argtypes_exports, parameters };
64
- //# sourceMappingURL=chunk-GZ3XWUGK.js.map
65
- //# sourceMappingURL=chunk-GZ3XWUGK.js.map
67
+ export { argTypesEnhancers, argtypes_exports, parameters };
68
+ //# sourceMappingURL=chunk-OHDHM5OZ.js.map
69
+ //# sourceMappingURL=chunk-OHDHM5OZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/renderer/argtypes.ts"],"names":[],"mappings":";;;;AAAA,IAAA,gBAAA,GAAA;AAAA,QAAA,CAAA,gBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,UAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAaA,SAAS,mBAAmB,GAAA,EAA+B;AACvD,EAAA,MAAM;AAAA,IACF,IAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACJ,GAAI,GAAA;AAEJ,EAAA,MAAM,MAAA,GAA0B;AAAA,IAC5B,IAAA;AAAA,IACA,IAAA,EAAM,EAAE,QAAA,EAAU,GAAG,MAAA,EAAO;AAAA,IAC5B,KAAA,EAAO;AAAA,MACH;AAAA;AACJ,GACJ;AAEA,EAAA,IAAI,eAAe,IAAA,EAAM;AACrB,IAAA,MAAA,CAAO,WAAA,GAAc,WAAA;AAAA,EACzB;AAEA,EAAA,IAAI,QAAQ,IAAA,EAAM;AACd,IAAA,MAAA,CAAO,MAAO,IAAA,GAAO,IAAA;AAAA,EACzB;AAEA,EAAA,IAAI,gBAAgB,IAAA,EAAM;AACtB,IAAA,MAAA,CAAO,MAAO,YAAA,GAAe,YAAA;AAAA,EACjC;AAEA,EAAA,OAAO,MAAA;AACX;AAGA,IAAM,eAAA,GAAqC,CAAC,SAAA,KAAqC;AAC7E,EAAA,IAAI,CAAC,SAAA,EAAW;AACZ,IAAA,OAAO,IAAA;AAAA,EACX;AAEA,EAAA,IAAI;AACA,IAAA,IAAI,kBAAA,GAAgC,SAAA;AAEpC,IAAA,IAAI,CAAC,SAAA,CAAU,SAAS,CAAA,IAAK,SAAA,CAAU,QAAQ,IAAA,EAAM;AACjD,MAAA,kBAAA,GAAqB,SAAA,CAAU,IAAA;AAAA,IACnC;AAEA,IAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,kBAAA,EAAoB,OAAO,CAAA;AAExE,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,IAAK,cAAA,CAAe,WAAW,CAAA,EAAG;AAC/D,MAAA,OAAO,IAAA;AAAA,IACX;AAEA,IAAA,OAAO,eAAe,MAAA,CAAO,CAAC,GAAA,EAAqB,EAAE,SAAQ,KAAM;AAC/D,MAAA,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA,GAAI,kBAAA,CAAmB,OAAO,CAAA;AAE9C,MAAA,OAAO,GAAA;AAAA,IACX,CAAA,EAAG,EAAE,CAAA;AAAA,EACT,CAAA,CAAA,MACM;AACF,IAAA,OAAO,IAAA;AAAA,EACX;AACJ,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACtB,IAAA,EAAM;AAAA,IACF,eAAA;AAAA,IACA;AAAA;AAER;AAEO,IAAM,iBAAA,GAAuD,CAAC,eAAe","file":"chunk-OHDHM5OZ.js","sourcesContent":["import {\n enhanceArgTypes,\n extractComponentDescription,\n extractComponentProps,\n hasDocgen,\n type ArgTypesExtractor,\n type Component,\n type PropDef,\n} from 'storybook/internal/docs-tools';\n\nimport type { ArgTypesEnhancer, StrictArgTypes, StrictInputType } from 'storybook/internal/types';\nimport type { SolidRenderer } from '../preview/public-api';\n\nfunction propDefToInputType(row: PropDef): StrictInputType {\n const {\n name,\n description,\n type,\n sbType,\n defaultValue,\n jsDocTags,\n required,\n } = row;\n\n const result: StrictInputType = {\n name,\n type: { required, ...sbType },\n table: {\n jsDocTags,\n },\n };\n\n if (description != null) {\n result.description = description;\n }\n\n if (type != null) {\n result.table!.type = type;\n }\n\n if (defaultValue != null) {\n result.table!.defaultValue = defaultValue;\n }\n\n return result;\n}\n\n/** Reads `__docgenInfo` injected at build time by solid-component-meta. */\nconst extractArgTypes: ArgTypesExtractor = (component): StrictArgTypes | null => {\n if (!component) {\n return null;\n }\n\n try {\n let processedComponent: Component = component;\n\n if (!hasDocgen(component) && component.type != null) {\n processedComponent = component.type;\n }\n\n const extractedProps = extractComponentProps(processedComponent, 'props');\n\n if (!Array.isArray(extractedProps) || extractedProps.length === 0) {\n return null;\n }\n\n return extractedProps.reduce((acc: StrictArgTypes, { propDef }) => {\n acc[propDef.name] = propDefToInputType(propDef);\n\n return acc;\n }, {});\n }\n catch {\n return null;\n }\n};\n\nexport const parameters = {\n docs: {\n extractArgTypes,\n extractComponentDescription,\n },\n};\n\nexport const argTypesEnhancers: ArgTypesEnhancer<SolidRenderer>[] = [enhanceArgTypes];\n"]}
@@ -1,11 +1,7 @@
1
+ import { IS_SOLID_JSX_FLAG } from './chunk-FRWD6B5X.js';
1
2
  import { defaultDecorateStory } from 'storybook/preview-api';
2
- import { global } from '@storybook/global';
3
- import { createComponent } from 'solid-js';
4
3
  import { configure } from 'storybook/test';
5
4
 
6
- // src/renderer/shared/public-types.ts
7
- var IS_SOLID_JSX_FLAG = "__isJSX";
8
-
9
5
  // src/renderer/shared/story-store.ts
10
6
  var getStoryId = (context) => {
11
7
  const canvasId = context.canvasElement?.id;
@@ -67,7 +63,9 @@ function createStoryState(createStore) {
67
63
  }
68
64
  };
69
65
  }
70
- function createApplyDecorators(store, createComponent2) {
66
+ function createApplyDecorators({
67
+ storyStore
68
+ }) {
71
69
  return (storyFn, rawDecorators) => {
72
70
  const decorators = rawDecorators.map(
73
71
  (decorator) => {
@@ -78,7 +76,7 @@ function createApplyDecorators(store, createComponent2) {
78
76
  return (StoryFn, context) => {
79
77
  if (isJSX) {
80
78
  const storyId = getStoryId(context);
81
- if (storyId && store.isStoryRendered(storyId)) {
79
+ if (storyId && storyStore.isStoryRendered(storyId)) {
82
80
  return StoryFn(context);
83
81
  }
84
82
  }
@@ -88,27 +86,13 @@ function createApplyDecorators(store, createComponent2) {
88
86
  );
89
87
  return defaultDecorateStory((context) => {
90
88
  const storyId = getStoryId(context);
91
- if (storyId && store.isStoryRendered(storyId)) {
89
+ if (storyId && storyStore.isStoryRendered(storyId)) {
92
90
  return null;
93
91
  }
94
- return createComponent2(storyFn, context);
92
+ return storyFn(context);
95
93
  }, decorators);
96
94
  };
97
95
  }
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
96
  var beforeAll = async () => {
113
97
  try {
114
98
  configure({
@@ -129,6 +113,72 @@ var beforeAll = async () => {
129
113
  }
130
114
  };
131
115
 
132
- export { IS_SOLID_JSX_FLAG, beforeAll, createApplyDecorators, createStoryState, getStoryId, parameters, render };
133
- //# sourceMappingURL=chunk-D5AOR3VU.js.map
134
- //# sourceMappingURL=chunk-D5AOR3VU.js.map
116
+ // src/renderer/shared/default-render.ts
117
+ function createDefaultRender(createComponent) {
118
+ return (_, context) => {
119
+ if (!context.component) {
120
+ throw new Error(
121
+ `Unable to render story ${context.id} as the component annotation is missing from the default export`
122
+ );
123
+ }
124
+ return createComponent(context.component, context.args);
125
+ };
126
+ }
127
+
128
+ // src/renderer/shared/mount.ts
129
+ function createMount({ storyStore }) {
130
+ return (context) => {
131
+ const storyId = getStoryId(context);
132
+ const { forceRemount } = context;
133
+ if (!storyId) {
134
+ throw new Error("Story ID is required");
135
+ }
136
+ return async (ui) => {
137
+ if (ui != null) {
138
+ context.originalStoryFn = () => ui;
139
+ }
140
+ if (forceRemount) {
141
+ storyStore.disposeStory(storyId);
142
+ }
143
+ if (!storyStore.isStoryRendered(storyId) || forceRemount) {
144
+ storyStore.resetStory(storyId);
145
+ }
146
+ storyStore.makeContextReactive(context);
147
+ await context.renderToCanvas();
148
+ return context.canvas;
149
+ };
150
+ };
151
+ }
152
+
153
+ // src/renderer/shared/render-to-canvas.ts
154
+ function createRenderToCanvas(options) {
155
+ const { storyStore, createComponent, render, createStoryApp } = options;
156
+ return async (renderContext, canvasElement) => {
157
+ const storyId = getStoryId({ ...renderContext, canvasElement });
158
+ if (!storyId) {
159
+ throw new Error("Story ID is required");
160
+ }
161
+ const { storyContext, storyFn: StoryFn, showMain, showException } = renderContext;
162
+ if (!storyStore.isStoryRendered(storyId)) {
163
+ const App = createStoryApp({
164
+ Story: StoryFn,
165
+ storyContext,
166
+ showMain,
167
+ showException,
168
+ storyId
169
+ });
170
+ const disposeFn = render(() => createComponent(App, {}), canvasElement);
171
+ storyStore.setDisposeFn(storyId, disposeFn);
172
+ } else {
173
+ StoryFn();
174
+ }
175
+ return () => {
176
+ storyStore.disposeStory(storyId);
177
+ storyStore.resetStory(storyId);
178
+ };
179
+ };
180
+ }
181
+
182
+ export { beforeAll, createApplyDecorators, createDefaultRender, createMount, createRenderToCanvas, createStoryState };
183
+ //# sourceMappingURL=chunk-SWPHHVAM.js.map
184
+ //# sourceMappingURL=chunk-SWPHHVAM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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-SWPHHVAM.js","sourcesContent":["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"]}
@@ -5,9 +5,9 @@ import ts from 'typescript';
5
5
  import { createLanguage, FileMap } from '@volar/language-core';
6
6
  import { resolveFileLanguageId, createLanguageServiceHost } from '@volar/typescript';
7
7
 
8
- // src/componentManifest/solidComponentMeta/SolidComponentMetaManager.ts
8
+ // src/internal/componentManifest/solidComponentMeta/SolidComponentMetaManager.ts
9
9
 
10
- // src/componentManifest/solidComponentMeta/resolveProps.ts
10
+ // src/internal/componentManifest/solidComponentMeta/resolveProps.ts
11
11
  function resolvePropsFromComponentType(typescript, checker, componentType) {
12
12
  const callSigs = componentType.getCallSignatures();
13
13
  if (callSigs.length > 0) {
@@ -314,7 +314,7 @@ function serializeComponentDoc(typescript, checker, {
314
314
  };
315
315
  }
316
316
 
317
- // src/componentManifest/solidComponentMeta/SolidComponentMetaProject.ts
317
+ // src/internal/componentManifest/solidComponentMeta/SolidComponentMetaProject.ts
318
318
  function arrayItemsEqual(a, b) {
319
319
  if (a.length !== b.length) {
320
320
  return false;
@@ -617,7 +617,7 @@ var SolidComponentMetaProject = class {
617
617
  }
618
618
  };
619
619
 
620
- // src/componentManifest/solidComponentMeta/SolidComponentMetaManager.ts
620
+ // src/internal/componentManifest/solidComponentMeta/SolidComponentMetaManager.ts
621
621
  var ROOT_TS_CONFIG_NAMES = ["tsconfig.json", "jsconfig.json"];
622
622
  var DEFAULT_INFERRED_OPTIONS = {
623
623
  strict: true,
@@ -812,5 +812,5 @@ var DOCGEN_ENGINE = "solid-component-meta";
812
812
  var MANIFEST_DOCGEN_ENGINE = "react-component-meta";
813
813
 
814
814
  export { DOCGEN_ENGINE, MANIFEST_DOCGEN_ENGINE, SolidComponentMetaManager, getOrCreateSolidComponentMetaManager };
815
- //# sourceMappingURL=chunk-6566KBHG.js.map
816
- //# sourceMappingURL=chunk-6566KBHG.js.map
815
+ //# sourceMappingURL=chunk-TKOWB3JL.js.map
816
+ //# sourceMappingURL=chunk-TKOWB3JL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/componentManifest/solidComponentMeta/resolveProps.ts","../src/internal/componentManifest/solidComponentMeta/SolidComponentMetaProject.ts","../src/internal/componentManifest/solidComponentMeta/SolidComponentMetaManager.ts"],"names":["description","path","ts"],"mappings":"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","file":"chunk-TKOWB3JL.js","sourcesContent":["import type ts from 'typescript';\nimport type { ComponentRef, ResolvedComponent, SerializedProp, SolidComponentDoc } from '../types';\n\nconst MAX_UNWRAP_DEPTH = 5;\n\nexport function resolvePropsFromComponentType(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n componentType: ts.Type\n): ts.Type | undefined {\n const callSigs = componentType.getCallSignatures();\n\n if (callSigs.length > 0) {\n const sig = callSigs[0];\n\n if (sig) {\n if (sig.parameters.length === 0) {\n return checker.getVoidType();\n }\n\n const propsParam = sig.parameters[0];\n\n if (propsParam) {\n const propsType = checker.getTypeOfSymbol(propsParam);\n\n if (!(propsType.flags & typescript.TypeFlags.Any)) {\n return propsType;\n }\n }\n }\n }\n\n for (const sig of componentType.getConstructSignatures()) {\n const propsSym = sig.getReturnType().getProperty('props');\n\n if (propsSym) {\n const propsType = checker.getTypeOfSymbol(propsSym);\n\n if (!(propsType.flags & typescript.TypeFlags.Any)) {\n return propsType;\n }\n }\n }\n\n return undefined;\n}\n\nfunction resolveAliasedSymbol(typescript: typeof ts, checker: ts.TypeChecker, symbol: ts.Symbol) {\n return symbol.flags & typescript.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;\n}\n\nfunction extractPropsFromJsx(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n node: ts.JsxSelfClosingElement | ts.JsxOpeningElement\n) {\n const sig = checker.getResolvedSignature(node);\n\n if (!sig) {\n return undefined;\n }\n\n const params = sig.getParameters();\n\n if (params.length === 0) {\n return checker.getTypeFromTypeNode(typescript.factory.createTypeLiteralNode([]));\n }\n\n const propsParam = params[0];\n\n if (!propsParam) {\n return checker.getTypeFromTypeNode(typescript.factory.createTypeLiteralNode([]));\n }\n\n return checker.getTypeOfSymbolAtLocation(propsParam, node);\n}\n\nexport function resolvePropsFromStoryFile(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n storySourceFile: ts.SourceFile,\n componentRef: ComponentRef\n): ResolvedComponent | undefined {\n const importSpecifier = componentRef.importId;\n const importName = componentRef.importName;\n const memberAccess = componentRef.member;\n\n if (!importSpecifier || !importName) {\n return undefined;\n }\n\n let importSymbol: ts.Symbol | undefined;\n\n for (const stmt of storySourceFile.statements) {\n if (!typescript.isImportDeclaration(stmt)) {\n continue;\n }\n\n const moduleSpec = stmt.moduleSpecifier;\n\n if (!typescript.isStringLiteral(moduleSpec) || moduleSpec.text !== importSpecifier) {\n continue;\n }\n\n const clause = stmt.importClause;\n\n if (!clause) {\n continue;\n }\n\n if (importName === 'default') {\n if (clause.name) {\n importSymbol = checker.getSymbolAtLocation(clause.name);\n }\n else if (clause.namedBindings && typescript.isNamedImports(clause.namedBindings)) {\n for (const spec of clause.namedBindings.elements) {\n if ((spec.propertyName ?? spec.name).text === 'default') {\n importSymbol = checker.getSymbolAtLocation(spec.name);\n break;\n }\n }\n }\n }\n else if (clause.namedBindings && typescript.isNamedImports(clause.namedBindings)) {\n for (const spec of clause.namedBindings.elements) {\n if ((spec.propertyName ?? spec.name).text === importName) {\n importSymbol = checker.getSymbolAtLocation(spec.name);\n break;\n }\n }\n }\n\n if (!importSymbol && memberAccess && clause.namedBindings && typescript.isNamespaceImport(clause.namedBindings)) {\n importSymbol = checker.getSymbolAtLocation(clause.namedBindings.name);\n }\n\n if (importSymbol) {\n break;\n }\n }\n\n if (!importSymbol) {\n return undefined;\n }\n\n let result: ResolvedComponent | undefined;\n\n function visit(node: ts.Node) {\n if (result) {\n return;\n }\n\n if (typescript.isJsxSelfClosingElement(node) || typescript.isJsxOpeningElement(node)) {\n const tagName = node.tagName;\n\n if (memberAccess) {\n if (typescript.isPropertyAccessExpression(tagName) && tagName.name.text === memberAccess) {\n const leftSym = checker.getSymbolAtLocation(tagName.expression);\n\n if (leftSym && importSymbol && leftSym === importSymbol) {\n const propsType = extractPropsFromJsx(typescript, checker, node);\n\n if (propsType) {\n const memberSymbol = checker.getSymbolAtLocation(tagName.name)\n ?? checker.getTypeAtLocation(tagName.expression).getProperty(tagName.name.text);\n\n result = {\n componentRef,\n propsType,\n symbol: memberSymbol ?? resolveAliasedSymbol(typescript, checker, importSymbol),\n };\n\n return;\n }\n }\n }\n }\n else if (typescript.isIdentifier(tagName)) {\n const sym = checker.getSymbolAtLocation(tagName);\n\n if (sym && importSymbol && sym === importSymbol) {\n const propsType = extractPropsFromJsx(typescript, checker, node);\n\n if (propsType) {\n result = {\n componentRef,\n propsType,\n symbol: resolveAliasedSymbol(typescript, checker, sym),\n };\n\n return;\n }\n }\n }\n }\n\n typescript.forEachChild(node, visit);\n }\n\n visit(storySourceFile);\n\n return result;\n}\n\nexport function resolveFromMetaComponent(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n storySourceFile: ts.SourceFile,\n componentRef: ComponentRef\n): ResolvedComponent | undefined {\n const { member: memberAccess } = componentRef;\n const moduleSymbol = checker.getSymbolAtLocation(storySourceFile);\n\n if (!moduleSymbol) {\n return undefined;\n }\n\n const defaultExport = checker.getExportsOfModule(moduleSymbol).find(e => e.getName() === 'default');\n\n if (!defaultExport) {\n return undefined;\n }\n\n const componentProp = checker.getTypeOfSymbol(defaultExport).getProperty('component');\n\n if (!componentProp) {\n return undefined;\n }\n\n let componentType = checker.getTypeOfSymbol(componentProp);\n let selectedSymbol: ts.Symbol | undefined;\n\n if (componentProp.valueDeclaration && typescript.isPropertyAssignment(componentProp.valueDeclaration)) {\n selectedSymbol = checker.getSymbolAtLocation(componentProp.valueDeclaration.initializer) ?? undefined;\n }\n else {\n selectedSymbol = componentType.getSymbol?.();\n }\n\n if (memberAccess) {\n const prop = componentType.getProperty(memberAccess);\n\n if (prop) {\n componentType = checker.getTypeOfSymbol(prop);\n selectedSymbol = prop;\n }\n else {\n return undefined;\n }\n }\n\n const propsType = resolvePropsFromComponentType(typescript, checker, componentType);\n\n if (!propsType || !selectedSymbol) {\n return undefined;\n }\n\n return {\n componentRef,\n propsType,\n symbol: selectedSymbol,\n };\n}\n\n/** Path 3: resolve props directly from the component source file export (CSF4 args-only). */\nexport function resolveFromComponentFile(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n componentSourceFile: ts.SourceFile,\n exportName: string,\n componentRef: ComponentRef\n): ResolvedComponent | undefined {\n const moduleSymbol = checker.getSymbolAtLocation(componentSourceFile);\n\n if (!moduleSymbol) {\n return undefined;\n }\n\n const exportSymbol = exportName === 'default'\n ? checker.getExportsOfModule(moduleSymbol).find(e => e.getName() === 'default')\n : checker.getExportsOfModule(moduleSymbol).find(e => e.getName() === exportName);\n\n if (!exportSymbol?.valueDeclaration) {\n return undefined;\n }\n\n const componentType = checker.getTypeOfSymbolAtLocation(exportSymbol, exportSymbol.valueDeclaration);\n const propsType = resolvePropsFromComponentType(typescript, checker, componentType);\n\n if (!propsType) {\n return undefined;\n }\n\n return {\n componentRef,\n propsType,\n symbol: resolveAliasedSymbol(typescript, checker, exportSymbol),\n };\n}\n\nexport function isSolidComponentType(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n type: ts.Type,\n depth = 0\n): boolean {\n if (depth > MAX_UNWRAP_DEPTH) {\n return false;\n }\n\n const callSigs = type.getCallSignatures();\n\n if (callSigs.length > 0) {\n return true;\n }\n\n const typeString = checker.typeToString(type);\n\n if (/Component<|VoidComponent<|ParentComponent<|FlowComponent</.test(typeString)) {\n return true;\n }\n\n const symbol = type.getSymbol();\n\n if (symbol) {\n const declarations = symbol.getDeclarations();\n\n if (declarations?.some(\n decl => typescript.isFunctionDeclaration(decl)\n || typescript.isArrowFunction(decl)\n || typescript.isFunctionExpression(decl)\n )) {\n return true;\n }\n }\n\n return false;\n}\n\nconst MAX_SERIALIZATION_DEPTH = 5;\n\nfunction isLiteralType(type: ts.Type) {\n return type.isStringLiteral() || type.isNumberLiteral();\n}\n\nfunction serializeType(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n type: ts.Type,\n isRequired: boolean,\n depth = 0\n): SerializedProp['type'] {\n if (depth > MAX_SERIALIZATION_DEPTH) {\n return { name: checker.typeToString(type) };\n }\n\n if (type.isUnion()) {\n const nonUndefinedTypes = type.types.filter(\n t => !(t.getFlags() & typescript.TypeFlags.Undefined)\n );\n const literalMembers = nonUndefinedTypes.filter(isLiteralType);\n\n if (literalMembers.length > 0 && literalMembers.length === nonUndefinedTypes.length) {\n return {\n name: 'enum',\n raw: literalMembers.map(m => checker.typeToString(m)).join(' | '),\n value: literalMembers.map(m => ({\n value: JSON.stringify(m.value),\n })),\n };\n }\n\n if (!isRequired && nonUndefinedTypes.length === 1 && nonUndefinedTypes.length < type.types.length) {\n const soleType = nonUndefinedTypes[0];\n\n if (soleType) {\n return { name: checker.typeToString(soleType) };\n }\n }\n }\n\n const constraint = type.getConstraint?.();\n\n if (constraint && constraint !== type) {\n return serializeType(typescript, checker, constraint, isRequired, depth + 1);\n }\n\n return { name: checker.typeToString(type), raw: checker.typeToString(type) };\n}\n\nfunction getBulkSourceExclusions(properties: ts.Symbol[]): Set<string> {\n const excluded = new Set<string>();\n const sourceCounts = new Map<string, number>();\n\n for (const prop of properties) {\n const declarations = prop.getDeclarations();\n\n if (!declarations?.length) {\n continue;\n }\n\n const firstDeclaration = declarations[0];\n\n if (!firstDeclaration) {\n continue;\n }\n\n const fileName = firstDeclaration.getSourceFile().fileName;\n\n if (fileName.endsWith('.d.ts') || fileName.includes('node_modules')) {\n sourceCounts.set(fileName, (sourceCounts.get(fileName) ?? 0) + 1);\n }\n }\n\n for (const [fileName, count] of sourceCounts) {\n if (count > 30) {\n for (const prop of properties) {\n const declarations = prop.getDeclarations();\n\n if (declarations?.[0]?.getSourceFile().fileName === fileName) {\n excluded.add(prop.getName());\n }\n }\n }\n }\n\n return excluded;\n}\n\nexport function serializeComponentDoc(\n typescript: typeof ts,\n checker: ts.TypeChecker,\n {\n sourceFile,\n resolvedComponent,\n }: {\n sourceFile: ts.SourceFile;\n resolvedComponent: ResolvedComponent;\n }\n): SolidComponentDoc | undefined {\n const { componentRef, propsType, symbol } = resolvedComponent;\n const exportName = componentRef.importName;\n\n if (!exportName) {\n return undefined;\n }\n\n const resolved = resolveAliasedSymbol(typescript, checker, symbol);\n const contextNode = resolved.valueDeclaration ?? resolved.getDeclarations()?.[0];\n\n if (!contextNode) {\n return undefined;\n }\n\n const allProperties = propsType.getApparentProperties();\n const excluded = getBulkSourceExclusions(allProperties);\n const props: Record<string, SerializedProp> = {};\n\n for (const prop of allProperties) {\n if (excluded.has(prop.getName())) {\n continue;\n }\n\n const propType = checker.getTypeOfSymbolAtLocation(prop, contextNode);\n const isOptional = !!(prop.flags & typescript.SymbolFlags.Optional)\n || !!(propType.flags & typescript.TypeFlags.Undefined);\n const description = typescript.displayPartsToString(prop.getDocumentationComment(checker));\n\n props[prop.getName()] = {\n name: prop.getName(),\n ...(description ? { description } : {}),\n required: !isOptional,\n type: serializeType(typescript, checker, propType, !isOptional),\n };\n }\n\n const moduleSymbol = checker.getSymbolAtLocation(sourceFile);\n const exportSymbol = moduleSymbol\n ? checker.getExportsOfModule(moduleSymbol).find(candidate => candidate.getName() === exportName)\n : undefined;\n\n const displayName = componentRef.member\n ? componentRef.componentName\n : (exportSymbol?.getName() ?? componentRef.componentName);\n const description = typescript.displayPartsToString(resolved.getDocumentationComment(checker));\n\n return {\n displayName,\n exportName,\n filePath: componentRef.path ?? sourceFile.fileName,\n ...(description ? { description } : {}),\n props,\n };\n}\n","import { createLanguage, FileMap, type SourceScript } from '@volar/language-core';\nimport { createLanguageServiceHost, resolveFileLanguageId } from '@volar/typescript';\nimport * as path from 'node:path';\n\nimport {\n resolveFromComponentFile,\n resolveFromMetaComponent,\n resolvePropsFromStoryFile,\n serializeComponentDoc\n} from './resolveProps';\n\nimport type ts from 'typescript';\nimport type { ComponentRef, SolidComponentDoc, StoryExtractionEntry } from '../types';\n\nfunction arrayItemsEqual(a: string[], b: string[]) {\n if (a.length !== b.length) {\n return false;\n }\n\n const set = new Set(a);\n\n for (const file of b) {\n if (!set.has(file)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport class SolidComponentMetaProject {\n private readonly ls: ts.LanguageService;\n private projectVersion = 0;\n private shouldCheckRootFiles = false;\n private entries: StoryExtractionEntry[] = [];\n private warmupTimer: ReturnType<typeof setTimeout> | undefined;\n\n constructor(\n private readonly typescript: typeof ts,\n private commandLine: ts.ParsedCommandLine,\n private readonly configFileName: string | undefined,\n private readonly fsFileSnapshots: Map<string, [number | undefined, ts.IScriptSnapshot | undefined]>,\n private readonly getCommandLineFn?: () => ts.ParsedCommandLine\n ) {\n const language = createLanguage(\n [{ getLanguageId: fileName => resolveFileLanguageId(fileName) }],\n new FileMap(typescript.sys.useCaseSensitiveFileNames) as Map<string, SourceScript<string>>,\n (fileName, includeFsFiles) => {\n if (!includeFsFiles) {\n return;\n }\n\n const cache = fsFileSnapshots.get(fileName);\n const modifiedTime = typescript.sys.getModifiedTime?.(fileName)?.valueOf();\n let snapshot: ts.IScriptSnapshot | undefined;\n\n if (!cache || cache[0] !== modifiedTime) {\n if (typescript.sys.fileExists(fileName)) {\n const text = typescript.sys.readFile(fileName);\n\n snapshot = text !== undefined ? typescript.ScriptSnapshot.fromString(text) : undefined;\n }\n else {\n snapshot = undefined;\n }\n\n fsFileSnapshots.set(fileName, [modifiedTime, snapshot]);\n }\n else {\n snapshot = cache[1];\n }\n\n if (snapshot) {\n language.scripts.set(fileName, snapshot);\n }\n else {\n language.scripts.delete(fileName);\n }\n }\n );\n\n const projectHost = {\n getCurrentDirectory: () => (\n this.configFileName\n ? path.dirname(this.configFileName)\n : commandLine.options.rootDir ?? process.cwd()\n ),\n getCompilationSettings: () => this.commandLine.options,\n getProjectReferences: () => this.commandLine.projectReferences,\n getProjectVersion: () => {\n this.checkRootFilesUpdate();\n\n return this.projectVersion.toString();\n },\n getScriptFileNames: () => {\n this.checkRootFilesUpdate();\n\n return this.commandLine.fileNames;\n },\n };\n\n const { languageServiceHost } = createLanguageServiceHost(\n typescript,\n typescript.sys,\n language,\n s => s,\n projectHost\n );\n\n this.ls = typescript.createLanguageService(languageServiceHost);\n }\n\n dispose() {\n clearTimeout(this.warmupTimer);\n this.ls.dispose();\n }\n\n ensureFiles(fileNames: string[]) {\n let added = false;\n\n for (const fileName of fileNames) {\n if (!this.commandLine.fileNames.includes(fileName)) {\n this.commandLine.fileNames.push(fileName);\n added = true;\n }\n }\n\n if (added) {\n this.projectVersion++;\n }\n }\n\n checkRootFilesUpdate() {\n if (!this.shouldCheckRootFiles || !this.getCommandLineFn) {\n return;\n }\n\n this.shouldCheckRootFiles = false;\n\n const newCommandLine = this.getCommandLineFn();\n\n if (!arrayItemsEqual(newCommandLine.fileNames, this.commandLine.fileNames)) {\n this.commandLine.fileNames = newCommandLine.fileNames;\n this.projectVersion++;\n }\n }\n\n ensureFresh(fileNames: string[]) {\n let stale = false;\n\n for (const fileName of fileNames) {\n const cache = this.fsFileSnapshots.get(fileName);\n\n if (!cache) {\n continue;\n }\n\n const currentMtime = this.typescript.sys.getModifiedTime?.(fileName)?.valueOf();\n\n if (cache[0] !== currentMtime) {\n this.fsFileSnapshots.delete(fileName);\n stale = true;\n }\n }\n\n if (stale) {\n this.projectVersion++;\n }\n }\n\n onFilesChanged(changes: Array<{ filePath: string; type: 'changed' | 'created' | 'deleted' }>) {\n for (const { filePath } of changes) {\n this.fsFileSnapshots.delete(filePath);\n }\n\n const oldVersion = this.projectVersion;\n const program = this.ls.getProgram();\n\n for (const { filePath, type } of changes) {\n if (type === 'changed') {\n if (program?.getSourceFile(filePath)) {\n this.projectVersion++;\n }\n }\n else if (type === 'deleted') {\n if (program?.getSourceFile(filePath)) {\n this.projectVersion++;\n }\n\n this.shouldCheckRootFiles = true;\n break;\n }\n else if (type === 'created') {\n this.shouldCheckRootFiles = true;\n break;\n }\n }\n\n if (this.projectVersion !== oldVersion && this.entries.length > 0) {\n clearTimeout(this.warmupTimer);\n this.warmupTimer = setTimeout(() => {\n try {\n this.extractPropsFromStories(this.entries);\n }\n catch {\n // ignore warmup failures\n }\n }, 100);\n this.warmupTimer?.unref?.();\n }\n }\n\n extractPropsFromStories(entries: StoryExtractionEntry[]) {\n this.entries = entries;\n\n const allFiles = entries.flatMap(\n entry => entry.component.path\n ? [entry.storyPath, entry.component.path]\n : [entry.storyPath]\n );\n\n this.ensureFiles(allFiles);\n this.ensureFresh(allFiles);\n\n const program = this.ls.getProgram();\n\n if (!program) {\n return;\n }\n\n const checker = program.getTypeChecker();\n const serializationContextByComponentPath = new Map<string, {\n sourceFile: ts.SourceFile;\n }>();\n\n for (const entry of entries) {\n try {\n const storySourceFile = program.getSourceFile(entry.storyPath);\n const entryComponent = entry.component;\n const componentPath = entryComponent.path;\n const exportName = entryComponent.importName;\n\n if (!storySourceFile || !componentPath || !exportName) {\n continue;\n }\n\n const importId = entryComponent.importId;\n const isPackageImport = importId && !importId.startsWith('.');\n let componentSourceFile: ts.SourceFile | undefined;\n\n if (isPackageImport && importId) {\n const resolved = this.typescript.resolveModuleName(\n importId,\n entry.storyPath,\n this.commandLine.options,\n this.typescript.sys\n );\n\n componentSourceFile = resolved.resolvedModule\n ? program.getSourceFile(resolved.resolvedModule.resolvedFileName)\n : program.getSourceFile(componentPath);\n }\n else {\n componentSourceFile = program.getSourceFile(componentPath);\n }\n\n if (!componentSourceFile) {\n continue;\n }\n\n let resolvedComponent = importId\n ? resolvePropsFromStoryFile(\n this.typescript,\n checker,\n storySourceFile,\n entryComponent\n )\n : undefined;\n\n resolvedComponent ??= resolveFromMetaComponent(\n this.typescript,\n checker,\n storySourceFile,\n entryComponent\n );\n\n resolvedComponent ??= resolveFromComponentFile(\n this.typescript,\n checker,\n componentSourceFile,\n exportName,\n entryComponent\n );\n\n if (!resolvedComponent) {\n continue;\n }\n\n let serializationContext = serializationContextByComponentPath.get(componentPath);\n\n if (!serializationContext) {\n serializationContext = { sourceFile: componentSourceFile };\n serializationContextByComponentPath.set(componentPath, serializationContext);\n }\n\n const doc = serializeComponentDoc(this.typescript, checker, {\n sourceFile: serializationContext.sourceFile,\n resolvedComponent,\n });\n\n if (doc) {\n entryComponent.reactComponentMeta = doc;\n\n if (doc.jsDocTags) {\n entryComponent.componentJsDocTags = doc.jsDocTags;\n\n const importOverride = doc.jsDocTags['import']?.[0]?.trim();\n\n if (importOverride) {\n entryComponent.importOverride = importOverride;\n }\n }\n }\n }\n catch {\n continue;\n }\n }\n }\n\n extractFromComponentFile(componentPath: string, exportName: string): SolidComponentDoc | undefined {\n this.ensureFiles([componentPath]);\n this.ensureFresh([componentPath]);\n\n const program = this.ls.getProgram();\n\n if (!program) {\n return undefined;\n }\n\n const checker = program.getTypeChecker();\n const sourceFile = program.getSourceFile(componentPath);\n\n if (!sourceFile) {\n return undefined;\n }\n\n const componentRef: ComponentRef = {\n componentName: exportName,\n importName: exportName,\n path: componentPath,\n };\n\n const resolved = resolveFromComponentFile(\n this.typescript,\n checker,\n sourceFile,\n exportName,\n componentRef\n );\n\n if (!resolved) {\n return undefined;\n }\n\n return serializeComponentDoc(this.typescript, checker, {\n sourceFile,\n resolvedComponent: resolved,\n });\n }\n\n extractAllExportsFromFile(componentPath: string): SolidComponentDoc[] {\n this.ensureFiles([componentPath]);\n this.ensureFresh([componentPath]);\n\n const program = this.ls.getProgram();\n\n if (!program) {\n return [];\n }\n\n const checker = program.getTypeChecker();\n const sourceFile = program.getSourceFile(componentPath);\n\n if (!sourceFile) {\n return [];\n }\n\n const moduleSymbol = checker.getSymbolAtLocation(sourceFile);\n\n if (!moduleSymbol) {\n return [];\n }\n\n const docs: SolidComponentDoc[] = [];\n\n for (const exportSymbol of checker.getExportsOfModule(moduleSymbol)) {\n const name = exportSymbol.getName();\n\n if (name === 'default' || /^[A-Z]/.test(name)) {\n const doc = this.extractFromComponentFile(componentPath, name);\n\n if (doc && Object.keys(doc.props).length > 0) {\n docs.push(doc);\n }\n }\n }\n\n return docs;\n }\n\n getSourceFilePaths() {\n const program = this.ls.getProgram();\n\n return program\n ? program.getSourceFiles()\n .map(sf => sf.fileName.replace(/\\\\/g, '/'))\n .filter(f => !f.includes('node_modules'))\n : [];\n }\n}\n","import { watch } from 'node:fs';\nimport * as path from 'node:path';\nimport { logger } from 'storybook/internal/node-logger';\nimport ts from 'typescript';\n\nimport { SolidComponentMetaProject } from './SolidComponentMetaProject';\n\nimport type { SolidComponentDoc, StoryExtractionEntry } from '../types';\n\nconst ROOT_TS_CONFIG_NAMES = ['tsconfig.json', 'jsconfig.json'];\nconst DEFAULT_INFERRED_OPTIONS: ts.CompilerOptions = {\n strict: true,\n esModuleInterop: true,\n allowJs: true,\n skipLibCheck: true,\n jsx: ts.JsxEmit.Preserve,\n};\n\nexport class SolidComponentMetaManager {\n private readonly configProjects = new Map<string, SolidComponentMetaProject>();\n private readonly fsFileSnapshots = new Map<string, [number | undefined, ts.IScriptSnapshot | undefined]>();\n private inferredProject: SolidComponentMetaProject | undefined;\n private watching = false;\n private readonly watchersByDir = new Map<string, ReturnType<typeof watch>>();\n\n constructor(private readonly typescript: typeof ts) {}\n\n dispose() {\n for (const watcher of this.watchersByDir.values()) {\n watcher.close();\n }\n\n this.watchersByDir.clear();\n\n for (const project of this.configProjects.values()) {\n project.dispose();\n }\n\n this.configProjects.clear();\n this.inferredProject?.dispose();\n this.inferredProject = undefined;\n }\n\n getProjectForFile(fileName: string) {\n const tsconfig = this.findNearestTsConfig(fileName);\n\n if (tsconfig) {\n return this.getOrCreateConfiguredProject(tsconfig) ?? this.getOrCreateInferredProject(fileName);\n }\n\n return this.getOrCreateInferredProject(fileName);\n }\n\n batchExtract(entries: StoryExtractionEntry[]) {\n const extractable = entries.filter(\n entry => entry.component.path && entry.component.importName\n );\n\n const byProject = new Map<SolidComponentMetaProject, StoryExtractionEntry[]>();\n\n for (const entry of extractable) {\n const project = this.getProjectForFile(entry.storyPath);\n const bucket = byProject.get(project) ?? [];\n\n bucket.push(entry);\n byProject.set(project, bucket);\n }\n\n for (const [project, projectEntries] of byProject) {\n try {\n project.extractPropsFromStories(projectEntries);\n }\n catch(error) {\n logger.debug(`[solidComponentMeta] Batch extraction failed: ${ String(error) }`);\n }\n }\n }\n\n extractFromComponentFile(componentPath: string, exportName: string): SolidComponentDoc | undefined {\n return this.getProjectForFile(componentPath).extractFromComponentFile(\n path.resolve(componentPath),\n exportName\n );\n }\n\n extractAllExportsFromFile(componentPath: string): SolidComponentDoc[] {\n return this.getProjectForFile(componentPath).extractAllExportsFromFile(\n path.resolve(componentPath)\n );\n }\n\n startWatching() {\n if (this.watching) {\n return;\n }\n\n this.watching = true;\n\n const watchedDirs = new Set<string>();\n\n for (const project of [...this.configProjects.values(), this.inferredProject].filter(Boolean)) {\n for (const filePath of project!.getSourceFilePaths()) {\n watchedDirs.add(path.dirname(filePath));\n }\n }\n\n for (const dir of watchedDirs) {\n this.watchDirectory(dir);\n }\n }\n\n private watchDirectory(dir: string) {\n const normalized = path.normalize(dir);\n\n if (this.watchersByDir.has(normalized)) {\n return;\n }\n\n try {\n const watcher = watch(normalized, { recursive: true }, (_event, filename) => {\n if (!filename) {\n return;\n }\n\n const filePath = path.join(normalized, filename.toString());\n const project = this.getProjectForFile(filePath);\n\n project.onFilesChanged([{ filePath, type: 'changed' }]);\n });\n\n this.watchersByDir.set(normalized, watcher);\n }\n catch(error) {\n logger.debug(`[solidComponentMeta] Failed to watch directory ${ normalized }: ${ String(error) }`);\n }\n }\n\n private findNearestTsConfig(filePath: string) {\n let dir = path.dirname(path.resolve(filePath));\n\n while (true) {\n for (const name of ROOT_TS_CONFIG_NAMES) {\n const candidate = path.join(dir, name);\n\n if (this.typescript.sys.fileExists(candidate)) {\n return candidate.replace(/\\\\/g, '/');\n }\n }\n\n const parent = path.dirname(dir);\n\n if (parent === dir) {\n return null;\n }\n\n dir = parent;\n }\n }\n\n private getOrCreateConfiguredProject(tsconfigPath: string) {\n const existing = this.configProjects.get(tsconfigPath);\n\n if (existing) {\n return existing;\n }\n\n try {\n const config = this.typescript.readConfigFile(tsconfigPath, this.typescript.sys.readFile);\n\n if (config.error) {\n return undefined;\n }\n\n const commandLine = this.typescript.parseJsonConfigFileContent(\n config.config,\n this.typescript.sys,\n path.dirname(tsconfigPath),\n {},\n tsconfigPath\n );\n\n const project = new SolidComponentMetaProject(\n this.typescript,\n commandLine,\n tsconfigPath,\n this.fsFileSnapshots,\n () => {\n const refreshed = this.typescript.readConfigFile(tsconfigPath, this.typescript.sys.readFile);\n\n return this.typescript.parseJsonConfigFileContent(\n refreshed.config,\n this.typescript.sys,\n path.dirname(tsconfigPath),\n {},\n tsconfigPath\n );\n }\n );\n\n this.configProjects.set(tsconfigPath, project);\n\n return project;\n }\n catch(error) {\n logger.debug(`[solidComponentMeta] Failed to parse tsconfig ${ tsconfigPath }: ${ String(error) }`);\n\n return undefined;\n }\n }\n\n private getOrCreateInferredProject(fileName: string) {\n if (this.inferredProject) {\n return this.inferredProject;\n }\n\n const commandLine = this.typescript.parseJsonConfigFileContent(\n DEFAULT_INFERRED_OPTIONS,\n this.typescript.sys,\n path.dirname(path.resolve(fileName))\n );\n\n this.inferredProject = new SolidComponentMetaProject(\n this.typescript,\n commandLine,\n undefined,\n this.fsFileSnapshots\n );\n\n return this.inferredProject;\n }\n}\n\nlet watchManager: SolidComponentMetaManager | undefined;\n\nexport async function getOrCreateSolidComponentMetaManager(\n watchMode = false\n): Promise<SolidComponentMetaManager | undefined> {\n if (watchMode && watchManager) {\n return watchManager;\n }\n\n try {\n const ts = await import('typescript');\n const instance = new SolidComponentMetaManager(ts);\n\n if (watchMode) {\n watchManager = instance;\n }\n\n return instance;\n }\n catch {\n return undefined;\n }\n}\n\nexport const DOCGEN_ENGINE = 'solid-component-meta' as const;\n\n/** Storybook core manifest UI expects `react-component-meta` as the engine id. */\nexport const MANIFEST_DOCGEN_ENGINE = 'react-component-meta' as const;\n"]}
@@ -1,9 +1,9 @@
1
1
  import { __export } from './chunk-PZ5AY32C.js';
2
2
  import { extractComponentDescription, enhanceArgTypes } from 'storybook/internal/docs-tools';
3
3
 
4
- // src/renderer/docs/entry-preview.ts
5
- var entry_preview_exports = {};
6
- __export(entry_preview_exports, {
4
+ // src/renderer/docs.ts
5
+ var docs_exports = {};
6
+ __export(docs_exports, {
7
7
  argTypesEnhancers: () => argTypesEnhancers,
8
8
  decorators: () => decorators,
9
9
  parameters: () => parameters
@@ -19,6 +19,6 @@ var argTypesEnhancers = [
19
19
  enhanceArgTypes
20
20
  ];
21
21
 
22
- export { argTypesEnhancers, decorators, entry_preview_exports, parameters };
23
- //# sourceMappingURL=chunk-H7QHQTFU.js.map
24
- //# sourceMappingURL=chunk-H7QHQTFU.js.map
22
+ export { argTypesEnhancers, decorators, docs_exports, parameters };
23
+ //# sourceMappingURL=chunk-UQOUKQDU.js.map
24
+ //# sourceMappingURL=chunk-UQOUKQDU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/renderer/docs.ts"],"names":[],"mappings":";;;;AAAA,IAAA,YAAA,GAAA;AAAA,QAAA,CAAA,YAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,UAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAUO,IAAM,UAAA,GAAa;AAAA,EACtB,IAAA,EAAM;AAAA,IACF,KAAA,EAAO,EAAE,MAAA,EAAQ,IAAA,EAAK;AAAA,IACtB;AAAA;AAER;AAEO,IAAM,aAA0B;AAEhC,IAAM,iBAAA,GAAuD;AAAA,EAChE;AACJ","file":"chunk-UQOUKQDU.js","sourcesContent":["/* Configuration for doc-mode renderer (`storybook dev --docs`). */\n\nimport {\n enhanceArgTypes,\n extractComponentDescription,\n} from 'storybook/internal/docs-tools';\n\nimport type { ArgTypesEnhancer } from 'storybook/internal/types';\nimport type { Decorator, SolidRenderer } from '../preview/public-api';\n\nexport const parameters = {\n docs: {\n story: { inline: true },\n extractComponentDescription,\n },\n};\n\nexport const decorators: Decorator[] = [];\n\nexport const argTypesEnhancers: ArgTypesEnhancer<SolidRenderer>[] = [\n enhanceArgTypes,\n];\n"]}