@dxos/plugin-attention 0.9.1-staging.ee54ba693a → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/lib/AttentionPlugin.mjs +50 -0
  2. package/dist/lib/AttentionPlugin.mjs.map +1 -0
  3. package/dist/lib/capabilities.mjs +9 -0
  4. package/dist/lib/capabilities.mjs.map +1 -0
  5. package/dist/lib/chunk-keyboard.mjs +16 -0
  6. package/dist/lib/chunk-keyboard.mjs.map +1 -0
  7. package/dist/lib/{neutral/chunk-QWYNIPK3.mjs → chunk-meta.mjs} +13 -20
  8. package/dist/lib/chunk-meta.mjs.map +1 -0
  9. package/dist/lib/{neutral/operation-handler-O5PDEBTC.mjs → chunk-operation-handler.mjs} +7 -7
  10. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  11. package/dist/lib/chunk-react-context.mjs +26 -0
  12. package/dist/lib/chunk-react-context.mjs.map +1 -0
  13. package/dist/lib/chunk-select.mjs +48 -0
  14. package/dist/lib/chunk-select.mjs.map +1 -0
  15. package/dist/lib/index.mjs +3 -0
  16. package/dist/lib/meta.mjs +2 -0
  17. package/dist/lib/operations.mjs +7 -0
  18. package/dist/lib/operations.mjs.map +1 -0
  19. package/dist/lib/plugin.mjs +9 -0
  20. package/dist/lib/plugin.mjs.map +1 -0
  21. package/dist/lib/testing.mjs +2 -0
  22. package/dist/lib/types.mjs +34 -0
  23. package/dist/lib/types.mjs.map +1 -0
  24. package/dist/types/src/capabilities/keyboard.d.ts +1 -1
  25. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  26. package/dist/types/src/capabilities/react-context.d.ts +1 -1
  27. package/dist/types/src/stories/SelectionState.stories.d.ts.map +1 -1
  28. package/dist/types/src/types/capabilities.d.ts +3 -3
  29. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  30. package/dist/types/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +24 -24
  32. package/src/AttentionPlugin.ts +4 -4
  33. package/src/operations/select.ts +7 -7
  34. package/src/stories/SelectionState.stories.tsx +5 -11
  35. package/src/types/capabilities.ts +3 -3
  36. package/src/types/types.ts +2 -2
  37. package/dist/lib/neutral/AttentionPlugin.mjs +0 -9
  38. package/dist/lib/neutral/AttentionPlugin.mjs.map +0 -7
  39. package/dist/lib/neutral/capabilities/index.mjs +0 -11
  40. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  41. package/dist/lib/neutral/chunk-BJDXKPRR.mjs +0 -63
  42. package/dist/lib/neutral/chunk-BJDXKPRR.mjs.map +0 -7
  43. package/dist/lib/neutral/chunk-KYZ6BP6Z.mjs +0 -41
  44. package/dist/lib/neutral/chunk-KYZ6BP6Z.mjs.map +0 -7
  45. package/dist/lib/neutral/chunk-QWYNIPK3.mjs.map +0 -7
  46. package/dist/lib/neutral/chunk-VO5BJP5D.mjs +0 -8
  47. package/dist/lib/neutral/chunk-VO5BJP5D.mjs.map +0 -7
  48. package/dist/lib/neutral/index.mjs +0 -15
  49. package/dist/lib/neutral/index.mjs.map +0 -7
  50. package/dist/lib/neutral/keyboard-LFMKJ3H7.mjs +0 -17
  51. package/dist/lib/neutral/keyboard-LFMKJ3H7.mjs.map +0 -7
  52. package/dist/lib/neutral/meta.json +0 -1
  53. package/dist/lib/neutral/meta.mjs +0 -7
  54. package/dist/lib/neutral/meta.mjs.map +0 -7
  55. package/dist/lib/neutral/operation-handler-O5PDEBTC.mjs.map +0 -7
  56. package/dist/lib/neutral/operations/index.mjs +0 -7
  57. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  58. package/dist/lib/neutral/plugin.mjs +0 -15
  59. package/dist/lib/neutral/plugin.mjs.map +0 -7
  60. package/dist/lib/neutral/react-context-G6G3ZRFI.mjs +0 -26
  61. package/dist/lib/neutral/react-context-G6G3ZRFI.mjs.map +0 -7
  62. package/dist/lib/neutral/select-AR23P2VZ.mjs +0 -68
  63. package/dist/lib/neutral/select-AR23P2VZ.mjs.map +0 -7
  64. package/dist/lib/neutral/testing.mjs +0 -7
  65. package/dist/lib/neutral/testing.mjs.map +0 -7
  66. package/dist/lib/neutral/types/index.mjs +0 -11
  67. package/dist/lib/neutral/types/index.mjs.map +0 -7
