@dxos/plugin-deck 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (134) hide show
  1. package/dist/lib/browser/{app-graph-builder-VYZ4IWI3.mjs → app-graph-builder-R7COZ4A6.mjs} +16 -15
  2. package/dist/lib/browser/app-graph-builder-R7COZ4A6.mjs.map +7 -0
  3. package/dist/lib/browser/{check-app-scheme-SEYECDHI.mjs → check-app-scheme-7AXGR6UT.mjs} +2 -3
  4. package/dist/lib/browser/check-app-scheme-7AXGR6UT.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-3O2UZVBA.mjs +121 -0
  6. package/dist/lib/browser/chunk-3O2UZVBA.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-JAYQ5BTF.mjs +157 -0
  8. package/dist/lib/browser/chunk-JAYQ5BTF.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-VP6FCWFV.mjs → chunk-KIGMELV2.mjs} +257 -247
  10. package/dist/lib/browser/chunk-KIGMELV2.mjs.map +7 -0
  11. package/dist/lib/browser/{state-Z6UY2Z3M.mjs → chunk-OF5RIATN.mjs} +6 -4
  12. package/dist/lib/browser/chunk-OF5RIATN.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-TRFYUEBA.mjs +145 -0
  14. package/dist/lib/browser/chunk-TRFYUEBA.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +4 -5
  16. package/dist/lib/browser/index.mjs.map +1 -1
  17. package/dist/lib/browser/{intent-resolver-6AK45PT5.mjs → intent-resolver-MAKOS57L.mjs} +86 -63
  18. package/dist/lib/browser/intent-resolver-MAKOS57L.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-root-KA2IL5RA.mjs → react-root-DGQVIHXP.mjs} +6 -6
  21. package/dist/lib/browser/{react-surface-LIPGYEYN.mjs → react-surface-PXBXIOPU.mjs} +6 -6
  22. package/dist/lib/browser/{settings-6NU7CF2B.mjs → settings-UBWJF7J7.mjs} +4 -4
  23. package/dist/lib/browser/{settings-6NU7CF2B.mjs.map → settings-UBWJF7J7.mjs.map} +3 -3
  24. package/dist/lib/browser/state-4WFB4SDO.mjs +10 -0
  25. package/dist/lib/browser/state-4WFB4SDO.mjs.map +7 -0
  26. package/dist/lib/browser/{tools-VDVQTJMD.mjs → tools-IVPIPTVA.mjs} +7 -7
  27. package/dist/lib/browser/tools-IVPIPTVA.mjs.map +7 -0
  28. package/dist/lib/browser/types.mjs +1 -1
  29. package/dist/lib/browser/{url-handler-3CARFXQK.mjs → url-handler-JSYGSVSB.mjs} +4 -4
  30. package/dist/lib/browser/url-handler-JSYGSVSB.mjs.map +7 -0
  31. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  32. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  33. package/dist/types/src/capabilities/check-app-scheme.d.ts +2 -2
  34. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
  35. package/dist/types/src/capabilities/index.d.ts +5 -180
  36. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  37. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  38. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/state.d.ts +2 -2
  40. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  41. package/dist/types/src/capabilities/tools.d.ts.map +1 -1
  42. package/dist/types/src/capabilities/url-handler.d.ts +2 -2
  43. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
  44. package/dist/types/src/components/DeckLayout/Banner.d.ts.map +1 -1
  45. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
  46. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
  47. package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -1
  48. package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +1 -1
  49. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
  50. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
  51. package/dist/types/src/components/Plank/Plank.d.ts +18 -5
  52. package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
  53. package/dist/types/src/components/Plank/Plank.stories.d.ts +3 -3
  54. package/dist/types/src/components/Plank/Plank.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Plank/PlankControls.d.ts +1 -0
  56. package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
  57. package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
  58. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
  59. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  60. package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +1 -1
  61. package/dist/types/src/components/Sidebar/SidebarButton.d.ts +2 -1
  62. package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +1 -1
  63. package/dist/types/src/hooks/index.d.ts +5 -1
  64. package/dist/types/src/hooks/index.d.ts.map +1 -1
  65. package/dist/types/src/hooks/useBreakpoints.d.ts.map +1 -0
  66. package/dist/types/src/hooks/useCompanions.d.ts.map +1 -0
  67. package/dist/types/src/hooks/useDeckCompanions.d.ts +13 -0
  68. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -0
  69. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -0
  70. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  71. package/dist/types/src/index.d.ts +1 -1
  72. package/dist/types/src/index.d.ts.map +1 -1
  73. package/dist/types/src/layout.d.ts.map +1 -1
  74. package/dist/types/src/types.d.ts +104 -104
  75. package/dist/types/src/types.d.ts.map +1 -1
  76. package/dist/types/src/util/index.d.ts +1 -4
  77. package/dist/types/src/util/index.d.ts.map +1 -1
  78. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
  79. package/dist/types/src/util/overscroll.d.ts.map +1 -1
  80. package/dist/types/src/util/set-active.d.ts.map +1 -1
  81. package/dist/types/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +36 -29
  83. package/src/capabilities/app-graph-builder.ts +120 -92
  84. package/src/capabilities/check-app-scheme.ts +3 -7
  85. package/src/capabilities/index.ts +1 -0
  86. package/src/capabilities/intent-resolver.ts +140 -114
  87. package/src/capabilities/settings.ts +2 -2
  88. package/src/capabilities/state.ts +4 -2
  89. package/src/capabilities/tools.ts +4 -3
  90. package/src/capabilities/url-handler.ts +4 -4
  91. package/src/components/DeckLayout/ContentEmpty.tsx +3 -2
  92. package/src/components/DeckLayout/DeckLayout.tsx +12 -10
  93. package/src/components/DeckLayout/Popover.tsx +71 -43
  94. package/src/components/Plank/Plank.stories.tsx +20 -8
  95. package/src/components/Plank/Plank.tsx +101 -66
  96. package/src/components/Plank/PlankControls.tsx +26 -30
  97. package/src/components/Plank/PlankError.tsx +2 -6
  98. package/src/components/Plank/PlankHeading.tsx +23 -8
  99. package/src/components/Sidebar/ComplementarySidebar.tsx +4 -35
  100. package/src/components/Sidebar/Sidebar.tsx +2 -1
  101. package/src/components/Sidebar/SidebarButton.tsx +30 -7
  102. package/src/components/fragments.ts +1 -1
  103. package/src/hooks/index.ts +5 -1
  104. package/src/{util → hooks}/useCompanions.ts +3 -3
  105. package/src/hooks/useDeckCompanions.ts +33 -0
  106. package/src/hooks/useNodeActionExpander.ts +3 -8
  107. package/src/index.ts +1 -1
  108. package/src/types.ts +72 -71
  109. package/src/util/index.ts +1 -4
  110. package/dist/lib/browser/app-graph-builder-VYZ4IWI3.mjs.map +0 -7
  111. package/dist/lib/browser/check-app-scheme-SEYECDHI.mjs.map +0 -7
  112. package/dist/lib/browser/chunk-4QSEGMY3.mjs +0 -24
  113. package/dist/lib/browser/chunk-4QSEGMY3.mjs.map +0 -7
  114. package/dist/lib/browser/chunk-6HJZL3WT.mjs +0 -118
  115. package/dist/lib/browser/chunk-6HJZL3WT.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-FLOVGNYB.mjs +0 -81
  117. package/dist/lib/browser/chunk-FLOVGNYB.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-VP6FCWFV.mjs.map +0 -7
  119. package/dist/lib/browser/chunk-ZMJMCN7O.mjs +0 -157
  120. package/dist/lib/browser/chunk-ZMJMCN7O.mjs.map +0 -7
  121. package/dist/lib/browser/intent-resolver-6AK45PT5.mjs.map +0 -7
  122. package/dist/lib/browser/state-Z6UY2Z3M.mjs.map +0 -7
  123. package/dist/lib/browser/tools-VDVQTJMD.mjs.map +0 -7
  124. package/dist/lib/browser/url-handler-3CARFXQK.mjs.map +0 -7
  125. package/dist/types/src/util/useBreakpoints.d.ts.map +0 -1
  126. package/dist/types/src/util/useCompanions.d.ts.map +0 -1
  127. package/dist/types/src/util/useHoistStatusbar.d.ts.map +0 -1
  128. /package/dist/lib/browser/{react-root-KA2IL5RA.mjs.map → react-root-DGQVIHXP.mjs.map} +0 -0
  129. /package/dist/lib/browser/{react-surface-LIPGYEYN.mjs.map → react-surface-PXBXIOPU.mjs.map} +0 -0
  130. /package/dist/types/src/{util → hooks}/useBreakpoints.d.ts +0 -0
  131. /package/dist/types/src/{util → hooks}/useCompanions.d.ts +0 -0
  132. /package/dist/types/src/{util → hooks}/useHoistStatusbar.d.ts +0 -0
  133. /package/src/{util → hooks}/useBreakpoints.ts +0 -0
  134. /package/src/{util → hooks}/useHoistStatusbar.ts +0 -0
