@dxos/plugin-deck 0.8.2-staging.7ac8446 → 0.8.2

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 (155) hide show
  1. package/dist/lib/browser/{app-graph-builder-VYZ4IWI3.mjs → app-graph-builder-M5BT34YG.mjs} +17 -16
  2. package/dist/lib/browser/app-graph-builder-M5BT34YG.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/{state-7TN26M42.mjs → chunk-FX44YX3G.mjs} +11 -8
  6. package/dist/lib/browser/chunk-FX44YX3G.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-JE2ARGEB.mjs +1487 -0
  8. package/dist/lib/browser/chunk-JE2ARGEB.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-XMCG42ID.mjs → chunk-KLN73CM3.mjs} +2 -2
  10. package/dist/lib/browser/{chunk-XMCG42ID.mjs.map → chunk-KLN73CM3.mjs.map} +1 -1
  11. package/dist/lib/browser/chunk-SLQNOATN.mjs +127 -0
  12. package/dist/lib/browser/chunk-SLQNOATN.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/chunk-YN5OZEGS.mjs +162 -0
  16. package/dist/lib/browser/chunk-YN5OZEGS.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +8 -8
  18. package/dist/lib/browser/index.mjs.map +2 -2
  19. package/dist/lib/browser/{intent-resolver-UDYKO2QW.mjs → intent-resolver-3GAC57UA.mjs} +135 -92
  20. package/dist/lib/browser/intent-resolver-3GAC57UA.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-root-XLXN2VEW.mjs → react-root-ISFFOJZX.mjs} +7 -7
  23. package/dist/lib/browser/{react-surface-WNGMZL7I.mjs → react-surface-A63RQB5N.mjs} +7 -7
  24. package/dist/lib/browser/{settings-HMDGSBGO.mjs → settings-X7GDEXU3.mjs} +6 -6
  25. package/dist/lib/browser/settings-X7GDEXU3.mjs.map +7 -0
  26. package/dist/lib/browser/state-VJ6E3ADY.mjs +10 -0
  27. package/dist/lib/browser/state-VJ6E3ADY.mjs.map +7 -0
  28. package/dist/lib/browser/{tools-SC6QEN7R.mjs → tools-N57NQ2LH.mjs} +28 -18
  29. package/dist/lib/browser/tools-N57NQ2LH.mjs.map +7 -0
  30. package/dist/lib/browser/types.mjs +1 -1
  31. package/dist/lib/browser/{url-handler-ODG4B6NX.mjs → url-handler-BUGI6XRE.mjs} +5 -5
  32. package/dist/lib/browser/url-handler-BUGI6XRE.mjs.map +7 -0
  33. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  34. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  35. package/dist/types/src/capabilities/capabilities.d.ts +18 -8
  36. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  37. package/dist/types/src/capabilities/check-app-scheme.d.ts +2 -2
  38. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/index.d.ts +8 -183
  40. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  41. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  42. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  43. package/dist/types/src/capabilities/state.d.ts +12 -7
  44. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/tools.d.ts +1 -1
  46. package/dist/types/src/capabilities/tools.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/url-handler.d.ts +2 -2
  48. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
  49. package/dist/types/src/components/DeckLayout/Banner.d.ts.map +1 -1
  50. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
  51. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
  52. package/dist/types/src/components/DeckLayout/Dialog.d.ts +3 -0
  53. package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +1 -0
  54. package/dist/types/src/components/DeckLayout/Popover.d.ts +5 -0
  55. package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -0
  56. package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +1 -1
  57. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
  58. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
  59. package/dist/types/src/components/Plank/Plank.d.ts +18 -5
  60. package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
  61. package/dist/types/src/components/Plank/Plank.stories.d.ts +3 -3
  62. package/dist/types/src/components/Plank/Plank.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Plank/PlankControls.d.ts +3 -2
  64. package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
  65. package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
  66. package/dist/types/src/components/Plank/PlankHeading.d.ts +3 -2
  67. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
  68. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  69. package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +1 -1
  70. package/dist/types/src/components/Sidebar/SidebarButton.d.ts +2 -1
  71. package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +1 -1
  72. package/dist/types/src/hooks/index.d.ts +5 -1
  73. package/dist/types/src/hooks/index.d.ts.map +1 -1
  74. package/dist/types/src/hooks/useBreakpoints.d.ts.map +1 -0
  75. package/dist/types/src/hooks/useCompanions.d.ts.map +1 -0
  76. package/dist/types/src/hooks/useDeckCompanions.d.ts +13 -0
  77. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -0
  78. package/dist/types/src/hooks/useHoistStatusbar.d.ts +3 -0
  79. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -0
  80. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  81. package/dist/types/src/index.d.ts +1 -1
  82. package/dist/types/src/index.d.ts.map +1 -1
  83. package/dist/types/src/layout.d.ts.map +1 -1
  84. package/dist/types/src/translations.d.ts +2 -1
  85. package/dist/types/src/translations.d.ts.map +1 -1
  86. package/dist/types/src/types.d.ts +108 -104
  87. package/dist/types/src/types.d.ts.map +1 -1
  88. package/dist/types/src/util/index.d.ts +1 -4
  89. package/dist/types/src/util/index.d.ts.map +1 -1
  90. package/dist/types/src/util/layoutAppliesTopbar.d.ts +2 -1
  91. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
  92. package/dist/types/src/util/overscroll.d.ts.map +1 -1
  93. package/dist/types/src/util/set-active.d.ts.map +1 -1
  94. package/dist/types/tsconfig.tsbuildinfo +1 -1
  95. package/package.json +39 -30
  96. package/src/capabilities/app-graph-builder.ts +120 -92
  97. package/src/capabilities/check-app-scheme.ts +3 -7
  98. package/src/capabilities/index.ts +3 -2
  99. package/src/capabilities/intent-resolver.ts +181 -135
  100. package/src/capabilities/settings.ts +4 -4
  101. package/src/capabilities/state.ts +7 -4
  102. package/src/capabilities/tools.ts +15 -12
  103. package/src/capabilities/url-handler.ts +4 -4
  104. package/src/components/DeckLayout/ContentEmpty.tsx +9 -4
  105. package/src/components/DeckLayout/DeckLayout.tsx +123 -188
  106. package/src/components/DeckLayout/Dialog.tsx +36 -0
  107. package/src/components/DeckLayout/Popover.tsx +104 -0
  108. package/src/components/Plank/Plank.stories.tsx +20 -8
  109. package/src/components/Plank/Plank.tsx +105 -69
  110. package/src/components/Plank/PlankControls.tsx +53 -57
  111. package/src/components/Plank/PlankError.tsx +2 -6
  112. package/src/components/Plank/PlankHeading.tsx +31 -12
  113. package/src/components/Sidebar/ComplementarySidebar.tsx +36 -57
  114. package/src/components/Sidebar/Sidebar.tsx +7 -4
  115. package/src/components/Sidebar/SidebarButton.tsx +26 -7
  116. package/src/components/fragments.ts +1 -1
  117. package/src/hooks/index.ts +5 -1
  118. package/src/{util → hooks}/useCompanions.ts +3 -3
  119. package/src/hooks/useDeckCompanions.ts +33 -0
  120. package/src/{util → hooks}/useHoistStatusbar.ts +9 -4
  121. package/src/hooks/useNodeActionExpander.ts +3 -8
  122. package/src/index.ts +1 -1
  123. package/src/translations.ts +2 -1
  124. package/src/types.ts +77 -71
  125. package/src/util/index.ts +1 -4
  126. package/src/util/layoutAppliesTopbar.ts +8 -2
  127. package/dist/lib/browser/app-graph-builder-VYZ4IWI3.mjs.map +0 -7
  128. package/dist/lib/browser/check-app-scheme-SEYECDHI.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-6ZSOFCPP.mjs +0 -117
  130. package/dist/lib/browser/chunk-6ZSOFCPP.mjs.map +0 -7
  131. package/dist/lib/browser/chunk-B4LOJUWW.mjs +0 -24
  132. package/dist/lib/browser/chunk-B4LOJUWW.mjs.map +0 -7
  133. package/dist/lib/browser/chunk-FJBMNSUC.mjs +0 -1289
  134. package/dist/lib/browser/chunk-FJBMNSUC.mjs.map +0 -7
  135. package/dist/lib/browser/chunk-FLOVGNYB.mjs +0 -81
  136. package/dist/lib/browser/chunk-FLOVGNYB.mjs.map +0 -7
  137. package/dist/lib/browser/chunk-RJNCG4ND.mjs +0 -154
  138. package/dist/lib/browser/chunk-RJNCG4ND.mjs.map +0 -7
  139. package/dist/lib/browser/intent-resolver-UDYKO2QW.mjs.map +0 -7
  140. package/dist/lib/browser/settings-HMDGSBGO.mjs.map +0 -7
  141. package/dist/lib/browser/state-7TN26M42.mjs.map +0 -7
  142. package/dist/lib/browser/tools-SC6QEN7R.mjs.map +0 -7
  143. package/dist/lib/browser/url-handler-ODG4B6NX.mjs.map +0 -7
  144. package/dist/types/src/components/DeckLayout/Fullscreen.d.ts +0 -5
  145. package/dist/types/src/components/DeckLayout/Fullscreen.d.ts.map +0 -1
  146. package/dist/types/src/util/useBreakpoints.d.ts.map +0 -1
  147. package/dist/types/src/util/useCompanions.d.ts.map +0 -1
  148. package/dist/types/src/util/useHoistStatusbar.d.ts +0 -2
  149. package/dist/types/src/util/useHoistStatusbar.d.ts.map +0 -1
  150. package/src/components/DeckLayout/Fullscreen.tsx +0 -31
  151. /package/dist/lib/browser/{react-root-XLXN2VEW.mjs.map → react-root-ISFFOJZX.mjs.map} +0 -0
  152. /package/dist/lib/browser/{react-surface-WNGMZL7I.mjs.map → react-surface-A63RQB5N.mjs.map} +0 -0
  153. /package/dist/types/src/{util → hooks}/useBreakpoints.d.ts +0 -0
  154. /package/dist/types/src/{util → hooks}/useCompanions.d.ts +0 -0
  155. /package/src/{util → hooks}/useBreakpoints.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
  }
@@ -6,12 +6,13 @@ import { lazy } from '@dxos/app-framework';
6
6
 
7
7
  export const AppGraphBuilder = lazy(() => import('./app-graph-builder'));
8
8
  export const CheckAppScheme = lazy(() => import('./check-app-scheme'));
9
+ export const DeckSettings = lazy(() => import('./settings'));
10
+ export const DeckState = lazy(() => import('./state'));
9
11
  export const LayoutIntentResolver = lazy(() => import('./intent-resolver'));
10
12
  export const ReactRoot = lazy(() => import('./react-root'));
11
13
  export const ReactSurface = lazy(() => import('./react-surface'));
12
- export const DeckSettings = lazy(() => import('./settings'));
13
- export const DeckState = lazy(() => import('./state'));
14
14
  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';