@dxos/storybook-utils 0.8.4-main.b97322e → 0.8.4-main.bc674ce
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/lib/browser/index.mjs +29 -157
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +29 -157
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/ThemeEditor.d.ts +1 -1
- package/dist/types/src/components/ThemeEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/decorators/index.d.ts +1 -1
- package/dist/types/src/decorators/index.d.ts.map +1 -1
- package/dist/types/src/decorators/withLayout.d.ts +1 -19
- package/dist/types/src/decorators/withLayout.d.ts.map +1 -1
- package/dist/types/src/decorators/withRegistry.d.ts +6 -0
- package/dist/types/src/decorators/withRegistry.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/stories/test/Test.stories.d.ts +3 -4
- package/dist/types/src/stories/test/Test.stories.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +22 -18
- package/src/components/index.ts +0 -2
- package/src/decorators/index.ts +1 -1
- package/src/decorators/withLayout.tsx +15 -77
- package/src/decorators/withRegistry.tsx +23 -0
- package/src/decorators/withThemeEditor.tsx +2 -2
- package/src/index.ts +0 -6
- package/src/stories/test/Test.stories.tsx +6 -7
- package/src/stories/test/Test.test.tsx +2 -12
- package/src/stories/test/Test.tsx +1 -1
- package/src/stories/test/{index.mdx → index.mdx__} +3 -0
- package/src/util.tsx +5 -2
- package/dist/types/src/components/CardContainers/ExtrinsicCardContainer.d.ts +0 -12
- package/dist/types/src/components/CardContainers/ExtrinsicCardContainer.d.ts.map +0 -1
- package/dist/types/src/components/CardContainers/IntrinsicCardContainer.d.ts +0 -9
- package/dist/types/src/components/CardContainers/IntrinsicCardContainer.d.ts.map +0 -1
- package/dist/types/src/components/CardContainers/PopoverCardContainer.d.ts +0 -5
- package/dist/types/src/components/CardContainers/PopoverCardContainer.d.ts.map +0 -1
- package/dist/types/src/components/CardContainers/index.d.ts +0 -4
- package/dist/types/src/components/CardContainers/index.d.ts.map +0 -1
- package/dist/types/src/decorators/withTheme.d.ts +0 -6
- package/dist/types/src/decorators/withTheme.d.ts.map +0 -1
- package/src/components/CardContainers/ExtrinsicCardContainer.tsx +0 -72
- package/src/components/CardContainers/IntrinsicCardContainer.tsx +0 -48
- package/src/components/CardContainers/PopoverCardContainer.tsx +0 -24
- package/src/components/CardContainers/index.ts +0 -7
- package/src/decorators/withTheme.tsx +0 -30
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// src/index.ts
|
|
2
|
-
import { registerSignalsRuntime } from "@dxos/echo-signals/react";
|
|
3
|
-
|
|
4
1
|
// src/components/ThemeEditor.tsx
|
|
5
2
|
import React, { memo } from "react";
|
|
6
3
|
import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
|
|
@@ -13,178 +10,53 @@ var DxThemeEditor = createComponent({
|
|
|
13
10
|
});
|
|
14
11
|
var ThemeEditor = /* @__PURE__ */ memo(DxThemeEditor);
|
|
15
12
|
|
|
16
|
-
// src/components/CardContainers/ExtrinsicCardContainer.tsx
|
|
17
|
-
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
18
|
-
import React2 from "react";
|
|
19
|
-
import { ResizeHandle, resizeAttributes, sizeStyle } from "@dxos/react-ui-dnd";
|
|
20
|
-
var DEFAULT_INLINE_SIZE = 24;
|
|
21
|
-
var MIN_INLINE_SIZE = 8;
|
|
22
|
-
var DEFAULT_BLOCK_SIZE = 24;
|
|
23
|
-
var MIN_BLOCK_SIZE = 8;
|
|
24
|
-
var ExtrinsicCardContainer = ({ children, defaultInlineSize, inlineSize: propInlineSize, defaultBlockSize, blockSize: propBlockSize, onInlineSizeChange, onBlockSizeChange }) => {
|
|
25
|
-
const [inlineSize = DEFAULT_INLINE_SIZE, setInlineSize] = useControllableState({
|
|
26
|
-
prop: propInlineSize,
|
|
27
|
-
defaultProp: defaultInlineSize,
|
|
28
|
-
onChange: onInlineSizeChange
|
|
29
|
-
});
|
|
30
|
-
const [blockSize = DEFAULT_BLOCK_SIZE, setBlockSize] = useControllableState({
|
|
31
|
-
prop: propBlockSize,
|
|
32
|
-
defaultProp: defaultBlockSize,
|
|
33
|
-
onChange: onBlockSizeChange
|
|
34
|
-
});
|
|
35
|
-
return /* @__PURE__ */ React2.createElement("div", {
|
|
36
|
-
className: "grid relative border border-dashed border-subduedSeparator p-4 rounded-lg overflow-hidden contain-layout",
|
|
37
|
-
style: {
|
|
38
|
-
...sizeStyle(inlineSize, "horizontal"),
|
|
39
|
-
...sizeStyle(blockSize, "vertical")
|
|
40
|
-
},
|
|
41
|
-
...resizeAttributes
|
|
42
|
-
}, children, /* @__PURE__ */ React2.createElement(ResizeHandle, {
|
|
43
|
-
side: "inline-end",
|
|
44
|
-
fallbackSize: DEFAULT_INLINE_SIZE,
|
|
45
|
-
minSize: MIN_INLINE_SIZE,
|
|
46
|
-
size: inlineSize,
|
|
47
|
-
onSizeChange: setInlineSize
|
|
48
|
-
}), /* @__PURE__ */ React2.createElement(ResizeHandle, {
|
|
49
|
-
side: "block-end",
|
|
50
|
-
fallbackSize: DEFAULT_BLOCK_SIZE,
|
|
51
|
-
minSize: MIN_BLOCK_SIZE,
|
|
52
|
-
size: blockSize,
|
|
53
|
-
onSizeChange: setBlockSize
|
|
54
|
-
}));
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
// src/components/CardContainers/IntrinsicCardContainer.tsx
|
|
58
|
-
import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
|
|
59
|
-
import React3 from "react";
|
|
60
|
-
import { ResizeHandle as ResizeHandle2, resizeAttributes as resizeAttributes2, sizeStyle as sizeStyle2 } from "@dxos/react-ui-dnd";
|
|
61
|
-
var DEFAULT_SIZE = 24;
|
|
62
|
-
var MIN_SIZE = 8;
|
|
63
|
-
var IntrinsicCardContainer = ({ children, defaultSize, size: propSize, onSizeChange }) => {
|
|
64
|
-
const [size = DEFAULT_SIZE, setSize] = useControllableState2({
|
|
65
|
-
prop: propSize,
|
|
66
|
-
defaultProp: defaultSize,
|
|
67
|
-
onChange: onSizeChange
|
|
68
|
-
});
|
|
69
|
-
return /* @__PURE__ */ React3.createElement("div", {
|
|
70
|
-
className: "relative border border-dashed border-subduedSeparator p-4 rounded-lg",
|
|
71
|
-
style: sizeStyle2(size, "horizontal"),
|
|
72
|
-
...resizeAttributes2
|
|
73
|
-
}, children, /* @__PURE__ */ React3.createElement(ResizeHandle2, {
|
|
74
|
-
side: "inline-end",
|
|
75
|
-
fallbackSize: DEFAULT_SIZE,
|
|
76
|
-
minSize: MIN_SIZE,
|
|
77
|
-
size,
|
|
78
|
-
onSizeChange: setSize
|
|
79
|
-
}));
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
// src/components/CardContainers/PopoverCardContainer.tsx
|
|
83
|
-
import React4 from "react";
|
|
84
|
-
import { Icon, Popover } from "@dxos/react-ui";
|
|
85
|
-
var PopoverCardContainer = ({ children, icon = "ph--placeholder--regular" }) => {
|
|
86
|
-
return /* @__PURE__ */ React4.createElement(Popover.Root, {
|
|
87
|
-
open: true
|
|
88
|
-
}, /* @__PURE__ */ React4.createElement(Popover.Content, {
|
|
89
|
-
onOpenAutoFocus: (event) => event.preventDefault()
|
|
90
|
-
}, /* @__PURE__ */ React4.createElement(Popover.Viewport, null, children), /* @__PURE__ */ React4.createElement(Popover.Arrow, null)), /* @__PURE__ */ React4.createElement(Popover.Trigger, null, /* @__PURE__ */ React4.createElement(Icon, {
|
|
91
|
-
icon,
|
|
92
|
-
size: 5
|
|
93
|
-
})));
|
|
94
|
-
};
|
|
95
|
-
|
|
96
13
|
// src/decorators/withLayout.tsx
|
|
97
|
-
import
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
density: options.density
|
|
108
|
-
}, children) : children;
|
|
14
|
+
import React2 from "react";
|
|
15
|
+
var withLayout = (Story, context) => {
|
|
16
|
+
switch (context.parameters.layout) {
|
|
17
|
+
case "fullscreen":
|
|
18
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
19
|
+
role: "none",
|
|
20
|
+
className: "fixed inset-0 flex flex-col overflow-hidden bg-baseSurface"
|
|
21
|
+
}, /* @__PURE__ */ React2.createElement(Story, null));
|
|
22
|
+
default:
|
|
23
|
+
return /* @__PURE__ */ React2.createElement(Story, null);
|
|
109
24
|
}
|
|
110
|
-
];
|
|
111
|
-
var withLayout = ({ classNames, fullscreen, Container = fullscreen ? FullscreenContainer : DefaultContainer, ...providedOptions } = {}) => {
|
|
112
|
-
return (Story, _context) => {
|
|
113
|
-
const children = /* @__PURE__ */ React5.createElement(Container, {
|
|
114
|
-
classNames,
|
|
115
|
-
fullscreen
|
|
116
|
-
}, /* @__PURE__ */ React5.createElement(Story, null));
|
|
117
|
-
const options = defaultsDeep({}, providedOptions, defaultOptions);
|
|
118
|
-
return providers.reduceRight((acc, provider) => provider(acc, options), children);
|
|
119
|
-
};
|
|
120
|
-
};
|
|
121
|
-
var layoutCentered = "bg-deckSurface justify-center overflow-y-auto";
|
|
122
|
-
var DefaultContainer = ({ children, classNames }) => {
|
|
123
|
-
return /* @__PURE__ */ React5.createElement("div", {
|
|
124
|
-
role: "none",
|
|
125
|
-
className: mx(classNames)
|
|
126
|
-
}, children);
|
|
127
|
-
};
|
|
128
|
-
var FullscreenContainer = ({ children, classNames }) => {
|
|
129
|
-
return /* @__PURE__ */ React5.createElement("div", {
|
|
130
|
-
role: "none",
|
|
131
|
-
className: mx("fixed inset-0 flex overflow-hidden", classNames)
|
|
132
|
-
}, children);
|
|
133
|
-
};
|
|
134
|
-
var ColumnContainer = ({ children, classNames = "w-[30rem]", ...props }) => {
|
|
135
|
-
return /* @__PURE__ */ React5.createElement(FullscreenContainer, {
|
|
136
|
-
classNames: "justify-center bg-modalSurface",
|
|
137
|
-
...props
|
|
138
|
-
}, /* @__PURE__ */ React5.createElement("div", {
|
|
139
|
-
role: "none",
|
|
140
|
-
className: mx("flex flex-col h-full overflow-y-auto bg-baseSurface", classNames)
|
|
141
|
-
}, children));
|
|
142
25
|
};
|
|
143
26
|
|
|
144
|
-
// src/decorators/
|
|
145
|
-
import
|
|
146
|
-
import {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const { globals: { theme }, parameters: { translations } } = context;
|
|
27
|
+
// src/decorators/withRegistry.tsx
|
|
28
|
+
import { Registry, RegistryContext } from "@effect-atom/atom-react";
|
|
29
|
+
import React3, { memo as memo2, useMemo } from "react";
|
|
30
|
+
var withRegistry = (Story) => {
|
|
31
|
+
const registry = useMemo(() => Registry.make(), []);
|
|
150
32
|
const MemoizedStory = /* @__PURE__ */ memo2(Story);
|
|
151
|
-
return /* @__PURE__ */
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
resourceExtensions: translations,
|
|
155
|
-
noCache: true
|
|
156
|
-
}, /* @__PURE__ */ React6.createElement(Tooltip.Provider, null, /* @__PURE__ */ React6.createElement(MemoizedStory, null)));
|
|
33
|
+
return /* @__PURE__ */ React3.createElement(RegistryContext.Provider, {
|
|
34
|
+
value: registry
|
|
35
|
+
}, /* @__PURE__ */ React3.createElement(MemoizedStory, null));
|
|
157
36
|
};
|
|
158
37
|
|
|
159
38
|
// src/decorators/withThemeEditor.tsx
|
|
160
|
-
import
|
|
39
|
+
import React4, { memo as memo3 } from "react";
|
|
161
40
|
var withThemeEditor = (Story, context) => {
|
|
162
41
|
const MemoizedStory = /* @__PURE__ */ memo3(Story);
|
|
163
|
-
return /* @__PURE__ */
|
|
42
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(MemoizedStory, null), /* @__PURE__ */ React4.createElement("div", {
|
|
164
43
|
className: "absolute top-4 bottom-4 right-4 z-10"
|
|
165
|
-
}, /* @__PURE__ */
|
|
166
|
-
className: "
|
|
167
|
-
}, /* @__PURE__ */
|
|
44
|
+
}, /* @__PURE__ */ React4.createElement("div", {
|
|
45
|
+
className: "bs-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded"
|
|
46
|
+
}, /* @__PURE__ */ React4.createElement(ThemeEditor, null))));
|
|
168
47
|
};
|
|
169
48
|
|
|
170
49
|
// src/util.tsx
|
|
171
|
-
import
|
|
172
|
-
var render = (
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
50
|
+
import React5 from "react";
|
|
51
|
+
var render = (Story) => (args) => {
|
|
52
|
+
const result = /* @__PURE__ */ React5.createElement(Story, args);
|
|
53
|
+
return result ?? /* @__PURE__ */ React5.createElement("div", null);
|
|
54
|
+
};
|
|
176
55
|
export {
|
|
177
|
-
ColumnContainer,
|
|
178
|
-
DefaultContainer,
|
|
179
|
-
ExtrinsicCardContainer,
|
|
180
|
-
FullscreenContainer,
|
|
181
|
-
IntrinsicCardContainer,
|
|
182
|
-
PopoverCardContainer,
|
|
183
56
|
ThemeEditor,
|
|
184
|
-
layoutCentered,
|
|
185
57
|
render,
|
|
186
58
|
withLayout,
|
|
187
|
-
|
|
59
|
+
withRegistry,
|
|
188
60
|
withThemeEditor
|
|
189
61
|
};
|
|
190
62
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright
|
|
5
|
-
"mappings": ";AAIA,
|
|
6
|
-
"names": ["
|
|
3
|
+
"sources": ["../../../src/components/ThemeEditor.tsx", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/withRegistry.tsx", "../../../src/decorators/withThemeEditor.tsx", "../../../src/util.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { memo } from 'react';\n\nimport { DxThemeEditor as NaturalDxThemeEditor } from '@dxos/lit-theme-editor';\nimport { createComponent } from '@dxos/lit-ui/react';\n\nimport '@dxos/lit-theme-editor/dx-theme-editor.pcss';\n\nconst DxThemeEditor = createComponent({\n tagName: 'dx-theme-editor',\n elementClass: NaturalDxThemeEditor,\n react: React,\n});\n\nexport const ThemeEditor = memo(DxThemeEditor);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React from 'react';\n\nexport const withLayout: Decorator = (Story, context) => {\n switch (context.parameters.layout) {\n case 'fullscreen':\n return (\n <div role='none' className='fixed inset-0 flex flex-col overflow-hidden bg-baseSurface'>\n <Story />\n </div>\n );\n\n default:\n return <Story />;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { type Decorator } from '@storybook/react';\nimport React, { memo, useMemo } from 'react';\n\n/**\n * Adds Effect Atom registry context for storybook.\n */\nexport const withRegistry: Decorator = (Story) => {\n const registry = useMemo(() => Registry.make(), []);\n\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <RegistryContext.Provider value={registry}>\n <MemoizedStory />\n </RegistryContext.Provider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { memo } from 'react';\n\nimport { ThemeEditor } from '../components/ThemeEditor';\n\n/**\n * Show theme editor.\n */\n// TODO(burdon): Ideally move to storybook-addon-theme, but this has a build issue since the addon would depend on the vite theme plugin.\nexport const withThemeEditor: Decorator = (Story, context) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <>\n <MemoizedStory />\n <div className='absolute top-4 bottom-4 right-4 z-10'>\n <div className='bs-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded'>\n <ThemeEditor />\n </div>\n </div>\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\n/**\n * Story renderer wrapper.\n */\nexport const render =\n <T extends Record<string, any>>(Story: FC<T>) =>\n (args: unknown) => {\n const result = <Story {...(args as T)} />;\n return result ?? <div />;\n };\n"],
|
|
5
|
+
"mappings": ";AAIA,OAAOA,SAASC,YAAY;AAE5B,SAASC,iBAAiBC,4BAA4B;AACtD,SAASC,uBAAuB;AAEhC,OAAO;AAEP,IAAMC,gBAAgBC,gBAAgB;EACpCC,SAAS;EACTC,cAAcC;EACdC,OAAOC;AACT,CAAA;AAEO,IAAMC,cAAcC,qBAAKR,aAAAA;;;ACZhC,OAAOS,YAAW;AAEX,IAAMC,aAAwB,CAACC,OAAOC,YAAAA;AAC3C,UAAQA,QAAQC,WAAWC,QAAM;IAC/B,KAAK;AACH,aACE,gBAAAC,OAAA,cAACC,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,gBAAAH,OAAA,cAACJ,OAAAA,IAAAA,CAAAA;IAIP;AACE,aAAO,gBAAAI,OAAA,cAACJ,OAAAA,IAAAA;EACZ;AACF;;;ACfA,SAASQ,UAAUC,uBAAuB;AAE1C,OAAOC,UAASC,QAAAA,OAAMC,eAAe;AAK9B,IAAMC,eAA0B,CAACC,UAAAA;AACtC,QAAMC,WAAWC,QAAQ,MAAMC,SAASC,KAAI,GAAI,CAAA,CAAE;AAGlD,QAAMC,gBAAgBC,gBAAAA,MAAKN,KAAAA;AAE3B,SACE,gBAAAO,OAAA,cAACC,gBAAgBC,UAAQ;IAACC,OAAOT;KAC/B,gBAAAM,OAAA,cAACF,eAAAA,IAAAA,CAAAA;AAGP;;;ACjBA,OAAOM,UAASC,QAAAA,aAAY;AAQrB,IAAMC,kBAA6B,CAACC,OAAOC,YAAAA;AAEhD,QAAMC,gBAAgBC,gBAAAA,MAAKH,KAAAA;AAE3B,SACE,gBAAAI,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACF,eAAAA,IAAAA,GACD,gBAAAE,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACG,aAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAKX;;;ACvBA,OAAOC,YAAwB;AAKxB,IAAMC,SACX,CAAgCC,UAChC,CAACC,SAAAA;AACC,QAAMC,SAAS,gBAAAC,OAAA,cAACH,OAAWC,IAAAA;AAC3B,SAAOC,UAAU,gBAAAC,OAAA,cAACC,OAAAA,IAAAA;AACpB;",
|
|
6
|
+
"names": ["React", "memo", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "ThemeEditor", "memo", "React", "withLayout", "Story", "context", "parameters", "layout", "React", "div", "role", "className", "Registry", "RegistryContext", "React", "memo", "useMemo", "withRegistry", "Story", "registry", "useMemo", "Registry", "make", "MemoizedStory", "memo", "React", "RegistryContext", "Provider", "value", "React", "memo", "withThemeEditor", "Story", "context", "MemoizedStory", "memo", "React", "div", "className", "ThemeEditor", "React", "render", "Story", "args", "result", "React", "div"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/components/ThemeEditor.tsx":{"bytes":1828,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true}],"format":"esm"},"src/components/
|
|
1
|
+
{"inputs":{"src/components/ThemeEditor.tsx":{"bytes":1828,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true}],"format":"esm"},"src/components/index.ts":{"bytes":480,"imports":[{"path":"src/components/ThemeEditor.tsx","kind":"import-statement","original":"./ThemeEditor"}],"format":"esm"},"src/decorators/withLayout.tsx":{"bytes":1803,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withRegistry.tsx":{"bytes":2217,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/decorators/withThemeEditor.tsx":{"bytes":2746,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/ThemeEditor.tsx","kind":"import-statement","original":"../components/ThemeEditor"}],"format":"esm"},"src/decorators/index.ts":{"bytes":682,"imports":[{"path":"src/decorators/withLayout.tsx","kind":"import-statement","original":"./withLayout"},{"path":"src/decorators/withRegistry.tsx","kind":"import-statement","original":"./withRegistry"},{"path":"src/decorators/withThemeEditor.tsx","kind":"import-statement","original":"./withThemeEditor"}],"format":"esm"},"src/util.tsx":{"bytes":1228,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":634,"imports":[{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/decorators/index.ts","kind":"import-statement","original":"./decorators"},{"path":"src/util.tsx","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4806},"dist/lib/browser/index.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor","kind":"import-statement","external":true},{"path":"@dxos/lit-ui/react","kind":"import-statement","external":true},{"path":"@dxos/lit-theme-editor/dx-theme-editor.pcss","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ThemeEditor","render","withLayout","withRegistry","withThemeEditor"],"entryPoint":"src/index.ts","inputs":{"src/components/ThemeEditor.tsx":{"bytesInOutput":405},"src/components/index.ts":{"bytesInOutput":0},"src/index.ts":{"bytesInOutput":0},"src/decorators/withLayout.tsx":{"bytesInOutput":435},"src/decorators/index.ts":{"bytesInOutput":0},"src/decorators/withRegistry.tsx":{"bytesInOutput":428},"src/decorators/withThemeEditor.tsx":{"bytesInOutput":589},"src/util.tsx":{"bytesInOutput":205}},"bytes":2342}}}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
|
|
3
|
-
// src/index.ts
|
|
4
|
-
import { registerSignalsRuntime } from "@dxos/echo-signals/react";
|
|
5
|
-
|
|
6
3
|
// src/components/ThemeEditor.tsx
|
|
7
4
|
import React, { memo } from "react";
|
|
8
5
|
import { DxThemeEditor as NaturalDxThemeEditor } from "@dxos/lit-theme-editor";
|
|
@@ -15,178 +12,53 @@ var DxThemeEditor = createComponent({
|
|
|
15
12
|
});
|
|
16
13
|
var ThemeEditor = /* @__PURE__ */ memo(DxThemeEditor);
|
|
17
14
|
|
|
18
|
-
// src/components/CardContainers/ExtrinsicCardContainer.tsx
|
|
19
|
-
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
20
|
-
import React2 from "react";
|
|
21
|
-
import { ResizeHandle, resizeAttributes, sizeStyle } from "@dxos/react-ui-dnd";
|
|
22
|
-
var DEFAULT_INLINE_SIZE = 24;
|
|
23
|
-
var MIN_INLINE_SIZE = 8;
|
|
24
|
-
var DEFAULT_BLOCK_SIZE = 24;
|
|
25
|
-
var MIN_BLOCK_SIZE = 8;
|
|
26
|
-
var ExtrinsicCardContainer = ({ children, defaultInlineSize, inlineSize: propInlineSize, defaultBlockSize, blockSize: propBlockSize, onInlineSizeChange, onBlockSizeChange }) => {
|
|
27
|
-
const [inlineSize = DEFAULT_INLINE_SIZE, setInlineSize] = useControllableState({
|
|
28
|
-
prop: propInlineSize,
|
|
29
|
-
defaultProp: defaultInlineSize,
|
|
30
|
-
onChange: onInlineSizeChange
|
|
31
|
-
});
|
|
32
|
-
const [blockSize = DEFAULT_BLOCK_SIZE, setBlockSize] = useControllableState({
|
|
33
|
-
prop: propBlockSize,
|
|
34
|
-
defaultProp: defaultBlockSize,
|
|
35
|
-
onChange: onBlockSizeChange
|
|
36
|
-
});
|
|
37
|
-
return /* @__PURE__ */ React2.createElement("div", {
|
|
38
|
-
className: "grid relative border border-dashed border-subduedSeparator p-4 rounded-lg overflow-hidden contain-layout",
|
|
39
|
-
style: {
|
|
40
|
-
...sizeStyle(inlineSize, "horizontal"),
|
|
41
|
-
...sizeStyle(blockSize, "vertical")
|
|
42
|
-
},
|
|
43
|
-
...resizeAttributes
|
|
44
|
-
}, children, /* @__PURE__ */ React2.createElement(ResizeHandle, {
|
|
45
|
-
side: "inline-end",
|
|
46
|
-
fallbackSize: DEFAULT_INLINE_SIZE,
|
|
47
|
-
minSize: MIN_INLINE_SIZE,
|
|
48
|
-
size: inlineSize,
|
|
49
|
-
onSizeChange: setInlineSize
|
|
50
|
-
}), /* @__PURE__ */ React2.createElement(ResizeHandle, {
|
|
51
|
-
side: "block-end",
|
|
52
|
-
fallbackSize: DEFAULT_BLOCK_SIZE,
|
|
53
|
-
minSize: MIN_BLOCK_SIZE,
|
|
54
|
-
size: blockSize,
|
|
55
|
-
onSizeChange: setBlockSize
|
|
56
|
-
}));
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// src/components/CardContainers/IntrinsicCardContainer.tsx
|
|
60
|
-
import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
|
|
61
|
-
import React3 from "react";
|
|
62
|
-
import { ResizeHandle as ResizeHandle2, resizeAttributes as resizeAttributes2, sizeStyle as sizeStyle2 } from "@dxos/react-ui-dnd";
|
|
63
|
-
var DEFAULT_SIZE = 24;
|
|
64
|
-
var MIN_SIZE = 8;
|
|
65
|
-
var IntrinsicCardContainer = ({ children, defaultSize, size: propSize, onSizeChange }) => {
|
|
66
|
-
const [size = DEFAULT_SIZE, setSize] = useControllableState2({
|
|
67
|
-
prop: propSize,
|
|
68
|
-
defaultProp: defaultSize,
|
|
69
|
-
onChange: onSizeChange
|
|
70
|
-
});
|
|
71
|
-
return /* @__PURE__ */ React3.createElement("div", {
|
|
72
|
-
className: "relative border border-dashed border-subduedSeparator p-4 rounded-lg",
|
|
73
|
-
style: sizeStyle2(size, "horizontal"),
|
|
74
|
-
...resizeAttributes2
|
|
75
|
-
}, children, /* @__PURE__ */ React3.createElement(ResizeHandle2, {
|
|
76
|
-
side: "inline-end",
|
|
77
|
-
fallbackSize: DEFAULT_SIZE,
|
|
78
|
-
minSize: MIN_SIZE,
|
|
79
|
-
size,
|
|
80
|
-
onSizeChange: setSize
|
|
81
|
-
}));
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// src/components/CardContainers/PopoverCardContainer.tsx
|
|
85
|
-
import React4 from "react";
|
|
86
|
-
import { Icon, Popover } from "@dxos/react-ui";
|
|
87
|
-
var PopoverCardContainer = ({ children, icon = "ph--placeholder--regular" }) => {
|
|
88
|
-
return /* @__PURE__ */ React4.createElement(Popover.Root, {
|
|
89
|
-
open: true
|
|
90
|
-
}, /* @__PURE__ */ React4.createElement(Popover.Content, {
|
|
91
|
-
onOpenAutoFocus: (event) => event.preventDefault()
|
|
92
|
-
}, /* @__PURE__ */ React4.createElement(Popover.Viewport, null, children), /* @__PURE__ */ React4.createElement(Popover.Arrow, null)), /* @__PURE__ */ React4.createElement(Popover.Trigger, null, /* @__PURE__ */ React4.createElement(Icon, {
|
|
93
|
-
icon,
|
|
94
|
-
size: 5
|
|
95
|
-
})));
|
|
96
|
-
};
|
|
97
|
-
|
|
98
15
|
// src/decorators/withLayout.tsx
|
|
99
|
-
import
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
density: options.density
|
|
110
|
-
}, children) : children;
|
|
16
|
+
import React2 from "react";
|
|
17
|
+
var withLayout = (Story, context) => {
|
|
18
|
+
switch (context.parameters.layout) {
|
|
19
|
+
case "fullscreen":
|
|
20
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
21
|
+
role: "none",
|
|
22
|
+
className: "fixed inset-0 flex flex-col overflow-hidden bg-baseSurface"
|
|
23
|
+
}, /* @__PURE__ */ React2.createElement(Story, null));
|
|
24
|
+
default:
|
|
25
|
+
return /* @__PURE__ */ React2.createElement(Story, null);
|
|
111
26
|
}
|
|
112
|
-
];
|
|
113
|
-
var withLayout = ({ classNames, fullscreen, Container = fullscreen ? FullscreenContainer : DefaultContainer, ...providedOptions } = {}) => {
|
|
114
|
-
return (Story, _context) => {
|
|
115
|
-
const children = /* @__PURE__ */ React5.createElement(Container, {
|
|
116
|
-
classNames,
|
|
117
|
-
fullscreen
|
|
118
|
-
}, /* @__PURE__ */ React5.createElement(Story, null));
|
|
119
|
-
const options = defaultsDeep({}, providedOptions, defaultOptions);
|
|
120
|
-
return providers.reduceRight((acc, provider) => provider(acc, options), children);
|
|
121
|
-
};
|
|
122
|
-
};
|
|
123
|
-
var layoutCentered = "bg-deckSurface justify-center overflow-y-auto";
|
|
124
|
-
var DefaultContainer = ({ children, classNames }) => {
|
|
125
|
-
return /* @__PURE__ */ React5.createElement("div", {
|
|
126
|
-
role: "none",
|
|
127
|
-
className: mx(classNames)
|
|
128
|
-
}, children);
|
|
129
|
-
};
|
|
130
|
-
var FullscreenContainer = ({ children, classNames }) => {
|
|
131
|
-
return /* @__PURE__ */ React5.createElement("div", {
|
|
132
|
-
role: "none",
|
|
133
|
-
className: mx("fixed inset-0 flex overflow-hidden", classNames)
|
|
134
|
-
}, children);
|
|
135
|
-
};
|
|
136
|
-
var ColumnContainer = ({ children, classNames = "w-[30rem]", ...props }) => {
|
|
137
|
-
return /* @__PURE__ */ React5.createElement(FullscreenContainer, {
|
|
138
|
-
classNames: "justify-center bg-modalSurface",
|
|
139
|
-
...props
|
|
140
|
-
}, /* @__PURE__ */ React5.createElement("div", {
|
|
141
|
-
role: "none",
|
|
142
|
-
className: mx("flex flex-col h-full overflow-y-auto bg-baseSurface", classNames)
|
|
143
|
-
}, children));
|
|
144
27
|
};
|
|
145
28
|
|
|
146
|
-
// src/decorators/
|
|
147
|
-
import
|
|
148
|
-
import {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const { globals: { theme }, parameters: { translations } } = context;
|
|
29
|
+
// src/decorators/withRegistry.tsx
|
|
30
|
+
import { Registry, RegistryContext } from "@effect-atom/atom-react";
|
|
31
|
+
import React3, { memo as memo2, useMemo } from "react";
|
|
32
|
+
var withRegistry = (Story) => {
|
|
33
|
+
const registry = useMemo(() => Registry.make(), []);
|
|
152
34
|
const MemoizedStory = /* @__PURE__ */ memo2(Story);
|
|
153
|
-
return /* @__PURE__ */
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
resourceExtensions: translations,
|
|
157
|
-
noCache: true
|
|
158
|
-
}, /* @__PURE__ */ React6.createElement(Tooltip.Provider, null, /* @__PURE__ */ React6.createElement(MemoizedStory, null)));
|
|
35
|
+
return /* @__PURE__ */ React3.createElement(RegistryContext.Provider, {
|
|
36
|
+
value: registry
|
|
37
|
+
}, /* @__PURE__ */ React3.createElement(MemoizedStory, null));
|
|
159
38
|
};
|
|
160
39
|
|
|
161
40
|
// src/decorators/withThemeEditor.tsx
|
|
162
|
-
import
|
|
41
|
+
import React4, { memo as memo3 } from "react";
|
|
163
42
|
var withThemeEditor = (Story, context) => {
|
|
164
43
|
const MemoizedStory = /* @__PURE__ */ memo3(Story);
|
|
165
|
-
return /* @__PURE__ */
|
|
44
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(MemoizedStory, null), /* @__PURE__ */ React4.createElement("div", {
|
|
166
45
|
className: "absolute top-4 bottom-4 right-4 z-10"
|
|
167
|
-
}, /* @__PURE__ */
|
|
168
|
-
className: "
|
|
169
|
-
}, /* @__PURE__ */
|
|
46
|
+
}, /* @__PURE__ */ React4.createElement("div", {
|
|
47
|
+
className: "bs-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded"
|
|
48
|
+
}, /* @__PURE__ */ React4.createElement(ThemeEditor, null))));
|
|
170
49
|
};
|
|
171
50
|
|
|
172
51
|
// src/util.tsx
|
|
173
|
-
import
|
|
174
|
-
var render = (
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
52
|
+
import React5 from "react";
|
|
53
|
+
var render = (Story) => (args) => {
|
|
54
|
+
const result = /* @__PURE__ */ React5.createElement(Story, args);
|
|
55
|
+
return result ?? /* @__PURE__ */ React5.createElement("div", null);
|
|
56
|
+
};
|
|
178
57
|
export {
|
|
179
|
-
ColumnContainer,
|
|
180
|
-
DefaultContainer,
|
|
181
|
-
ExtrinsicCardContainer,
|
|
182
|
-
FullscreenContainer,
|
|
183
|
-
IntrinsicCardContainer,
|
|
184
|
-
PopoverCardContainer,
|
|
185
58
|
ThemeEditor,
|
|
186
|
-
layoutCentered,
|
|
187
59
|
render,
|
|
188
60
|
withLayout,
|
|
189
|
-
|
|
61
|
+
withRegistry,
|
|
190
62
|
withThemeEditor
|
|
191
63
|
};
|
|
192
64
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright
|
|
5
|
-
"mappings": ";;;AAIA,
|
|
6
|
-
"names": ["
|
|
3
|
+
"sources": ["../../../src/components/ThemeEditor.tsx", "../../../src/decorators/withLayout.tsx", "../../../src/decorators/withRegistry.tsx", "../../../src/decorators/withThemeEditor.tsx", "../../../src/util.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { memo } from 'react';\n\nimport { DxThemeEditor as NaturalDxThemeEditor } from '@dxos/lit-theme-editor';\nimport { createComponent } from '@dxos/lit-ui/react';\n\nimport '@dxos/lit-theme-editor/dx-theme-editor.pcss';\n\nconst DxThemeEditor = createComponent({\n tagName: 'dx-theme-editor',\n elementClass: NaturalDxThemeEditor,\n react: React,\n});\n\nexport const ThemeEditor = memo(DxThemeEditor);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React from 'react';\n\nexport const withLayout: Decorator = (Story, context) => {\n switch (context.parameters.layout) {\n case 'fullscreen':\n return (\n <div role='none' className='fixed inset-0 flex flex-col overflow-hidden bg-baseSurface'>\n <Story />\n </div>\n );\n\n default:\n return <Story />;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { type Decorator } from '@storybook/react';\nimport React, { memo, useMemo } from 'react';\n\n/**\n * Adds Effect Atom registry context for storybook.\n */\nexport const withRegistry: Decorator = (Story) => {\n const registry = useMemo(() => Registry.make(), []);\n\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <RegistryContext.Provider value={registry}>\n <MemoizedStory />\n </RegistryContext.Provider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { memo } from 'react';\n\nimport { ThemeEditor } from '../components/ThemeEditor';\n\n/**\n * Show theme editor.\n */\n// TODO(burdon): Ideally move to storybook-addon-theme, but this has a build issue since the addon would depend on the vite theme plugin.\nexport const withThemeEditor: Decorator = (Story, context) => {\n // Prevent re-rendering of the story.\n const MemoizedStory = memo(Story);\n\n return (\n <>\n <MemoizedStory />\n <div className='absolute top-4 bottom-4 right-4 z-10'>\n <div className='bs-full is-[35rem] overflow-auto bg-baseSurface border border-separator rounded'>\n <ThemeEditor />\n </div>\n </div>\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\n/**\n * Story renderer wrapper.\n */\nexport const render =\n <T extends Record<string, any>>(Story: FC<T>) =>\n (args: unknown) => {\n const result = <Story {...(args as T)} />;\n return result ?? <div />;\n };\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,YAAY;AAE5B,SAASC,iBAAiBC,4BAA4B;AACtD,SAASC,uBAAuB;AAEhC,OAAO;AAEP,IAAMC,gBAAgBC,gBAAgB;EACpCC,SAAS;EACTC,cAAcC;EACdC,OAAOC;AACT,CAAA;AAEO,IAAMC,cAAcC,qBAAKR,aAAAA;;;ACZhC,OAAOS,YAAW;AAEX,IAAMC,aAAwB,CAACC,OAAOC,YAAAA;AAC3C,UAAQA,QAAQC,WAAWC,QAAM;IAC/B,KAAK;AACH,aACE,gBAAAC,OAAA,cAACC,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,gBAAAH,OAAA,cAACJ,OAAAA,IAAAA,CAAAA;IAIP;AACE,aAAO,gBAAAI,OAAA,cAACJ,OAAAA,IAAAA;EACZ;AACF;;;ACfA,SAASQ,UAAUC,uBAAuB;AAE1C,OAAOC,UAASC,QAAAA,OAAMC,eAAe;AAK9B,IAAMC,eAA0B,CAACC,UAAAA;AACtC,QAAMC,WAAWC,QAAQ,MAAMC,SAASC,KAAI,GAAI,CAAA,CAAE;AAGlD,QAAMC,gBAAgBC,gBAAAA,MAAKN,KAAAA;AAE3B,SACE,gBAAAO,OAAA,cAACC,gBAAgBC,UAAQ;IAACC,OAAOT;KAC/B,gBAAAM,OAAA,cAACF,eAAAA,IAAAA,CAAAA;AAGP;;;ACjBA,OAAOM,UAASC,QAAAA,aAAY;AAQrB,IAAMC,kBAA6B,CAACC,OAAOC,YAAAA;AAEhD,QAAMC,gBAAgBC,gBAAAA,MAAKH,KAAAA;AAE3B,SACE,gBAAAI,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACF,eAAAA,IAAAA,GACD,gBAAAE,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACG,aAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAKX;;;ACvBA,OAAOC,YAAwB;AAKxB,IAAMC,SACX,CAAgCC,UAChC,CAACC,SAAAA;AACC,QAAMC,SAAS,gBAAAC,OAAA,cAACH,OAAWC,IAAAA;AAC3B,SAAOC,UAAU,gBAAAC,OAAA,cAACC,OAAAA,IAAAA;AACpB;",
|
|
6
|
+
"names": ["React", "memo", "DxThemeEditor", "NaturalDxThemeEditor", "createComponent", "DxThemeEditor", "createComponent", "tagName", "elementClass", "NaturalDxThemeEditor", "react", "React", "ThemeEditor", "memo", "React", "withLayout", "Story", "context", "parameters", "layout", "React", "div", "role", "className", "Registry", "RegistryContext", "React", "memo", "useMemo", "withRegistry", "Story", "registry", "useMemo", "Registry", "make", "MemoizedStory", "memo", "React", "RegistryContext", "Provider", "value", "React", "memo", "withThemeEditor", "Story", "context", "MemoizedStory", "memo", "React", "div", "className", "ThemeEditor", "React", "render", "Story", "args", "result", "React", "div"]
|
|
7
7
|
}
|