@storybook/server 7.0.0-alpha.6 → 7.0.0-alpha.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ import global from"global";import{dedent}from"ts-dedent";import{simulatePageLoad,simulateDOMContentLoaded}from"@storybook/preview-api";var{fetch,Node}=global,defaultFetchStoryHtml=async(url,path,params,storyContext)=>{let fetchUrl=new URL(`${url}/${path}`);return fetchUrl.search=new URLSearchParams({...storyContext.globals,...params}).toString(),(await fetch(fetchUrl)).text()},buildStoryArgs=(args,argTypes)=>{let storyArgs={...args};return Object.keys(argTypes).forEach(key=>{let argType=argTypes[key],{control}=argType,controlType=control&&control.type.toLowerCase(),argValue=storyArgs[key];switch(controlType){case"date":storyArgs[key]=new Date(argValue).toISOString();break;case"object":storyArgs[key]=JSON.stringify(argValue);break;default:}}),storyArgs},render=args=>{};async function renderToCanvas({id,title,name,showMain,showError,forceRemount,storyFn,storyContext,storyContext:{parameters,args,argTypes}},canvasElement){storyFn();let storyArgs=buildStoryArgs(args,argTypes),{server:{url,id:storyId,fetchStoryHtml=defaultFetchStoryHtml,params}}=parameters,fetchId=storyId||id,storyParams={...params,...storyArgs},element=await fetchStoryHtml(url,fetchId,storyParams,storyContext);if(showMain(),typeof element=="string")canvasElement.innerHTML=element,simulatePageLoad(canvasElement);else if(element instanceof Node){if(canvasElement.firstChild===element&&forceRemount===!1)return;canvasElement.innerHTML="",canvasElement.appendChild(element),simulateDOMContentLoaded()}else showError({title:`Expecting an HTML snippet or DOM node from the story: "${name}" of "${title}".`,description:dedent`
2
+ Did you forget to return the HTML snippet from the story?
3
+ Use "() => <your snippet or node>" or when defining the story.
4
+ `})}export{render,renderToCanvas};
@@ -0,0 +1,11 @@
1
+ import { RenderContext } from '@storybook/types';
2
+ import { a as StoryFn, S as ServerRenderer } from './public-types-3062cfcf.js';
3
+
4
+ declare const render: StoryFn<ServerRenderer>;
5
+ declare function renderToCanvas({ id, title, name, showMain, showError, forceRemount, storyFn, storyContext, storyContext: { parameters, args, argTypes }, }: RenderContext<ServerRenderer>, canvasElement: ServerRenderer['canvasElement']): Promise<void>;
6
+
7
+ declare const parameters: {
8
+ framework: "server";
9
+ };
10
+
11
+ export { parameters, render, renderToCanvas };
package/dist/config.js ADDED
@@ -0,0 +1,4 @@
1
+ var R=Object.create;var p=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var D=(e,r)=>{for(var t in r)p(e,t,{get:r[t],enumerable:!0})},f=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of v(r))!O.call(e,o)&&o!==t&&p(e,o,{get:()=>r[o],enumerable:!(s=M(r,o))||s.enumerable});return e};var U=(e,r,t)=>(t=e!=null?R(F(e)):{},f(r||!e||!e.__esModule?p(t,"default",{value:e,enumerable:!0}):t,e)),$=e=>f(p({},"__esModule",{value:!0}),e);var J={};D(J,{parameters:()=>N,render:()=>g,renderToCanvas:()=>h});module.exports=$(J);var m=U(require("global")),l=require("ts-dedent"),y=require("@storybook/preview-api"),{fetch:I,Node:P}=m.default,j=async(e,r,t,s)=>{let o=new URL(`${e}/${r}`);return o.search=new URLSearchParams({...s.globals,...t}).toString(),(await I(o)).text()},k=(e,r)=>{let t={...e};return Object.keys(r).forEach(s=>{let o=r[s],{control:n}=o,d=n&&n.type.toLowerCase(),c=t[s];switch(d){case"date":t[s]=new Date(c).toISOString();break;case"object":t[s]=JSON.stringify(c);break;default:}}),t},g=e=>{};async function h({id:e,title:r,name:t,showMain:s,showError:o,forceRemount:n,storyFn:d,storyContext:c,storyContext:{parameters:S,args:u,argTypes:T}},a){d();let b=k(u,T),{server:{url:w,id:x,fetchStoryHtml:C=j,params:L}}=S,A=x||e,H={...L,...b},i=await C(w,A,H,c);if(s(),typeof i=="string")a.innerHTML=i,(0,y.simulatePageLoad)(a);else if(i instanceof P){if(a.firstChild===i&&n===!1)return;a.innerHTML="",a.appendChild(i),(0,y.simulateDOMContentLoaded)()}else o({title:`Expecting an HTML snippet or DOM node from the story: "${t}" of "${r}".`,description:l.dedent`
2
+ Did you forget to return the HTML snippet from the story?
3
+ Use "() => <your snippet or node>" or when defining the story.
4
+ `})}var N={framework:"server"};0&&(module.exports={parameters,render,renderToCanvas});
@@ -0,0 +1 @@
1
+ import{render,renderToCanvas}from"./chunk-4Z76BHM4.mjs";var parameters={framework:"server"};export{parameters,render,renderToCanvas};
@@ -0,0 +1,17 @@
1
+ import * as _storybook_types from '@storybook/types';
2
+ import { Addon_ClientStoryApi, Addon_Loadable } from '@storybook/types';
3
+ export { ArgTypes, Args, Parameters, StrictArgs } from '@storybook/types';
4
+ import { S as ServerRenderer } from './public-types-3062cfcf.js';
5
+ export { D as Decorator, L as Loader, M as Meta, S as ServerRenderer, c as Story, d as StoryContext, a as StoryFn, b as StoryObj } from './public-types-3062cfcf.js';
6
+
7
+ interface ClientApi extends Addon_ClientStoryApi<ServerRenderer['storyResult']> {
8
+ configure(loader: Addon_Loadable, module: NodeModule): void;
9
+ forceReRender(): void;
10
+ raw: () => any;
11
+ }
12
+ declare const storiesOf: ClientApi['storiesOf'];
13
+ declare const configure: ClientApi['configure'];
14
+ declare const raw: ((...args: any[]) => never) | (() => _storybook_types.BoundStory<ServerRenderer>[]);
15
+ declare const forceReRender: () => void;
16
+
17
+ export { configure, forceReRender, raw, storiesOf };
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ var D=Object.create;var a=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var k=(e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})},y=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of P(r))!$.call(e,o)&&o!==t&&a(e,o,{get:()=>r[o],enumerable:!(n=N(r,o))||n.enumerable});return e};var m=(e,r,t)=>(t=e!=null?D(U(e)):{},y(r||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),E=e=>y(a({},"__esModule",{value:!0}),e);var z={};k(z,{configure:()=>J,forceReRender:()=>q,raw:()=>Y,storiesOf:()=>B});module.exports=E(z);var g=m(require("global")),{window:I}=g.default;I.STORYBOOK_ENV="SERVER";var h=require("@storybook/preview-api");var u=m(require("global")),S=require("ts-dedent"),c=require("@storybook/preview-api"),{fetch:V,Node:j}=u.default,K=async(e,r,t,n)=>{let o=new URL(`${e}/${r}`);return o.search=new URLSearchParams({...n.globals,...t}).toString(),(await V(o)).text()},W=(e,r)=>{let t={...e};return Object.keys(r).forEach(n=>{let o=r[n],{control:s}=o,l=s&&s.type.toLowerCase(),d=t[n];switch(l){case"date":t[n]=new Date(d).toISOString();break;case"object":t[n]=JSON.stringify(d);break;default:}}),t},R=e=>{};async function A({id:e,title:r,name:t,showMain:n,showError:o,forceRemount:s,storyFn:l,storyContext:d,storyContext:{parameters:w,args:x,argTypes:O}},i){l();let T=W(x,O),{server:{url:L,id:v,fetchStoryHtml:H=K,params:M}}=w,F=v||e,_={...M,...T},p=await H(L,F,_,d);if(n(),typeof p=="string")i.innerHTML=p,(0,c.simulatePageLoad)(i);else if(p instanceof j){if(i.firstChild===p&&s===!1)return;i.innerHTML="",i.appendChild(p),(0,c.simulateDOMContentLoaded)()}else o({title:`Expecting an HTML snippet or DOM node from the story: "${t}" of "${r}".`,description:S.dedent`
2
+ Did you forget to return the HTML snippet from the story?
3
+ Use "() => <your snippet or node>" or when defining the story.
4
+ `})}var C="server",f=(0,h.start)(A,{render:R}),B=(e,r)=>f.clientApi.storiesOf(e,r).addParameters({framework:C}),J=(...e)=>f.configure(C,...e),{raw:Y}=f.clientApi,{forceReRender:q}=f;var b;(b=module==null?void 0:module.hot)==null||b.decline();0&&(module.exports={configure,forceReRender,raw,storiesOf});
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{render,renderToCanvas}from"./chunk-4Z76BHM4.mjs";import global from"global";var{window:globalWindow}=global;globalWindow.STORYBOOK_ENV="SERVER";import{start}from"@storybook/preview-api";var FRAMEWORK="server",api=start(renderToCanvas,{render}),storiesOf=(kind,m)=>api.clientApi.storiesOf(kind,m).addParameters({framework:FRAMEWORK}),configure=(...args)=>api.configure(FRAMEWORK,...args),{raw}=api.clientApi,{forceReRender}=api;module?.hot?.decline();export{configure,forceReRender,raw,storiesOf};
@@ -0,0 +1,42 @@
1
+ import { WebRenderer, Args, ComponentAnnotations, AnnotatedStoryFn, StoryAnnotations, StrictArgs, DecoratorFunction, LoaderFunction, StoryContext as StoryContext$1 } from '@storybook/types';
2
+
3
+ type StoryFnServerReturnType = any;
4
+ interface ServerRenderer extends WebRenderer {
5
+ component: string;
6
+ storyResult: StoryFnServerReturnType;
7
+ }
8
+
9
+ /**
10
+ * Metadata to configure the stories for a component.
11
+ *
12
+ * @see [Default export](https://storybook.js.org/docs/formats/component-story-format/#default-export)
13
+ */
14
+ type Meta<TArgs = Args> = ComponentAnnotations<ServerRenderer, TArgs>;
15
+ /**
16
+ * Story function that represents a CSFv2 component example.
17
+ *
18
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
19
+ */
20
+ type StoryFn<TArgs = Args> = AnnotatedStoryFn<ServerRenderer, TArgs>;
21
+ /**
22
+ * Story function that represents a CSFv3 component example.
23
+ *
24
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
25
+ */
26
+ type StoryObj<TArgs = Args> = StoryAnnotations<ServerRenderer, TArgs>;
27
+ /**
28
+ * @deprecated Use `StoryFn` instead.
29
+ * Use `StoryObj` if you want to migrate to CSF3, which uses objects instead of functions to represent stories.
30
+ * You can read more about the CSF3 format here: https://storybook.js.org/blog/component-story-format-3-0/
31
+ *
32
+ * Story function that represents a CSFv2 component example.
33
+ *
34
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
35
+ */
36
+ type Story<TArgs = Args> = StoryFn<TArgs>;
37
+
38
+ type Decorator<TArgs = StrictArgs> = DecoratorFunction<ServerRenderer, TArgs>;
39
+ type Loader<TArgs = StrictArgs> = LoaderFunction<ServerRenderer, TArgs>;
40
+ type StoryContext<TArgs = StrictArgs> = StoryContext$1<ServerRenderer, TArgs>;
41
+
42
+ export { Decorator as D, Loader as L, Meta as M, ServerRenderer as S, StoryFn as a, StoryObj as b, Story as c, StoryContext as d };
package/jest.config.js ADDED
@@ -0,0 +1,7 @@
1
+ const path = require('path');
2
+ const baseConfig = require('../../jest.config.browser');
3
+
4
+ module.exports = {
5
+ ...baseConfig,
6
+ displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep),
7
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/server",
3
- "version": "7.0.0-alpha.6",
3
+ "version": "7.0.0-alpha.60",
4
4
  "description": "Storybook Server renderer",
5
5
  "keywords": [
6
6
  "storybook"
@@ -19,35 +19,59 @@
19
19
  "url": "https://opencollective.com/storybook"
20
20
  },
21
21
  "license": "MIT",
22
- "main": "dist/cjs/index.js",
23
- "module": "dist/esm/index.js",
24
- "types": "dist/types/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "require": "./dist/index.js",
25
+ "import": "./dist/index.mjs",
26
+ "types": "./dist/index.d.ts"
27
+ },
28
+ "./preview": {
29
+ "require": "./dist/config.js",
30
+ "import": "./dist/config.mjs",
31
+ "types": "./dist/config.d.ts"
32
+ },
33
+ "./package.json": {
34
+ "require": "./package.json",
35
+ "import": "./package.json",
36
+ "types": "./package.json"
37
+ }
38
+ },
39
+ "main": "dist/index.js",
40
+ "module": "dist/index.mjs",
41
+ "types": "dist/index.d.ts",
25
42
  "files": [
26
43
  "dist/**/*",
44
+ "template/**/*",
27
45
  "README.md",
28
46
  "*.js",
29
47
  "*.d.ts"
30
48
  ],
