@dxos/plugin-testing 0.11.1 → 0.12.0-next-2800d0376abcc62d5544afdd744b16b2b960434e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/lib/StorybookCapabilities.mjs +10 -0
  2. package/dist/lib/StorybookCapabilities.mjs.map +1 -0
  3. package/dist/lib/StorybookPlugin.mjs +15 -16
  4. package/dist/lib/StorybookPlugin.mjs.map +1 -1
  5. package/dist/lib/capabilities.mjs +12 -4
  6. package/dist/lib/capabilities.mjs.map +1 -1
  7. package/dist/lib/capabilities.node.mjs +16 -0
  8. package/dist/lib/capabilities.node.mjs.map +1 -0
  9. package/dist/lib/capabilities.workerd.mjs +16 -0
  10. package/dist/lib/capabilities.workerd.mjs.map +1 -0
  11. package/dist/lib/chunk-add-toast.mjs +2 -2
  12. package/dist/lib/chunk-add-toast.mjs.map +1 -1
  13. package/dist/lib/chunk-close.mjs +2 -2
  14. package/dist/lib/chunk-close.mjs.map +1 -1
  15. package/dist/lib/chunk-open.mjs +2 -2
  16. package/dist/lib/chunk-open.mjs.map +1 -1
  17. package/dist/lib/chunk-operation-handler.mjs +3 -2
  18. package/dist/lib/chunk-operation-handler.mjs.map +1 -1
  19. package/dist/lib/chunk-react-context.mjs +13 -0
  20. package/dist/lib/chunk-react-context.mjs.map +1 -0
  21. package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
  22. package/dist/lib/chunk-scroll-into-view.mjs +2 -2
  23. package/dist/lib/chunk-scroll-into-view.mjs.map +1 -1
  24. package/dist/lib/chunk-state.mjs +5 -5
  25. package/dist/lib/chunk-state.mjs.map +1 -1
  26. package/dist/lib/chunk-switch-workspace.mjs +2 -2
  27. package/dist/lib/chunk-switch-workspace.mjs.map +1 -1
  28. package/dist/lib/chunk-update-complementary.mjs +2 -2
  29. package/dist/lib/chunk-update-complementary.mjs.map +1 -1
  30. package/dist/lib/chunk-update-dialog.mjs +2 -2
  31. package/dist/lib/chunk-update-dialog.mjs.map +1 -1
  32. package/dist/lib/chunk-update-popover.mjs +2 -2
  33. package/dist/lib/chunk-update-popover.mjs.map +1 -1
  34. package/dist/lib/chunk-update-sidebar.mjs +2 -2
  35. package/dist/lib/chunk-update-sidebar.mjs.map +1 -1
  36. package/dist/lib/chunk-update-state.mjs +4 -3
  37. package/dist/lib/chunk-update-state.mjs.map +1 -1
  38. package/dist/lib/components.mjs +4 -3
  39. package/dist/lib/components.mjs.map +1 -1
  40. package/dist/lib/core.mjs +4 -4
  41. package/dist/lib/core.mjs.map +1 -1
  42. package/dist/lib/harness.mjs +5 -7
  43. package/dist/lib/harness.mjs.map +1 -1
  44. package/dist/lib/index.mjs +4 -4
  45. package/dist/lib/meta.mjs +21 -1
  46. package/dist/lib/meta.mjs.map +1 -0
  47. package/dist/lib/operations.mjs +14 -2
  48. package/dist/lib/operations.mjs.map +1 -1
  49. package/dist/lib/plugin.mjs +5 -5
  50. package/dist/lib/plugin.mjs.map +1 -1
  51. package/dist/lib/types.mjs +1 -1
  52. package/dist/types/src/StorybookPlugin.d.ts +38 -6
  53. package/dist/types/src/StorybookPlugin.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/gen/node.d.ts +8 -0
  55. package/dist/types/src/capabilities/gen/node.d.ts.map +1 -0
  56. package/dist/types/src/capabilities/gen/workerd.d.ts +8 -0
  57. package/dist/types/src/capabilities/gen/workerd.d.ts.map +1 -0
  58. package/dist/types/src/capabilities/index.d.ts +7 -6
  59. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/operation-handler.d.ts +2 -3
  61. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/react-context.d.ts +5 -0
  63. package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
  64. package/dist/types/src/capabilities/state.d.ts +2 -2
  65. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  66. package/dist/types/src/components/Layout/Layout.d.ts.map +1 -1
  67. package/dist/types/src/core.d.ts +1 -1
  68. package/dist/types/src/core.d.ts.map +1 -1
  69. package/dist/types/src/harness.d.ts +2 -2
  70. package/dist/types/src/harness.d.ts.map +1 -1
  71. package/dist/types/src/index.d.ts +3 -3
  72. package/dist/types/src/index.d.ts.map +1 -1
  73. package/dist/types/src/operations/add-toast.d.ts +2 -2
  74. package/dist/types/src/operations/add-toast.d.ts.map +1 -1
  75. package/dist/types/src/operations/close.d.ts +2 -2
  76. package/dist/types/src/operations/close.d.ts.map +1 -1
  77. package/dist/types/src/operations/index.d.ts +1 -1
  78. package/dist/types/src/operations/index.d.ts.map +1 -1
  79. package/dist/types/src/operations/open.d.ts +2 -2
  80. package/dist/types/src/operations/open.d.ts.map +1 -1
  81. package/dist/types/src/operations/scroll-into-view.d.ts +2 -2
  82. package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -1
  83. package/dist/types/src/operations/switch-workspace.d.ts +2 -2
  84. package/dist/types/src/operations/switch-workspace.d.ts.map +1 -1
  85. package/dist/types/src/operations/update-complementary.d.ts +2 -2
  86. package/dist/types/src/operations/update-complementary.d.ts.map +1 -1
  87. package/dist/types/src/operations/update-dialog.d.ts +2 -2
  88. package/dist/types/src/operations/update-dialog.d.ts.map +1 -1
  89. package/dist/types/src/operations/update-popover.d.ts +2 -2
  90. package/dist/types/src/operations/update-popover.d.ts.map +1 -1
  91. package/dist/types/src/operations/update-sidebar.d.ts +2 -2
  92. package/dist/types/src/operations/update-sidebar.d.ts.map +1 -1
  93. package/dist/types/src/operations/update-state.d.ts +3 -3
  94. package/dist/types/src/operations/update-state.d.ts.map +1 -1
  95. package/dist/types/src/plugin.d.ts +7 -4
  96. package/dist/types/src/plugin.d.ts.map +1 -1
  97. package/dist/types/src/types/StorybookCapabilities.d.ts +4 -4
  98. package/dist/types/src/types/StorybookCapabilities.d.ts.map +1 -1
  99. package/dist/types/tsconfig.tsbuildinfo +1 -1
  100. package/package.json +46 -30
  101. package/src/StorybookPlugin.ts +11 -33
  102. package/src/capabilities/gen/node.ts +23 -0
  103. package/src/capabilities/gen/workerd.ts +23 -0
  104. package/src/capabilities/index.ts +13 -6
  105. package/src/capabilities/operation-handler.ts +4 -4
  106. package/src/capabilities/react-context.tsx +19 -0
  107. package/src/capabilities/state.tsx +5 -5
  108. package/src/components/Layout/Layout.tsx +3 -2
  109. package/src/core.ts +6 -5
  110. package/src/harness.ts +7 -10
  111. package/src/index.ts +5 -6
  112. package/src/meta.ts +1 -1
  113. package/src/operations/add-toast.ts +2 -2
  114. package/src/operations/close.ts +2 -2
  115. package/src/operations/index.ts +14 -12
  116. package/src/operations/open.ts +2 -2
  117. package/src/operations/scroll-into-view.ts +2 -2
  118. package/src/operations/switch-workspace.ts +2 -2
  119. package/src/operations/update-complementary.ts +2 -2
  120. package/src/operations/update-dialog.ts +2 -2
  121. package/src/operations/update-popover.ts +4 -3
  122. package/src/operations/update-sidebar.ts +2 -2
  123. package/src/operations/update-state.ts +3 -2
  124. package/src/plugin.ts +15 -5
  125. package/src/types/StorybookCapabilities.ts +4 -4
  126. package/src/types/index.ts +1 -1
  127. package/dist/lib/chunk-meta.mjs +0 -22
  128. package/dist/lib/chunk-meta.mjs.map +0 -1
  129. package/dist/lib/chunk-types.mjs +0 -21
  130. package/dist/lib/chunk-types.mjs.map +0 -1