@@ -0,0 +1,50 @@
1
+ import { ActivationEvent, 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 { Attention, ViewState, createDefaultBackends } from "@dxos/react-ui-attention";
6
+ import { Keyboard, OperationHandler, ReactContext } from "#capabilities";
7
+ import { AttentionCapabilities, AttentionEvents } from "#types";
8
+ //#region src/AttentionPlugin.ts
9
+ var AttentionPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({ activate: OperationHandler }), Plugin.addModule({
10
+ id: "attention",
11
+ activatesOn: ActivationEvents.Startup,
12
+ firesAfterActivation: [AttentionEvents.AttentionReady],
13
+ activate: () => Effect.gen(function* () {
14
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
15
+ const attention = new Attention.AttentionManager(registry);
16
+ const viewState = new ViewState.Manager({
17
+ registry,
18
+ backends: createDefaultBackends(registry)
19
+ });
20
+ setupDevtools(attention);
21
+ return [Capability.contributes(AttentionCapabilities.Attention, attention), Capability.contributes(AttentionCapabilities.ViewState, viewState)];
22
+ })
23
+ }), Plugin.addModule({
24
+ activatesOn: ActivationEvents.Startup,
25
+ activate: ReactContext
26
+ }), Plugin.addModule({
27
+ activatesOn: ActivationEvent.allOf(AppActivationEvents.AppGraphReady, AttentionEvents.AttentionReady),
28
+ activate: Keyboard
29
+ }), Plugin.make);
30
+ var setupDevtools = (attention) => {
31
+ globalThis.composer ??= {};
32
+ globalThis.composer.attention = {
33
+ get manager() {
34
+ return attention;
35
+ },
36
+ get attended() {
37
+ return attention.getCurrent();
38
+ },
39
+ get currentSpace() {
40
+ for (const id of attention.getCurrent()) {
41
+ const segments = id.split("/");
42
+ if (segments.length > 1 && segments[1].length === 33) return segments[1];
43
+ }
44
+ }
45
+ };
46
+ };
47
+ //#endregion
48
+ export { AttentionPlugin, AttentionPlugin as default };
49
+
50
+ //# sourceMappingURL=AttentionPlugin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttentionPlugin.mjs","names":[],"sources":["../../src/AttentionPlugin.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { ActivationEvent, ActivationEvents, Capabilities, Capability, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { Attention, ViewState, createDefaultBackends } from '@dxos/react-ui-attention';\n\nimport { Keyboard, OperationHandler, ReactContext } from '#capabilities';\nimport { meta } from '#meta';\nimport { AttentionEvents } from '#types';\nimport { AttentionCapabilities } from '#types';\n\nexport const AttentionPlugin = Plugin.define(meta).pipe(\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n Plugin.addModule({\n id: 'attention',\n activatesOn: ActivationEvents.Startup,\n firesAfterActivation: [AttentionEvents.AttentionReady],\n activate: () =>\n Effect.gen(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const attention = new Attention.AttentionManager(registry);\n const viewState = new ViewState.Manager({ registry, backends: createDefaultBackends(registry) });\n setupDevtools(attention);\n return [\n Capability.contributes(AttentionCapabilities.Attention, attention),\n Capability.contributes(AttentionCapabilities.ViewState, viewState),\n ];\n }),\n }),\n Plugin.addModule({\n activatesOn: ActivationEvents.Startup,\n activate: ReactContext,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(AppActivationEvents.AppGraphReady, AttentionEvents.AttentionReady),\n activate: Keyboard,\n }),\n Plugin.make,\n);\n\nconst setupDevtools = (attention: Attention.AttentionManager) => {\n (globalThis as any).composer ??= {};\n\n (globalThis as any).composer.attention = {\n get manager() {\n return attention;\n },\n get attended() {\n return attention.getCurrent();\n },\n get currentSpace() {\n for (const id of attention.getCurrent()) {\n const segments = id.split('/');\n if (segments.length > 1 && segments[1].length === 33) {\n return segments[1];\n }\n }\n },\n };\n};\n\nexport default AttentionPlugin;\n"],"mappings":";;;;;;;;AAeA,IAAa,kBAAkB,OAAO,OAAO,IAAI,CAAC,CAAC,KACjD,UAAU,0BAA0B,EAAE,UAAU,iBAAiB,CAAC,GAClE,OAAO,UAAU;CACf,IAAI;CACJ,aAAa,iBAAiB;CAC9B,sBAAsB,CAAC,gBAAgB,cAAc;CACrD,gBACE,OAAO,IAAI,aAAa;EACtB,MAAM,WAAW,OAAO,WAAW,IAAI,aAAa,YAAY;EAChE,MAAM,YAAY,IAAI,UAAU,iBAAiB,QAAQ;EACzD,MAAM,YAAY,IAAI,UAAU,QAAQ;GAAE;GAAU,UAAU,sBAAsB,QAAQ;EAAE,CAAC;EAC/F,cAAc,SAAS;EACvB,OAAO,CACL,WAAW,YAAY,sBAAsB,WAAW,SAAS,GACjE,WAAW,YAAY,sBAAsB,WAAW,SAAS,CACnE;CACF,CAAC;AACL,CAAC,GACD,OAAO,UAAU;CACf,aAAa,iBAAiB;CAC9B,UAAU;AACZ,CAAC,GACD,OAAO,UAAU;CACf,aAAa,gBAAgB,MAAM,oBAAoB,eAAe,gBAAgB,cAAc;CACpG,UAAU;AACZ,CAAC,GACD,OAAO,IACT;AAEA,IAAM,iBAAiB,cAA0C;CAC/D,WAAoB,aAAa,CAAC;CAElC,WAAoB,SAAS,YAAY;EACvC,IAAI,UAAU;GACZ,OAAO;EACT;EACA,IAAI,WAAW;GACb,OAAO,UAAU,WAAW;EAC9B;EACA,IAAI,eAAe;GACjB,KAAK,MAAM,MAAM,UAAU,WAAW,GAAG;IACvC,MAAM,WAAW,GAAG,MAAM,GAAG;IAC7B,IAAI,SAAS,SAAS,KAAK,SAAS,EAAE,CAAC,WAAW,IAChD,OAAO,SAAS;GAEpB;EACF;CACF;AACF"}
@@ -0,0 +1,9 @@
1
+ import { Capability } from "@dxos/app-framework";
2
+ //#region src/capabilities/index.ts
3
+ var Keyboard = Capability.lazy("Keyboard", () => import("./chunk-keyboard.mjs"));
4
+ var OperationHandler = Capability.lazy("OperationHandler", () => import("./chunk-operation-handler.mjs"));
5
+ var ReactContext = Capability.lazy("ReactContext", () => import("./chunk-react-context.mjs"));
6
+ //#endregion
7
+ export { Keyboard, OperationHandler, ReactContext };
8
+
9
+ //# sourceMappingURL=capabilities.mjs.map
@@ -0,0 +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 Keyboard = Capability.lazy('Keyboard', () => import('./keyboard'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactContext = Capability.lazy('ReactContext', () => import('./react-context'));\n"],"mappings":";;AAOA,IAAa,WAAW,WAAW,KAAK,kBAAkB,OAAO,uBAAa;AAC9E,IAAa,mBAAmB,WAAW,KACzC,0BACM,OAAO,gCACf;AACA,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,4BAAkB"}
@@ -0,0 +1,16 @@
1
+ import { Capabilities, Capability } from "@dxos/app-framework";
2
+ import * as Effect from "effect/Effect";
3
+ import { AttentionCapabilities } from "#types";
4
+ import { Keyboard, nestKeyboardContext } from "@dxos/keyboard";
5
+ //#region src/capabilities/keyboard.ts
6
+ var keyboard_default = Capability.makeModule(Effect.fnUntraced(function* () {
7
+ const unsubscribe = (yield* Capability.get(AttentionCapabilities.Attention)).subscribeCurrent((current) => {
8
+ const id = current[0];
9
+ Keyboard.singleton.setCurrentContext(nestKeyboardContext(id));
10
+ });
11
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => unsubscribe()));
12
+ }));
13
+ //#endregion
14
+ export { keyboard_default as default };
15
+
16
+ //# sourceMappingURL=chunk-keyboard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-keyboard.mjs","names":[],"sources":["../../src/capabilities/keyboard.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Keyboard, nestKeyboardContext } from '@dxos/keyboard';\n\nimport { AttentionCapabilities } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n\n const unsubscribe = attention.subscribeCurrent((current) => {\n const id = current[0];\n // Nested under graph root so plank context inherits root-level bindings (e.g. global search).\n Keyboard.singleton.setCurrentContext(nestKeyboardContext(id));\n });\n\n return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => unsubscribe()));\n }),\n);\n"],"mappings":";;;;;AAWA,IAAA,mBAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAG7B,MAAM,eAAc,OAFK,WAAW,IAAI,sBAAsB,SAAS,EAAA,CAEzC,kBAAkB,YAAY;EAC1D,MAAM,KAAK,QAAQ;EAEnB,SAAS,UAAU,kBAAkB,oBAAoB,EAAE,CAAC;CAC9D,CAAC;CAED,OAAO,WAAW,YAAY,aAAa,MAAM,YAAY,OAAO,WAAW,YAAY,CAAC,CAAC;AAC/F,CAAC,CACH"}
@@ -1,28 +1,21 @@
1
- // src/meta.ts
2
1
  import { Plugin } from "@dxos/app-framework";