@@ -2,112 +2,140 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createIntent, LayoutAction, type PluginsContext } from '@dxos/app-framework';
5
+ import { Rx } from '@effect-rx/rx-react';
6
+ import { Option, pipe } from 'effect';
7
+
8
+ import { Capabilities, contributes, createIntent, LayoutAction, type PluginContext } from '@dxos/app-framework';
6
9
  import { AttentionCapabilities } from '@dxos/plugin-attention';
7
- import { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';
10
+ import { createExtension, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';
8
11
 
9
12
  import { DeckCapabilities } from './capabilities';
10
13
  import { DECK_PLUGIN } from '../meta';
11
14
 
12
- export default (context: PluginsContext) =>
15
+ export default (context: PluginContext) =>
13
16
  contributes(
14
17
  Capabilities.AppGraphBuilder,
15
18
  createExtension({
16
19
  id: DECK_PLUGIN,
17
- filter: (node): node is Node<null> => node.id === ROOT_ID,
18
- actions: () => {
19
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
20
+ actions: (node) =>
21
+ Rx.make((get) =>
22
+ pipe(
23
+ get(node),
24
+ Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
25
+ Option.map(() => {
26
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
20
27
 
21
- // NOTE(Zan): This is currently disabled.
22
- // TODO(Zan): Fullscreen needs to know the active node and provide that to the layout part.
23
- const _fullscreen = {
24
- id: `${LayoutAction.UpdateLayout._tag}/fullscreen`,
25
- data: async () => {
26
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
27
- await dispatch(createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'fullscreen' } }));
28
- },
29
- properties: {
30
- label: ['toggle fullscreen label', { ns: DECK_PLUGIN }],
31
- icon: 'ph--arrows-out--regular',
32
- keyBinding: {
33
- macos: 'ctrl+meta+f',
34
- windows: 'shift+ctrl+f',
35
- },
36
- },
37
- };
28
+ // NOTE(Zan): This is currently disabled.
29
+ // TODO(Zan): Fullscreen needs to know the active node and provide that to the layout part.
30
+ const _fullscreen = {
31
+ id: `${LayoutAction.UpdateLayout._tag}/fullscreen`,
32
+ data: async () => {
33
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
34
+ await dispatch(
35
+ createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'fullscreen' } }),
36
+ );
37
+ },
38
+ properties: {
39
+ label: ['toggle fullscreen label', { ns: DECK_PLUGIN }],
40
+ icon: 'ph--arrows-out--regular',
41
+ keyBinding: {
42
+ macos: 'ctrl+meta+f',
43
+ windows: 'shift+ctrl+f',
44
+ },
45
+ },
46
+ };
38
47
 
39
- const closeCurrent = {
40
- id: `${LayoutAction.Close._tag}/current`,
41
- data: async () => {
42
- const attention = context.requestCapability(AttentionCapabilities.Attention);
43
- const attended = attention.current.at(-1);
44
- if (attended) {
45
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
46
- await dispatch(
47
- createIntent(LayoutAction.Close, { part: 'main', subject: [attended], options: { state: false } }),
48
- );
49
- }
50
- },
51
- properties: {
52
- label: ['close current label', { ns: DECK_PLUGIN }],
53
- icon: 'ph--x--regular',
54
- },
55
- };
48
+ const closeCurrent = {
49
+ id: `${LayoutAction.Close._tag}/current`,
50
+ data: async () => {
51
+ const attention = context.getCapability(AttentionCapabilities.Attention);
52
+ const attended = attention.current.at(-1);
53
+ if (attended) {
54
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
55
+ await dispatch(
56
+ createIntent(LayoutAction.Close, {
57
+ part: 'main',
58
+ subject: [attended],
59
+ options: { state: false },
60
+ }),
61
+ );
62
+ }
63
+ },
64
+ properties: {
65
+ label: ['close current label', { ns: DECK_PLUGIN }],
66
+ icon: 'ph--x--regular',
67
+ },
68
+ };
56
69
 
57
- const closeOthers = {
58
- id: `${LayoutAction.Close._tag}/others`,
59
- data: async () => {
60
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
61
- const attention = context.requestCapability(AttentionCapabilities.Attention);
62
- const attended = attention.current.at(-1);
63
- const ids = state.deck.active.filter((id) => id !== attended) ?? [];
64
- await dispatch(createIntent(LayoutAction.Close, { part: 'main', subject: ids, options: { state: false } }));
65
- },
66
- properties: {
67
- label: ['close others label', { ns: DECK_PLUGIN }],
68
- icon: 'ph--x-square--regular',
69
- },
70
- };
70
+ const closeOthers = {
71
+ id: `${LayoutAction.Close._tag}/others`,
72
+ data: async () => {
73
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
74
+ const attention = context.getCapability(AttentionCapabilities.Attention);
75
+ const attended = attention.current.at(-1);
76
+ const ids = state.deck.active.filter((id) => id !== attended) ?? [];
77
+ await dispatch(
78
+ createIntent(LayoutAction.Close, { part: 'main', subject: ids, options: { state: false } }),
79
+ );
80
+ },
81
+ properties: {
82
+ label: ['close others label', { ns: DECK_PLUGIN }],
83
+ icon: 'ph--x-square--regular',
84
+ },
85
+ };
71
86
 
72
- const closeAll = {
73
- id: `${LayoutAction.Close._tag}/all`,
74
- data: async () => {
75
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
76
- await dispatch(
77
- createIntent(LayoutAction.Close, {
78
- part: 'main',
79
- subject: state.deck.active,
80
- options: { state: false },
81
- }),
82
- );
83
- },
84
- properties: {
85
- label: ['close all label', { ns: DECK_PLUGIN }],
86
- icon: 'ph--x-circle--regular',
87
- },
88
- };
87
+ const closeAll = {
88
+ id: `${LayoutAction.Close._tag}/all`,
89
+ data: async () => {
90
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
91
+ await dispatch(
92
+ createIntent(LayoutAction.Close, {
93
+ part: 'main',
94
+ subject: state.deck.active,
95
+ options: { state: false },
96
+ }),
97
+ );
98
+ },
99
+ properties: {
100
+ label: ['close all label', { ns: DECK_PLUGIN }],
101
+ icon: 'ph--x-circle--regular',
102
+ },
103
+ };
89
104
 
90
- const toggleSidebar = {
91
- id: `${LayoutAction.UpdateSidebar._tag}/nav`,
92
- data: async () => {
93
- state.sidebarState = state.sidebarState === 'expanded' ? 'collapsed' : 'expanded';
94
- },
95
- properties: {
96
- label: [
97
- state.sidebarState === 'expanded' ? 'collapse navigation sidebar label' : 'open navigation sidebar label',
98
- { ns: DECK_PLUGIN },
99
- ],
100
- icon: 'ph--sidebar--regular',
101
- keyBinding: {
102
- macos: 'meta+b',
103
- },
104
- disposition: 'pin-end',
105
- position: 'hoist',
106
- l0Breakpoint: 'lg',
107
- },
108
- };
105
+ const toggleSidebar = {
106
+ id: `${LayoutAction.UpdateSidebar._tag}/nav`,
107
+ data: async () => {
108
+ state.sidebarState = state.sidebarState === 'expanded' ? 'collapsed' : 'expanded';
109
+ },
110
+ properties: {
111
+ label: [
112
+ get(
113
+ rxFromSignal(() =>
114
+ state.sidebarState === 'expanded'
115
+ ? 'collapse navigation sidebar label'
116
+ : 'open navigation sidebar label',
117
+ ),
118
+ ),
119
+ { ns: DECK_PLUGIN },
120
+ ],
121
+ icon: 'ph--sidebar--regular',
122
+ keyBinding: {
123
+ macos: 'meta+b',
124
+ },
125
+ disposition: 'pin-end',
126
+ position: 'hoist',
127
+ l0Breakpoint: 'lg',
128
+ },
129
+ };
109
130
 
110
- return !state.deck.solo ? [closeCurrent, closeOthers, closeAll, toggleSidebar] : [toggleSidebar];
111
- },
131
+ return get(
132
+ rxFromSignal(() =>
133
+ !state.deck.solo ? [closeCurrent, closeOthers, closeAll, toggleSidebar] : [toggleSidebar],
134
+ ),
135
+ );
136
+ }),
137
+ Option.getOrElse(() => []),
138
+ ),
139
+ ),
112
140
  }),
113
141
  );
@@ -1,11 +1,8 @@
1
1
  //
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
- //
5
- // Copyright 2025 DXOS.org
6
- //
7
4
 
8
- import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
5
+ import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
9
6
 
10
7
  import { DECK_PLUGIN } from '../meta';
11
8
  import { type DeckSettingsProps } from '../types';
@@ -33,9 +30,8 @@ const checkAppScheme = (url: string) => {
33
30
  });
34
31
  };
35
32
 
36
- export default async (context: PluginsContext) => {
37
- const settingsStore = context.requestCapability(Capabilities.SettingsStore);
38
- const settings = settingsStore.getStore<DeckSettingsProps>(DECK_PLUGIN)?.value;
33
+ export default async (context: PluginContext) => {
34
+ const settings = context.getCapability(Capabilities.SettingsStore).getStore<DeckSettingsProps>(DECK_PLUGIN)?.value;
39
35
  if (!isSocket && settings?.enableNativeRedirect) {
40
36
  checkAppScheme(appScheme);
41
37
  }
@@ -15,3 +15,4 @@ export const Tools = lazy(() => import('./tools'));
15
15
  export const UrlHandler = lazy(() => import('./url-handler'));
16
16
 
17
17
  export * from './capabilities';
18
+ export * from './state';