@@ -0,0 +1,10 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import { meta } from "#meta";
4
+ //#region src/types/StorybookCapabilities.ts
5
+ var StorybookCapabilities_exports = /* @__PURE__ */ __exportAll({ LayoutState: () => LayoutState });
6
+ var LayoutState = Capability.makeSingleton()(`${meta.profile.key}.state`);
7
+ //#endregion
8
+ export { LayoutState, StorybookCapabilities_exports as t };
9
+
10
+ //# sourceMappingURL=StorybookCapabilities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorybookCapabilities.mjs","names":[],"sources":["../../src/types/StorybookCapabilities.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Atom from 'effect/unstable/reactivity/Atom';\n\nimport * as Capability from '@dxos/app-framework/Capability';\nimport type * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport { type Label } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport type LayoutStateProps = {\n sidebarState?: 'expanded' | 'collapsed' | 'closed';\n complementarySidebarState?: 'expanded' | 'collapsed' | 'closed';\n\n dialogOpen: boolean;\n dialogType?: 'default' | 'alert';\n dialogBlockAlign?: 'start' | 'center' | 'end';\n dialogOverlayClasses?: string;\n dialogOverlayStyle?: Record<string, any>;\n /** Data to be passed to the dialog Surface. */\n dialogContent?: any;\n\n popoverOpen?: boolean;\n popoverSide?: 'top' | 'right' | 'bottom' | 'left';\n popoverVariant?: 'virtual' | 'react';\n popoverAnchor?: HTMLButtonElement;\n popoverAnchorId?: string;\n popoverKind?: 'base' | 'card' | 'rename';\n popoverTitle?: Label;\n popoverContent?: any;\n\n toasts: LayoutOperation.Toast[];\n\n workspace: string;\n};\n\nexport const LayoutState = Capability.makeSingleton<Atom.Writable<LayoutStateProps>>()(`${meta.profile.key}.state`);\n"],"mappings":";;;;;AAwCA,IAAa,cAAc,WAAW,cAA+C,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO"}
@@ -1,20 +1,19 @@
1
- import { ActivationEvents, Capabilities, Capability, Plugin } from "@dxos/app-framework";
2
- import { meta } from "#meta";
3
- import * as Effect from "effect/Effect";
4
- import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
5
- import { OperationHandler, State } from "#capabilities";
6
- import { Layout } from "#components";
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import { meta as meta$1 } from "#meta";
3
+ import { StorybookPlugin } from "#plugin";
7
4
  //#region src/StorybookPlugin.ts
8
- var StorybookPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({ activate: OperationHandler }), AppPlugin.addReactContextModule({ activate: () => Effect.succeed(Capability.contributes(Capabilities.ReactContext, {
9
- id: "storybook-layout",
10
- context: Layout
11
- })) }), Plugin.addModule(({ initialState }) => ({
12
- id: Capability.getModuleTag(State),
13
- activatesOn: ActivationEvents.Startup,
14
- firesAfterActivation: [AppActivationEvents.LayoutReady],
15
- activate: () => State({ initialState })
16
- })), Plugin.make);
5
+ var StorybookPlugin_exports = /* @__PURE__ */ __exportAll({
6
+ make: () => make,
7
+ meta: () => meta
8
+ });
9
+ /** Plugin metadata, available without loading the plugin body. */
10
+ var meta = meta$1;
11
+ /**
12
+ * Constructs the plugin. Eager by design: storybook runs under vite-dev, where webkit
13
+ * cannot reliably settle the lazy stub's dynamic import (see `./core.ts`).
14
+ */
15
+ var make = StorybookPlugin;
17
16
  //#endregion
18
- export { StorybookPlugin, StorybookPlugin as default };
17
+ export { make, meta, StorybookPlugin_exports as t };
19
18
 
20
19
  //# sourceMappingURL=StorybookPlugin.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StorybookPlugin.mjs","names":[],"sources":["../../src/StorybookPlugin.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { ActivationEvents, Capabilities, Capability, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\n\nimport { OperationHandler, State } from '#capabilities';\nimport { Layout } from '#components';\nimport { meta } from '#meta';\nimport { StorybookCapabilities } from '#types';\n\nexport type StorybookPluginOptions = {\n initialState?: Partial<StorybookCapabilities.LayoutStateProps>;\n};\n\nexport const StorybookPlugin = Plugin.define<StorybookPluginOptions>(meta).pipe(\n AppPlugin.addOperationHandlerModule({\n activate: OperationHandler,\n }),\n AppPlugin.addReactContextModule({\n activate: () =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactContext, {\n id: 'storybook-layout',\n context: Layout,\n }),\n ),\n }),\n Plugin.addModule(({ initialState }) => ({\n id: Capability.getModuleTag(State),\n activatesOn: ActivationEvents.Startup,\n firesAfterActivation: [AppActivationEvents.LayoutReady],\n activate: () => State({ initialState }),\n })),\n Plugin.make,\n);\n\nexport default StorybookPlugin;\n"],"mappings":";;;;;;;AAkBA,IAAa,kBAAkB,OAAO,OAA+B,IAAI,CAAC,CAAC,KACzE,UAAU,0BAA0B,EAClC,UAAU,iBACZ,CAAC,GACD,UAAU,sBAAsB,EAC9B,gBACE,OAAO,QACL,WAAW,YAAY,aAAa,cAAc;CAChD,IAAI;CACJ,SAAS;AACX,CAAC,CACH,EACJ,CAAC,GACD,OAAO,WAAW,EAAE,oBAAoB;CACtC,IAAI,WAAW,aAAa,KAAK;CACjC,aAAa,iBAAiB;CAC9B,sBAAsB,CAAC,oBAAoB,WAAW;CACtD,gBAAgB,MAAM,EAAE,aAAa,CAAC;AACxC,EAAE,GACF,OAAO,IACT"}
1
+ {"version":3,"file":"StorybookPlugin.mjs","names":[],"sources":["../../src/StorybookPlugin.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { meta as pluginMeta } from '#meta';\nimport { StorybookPlugin } from '#plugin';\n\n/** Plugin metadata, available without loading the plugin body. */\nexport const meta = pluginMeta;\n\n/**\n * Constructs the plugin. Eager by design: storybook runs under vite-dev, where webkit\n * cannot reliably settle the lazy stub's dynamic import (see `./core.ts`).\n */\nexport const make = StorybookPlugin;\n\nexport type { StorybookPluginOptions } from '#plugin';\n"],"mappings":";;;;;;;;;AAUA,IAAa,OAAO;;;;;AAMpB,IAAa,OAAO"}
@@ -1,8 +1,16 @@
1
- import { Capability } from "@dxos/app-framework";
1
+ import * as ActivationEvents from "@dxos/app-framework/ActivationEvents";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import * as AppCapabilities from "@dxos/app-toolkit/AppCapabilities";
4
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
5
+ import { StorybookCapabilities } from "#types";
2
6
  //#region src/capabilities/index.ts
3
- var OperationHandler = Capability.lazy("OperationHandler", () => import("./chunk-operation-handler.mjs"));
4
- var State = Capability.lazy("State", () => import("./chunk-state.mjs"));
7
+ var OperationHandler = AppCapability.operationHandler(() => import("./chunk-operation-handler.mjs"));
8
+ var ReactContext = AppCapability.reactContext(() => import("./chunk-react-context.mjs"));
9
+ var State = Capability.lazyModule("State", {
10
+ activatesOn: ActivationEvents.Startup,
11
+ provides: [StorybookCapabilities.LayoutState, AppCapabilities.Layout]
12
+ }, () => import("./chunk-state.mjs"));
5
13
  //#endregion
6
- export { OperationHandler, State };
14
+ export { OperationHandler, ReactContext, State };
7
15
 
8
16
  //# sourceMappingURL=capabilities.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../src/capabilities/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const State = Capability.lazy('State', () => import('./state'));\n"],"mappings":";;AAOA,IAAa,mBAAmB,WAAW,KACzC,0BACM,OAAO,gCACf;AACA,IAAa,QAAQ,WAAW,KAAK,eAAe,OAAO,oBAAU"}