3
-
4
- // dx.config.ts
5
2
  import { Config2 } from "@dxos/app-framework/config";
6
3
  import { trim } from "@dxos/util";
7
- var dx_config_default = Config2.make({
8
- plugin: {
9
- key: "org.dxos.plugin.attention",
10
- name: "Attention",
11
- author: "DXOS",
12
- description: trim`
4
+ //#region dx.config.ts
5
+ var dx_config_default = Config2.make({ plugin: {
6
+ key: "org.dxos.plugin.attention",
7
+ name: "Attention",
8
+ author: "DXOS",
9
+ description: trim`
13
10
  Track and manage focused attention on objects across your workspace.
14
11
  Highlight items requiring action and coordinate team focus on priority work.
15
12
  `,
16
- tags: [
17
- "system"
18
- ]
19
- }
20
- });
21
-
22
- // src/meta.ts
13
+ tags: ["system"]
14
+ } });
15
+ //#endregion
16
+ //#region src/meta.ts
23
17
  var meta = Plugin.getMetaFromConfig(dx_config_default);
18
+ //#endregion
19
+ export { meta as t };
24
20
 
25
- export {
26
- meta
27
- };
28
- //# sourceMappingURL=chunk-QWYNIPK3.mjs.map
21
+ //# sourceMappingURL=chunk-meta.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.attention',\n name: 'Attention',\n author: 'DXOS',\n description: trim`\n Track and manage focused attention on objects across your workspace.\n Highlight items requiring action and coordinate team focus on priority work.\n `,\n tags: ['system'],\n },\n});\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n"],"mappings":";;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;CAIjB,MAAM,CAAC,QAAQ;AACjB,EACF,CAAC;;;ACVD,IAAa,OAAO,OAAO,kBAAkB,iBAAM"}
@@ -1,11 +1,11 @@
1
- // src/capabilities/operation-handler.ts
2
- import * as Effect from "effect/Effect";
3
1
  import { Capabilities, Capability } from "@dxos/app-framework";
2
+ import * as Effect from "effect/Effect";
4
3
  import { AttentionOperationHandlerSet } from "#operations";
4
+ //#region src/capabilities/operation-handler.ts
5
5
  var operation_handler_default = Capability.makeModule(Effect.fnUntraced(function* () {
6
- return Capability.contributes(Capabilities.OperationHandler, AttentionOperationHandlerSet);
6
+ return Capability.contributes(Capabilities.OperationHandler, AttentionOperationHandlerSet);
7
7
  }));
8
- export {
9
- operation_handler_default as default
10
- };
11
- //# sourceMappingURL=operation-handler-O5PDEBTC.mjs.map
8
+ //#endregion
9
+ export { operation_handler_default as default };
10
+
11
+ //# sourceMappingURL=chunk-operation-handler.mjs.map
@@ -0,0 +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 { AttentionOperationHandlerSet } from '#operations';\n\nexport default Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(\n Effect.fnUntraced(function* () {\n return Capability.contributes(Capabilities.OperationHandler, AttentionOperationHandlerSet);\n }),\n);\n"],"mappings":";;;;AAWA,IAAA,4BAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,OAAO,WAAW,YAAY,aAAa,kBAAkB,4BAA4B;AAC3F,CAAC,CACH"}
@@ -0,0 +1,26 @@
1
+ import { Capabilities, Capability } from "@dxos/app-framework";
2
+ import { meta } from "#meta";
3
+ import * as Effect from "effect/Effect";
4
+ import { RootAttentionProvider, ViewStateProvider } from "@dxos/react-ui-attention";
5
+ import { AttentionCapabilities } from "#types";
6
+ import "react";
7
+ import { useCapability } from "@dxos/app-framework/ui";
8
+ import { jsx } from "react/jsx-runtime";
9
+ //#region src/capabilities/react-context.tsx
10
+ var react_context_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactContext, {
11
+ id: meta.profile.key,
12
+ context: (props) => {
13
+ return /* @__PURE__ */ jsx(RootAttentionProvider, {
14
+ attention: useCapability(AttentionCapabilities.Attention),
15
+ onChange: (nextAttended) => {},
16
+ children: /* @__PURE__ */ jsx(ViewStateProvider, {
17
+ manager: useCapability(AttentionCapabilities.ViewState),
18
+ children: props.children
19
+ })
20
+ });
21
+ }
22
+ })));
23
+ //#endregion
24
+ export { react_context_default as default };
25
+
26
+ //# 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 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { RootAttentionProvider, ViewStateProvider } from '@dxos/react-ui-attention';\n\nimport { meta } from '#meta';\nimport { AttentionCapabilities } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactContext, {\n id: meta.profile.key,\n context: (props: PropsWithChildren) => {\n const attention = useCapability(AttentionCapabilities.Attention);\n const viewState = useCapability(AttentionCapabilities.ViewState);\n\n return (\n <RootAttentionProvider\n attention={attention}\n onChange={(nextAttended) => {\n // TODO(Zan): Workout why this was in deck plugin. It didn't seem to work?\n // if (layout.values.scrollIntoView && nextAttended.has(layout.values.scrollIntoView)) {\n // layout.values.scrollIntoView = undefined;\n // }\n }}\n >\n <ViewStateProvider manager={viewState}>{props.children}</ViewStateProvider>\n </RootAttentionProvider>\n );\n },\n }),\n ),\n);\n"],"mappings":";;;;;;;;;AAcA,IAAA,wBAAe,WAAW,iBACxB,OAAO,QACL,WAAW,YAAY,aAAa,cAAc;CAChD,IAAI,KAAK,QAAQ;CACjB,UAAU,UAA6B;EAIrC,OACE,oBAAC,uBAAD;GACa,WALG,cAAc,sBAAsB,SAKvC;GACX,WAAW,iBAAiB,CAK5B;aAEA,oBAAC,mBAAD;IAAmB,SAZL,cAAc,sBAAsB,SAYtB;cAAY,MAAM;GAA4B,CAAA;EACrD,CAAA;CAE3B;AACF,CAAC,CACH,CACF"}
@@ -0,0 +1,48 @@
1
+ import { AttentionCapabilities } from "./types.mjs";
2
+ import { Capability } from "@dxos/app-framework";
3
+ import * as Effect from "effect/Effect";
4
+ import { LayoutOperation } from "@dxos/app-toolkit";
5
+ import { Selection } from "@dxos/react-ui-attention";
6
+ import { Operation } from "@dxos/compute";
7
+ import * as Match from "effect/Match";
8
+ //#region src/operations/select.ts
9
+ var handler = LayoutOperation.Select.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
10
+ const viewState = yield* Capability.get(AttentionCapabilities.ViewState);
11
+ Match.value(input.subject).pipe(Match.when({
12
+ mode: "single",
13
+ id: void 0
14
+ }, () => {
15
+ viewState.set(Selection.aspect, input.contextId, { mode: "single" });
16
+ }), Match.when({ mode: "single" }, (s) => {
17
+ viewState.set(Selection.aspect, input.contextId, {
18
+ mode: "single",
19
+ id: s.id
20
+ });
21
+ }), Match.when({ mode: "multi" }, (s) => {
22
+ viewState.set(Selection.aspect, input.contextId, {
23
+ mode: "multi",
24
+ ids: [...s.ids]
25
+ });
26
+ }), Match.when({
27
+ mode: "range",
28
+ from: void 0,
29
+ to: void 0
30
+ }, () => {
31
+ viewState.set(Selection.aspect, input.contextId, { mode: "range" });
32
+ }), Match.when({ mode: "range" }, (s) => {
33
+ viewState.set(Selection.aspect, input.contextId, {
34
+ mode: "range",
35
+ from: s.from,
36
+ to: s.to
37
+ });
38
+ }), Match.when({ mode: "multi-range" }, (s) => {
39
+ viewState.set(Selection.aspect, input.contextId, {
40
+ mode: "multi-range",
41
+ ranges: [...s.ranges]
42
+ });
43
+ }), Match.exhaustive);
44
+ })));
45
+ //#endregion
46
+ export { handler as default };
47
+
48
+ //# sourceMappingURL=chunk-select.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-select.mjs","names":[],"sources":["../../src/operations/select.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\n\nimport { Capability } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { Selection } from '@dxos/react-ui-attention';\n\nimport { AttentionCapabilities } from '../types';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Select> = LayoutOperation.Select.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const viewState = yield* Capability.get(AttentionCapabilities.ViewState);\n Match.value(input.subject).pipe(\n Match.when({ mode: 'single', id: undefined }, () => {\n viewState.set(Selection.aspect, input.contextId, { mode: 'single' });\n }),\n Match.when({ mode: 'single' }, (s) => {\n viewState.set(Selection.aspect, input.contextId, { mode: 'single', id: s.id });\n }),\n Match.when({ mode: 'multi' }, (s) => {\n viewState.set(Selection.aspect, input.contextId, { mode: 'multi', ids: [...s.ids] });\n }),\n Match.when({ mode: 'range', from: undefined, to: undefined }, () => {\n viewState.set(Selection.aspect, input.contextId, { mode: 'range' });\n }),\n Match.when({ mode: 'range' }, (s) => {\n viewState.set(Selection.aspect, input.contextId, { mode: 'range', from: s.from, to: s.to });\n }),\n Match.when({ mode: 'multi-range' }, (s) => {\n viewState.set(Selection.aspect, input.contextId, { mode: 'multi-range', ranges: [...s.ranges] });\n }),\n Match.exhaustive,\n );\n }),\n ),\n);\n\nexport default handler;\n"],"mappings":";;;;;;;;AAcA,IAAM,UAAgE,gBAAgB,OAAO,KAC3F,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,MAAM,YAAY,OAAO,WAAW,IAAI,sBAAsB,SAAS;CACvE,MAAM,MAAM,MAAM,OAAO,CAAC,CAAC,KACzB,MAAM,KAAK;EAAE,MAAM;EAAU,IAAI,KAAA;CAAU,SAAS;EAClD,UAAU,IAAI,UAAU,QAAQ,MAAM,WAAW,EAAE,MAAM,SAAS,CAAC;CACrE,CAAC,GACD,MAAM,KAAK,EAAE,MAAM,SAAS,IAAI,MAAM;EACpC,UAAU,IAAI,UAAU,QAAQ,MAAM,WAAW;GAAE,MAAM;GAAU,IAAI,EAAE;EAAG,CAAC;CAC/E,CAAC,GACD,MAAM,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM;EACnC,UAAU,IAAI,UAAU,QAAQ,MAAM,WAAW;GAAE,MAAM;GAAS,KAAK,CAAC,GAAG,EAAE,GAAG;EAAE,CAAC;CACrF,CAAC,GACD,MAAM,KAAK;EAAE,MAAM;EAAS,MAAM,KAAA;EAAW,IAAI,KAAA;CAAU,SAAS;EAClE,UAAU,IAAI,UAAU,QAAQ,MAAM,WAAW,EAAE,MAAM,QAAQ,CAAC;CACpE,CAAC,GACD,MAAM,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM;EACnC,UAAU,IAAI,UAAU,QAAQ,MAAM,WAAW;GAAE,MAAM;GAAS,MAAM,EAAE;GAAM,IAAI,EAAE;EAAG,CAAC;CAC5F,CAAC,GACD,MAAM,KAAK,EAAE,MAAM,cAAc,IAAI,MAAM;EACzC,UAAU,IAAI,UAAU,QAAQ,MAAM,WAAW;GAAE,MAAM;GAAe,QAAQ,CAAC,GAAG,EAAE,MAAM;EAAE,CAAC;CACjG,CAAC,GACD,MAAM,UACR;AACF,CAAC,CACH,CACF"}
@@ -0,0 +1,3 @@
1
+ import { t as meta } from "./chunk-meta.mjs";
2
+ import { AttentionAction, AttentionCapabilities, AttentionEvents } from "./types.mjs";
3
+ export { AttentionAction, AttentionCapabilities, AttentionEvents, meta };
@@ -0,0 +1,2 @@
1
+ import { t as meta } from "./chunk-meta.mjs";
2
+ export { meta };
@@ -0,0 +1,7 @@
1
+ import { OperationHandlerSet } from "@dxos/compute";
2
+ //#region src/operations/index.ts
3
+ var AttentionOperationHandlerSet = OperationHandlerSet.lazy(() => import("./chunk-select.mjs"));
4
+ //#endregion
5
+ export { AttentionOperationHandlerSet };
6
+
7
+ //# sourceMappingURL=operations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.mjs","names":[],"sources":["../../src/operations/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const AttentionOperationHandlerSet = OperationHandlerSet.lazy(() => import('./select'));\n"],"mappings":";;AAMA,IAAa,+BAA+B,oBAAoB,WAAW,OAAO,qBAAW"}
@@ -0,0 +1,9 @@
1
+ import { t as meta } from "./chunk-meta.mjs";
2
+ import { AttentionOperationHandlerSet } from "./operations.mjs";
3
+ import { Plugin } from "@dxos/app-framework";
4
+ //#region src/plugin.ts
5
+ var AttentionPlugin = Plugin.lazy(meta, () => import("#plugin"));
6
+ //#endregion
7
+ export { AttentionOperationHandlerSet, AttentionPlugin };
8
+
9
+ //# sourceMappingURL=plugin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.mjs","names":[],"sources":["../../src/plugin.ts"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport const AttentionPlugin = Plugin.lazy(meta, () => import('#plugin'));\n\nexport { AttentionOperationHandlerSet } from './operations';\n"],"mappings":";;;;AAQA,IAAa,kBAAkB,OAAO,KAAK,YAAY,OAAO,UAAU"}
@@ -0,0 +1,2 @@
1
+ import { AttentionPlugin } from "./AttentionPlugin.mjs";
2
+ export { AttentionPlugin };
@@ -0,0 +1,34 @@
1
+ import { ActivationEvent, Capability } from "@dxos/app-framework";
2
+ import { meta } from "#meta";
3
+ import * as Schema from "effect/Schema";
4
+ import { Selection } from "@dxos/react-ui-attention/types";
5
+ //#region src/types/capabilities.ts
6
+ var AttentionCapabilities;
7
+ (function(_AttentionCapabilities) {
8
+ _AttentionCapabilities.Attention = Capability.make(`${meta.profile.key}.capability.attention`);
9
+ _AttentionCapabilities.ViewState = Capability.make(`${meta.profile.key}.capability.view-state`);
10
+ })(AttentionCapabilities || (AttentionCapabilities = {}));
11
+ //#endregion
12
+ //#region src/types/events.ts
13
+ var AttentionEvents;
14
+ (function(_AttentionEvents) {
15
+ _AttentionEvents.AttentionReady = ActivationEvent.make(`${meta.profile.key}.event.attentionReady`);
16
+ })(AttentionEvents || (AttentionEvents = {}));
17
+ //#endregion
18
+ //#region src/types/types.ts
19
+ var AttentionAction;
20
+ (function(_AttentionAction) {
21
+ const ATTENTION_ACTION = `${meta.profile.key}.action`;
22
+ class Select extends Schema.TaggedClass()(`${ATTENTION_ACTION}.select`, {
23
+ input: Schema.Struct({
24
+ contextId: Schema.String,
25
+ selection: Selection.Selection
26
+ }),
27
+ output: Schema.Void
28
+ }) {}
29
+ _AttentionAction.Select = Select;
30
+ })(AttentionAction || (AttentionAction = {}));
31
+ //#endregion
32
+ export { AttentionAction, AttentionCapabilities, AttentionEvents };
33
+
34
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../src/types/capabilities.ts","../../src/types/events.ts","../../src/types/types.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Attention, type ViewState } from '@dxos/react-ui-attention/types';\n\nimport { meta } from '#meta';\n\nexport namespace AttentionCapabilities {\n export const Attention = Capability.make<Attention.AttentionManager>(`${meta.profile.key}.capability.attention`);\n export const ViewState = Capability.make<ViewState.Manager>(`${meta.profile.key}.capability.view-state`);\n}\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { ActivationEvent } from '@dxos/app-framework';\n\nimport { meta } from '#meta';\n\nexport namespace AttentionEvents {\n export const AttentionReady = ActivationEvent.make(`${meta.profile.key}.event.attentionReady`);\n}\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Selection } from '@dxos/react-ui-attention/types';\n\nimport { meta } from '#meta';\n\nexport namespace AttentionAction {\n const ATTENTION_ACTION = `${meta.profile.key}.action`;\n\n export class Select extends Schema.TaggedClass<Select>()(`${ATTENTION_ACTION}.select`, {\n input: Schema.Struct({\n contextId: Schema.String,\n selection: Selection.Selection,\n }),\n output: Schema.Void,\n }) {}\n}\n"],"mappings":";;;;;AASO,IAAA;;CACQ,uBAAA,YAAY,WAAW,KAAiC,GAAG,KAAK,QAAQ,IAAI,sBAAsB;CAClG,uBAAA,YAAY,WAAW,KAAwB,GAAG,KAAK,QAAQ,IAAI,uBAAuB;GACzG,0BAAA,wBAAA,CAAA,EAAA;;;ACJO,IAAA;;CACQ,iBAAA,iBAAiB,gBAAgB,KAAK,GAAG,KAAK,QAAQ,IAAI,sBAAsB;GAC/F,oBAAA,kBAAA,CAAA,EAAA;;;ACAO,IAAA;;CACL,MAAM,mBAAmB,GAAG,KAAK,QAAQ,IAAI;CAEtC,MAAM,eAAe,OAAO,YAAoB,CAAC,CAAC,GAAG,iBAAiB,UAAU;EACrF,OAAO,OAAO,OAAO;GACnB,WAAW,OAAO;GAClB,WAAW,UAAU;EACvB,CAAC;EACD,QAAQ,OAAO;CACjB,CAAC,CAAC,CAAC,CAAC;;GACN,oBAAA,kBAAA,CAAA,EAAA"}
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, Capability.Service>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, import("effect/Scope").Scope | Capability.Service>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=keyboard.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
3
  import type { OperationHandlerSet } from '@dxos/compute';
4
- declare const _default: (props: OperationHandlerSet.OperationHandlerSet) => Effect.Effect<Capability.ModuleReturn, Error, Capability.Service>;
4
+ declare const _default: (props: OperationHandlerSet.OperationHandlerSet) => Effect.Effect<Capability.ModuleReturn, Error, import("effect/Scope").Scope | Capability.Service>;
5
5
  export default _default;
6
6
  //# sourceMappingURL=operation-handler.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=react-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionState.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/SelectionState.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAkB,MAAM,OAAO,CAAC;AA0HvC,QAAA,MAAM,mBAAmB,yBA4CxB,CAAC;AAMF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,mBAAmB,CAI1C,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAiD,CAAC"}
1
+ {"version":3,"file":"SelectionState.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/SelectionState.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAkB,MAAM,OAAO,CAAC;AAoHvC,QAAA,MAAM,mBAAmB,yBA4CxB,CAAC;AAMF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,mBAAmB,CAI1C,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAiD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Capability } from '@dxos/app-framework';
2
- import { type AttentionManager, type ViewStateManager } from '@dxos/react-ui-attention';
2
+ import { type Attention, type ViewState } from '@dxos/react-ui-attention/types';
3
3
  export declare namespace AttentionCapabilities {
4
- const Attention: Capability.InterfaceDef<AttentionManager>;
5
- const ViewState: Capability.InterfaceDef<ViewStateManager>;
4
+ const Attention: Capability.InterfaceDef<Attention.AttentionManager>;
5
+ const ViewState: Capability.InterfaceDef<ViewState.Manager>;
6
6
  }
7
7
  //# sourceMappingURL=capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/types/capabilities.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIxF,yBAAiB,qBAAqB,CAAC,CAAC;IAC/B,MAAM,SAAS,2CAAgF,CAAC;IAChG,MAAM,SAAS,2CAAiF,CAAC;CACzG"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/types/capabilities.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAIhF,yBAAiB,qBAAqB,CAAC,CAAC;IAC/B,MAAM,SAAS,qDAA0F,CAAC;IAC1G,MAAM,SAAS,4CAAkF,CAAC;CAC1G"}