@dxos/plugin-deck 0.7.5-labs.5f04cf6 → 0.7.5-labs.e27f9b9

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 (212) hide show
  1. package/dist/lib/browser/{app-graph-builder-67VRUD5K.mjs → app-graph-builder-CI6ZFMNL.mjs} +57 -31
  2. package/dist/lib/browser/app-graph-builder-CI6ZFMNL.mjs.map +7 -0
  3. package/dist/lib/browser/{check-app-scheme-GEX6W2R5.mjs → check-app-scheme-S3EYUPMF.mjs} +3 -3
  4. package/dist/lib/browser/{check-app-scheme-GEX6W2R5.mjs.map → check-app-scheme-S3EYUPMF.mjs.map} +2 -2
  5. package/dist/lib/browser/chunk-BTDY6SES.mjs +1119 -0
  6. package/dist/lib/browser/chunk-BTDY6SES.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-FZOBKOA2.mjs +24 -0
  8. package/dist/lib/browser/chunk-FZOBKOA2.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-M2L53AIH.mjs +126 -0
  10. package/dist/lib/browser/chunk-M2L53AIH.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-JQJ5UWVB.mjs → chunk-N7TEPFVR.mjs} +3 -2
  12. package/dist/lib/browser/{chunk-JQJ5UWVB.mjs.map → chunk-N7TEPFVR.mjs.map} +3 -3
  13. package/dist/lib/browser/{chunk-5VFDMW5M.mjs → chunk-YQ2GWTDU.mjs} +2 -2
  14. package/dist/lib/browser/chunk-YQ2GWTDU.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +36 -82
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/intent-resolver-CSXFDKTC.mjs +494 -0
  18. package/dist/lib/browser/intent-resolver-CSXFDKTC.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-root-AWYSGU4Q.mjs → react-root-HIHLRMCW.mjs} +10 -14
  21. package/dist/lib/browser/react-root-HIHLRMCW.mjs.map +7 -0
  22. package/dist/lib/browser/react-surface-4QVWKQYY.mjs +38 -0
  23. package/dist/lib/browser/react-surface-4QVWKQYY.mjs.map +7 -0
  24. package/dist/lib/browser/{settings-FNWW6WIJ.mjs → settings-WACNLCPB.mjs} +6 -7
  25. package/dist/lib/browser/settings-WACNLCPB.mjs.map +7 -0
  26. package/dist/lib/browser/state-VPOYUKK6.mjs +117 -0
  27. package/dist/lib/browser/state-VPOYUKK6.mjs.map +7 -0
  28. package/dist/lib/browser/{tools-4XY7KFQF.mjs → tools-5LDJNU56.mjs} +14 -9
  29. package/dist/lib/browser/tools-5LDJNU56.mjs.map +7 -0
  30. package/dist/lib/browser/types.mjs +16 -4
  31. package/dist/lib/browser/url-handler-HLF42IHP.mjs +70 -0
  32. package/dist/lib/browser/url-handler-HLF42IHP.mjs.map +7 -0
  33. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  34. package/dist/types/src/capabilities/{layout/app-graph-builder.d.ts → app-graph-builder.d.ts} +22 -22
  35. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/capabilities.d.ts +132 -3
  37. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  38. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -0
  39. package/dist/types/src/capabilities/index.d.ts +188 -3
  40. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  41. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  42. package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
  43. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  44. package/dist/types/src/capabilities/set-active.d.ts +9 -0
  45. package/dist/types/src/capabilities/set-active.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  47. package/dist/types/src/capabilities/state.d.ts +76 -0
  48. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  49. package/dist/types/src/capabilities/{navigation/tools.d.ts → tools.d.ts} +1 -0
  50. package/dist/types/src/capabilities/tools.d.ts.map +1 -0
  51. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -0
  52. package/dist/types/src/components/DeckLayout/ActiveNode.d.ts.map +1 -1
  53. package/dist/types/src/components/DeckLayout/ComplementarySidebar.d.ts.map +1 -1
  54. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
  55. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts +1 -4
  56. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
  57. package/dist/types/src/components/DeckLayout/Fullscreen.d.ts.map +1 -1
  58. package/dist/types/src/components/DeckLayout/NodePlankHeading.d.ts +3 -3
  59. package/dist/types/src/components/DeckLayout/NodePlankHeading.d.ts.map +1 -1
  60. package/dist/types/src/components/DeckLayout/Plank.d.ts +8 -6
  61. package/dist/types/src/components/DeckLayout/Plank.d.ts.map +1 -1
  62. package/dist/types/src/components/DeckLayout/PlankControls.d.ts +2 -2
  63. package/dist/types/src/components/DeckLayout/PlankControls.d.ts.map +1 -1
  64. package/dist/types/src/components/DeckLayout/PlankError.d.ts +4 -3
  65. package/dist/types/src/components/DeckLayout/PlankError.d.ts.map +1 -1
  66. package/dist/types/src/components/DeckLayout/Sidebar.d.ts.map +1 -1
  67. package/dist/types/src/components/DeckLayout/SidebarButton.d.ts +5 -3
  68. package/dist/types/src/components/DeckLayout/SidebarButton.d.ts.map +1 -1
  69. package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +1 -1
  70. package/dist/types/src/components/DeckLayout/Toast.d.ts +2 -2
  71. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
  72. package/dist/types/src/components/fragments.d.ts +2 -0
  73. package/dist/types/src/components/fragments.d.ts.map +1 -1
  74. package/dist/types/src/components/index.d.ts +0 -2
  75. package/dist/types/src/components/index.d.ts.map +1 -1
  76. package/dist/types/src/hooks/useMainSize.d.ts +2 -2
  77. package/dist/types/src/layout.d.ts +5 -19
  78. package/dist/types/src/layout.d.ts.map +1 -1
  79. package/dist/types/src/meta.d.ts +1 -0
  80. package/dist/types/src/meta.d.ts.map +1 -1
  81. package/dist/types/src/translations.d.ts +3 -3
  82. package/dist/types/src/types.d.ts +107 -2
  83. package/dist/types/src/types.d.ts.map +1 -1
  84. package/dist/types/src/util/index.d.ts +2 -1
  85. package/dist/types/src/util/index.d.ts.map +1 -1
  86. package/dist/types/src/util/layoutAppliesTopbar.d.ts +2 -0
  87. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -0
  88. package/dist/types/src/util/useHoistStatusbar.d.ts.map +1 -1
  89. package/dist/types/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +31 -31
  91. package/src/DeckPlugin.ts +17 -63
  92. package/src/capabilities/{layout/app-graph-builder.ts → app-graph-builder.ts} +36 -28
  93. package/src/capabilities/capabilities.ts +4 -3
  94. package/src/capabilities/{navigation/check-app-scheme.ts → check-app-scheme.ts} +2 -2
  95. package/src/capabilities/index.ts +12 -3
  96. package/src/capabilities/intent-resolver.ts +350 -0
  97. package/src/capabilities/{layout/react-root.tsx → react-root.tsx} +7 -11
  98. package/src/capabilities/react-surface.tsx +31 -0
  99. package/src/capabilities/set-active.ts +43 -0
  100. package/src/capabilities/{settings/settings.ts → settings.ts} +4 -5
  101. package/src/capabilities/state.ts +102 -0
  102. package/src/capabilities/{navigation/tools.ts → tools.ts} +10 -6
  103. package/src/capabilities/url-handler.ts +63 -0
  104. package/src/components/DeckLayout/ActiveNode.tsx +2 -3
  105. package/src/components/DeckLayout/ComplementarySidebar.tsx +120 -69
  106. package/src/components/DeckLayout/ContentEmpty.tsx +7 -10
  107. package/src/components/DeckLayout/DeckLayout.tsx +103 -61
  108. package/src/components/DeckLayout/Fullscreen.tsx +2 -3
  109. package/src/components/DeckLayout/NodePlankHeading.tsx +57 -65
  110. package/src/components/DeckLayout/Plank.tsx +32 -41
  111. package/src/components/DeckLayout/PlankControls.tsx +11 -10
  112. package/src/components/DeckLayout/PlankError.tsx +6 -5
  113. package/src/components/DeckLayout/Sidebar.tsx +17 -20
  114. package/src/components/DeckLayout/SidebarButton.tsx +25 -31
  115. package/src/components/DeckLayout/StatusBar.tsx +5 -11
  116. package/src/components/DeckLayout/Toast.tsx +2 -2
  117. package/src/components/LayoutSettings.tsx +8 -8
  118. package/src/components/fragments.ts +8 -0
  119. package/src/components/index.ts +0 -2
  120. package/src/hooks/useMainSize.ts +3 -3
  121. package/src/layout.ts +43 -212
  122. package/src/meta.ts +1 -0
  123. package/src/translations.ts +8 -8
  124. package/src/types.ts +88 -2
  125. package/src/util/index.ts +2 -1
  126. package/src/util/layoutAppliesTopbar.ts +7 -0
  127. package/src/util/useHoistStatusbar.ts +17 -8
  128. package/dist/lib/browser/app-graph-builder-67VRUD5K.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-2PJNBVCY.mjs +0 -39
  130. package/dist/lib/browser/chunk-2PJNBVCY.mjs.map +0 -7
  131. package/dist/lib/browser/chunk-4C2AFTET.mjs +0 -186
  132. package/dist/lib/browser/chunk-4C2AFTET.mjs.map +0 -7
  133. package/dist/lib/browser/chunk-5VFDMW5M.mjs.map +0 -7
  134. package/dist/lib/browser/chunk-KY5WXIXY.mjs +0 -44
  135. package/dist/lib/browser/chunk-KY5WXIXY.mjs.map +0 -7
  136. package/dist/lib/browser/chunk-WUMAJGVA.mjs +0 -1052
  137. package/dist/lib/browser/chunk-WUMAJGVA.mjs.map +0 -7
  138. package/dist/lib/browser/deck-PLCSKPGL.mjs +0 -26
  139. package/dist/lib/browser/deck-PLCSKPGL.mjs.map +0 -7
  140. package/dist/lib/browser/intent-resolver-FVOQSTBX.mjs +0 -152
  141. package/dist/lib/browser/intent-resolver-FVOQSTBX.mjs.map +0 -7
  142. package/dist/lib/browser/intent-resolver-K7GW4A2I.mjs +0 -249
  143. package/dist/lib/browser/intent-resolver-K7GW4A2I.mjs.map +0 -7
  144. package/dist/lib/browser/location-AIO6V3MK.mjs +0 -35
  145. package/dist/lib/browser/location-AIO6V3MK.mjs.map +0 -7
  146. package/dist/lib/browser/react-context-G6PDXUI5.mjs +0 -32
  147. package/dist/lib/browser/react-context-G6PDXUI5.mjs.map +0 -7
  148. package/dist/lib/browser/react-root-AWYSGU4Q.mjs.map +0 -7
  149. package/dist/lib/browser/react-surface-CLUABFNX.mjs +0 -28
  150. package/dist/lib/browser/react-surface-CLUABFNX.mjs.map +0 -7
  151. package/dist/lib/browser/settings-FNWW6WIJ.mjs.map +0 -7
  152. package/dist/lib/browser/state-7I5BD7SE.mjs +0 -34
  153. package/dist/lib/browser/state-7I5BD7SE.mjs.map +0 -7
  154. package/dist/lib/browser/tools-4XY7KFQF.mjs.map +0 -7
  155. package/dist/lib/browser/url-handler-JRAQRY73.mjs +0 -76
  156. package/dist/lib/browser/url-handler-JRAQRY73.mjs.map +0 -7
  157. package/dist/types/src/capabilities/layout/app-graph-builder.d.ts.map +0 -1
  158. package/dist/types/src/capabilities/layout/deck.d.ts +0 -4
  159. package/dist/types/src/capabilities/layout/deck.d.ts.map +0 -1
  160. package/dist/types/src/capabilities/layout/index.d.ts +0 -229
  161. package/dist/types/src/capabilities/layout/index.d.ts.map +0 -1
  162. package/dist/types/src/capabilities/layout/intent-resolver.d.ts.map +0 -1
  163. package/dist/types/src/capabilities/layout/react-context.d.ts +0 -8
  164. package/dist/types/src/capabilities/layout/react-context.d.ts.map +0 -1
  165. package/dist/types/src/capabilities/layout/react-root.d.ts.map +0 -1
  166. package/dist/types/src/capabilities/layout/state.d.ts +0 -42
  167. package/dist/types/src/capabilities/layout/state.d.ts.map +0 -1
  168. package/dist/types/src/capabilities/navigation/check-app-scheme.d.ts.map +0 -1
  169. package/dist/types/src/capabilities/navigation/index.d.ts +0 -6
  170. package/dist/types/src/capabilities/navigation/index.d.ts.map +0 -1
  171. package/dist/types/src/capabilities/navigation/intent-resolver.d.ts +0 -4
  172. package/dist/types/src/capabilities/navigation/intent-resolver.d.ts.map +0 -1
  173. package/dist/types/src/capabilities/navigation/location.d.ts +0 -4
  174. package/dist/types/src/capabilities/navigation/location.d.ts.map +0 -1
  175. package/dist/types/src/capabilities/navigation/set-location.d.ts +0 -10
  176. package/dist/types/src/capabilities/navigation/set-location.d.ts.map +0 -1
  177. package/dist/types/src/capabilities/navigation/tools.d.ts.map +0 -1
  178. package/dist/types/src/capabilities/navigation/url-handler.d.ts.map +0 -1
  179. package/dist/types/src/capabilities/settings/index.d.ts +0 -3
  180. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  181. package/dist/types/src/capabilities/settings/react-surface.d.ts.map +0 -1
  182. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  183. package/dist/types/src/components/DeckContext.d.ts +0 -11
  184. package/dist/types/src/components/DeckContext.d.ts.map +0 -1
  185. package/dist/types/src/components/LayoutContext.d.ts +0 -5
  186. package/dist/types/src/components/LayoutContext.d.ts.map +0 -1
  187. package/dist/types/src/layout.test.d.ts +0 -2
  188. package/dist/types/src/layout.test.d.ts.map +0 -1
  189. package/dist/types/src/util/layout-parts.d.ts +0 -7
  190. package/dist/types/src/util/layout-parts.d.ts.map +0 -1
  191. package/src/capabilities/layout/deck.ts +0 -25
  192. package/src/capabilities/layout/index.ts +0 -12
  193. package/src/capabilities/layout/intent-resolver.ts +0 -128
  194. package/src/capabilities/layout/react-context.tsx +0 -26
  195. package/src/capabilities/layout/state.ts +0 -32
  196. package/src/capabilities/navigation/index.ts +0 -11
  197. package/src/capabilities/navigation/intent-resolver.ts +0 -216
  198. package/src/capabilities/navigation/location.ts +0 -28
  199. package/src/capabilities/navigation/set-location.ts +0 -38
  200. package/src/capabilities/navigation/url-handler.ts +0 -67
  201. package/src/capabilities/settings/index.ts +0 -8
  202. package/src/capabilities/settings/react-surface.tsx +0 -23
  203. package/src/components/DeckContext.ts +0 -19
  204. package/src/components/LayoutContext.ts +0 -12
  205. package/src/layout.test.ts +0 -380
  206. package/src/util/layout-parts.ts +0 -12
  207. /package/dist/types/src/capabilities/{navigation/check-app-scheme.d.ts → check-app-scheme.d.ts} +0 -0
  208. /package/dist/types/src/capabilities/{layout/intent-resolver.d.ts → intent-resolver.d.ts} +0 -0
  209. /package/dist/types/src/capabilities/{layout/react-root.d.ts → react-root.d.ts} +0 -0
  210. /package/dist/types/src/capabilities/{settings/react-surface.d.ts → react-surface.d.ts} +0 -0
  211. /package/dist/types/src/capabilities/{settings/settings.d.ts → settings.d.ts} +0 -0
  212. /package/dist/types/src/capabilities/{navigation/url-handler.d.ts → url-handler.d.ts} +0 -0