1
+ {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../src/capabilities/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as ActivationEvents from '@dxos/app-framework/ActivationEvents';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\n\nimport { StorybookCapabilities } from '#types';\n\nexport const OperationHandler = AppCapability.operationHandler(() => import('./operation-handler'));\nexport const ReactContext = AppCapability.reactContext(() => import('./react-context'));\nexport const State = Capability.lazyModule(\n 'State',\n // Shell state read by `Layout` on its first render — same class as the deck's `DeckState`.\n { activatesOn: ActivationEvents.Startup, provides: [StorybookCapabilities.LayoutState, AppCapabilities.Layout] },\n () => import('./state'),\n);\n"],"mappings":";;;;;;AAWA,IAAa,mBAAmB,cAAc,uBAAuB,OAAO,gCAAsB;AAClG,IAAa,eAAe,cAAc,mBAAmB,OAAO,4BAAkB;AACtF,IAAa,QAAQ,WAAW,WAC9B,SAEA;CAAE,aAAa,iBAAiB;CAAS,UAAU,CAAC,sBAAsB,aAAa,gBAAgB,MAAM;AAAE,SACzG,OAAO,oBACf"}
@@ -0,0 +1,16 @@
1
+ import * as ActivationEvents from "@dxos/app-framework/ActivationEvents";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import * as AppCapabilities from "@dxos/app-toolkit/AppCapabilities";
4
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
5
+ import { StorybookCapabilities } from "#types";
6
+ //#region src/capabilities/gen/node.ts
7
+ var OperationHandler = AppCapability.operationHandler(() => import("./chunk-operation-handler.mjs"));
8
+ var State = Capability.lazyModule("State", {
9
+ activatesOn: ActivationEvents.Startup,
10
+ provides: [StorybookCapabilities.LayoutState, AppCapabilities.Layout]
11
+ }, () => import("./chunk-state.mjs"));
12
+ var ReactContext = void 0;
13
+ //#endregion
14
+ export { OperationHandler, ReactContext, State };
15
+
16
+ //# sourceMappingURL=capabilities.node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.node.mjs","names":[],"sources":["../../src/capabilities/gen/node.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// GENERATED by dx-plugin — do not edit. Sliced from ../index.ts for the 'node' condition.\n\nimport * as ActivationEvents from '@dxos/app-framework/ActivationEvents';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\n\nimport { StorybookCapabilities } from '#types';\n\nexport const OperationHandler = AppCapability.operationHandler(() => import('../operation-handler'));\n\nexport const State = Capability.lazyModule(\n 'State',\n // Shell state read by `Layout` on its first render — same class as the deck's `DeckState`.\n { activatesOn: ActivationEvents.Startup, provides: [StorybookCapabilities.LayoutState, AppCapabilities.Layout] },\n () => import('../state'),\n);\n\nexport const ReactContext = undefined;\n"],"mappings":";;;;;;AAaA,IAAa,mBAAmB,cAAc,uBAAuB,OAAO,gCAAuB;AAEnG,IAAa,QAAQ,WAAW,WAC9B,SAEA;CAAE,aAAa,iBAAiB;CAAS,UAAU,CAAC,sBAAsB,aAAa,gBAAgB,MAAM;AAAE,SACzG,OAAO,oBACf;AAEA,IAAa,eAAe,KAAA"}
@@ -0,0 +1,16 @@
1
+ import * as ActivationEvents from "@dxos/app-framework/ActivationEvents";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import * as AppCapabilities from "@dxos/app-toolkit/AppCapabilities";
4
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
5
+ import { StorybookCapabilities } from "#types";
6
+ //#region src/capabilities/gen/workerd.ts
7
+ var OperationHandler = AppCapability.operationHandler(() => import("./chunk-operation-handler.mjs"));
8
+ var State = Capability.lazyModule("State", {
9
+ activatesOn: ActivationEvents.Startup,
10
+ provides: [StorybookCapabilities.LayoutState, AppCapabilities.Layout]
11
+ }, () => import("./chunk-state.mjs"));
12
+ var ReactContext = void 0;
13
+ //#endregion
14
+ export { OperationHandler, ReactContext, State };
15
+
16
+ //# sourceMappingURL=capabilities.workerd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.workerd.mjs","names":[],"sources":["../../src/capabilities/gen/workerd.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// GENERATED by dx-plugin — do not edit. Sliced from ../index.ts for the 'workerd' condition.\n\nimport * as ActivationEvents from '@dxos/app-framework/ActivationEvents';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\n\nimport { StorybookCapabilities } from '#types';\n\nexport const OperationHandler = AppCapability.operationHandler(() => import('../operation-handler'));\n\nexport const State = Capability.lazyModule(\n 'State',\n // Shell state read by `Layout` on its first render — same class as the deck's `DeckState`.\n { activatesOn: ActivationEvents.Startup, provides: [StorybookCapabilities.LayoutState, AppCapabilities.Layout] },\n () => import('../state'),\n);\n\nexport const ReactContext = undefined;\n"],"mappings":";;;;;;AAaA,IAAa,mBAAmB,cAAc,uBAAuB,OAAO,gCAAuB;AAEnG,IAAa,QAAQ,WAAW,WAC9B,SAEA;CAAE,aAAa,iBAAiB;CAAS,UAAU,CAAC,sBAAsB,aAAa,gBAAgB,MAAM;AAAE,SACzG,OAAO,oBACf;AAEA,IAAa,eAAe,KAAA"}
@@ -1,7 +1,7 @@
1
1
  import { t as updateState } from "./chunk-update-state.mjs";
2
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
3
+ import * as Operation from "@dxos/compute/Operation";
2
4
  import * as Effect from "effect/Effect";
3
- import { LayoutOperation } from "@dxos/app-toolkit";
4
- import { Operation } from "@dxos/compute";
5
5
  //#region src/operations/add-toast.ts
6
6
  var handler = LayoutOperation.AddToast.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
7
7
  yield* updateState((state) => ({ toasts: [...state.toasts, input] }));
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-add-toast.mjs","names":[],"sources":["../../src/operations/add-toast.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.AddToast> = LayoutOperation.AddToast.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n yield* updateState((state) => ({\n toasts: [...state.toasts, input as LayoutOperation.Toast],\n }));\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAkE,gBAAgB,SAAS,KAC/F,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,OAAO,aAAa,WAAW,EAC7B,QAAQ,CAAC,GAAG,MAAM,QAAQ,KAA8B,EAC1D,EAAE;AACJ,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-add-toast.mjs","names":[],"sources":["../../src/operations/add-toast.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.AddToast> = LayoutOperation.AddToast.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n yield* updateState((state) => ({\n toasts: [...state.toasts, input as LayoutOperation.Toast],\n }));\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAkE,gBAAgB,SAAS,KAC/F,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,OAAO,aAAa,WAAW,EAC7B,QAAQ,CAAC,GAAG,MAAM,QAAQ,KAA8B,EAC1D,EAAE;AACJ,CAAC,CACH,CACF"}
@@ -1,6 +1,6 @@
1
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
2
+ import * as Operation from "@dxos/compute/Operation";
1
3
  import * as Effect from "effect/Effect";
2
- import { LayoutOperation } from "@dxos/app-toolkit";
3
- import { Operation } from "@dxos/compute";
4
4
  //#region src/operations/close.ts
5
5
  var handler = LayoutOperation.Close.pipe(Operation.withHandler(() => Effect.void));
6
6
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-close.mjs","names":[],"sources":["../../src/operations/close.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Close> = LayoutOperation.Close.pipe(\n Operation.withHandler(() => Effect.void),\n);\n\nexport default handler;\n"],"mappings":";;;;AASA,IAAM,UAA+D,gBAAgB,MAAM,KACzF,UAAU,kBAAkB,OAAO,IAAI,CACzC"}
1
+ {"version":3,"file":"chunk-close.mjs","names":[],"sources":["../../src/operations/close.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Close> = LayoutOperation.Close.pipe(\n Operation.withHandler(() => Effect.void),\n);\n\nexport default handler;\n"],"mappings":";;;;AASA,IAAM,UAA+D,gBAAgB,MAAM,KACzF,UAAU,kBAAkB,OAAO,IAAI,CACzC"}
@@ -1,6 +1,6 @@
1
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
2
+ import * as Operation from "@dxos/compute/Operation";
1
3
  import * as Effect from "effect/Effect";
2
- import { LayoutOperation } from "@dxos/app-toolkit";
3
- import { Operation } from "@dxos/compute";
4
4
  import { log } from "@dxos/log";
5
5
  //#region src/operations/open.ts
6
6
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-testing/src/operations/open.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-open.mjs","names":[],"sources":["../../src/operations/open.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { log } from '@dxos/log';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Open> = LayoutOperation.Open.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n log('LayoutOperation.Open handler start');\n return input.subject;\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;;AAUA,IAAM,UAA8D,gBAAgB,KAAK,KACvF,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,IAAI,sCAAmC,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACxC,OAAO,MAAM;AACf,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-open.mjs","names":[],"sources":["../../src/operations/open.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\nimport { log } from '@dxos/log';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Open> = LayoutOperation.Open.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n log('LayoutOperation.Open handler start');\n return input.subject;\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;;AAUA,IAAM,UAA8D,gBAAgB,KAAK,KACvF,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,IAAI,sCAAmC,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACxC,OAAO,MAAM;AACf,CAAC,CACH,CACF"}
@@ -1,9 +1,10 @@
1
- import { Capabilities, Capability } from "@dxos/app-framework";
1
+ import * as Capability from "@dxos/app-framework/Capability";
2
2
  import * as Effect from "effect/Effect";
3
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
3
4
  import { TestingOperationHandlerSet } from "#operations";
4
5
  //#region src/capabilities/operation-handler.ts
5
6
  var operation_handler_default = Capability.makeModule(Effect.fnUntraced(function* () {
6
- return Capability.contributes(Capabilities.OperationHandler, TestingOperationHandlerSet);
7
+ return Capability.contribute(Capabilities.OperationHandler, TestingOperationHandlerSet);
7
8
  }));
8
9
  //#endregion
9
10
  export { operation_handler_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-operation-handler.mjs","names":[],"sources":["../../src/capabilities/operation-handler.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport type { OperationHandlerSet } from '@dxos/compute';\n\nimport { TestingOperationHandlerSet } from '#operations';\n\nexport default Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(\n Effect.fnUntraced(function* () {\n return Capability.contributes(Capabilities.OperationHandler, TestingOperationHandlerSet);\n }),\n);\n"],"mappings":";;;;AAWA,IAAA,4BAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,OAAO,WAAW,YAAY,aAAa,kBAAkB,0BAA0B;AACzF,CAAC,CACH"}
1
+ {"version":3,"file":"chunk-operation-handler.mjs","names":[],"sources":["../../src/capabilities/operation-handler.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\n\nimport { TestingOperationHandlerSet } from '#operations';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contribute(Capabilities.OperationHandler, TestingOperationHandlerSet);\n }),\n);\n"],"mappings":";;;;;AAWA,IAAA,4BAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,OAAO,WAAW,WAAW,aAAa,kBAAkB,0BAA0B;AACxF,CAAC,CACH"}
@@ -0,0 +1,13 @@
1
+ import * as Capability from "@dxos/app-framework/Capability";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
4
+ import { Layout } from "#components";
5
+ //#region src/capabilities/react-context.tsx
6
+ var react_context_default = Capability.makeModule(() => Effect.succeed(Capability.contribute(Capabilities.ReactContext, {
7
+ id: "storybook-layout",
8
+ context: Layout
9
+ })));
10
+ //#endregion
11
+ export { react_context_default as default };
12
+
13
+ //# sourceMappingURL=chunk-react-context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-react-context.mjs","names":[],"sources":["../../src/capabilities/react-context.tsx"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\n\nimport { Layout } from '#components';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contribute(Capabilities.ReactContext, {\n id: 'storybook-layout',\n context: Layout,\n }),\n ),\n);\n"],"mappings":";;;;;AAWA,IAAA,wBAAe,WAAW,iBACxB,OAAO,QACL,WAAW,WAAW,aAAa,cAAc;CAC/C,IAAI;CACJ,SAAS;AACX,CAAC,CACH,CACF"}
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };
@@ -1,6 +1,6 @@
1
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
2
+ import * as Operation from "@dxos/compute/Operation";
1
3
  import * as Effect from "effect/Effect";
2
- import { LayoutOperation } from "@dxos/app-toolkit";
3
- import { Operation } from "@dxos/compute";
4
4
  //#region src/operations/scroll-into-view.ts
5
5
  var handler = LayoutOperation.ScrollIntoView.pipe(Operation.withHandler(() => Effect.void));
6
6
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-scroll-into-view.mjs","names":[],"sources":["../../src/operations/scroll-into-view.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.ScrollIntoView> = LayoutOperation.ScrollIntoView.pipe(\n Operation.withHandler(() => Effect.void),\n);\n\nexport default handler;\n"],"mappings":";;;;AASA,IAAM,UAAwE,gBAAgB,eAAe,KAC3G,UAAU,kBAAkB,OAAO,IAAI,CACzC"}
1
+ {"version":3,"file":"chunk-scroll-into-view.mjs","names":[],"sources":["../../src/operations/scroll-into-view.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.ScrollIntoView> = LayoutOperation.ScrollIntoView.pipe(\n Operation.withHandler(() => Effect.void),\n);\n\nexport default handler;\n"],"mappings":";;;;AASA,IAAM,UAAwE,gBAAgB,eAAe,KAC3G,UAAU,kBAAkB,OAAO,IAAI,CACzC"}
@@ -1,8 +1,8 @@
1
- import { Capability } from "@dxos/app-framework";
2
- import * as Effect from "effect/Effect";
3
- import { AppCapabilities } from "@dxos/app-toolkit";
1
+ import * as Capability from "@dxos/app-framework/Capability";
2
+ import * as AppCapabilities from "@dxos/app-toolkit/AppCapabilities";
4
3
  import { StorybookCapabilities } from "#types";
5
- import { Atom } from "@effect-atom/atom";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Atom from "effect/unstable/reactivity/Atom";
6
6
  //#region src/capabilities/state.tsx
7
7
  var defaultState = {
8
8
  sidebarState: "closed",
@@ -30,7 +30,7 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* (props) {
30
30
  scrollIntoView: void 0
31
31
  };
32
32
  });
33
- return [Capability.contributes(StorybookCapabilities.LayoutState, stateAtom), Capability.contributes(AppCapabilities.Layout, layoutAtom)];
33
+ return [Capability.contribute(StorybookCapabilities.LayoutState, stateAtom), Capability.contribute(AppCapabilities.Layout, layoutAtom)];
34
34
  }));
