storybook-addon-playroom 7.0.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-RBM5CMSM.js +57 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +6 -2
- package/dist/manager.js +38 -2
- package/dist/preview.js +1 -3
- package/package.json +11 -15
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/manager.js.map +0 -1
- package/dist/preview.cjs +0 -3
- package/dist/preview.cjs.map +0 -1
- package/dist/preview.d.cts +0 -5
- package/dist/preview.js.map +0 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createUrl } from 'playroom';
|
|
2
|
+
import reactElementToJSXString from 'react-element-to-jsx-string';
|
|
3
|
+
import { useGlobals } from 'storybook/preview-api';
|
|
4
|
+
|
|
5
|
+
// src/constants.ts
|
|
6
|
+
var PARAM_KEY = `playroom`;
|
|
7
|
+
var getOptions = ({
|
|
8
|
+
url = "http://localhost:9000",
|
|
9
|
+
code = "",
|
|
10
|
+
disable = false,
|
|
11
|
+
includeDecorators = false,
|
|
12
|
+
reactElementToJSXStringOptions = { sortProps: false }
|
|
13
|
+
} = {}) => ({
|
|
14
|
+
url,
|
|
15
|
+
code,
|
|
16
|
+
disable,
|
|
17
|
+
includeDecorators,
|
|
18
|
+
reactElementToJSXStringOptions
|
|
19
|
+
});
|
|
20
|
+
var getGlobals = (globals) => globals[PARAM_KEY];
|
|
21
|
+
var setGlobals = (updateGlobals, globals) => updateGlobals({ [PARAM_KEY]: globals });
|
|
22
|
+
|
|
23
|
+
// src/withGlobals.ts
|
|
24
|
+
var updateCodeUrl = ([globals, updateGlobals], codeUrl) => getGlobals(globals).codeUrl !== codeUrl && setGlobals(updateGlobals, { codeUrl });
|
|
25
|
+
var withGlobals = (StoryFn, context) => {
|
|
26
|
+
const globals = useGlobals();
|
|
27
|
+
const story = StoryFn();
|
|
28
|
+
const { parameters, undecoratedStoryFn, viewMode } = context;
|
|
29
|
+
if (viewMode !== "story") return story;
|
|
30
|
+
const {
|
|
31
|
+
url,
|
|
32
|
+
code,
|
|
33
|
+
disable,
|
|
34
|
+
includeDecorators,
|
|
35
|
+
reactElementToJSXStringOptions
|
|
36
|
+
} = getOptions(parameters[PARAM_KEY]);
|
|
37
|
+
if (disable) {
|
|
38
|
+
updateCodeUrl(globals, void 0);
|
|
39
|
+
return story;
|
|
40
|
+
}
|
|
41
|
+
const storyCode = includeDecorators ? story : undecoratedStoryFn(context);
|
|
42
|
+
const jsxString = code || reactElementToJSXString(storyCode, reactElementToJSXStringOptions);
|
|
43
|
+
const codeUrl = url && createUrl({ baseUrl: url, code: jsxString });
|
|
44
|
+
updateCodeUrl(globals, codeUrl);
|
|
45
|
+
return story;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/preview.ts
|
|
49
|
+
var preview = {
|
|
50
|
+
decorators: [withGlobals],
|
|
51
|
+
initialGlobals: {
|
|
52
|
+
[PARAM_KEY]: false
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var preview_default = preview;
|
|
56
|
+
|
|
57
|
+
export { preview_default };
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { preview_default } from './chunk-RBM5CMSM.js';
|
|
2
|
+
import { definePreviewAddon } from 'storybook/internal/csf';
|
|
3
|
+
|
|
4
|
+
var index_default = () => definePreviewAddon(preview_default);
|
|
5
|
+
|
|
6
|
+
export { index_default as default };
|
package/dist/manager.js
CHANGED
|
@@ -1,2 +1,38 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import React, { memo } from 'react';
|
|
2
|
+
import { useGlobals, addons, types } from 'storybook/manager-api';
|
|
3
|
+
import { styled } from 'storybook/theming';
|
|
4
|
+
|
|
5
|
+
// src/manager.tsx
|
|
6
|
+
|
|
7
|
+
// src/constants.ts
|
|
8
|
+
var ADDON_ID = "storybook/playroom";
|
|
9
|
+
var TAB_ID = `${ADDON_ID}/tab`;
|
|
10
|
+
var PARAM_KEY = `playroom`;
|
|
11
|
+
var Message = styled.p({
|
|
12
|
+
textAlign: "center"
|
|
13
|
+
});
|
|
14
|
+
var Iframe = styled.iframe({
|
|
15
|
+
border: "0 none",
|
|
16
|
+
height: "100%",
|
|
17
|
+
width: "100%"
|
|
18
|
+
});
|
|
19
|
+
var Tab = memo(({ active }) => {
|
|
20
|
+
const [globals] = useGlobals();
|
|
21
|
+
const { codeUrl } = globals[PARAM_KEY] ?? {};
|
|
22
|
+
if (!active) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
if (!codeUrl) {
|
|
26
|
+
return /* @__PURE__ */ React.createElement(Message, null, "Playroom has been disabled for this story.");
|
|
27
|
+
}
|
|
28
|
+
return /* @__PURE__ */ React.createElement(Iframe, { key: codeUrl, allowFullScreen: true, src: codeUrl, title: "Playroom" });
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// src/manager.tsx
|
|
32
|
+
addons.register(ADDON_ID, () => {
|
|
33
|
+
addons.add(TAB_ID, {
|
|
34
|
+
type: types.TAB,
|
|
35
|
+
title: "Playroom",
|
|
36
|
+
render: ({ active }) => /* @__PURE__ */ React.createElement(Tab, { active: !!active })
|
|
37
|
+
});
|
|
38
|
+
});
|
package/dist/preview.js
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export{w as default};//# sourceMappingURL=preview.js.map
|
|
3
|
-
//# sourceMappingURL=preview.js.map
|
|
1
|
+
export { preview_default as default } from './chunk-RBM5CMSM.js';
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "storybook-addon-playroom",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"description": "Design with Playroom inside Storybook, using each story source as a starting point",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"storybook-
|
|
6
|
+
"storybook-addon",
|
|
7
7
|
"design",
|
|
8
8
|
"playroom",
|
|
9
9
|
"react",
|
|
@@ -27,13 +27,11 @@
|
|
|
27
27
|
"exports": {
|
|
28
28
|
".": {
|
|
29
29
|
"types": "./dist/index.d.ts",
|
|
30
|
-
"
|
|
31
|
-
"require": "./dist/index.cjs"
|
|
30
|
+
"default": "./dist/index.js"
|
|
32
31
|
},
|
|
33
32
|
"./preview": {
|
|
34
|
-
"types": "./dist/
|
|
35
|
-
"
|
|
36
|
-
"require": "./dist/preview.cjs"
|
|
33
|
+
"types": "./dist/preview.d.ts",
|
|
34
|
+
"default": "./dist/preview.js"
|
|
37
35
|
},
|
|
38
36
|
"./manager": "./dist/manager.js",
|
|
39
37
|
"./package.json": "./package.json"
|
|
@@ -63,12 +61,12 @@
|
|
|
63
61
|
"type-check": "tsc --noEmit"
|
|
64
62
|
},
|
|
65
63
|
"dependencies": {
|
|
66
|
-
"playroom": "^0.
|
|
64
|
+
"playroom": "^1.0.0",
|
|
67
65
|
"react-element-to-jsx-string": "^15.0.0"
|
|
68
66
|
},
|
|
69
67
|
"devDependencies": {
|
|
70
68
|
"@skypack/package-check": "^0.2.0",
|
|
71
|
-
"@storybook/react-vite": "^
|
|
69
|
+
"@storybook/react-vite": "^10.0.0",
|
|
72
70
|
"@types/node": "^24.0.0",
|
|
73
71
|
"@types/react": "^18.0.0",
|
|
74
72
|
"@vitejs/plugin-react": "^5.0.0",
|
|
@@ -80,24 +78,22 @@
|
|
|
80
78
|
"react": "^18.0.0",
|
|
81
79
|
"react-dom": "^18.0.0",
|
|
82
80
|
"rimraf": "^6.0.0",
|
|
83
|
-
"storybook": "^
|
|
81
|
+
"storybook": "^10.0.0",
|
|
84
82
|
"style-loader": "^4.0.0",
|
|
85
83
|
"tsup": "^8.0.0",
|
|
86
84
|
"typescript": "^5.3.0",
|
|
87
85
|
"vite": "^7.0.0"
|
|
88
86
|
},
|
|
89
87
|
"peerDependencies": {
|
|
90
|
-
"storybook": "^
|
|
88
|
+
"storybook": "^10.0.0"
|
|
91
89
|
},
|
|
92
90
|
"bundler": {
|
|
93
|
-
"exportEntries": [
|
|
94
|
-
"src/index.ts"
|
|
95
|
-
],
|
|
96
91
|
"managerEntries": [
|
|
97
92
|
"src/manager.tsx"
|
|
98
93
|
],
|
|
99
94
|
"previewEntries": [
|
|
100
|
-
"src/preview.ts"
|
|
95
|
+
"src/preview.ts",
|
|
96
|
+
"src/index.ts"
|
|
101
97
|
]
|
|
102
98
|
},
|
|
103
99
|
"storybook": {
|
package/dist/index.cjs
DELETED
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["index_default"],"mappings":"aACA,IAAOA,EAAQ","file":"index.cjs","sourcesContent":["// make it work with --isolatedModules\nexport default {}\n"]}
|
package/dist/index.d.cts
DELETED
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["index_default"],"mappings":"AACA,IAAOA,EAAQ","file":"index.js","sourcesContent":["// make it work with --isolatedModules\nexport default {}\n"]}
|
package/dist/manager.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/Tab.tsx","../src/manager.tsx"],"names":["ADDON_ID","TAB_ID","PARAM_KEY","Message","styled","Iframe","Tab","memo","active","globals","useGlobals","codeUrl","React","addons","types"],"mappings":"8HAAO,IAAMA,CAAAA,CAAW,oBAAA,CACXC,CAAAA,CAAS,GAAGD,CAAQ,CAAA,IAAA,CAAA,CACpBE,CAAAA,CAAY,UAAA,CCQzB,IAAMC,CAAAA,CAAUC,MAAAA,CAAO,CAAA,CAAE,CACvB,SAAA,CAAW,QACb,CAAC,CAAA,CAEKC,CAAAA,CAASD,OAAO,MAAA,CAAO,CAC3B,MAAA,CAAQ,QAAA,CACR,MAAA,CAAQ,MAAA,CACR,KAAA,CAAO,MACT,CAAC,CAAA,CAEYE,CAAAA,CAAMC,IAAAA,CAAe,CAAC,CAAE,MAAA,CAAAC,CAAO,CAAA,GAAM,CAChD,GAAM,CAACC,CAAO,CAAA,CAAIC,UAAAA,EAAW,CACvB,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAIF,CAAAA,CAAQP,CAAS,CAAA,EAAK,EAAC,CAE3C,OAAKM,EAIAG,CAAAA,CAIEC,CAAAA,CAAA,aAAA,CAACP,CAAAA,CAAA,CAAO,GAAA,CAAKM,CAAAA,CAAS,eAAA,CAAe,KAAC,GAAA,CAAKA,CAAAA,CAAS,KAAA,CAAM,UAAA,CAAW,CAAA,CAHnEC,CAAAA,CAAA,aAAA,CAACT,CAAAA,CAAA,KAAQ,4CAA0C,CAAA,CAJnD,IAQX,CAAC,CAAA,CC3BDU,MAAAA,CAAO,QAAA,CAASb,CAAAA,CAAU,IAAM,CAC9Ba,MAAAA,CAAO,GAAA,CAAIZ,CAAAA,CAAQ,CACjB,IAAA,CAAMa,KAAAA,CAAM,GAAA,CACZ,MAAO,UAAA,CACP,MAAA,CAAQ,CAAC,CAAE,MAAA,CAAAN,CAAO,CAAA,GAAMI,CAAAA,CAAA,cAACN,CAAAA,CAAA,CAAI,MAAA,CAAQ,CAAC,CAACE,CAAAA,CAAQ,CACjD,CAAC,EACH,CAAC,CAAA","file":"manager.js","sourcesContent":["export const ADDON_ID = 'storybook/playroom'\nexport const TAB_ID = `${ADDON_ID}/tab`\nexport const PARAM_KEY = `playroom`\n\nexport const EVENTS = {\n UPDATE: `${ADDON_ID}/update`,\n}\n","import React, { memo } from 'react'\nimport { useGlobals } from 'storybook/manager-api'\nimport { styled } from 'storybook/theming'\n\nimport { PARAM_KEY } from './constants'\n\ninterface TabProps {\n active: boolean\n}\n\nconst Message = styled.p({\n textAlign: 'center',\n})\n\nconst Iframe = styled.iframe({\n border: '0 none',\n height: '100%',\n width: '100%',\n})\n\nexport const Tab = memo<TabProps>(({ active }) => {\n const [globals] = useGlobals()\n const { codeUrl } = globals[PARAM_KEY] ?? {}\n\n if (!active) {\n return null\n }\n\n if (!codeUrl) {\n return <Message>Playroom has been disabled for this story.</Message>\n }\n\n return <Iframe key={codeUrl} allowFullScreen src={codeUrl} title=\"Playroom\" />\n})\n","import React from 'react'\nimport { addons, types } from 'storybook/manager-api'\n\nimport { ADDON_ID, PARAM_KEY, TAB_ID } from './constants'\nimport { Tab } from './Tab'\n\naddons.register(ADDON_ID, () => {\n addons.add(TAB_ID, {\n type: types.TAB,\n title: 'Playroom',\n render: ({ active }) => <Tab active={!!active} />,\n })\n})\n"]}
|
package/dist/preview.cjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var playroom=require('playroom'),A=require('react-element-to-jsx-string'),previewApi=require('storybook/preview-api');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var A__default=/*#__PURE__*/_interopDefault(A);var r="playroom";var p=({url:o="http://localhost:9000",code:t="",disable:e=false,includeDecorators:s=false,reactElementToJSXStringOptions:n={sortProps:false}}={})=>({url:o,code:t,disable:e,includeDecorators:s,reactElementToJSXStringOptions:n}),c=o=>o[r],m=(o,t)=>o({[r]:t});var b=([o,t],e)=>c(o).codeUrl!==e&&m(t,{codeUrl:e}),d=(o,t)=>{let e=previewApi.useGlobals(),{parameters:s,undecoratedStoryFn:n}=t,{url:a,code:y,disable:f,includeDecorators:u,reactElementToJSXStringOptions:S}=p(s[r]),l=o();if(f)return b(e,void 0),l;let G=u?l:n(t),R=y||A__default.default(G,S),g=a&&playroom.createUrl({baseUrl:a,code:R});return b(e,g),l};var O={decorators:[d],initialGlobals:{[r]:false}},w=O;
|
|
2
|
-
module.exports=w;//# sourceMappingURL=preview.cjs.map
|
|
3
|
-
//# sourceMappingURL=preview.cjs.map
|
package/dist/preview.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/utils.tsx","../src/withGlobals.ts","../src/preview.ts"],"names":["PARAM_KEY","getOptions","url","code","disable","includeDecorators","reactElementToJSXStringOptions","getGlobals","globals","setGlobals","updateGlobals","updateCodeUrl","codeUrl","withGlobals","StoryFn","context","useGlobals","parameters","undecoratedStoryFn","story","storyCode","jsxString","reactElementToJSXString","createUrl","preview","preview_default"],"mappings":"mPAAO,IAEMA,CAAAA,CAAY,WCiBlB,IAAMC,EAAa,CAAC,CACzB,IAAAC,CAAAA,CAAM,uBAAA,CACN,KAAAC,CAAAA,CAAO,EAAA,CACP,QAAAC,CAAAA,CAAU,KAAA,CACV,iBAAA,CAAAC,CAAAA,CAAoB,KAAA,CACpB,8BAAA,CAAAC,EAAiC,CAAE,SAAA,CAAW,KAAM,CACtD,CAAA,CAAa,EAAC,IAA0B,CACtC,IAAAJ,CAAAA,CACA,IAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,8BAAA,CAAAC,CACF,CAAA,CAAA,CAEaC,CAAAA,CAAcC,GACzBA,CAAAA,CAAQR,CAAS,EAENS,CAAAA,CAAa,CAACC,EAA8BF,CAAAA,GACvDE,CAAAA,CAAc,CAAE,CAACV,CAAS,EAAGQ,CAAQ,CAAC,ECxBxC,IAAMG,CAAAA,CAAgB,CACpB,CAACH,CAAAA,CAASE,CAAa,CAAA,CACvBE,CAAAA,GAEAL,CAAAA,CAAWC,CAAO,CAAA,CAAE,OAAA,GAAYI,GAChCH,CAAAA,CAAWC,CAAAA,CAAe,CAAE,OAAA,CAAAE,CAAQ,CAAC,CAAA,CAE1BC,CAAAA,CAAc,CACzBC,CAAAA,CACAC,CAAAA,GACG,CACH,IAAMP,CAAAA,CAAUQ,uBAAW,CACrB,CAAE,WAAAC,CAAAA,CAAY,kBAAA,CAAAC,CAAmB,CAAA,CAAIH,CAAAA,CACrC,CACJ,GAAA,CAAAb,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,iBAAA,CAAAC,CAAAA,CACA,+BAAAC,CACF,CAAA,CAAIL,EAAWgB,CAAAA,CAAWjB,CAAS,CAAC,CAAA,CAE9BmB,CAAAA,CAAQL,GAAQ,CAEtB,GAAIV,CAAAA,CACF,OAAAO,CAAAA,CAAcH,CAAAA,CAAS,MAAS,CAAA,CACzBW,CAAAA,CAGT,IAAMC,CAAAA,CAAYf,CAAAA,CACdc,EACCD,CAAAA,CAAmBH,CAAO,EACzBM,CAAAA,CACJlB,CAAAA,EAAQmB,mBAAwBF,CAAAA,CAAWd,CAA8B,EACrEM,CAAAA,CAAUV,CAAAA,EAAOqB,mBAAU,CAAE,OAAA,CAASrB,CAAAA,CAAK,IAAA,CAAMmB,CAAU,CAAC,EAElE,OAAAV,CAAAA,CAAcH,EAASI,CAAO,CAAA,CACvBO,CACT,CAAA,CC7CA,IAAMK,EAAwC,CAC5C,UAAA,CAAY,CAACX,CAAW,CAAA,CACxB,eAAgB,CACd,CAACb,CAAS,EAAG,KACf,CACF,CAAA,CAEOyB,CAAAA,CAAQD","file":"preview.cjs","sourcesContent":["export const ADDON_ID = 'storybook/playroom'\nexport const TAB_ID = `${ADDON_ID}/tab`\nexport const PARAM_KEY = `playroom`\n\nexport const EVENTS = {\n UPDATE: `${ADDON_ID}/update`,\n}\n","import { type useGlobals } from 'storybook/preview-api'\nimport { type Options as ReactElementToJSXStringOptions } from 'react-element-to-jsx-string'\n\nimport { PARAM_KEY } from './constants'\n\ntype Options = {\n url?: string\n code?: string\n disable?: boolean\n includeDecorators?: boolean\n reactElementToJSXStringOptions?: ReactElementToJSXStringOptions\n}\n\ntype Globals = {\n codeUrl?: string\n}\n\ntype UseGlobals = ReturnType<typeof useGlobals>\n\nexport const getOptions = ({\n url = 'http://localhost:9000',\n code = '',\n disable = false,\n includeDecorators = false,\n reactElementToJSXStringOptions = { sortProps: false },\n}: Options = {}): Required<Options> => ({\n url,\n code,\n disable,\n includeDecorators,\n reactElementToJSXStringOptions,\n})\n\nexport const getGlobals = (globals: UseGlobals[0]): Globals =>\n globals[PARAM_KEY]\n\nexport const setGlobals = (updateGlobals: UseGlobals[1], globals: Globals) =>\n updateGlobals({ [PARAM_KEY]: globals })\n","import { createUrl } from 'playroom'\nimport type { ReactElement } from 'react'\nimport reactElementToJSXString from 'react-element-to-jsx-string'\nimport type {\n Renderer,\n PartialStoryFn as StoryFunction,\n StoryContext,\n} from 'storybook/internal/types'\nimport { useGlobals } from 'storybook/preview-api'\n\nimport { PARAM_KEY } from './constants'\nimport { getGlobals, getOptions, setGlobals } from './utils'\n\nconst updateCodeUrl = (\n [globals, updateGlobals]: ReturnType<typeof useGlobals>,\n codeUrl: string | undefined,\n) =>\n getGlobals(globals).codeUrl !== codeUrl &&\n setGlobals(updateGlobals, { codeUrl })\n\nexport const withGlobals = (\n StoryFn: StoryFunction<Renderer>,\n context: StoryContext<Renderer>,\n) => {\n const globals = useGlobals()\n const { parameters, undecoratedStoryFn } = context\n const {\n url,\n code,\n disable,\n includeDecorators,\n reactElementToJSXStringOptions,\n } = getOptions(parameters[PARAM_KEY])\n\n const story = StoryFn() as ReactElement\n\n if (disable) {\n updateCodeUrl(globals, undefined)\n return story\n }\n\n const storyCode = includeDecorators\n ? story\n : (undecoratedStoryFn(context) as ReactElement)\n const jsxString =\n code || reactElementToJSXString(storyCode, reactElementToJSXStringOptions)\n const codeUrl = url && createUrl({ baseUrl: url, code: jsxString })\n\n updateCodeUrl(globals, codeUrl)\n return story\n}\n","import type { Renderer, ProjectAnnotations } from 'storybook/internal/types'\n\nimport { PARAM_KEY } from './constants'\nimport { withGlobals } from './withGlobals'\n\nconst preview: ProjectAnnotations<Renderer> = {\n decorators: [withGlobals],\n initialGlobals: {\n [PARAM_KEY]: false,\n },\n}\n\nexport default preview\n"]}
|
package/dist/preview.d.cts
DELETED
package/dist/preview.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/utils.tsx","../src/withGlobals.ts","../src/preview.ts"],"names":["PARAM_KEY","getOptions","url","code","disable","includeDecorators","reactElementToJSXStringOptions","getGlobals","globals","setGlobals","updateGlobals","updateCodeUrl","codeUrl","withGlobals","StoryFn","context","useGlobals","parameters","undecoratedStoryFn","story","storyCode","jsxString","reactElementToJSXString","createUrl","preview","preview_default"],"mappings":"2HAAO,IAEMA,CAAAA,CAAY,WCiBlB,IAAMC,EAAa,CAAC,CACzB,IAAAC,CAAAA,CAAM,uBAAA,CACN,KAAAC,CAAAA,CAAO,EAAA,CACP,QAAAC,CAAAA,CAAU,KAAA,CACV,iBAAA,CAAAC,CAAAA,CAAoB,KAAA,CACpB,8BAAA,CAAAC,EAAiC,CAAE,SAAA,CAAW,KAAM,CACtD,CAAA,CAAa,EAAC,IAA0B,CACtC,IAAAJ,CAAAA,CACA,IAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,8BAAA,CAAAC,CACF,CAAA,CAAA,CAEaC,CAAAA,CAAcC,GACzBA,CAAAA,CAAQR,CAAS,EAENS,CAAAA,CAAa,CAACC,EAA8BF,CAAAA,GACvDE,CAAAA,CAAc,CAAE,CAACV,CAAS,EAAGQ,CAAQ,CAAC,ECxBxC,IAAMG,CAAAA,CAAgB,CACpB,CAACH,CAAAA,CAASE,CAAa,CAAA,CACvBE,CAAAA,GAEAL,CAAAA,CAAWC,CAAO,CAAA,CAAE,OAAA,GAAYI,GAChCH,CAAAA,CAAWC,CAAAA,CAAe,CAAE,OAAA,CAAAE,CAAQ,CAAC,CAAA,CAE1BC,CAAAA,CAAc,CACzBC,CAAAA,CACAC,CAAAA,GACG,CACH,IAAMP,CAAAA,CAAUQ,YAAW,CACrB,CAAE,WAAAC,CAAAA,CAAY,kBAAA,CAAAC,CAAmB,CAAA,CAAIH,CAAAA,CACrC,CACJ,GAAA,CAAAb,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,iBAAA,CAAAC,CAAAA,CACA,+BAAAC,CACF,CAAA,CAAIL,EAAWgB,CAAAA,CAAWjB,CAAS,CAAC,CAAA,CAE9BmB,CAAAA,CAAQL,GAAQ,CAEtB,GAAIV,CAAAA,CACF,OAAAO,CAAAA,CAAcH,CAAAA,CAAS,MAAS,CAAA,CACzBW,CAAAA,CAGT,IAAMC,CAAAA,CAAYf,CAAAA,CACdc,EACCD,CAAAA,CAAmBH,CAAO,EACzBM,CAAAA,CACJlB,CAAAA,EAAQmB,EAAwBF,CAAAA,CAAWd,CAA8B,EACrEM,CAAAA,CAAUV,CAAAA,EAAOqB,UAAU,CAAE,OAAA,CAASrB,CAAAA,CAAK,IAAA,CAAMmB,CAAU,CAAC,EAElE,OAAAV,CAAAA,CAAcH,EAASI,CAAO,CAAA,CACvBO,CACT,CAAA,CC7CA,IAAMK,EAAwC,CAC5C,UAAA,CAAY,CAACX,CAAW,CAAA,CACxB,eAAgB,CACd,CAACb,CAAS,EAAG,KACf,CACF,CAAA,CAEOyB,CAAAA,CAAQD","file":"preview.js","sourcesContent":["export const ADDON_ID = 'storybook/playroom'\nexport const TAB_ID = `${ADDON_ID}/tab`\nexport const PARAM_KEY = `playroom`\n\nexport const EVENTS = {\n UPDATE: `${ADDON_ID}/update`,\n}\n","import { type useGlobals } from 'storybook/preview-api'\nimport { type Options as ReactElementToJSXStringOptions } from 'react-element-to-jsx-string'\n\nimport { PARAM_KEY } from './constants'\n\ntype Options = {\n url?: string\n code?: string\n disable?: boolean\n includeDecorators?: boolean\n reactElementToJSXStringOptions?: ReactElementToJSXStringOptions\n}\n\ntype Globals = {\n codeUrl?: string\n}\n\ntype UseGlobals = ReturnType<typeof useGlobals>\n\nexport const getOptions = ({\n url = 'http://localhost:9000',\n code = '',\n disable = false,\n includeDecorators = false,\n reactElementToJSXStringOptions = { sortProps: false },\n}: Options = {}): Required<Options> => ({\n url,\n code,\n disable,\n includeDecorators,\n reactElementToJSXStringOptions,\n})\n\nexport const getGlobals = (globals: UseGlobals[0]): Globals =>\n globals[PARAM_KEY]\n\nexport const setGlobals = (updateGlobals: UseGlobals[1], globals: Globals) =>\n updateGlobals({ [PARAM_KEY]: globals })\n","import { createUrl } from 'playroom'\nimport type { ReactElement } from 'react'\nimport reactElementToJSXString from 'react-element-to-jsx-string'\nimport type {\n Renderer,\n PartialStoryFn as StoryFunction,\n StoryContext,\n} from 'storybook/internal/types'\nimport { useGlobals } from 'storybook/preview-api'\n\nimport { PARAM_KEY } from './constants'\nimport { getGlobals, getOptions, setGlobals } from './utils'\n\nconst updateCodeUrl = (\n [globals, updateGlobals]: ReturnType<typeof useGlobals>,\n codeUrl: string | undefined,\n) =>\n getGlobals(globals).codeUrl !== codeUrl &&\n setGlobals(updateGlobals, { codeUrl })\n\nexport const withGlobals = (\n StoryFn: StoryFunction<Renderer>,\n context: StoryContext<Renderer>,\n) => {\n const globals = useGlobals()\n const { parameters, undecoratedStoryFn } = context\n const {\n url,\n code,\n disable,\n includeDecorators,\n reactElementToJSXStringOptions,\n } = getOptions(parameters[PARAM_KEY])\n\n const story = StoryFn() as ReactElement\n\n if (disable) {\n updateCodeUrl(globals, undefined)\n return story\n }\n\n const storyCode = includeDecorators\n ? story\n : (undecoratedStoryFn(context) as ReactElement)\n const jsxString =\n code || reactElementToJSXString(storyCode, reactElementToJSXStringOptions)\n const codeUrl = url && createUrl({ baseUrl: url, code: jsxString })\n\n updateCodeUrl(globals, codeUrl)\n return story\n}\n","import type { Renderer, ProjectAnnotations } from 'storybook/internal/types'\n\nimport { PARAM_KEY } from './constants'\nimport { withGlobals } from './withGlobals'\n\nconst preview: ProjectAnnotations<Renderer> = {\n decorators: [withGlobals],\n initialGlobals: {\n [PARAM_KEY]: false,\n },\n}\n\nexport default preview\n"]}
|