@@ -1,249 +0,0 @@
1
- import {
2
- closeEntry,
3
- incrementPlank,
4
- openEntry,
5
- setLocation
6
- } from "./chunk-4C2AFTET.mjs";
7
- import {
8
- getEffectivePart
9
- } from "./chunk-2PJNBVCY.mjs";
10
- import {
11
- DECK_PLUGIN
12
- } from "./chunk-JQJ5UWVB.mjs";
13
-
14
- // packages/plugins/plugin-deck/src/capabilities/navigation/intent-resolver.ts
15
- import { batch } from "@preact/signals-core";
16
- import { pipe } from "effect";
17
- import { Capabilities, chain, contributes, createIntent, createResolver, LayoutAction, NavigationAction, openIds, SLUG_PATH_SEPARATOR } from "@dxos/app-framework";
18
- import { isReactiveObject, getTypename } from "@dxos/live-object";
19
- import { AttentionCapabilities } from "@dxos/plugin-attention";
20
- import { ObservabilityAction } from "@dxos/plugin-observability/types";
21
- var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, [
22
- createResolver(NavigationAction.Open, (data) => {
23
- const { graph } = context.requestCapability(Capabilities.AppGraph);
24
- const location = context.requestCapability(Capabilities.MutableLocation);
25
- const layout = context.requestCapability(Capabilities.MutableLayout);
26
- const attention = context.requestCapability(AttentionCapabilities.Attention);
27
- const settings = context.requestCapabilities(Capabilities.SettingsStore)[0]?.getStore(DECK_PLUGIN)?.value;
28
- const previouslyOpenIds = new Set(openIds(location.active));
29
- const layoutMode = layout.layoutMode;
30
- const toAttend = batch(() => {
31
- const processLayoutEntry = (partName, entryString, currentLayout) => {
32
- const toggle = false;
33
- const [id, path] = entryString.split(SLUG_PATH_SEPARATOR);
34
- const layoutEntry = {
35
- id,
36
- ...path ? {
37
- path
38
- } : {}
39
- };
40
- const effectivePart = getEffectivePart(partName, layoutMode);
41
- if (toggle && layoutMode === "deck" && effectivePart === "main" && currentLayout[effectivePart]?.some((entry) => entry.id === id) && !data?.noToggle) {
42
- return closeEntry(currentLayout, {
43
- part: effectivePart,
44
- entryId: id
45
- });
46
- } else {
47
- return openEntry(currentLayout, effectivePart, layoutEntry, {
48
- positioning: settings?.newPlankPositioning
49
- });
50
- }
51
- };
52
- let newLayout = location.active;
53
- Object.entries(data.activeParts).forEach(([partName, layoutEntries]) => {
54
- if (Array.isArray(layoutEntries)) {
55
- layoutEntries.forEach((activePartEntry) => {
56
- newLayout = processLayoutEntry(partName, activePartEntry, newLayout);
57
- });
58
- } else if (typeof layoutEntries === "string") {
59
- newLayout = processLayoutEntry(partName, layoutEntries, newLayout);
60
- }
61
- });
62
- return setLocation({
63
- next: newLayout,
64
- layout,
65
- location,
66
- attention
67
- });
68
- });
69
- const ids = openIds(location.active);
70
- const newlyOpen = ids.filter((i) => !previouslyOpenIds.has(i));
71
- return {
72
- data: {
73
- open: ids
74
- },
75
- intents: [
76
- createIntent(LayoutAction.ScrollIntoView, {
77
- id: newlyOpen[0] ?? toAttend
78
- }),
79
- ...toAttend ? [
80
- createIntent(NavigationAction.Expose, {
81
- id: toAttend
82
- })
83
- ] : [],
84
- ...newlyOpen.map((id) => {
85
- const active = graph?.findNode(id)?.data;
86
- const typename = isReactiveObject(active) ? getTypename(active) : void 0;
87
- return createIntent(ObservabilityAction.SendEvent, {
88
- name: "navigation.activate",
89
- properties: {
90
- id,
91
- typename
92
- }
93
- });
94
- })
95
- ]
96
- };
97
- }),
98
- createResolver(NavigationAction.AddToActive, (data) => {
99
- const location = context.requestCapability(Capabilities.MutableLocation);
100
- const layout = context.requestCapability(Capabilities.MutableLayout);
101
- const attention = context.requestCapability(AttentionCapabilities.Attention);
102
- const settings = context.requestCapabilities(Capabilities.SettingsStore)[0]?.getStore(DECK_PLUGIN)?.value;
103
- const layoutEntry = {
104
- id: data.id
105
- };
106
- const effectivePart = getEffectivePart(data.part, layout.layoutMode);
107
- setLocation({
108
- next: openEntry(location.active, effectivePart, layoutEntry, {
109
- positioning: data.positioning ?? settings?.newPlankPositioning,
110
- pivotId: data.pivotId
111
- }),
112
- layout,
113
- location,
114
- attention
115
- });
116
- const intents = [];
117
- if (data.scrollIntoView && layout.layoutMode === "deck") {
118
- intents.push(createIntent(LayoutAction.ScrollIntoView, {
119
- id: data.id
120
- }));
121
- }
122
- return {
123
- intents
124
- };
125
- }),
126
- createResolver(NavigationAction.Close, (data) => {
127
- const location = context.requestCapability(Capabilities.MutableLocation);
128
- const layout = context.requestCapability(Capabilities.MutableLayout);
129
- const attention = context.requestCapability(AttentionCapabilities.Attention);
130
- let newLayout = location.active;
131
- const layoutMode = layout.layoutMode;
132
- const intentParts = data.activeParts;
133
- Object.keys(intentParts).forEach((partName) => {
134
- const effectivePart = getEffectivePart(partName, layoutMode);
135
- const ids = intentParts[partName];
136
- if (Array.isArray(ids)) {
137
- ids.forEach((id) => {
138
- newLayout = closeEntry(newLayout, {
139
- part: effectivePart,
140
- entryId: id
141
- });
142
- });
143
- } else {
144
- newLayout = closeEntry(newLayout, {
145
- part: effectivePart,
146
- entryId: ids
147
- });
148
- }
149
- });
150
- const toAttend = setLocation({
151
- next: newLayout,
152
- layout,
153
- location,
154
- attention
155
- });
156
- return {
157
- intents: [
158
- createIntent(LayoutAction.ScrollIntoView, {
159
- id: toAttend
160
- })
161
- ]
162
- };
163
- }),
164
- createResolver(NavigationAction.Set, (data) => {
165
- const layout = context.requestCapability(Capabilities.MutableLayout);
166
- const location = context.requestCapability(Capabilities.MutableLocation);
167
- const attention = context.requestCapability(AttentionCapabilities.Attention);
168
- return batch(() => {
169
- const toAttend = setLocation({
170
- next: data.activeParts,
171
- layout,
172
- location,
173
- attention
174
- });
175
- return {
176
- intents: [
177
- createIntent(LayoutAction.ScrollIntoView, {
178
- id: toAttend
179
- })
180
- ]
181
- };
182
- });
183
- }),
184
- createResolver(NavigationAction.Adjust, (adjustment) => {
185
- const location = context.requestCapability(Capabilities.MutableLocation);
186
- const layout = context.requestCapability(Capabilities.MutableLayout);
187
- const attention = context.requestCapability(AttentionCapabilities.Attention);
188
- return batch(() => {
189
- if (adjustment.type === "increment-end" || adjustment.type === "increment-start") {
190
- setLocation({
191
- next: incrementPlank(location.active, {
192
- type: adjustment.type,
193
- layoutCoordinate: adjustment.layoutCoordinate
194
- }),
195
- layout,
196
- location,
197
- attention
198
- });
199
- }
200
- if (adjustment.type === "solo") {
201
- const entryId = adjustment.layoutCoordinate.entryId;
202
- if (layout.layoutMode !== "solo") {
203
- return {
204
- intents: [
205
- // NOTE: The order of these is important.
206
- pipe(createIntent(NavigationAction.Open, {
207
- activeParts: {
208
- solo: [
209
- entryId
210
- ]
211
- }
212
- }), chain(LayoutAction.SetLayoutMode, {
213
- layoutMode: "solo"
214
- }))
215
- ]
216
- };
217
- } else {
218
- return {
219
- intents: [
220
- // NOTE: The order of these is important.
221
- pipe(createIntent(LayoutAction.SetLayoutMode, {
222
- layoutMode: "deck"
223
- }), chain(NavigationAction.Close, {
224
- activeParts: {
225
- solo: [
226
- entryId
227
- ]
228
- }
229
- }), chain(NavigationAction.Open, {
230
- activeParts: {
231
- main: [
232
- entryId
233
- ]
234
- },
235
- noToggle: true
236
- }), chain(LayoutAction.ScrollIntoView, {
237
- id: entryId
238
- }))
239
- ]
240
- };
241
- }
242
- }
243
- });
244
- })
245
- ]);
246
- export {
247
- intent_resolver_default as default
248
- };
249
- //# sourceMappingURL=intent-resolver-K7GW4A2I.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/navigation/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\nimport { pipe } from 'effect';\n\nimport {\n Capabilities,\n chain,\n contributes,\n createIntent,\n createResolver,\n LayoutAction,\n NavigationAction,\n openIds,\n SLUG_PATH_SEPARATOR,\n type LayoutEntry,\n type LayoutPart,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { isReactiveObject, getTypename } from '@dxos/live-object';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\n\nimport { setLocation } from './set-location';\nimport { closeEntry, incrementPlank, openEntry } from '../../layout';\nimport { DECK_PLUGIN } from '../../meta';\nimport { type DeckSettingsProps } from '../../types';\nimport { getEffectivePart } from '../../util';\n\n// TODO(wittjosiah): Factor out navgiation from deck plugin.\nexport default (context: PluginsContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver(NavigationAction.Open, (data) => {\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n const location = context.requestCapability(Capabilities.MutableLocation);\n const layout = context.requestCapability(Capabilities.MutableLayout);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DeckSettingsProps>(DECK_PLUGIN)?.value;\n\n const previouslyOpenIds = new Set<string>(openIds(location.active));\n const layoutMode = layout.layoutMode;\n const toAttend = batch(() => {\n const processLayoutEntry = (partName: string, entryString: string, currentLayout: any) => {\n // TODO(burdon): Option to toggle?\n const toggle = false;\n const [id, path] = entryString.split(SLUG_PATH_SEPARATOR);\n const layoutEntry: LayoutEntry = { id, ...(path ? { path } : {}) };\n const effectivePart = getEffectivePart(partName as LayoutPart, layoutMode);\n if (\n toggle &&\n layoutMode === 'deck' &&\n effectivePart === 'main' &&\n currentLayout[effectivePart]?.some((entry: LayoutEntry) => entry.id === id) &&\n !data?.noToggle\n ) {\n // If we're in deck mode and the main part is already open, toggle it closed.\n return closeEntry(currentLayout, { part: effectivePart as LayoutPart, entryId: id });\n } else {\n return openEntry(currentLayout, effectivePart, layoutEntry, {\n positioning: settings?.newPlankPositioning,\n });\n }\n };\n\n let newLayout = location.active;\n Object.entries(data.activeParts).forEach(([partName, layoutEntries]) => {\n if (Array.isArray(layoutEntries)) {\n layoutEntries.forEach((activePartEntry: string) => {\n newLayout = processLayoutEntry(partName, activePartEntry, newLayout);\n });\n } else if (typeof layoutEntries === 'string') {\n // Legacy single string entry.\n newLayout = processLayoutEntry(partName, layoutEntries, newLayout);\n }\n });\n\n return setLocation({ next: newLayout, layout, location, attention });\n });\n\n const ids = openIds(location.active);\n const newlyOpen = ids.filter((i) => !previouslyOpenIds.has(i));\n\n return {\n data: { open: ids },\n intents: [\n createIntent(LayoutAction.ScrollIntoView, { id: newlyOpen[0] ?? toAttend }),\n ...(toAttend ? [createIntent(NavigationAction.Expose, { id: toAttend })] : []),\n ...newlyOpen.map((id) => {\n const active = graph?.findNode(id)?.data;\n const typename = isReactiveObject(active) ? getTypename(active) : undefined;\n return createIntent(ObservabilityAction.SendEvent, {\n name: 'navigation.activate',\n properties: {\n id,\n typename,\n },\n });\n }),\n ],\n };\n }),\n createResolver(NavigationAction.AddToActive, (data) => {\n const location = context.requestCapability(Capabilities.MutableLocation);\n const layout = context.requestCapability(Capabilities.MutableLayout);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DeckSettingsProps>(DECK_PLUGIN)?.value;\n\n const layoutEntry = { id: data.id };\n const effectivePart = getEffectivePart(data.part, layout.layoutMode);\n\n setLocation({\n next: openEntry(location.active, effectivePart, layoutEntry, {\n positioning: data.positioning ?? settings?.newPlankPositioning,\n pivotId: data.pivotId,\n }),\n layout,\n location,\n attention,\n });\n\n const intents = [];\n if (data.scrollIntoView && layout.layoutMode === 'deck') {\n intents.push(createIntent(LayoutAction.ScrollIntoView, { id: data.id }));\n }\n\n return { intents };\n }),\n createResolver(NavigationAction.Close, (data) => {\n const location = context.requestCapability(Capabilities.MutableLocation);\n const layout = context.requestCapability(Capabilities.MutableLayout);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n\n let newLayout = location.active;\n const layoutMode = layout.layoutMode;\n const intentParts = data.activeParts;\n Object.keys(intentParts).forEach((partName: string) => {\n const effectivePart = getEffectivePart(partName as LayoutPart, layoutMode);\n const ids = intentParts[partName];\n if (Array.isArray(ids)) {\n ids.forEach((id: string) => {\n newLayout = closeEntry(newLayout, { part: effectivePart, entryId: id });\n });\n } else {\n // Legacy single string entry\n newLayout = closeEntry(newLayout, { part: effectivePart, entryId: ids });\n }\n });\n\n const toAttend = setLocation({ next: newLayout, layout, location, attention });\n return { intents: [createIntent(LayoutAction.ScrollIntoView, { id: toAttend })] };\n }),\n createResolver(NavigationAction.Set, (data) => {\n const layout = context.requestCapability(Capabilities.MutableLayout);\n const location = context.requestCapability(Capabilities.MutableLocation);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n\n return batch(() => {\n const toAttend = setLocation({ next: data.activeParts, layout, location, attention });\n return { intents: [createIntent(LayoutAction.ScrollIntoView, { id: toAttend })] };\n });\n }),\n createResolver(NavigationAction.Adjust, (adjustment) => {\n const location = context.requestCapability(Capabilities.MutableLocation);\n const layout = context.requestCapability(Capabilities.MutableLayout);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n\n return batch(() => {\n if (adjustment.type === 'increment-end' || adjustment.type === 'increment-start') {\n setLocation({\n next: incrementPlank(location.active, {\n type: adjustment.type,\n layoutCoordinate: adjustment.layoutCoordinate,\n }),\n layout,\n location,\n attention,\n });\n }\n\n if (adjustment.type === 'solo') {\n const entryId = adjustment.layoutCoordinate.entryId;\n if (layout.layoutMode !== 'solo') {\n // Solo the entry.\n return {\n intents: [\n // NOTE: The order of these is important.\n pipe(\n createIntent(NavigationAction.Open, { activeParts: { solo: [entryId] } }),\n chain(LayoutAction.SetLayoutMode, { layoutMode: 'solo' }),\n ),\n ],\n };\n } else {\n // Un-solo the current entry.\n return {\n intents: [\n // NOTE: The order of these is important.\n pipe(\n createIntent(LayoutAction.SetLayoutMode, { layoutMode: 'deck' }),\n chain(NavigationAction.Close, { activeParts: { solo: [entryId] } }),\n chain(NavigationAction.Open, { activeParts: { main: [entryId] }, noToggle: true }),\n chain(LayoutAction.ScrollIntoView, { id: entryId }),\n ),\n ],\n };\n }\n }\n });\n }),\n ]);\n"],
5
- "mappings": "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",
6
- "names": ["batch", "pipe", "Capabilities", "chain", "contributes", "createIntent", "createResolver", "LayoutAction", "NavigationAction", "openIds", "SLUG_PATH_SEPARATOR", "isReactiveObject", "getTypename", "AttentionCapabilities", "ObservabilityAction", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "NavigationAction", "Open", "data", "graph", "requestCapability", "AppGraph", "location", "MutableLocation", "layout", "MutableLayout", "attention", "AttentionCapabilities", "Attention", "settings", "requestCapabilities", "SettingsStore", "getStore", "DECK_PLUGIN", "value", "previouslyOpenIds", "Set", "openIds", "active", "layoutMode", "toAttend", "batch", "processLayoutEntry", "partName", "entryString", "currentLayout", "toggle", "id", "path", "split", "SLUG_PATH_SEPARATOR", "layoutEntry", "effectivePart", "getEffectivePart", "some", "entry", "noToggle", "closeEntry", "part", "entryId", "openEntry", "positioning", "newPlankPositioning", "newLayout", "Object", "entries", "activeParts", "forEach", "layoutEntries", "Array", "isArray", "activePartEntry", "setLocation", "next", "ids", "newlyOpen", "filter", "i", "has", "open", "intents", "createIntent", "LayoutAction", "ScrollIntoView", "Expose", "map", "findNode", "typename", "isReactiveObject", "getTypename", "undefined", "ObservabilityAction", "SendEvent", "name", "properties", "AddToActive", "pivotId", "scrollIntoView", "push", "Close", "intentParts", "keys", "Adjust", "adjustment", "type", "incrementPlank", "layoutCoordinate", "pipe", "solo", "chain", "SetLayoutMode", "main"]
7
- }
@@ -1,35 +0,0 @@
1
- import {
2
- NAV_ID
3
- } from "./chunk-WUMAJGVA.mjs";
4
- import "./chunk-2PJNBVCY.mjs";
5
- import "./chunk-KY5WXIXY.mjs";
6
- import "./chunk-JQJ5UWVB.mjs";
7
-
8
- // packages/plugins/plugin-deck/src/capabilities/navigation/location.ts
9
- import { Capabilities, contributes } from "@dxos/app-framework";
10
- import { LocalStorageStore } from "@dxos/local-storage";
11
- var LOCATION_KEY = "dxos.org/settings/layout";
12
- var location_default = () => {
13
- const location = new LocalStorageStore(LOCATION_KEY, {
14
- active: {
15
- sidebar: [
16
- {
17
- id: NAV_ID
18
- }
19
- ]
20
- },
21
- closed: []
22
- });
23
- location.prop({
24
- key: "active",
25
- type: LocalStorageStore.json()
26
- }).prop({
27
- key: "closed",
28
- type: LocalStorageStore.json()
29
- });
30
- return contributes(Capabilities.Location, location.values, () => location.close());
31
- };
32
- export {
33
- location_default as default
34
- };
35
- //# sourceMappingURL=location-AIO6V3MK.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/navigation/location.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, type LayoutParts } from '@dxos/app-framework';\nimport { LocalStorageStore } from '@dxos/local-storage';\n\nimport { NAV_ID } from '../../components';\n\n// NOTE: The key is this currently for backwards compatibility of storage.\nconst LOCATION_KEY = 'dxos.org/settings/layout';\n\nexport default () => {\n // TODO(wittjosiah): This active state is not a generic navigation state but quite deck specific.\n // It is also closely tied to the layout mode state (which also seems quite deck specific).\n // The layout and navigation interfaces need to be revisited and cleaned up.\n // Doing this cleanup should also help simplify some of the convoluted logic for managing it.\n const location = new LocalStorageStore<Capabilities.MutableLocation>(LOCATION_KEY, {\n active: { sidebar: [{ id: NAV_ID }] },\n closed: [],\n });\n\n location\n .prop({ key: 'active', type: LocalStorageStore.json<LayoutParts>() })\n .prop({ key: 'closed', type: LocalStorageStore.json<string[]>() });\n\n return contributes(Capabilities.Location, location.values, () => location.close());\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,mBAAqC;AAC5D,SAASC,yBAAyB;AAKlC,IAAMC,eAAe;AAErB,IAAA,mBAAe,MAAA;AAKb,QAAMC,WAAW,IAAIC,kBAAgDF,cAAc;IACjFG,QAAQ;MAAEC,SAAS;QAAC;UAAEC,IAAIC;QAAO;;IAAG;IACpCC,QAAQ,CAAA;EACV,CAAA;AAEAN,WACGO,KAAK;IAAEC,KAAK;IAAUC,MAAMR,kBAAkBS,KAAI;EAAgB,CAAA,EAClEH,KAAK;IAAEC,KAAK;IAAUC,MAAMR,kBAAkBS,KAAI;EAAa,CAAA;AAElE,SAAOC,YAAYC,aAAaC,UAAUb,SAASc,QAAQ,MAAMd,SAASe,MAAK,CAAA;AACjF;",
6
- "names": ["Capabilities", "contributes", "LocalStorageStore", "LOCATION_KEY", "location", "LocalStorageStore", "active", "sidebar", "id", "NAV_ID", "closed", "prop", "key", "type", "json", "contributes", "Capabilities", "Location", "values", "close"]
7
- }
@@ -1,32 +0,0 @@
1
- import {
2
- DeckContext,
3
- LayoutContext
4
- } from "./chunk-WUMAJGVA.mjs";
5
- import "./chunk-2PJNBVCY.mjs";
6
- import "./chunk-KY5WXIXY.mjs";
7
- import {
8
- DeckCapabilities
9
- } from "./chunk-5VFDMW5M.mjs";
10
- import {
11
- DECK_PLUGIN
12
- } from "./chunk-JQJ5UWVB.mjs";
13
-
14
- // packages/plugins/plugin-deck/src/capabilities/layout/react-context.tsx
15
- import React from "react";
16
- import { Capabilities, contributes, useCapability } from "@dxos/app-framework";
17
- var react_context_default = () => contributes(Capabilities.ReactContext, {
18
- id: DECK_PLUGIN,
19
- context: (props) => {
20
- const layout = useCapability(Capabilities.Layout);
21
- const deck = useCapability(DeckCapabilities.MutableDeckState);
22
- return /* @__PURE__ */ React.createElement(LayoutContext.Provider, {
23
- value: layout
24
- }, /* @__PURE__ */ React.createElement(DeckContext.Provider, {
25
- value: deck
26
- }, props.children));
27
- }
28
- });
29
- export {
30
- react_context_default as default
31
- };
32
- //# sourceMappingURL=react-context-G6PDXUI5.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/layout/react-context.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Capabilities, contributes, useCapability } from '@dxos/app-framework';\n\nimport { DeckContext, LayoutContext } from '../../components';\nimport { DECK_PLUGIN } from '../../meta';\nimport { DeckCapabilities } from '../capabilities';\n\nexport default () =>\n contributes(Capabilities.ReactContext, {\n id: DECK_PLUGIN,\n context: (props: PropsWithChildren) => {\n const layout = useCapability(Capabilities.Layout);\n const deck = useCapability(DeckCapabilities.MutableDeckState);\n\n return (\n <LayoutContext.Provider value={layout}>\n <DeckContext.Provider value={deck}>{props.children}</DeckContext.Provider>\n </LayoutContext.Provider>\n );\n },\n });\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAIA,OAAOA,WAAuC;AAE9C,SAASC,cAAcC,aAAaC,qBAAqB;AAMzD,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,IAAIC;EACJC,SAAS,CAACC,UAAAA;AACR,UAAMC,SAASC,cAAcP,aAAaQ,MAAM;AAChD,UAAMC,OAAOF,cAAcG,iBAAiBC,gBAAgB;AAE5D,WACE,sBAAA,cAACC,cAAcC,UAAQ;MAACC,OAAOR;OAC7B,sBAAA,cAACS,YAAYF,UAAQ;MAACC,OAAOL;OAAOJ,MAAMW,QAAQ,CAAA;EAGxD;AACF,CAAA;",
6
- "names": ["React", "Capabilities", "contributes", "useCapability", "contributes", "Capabilities", "ReactContext", "id", "DECK_PLUGIN", "context", "props", "layout", "useCapability", "Layout", "deck", "DeckCapabilities", "MutableDeckState", "LayoutContext", "Provider", "value", "DeckContext", "children"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/layout/react-root.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, contributes, useCapabilities, useCapability } from '@dxos/app-framework';\n\nimport { DeckLayout } from '../../components';\nimport { DECK_PLUGIN } from '../../meta';\nimport { type DeckSettingsProps } from '../../types';\nimport { DeckCapabilities } from '../capabilities';\n\nexport default () =>\n contributes(Capabilities.ReactRoot, {\n id: DECK_PLUGIN,\n root: () => {\n const layout = useCapability(Capabilities.Layout);\n const location = useCapability(Capabilities.Location);\n const deck = useCapability(DeckCapabilities.MutableDeckState);\n const settings = useCapability(Capabilities.SettingsStore).getStore<DeckSettingsProps>(DECK_PLUGIN)!.value;\n const panels = useCapabilities(DeckCapabilities.ComplementaryPanel);\n\n const handleDismissToast = useCallback(\n (id: string) => {\n const index = layout.toasts.findIndex((toast) => toast.id === id);\n if (index !== -1) {\n // Allow time for the toast to animate out.\n // TODO(burdon): Factor out and unregister timeout.\n setTimeout(() => {\n if (layout.toasts[index].id === deck.currentUndoId) {\n deck.currentUndoId = undefined;\n }\n layout.toasts.splice(index, 1);\n }, 1_000);\n }\n },\n [layout.toasts],\n );\n\n return (\n <DeckLayout\n layoutParts={location.active}\n showHints={settings.showHints}\n overscroll={settings.overscroll}\n toasts={layout.toasts}\n panels={panels}\n onDismissToast={handleDismissToast}\n />\n );\n },\n });\n"],
5
- "mappings": ";;;;;;;;;;;;;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAASC,cAAcC,aAAaC,iBAAiBC,qBAAqB;AAO1E,IAAA,qBAAe,MACbC,YAAYC,aAAaC,WAAW;EAClCC,IAAIC;EACJC,MAAM,MAAA;AACJ,UAAMC,SAASC,cAAcN,aAAaO,MAAM;AAChD,UAAMC,WAAWF,cAAcN,aAAaS,QAAQ;AACpD,UAAMC,OAAOJ,cAAcK,iBAAiBC,gBAAgB;AAC5D,UAAMC,WAAWP,cAAcN,aAAac,aAAa,EAAEC,SAA4BZ,WAAAA,EAAca;AACrG,UAAMC,SAASC,gBAAgBP,iBAAiBQ,kBAAkB;AAElE,UAAMC,qBAAqBC,YACzB,CAACnB,OAAAA;AACC,YAAMoB,QAAQjB,OAAOkB,OAAOC,UAAU,CAACC,UAAUA,MAAMvB,OAAOA,EAAAA;AAC9D,UAAIoB,UAAU,IAAI;AAGhBI,mBAAW,MAAA;AACT,cAAIrB,OAAOkB,OAAOD,KAAAA,EAAOpB,OAAOQ,KAAKiB,eAAe;AAClDjB,iBAAKiB,gBAAgBC;UACvB;AACAvB,iBAAOkB,OAAOM,OAAOP,OAAO,CAAA;QAC9B,GAAG,GAAA;MACL;IACF,GACA;MAACjB,OAAOkB;KAAO;AAGjB,WACE,sBAAA,cAACO,YAAAA;MACCC,aAAavB,SAASwB;MACtBC,WAAWpB,SAASoB;MACpBC,YAAYrB,SAASqB;MACrBX,QAAQlB,OAAOkB;MACfN;MACAkB,gBAAgBf;;EAGtB;AACF,CAAA;",
6
- "names": ["React", "useCallback", "Capabilities", "contributes", "useCapabilities", "useCapability", "contributes", "Capabilities", "ReactRoot", "id", "DECK_PLUGIN", "root", "layout", "useCapability", "Layout", "location", "Location", "deck", "DeckCapabilities", "MutableDeckState", "settings", "SettingsStore", "getStore", "value", "panels", "useCapabilities", "ComplementaryPanel", "handleDismissToast", "useCallback", "index", "toasts", "findIndex", "toast", "setTimeout", "currentUndoId", "undefined", "splice", "DeckLayout", "layoutParts", "active", "showHints", "overscroll", "onDismissToast"]
7
- }
@@ -1,28 +0,0 @@
1
- import {
2
- LayoutSettings
3
- } from "./chunk-WUMAJGVA.mjs";
4
- import "./chunk-2PJNBVCY.mjs";
5
- import "./chunk-KY5WXIXY.mjs";
6
- import {
7
- DECK_PLUGIN
8
- } from "./chunk-JQJ5UWVB.mjs";
9
-
10
- // packages/plugins/plugin-deck/src/capabilities/settings/react-surface.tsx
11
- import React from "react";
12
- import { Capabilities, contributes, useCapability } from "@dxos/app-framework";
13
- var react_surface_default = () => contributes(Capabilities.ReactSurface, {
14
- id: DECK_PLUGIN,
15
- role: "settings",
16
- filter: (data) => data.subject === DECK_PLUGIN,
17
- component: () => {
18
- const store = useCapability(Capabilities.SettingsStore);
19
- const settings = store.getStore(DECK_PLUGIN).value;
20
- return /* @__PURE__ */ React.createElement(LayoutSettings, {
21
- settings
22
- });
23
- }
24
- });
25
- export {
26
- react_surface_default as default
27
- };
28
- //# sourceMappingURL=react-surface-CLUABFNX.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/settings/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, useCapability } from '@dxos/app-framework';\n\nimport { LayoutSettings } from '../../components';\nimport { DECK_PLUGIN } from '../../meta';\nimport { type DeckSettingsProps } from '../../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, {\n id: DECK_PLUGIN,\n role: 'settings',\n filter: (data): data is any => data.subject === DECK_PLUGIN,\n component: () => {\n const store = useCapability(Capabilities.SettingsStore);\n const settings = store.getStore<DeckSettingsProps>(DECK_PLUGIN)!.value;\n return <LayoutSettings settings={settings} />;\n },\n });\n"],
5
- "mappings": ";;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,qBAAqB;AAMzD,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,IAAIC;EACJC,MAAM;EACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAYJ;EAChDK,WAAW,MAAA;AACT,UAAMC,QAAQC,cAAcV,aAAaW,aAAa;AACtD,UAAMC,WAAWH,MAAMI,SAA4BV,WAAAA,EAAcW;AACjE,WAAO,sBAAA,cAACC,gBAAAA;MAAeH;;EACzB;AACF,CAAA;",
6
- "names": ["React", "Capabilities", "contributes", "useCapability", "contributes", "Capabilities", "ReactSurface", "id", "DECK_PLUGIN", "role", "filter", "data", "subject", "component", "store", "useCapability", "SettingsStore", "settings", "getStore", "value", "LayoutSettings"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/settings/settings.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\n\nimport { DECK_PLUGIN } from '../../meta';\nimport { DeckSettingsSchema, type DeckSettingsProps } from '../../types';\n\nexport default () => {\n const settings = create<DeckSettingsProps>({\n showHints: false,\n customSlots: false,\n flatDeck: false,\n enableNativeRedirect: false,\n newPlankPositioning: 'start',\n overscroll: 'centering',\n });\n\n return contributes(Capabilities.Settings, { schema: DeckSettingsSchema, prefix: DECK_PLUGIN, value: settings });\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,cAAc;AAKvB,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,OAA0B;IACzCC,WAAW;IACXC,aAAa;IACbC,UAAU;IACVC,sBAAsB;IACtBC,qBAAqB;IACrBC,YAAY;EACd,CAAA;AAEA,SAAOC,YAAYC,aAAaC,UAAU;IAAEC,QAAQC;IAAoBC,QAAQC;IAAaC,OAAOf;EAAS,CAAA;AAC/G;",
6
- "names": ["Capabilities", "contributes", "create", "settings", "create", "showHints", "customSlots", "flatDeck", "enableNativeRedirect", "newPlankPositioning", "overscroll", "contributes", "Capabilities", "Settings", "schema", "DeckSettingsSchema", "prefix", "DECK_PLUGIN", "value"]
7
- }
@@ -1,34 +0,0 @@
1
- // packages/plugins/plugin-deck/src/capabilities/layout/state.ts
2
- import { Capabilities, contributes } from "@dxos/app-framework";
3
- import { LocalStorageStore } from "@dxos/local-storage";
4
- var LAYOUT_KEY = "dxos.org/settings/layout";
5
- var state_default = () => {
6
- const layout = new LocalStorageStore(LAYOUT_KEY, {
7
- layoutMode: "solo",
8
- sidebarOpen: true,
9
- complementarySidebarOpen: false,
10
- dialogContent: null,
11
- dialogOpen: false,
12
- dialogBlockAlign: void 0,
13
- dialogType: void 0,
14
- popoverContent: null,
15
- popoverAnchorId: void 0,
16
- popoverOpen: false,
17
- toasts: []
18
- });
19
- layout.prop({
20
- key: "layoutMode",
21
- type: LocalStorageStore.enum()
22
- }).prop({
23
- key: "sidebarOpen",
24
- type: LocalStorageStore.bool()
25
- }).prop({
26
- key: "complementarySidebarOpen",
27
- type: LocalStorageStore.bool()
28
- });
29
- return contributes(Capabilities.Layout, layout.values, () => layout.close());
30
- };
31
- export {
32
- state_default as default
33
- };
34
- //# sourceMappingURL=state-7I5BD7SE.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/layout/state.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, type LayoutMode, type Layout } from '@dxos/app-framework';\nimport { LocalStorageStore } from '@dxos/local-storage';\n\n// NOTE: The key is this currently for backwards compatibility of storage.\nconst LAYOUT_KEY = 'dxos.org/settings/layout';\n\nexport default () => {\n const layout = new LocalStorageStore<Layout>(LAYOUT_KEY, {\n layoutMode: 'solo',\n sidebarOpen: true,\n complementarySidebarOpen: false,\n dialogContent: null,\n dialogOpen: false,\n dialogBlockAlign: undefined,\n dialogType: undefined,\n popoverContent: null,\n popoverAnchorId: undefined,\n popoverOpen: false,\n toasts: [],\n });\n\n layout\n .prop({ key: 'layoutMode', type: LocalStorageStore.enum<LayoutMode>() })\n .prop({ key: 'sidebarOpen', type: LocalStorageStore.bool() })\n .prop({ key: 'complementarySidebarOpen', type: LocalStorageStore.bool() });\n\n return contributes(Capabilities.Layout, layout.values, () => layout.close());\n};\n"],
5
- "mappings": ";AAIA,SAASA,cAAcC,mBAAiD;AACxE,SAASC,yBAAyB;AAGlC,IAAMC,aAAa;AAEnB,IAAA,gBAAe,MAAA;AACb,QAAMC,SAAS,IAAIC,kBAA0BF,YAAY;IACvDG,YAAY;IACZC,aAAa;IACbC,0BAA0B;IAC1BC,eAAe;IACfC,YAAY;IACZC,kBAAkBC;IAClBC,YAAYD;IACZE,gBAAgB;IAChBC,iBAAiBH;IACjBI,aAAa;IACbC,QAAQ,CAAA;EACV,CAAA;AAEAb,SACGc,KAAK;IAAEC,KAAK;IAAcC,MAAMf,kBAAkBgB,KAAI;EAAe,CAAA,EACrEH,KAAK;IAAEC,KAAK;IAAeC,MAAMf,kBAAkBiB,KAAI;EAAG,CAAA,EAC1DJ,KAAK;IAAEC,KAAK;IAA4BC,MAAMf,kBAAkBiB,KAAI;EAAG,CAAA;AAE1E,SAAOC,YAAYC,aAAaC,QAAQrB,OAAOsB,QAAQ,MAAMtB,OAAOuB,MAAK,CAAA;AAC3E;",
6
- "names": ["Capabilities", "contributes", "LocalStorageStore", "LAYOUT_KEY", "layout", "LocalStorageStore", "layoutMode", "sidebarOpen", "complementarySidebarOpen", "dialogContent", "dialogOpen", "dialogBlockAlign", "undefined", "dialogType", "popoverContent", "popoverAnchorId", "popoverOpen", "toasts", "prop", "key", "type", "enum", "bool", "contributes", "Capabilities", "Layout", "values", "close"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/navigation/tools.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n NavigationAction,\n type PromiseIntentDispatcher,\n} from '@dxos/app-framework';\nimport { defineTool, ToolResult } from '@dxos/artifact';\nimport { S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\nexport default () =>\n contributes(Capabilities.Tools, [\n defineTool({\n name: 'show',\n // TODO(ZaymonFC): We should update the prompt to teach the LLM the difference between object ids and fully qualified ids.\n description:\n 'Show an item in the app. Use this tool to open an artifact. When supplying IDs to show, they must be fully qualified like space:object.',\n // TODO(wittjosiah): Refactor Layout/Navigation/Deck actions so that they can be used directly.\n schema: S.Struct({\n id: S.String.annotations({\n description: 'The ID of the item to show.',\n }),\n pivotId: S.optional(\n S.String.annotations({\n description: 'The ID of the chat. If provided, the item will be added after the pivot item.',\n }),\n ),\n }),\n execute: async ({ id, pivotId }, { extensions }) => {\n invariant(extensions?.dispatch, 'No intent dispatcher');\n const { data, error } = await extensions.dispatch(\n createIntent(NavigationAction.AddToActive, {\n id,\n part: 'main',\n pivotId,\n }),\n );\n if (error) {\n return ToolResult.Error(error.message);\n }\n\n return ToolResult.Success(data);\n },\n }),\n ]);\n"],
5
- "mappings": ";AAIA,SACEA,cACAC,aACAC,cACAC,wBAEK;AACP,SAASC,YAAYC,kBAAkB;AACvC,SAASC,SAAS;AAClB,SAASC,iBAAiB;;AAS1B,IAAA,gBAAe,MACbN,YAAYD,aAAaQ,OAAO;EAC9BJ,WAAW;IACTK,MAAM;;IAENC,aACE;;IAEFC,QAAQL,EAAEM,OAAO;MACfC,IAAIP,EAAEQ,OAAOC,YAAY;QACvBL,aAAa;MACf,CAAA;MACAM,SAASV,EAAEW,SACTX,EAAEQ,OAAOC,YAAY;QACnBL,aAAa;MACf,CAAA,CAAA;IAEJ,CAAA;IACAQ,SAAS,OAAO,EAAEL,IAAIG,QAAO,GAAI,EAAEG,WAAU,MAAE;AAC7CZ,gBAAUY,YAAYC,UAAU,wBAAA;;;;;;;;;AAChC,YAAM,EAAEC,MAAMC,MAAK,IAAK,MAAMH,WAAWC,SACvClB,aAAaC,iBAAiBoB,aAAa;QACzCV;QACAW,MAAM;QACNR;MACF,CAAA,CAAA;AAEF,UAAIM,OAAO;AACT,eAAOjB,WAAWoB,MAAMH,MAAMI,OAAO;MACvC;AAEA,aAAOrB,WAAWsB,QAAQN,IAAAA;IAC5B;EACF,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "createIntent", "NavigationAction", "defineTool", "ToolResult", "S", "invariant", "Tools", "name", "description", "schema", "Struct", "id", "String", "annotations", "pivotId", "optional", "execute", "extensions", "dispatch", "data", "error", "AddToActive", "part", "Error", "message", "Success"]
7
- }
@@ -1,76 +0,0 @@
1
- import {
2
- mergeLayoutParts,
3
- removePart,
4
- setLocation,
5
- soloPartToUri,
6
- uriToSoloPart
7
- } from "./chunk-4C2AFTET.mjs";
8
- import {
9
- NAV_ID
10
- } from "./chunk-WUMAJGVA.mjs";
11
- import "./chunk-2PJNBVCY.mjs";
12
- import "./chunk-KY5WXIXY.mjs";
13
- import "./chunk-JQJ5UWVB.mjs";
14
-
15
- // packages/plugins/plugin-deck/src/capabilities/navigation/url-handler.ts
16
- import { Capabilities, contributes, createIntent, LayoutAction } from "@dxos/app-framework";
17
- import { scheduledEffect } from "@dxos/echo-signals/core";
18
- import { AttentionCapabilities } from "@dxos/plugin-attention";
19
- var url_handler_default = async (context) => {
20
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher) ?? {};
21
- const location = context.requestCapability(Capabilities.MutableLocation);
22
- const layout = context.requestCapability(Capabilities.MutableLayout);
23
- const attention = context.requestCapability(AttentionCapabilities.Attention);
24
- const handleNavigation = async () => {
25
- const setLocation2 = (next) => setLocation({
26
- next,
27
- layout,
28
- location,
29
- attention
30
- });
31
- const pathname = window.location.pathname;
32
- if (pathname === "/reset") {
33
- setLocation2({
34
- sidebar: [
35
- {
36
- id: NAV_ID
37
- }
38
- ]
39
- });
40
- location.closed = [];
41
- layout.layoutMode = "solo";
42
- window.location.pathname = "/";
43
- return;
44
- }
45
- const startingLayout = removePart(location.active, "solo");
46
- const layoutFromUri = uriToSoloPart(pathname);
47
- if (!layoutFromUri) {
48
- const toAttend2 = setLocation2(startingLayout);
49
- layout.layoutMode = "deck";
50
- await dispatch?.(createIntent(LayoutAction.ScrollIntoView, {
51
- id: toAttend2
52
- }));
53
- return;
54
- }
55
- const toAttend = setLocation2(mergeLayoutParts(layoutFromUri, startingLayout));
56
- layout.layoutMode = "solo";
57
- await dispatch?.(createIntent(LayoutAction.ScrollIntoView, {
58
- id: toAttend
59
- }));
60
- };
61
- await handleNavigation();
62
- window.addEventListener("popstate", handleNavigation);
63
- const unsubscribe = scheduledEffect(() => ({
64
- selectedPath: soloPartToUri(location.active)
65
- }), ({ selectedPath }) => {
66
- history.pushState(null, "", `/${selectedPath}${window.location.search}`);
67
- });
68
- return contributes(Capabilities.Null, null, () => {
69
- window.removeEventListener("popstate", handleNavigation);
70
- unsubscribe();
71
- });
72
- };
73
- export {
74
- url_handler_default as default
75
- };
76
- //# sourceMappingURL=url-handler-JRAQRY73.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/navigation/url-handler.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type LayoutParts,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { scheduledEffect } from '@dxos/echo-signals/core';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\n\nimport { setLocation as naturalSetLocation } from './set-location';\nimport { NAV_ID } from '../../components';\nimport { mergeLayoutParts, removePart, soloPartToUri, uriToSoloPart } from '../../layout';\n\nexport default async (context: PluginsContext) => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher) ?? {};\n const location = context.requestCapability(Capabilities.MutableLocation);\n const layout = context.requestCapability(Capabilities.MutableLayout);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n\n const handleNavigation = async () => {\n const setLocation = (next: LayoutParts) => naturalSetLocation({ next, layout, location, attention });\n\n const pathname = window.location.pathname;\n if (pathname === '/reset') {\n setLocation({ sidebar: [{ id: NAV_ID }] });\n location.closed = [];\n layout.layoutMode = 'solo';\n window.location.pathname = '/';\n return;\n }\n\n const startingLayout = removePart(location.active, 'solo');\n const layoutFromUri = uriToSoloPart(pathname);\n if (!layoutFromUri) {\n const toAttend = setLocation(startingLayout);\n layout.layoutMode = 'deck';\n await dispatch?.(createIntent(LayoutAction.ScrollIntoView, { id: toAttend }));\n return;\n }\n\n const toAttend = setLocation(mergeLayoutParts(layoutFromUri, startingLayout));\n layout.layoutMode = 'solo';\n await dispatch?.(createIntent(LayoutAction.ScrollIntoView, { id: toAttend }));\n };\n\n await handleNavigation();\n window.addEventListener('popstate', handleNavigation);\n\n const unsubscribe = scheduledEffect(\n () => ({ selectedPath: soloPartToUri(location.active) }),\n ({ selectedPath }) => {\n // TODO(thure): In some browsers, this only preserves the most recent state change, even though this is not `history.replace`…\n history.pushState(null, '', `/${selectedPath}${window.location.search}`);\n },\n );\n\n return contributes(Capabilities.Null, null, () => {\n window.removeEventListener('popstate', handleNavigation);\n unsubscribe();\n });\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAIA,SACEA,cACAC,aACAC,cACAC,oBAGK;AACP,SAASC,uBAAuB;AAChC,SAASC,6BAA6B;AAMtC,IAAA,sBAAe,OAAOC,YAAAA;AACpB,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKF,QAAQG,kBAAkBC,aAAaC,gBAAgB,KAAK,CAAC;AACnG,QAAMC,WAAWN,QAAQG,kBAAkBC,aAAaG,eAAe;AACvE,QAAMC,SAASR,QAAQG,kBAAkBC,aAAaK,aAAa;AACnE,QAAMC,YAAYV,QAAQG,kBAAkBQ,sBAAsBC,SAAS;AAE3E,QAAMC,mBAAmB,YAAA;AACvB,UAAMC,eAAc,CAACC,SAAsBC,YAAmB;MAAED;MAAMP;MAAQF;MAAUI;IAAU,CAAA;AAElG,UAAMO,WAAWC,OAAOZ,SAASW;AACjC,QAAIA,aAAa,UAAU;AACzBH,MAAAA,aAAY;QAAEK,SAAS;UAAC;YAAEC,IAAIC;UAAO;;MAAG,CAAA;AACxCf,eAASgB,SAAS,CAAA;AAClBd,aAAOe,aAAa;AACpBL,aAAOZ,SAASW,WAAW;AAC3B;IACF;AAEA,UAAMO,iBAAiBC,WAAWnB,SAASoB,QAAQ,MAAA;AACnD,UAAMC,gBAAgBC,cAAcX,QAAAA;AACpC,QAAI,CAACU,eAAe;AAClB,YAAME,YAAWf,aAAYU,cAAAA;AAC7BhB,aAAOe,aAAa;AACpB,YAAMrB,WAAW4B,aAAaC,aAAaC,gBAAgB;QAAEZ,IAAIS;MAAS,CAAA,CAAA;AAC1E;IACF;AAEA,UAAMA,WAAWf,aAAYmB,iBAAiBN,eAAeH,cAAAA,CAAAA;AAC7DhB,WAAOe,aAAa;AACpB,UAAMrB,WAAW4B,aAAaC,aAAaC,gBAAgB;MAAEZ,IAAIS;IAAS,CAAA,CAAA;EAC5E;AAEA,QAAMhB,iBAAAA;AACNK,SAAOgB,iBAAiB,YAAYrB,gBAAAA;AAEpC,QAAMsB,cAAcC,gBAClB,OAAO;IAAEC,cAAcC,cAAchC,SAASoB,MAAM;EAAE,IACtD,CAAC,EAAEW,aAAY,MAAE;AAEfE,YAAQC,UAAU,MAAM,IAAI,IAAIH,YAAAA,GAAenB,OAAOZ,SAASmC,MAAM,EAAE;EACzE,CAAA;AAGF,SAAOC,YAAYtC,aAAauC,MAAM,MAAM,MAAA;AAC1CzB,WAAO0B,oBAAoB,YAAY/B,gBAAAA;AACvCsB,gBAAAA;EACF,CAAA;AACF;",
6
- "names": ["Capabilities", "contributes", "createIntent", "LayoutAction", "scheduledEffect", "AttentionCapabilities", "context", "dispatchPromise", "dispatch", "requestCapability", "Capabilities", "IntentDispatcher", "location", "MutableLocation", "layout", "MutableLayout", "attention", "AttentionCapabilities", "Attention", "handleNavigation", "setLocation", "next", "naturalSetLocation", "pathname", "window", "sidebar", "id", "NAV_ID", "closed", "layoutMode", "startingLayout", "removePart", "active", "layoutFromUri", "uriToSoloPart", "toAttend", "createIntent", "LayoutAction", "ScrollIntoView", "mergeLayoutParts", "addEventListener", "unsubscribe", "scheduledEffect", "selectedPath", "soloPartToUri", "history", "pushState", "search", "contributes", "Null", "removeEventListener"]
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/layout/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAmB,KAAK,IAAI,EAAW,MAAM,oBAAoB,CAAC;kCAIhD,cAAc;;wBAmFgnD,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;AAnF/jT,wBAkFI"}
@@ -1,4 +0,0 @@
1
- import { type DeckContextType } from '../../components';
2
- declare const _default: () => import("@dxos/app-framework").Capability<import("packages/common/util/dist/types/src").DeepReadonly<DeckContextType>>;
3
- export default _default;
4
- //# sourceMappingURL=deck.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deck.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/layout/deck.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;;AAMxD,wBAWE"}