@dxos/plugin-testing 0.8.4-main.bc674ce → 0.8.4-main.c85a9c8dae
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 +31 -28
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-B2DOYB7C.mjs → operation-resolver-FLU4ZARD.mjs} +10 -9
- package/dist/lib/browser/operation-resolver-FLU4ZARD.mjs.map +7 -0
- package/dist/lib/browser/{state-2M3RMJYA.mjs → state-MIKI67FF.mjs} +4 -3
- package/dist/lib/browser/state-MIKI67FF.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +31 -28
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-DJI7OPBP.mjs → operation-resolver-NWF6KBHP.mjs} +10 -9
- package/dist/lib/node-esm/operation-resolver-NWF6KBHP.mjs.map +7 -0
- package/dist/lib/node-esm/{state-UF2MWBFU.mjs → state-JQVVUKO2.mjs} +4 -3
- package/dist/lib/node-esm/state-JQVVUKO2.mjs.map +7 -0
- package/dist/types/src/StorybookPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/state/index.d.ts +1 -1
- package/dist/types/src/capabilities/state/state.d.ts +1 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
- package/dist/types/src/components/Layout.d.ts +1 -1
- package/dist/types/src/components/Layout.d.ts.map +1 -1
- package/dist/types/src/core.d.ts +2 -1
- package/dist/types/src/core.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -18
- package/src/StorybookPlugin.ts +13 -12
- package/src/capabilities/operation-resolver/operation-resolver.ts +9 -8
- package/src/capabilities/state/state.tsx +4 -6
- package/src/components/Layout.tsx +18 -14
- package/src/core.ts +2 -1
- package/dist/lib/browser/operation-resolver-B2DOYB7C.mjs.map +0 -7
- package/dist/lib/browser/state-2M3RMJYA.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-DJI7OPBP.mjs.map +0 -7
- package/dist/lib/node-esm/state-UF2MWBFU.mjs.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-testing",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.c85a9c8dae",
|
|
4
4
|
"description": "Plugin testing utils",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -25,33 +25,35 @@
|
|
|
25
25
|
"src"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@effect-atom/atom": "^0.
|
|
29
|
-
"@effect-atom/atom-react": "^0.
|
|
30
|
-
"@dxos/app-framework": "0.8.4-main.
|
|
31
|
-
"@dxos/operation": "0.8.4-main.
|
|
32
|
-
"@dxos/
|
|
33
|
-
"@dxos/plugin-
|
|
34
|
-
"@dxos/plugin-
|
|
35
|
-
"@dxos/plugin-
|
|
36
|
-
"@dxos/
|
|
37
|
-
"@dxos/
|
|
28
|
+
"@effect-atom/atom": "^0.5.1",
|
|
29
|
+
"@effect-atom/atom-react": "^0.5.0",
|
|
30
|
+
"@dxos/app-framework": "0.8.4-main.c85a9c8dae",
|
|
31
|
+
"@dxos/operation": "0.8.4-main.c85a9c8dae",
|
|
32
|
+
"@dxos/app-toolkit": "0.8.4-main.c85a9c8dae",
|
|
33
|
+
"@dxos/plugin-graph": "0.8.4-main.c85a9c8dae",
|
|
34
|
+
"@dxos/plugin-settings": "0.8.4-main.c85a9c8dae",
|
|
35
|
+
"@dxos/plugin-client": "0.8.4-main.c85a9c8dae",
|
|
36
|
+
"@dxos/plugin-theme": "0.8.4-main.c85a9c8dae",
|
|
37
|
+
"@dxos/plugin-attention": "0.8.4-main.c85a9c8dae",
|
|
38
|
+
"@dxos/react-ui-mosaic": "0.8.4-main.c85a9c8dae",
|
|
39
|
+
"@dxos/util": "0.8.4-main.c85a9c8dae"
|
|
38
40
|
},
|
|
39
41
|
"devDependencies": {
|
|
40
42
|
"@types/react": "~19.2.7",
|
|
41
43
|
"@types/react-dom": "~19.2.3",
|
|
42
|
-
"effect": "3.19.
|
|
44
|
+
"effect": "3.19.16",
|
|
43
45
|
"react": "~19.2.3",
|
|
44
46
|
"react-dom": "~19.2.3",
|
|
45
|
-
"vite": "7.1.
|
|
46
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
47
|
-
"@dxos/ui-theme": "0.8.4-main.
|
|
47
|
+
"vite": "^7.1.11",
|
|
48
|
+
"@dxos/react-ui": "0.8.4-main.c85a9c8dae",
|
|
49
|
+
"@dxos/ui-theme": "0.8.4-main.c85a9c8dae"
|
|
48
50
|
},
|
|
49
51
|
"peerDependencies": {
|
|
50
|
-
"effect": "3.19.
|
|
52
|
+
"effect": "3.19.16",
|
|
51
53
|
"react": "~19.2.3",
|
|
52
54
|
"react-dom": "~19.2.3",
|
|
53
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
54
|
-
"@dxos/ui-theme": "0.8.4-main.
|
|
55
|
+
"@dxos/react-ui": "0.8.4-main.c85a9c8dae",
|
|
56
|
+
"@dxos/ui-theme": "0.8.4-main.c85a9c8dae"
|
|
55
57
|
},
|
|
56
58
|
"publishConfig": {
|
|
57
59
|
"access": "public"
|
package/src/StorybookPlugin.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Effect from 'effect/Effect';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { ActivationEvents, Capabilities, Capability, Plugin } from '@dxos/app-framework';
|
|
8
|
+
import { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';
|
|
8
9
|
|
|
9
10
|
import { OperationResolver, State } from './capabilities';
|
|
10
11
|
import { Layout } from './components';
|
|
@@ -16,23 +17,23 @@ export type StorybookPluginOptions = {
|
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
export const StorybookPlugin = Plugin.define<StorybookPluginOptions>(meta).pipe(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
activate: () => State({ initialState }),
|
|
24
|
-
})),
|
|
25
|
-
Common.Plugin.addReactContextModule({
|
|
20
|
+
AppPlugin.addOperationResolverModule({
|
|
21
|
+
activate: OperationResolver,
|
|
22
|
+
}),
|
|
23
|
+
AppPlugin.addReactContextModule({
|
|
26
24
|
activate: () =>
|
|
27
25
|
Effect.succeed(
|
|
28
|
-
Capability.contributes(
|
|
26
|
+
Capability.contributes(Capabilities.ReactContext, {
|
|
29
27
|
id: 'storybook-layout',
|
|
30
28
|
context: Layout,
|
|
31
29
|
}),
|
|
32
30
|
),
|
|
33
31
|
}),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
Plugin.addModule(({ initialState }) => ({
|
|
33
|
+
id: Capability.getModuleTag(State),
|
|
34
|
+
activatesOn: ActivationEvents.Startup,
|
|
35
|
+
activatesAfter: [AppActivationEvents.LayoutReady],
|
|
36
|
+
activate: () => State({ initialState }),
|
|
37
|
+
})),
|
|
37
38
|
Plugin.make,
|
|
38
39
|
);
|
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Effect from 'effect/Effect';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { Capabilities, Capability } from '@dxos/app-framework';
|
|
8
|
+
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
8
9
|
import { OperationResolver } from '@dxos/operation';
|
|
9
10
|
|
|
10
11
|
import { LayoutState, type LayoutStateProps } from '../../types';
|
|
11
12
|
|
|
12
13
|
export default Capability.makeModule(
|
|
13
14
|
Effect.fnUntraced(function* () {
|
|
14
|
-
const registry = yield* Capability.get(
|
|
15
|
+
const registry = yield* Capability.get(Capabilities.AtomRegistry);
|
|
15
16
|
const stateAtom = yield* Capability.get(LayoutState);
|
|
16
17
|
|
|
17
18
|
const updateState = (fn: (state: LayoutStateProps) => Partial<LayoutStateProps>) => {
|
|
@@ -19,9 +20,9 @@ export default Capability.makeModule(
|
|
|
19
20
|
registry.set(stateAtom, { ...current, ...fn(current) });
|
|
20
21
|
};
|
|
21
22
|
|
|
22
|
-
return Capability.contributes(
|
|
23
|
+
return Capability.contributes(Capabilities.OperationResolver, [
|
|
23
24
|
OperationResolver.make({
|
|
24
|
-
operation:
|
|
25
|
+
operation: LayoutOperation.UpdateSidebar,
|
|
25
26
|
handler: Effect.fnUntraced(function* ({ state }) {
|
|
26
27
|
updateState((layout) => {
|
|
27
28
|
const next = state ?? layout.sidebarState;
|
|
@@ -33,7 +34,7 @@ export default Capability.makeModule(
|
|
|
33
34
|
}),
|
|
34
35
|
}),
|
|
35
36
|
OperationResolver.make({
|
|
36
|
-
operation:
|
|
37
|
+
operation: LayoutOperation.UpdateComplementary,
|
|
37
38
|
handler: Effect.fnUntraced(function* ({ state }) {
|
|
38
39
|
updateState((layout) => {
|
|
39
40
|
const next = state ?? layout.complementarySidebarState;
|
|
@@ -45,7 +46,7 @@ export default Capability.makeModule(
|
|
|
45
46
|
}),
|
|
46
47
|
}),
|
|
47
48
|
OperationResolver.make({
|
|
48
|
-
operation:
|
|
49
|
+
operation: LayoutOperation.UpdateDialog,
|
|
49
50
|
handler: Effect.fnUntraced(function* ({
|
|
50
51
|
subject,
|
|
51
52
|
state,
|
|
@@ -66,7 +67,7 @@ export default Capability.makeModule(
|
|
|
66
67
|
}),
|
|
67
68
|
}),
|
|
68
69
|
OperationResolver.make({
|
|
69
|
-
operation:
|
|
70
|
+
operation: LayoutOperation.UpdatePopover,
|
|
70
71
|
handler: Effect.fnUntraced(function* (input) {
|
|
71
72
|
const { subject, state, side, kind, props } = input;
|
|
72
73
|
updateState(() => {
|
|
@@ -88,7 +89,7 @@ export default Capability.makeModule(
|
|
|
88
89
|
}),
|
|
89
90
|
}),
|
|
90
91
|
OperationResolver.make({
|
|
91
|
-
operation:
|
|
92
|
+
operation: LayoutOperation.SwitchWorkspace,
|
|
92
93
|
handler: Effect.fnUntraced(function* ({ subject }) {
|
|
93
94
|
updateState(() => ({ workspace: subject }));
|
|
94
95
|
}),
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import { Atom } from '@effect-atom/atom-react';
|
|
6
6
|
import * as Effect from 'effect/Effect';
|
|
7
7
|
|
|
8
|
-
import { Capability
|
|
8
|
+
import { Capability } from '@dxos/app-framework';
|
|
9
|
+
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
9
10
|
|
|
10
11
|
import { LayoutState, type LayoutStateProps } from '../../types';
|
|
11
12
|
|
|
@@ -21,7 +22,7 @@ export default Capability.makeModule(
|
|
|
21
22
|
const { initialState } = props ?? {};
|
|
22
23
|
const stateAtom = Atom.make<LayoutStateProps>({ ...defaultState, ...initialState });
|
|
23
24
|
|
|
24
|
-
const layoutAtom = Atom.make((get):
|
|
25
|
+
const layoutAtom = Atom.make((get): AppCapabilities.Layout => {
|
|
25
26
|
const state = get(stateAtom);
|
|
26
27
|
return {
|
|
27
28
|
mode: 'storybook',
|
|
@@ -35,9 +36,6 @@ export default Capability.makeModule(
|
|
|
35
36
|
};
|
|
36
37
|
});
|
|
37
38
|
|
|
38
|
-
return [
|
|
39
|
-
Capability.contributes(LayoutState, stateAtom),
|
|
40
|
-
Capability.contributes(Common.Capability.Layout, layoutAtom),
|
|
41
|
-
];
|
|
39
|
+
return [Capability.contributes(LayoutState, stateAtom), Capability.contributes(AppCapabilities.Layout, layoutAtom)];
|
|
42
40
|
}),
|
|
43
41
|
);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { RegistryContext, useAtomValue } from '@effect-atom/atom-react';
|
|
6
6
|
import React, { type PropsWithChildren, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
7
7
|
|
|
8
|
-
import { Surface, useCapability } from '@dxos/app-framework/
|
|
8
|
+
import { Surface, useCapability } from '@dxos/app-framework/ui';
|
|
9
9
|
import {
|
|
10
10
|
AlertDialog,
|
|
11
11
|
Dialog,
|
|
@@ -15,7 +15,8 @@ import {
|
|
|
15
15
|
toLocalizedString,
|
|
16
16
|
useTranslation,
|
|
17
17
|
} from '@dxos/react-ui';
|
|
18
|
-
import { Card
|
|
18
|
+
import { Card } from '@dxos/react-ui';
|
|
19
|
+
import { Mosaic } from '@dxos/react-ui-mosaic';
|
|
19
20
|
import { descriptionMessage, mx } from '@dxos/ui-theme';
|
|
20
21
|
|
|
21
22
|
import { meta } from '../meta';
|
|
@@ -102,11 +103,11 @@ export const Layout = ({ children }: PropsWithChildren<{}>) => {
|
|
|
102
103
|
onOpenChange={(nextOpen) => updateState({ dialogOpen: nextOpen })}
|
|
103
104
|
>
|
|
104
105
|
{layout.dialogBlockAlign === 'end' ? (
|
|
105
|
-
<Surface
|
|
106
|
+
<Surface.Surface
|
|
106
107
|
role='dialog'
|
|
107
108
|
data={layout.dialogContent}
|
|
108
109
|
limit={1}
|
|
109
|
-
fallback={
|
|
110
|
+
fallback={ErrorFallback}
|
|
110
111
|
placeholder={<div />}
|
|
111
112
|
/>
|
|
112
113
|
) : (
|
|
@@ -115,7 +116,7 @@ export const Layout = ({ children }: PropsWithChildren<{}>) => {
|
|
|
115
116
|
classNames={layout.dialogOverlayClasses}
|
|
116
117
|
style={layout.dialogOverlayStyle}
|
|
117
118
|
>
|
|
118
|
-
<Surface role='dialog' data={layout.dialogContent} limit={1} fallback={
|
|
119
|
+
<Surface.Surface role='dialog' data={layout.dialogContent} limit={1} fallback={ErrorFallback} />
|
|
119
120
|
</DialogOverlay>
|
|
120
121
|
)}
|
|
121
122
|
</DialogRoot>
|
|
@@ -140,12 +141,14 @@ export const Layout = ({ children }: PropsWithChildren<{}>) => {
|
|
|
140
141
|
) : (
|
|
141
142
|
<span />
|
|
142
143
|
)}
|
|
143
|
-
<Card.
|
|
144
|
+
<Card.CloseIconButton onClick={handleClose} />
|
|
144
145
|
</Card.Toolbar>
|
|
145
|
-
<Surface role='card--content' data={layout.popoverContent} limit={1} />
|
|
146
|
+
<Surface.Surface role='card--content' data={layout.popoverContent} limit={1} />
|
|
146
147
|
</Card.Root>
|
|
147
148
|
)}
|
|
148
|
-
{layout.popoverKind === 'base' &&
|
|
149
|
+
{layout.popoverKind === 'base' && (
|
|
150
|
+
<Surface.Surface role='popover' data={layout.popoverContent} limit={1} />
|
|
151
|
+
)}
|
|
149
152
|
</Popover.Viewport>
|
|
150
153
|
<Popover.Arrow />
|
|
151
154
|
</Popover.Content>
|
|
@@ -156,15 +159,16 @@ export const Layout = ({ children }: PropsWithChildren<{}>) => {
|
|
|
156
159
|
);
|
|
157
160
|
};
|
|
158
161
|
|
|
159
|
-
export const
|
|
162
|
+
export const ErrorFallback = ({ error }: { error?: Error }) => {
|
|
160
163
|
const { t } = useTranslation(meta.id);
|
|
161
164
|
const errorString = error?.toString() ?? '';
|
|
162
165
|
return (
|
|
163
|
-
<div
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
<div
|
|
167
|
+
role='alert'
|
|
168
|
+
data-testid='error-boundary-fallback'
|
|
169
|
+
className={mx('overflow-auto p-8 dx-attention-surface grid place-items-center')}
|
|
170
|
+
>
|
|
171
|
+
<p className={mx(descriptionMessage, 'break-words rounded-md p-8', errorString.length < 256 && 'text-lg')}>
|
|
168
172
|
{error ? errorString : t('error fallback message')}
|
|
169
173
|
</p>
|
|
170
174
|
</div>
|
package/src/core.ts
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { OperationPlugin, type Plugin, RuntimePlugin
|
|
5
|
+
import { OperationPlugin, type Plugin, RuntimePlugin } from '@dxos/app-framework';
|
|
6
6
|
import { AttentionPlugin } from '@dxos/plugin-attention';
|
|
7
7
|
import { ClientPlugin } from '@dxos/plugin-client';
|
|
8
8
|
import { GraphPlugin } from '@dxos/plugin-graph';
|
|
9
|
+
import { SettingsPlugin } from '@dxos/plugin-settings';
|
|
9
10
|
import { ThemePlugin } from '@dxos/plugin-theme';
|
|
10
11
|
import { defaultTx } from '@dxos/ui-theme';
|
|
11
12
|
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/operation-resolver/operation-resolver.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { OperationResolver } from '@dxos/operation';\n\nimport { LayoutState, type LayoutStateProps } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Common.Capability.AtomRegistry);\n const stateAtom = yield* Capability.get(LayoutState);\n\n const updateState = (fn: (state: LayoutStateProps) => Partial<LayoutStateProps>) => {\n const current = registry.get(stateAtom);\n registry.set(stateAtom, { ...current, ...fn(current) });\n };\n\n return Capability.contributes(Common.Capability.OperationResolver, [\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdateSidebar,\n handler: Effect.fnUntraced(function* ({ state }) {\n updateState((layout) => {\n const next = state ?? layout.sidebarState;\n if (next !== layout.sidebarState) {\n return { sidebarState: next };\n }\n return {};\n });\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdateComplementary,\n handler: Effect.fnUntraced(function* ({ state }) {\n updateState((layout) => {\n const next = state ?? layout.complementarySidebarState;\n if (next !== layout.complementarySidebarState) {\n return { complementarySidebarState: next };\n }\n return {};\n });\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdateDialog,\n handler: Effect.fnUntraced(function* ({\n subject,\n state,\n type,\n blockAlign,\n overlayClasses,\n overlayStyle,\n props,\n }) {\n updateState(() => ({\n dialogOpen: state ?? Boolean(subject),\n dialogType: type ?? 'default',\n dialogBlockAlign: blockAlign ?? 'center',\n dialogOverlayClasses: overlayClasses,\n dialogOverlayStyle: overlayStyle,\n dialogContent: subject ? { component: subject, props } : null,\n }));\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdatePopover,\n handler: Effect.fnUntraced(function* (input) {\n const { subject, state, side, kind, props } = input;\n updateState(() => {\n const base: Partial<LayoutStateProps> = {\n popoverKind: kind ?? 'base',\n popoverTitle: kind === 'card' ? input.title : undefined,\n popoverContent:\n typeof subject === 'string' ? { component: subject, props } : subject ? { subject } : undefined,\n popoverOpen: state ?? Boolean(subject),\n popoverSide: side,\n };\n if ('variant' in input && input.variant === 'virtual') {\n return { ...base, popoverVariant: 'virtual', popoverAnchor: input.anchor };\n } else if ('anchorId' in input) {\n return { ...base, popoverVariant: 'react', popoverAnchorId: input.anchorId };\n }\n return base;\n });\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.SwitchWorkspace,\n handler: Effect.fnUntraced(function* ({ subject }) {\n updateState(() => ({ workspace: subject }));\n }),\n }),\n ]);\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SAASC,yBAAyB;AAIlC,IAAA,6BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,WAAW,OAAOH,WAAWI,IAAIC,OAAOL,WAAWM,YAAY;AACrE,QAAMC,YAAY,OAAOP,WAAWI,IAAII,WAAAA;AAExC,QAAMC,cAAc,CAACC,OAAAA;AACnB,UAAMC,UAAUR,SAASC,IAAIG,SAAAA;AAC7BJ,aAASS,IAAIL,WAAW;MAAE,GAAGI;MAAS,GAAGD,GAAGC,OAAAA;IAAS,CAAA;EACvD;AAEA,SAAOX,WAAWa,YAAYR,OAAOL,WAAWc,mBAAmB;IACjEA,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBC;MAClCC,SAAgBjB,kBAAW,WAAW,EAAEkB,MAAK,GAAE;AAC7CX,oBAAY,CAACY,WAAAA;AACX,gBAAMC,OAAOF,SAASC,OAAOE;AAC7B,cAAID,SAASD,OAAOE,cAAc;AAChC,mBAAO;cAAEA,cAAcD;YAAK;UAC9B;AACA,iBAAO,CAAC;QACV,CAAA;MACF,CAAA;IACF,CAAA;IACAR,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBO;MAClCL,SAAgBjB,kBAAW,WAAW,EAAEkB,MAAK,GAAE;AAC7CX,oBAAY,CAACY,WAAAA;AACX,gBAAMC,OAAOF,SAASC,OAAOI;AAC7B,cAAIH,SAASD,OAAOI,2BAA2B;AAC7C,mBAAO;cAAEA,2BAA2BH;YAAK;UAC3C;AACA,iBAAO,CAAC;QACV,CAAA;MACF,CAAA;IACF,CAAA;IACAR,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBS;MAClCP,SAAgBjB,kBAAW,WAAW,EACpCyB,SACAP,OACAQ,MACAC,YACAC,gBACAC,cACAC,MAAK,GACN;AACCvB,oBAAY,OAAO;UACjBwB,YAAYb,SAASc,QAAQP,OAAAA;UAC7BQ,YAAYP,QAAQ;UACpBQ,kBAAkBP,cAAc;UAChCQ,sBAAsBP;UACtBQ,oBAAoBP;UACpBQ,eAAeZ,UAAU;YAAEa,WAAWb;YAASK;UAAM,IAAI;QAC3D,EAAA;MACF,CAAA;IACF,CAAA;IACAlB,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBwB;MAClCtB,SAAgBjB,kBAAW,WAAWwC,OAAK;AACzC,cAAM,EAAEf,SAASP,OAAOuB,MAAMC,MAAMZ,MAAK,IAAKU;AAC9CjC,oBAAY,MAAA;AACV,gBAAMoC,OAAkC;YACtCC,aAAaF,QAAQ;YACrBG,cAAcH,SAAS,SAASF,MAAMM,QAAQC;YAC9CC,gBACE,OAAOvB,YAAY,WAAW;cAAEa,WAAWb;cAASK;YAAM,IAAIL,UAAU;cAAEA;YAAQ,IAAIsB;YACxFE,aAAa/B,SAASc,QAAQP,OAAAA;YAC9ByB,aAAaT;UACf;AACA,cAAI,aAAaD,SAASA,MAAMW,YAAY,WAAW;AACrD,mBAAO;cAAE,GAAGR;cAAMS,gBAAgB;cAAWC,eAAeb,MAAMc;YAAO;UAC3E,WAAW,cAAcd,OAAO;AAC9B,mBAAO;cAAE,GAAGG;cAAMS,gBAAgB;cAASG,iBAAiBf,MAAMgB;YAAS;UAC7E;AACA,iBAAOb;QACT,CAAA;MACF,CAAA;IACF,CAAA;IACA/B,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgB0C;MAClCxC,SAAgBjB,kBAAW,WAAW,EAAEyB,QAAO,GAAE;AAC/ClB,oBAAY,OAAO;UAAEmD,WAAWjC;QAAQ,EAAA;MAC1C,CAAA;IACF,CAAA;GACD;AACH,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "Common", "OperationResolver", "Capability", "makeModule", "fnUntraced", "registry", "get", "Common", "AtomRegistry", "stateAtom", "LayoutState", "updateState", "fn", "current", "set", "contributes", "OperationResolver", "make", "operation", "LayoutOperation", "UpdateSidebar", "handler", "state", "layout", "next", "sidebarState", "UpdateComplementary", "complementarySidebarState", "UpdateDialog", "subject", "type", "blockAlign", "overlayClasses", "overlayStyle", "props", "dialogOpen", "Boolean", "dialogType", "dialogBlockAlign", "dialogOverlayClasses", "dialogOverlayStyle", "dialogContent", "component", "UpdatePopover", "input", "side", "kind", "base", "popoverKind", "popoverTitle", "title", "undefined", "popoverContent", "popoverOpen", "popoverSide", "variant", "popoverVariant", "popoverAnchor", "anchor", "popoverAnchorId", "anchorId", "SwitchWorkspace", "workspace"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/state/state.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\n\nimport { LayoutState, type LayoutStateProps } from '../../types';\n\nconst defaultState: LayoutStateProps = {\n sidebarState: 'closed',\n complementarySidebarState: 'closed',\n dialogOpen: false,\n workspace: 'default',\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* (props?: { initialState?: Partial<LayoutStateProps> }) {\n const { initialState } = props ?? {};\n const stateAtom = Atom.make<LayoutStateProps>({ ...defaultState, ...initialState });\n\n const layoutAtom = Atom.make((get): Common.Capability.Layout => {\n const state = get(stateAtom);\n return {\n mode: 'storybook',\n dialogOpen: state.dialogOpen,\n sidebarOpen: state.sidebarState === 'expanded',\n complementarySidebarOpen: state.complementarySidebarState === 'expanded',\n workspace: state.workspace,\n active: [],\n inactive: [],\n scrollIntoView: undefined,\n };\n });\n\n return [\n Capability.contributes(LayoutState, stateAtom),\n Capability.contributes(Common.Capability.Layout, layoutAtom),\n ];\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,YAAYC,cAAc;AAInC,IAAMC,eAAiC;EACrCC,cAAc;EACdC,2BAA2B;EAC3BC,YAAY;EACZC,WAAW;AACb;AAEA,IAAA,gBAAeC,WAAWC,WACjBC,kBAAW,WAAWC,OAAoD;AAC/E,QAAM,EAAEC,aAAY,IAAKD,SAAS,CAAC;AACnC,QAAME,YAAYC,KAAKC,KAAuB;IAAE,GAAGZ;IAAc,GAAGS;EAAa,CAAA;AAEjF,QAAMI,aAAaF,KAAKC,KAAK,CAACE,QAAAA;AAC5B,UAAMC,QAAQD,IAAIJ,SAAAA;AAClB,WAAO;MACLM,MAAM;MACNb,YAAYY,MAAMZ;MAClBc,aAAaF,MAAMd,iBAAiB;MACpCiB,0BAA0BH,MAAMb,8BAA8B;MAC9DE,WAAWW,MAAMX;MACjBe,QAAQ,CAAA;MACRC,UAAU,CAAA;MACVC,gBAAgBC;IAClB;EACF,CAAA;AAEA,SAAO;IACLjB,WAAWkB,YAAYC,aAAad,SAAAA;IACpCL,WAAWkB,YAAYE,OAAOpB,WAAWqB,QAAQb,UAAAA;;AAErD,CAAA,CAAA;",
|
|
6
|
-
"names": ["Atom", "Effect", "Capability", "Common", "defaultState", "sidebarState", "complementarySidebarState", "dialogOpen", "workspace", "Capability", "makeModule", "fnUntraced", "props", "initialState", "stateAtom", "Atom", "make", "layoutAtom", "get", "state", "mode", "sidebarOpen", "complementarySidebarOpen", "active", "inactive", "scrollIntoView", "undefined", "contributes", "LayoutState", "Common", "Layout"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/operation-resolver/operation-resolver.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { OperationResolver } from '@dxos/operation';\n\nimport { LayoutState, type LayoutStateProps } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Common.Capability.AtomRegistry);\n const stateAtom = yield* Capability.get(LayoutState);\n\n const updateState = (fn: (state: LayoutStateProps) => Partial<LayoutStateProps>) => {\n const current = registry.get(stateAtom);\n registry.set(stateAtom, { ...current, ...fn(current) });\n };\n\n return Capability.contributes(Common.Capability.OperationResolver, [\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdateSidebar,\n handler: Effect.fnUntraced(function* ({ state }) {\n updateState((layout) => {\n const next = state ?? layout.sidebarState;\n if (next !== layout.sidebarState) {\n return { sidebarState: next };\n }\n return {};\n });\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdateComplementary,\n handler: Effect.fnUntraced(function* ({ state }) {\n updateState((layout) => {\n const next = state ?? layout.complementarySidebarState;\n if (next !== layout.complementarySidebarState) {\n return { complementarySidebarState: next };\n }\n return {};\n });\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdateDialog,\n handler: Effect.fnUntraced(function* ({\n subject,\n state,\n type,\n blockAlign,\n overlayClasses,\n overlayStyle,\n props,\n }) {\n updateState(() => ({\n dialogOpen: state ?? Boolean(subject),\n dialogType: type ?? 'default',\n dialogBlockAlign: blockAlign ?? 'center',\n dialogOverlayClasses: overlayClasses,\n dialogOverlayStyle: overlayStyle,\n dialogContent: subject ? { component: subject, props } : null,\n }));\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.UpdatePopover,\n handler: Effect.fnUntraced(function* (input) {\n const { subject, state, side, kind, props } = input;\n updateState(() => {\n const base: Partial<LayoutStateProps> = {\n popoverKind: kind ?? 'base',\n popoverTitle: kind === 'card' ? input.title : undefined,\n popoverContent:\n typeof subject === 'string' ? { component: subject, props } : subject ? { subject } : undefined,\n popoverOpen: state ?? Boolean(subject),\n popoverSide: side,\n };\n if ('variant' in input && input.variant === 'virtual') {\n return { ...base, popoverVariant: 'virtual', popoverAnchor: input.anchor };\n } else if ('anchorId' in input) {\n return { ...base, popoverVariant: 'react', popoverAnchorId: input.anchorId };\n }\n return base;\n });\n }),\n }),\n OperationResolver.make({\n operation: Common.LayoutOperation.SwitchWorkspace,\n handler: Effect.fnUntraced(function* ({ subject }) {\n updateState(() => ({ workspace: subject }));\n }),\n }),\n ]);\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SAASC,yBAAyB;AAIlC,IAAA,6BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,WAAW,OAAOH,WAAWI,IAAIC,OAAOL,WAAWM,YAAY;AACrE,QAAMC,YAAY,OAAOP,WAAWI,IAAII,WAAAA;AAExC,QAAMC,cAAc,CAACC,OAAAA;AACnB,UAAMC,UAAUR,SAASC,IAAIG,SAAAA;AAC7BJ,aAASS,IAAIL,WAAW;MAAE,GAAGI;MAAS,GAAGD,GAAGC,OAAAA;IAAS,CAAA;EACvD;AAEA,SAAOX,WAAWa,YAAYR,OAAOL,WAAWc,mBAAmB;IACjEA,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBC;MAClCC,SAAgBjB,kBAAW,WAAW,EAAEkB,MAAK,GAAE;AAC7CX,oBAAY,CAACY,WAAAA;AACX,gBAAMC,OAAOF,SAASC,OAAOE;AAC7B,cAAID,SAASD,OAAOE,cAAc;AAChC,mBAAO;cAAEA,cAAcD;YAAK;UAC9B;AACA,iBAAO,CAAC;QACV,CAAA;MACF,CAAA;IACF,CAAA;IACAR,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBO;MAClCL,SAAgBjB,kBAAW,WAAW,EAAEkB,MAAK,GAAE;AAC7CX,oBAAY,CAACY,WAAAA;AACX,gBAAMC,OAAOF,SAASC,OAAOI;AAC7B,cAAIH,SAASD,OAAOI,2BAA2B;AAC7C,mBAAO;cAAEA,2BAA2BH;YAAK;UAC3C;AACA,iBAAO,CAAC;QACV,CAAA;MACF,CAAA;IACF,CAAA;IACAR,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBS;MAClCP,SAAgBjB,kBAAW,WAAW,EACpCyB,SACAP,OACAQ,MACAC,YACAC,gBACAC,cACAC,MAAK,GACN;AACCvB,oBAAY,OAAO;UACjBwB,YAAYb,SAASc,QAAQP,OAAAA;UAC7BQ,YAAYP,QAAQ;UACpBQ,kBAAkBP,cAAc;UAChCQ,sBAAsBP;UACtBQ,oBAAoBP;UACpBQ,eAAeZ,UAAU;YAAEa,WAAWb;YAASK;UAAM,IAAI;QAC3D,EAAA;MACF,CAAA;IACF,CAAA;IACAlB,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgBwB;MAClCtB,SAAgBjB,kBAAW,WAAWwC,OAAK;AACzC,cAAM,EAAEf,SAASP,OAAOuB,MAAMC,MAAMZ,MAAK,IAAKU;AAC9CjC,oBAAY,MAAA;AACV,gBAAMoC,OAAkC;YACtCC,aAAaF,QAAQ;YACrBG,cAAcH,SAAS,SAASF,MAAMM,QAAQC;YAC9CC,gBACE,OAAOvB,YAAY,WAAW;cAAEa,WAAWb;cAASK;YAAM,IAAIL,UAAU;cAAEA;YAAQ,IAAIsB;YACxFE,aAAa/B,SAASc,QAAQP,OAAAA;YAC9ByB,aAAaT;UACf;AACA,cAAI,aAAaD,SAASA,MAAMW,YAAY,WAAW;AACrD,mBAAO;cAAE,GAAGR;cAAMS,gBAAgB;cAAWC,eAAeb,MAAMc;YAAO;UAC3E,WAAW,cAAcd,OAAO;AAC9B,mBAAO;cAAE,GAAGG;cAAMS,gBAAgB;cAASG,iBAAiBf,MAAMgB;YAAS;UAC7E;AACA,iBAAOb;QACT,CAAA;MACF,CAAA;IACF,CAAA;IACA/B,kBAAkBC,KAAK;MACrBC,WAAWX,OAAOY,gBAAgB0C;MAClCxC,SAAgBjB,kBAAW,WAAW,EAAEyB,QAAO,GAAE;AAC/ClB,oBAAY,OAAO;UAAEmD,WAAWjC;QAAQ,EAAA;MAC1C,CAAA;IACF,CAAA;GACD;AACH,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "Common", "OperationResolver", "Capability", "makeModule", "fnUntraced", "registry", "get", "Common", "AtomRegistry", "stateAtom", "LayoutState", "updateState", "fn", "current", "set", "contributes", "OperationResolver", "make", "operation", "LayoutOperation", "UpdateSidebar", "handler", "state", "layout", "next", "sidebarState", "UpdateComplementary", "complementarySidebarState", "UpdateDialog", "subject", "type", "blockAlign", "overlayClasses", "overlayStyle", "props", "dialogOpen", "Boolean", "dialogType", "dialogBlockAlign", "dialogOverlayClasses", "dialogOverlayStyle", "dialogContent", "component", "UpdatePopover", "input", "side", "kind", "base", "popoverKind", "popoverTitle", "title", "undefined", "popoverContent", "popoverOpen", "popoverSide", "variant", "popoverVariant", "popoverAnchor", "anchor", "popoverAnchorId", "anchorId", "SwitchWorkspace", "workspace"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/state/state.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\n\nimport { LayoutState, type LayoutStateProps } from '../../types';\n\nconst defaultState: LayoutStateProps = {\n sidebarState: 'closed',\n complementarySidebarState: 'closed',\n dialogOpen: false,\n workspace: 'default',\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* (props?: { initialState?: Partial<LayoutStateProps> }) {\n const { initialState } = props ?? {};\n const stateAtom = Atom.make<LayoutStateProps>({ ...defaultState, ...initialState });\n\n const layoutAtom = Atom.make((get): Common.Capability.Layout => {\n const state = get(stateAtom);\n return {\n mode: 'storybook',\n dialogOpen: state.dialogOpen,\n sidebarOpen: state.sidebarState === 'expanded',\n complementarySidebarOpen: state.complementarySidebarState === 'expanded',\n workspace: state.workspace,\n active: [],\n inactive: [],\n scrollIntoView: undefined,\n };\n });\n\n return [\n Capability.contributes(LayoutState, stateAtom),\n Capability.contributes(Common.Capability.Layout, layoutAtom),\n ];\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,YAAYC,cAAc;AAInC,IAAMC,eAAiC;EACrCC,cAAc;EACdC,2BAA2B;EAC3BC,YAAY;EACZC,WAAW;AACb;AAEA,IAAA,gBAAeC,WAAWC,WACjBC,kBAAW,WAAWC,OAAoD;AAC/E,QAAM,EAAEC,aAAY,IAAKD,SAAS,CAAC;AACnC,QAAME,YAAYC,KAAKC,KAAuB;IAAE,GAAGZ;IAAc,GAAGS;EAAa,CAAA;AAEjF,QAAMI,aAAaF,KAAKC,KAAK,CAACE,QAAAA;AAC5B,UAAMC,QAAQD,IAAIJ,SAAAA;AAClB,WAAO;MACLM,MAAM;MACNb,YAAYY,MAAMZ;MAClBc,aAAaF,MAAMd,iBAAiB;MACpCiB,0BAA0BH,MAAMb,8BAA8B;MAC9DE,WAAWW,MAAMX;MACjBe,QAAQ,CAAA;MACRC,UAAU,CAAA;MACVC,gBAAgBC;IAClB;EACF,CAAA;AAEA,SAAO;IACLjB,WAAWkB,YAAYC,aAAad,SAAAA;IACpCL,WAAWkB,YAAYE,OAAOpB,WAAWqB,QAAQb,UAAAA;;AAErD,CAAA,CAAA;",
|
|
6
|
-
"names": ["Atom", "Effect", "Capability", "Common", "defaultState", "sidebarState", "complementarySidebarState", "dialogOpen", "workspace", "Capability", "makeModule", "fnUntraced", "props", "initialState", "stateAtom", "Atom", "make", "layoutAtom", "get", "state", "mode", "sidebarOpen", "complementarySidebarOpen", "active", "inactive", "scrollIntoView", "undefined", "contributes", "LayoutState", "Common", "Layout"]
|
|
7
|
-
}
|