35
35
  //#endregion
36
36
  export { state_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-state.mjs","names":[],"sources":["../../src/capabilities/state.tsx"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\nimport { StorybookCapabilities } from '#types';\n\nconst defaultState: StorybookCapabilities.LayoutStateProps = {\n sidebarState: 'closed',\n complementarySidebarState: 'closed',\n dialogOpen: false,\n toasts: [],\n workspace: 'default',\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* (props?: { initialState?: Partial<StorybookCapabilities.LayoutStateProps> }) {\n const { initialState } = props ?? {};\n const stateAtom = Atom.make<StorybookCapabilities.LayoutStateProps>({ ...defaultState, ...initialState });\n\n const layoutAtom = Atom.make((get): AppCapabilities.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(StorybookCapabilities.LayoutState, stateAtom),\n Capability.contributes(AppCapabilities.Layout, layoutAtom),\n ];\n }),\n);\n"],"mappings":";;;;;;AAYA,IAAM,eAAuD;CAC3D,cAAc;CACd,2BAA2B;CAC3B,YAAY;CACZ,QAAQ,CAAC;CACT,WAAW;AACb;AAEA,IAAA,gBAAe,WAAW,WACxB,OAAO,WAAW,WAAW,OAA4E;CACvG,MAAM,EAAE,iBAAiB,SAAS,CAAC;CACnC,MAAM,YAAY,KAAK,KAA6C;EAAE,GAAG;EAAc,GAAG;CAAa,CAAC;CAExG,MAAM,aAAa,KAAK,MAAM,QAAgC;EAC5D,MAAM,QAAQ,IAAI,SAAS;EAC3B,OAAO;GACL,MAAM;GACN,YAAY,MAAM;GAClB,aAAa,MAAM,iBAAiB;GACpC,0BAA0B,MAAM,8BAA8B;GAC9D,WAAW,MAAM;GACjB,QAAQ,CAAC;GACT,UAAU,CAAC;GACX,gBAAgB,KAAA;EAClB;CACF,CAAC;CAED,OAAO,CACL,WAAW,YAAY,sBAAsB,aAAa,SAAS,GACnE,WAAW,YAAY,gBAAgB,QAAQ,UAAU,CAC3D;AACF,CAAC,CACH"}