31
49
  "scripts": {
32
- "prepare": "node ../../scripts/prepare.js"
50
+ "check": "../../../scripts/node_modules/.bin/tsc --noEmit",
51
+ "prep": "../../../scripts/prepare/bundle.ts"
33
52
  },
34
53
  "dependencies": {
35
- "@storybook/addons": "7.0.0-alpha.6",
36
- "@storybook/core-client": "7.0.0-alpha.6",
37
- "@storybook/csf": "0.0.2--canary.4566f4d.1",
38
- "@storybook/preview-web": "7.0.0-alpha.6",
39
- "@storybook/store": "7.0.0-alpha.6",
40
- "core-js": "^3.8.2",
54
+ "@storybook/core-client": "7.0.0-alpha.60",
55
+ "@storybook/preview-api": "7.0.0-alpha.60",
56
+ "@storybook/types": "7.0.0-alpha.60",
41
57
  "global": "^4.4.0",
42
- "react": "16.14.0",
43
- "react-dom": "16.14.0",
44
58
  "ts-dedent": "^2.0.0"
45
59
  },
60
+ "devDependencies": {
61
+ "typescript": "~4.9.3"
62
+ },
46
63
  "engines": {
47
64
  "node": ">=10.13.0"
48
65
  },
49
66
  "publishConfig": {
50
67
  "access": "public"
51
68
  },
