@dxos/plugin-attention 0.10.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/AttentionPlugin.mjs +50 -0
- package/dist/lib/AttentionPlugin.mjs.map +1 -0
- package/dist/lib/capabilities.mjs +9 -0
- package/dist/lib/capabilities.mjs.map +1 -0
- package/dist/lib/chunk-keyboard.mjs +16 -0
- package/dist/lib/chunk-keyboard.mjs.map +1 -0
- package/dist/lib/{neutral/chunk-QWYNIPK3.mjs → chunk-meta.mjs} +13 -20
- package/dist/lib/chunk-meta.mjs.map +1 -0
- package/dist/lib/{neutral/operation-handler-O5PDEBTC.mjs → chunk-operation-handler.mjs} +7 -7
- package/dist/lib/chunk-operation-handler.mjs.map +1 -0
- package/dist/lib/chunk-react-context.mjs +26 -0
- package/dist/lib/chunk-react-context.mjs.map +1 -0
- package/dist/lib/chunk-select.mjs +48 -0
- package/dist/lib/chunk-select.mjs.map +1 -0
- package/dist/lib/index.mjs +3 -0
- package/dist/lib/meta.mjs +2 -0
- package/dist/lib/operations.mjs +7 -0
- package/dist/lib/operations.mjs.map +1 -0
- package/dist/lib/plugin.mjs +9 -0
- package/dist/lib/plugin.mjs.map +1 -0
- package/dist/lib/testing.mjs +2 -0
- package/dist/lib/types.mjs +34 -0
- package/dist/lib/types.mjs.map +1 -0
- package/dist/types/src/capabilities/keyboard.d.ts +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
- package/dist/types/src/capabilities/react-context.d.ts +1 -1
- package/dist/types/src/stories/SelectionState.stories.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +3 -3
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +24 -24
- package/src/AttentionPlugin.ts +4 -4
- package/src/operations/select.ts +7 -7
- package/src/stories/SelectionState.stories.tsx +5 -11
- package/src/types/capabilities.ts +3 -3
- package/src/types/types.ts +2 -2
- package/dist/lib/neutral/AttentionPlugin.mjs +0 -9
- package/dist/lib/neutral/AttentionPlugin.mjs.map +0 -7
- package/dist/lib/neutral/capabilities/index.mjs +0 -11
- package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BJDXKPRR.mjs +0 -63
- package/dist/lib/neutral/chunk-BJDXKPRR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KYZ6BP6Z.mjs +0 -41
- package/dist/lib/neutral/chunk-KYZ6BP6Z.mjs.map +0 -7
- package/dist/lib/neutral/chunk-QWYNIPK3.mjs.map +0 -7
- package/dist/lib/neutral/chunk-VO5BJP5D.mjs +0 -8
- package/dist/lib/neutral/chunk-VO5BJP5D.mjs.map +0 -7
- package/dist/lib/neutral/index.mjs +0 -15
- package/dist/lib/neutral/index.mjs.map +0 -7
- package/dist/lib/neutral/keyboard-LFMKJ3H7.mjs +0 -17
- package/dist/lib/neutral/keyboard-LFMKJ3H7.mjs.map +0 -7
- package/dist/lib/neutral/meta.json +0 -1
- package/dist/lib/neutral/meta.mjs +0 -7
- package/dist/lib/neutral/meta.mjs.map +0 -7
- package/dist/lib/neutral/operation-handler-O5PDEBTC.mjs.map +0 -7
- package/dist/lib/neutral/operations/index.mjs +0 -7
- package/dist/lib/neutral/operations/index.mjs.map +0 -7
- package/dist/lib/neutral/plugin.mjs +0 -15
- package/dist/lib/neutral/plugin.mjs.map +0 -7
- package/dist/lib/neutral/react-context-G6G3ZRFI.mjs +0 -26
- package/dist/lib/neutral/react-context-G6G3ZRFI.mjs.map +0 -7
- package/dist/lib/neutral/select-AR23P2VZ.mjs +0 -68
- package/dist/lib/neutral/select-AR23P2VZ.mjs.map +0 -7
- package/dist/lib/neutral/testing.mjs +0 -7
- package/dist/lib/neutral/testing.mjs.map +0 -7
- package/dist/lib/neutral/types/index.mjs +0 -11
- 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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6
|
+
return Capability.contributes(Capabilities.OperationHandler, AttentionOperationHandlerSet);
|
|
7
7
|
}));
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=operation-handler
|
|
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,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,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,
|
|
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;
|
|
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
|
|
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<
|
|
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,
|
|
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"}
|