1
+ {"version":3,"file":"chunk-state.mjs","names":[],"sources":["../../src/capabilities/state.tsx"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Atom from 'effect/unstable/reactivity/Atom';\n\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';\n\nimport { StorybookCapabilities } from '#types';\n\nconst defaultState: StorybookCapabilities.LayoutStateProps = {\n sidebarState: 'closed',\n complementarySidebarState: 'closed',\n dialogOpen: false,\n toasts: [],\n workspace: 'default',\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* (props?: { initialState?: Partial<StorybookCapabilities.LayoutStateProps> }) {\n const { initialState } = props ?? {};\n const stateAtom = Atom.make<StorybookCapabilities.LayoutStateProps>({ ...defaultState, ...initialState });\n\n const layoutAtom = Atom.make((get): AppCapabilities.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.contribute(StorybookCapabilities.LayoutState, stateAtom),\n Capability.contribute(AppCapabilities.Layout, layoutAtom),\n ];\n }),\n);\n"],"mappings":";;;;;;AAYA,IAAM,eAAuD;CAC3D,cAAc;CACd,2BAA2B;CAC3B,YAAY;CACZ,QAAQ,CAAC;CACT,WAAW;AACb;AAEA,IAAA,gBAAe,WAAW,WACxB,OAAO,WAAW,WAAW,OAA4E;CACvG,MAAM,EAAE,iBAAiB,SAAS,CAAC;CACnC,MAAM,YAAY,KAAK,KAA6C;EAAE,GAAG;EAAc,GAAG;CAAa,CAAC;CAExG,MAAM,aAAa,KAAK,MAAM,QAAgC;EAC5D,MAAM,QAAQ,IAAI,SAAS;EAC3B,OAAO;GACL,MAAM;GACN,YAAY,MAAM;GAClB,aAAa,MAAM,iBAAiB;GACpC,0BAA0B,MAAM,8BAA8B;GAC9D,WAAW,MAAM;GACjB,QAAQ,CAAC;GACT,UAAU,CAAC;GACX,gBAAgB,KAAA;EAClB;CACF,CAAC;CAED,OAAO,CACL,WAAW,WAAW,sBAAsB,aAAa,SAAS,GAClE,WAAW,WAAW,gBAAgB,QAAQ,UAAU,CAC1D;AACF,CAAC,CACH"}
@@ -1,7 +1,7 @@
1
1
  import { t as updateState } from "./chunk-update-state.mjs";
2
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
3
+ import * as Operation from "@dxos/compute/Operation";
2
4
  import * as Effect from "effect/Effect";
3
- import { LayoutOperation } from "@dxos/app-toolkit";
4
- import { Operation } from "@dxos/compute";
5
5
  //#region src/operations/switch-workspace.ts
6
6
  var handler = LayoutOperation.SwitchWorkspace.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ subject }) {
7
7
  yield* updateState(() => ({ workspace: subject }));
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-switch-workspace.mjs","names":[],"sources":["../../src/operations/switch-workspace.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.SwitchWorkspace> = LayoutOperation.SwitchWorkspace.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ subject }) {\n yield* updateState(() => ({ workspace: subject }));\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAyE,gBAAgB,gBAAgB,KAC7G,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,WAAW;CACxC,OAAO,mBAAmB,EAAE,WAAW,QAAQ,EAAE;AACnD,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-switch-workspace.mjs","names":[],"sources":["../../src/operations/switch-workspace.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.SwitchWorkspace> = LayoutOperation.SwitchWorkspace.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ subject }) {\n yield* updateState(() => ({ workspace: subject }));\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAyE,gBAAgB,gBAAgB,KAC7G,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,WAAW;CACxC,OAAO,mBAAmB,EAAE,WAAW,QAAQ,EAAE;AACnD,CAAC,CACH,CACF"}
@@ -1,7 +1,7 @@
1
1
  import { t as updateState } from "./chunk-update-state.mjs";
2
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
3
+ import * as Operation from "@dxos/compute/Operation";
2
4
  import * as Effect from "effect/Effect";
3
- import { LayoutOperation } from "@dxos/app-toolkit";
4
- import { Operation } from "@dxos/compute";
5
5
  //#region src/operations/update-complementary.ts
6
6
  var handler = LayoutOperation.UpdateComplementary.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ state }) {
7
7
  yield* updateState((layout) => {
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-update-complementary.mjs","names":[],"sources":["../../src/operations/update-complementary.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdateComplementary> =\n LayoutOperation.UpdateComplementary.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ state }) {\n yield* updateState((layout) => {\n const next = state ?? layout.complementarySidebarState;\n if (next !== layout.complementarySidebarState) {\n return { complementarySidebarState: next };\n }\n return {};\n });\n }),\n ),\n );\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UACJ,gBAAgB,oBAAoB,KAClC,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,SAAS;CACtC,OAAO,aAAa,WAAW;EAC7B,MAAM,OAAO,SAAS,OAAO;EAC7B,IAAI,SAAS,OAAO,2BAClB,OAAO,EAAE,2BAA2B,KAAK;EAE3C,OAAO,CAAC;CACV,CAAC;AACH,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-update-complementary.mjs","names":[],"sources":["../../src/operations/update-complementary.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdateComplementary> =\n LayoutOperation.UpdateComplementary.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ state }) {\n yield* updateState((layout) => {\n const next = state ?? layout.complementarySidebarState;\n if (next !== layout.complementarySidebarState) {\n return { complementarySidebarState: next };\n }\n return {};\n });\n }),\n ),\n );\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UACJ,gBAAgB,oBAAoB,KAClC,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,SAAS;CACtC,OAAO,aAAa,WAAW;EAC7B,MAAM,OAAO,SAAS,OAAO;EAC7B,IAAI,SAAS,OAAO,2BAClB,OAAO,EAAE,2BAA2B,KAAK;EAE3C,OAAO,CAAC;CACV,CAAC;AACH,CAAC,CACH,CACF"}
@@ -1,7 +1,7 @@
1
1
  import { t as updateState } from "./chunk-update-state.mjs";
2
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
3
+ import * as Operation from "@dxos/compute/Operation";
2
4
  import * as Effect from "effect/Effect";
3
- import { LayoutOperation } from "@dxos/app-toolkit";
4
- import { Operation } from "@dxos/compute";
5
5
  //#region src/operations/update-dialog.ts
6
6
  var handler = LayoutOperation.UpdateDialog.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ subject, state, type, blockAlign, overlayClasses, overlayStyle, props }) {
7
7
  yield* updateState(() => ({
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-update-dialog.mjs","names":[],"sources":["../../src/operations/update-dialog.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdateDialog> = LayoutOperation.UpdateDialog.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ subject, state, type, blockAlign, overlayClasses, overlayStyle, props }) {\n yield* 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);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAsE,gBAAgB,aAAa,KACvG,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,SAAS,OAAO,MAAM,YAAY,gBAAgB,cAAc,SAAS;CACtG,OAAO,mBAAmB;EACxB,YAAY,SAAS,QAAQ,OAAO;EACpC,YAAY,QAAQ;EACpB,kBAAkB,cAAc;EAChC,sBAAsB;EACtB,oBAAoB;EACpB,eAAe,UAAU;GAAE,WAAW;GAAS;EAAM,IAAI;CAC3D,EAAE;AACJ,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-update-dialog.mjs","names":[],"sources":["../../src/operations/update-dialog.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdateDialog> = LayoutOperation.UpdateDialog.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ subject, state, type, blockAlign, overlayClasses, overlayStyle, props }) {\n yield* 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);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAsE,gBAAgB,aAAa,KACvG,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,SAAS,OAAO,MAAM,YAAY,gBAAgB,cAAc,SAAS;CACtG,OAAO,mBAAmB;EACxB,YAAY,SAAS,QAAQ,OAAO;EACpC,YAAY,QAAQ;EACpB,kBAAkB,cAAc;EAChC,sBAAsB;EACtB,oBAAoB;EACpB,eAAe,UAAU;GAAE,WAAW;GAAS;EAAM,IAAI;CAC3D,EAAE;AACJ,CAAC,CACH,CACF"}
@@ -1,7 +1,7 @@
1
1
  import { t as updateState } from "./chunk-update-state.mjs";
2
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
3
+ import * as Operation from "@dxos/compute/Operation";
2
4
  import * as Effect from "effect/Effect";
3
- import { LayoutOperation } from "@dxos/app-toolkit";
4
- import { Operation } from "@dxos/compute";
5
5
  //#region src/operations/update-popover.ts
6
6
  var handler = LayoutOperation.UpdatePopover.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