52
- "gitHead": "a88dcca40ba169a373bad33dd76e9a4bd4f1f5ec"
69
+ "bundler": {
70
+ "entries": [
71
+ "./src/index.ts",
72
+ "./src/config.ts"
73
+ ],
74
+ "platform": "browser"
75
+ },
76
+ "gitHead": "2b38f15a169d191e68f01abae0b109920d89fb39"
53
77
  }
package/preview.js CHANGED
@@ -1 +1 @@
1
- export * from './dist/esm/preview/config';
1
+ export * from './dist/config';
@@ -0,0 +1,32 @@
1
+ {
2
+ "title": "Example/Button",
3
+ "parameters": {
4
+ "server": { "id": "button" }
5
+ },
6
+ "args": { "label": "Button" },
7
+ "argTypes": {
8
+ "label": { "control": "text" },
9
+ "primary": { "control": "boolean" },
10
+ "backgroundColor": { "control": "color" },
11
+ "size": {
12
+ "control": { "type": "select", "options": ["small", "medium", "large"] }
13
+ }
14
+ },
15
+ "stories": [
16
+ {
17
+ "name": "Primary",
18
+ "args": { "primary": true }
19
+ },
20
+ {
21
+ "name": "Secondary"
22
+ },
23
+ {
24
+ "name": "Large",
25
+ "args": { "size": "large" }
26
+ },
27
+ {
28
+ "name": "Small",
29
+ "args": { "size": "small" }
30
+ }
31
+ ]
32
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "title": "Example/Header",
3
+ "parameters": {
4
+ "server": { "id": "header" }
5
+ },
6
+ "stories": [
7
+ {
8
+ "name": "LoggedIn",
9
+ "args": { "user": {} }
10
+ },
11
+ {
12
+ "name": "LoggedOut"
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "title": "Example/Page",
3
+ "parameters": {
4
+ "server": { "id": "page" }
5
+ },
6
+ "stories": [
7
+ {
8
+ "name": "LoggedIn",
9
+ "args": { "user": {} }
10
+ },
11
+ {
12
+ "name": "LoggedOut"
13
+ }
14
+ ]
15
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2017 Kadira Inc. <hello@kadira.io>
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
package/dist/cjs/index.js DELETED
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "addDecorator", {
7
- enumerable: true,
8
- get: function () {
9
- return _preview.addDecorator;
10
- }
11
- });
12
- Object.defineProperty(exports, "addParameters", {
13
- enumerable: true,
14
- get: function () {
15
- return _preview.addParameters;
16
- }
17
- });
18
- Object.defineProperty(exports, "configure", {
19
- enumerable: true,
20
- get: function () {
21
- return _preview.configure;
22
- }
23
- });
24
- Object.defineProperty(exports, "forceReRender", {
25
- enumerable: true,
26
- get: function () {
27
- return _preview.forceReRender;
28
- }
29
- });
30
- Object.defineProperty(exports, "getStorybook", {
31
- enumerable: true,
32
- get: function () {
33
- return _preview.getStorybook;
34
- }
35
- });
36
- Object.defineProperty(exports, "raw", {
37
- enumerable: true,
38
- get: function () {
39
- return _preview.raw;
40
- }
41
- });
42
- Object.defineProperty(exports, "setAddon", {
43
- enumerable: true,
44
- get: function () {
45
- return _preview.setAddon;
46
- }
47
- });
48
- Object.defineProperty(exports, "storiesOf", {
49
- enumerable: true,
50
- get: function () {
51
- return _preview.storiesOf;
52
- }
53
- });
54
-
55
- var _preview = require("./preview");
56
-
57
- var _module, _module$hot;
58
-
59
- // optimization: stop HMR propagation in webpack
60
- (_module = module) === null || _module === void 0 ? void 0 : (_module$hot = _module.hot) === null || _module$hot === void 0 ? void 0 : _module$hot.decline();
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parameters = void 0;
7
- Object.defineProperty(exports, "render", {
8
- enumerable: true,
9
- get: function () {
10
- return _render.render;
11
- }
12
- });
13
- Object.defineProperty(exports, "renderToDOM", {
14
- enumerable: true,
15
- get: function () {
16
- return _render.renderToDOM;
17
- }
18
- });
19
-
20
- var _render = require("./render");
21
-
22
- const parameters = {
23
- framework: 'server'
24
- };
25
- exports.parameters = parameters;
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- var _global = _interopRequireDefault(require("global"));
4
-
5
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
-
7
- const {
8
- window: globalWindow
9
- } = _global.default;
10
- globalWindow.STORYBOOK_ENV = 'SERVER';
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.storiesOf = exports.setAddon = exports.raw = exports.getStorybook = exports.forceReRender = exports.configure = exports.clearDecorators = exports.addParameters = exports.addDecorator = void 0;
7
-
8
- var _coreClient = require("@storybook/core-client");
9
-
10
- require("./globals");
11
-
12
- var _render = require("./render");
13
-
14
- const framework = 'server';
15
- const api = (0, _coreClient.start)(_render.renderToDOM, {
16
- render: _render.render
17
- });
18
-
19
- const storiesOf = (kind, m) => {
20
- return api.clientApi.storiesOf(kind, m).addParameters({
21
- framework
22
- });
23
- };
24
-
25
- exports.storiesOf = storiesOf;
26
-
27
- const configure = (...args) => api.configure(framework, ...args);
28
-
29
- exports.configure = configure;
30
- const {
31
- addDecorator,
32
- addParameters,
33
- clearDecorators,
34
- setAddon,
35
- getStorybook,
36
- raw
37
- } = api.clientApi;
38
- exports.raw = raw;
39
- exports.getStorybook = getStorybook;
40
- exports.setAddon = setAddon;
41
- exports.clearDecorators = clearDecorators;
42
- exports.addParameters = addParameters;
43
- exports.addDecorator = addDecorator;
44
- const {
45
- forceReRender
46
- } = api;
47
- exports.forceReRender = forceReRender;
@@ -1,113 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.render = void 0;
7
- exports.renderToDOM = renderToDOM;
8
-
9
- var _global = _interopRequireDefault(require("global"));
10
-
11
- var _tsDedent = _interopRequireDefault(require("ts-dedent"));
12
-
13
- var _previewWeb = require("@storybook/preview-web");
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
-
17
- /* eslint-disable no-param-reassign */
18
- const {
19
- fetch,
20
- Node
21
- } = _global.default;
22
-
23
- const defaultFetchStoryHtml = async (url, path, params, storyContext) => {
24
- const fetchUrl = new URL(`${url}/${path}`);
25
- fetchUrl.search = new URLSearchParams(Object.assign({}, storyContext.globals, params)).toString();
26
- const response = await fetch(fetchUrl);
27
- return response.text();
28
- };
29
-
30
- const buildStoryArgs = (args, argTypes) => {
31
- const storyArgs = Object.assign({}, args);
32
- Object.keys(argTypes).forEach(key => {
33
- const argType = argTypes[key];
34
- const {
35
- control
36
- } = argType;
37
- const controlType = control && control.type.toLowerCase();
38
- const argValue = storyArgs[key];
39
-
40
- switch (controlType) {
41
- case 'date':
42
- // For cross framework & language support we pick a consistent representation of Dates as strings
43
- storyArgs[key] = new Date(argValue).toISOString();
44
- break;
45
-
46
- case 'object':
47
- // send objects as JSON strings
48
- storyArgs[key] = JSON.stringify(argValue);
49
- break;
50
-
51
- default:
52
- }
53
- });
54
- return storyArgs;
55
- };
56
-
57
- const render = args => {};
58
-
59
- exports.render = render;
60
-
61
- async function renderToDOM({
62
- id,
63
- title,
64
- name,
65
- showMain,
66
- showError,
67
- forceRemount,
68
- storyFn,
69
- storyContext,
70
- storyContext: {
71
- parameters,
72
- args,
73
- argTypes
74
- }
75
- }, domElement) {
76
- // Some addons wrap the storyFn so we need to call it even though Server doesn't need the answer
77
- storyFn();
78
- const storyArgs = buildStoryArgs(args, argTypes);
79
- const {
80
- server: {
81
- url,
82
- id: storyId,
83
- fetchStoryHtml = defaultFetchStoryHtml,
84
- params
85
- }
86
- } = parameters;
87
- const fetchId = storyId || id;
88
- const storyParams = Object.assign({}, params, storyArgs);
89
- const element = await fetchStoryHtml(url, fetchId, storyParams, storyContext);
90
- showMain();
91
-
92
- if (typeof element === 'string') {
93
- domElement.innerHTML = element;
94
- (0, _previewWeb.simulatePageLoad)(domElement);
95
- } else if (element instanceof Node) {
96
- // Don't re-mount the element if it didn't change and neither did the story
97
- if (domElement.firstChild === element && forceRemount === false) {
98
- return;
99
- }
100
-
101
- domElement.innerHTML = '';
102
- domElement.appendChild(element);
103
- (0, _previewWeb.simulateDOMContentLoaded)();
104
- } else {
105
- showError({
106
- title: `Expecting an HTML snippet or DOM node from the story: "${name}" of "${title}".`,
107
- description: (0, _tsDedent.default)`
108
- Did you forget to return the HTML snippet from the story?
109
- Use "() => <your snippet or node>" or when defining the story.
110
- `
111
- });
112
- }
113
- }
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
package/dist/esm/index.js DELETED
@@ -1,3 +0,0 @@
1
- export { storiesOf, setAddon, addDecorator, addParameters, configure, getStorybook, forceReRender, raw } from './preview'; // optimization: stop HMR propagation in webpack
2
-
3
- module?.hot?.decline();
@@ -1,4 +0,0 @@
1
- export { render, renderToDOM } from './render';
2
- export const parameters = {
3
- framework: 'server'
4
- };
@@ -1,5 +0,0 @@
1
- import global from 'global';
2
- const {
3
- window: globalWindow
4
- } = global;
5
- globalWindow.STORYBOOK_ENV = 'SERVER';
@@ -1,24 +0,0 @@
1
- import { start } from '@storybook/core-client';
2
- import './globals';
3
- import { renderToDOM, render } from './render';
4
- const framework = 'server';
5
- const api = start(renderToDOM, {
6
- render
7
- });
8
- export const storiesOf = (kind, m) => {
9
- return api.clientApi.storiesOf(kind, m).addParameters({
10
- framework
11
- });
12
- };
13
- export const configure = (...args) => api.configure(framework, ...args);
14
- export const {
15
- addDecorator,
16
- addParameters,
17
- clearDecorators,
18
- setAddon,
19
- getStorybook,
20
- raw
21
- } = api.clientApi;
22
- export const {
23
- forceReRender
24
- } = api;
@@ -1,97 +0,0 @@
1
- /* eslint-disable no-param-reassign */
2
- import global from 'global';
3
- import dedent from 'ts-dedent';
4
- import { simulatePageLoad, simulateDOMContentLoaded } from '@storybook/preview-web';
5
- const {
6
- fetch,
7
- Node
8
- } = global;
9
-
10
- const defaultFetchStoryHtml = async (url, path, params, storyContext) => {
11
- const fetchUrl = new URL(`${url}/${path}`);
12
- fetchUrl.search = new URLSearchParams(Object.assign({}, storyContext.globals, params)).toString();
13
- const response = await fetch(fetchUrl);
14
- return response.text();
15
- };
16
-
17
- const buildStoryArgs = (args, argTypes) => {
18
- const storyArgs = Object.assign({}, args);
19
- Object.keys(argTypes).forEach(key => {
20
- const argType = argTypes[key];
21
- const {
22
- control
23
- } = argType;
24
- const controlType = control && control.type.toLowerCase();
25
- const argValue = storyArgs[key];
26
-
27
- switch (controlType) {
28
- case 'date':
29
- // For cross framework & language support we pick a consistent representation of Dates as strings
30
- storyArgs[key] = new Date(argValue).toISOString();
31
- break;
32
-
33
- case 'object':
34
- // send objects as JSON strings
35
- storyArgs[key] = JSON.stringify(argValue);
36
- break;
37
-
38
- default:
39
- }
40
- });
41
- return storyArgs;
42
- };
43
-
44
- export const render = args => {};
45
- export async function renderToDOM({
46
- id,
47
- title,
48
- name,
49
- showMain,
50
- showError,
51
- forceRemount,
52
- storyFn,
53
- storyContext,
54
- storyContext: {
55
- parameters,
56
- args,
57
- argTypes
58
- }
59
- }, domElement) {
60
- // Some addons wrap the storyFn so we need to call it even though Server doesn't need the answer
61
- storyFn();
62
- const storyArgs = buildStoryArgs(args, argTypes);
63
- const {
64
- server: {
65
- url,
66
- id: storyId,
67
- fetchStoryHtml = defaultFetchStoryHtml,
68
- params
69
- }
70
- } = parameters;
71
- const fetchId = storyId || id;
72
- const storyParams = Object.assign({}, params, storyArgs);
73
- const element = await fetchStoryHtml(url, fetchId, storyParams, storyContext);
74
- showMain();
75
-
76
- if (typeof element === 'string') {
77
- domElement.innerHTML = element;
78
- simulatePageLoad(domElement);
79
- } else if (element instanceof Node) {
80
- // Don't re-mount the element if it didn't change and neither did the story
81
- if (domElement.firstChild === element && forceRemount === false) {
82
- return;
83
- }
84
-
85
- domElement.innerHTML = '';
86
- domElement.appendChild(element);
87
- simulateDOMContentLoaded();
88
- } else {
89
- showError({
90
- title: `Expecting an HTML snippet or DOM node from the story: "${name}" of "${title}".`,
91
- description: dedent`
92
- Did you forget to return the HTML snippet from the story?
93
- Use "() => <your snippet or node>" or when defining the story.
94
- `
95
- });
96
- }
97
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export { storiesOf, setAddon, addDecorator, addParameters, configure, getStorybook, forceReRender, raw, } from './preview';
@@ -1,4 +0,0 @@
1
- export { render, renderToDOM } from './render';
2
- export declare const parameters: {
3
- framework: string;
4
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,20 +0,0 @@
1
- /// <reference types="webpack-env" />
2
- import type { ClientStoryApi, Loadable } from '@storybook/addons';
3
- import './globals';
4
- import type { IStorybookSection, ServerFramework } from './types';
5
- interface ClientApi extends ClientStoryApi<ServerFramework['storyResult']> {
6
- setAddon(addon: any): void;
7
- configure(loader: Loadable, module: NodeModule): void;
8
- getStorybook(): IStorybookSection[];
9
- clearDecorators(): void;
10
- forceReRender(): void;
11
- raw: () => any;
12
- }
13
- export declare const storiesOf: ClientApi['storiesOf'];
14
- export declare const configure: ClientApi['configure'];
15
- export declare const addDecorator: (() => never) | ((decorator: import("@storybook/csf").DecoratorFunction<ServerFramework, import("@storybook/addons").Args>) => void), addParameters: (({ globals, globalTypes, ...parameters }: import("@storybook/csf").Parameters & {
16
- globals?: import("@storybook/csf").Globals;
17
- globalTypes?: import("@storybook/csf").GlobalTypes;
18
- }) => void) | (() => never), clearDecorators: (() => void) | (() => never), setAddon: ((addon: any) => void) | (() => never), getStorybook: (() => never) | (() => import("lib/client-api/dist/types/ClientApi").GetStorybookKind<ServerFramework>[]), raw: (() => never) | (() => import("lib/store/dist/types").BoundStory<ServerFramework>[]);
19
- export declare const forceReRender: (() => never) | (() => void);
20
- export {};
@@ -1,5 +0,0 @@
1
- import type { RenderContext } from '@storybook/store';
2
- import type { StoryFn } from '@storybook/csf';
3
- import type { ServerFramework } from './types';
4
- export declare const render: StoryFn<ServerFramework>;
5
- export declare function renderToDOM({ id, title, name, showMain, showError, forceRemount, storyFn, storyContext, storyContext: { parameters, args, argTypes }, }: RenderContext<ServerFramework>, domElement: Element): Promise<void>;
@@ -1,20 +0,0 @@
1
- import type { StoryContext } from '@storybook/csf';
2
- export type { RenderContext } from '@storybook/core-client';
3
- export declare type StoryFnServerReturnType = any;
4
- export declare type ServerFramework = {
5
- component: string;
6
- storyResult: StoryFnServerReturnType;
7
- };
8
- export declare type FetchStoryHtmlType = (url: string, id: string, params: any, context: StoryContext<ServerFramework>) => Promise<string | Node>;
9
- export interface IStorybookStory {
10
- name: string;
11
- render: (context: any) => any;
12
- }
13
- export interface IStorybookSection {
14
- kind: string;
15
- stories: IStorybookStory[];
16
- }
17
- export interface ShowErrorArgs {
18
- title: string;
19
- description: string;
20
- }