7
7
  const { subject, state, side, kind, props } = input;
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-update-popover.mjs","names":[],"sources":["../../src/operations/update-popover.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nimport { StorybookCapabilities } from '../types';\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdatePopover> = LayoutOperation.UpdatePopover.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { subject, state, side, kind, props } = input;\n yield* updateState(() => {\n const base: Partial<StorybookCapabilities.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);\n\nexport default handler;\n"],"mappings":";;;;;AAYA,IAAM,UAAuE,gBAAgB,cAAc,KACzG,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,MAAM,EAAE,SAAS,OAAO,MAAM,MAAM,UAAU;CAC9C,OAAO,kBAAkB;EACvB,MAAM,OAAwD;GAC5D,aAAa,QAAQ;GACrB,cAAc,SAAS,SAAS,MAAM,QAAQ,KAAA;GAC9C,gBACE,OAAO,YAAY,WAAW;IAAE,WAAW;IAAS;GAAM,IAAI,UAAU,EAAE,QAAQ,IAAI,KAAA;GACxF,aAAa,SAAS,QAAQ,OAAO;GACrC,aAAa;EACf;EACA,IAAI,aAAa,SAAS,MAAM,YAAY,WAC1C,OAAO;GAAE,GAAG;GAAM,gBAAgB;GAAW,eAAe,MAAM;EAAO;OACpE,IAAI,cAAc,OACvB,OAAO;GAAE,GAAG;GAAM,gBAAgB;GAAS,iBAAiB,MAAM;EAAS;EAE7E,OAAO;CACT,CAAC;AACH,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-update-popover.mjs","names":[],"sources":["../../src/operations/update-popover.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nimport { StorybookCapabilities } from '#types';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdatePopover> = LayoutOperation.UpdatePopover.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { subject, state, side, kind, props } = input;\n yield* updateState(() => {\n const base: Partial<StorybookCapabilities.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);\n\nexport default handler;\n"],"mappings":";;;;;AAaA,IAAM,UAAuE,gBAAgB,cAAc,KACzG,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,MAAM,EAAE,SAAS,OAAO,MAAM,MAAM,UAAU;CAC9C,OAAO,kBAAkB;EACvB,MAAM,OAAwD;GAC5D,aAAa,QAAQ;GACrB,cAAc,SAAS,SAAS,MAAM,QAAQ,KAAA;GAC9C,gBACE,OAAO,YAAY,WAAW;IAAE,WAAW;IAAS;GAAM,IAAI,UAAU,EAAE,QAAQ,IAAI,KAAA;GACxF,aAAa,SAAS,QAAQ,OAAO;GACrC,aAAa;EACf;EACA,IAAI,aAAa,SAAS,MAAM,YAAY,WAC1C,OAAO;GAAE,GAAG;GAAM,gBAAgB;GAAW,eAAe,MAAM;EAAO;OACpE,IAAI,cAAc,OACvB,OAAO;GAAE,GAAG;GAAM,gBAAgB;GAAS,iBAAiB,MAAM;EAAS;EAE7E,OAAO;CACT,CAAC;AACH,CAAC,CACH,CACF"}
@@ -1,7 +1,7 @@
1
1
  import { t as updateState } from "./chunk-update-state.mjs";
2
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
3
+ import * as Operation from "@dxos/compute/Operation";
2
4
  import * as Effect from "effect/Effect";
3
- import { LayoutOperation } from "@dxos/app-toolkit";
4
- import { Operation } from "@dxos/compute";
5
5
  //#region src/operations/update-sidebar.ts
6
6
  var handler = LayoutOperation.UpdateSidebar.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ state }) {
7
7
  yield* updateState((layout) => {
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-update-sidebar.mjs","names":[],"sources":["../../src/operations/update-sidebar.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdateSidebar> = LayoutOperation.UpdateSidebar.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ state }) {\n yield* updateState((layout) => {\n const next = state ?? layout.sidebarState;\n if (next !== layout.sidebarState) {\n return { sidebarState: next };\n }\n return {};\n });\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAuE,gBAAgB,cAAc,KACzG,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,SAAS;CACtC,OAAO,aAAa,WAAW;EAC7B,MAAM,OAAO,SAAS,OAAO;EAC7B,IAAI,SAAS,OAAO,cAClB,OAAO,EAAE,cAAc,KAAK;EAE9B,OAAO,CAAC;CACV,CAAC;AACH,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-update-sidebar.mjs","names":[],"sources":["../../src/operations/update-sidebar.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport * as Operation from '@dxos/compute/Operation';\n\nimport { updateState } from './update-state';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdateSidebar> = LayoutOperation.UpdateSidebar.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ state }) {\n yield* updateState((layout) => {\n const next = state ?? layout.sidebarState;\n if (next !== layout.sidebarState) {\n return { sidebarState: next };\n }\n return {};\n });\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;AAWA,IAAM,UAAuE,gBAAgB,cAAc,KACzG,UAAU,YACR,OAAO,WAAW,WAAW,EAAE,SAAS;CACtC,OAAO,aAAa,WAAW;EAC7B,MAAM,OAAO,SAAS,OAAO;EAC7B,IAAI,SAAS,OAAO,cAClB,OAAO,EAAE,cAAc,KAAK;EAE9B,OAAO,CAAC;CACV,CAAC;AACH,CAAC,CACH,CACF"}
@@ -1,11 +1,12 @@
1
- import { t as LayoutState } from "./chunk-types.mjs";
2
- import { Capabilities, Capability } from "@dxos/app-framework";
1
+ import * as Capability from "@dxos/app-framework/Capability";
2
+ import { StorybookCapabilities } from "#types";
3
3
  import * as Effect from "effect/Effect";
4
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
4
5
  import * as Option from "effect/Option";
5
6
  //#region src/operations/update-state.ts
6
7
  var updateState = (fn) => Effect.gen(function* () {
7
8
  const registry = yield* Capability.get(Capabilities.AtomRegistry);
8
- const stateAtomOption = yield* Effect.option(Capability.get(LayoutState));
9
+ const stateAtomOption = yield* Effect.option(Capability.get(StorybookCapabilities.LayoutState));
9
10
  if (Option.isNone(stateAtomOption)) return;
10
11
  const stateAtom = stateAtomOption.value;
11
12
  const current = registry.get(stateAtom);
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-update-state.mjs","names":[],"sources":["../../src/operations/update-state.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\n\nimport { StorybookCapabilities } from '../types';\n\nexport const updateState = (\n fn: (state: StorybookCapabilities.LayoutStateProps) => Partial<StorybookCapabilities.LayoutStateProps>,\n) =>\n Effect.gen(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n // LayoutState may be absent when the plugin manager has been disposed (e.g. after a storybook test\n // completes but a background Effect fiber is still in flight). Treat this as a no-op.\n const stateAtomOption = yield* Effect.option(Capability.get(StorybookCapabilities.LayoutState));\n if (Option.isNone(stateAtomOption)) {\n return;\n }\n const stateAtom = stateAtomOption.value;\n const current = registry.get(stateAtom);\n registry.set(stateAtom, { ...current, ...fn(current) });\n });\n"],"mappings":";;;;;AAWA,IAAa,eACX,OAEA,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,OAAO,WAAW,IAAI,aAAa,YAAY;CAGhE,MAAM,kBAAkB,OAAO,OAAO,OAAO,WAAW,IAAI,WAAiC,CAAC;CAC9F,IAAI,OAAO,OAAO,eAAe,GAC/B;CAEF,MAAM,YAAY,gBAAgB;CAClC,MAAM,UAAU,SAAS,IAAI,SAAS;CACtC,SAAS,IAAI,WAAW;EAAE,GAAG;EAAS,GAAG,GAAG,OAAO;CAAE,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"chunk-update-state.mjs","names":[],"sources":["../../src/operations/update-state.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\n\nimport { StorybookCapabilities } from '#types';\n\nexport const updateState = (\n fn: (state: StorybookCapabilities.LayoutStateProps) => Partial<StorybookCapabilities.LayoutStateProps>,\n) =>\n Effect.gen(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n // LayoutState may be absent when the plugin manager has been disposed (e.g. after a storybook test\n // completes but a background Effect fiber is still in flight). Treat this as a no-op.\n const stateAtomOption = yield* Effect.option(Capability.get(StorybookCapabilities.LayoutState));\n if (Option.isNone(stateAtomOption)) {\n return;\n }\n const stateAtom = stateAtomOption.value;\n const current = registry.get(stateAtom);\n registry.set(stateAtom, { ...current, ...fn(current) });\n });\n"],"mappings":";;;;;;AAYA,IAAa,eACX,OAEA,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,OAAO,WAAW,IAAI,aAAa,YAAY;CAGhE,MAAM,kBAAkB,OAAO,OAAO,OAAO,WAAW,IAAI,sBAAsB,WAAW,CAAC;CAC9F,IAAI,OAAO,OAAO,eAAe,GAC/B;CAEF,MAAM,YAAY,gBAAgB;CAClC,MAAM,UAAU,SAAS,IAAI,SAAS;CACtC,SAAS,IAAI,WAAW;EAAE,GAAG;EAAS,GAAG,GAAG,OAAO;CAAE,CAAC;AACxD,CAAC"}
@@ -1,12 +1,13 @@
1
- import { AlertDialog, Button, Card, Dialog, Main, Popover, Toast, toLocalizedString, useTranslation } from "@dxos/react-ui";
1
+ import { StorybookCapabilities } from "#types";
2
2
  import { meta } from "#meta";
3
- import { RegistryContext, useAtomValue } from "@effect-atom/atom-react";
3
+ import { AlertDialog, Button, Card, Dialog, Main, Popover, Toast, toLocalizedString, useTranslation } from "@dxos/react-ui";
4
+ import { useAtomValue } from "@effect/atom-react/Hooks";
5
+ import { RegistryContext } from "@effect/atom-react/RegistryContext";
4
6
  import { useCallback, useContext, useEffect, useRef, useState } from "react";
5
7
  import { Surface, useCapability } from "@dxos/app-framework/ui";
6
8
  import { AppSurface } from "@dxos/app-toolkit/ui";
7
9
  import { Dnd } from "@dxos/react-ui-dnd";
8
10
  import { descriptionMessage, mx } from "@dxos/ui-theme";
9
- import { StorybookCapabilities } from "#types";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
11
12
  //#region src/components/Layout/Layout.tsx
12
13
  var debounce_delay = 100;
@@ -1 +1 @@
1
- {"version":3,"file":"components.mjs","names":[],"sources":["../../src/components/Layout/Layout.tsx"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { RegistryContext, useAtomValue } from '@effect-atom/atom-react';\nimport React, { type PropsWithChildren, useCallback, useContext, useEffect, useRef, useState } from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework/ui';\nimport { type LayoutOperation } from '@dxos/app-toolkit';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport {\n AlertDialog,\n Button,\n Dialog,\n Main,\n Popover,\n type PopoverContentInteractOutsideEvent,\n Toast,\n toLocalizedString,\n useTranslation,\n} from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\nimport { Dnd } from '@dxos/react-ui-dnd';\nimport { descriptionMessage, mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\nimport { StorybookCapabilities } from '#types';\n\nconst debounce_delay = 100;\n\nconst StoryToast = ({ toast, onDismiss }: { toast: LayoutOperation.Toast; onDismiss: (id: string) => void }) => {\n const { t } = useTranslation(meta.profile.key);\n return (\n <Toast.Root\n data-testid={toast.id}\n defaultOpen\n duration={toast.duration}\n onOpenChange={(open) => {\n if (!open) {\n onDismiss(toast.id);\n }\n }}\n >\n <Toast.Title icon={toast.icon} onClose={toast.closeLabel ? () => onDismiss(toast.id) : undefined}>\n {toast.title && <span>{toLocalizedString(toast.title, t)}</span>}\n </Toast.Title>\n {toast.description && <Toast.Description>{toLocalizedString(toast.description, t)}</Toast.Description>}\n {toast.onAction && toast.actionAlt && toast.actionLabel && (\n <Toast.Actions>\n <Toast.Action altText={toLocalizedString(toast.actionAlt, t)} asChild>\n <Button variant='primary' onClick={() => toast.onAction?.()}>\n {toLocalizedString(toast.actionLabel, t)}\n </Button>\n </Toast.Action>\n </Toast.Actions>\n )}\n </Toast.Root>\n );\n};\n\nexport const Layout = ({ children }: PropsWithChildren<{}>) => {\n const { t } = useTranslation(meta.profile.key);\n const trigger = useRef<HTMLButtonElement | null>(null);\n const registry = useContext(RegistryContext);\n const stateAtom = useCapability(StorybookCapabilities.LayoutState);\n const layout = useAtomValue(stateAtom);\n const [iter, setIter] = useState(0);\n const [open, setOpen] = useState(false);\n const debounceRef = useRef<NodeJS.Timeout | null>(null);\n\n const updateState = useCallback(\n (updates: Partial<StorybookCapabilities.LayoutStateProps>) => {\n const current = registry.get(stateAtom);\n registry.set(stateAtom, { ...current, ...updates });\n },\n [registry, stateAtom],\n );\n\n useEffect(() => {\n setOpen(false);\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n trigger.current = layout.popoverAnchor ?? null;\n setIter((iter) => iter + 1);\n if (layout.popoverOpen) {\n debounceRef.current = setTimeout(() => setOpen(true), debounce_delay);\n }\n }, [layout.popoverAnchor, layout.popoverContent, layout.popoverOpen]);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n updateState({\n popoverOpen: false,\n popoverAnchor: undefined,\n popoverAnchorId: undefined,\n popoverSide: undefined,\n });\n }, [updateState]);\n\n const handleInteractOutside = useCallback(\n (event: KeyboardEvent | PopoverContentInteractOutsideEvent) => {\n if (\n // TODO(thure): CodeMirror should not focus itself when it updates.\n event.type === 'dismissableLayer.focusOutside' &&\n (event.currentTarget as HTMLElement | undefined)?.classList.contains('cm-content')\n ) {\n event.preventDefault();\n } else {\n handleClose();\n }\n },\n [handleClose],\n );\n\n const handleDismissToast = useCallback(\n (id: string) => {\n updateState({ toasts: layout.toasts.filter((toast) => toast.id !== id) });\n },\n [updateState, layout.toasts],\n );\n\n const DialogRoot = layout.dialogType === 'alert' ? AlertDialog.Root : Dialog.Root;\n const DialogOverlay = layout.dialogType === 'alert' ? AlertDialog.Overlay : Dialog.Overlay;\n\n return (\n <Toast.Provider>\n <div className='fixed inset-0 flex overflow-hidden'>\n <Dnd.Root>\n <Popover.Root open={open}>\n <Main.Root\n navigationSidebarState={layout.sidebarState}\n complementarySidebarState={layout.complementarySidebarState}\n onNavigationSidebarStateChange={(next) => updateState({ sidebarState: next })}\n onComplementarySidebarStateChange={(next) => updateState({ complementarySidebarState: next })}\n >\n {children}\n </Main.Root>\n\n <DialogRoot\n modal={layout.dialogBlockAlign !== 'end'}\n open={layout.dialogOpen}\n onOpenChange={(nextOpen) => updateState({ dialogOpen: nextOpen })}\n >\n {layout.dialogBlockAlign === 'end' ? (\n <Surface.Surface\n type={AppSurface.Dialog}\n data={layout.dialogContent}\n limit={1}\n fallback={ErrorFallback}\n placeholder={<div />}\n />\n ) : (\n <DialogOverlay\n blockAlign={layout.dialogBlockAlign}\n classNames={layout.dialogOverlayClasses}\n style={layout.dialogOverlayStyle}\n >\n <Surface.Surface\n type={AppSurface.Dialog}\n data={layout.dialogContent}\n limit={1}\n fallback={ErrorFallback}\n />\n </DialogOverlay>\n )}\n </DialogRoot>\n\n <Popover.VirtualTrigger key={iter} virtualRef={trigger} />\n <Popover.Portal>\n <Popover.Content\n side={layout.popoverSide}\n onOpenAutoFocus={(event) => event.preventDefault()}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleInteractOutside}\n sticky='always'\n hideWhenDetached\n >\n <Popover.Viewport>\n {layout.popoverKind === 'card' && (\n <Card.Root>\n <Card.Header>\n {/* Disabled drag handle keeps the toolbar slot layout consistent with regular cards. */}\n <Card.DragHandle />\n {layout.popoverTitle ? (\n <Card.Title>{toLocalizedString(layout.popoverTitle, t)}</Card.Title>\n ) : (\n <span />\n )}\n <Card.ActionIconButton action='close' onClick={handleClose} />\n </Card.Header>\n <Surface.Surface type={AppSurface.CardContent} data={layout.popoverContent} limit={1} />\n </Card.Root>\n )}\n {(layout.popoverKind === 'base' || layout.popoverKind === 'rename') && (\n <Surface.Surface type={AppSurface.Popover} data={layout.popoverContent} limit={1} />\n )}\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </Dnd.Root>\n {layout.toasts.map((toast) => (\n <StoryToast key={toast.id} toast={toast} onDismiss={handleDismissToast} />\n ))}\n <Toast.Viewport />\n </div>\n </Toast.Provider>\n );\n};\n\nexport const ErrorFallback = ({ error }: { error?: Error }) => {\n const { t } = useTranslation(meta.profile.key);\n const errorString = error?.toString() ?? '';\n return (\n <div\n role='alert'\n data-testid='error-boundary-fallback'\n className={mx('overflow-auto p-8 dx-attention-surface grid place-items-center')}\n >\n <p className={mx(descriptionMessage, 'break-words rounded-md p-8', errorString.length < 256 && 'text-lg')}>\n {error ? errorString : t('error-fallback.message')}\n </p>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"components.mjs","names":[],"sources":["../../src/components/Layout/Layout.tsx"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { useAtomValue } from '@effect/atom-react/Hooks';\nimport { RegistryContext } from '@effect/atom-react/RegistryContext';\nimport React, { type PropsWithChildren, useCallback, useContext, useEffect, useRef, useState } from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework/ui';\nimport type * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport {\n AlertDialog,\n Button,\n Dialog,\n Main,\n Popover,\n type PopoverContentInteractOutsideEvent,\n Toast,\n toLocalizedString,\n useTranslation,\n} from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\nimport { Dnd } from '@dxos/react-ui-dnd';\nimport { descriptionMessage, mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\nimport { StorybookCapabilities } from '#types';\n\nconst debounce_delay = 100;\n\nconst StoryToast = ({ toast, onDismiss }: { toast: LayoutOperation.Toast; onDismiss: (id: string) => void }) => {\n const { t } = useTranslation(meta.profile.key);\n return (\n <Toast.Root\n data-testid={toast.id}\n defaultOpen\n duration={toast.duration}\n onOpenChange={(open) => {\n if (!open) {\n onDismiss(toast.id);\n }\n }}\n >\n <Toast.Title icon={toast.icon} onClose={toast.closeLabel ? () => onDismiss(toast.id) : undefined}>\n {toast.title && <span>{toLocalizedString(toast.title, t)}</span>}\n </Toast.Title>\n {toast.description && <Toast.Description>{toLocalizedString(toast.description, t)}</Toast.Description>}\n {toast.onAction && toast.actionAlt && toast.actionLabel && (\n <Toast.Actions>\n <Toast.Action altText={toLocalizedString(toast.actionAlt, t)} asChild>\n <Button variant='primary' onClick={() => toast.onAction?.()}>\n {toLocalizedString(toast.actionLabel, t)}\n </Button>\n </Toast.Action>\n </Toast.Actions>\n )}\n </Toast.Root>\n );\n};\n\nexport const Layout = ({ children }: PropsWithChildren<{}>) => {\n const { t } = useTranslation(meta.profile.key);\n const trigger = useRef<HTMLButtonElement | null>(null);\n const registry = useContext(RegistryContext);\n const stateAtom = useCapability(StorybookCapabilities.LayoutState);\n const layout = useAtomValue(stateAtom);\n const [iter, setIter] = useState(0);\n const [open, setOpen] = useState(false);\n const debounceRef = useRef<NodeJS.Timeout | null>(null);\n\n const updateState = useCallback(\n (updates: Partial<StorybookCapabilities.LayoutStateProps>) => {\n const current = registry.get(stateAtom);\n registry.set(stateAtom, { ...current, ...updates });\n },\n [registry, stateAtom],\n );\n\n useEffect(() => {\n setOpen(false);\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n trigger.current = layout.popoverAnchor ?? null;\n setIter((iter) => iter + 1);\n if (layout.popoverOpen) {\n debounceRef.current = setTimeout(() => setOpen(true), debounce_delay);\n }\n }, [layout.popoverAnchor, layout.popoverContent, layout.popoverOpen]);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n updateState({\n popoverOpen: false,\n popoverAnchor: undefined,\n popoverAnchorId: undefined,\n popoverSide: undefined,\n });\n }, [updateState]);\n\n const handleInteractOutside = useCallback(\n (event: KeyboardEvent | PopoverContentInteractOutsideEvent) => {\n if (\n // TODO(thure): CodeMirror should not focus itself when it updates.\n event.type === 'dismissableLayer.focusOutside' &&\n (event.currentTarget as HTMLElement | undefined)?.classList.contains('cm-content')\n ) {\n event.preventDefault();\n } else {\n handleClose();\n }\n },\n [handleClose],\n );\n\n const handleDismissToast = useCallback(\n (id: string) => {\n updateState({ toasts: layout.toasts.filter((toast) => toast.id !== id) });\n },\n [updateState, layout.toasts],\n );\n\n const DialogRoot = layout.dialogType === 'alert' ? AlertDialog.Root : Dialog.Root;\n const DialogOverlay = layout.dialogType === 'alert' ? AlertDialog.Overlay : Dialog.Overlay;\n\n return (\n <Toast.Provider>\n <div className='fixed inset-0 flex overflow-hidden'>\n <Dnd.Root>\n <Popover.Root open={open}>\n <Main.Root\n navigationSidebarState={layout.sidebarState}\n complementarySidebarState={layout.complementarySidebarState}\n onNavigationSidebarStateChange={(next) => updateState({ sidebarState: next })}\n onComplementarySidebarStateChange={(next) => updateState({ complementarySidebarState: next })}\n >\n {children}\n </Main.Root>\n\n <DialogRoot\n modal={layout.dialogBlockAlign !== 'end'}\n open={layout.dialogOpen}\n onOpenChange={(nextOpen) => updateState({ dialogOpen: nextOpen })}\n >\n {layout.dialogBlockAlign === 'end' ? (\n <Surface.Surface\n type={AppSurface.Dialog}\n data={layout.dialogContent}\n limit={1}\n fallback={ErrorFallback}\n placeholder={<div />}\n />\n ) : (\n <DialogOverlay\n blockAlign={layout.dialogBlockAlign}\n classNames={layout.dialogOverlayClasses}\n style={layout.dialogOverlayStyle}\n >\n <Surface.Surface\n type={AppSurface.Dialog}\n data={layout.dialogContent}\n limit={1}\n fallback={ErrorFallback}\n />\n </DialogOverlay>\n )}\n </DialogRoot>\n\n <Popover.VirtualTrigger key={iter} virtualRef={trigger} />\n <Popover.Portal>\n <Popover.Content\n side={layout.popoverSide}\n onOpenAutoFocus={(event) => event.preventDefault()}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleInteractOutside}\n sticky='always'\n hideWhenDetached\n >\n <Popover.Viewport>\n {layout.popoverKind === 'card' && (\n <Card.Root>\n <Card.Header>\n {/* Disabled drag handle keeps the toolbar slot layout consistent with regular cards. */}\n <Card.DragHandle />\n {layout.popoverTitle ? (\n <Card.Title>{toLocalizedString(layout.popoverTitle, t)}</Card.Title>\n ) : (\n <span />\n )}\n <Card.ActionIconButton action='close' onClick={handleClose} />\n </Card.Header>\n <Surface.Surface type={AppSurface.CardContent} data={layout.popoverContent} limit={1} />\n </Card.Root>\n )}\n {(layout.popoverKind === 'base' || layout.popoverKind === 'rename') && (\n <Surface.Surface type={AppSurface.Popover} data={layout.popoverContent} limit={1} />\n )}\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </Dnd.Root>\n {layout.toasts.map((toast) => (\n <StoryToast key={toast.id} toast={toast} onDismiss={handleDismissToast} />\n ))}\n <Toast.Viewport />\n </div>\n </Toast.Provider>\n );\n};\n\nexport const ErrorFallback = ({ error }: { error?: Error }) => {\n const { t } = useTranslation(meta.profile.key);\n const errorString = error?.toString() ?? '';\n return (\n <div\n role='alert'\n data-testid='error-boundary-fallback'\n className={mx('overflow-auto p-8 dx-attention-surface grid place-items-center')}\n >\n <p className={mx(descriptionMessage, 'break-words rounded-md p-8', errorString.length < 256 && 'text-lg')}>\n {error ? errorString : t('error-fallback.message')}\n </p>\n </div>\n );\n};\n"],"mappings":"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"}
package/dist/lib/core.mjs CHANGED
@@ -11,11 +11,11 @@ import { defaultTx } from "@dxos/react-ui";
11
11
  * Import SpacePlugin directly in your stories if needed.
12
12
  */
13
13
  var corePlugins = () => [
14
- AttentionPlugin(),
15
- GraphPlugin(),
14
+ AttentionPlugin.make(),
15
+ GraphPlugin.make(),
16
16
  ProcessManagerPlugin(),
17
- SettingsPlugin(),
18
- ThemePlugin({ tx: defaultTx })
17
+ SettingsPlugin.make(),
18
+ ThemePlugin.make({ tx: defaultTx })
19
19
  ];
20
20
  //#endregion
21
21
  export { corePlugins };
@@ -1 +1 @@
1
- {"version":3,"file":"core.mjs","names":[],"sources":["../../src/core.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Plugin, ProcessManagerPlugin } from '@dxos/app-framework';\n// `/testing` entrypoints re-export the plugin eagerly (without `Plugin.lazy`).\n// The default `.` and `/plugin` exports wrap each plugin in a lazy stub\n// (`() => import('./XPlugin')`), which webkit cannot reliably resolve under\n// vite-dev: the dynamic-import promise can settle with a partially-evaluated\n// namespace, throwing `ReferenceError: Cannot access 'default' before\n// initialization` from the loader's `mod.default` access. Storybook runs\n// inside `storybook dev` (vite-dev) and is currently the only host that hits\n// this. Production hosts (composer-app via `vite preview`) keep using the\n// lazy `.` exports and their associated code splitting.\n//\n// Use these `/testing` entrypoints from any storybook `withPluginManager`\n// setup. The single-line `export * from './XPlugin'` re-exports avoid the\n// dynamic-import path entirely — see e.g. `plugin-attention/src/testing.ts`.\nimport { AttentionPlugin } from '@dxos/plugin-attention/testing';\nimport { GraphPlugin } from '@dxos/plugin-graph/testing';\nimport { SettingsPlugin } from '@dxos/plugin-settings/testing';\nimport { ThemePlugin } from '@dxos/plugin-theme/testing';\nimport { defaultTx } from '@dxos/react-ui';\n\n/**\n * Core plugins for testing/storybook environments.\n * NOTE: Does not include SpacePlugin to avoid circular dependencies.\n * Import SpacePlugin directly in your stories if needed.\n */\nexport const corePlugins = (): Plugin.Plugin[] => [\n AttentionPlugin(),\n GraphPlugin(),\n ProcessManagerPlugin(),\n SettingsPlugin(),\n ThemePlugin({ tx: defaultTx }),\n];\n"],"mappings":";;;;;;;;;;;;AA6BA,IAAa,oBAAqC;CAChD,gBAAgB;CAChB,YAAY;CACZ,qBAAqB;CACrB,eAAe;CACf,YAAY,EAAE,IAAI,UAAU,CAAC;AAC/B"}
1
+ {"version":3,"file":"core.mjs","names":[],"sources":["../../src/core.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { ProcessManagerPlugin } from '@dxos/app-framework';\nimport type * as Plugin from '@dxos/app-framework/Plugin';\n// `/testing` entrypoints re-export the plugin eagerly (without `Plugin.lazy`).\n// The default `.` and `/plugin` exports wrap each plugin in a lazy stub\n// (`() => import('./XPlugin')`), which webkit cannot reliably resolve under\n// vite-dev: the dynamic-import promise can settle with a partially-evaluated\n// namespace, throwing `ReferenceError: Cannot access 'default' before\n// initialization` from the loader's `mod.default` access. Storybook runs\n// inside `storybook dev` (vite-dev) and is currently the only host that hits\n// this. Production hosts (composer-app via `vite preview`) keep using the\n// lazy `.` exports and their associated code splitting.\n//\n// Use these `/testing` entrypoints from any storybook `withPluginManager`\n// setup. The single-line `export * from './XPlugin'` re-exports avoid the\n// dynamic-import path entirely — see e.g. `plugin-attention/src/testing.ts`.\nimport { AttentionPlugin } from '@dxos/plugin-attention/testing';\nimport { GraphPlugin } from '@dxos/plugin-graph/testing';\nimport { SettingsPlugin } from '@dxos/plugin-settings/testing';\nimport { ThemePlugin } from '@dxos/plugin-theme/testing';\nimport { defaultTx } from '@dxos/react-ui';\n\n/**\n * Core plugins for testing/storybook environments.\n * NOTE: Does not include SpacePlugin to avoid circular dependencies.\n * Import SpacePlugin directly in your stories if needed.\n */\nexport const corePlugins = (): Plugin.Plugin[] => [\n AttentionPlugin.make(),\n GraphPlugin.make(),\n ProcessManagerPlugin(),\n SettingsPlugin.make(),\n ThemePlugin.make({ tx: defaultTx }),\n];\n"],"mappings":";;;;;;;;;;;;AA8BA,IAAa,oBAAqC;CAChD,gBAAgB,KAAK;CACrB,YAAY,KAAK;CACjB,qBAAqB;CACrB,eAAe,KAAK;CACpB,YAAY,KAAK,EAAE,IAAI,UAAU,CAAC;AACpC"}