@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,11 +2,9 @@ import {
2
2
  closeEntry,
3
3
  createEntryId,
4
4
  incrementPlank,
5
- openEntry
6
- } from "./chunk-FLOVGNYB.mjs";
7
- import {
5
+ openEntry,
8
6
  setActive
9
- } from "./chunk-6HJZL3WT.mjs";
7
+ } from "./chunk-TRFYUEBA.mjs";
10
8
  import {
11
9
  DeckCapabilities
12
10
  } from "./chunk-XMCG42ID.mjs";
@@ -16,20 +14,21 @@ import {
16
14
  defaultDeck,
17
15
  getMode,
18
16
  isLayoutMode
19
- } from "./chunk-ZMJMCN7O.mjs";
17
+ } from "./chunk-JAYQ5BTF.mjs";
20
18
  import {
21
19
  DECK_PLUGIN
22
20
  } from "./chunk-NSATFAEE.mjs";
23
21
 
24
22
  // packages/plugins/plugin-deck/src/capabilities/intent-resolver.ts
25
23
  import { batch } from "@preact/signals-core";
26
- import { pipe } from "effect";
24
+ import { Schema, Effect, pipe, Option } from "effect";
27
25
  import { Capabilities, createResolver, contributes, IntentAction, LayoutAction, createIntent, chain } from "@dxos/app-framework";
28
- import { getTypename, S } from "@dxos/echo-schema";
26
+ import { getTypename } from "@dxos/echo-schema";
29
27
  import { invariant } from "@dxos/invariant";
30
28
  import { isLiveObject } from "@dxos/live-object";
31
29
  import { log } from "@dxos/log";
32
30
  import { AttentionCapabilities } from "@dxos/plugin-attention";
31
+ import { isActionLike } from "@dxos/plugin-graph";
33
32
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
34
33
  import { byPosition, isNonNullable } from "@dxos/util";
35
34
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-deck/src/capabilities/intent-resolver.ts";
@@ -37,8 +36,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
37
36
  createResolver({
38
37
  intent: IntentAction.ShowUndo,
39
38
  resolve: (data) => {
40
- const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
41
- const { undoPromise: undo } = context.requestCapability(Capabilities.IntentDispatcher);
39
+ const layout = context.getCapability(DeckCapabilities.MutableDeckState);
40
+ const { undoPromise: undo } = context.getCapability(Capabilities.IntentDispatcher);
42
41
  if (layout.currentUndoId) {
43
42
  layout.toasts = layout.toasts.filter((toast) => toast.id !== layout.currentUndoId);
44
43
  }
@@ -79,11 +78,11 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
79
78
  }),
80
79
  createResolver({
81
80
  intent: LayoutAction.UpdateLayout,
82
- // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdateSidebar.fields.input)`
81
+ // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateSidebar.fields.input)`
83
82
  // but the filter is not being applied correctly.
84
- filter: (data) => S.is(LayoutAction.UpdateSidebar.fields.input)(data),
83
+ filter: (data) => Schema.is(LayoutAction.UpdateSidebar.fields.input)(data),
85
84
  resolve: ({ options }) => {
86
- const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
85
+ const layout = context.getCapability(DeckCapabilities.MutableDeckState);
87
86
  const next = options?.state ?? layout.sidebarState;
88
87
  if (next !== layout.sidebarState) {
89
88
  layout.sidebarState = next;
@@ -92,11 +91,11 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
92
91
  }),
93
92
  createResolver({
94
93
  intent: LayoutAction.UpdateLayout,
95
- // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdateComplementary.fields.input)`
94
+ // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateComplementary.fields.input)`
96
95
  // but the filter is not being applied correctly.
97
- filter: (data) => S.is(LayoutAction.UpdateComplementary.fields.input)(data),
96
+ filter: (data) => Schema.is(LayoutAction.UpdateComplementary.fields.input)(data),
98
97
  resolve: ({ subject, options }) => {
99
- const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
98
+ const layout = context.getCapability(DeckCapabilities.MutableDeckState);
100
99
  if (layout.complementarySidebarPanel !== subject) {
101
100
  layout.complementarySidebarPanel = subject;
102
101
  }
@@ -108,11 +107,11 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
108
107
  }),
109
108
  createResolver({
110
109
  intent: LayoutAction.UpdateLayout,
111
- // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdateDialog.fields.input)`
110
+ // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateDialog.fields.input)`
112
111
  // but the filter is not being applied correctly.
113
- filter: (data) => S.is(LayoutAction.UpdateDialog.fields.input)(data),
112
+ filter: (data) => Schema.is(LayoutAction.UpdateDialog.fields.input)(data),
114
113
  resolve: ({ subject, options }) => {
115
- const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
114
+ const layout = context.getCapability(DeckCapabilities.MutableDeckState);
116
115
  layout.dialogOpen = options.state ?? Boolean(subject);
117
116
  layout.dialogContent = subject ? {
118
117
  component: subject,
@@ -124,11 +123,11 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
124
123
  }),
125
124
  createResolver({
126
125
  intent: LayoutAction.UpdateLayout,
127
- // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdatePopover.fields.input)`
126
+ // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdatePopover.fields.input)`
128
127
  // but the filter is not being applied correctly.
129
- filter: (data) => S.is(LayoutAction.UpdatePopover.fields.input)(data),
128
+ filter: (data) => Schema.is(LayoutAction.UpdatePopover.fields.input)(data),
130
129
  resolve: ({ subject, options }) => {
131
- const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
130
+ const layout = context.getCapability(DeckCapabilities.MutableDeckState);
132
131
  layout.popoverOpen = options.state ?? Boolean(subject);
133
132
  layout.popoverContent = typeof subject === "string" ? {
134
133
  component: subject,
@@ -146,20 +145,20 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
146
145
  }),
147
146
  createResolver({
148
147
  intent: LayoutAction.UpdateLayout,
149
- // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.AddToast.fields.input)`
148
+ // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.AddToast.fields.input)`
150
149
  // but the filter is not being applied correctly.
151
- filter: (data) => S.is(LayoutAction.AddToast.fields.input)(data),
150
+ filter: (data) => Schema.is(LayoutAction.AddToast.fields.input)(data),
152
151
  resolve: ({ subject }) => {
153
- const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
152
+ const layout = context.getCapability(DeckCapabilities.MutableDeckState);
154
153
  layout.toasts.push(subject);
155
154
  }
156
155
  }),
157
156
  createResolver({
158
157
  intent: LayoutAction.UpdateLayout,
159
- // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.SetLayoutMode.fields.input)`
158
+ // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.SetLayoutMode.fields.input)`
160
159
  // but the filter is not being applied correctly.
161
160
  filter: (data) => {
162
- if (!S.is(LayoutAction.SetLayoutMode.fields.input)(data)) {
161
+ if (!Schema.is(LayoutAction.SetLayoutMode.fields.input)(data)) {
163
162
  return false;
164
163
  }
165
164
  if ("mode" in data.options) {
@@ -168,7 +167,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
168
167
  return true;
169
168
  },
170
169
  resolve: ({ subject, options }) => {
171
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
170
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
172
171
  const setMode = (mode) => {
173
172
  const deck = state.deck;
174
173
  const current = deck.solo ? [
@@ -219,9 +218,10 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
219
218
  }),
220
219
  createResolver({
221
220
  intent: LayoutAction.UpdateLayout,
222
- filter: (data) => S.is(LayoutAction.SwitchWorkspace.fields.input)(data),
221
+ filter: (data) => Schema.is(LayoutAction.SwitchWorkspace.fields.input)(data),
223
222
  resolve: ({ subject }) => {
224
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
223
+ const { graph } = context.getCapability(Capabilities.AppGraph);
224
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
225
225
  batch(() => {
226
226
  if (!state.activeDeck.startsWith("!")) {
227
227
  state.previousDeck = state.activeDeck;
@@ -243,14 +243,28 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
243
243
  })
244
244
  ]
245
245
  };
246
+ } else {
247
+ const [item] = graph.getConnections(subject).filter((node) => !isActionLike(node));
248
+ if (item) {
249
+ return {
250
+ intents: [
251
+ createIntent(LayoutAction.Open, {
252
+ part: "main",
253
+ subject: [
254
+ item.id
255
+ ]
256
+ })
257
+ ]
258
+ };
259
+ }
246
260
  }
247
261
  }
248
262
  }),
249
263
  createResolver({
250
264
  intent: LayoutAction.UpdateLayout,
251
- filter: (data) => S.is(LayoutAction.RevertWorkspace.fields.input)(data),
265
+ filter: (data) => Schema.is(LayoutAction.RevertWorkspace.fields.input)(data),
252
266
  resolve: () => {
253
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
267
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
254
268
  return {
255
269
  intents: [
256
270
  createIntent(LayoutAction.SwitchWorkspace, {
@@ -263,12 +277,19 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
263
277
  }),
264
278
  createResolver({
265
279
  intent: LayoutAction.UpdateLayout,
266
- filter: (data) => S.is(LayoutAction.Open.fields.input)(data),
267
- resolve: ({ subject, options }) => {
268
- const { graph } = context.requestCapability(Capabilities.AppGraph);
269
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
270
- const attention = context.requestCapability(AttentionCapabilities.Attention);
271
- const settings = context.requestCapabilities(Capabilities.SettingsStore)[0]?.getStore(DECK_PLUGIN)?.value;
280
+ filter: (data) => Schema.is(LayoutAction.Open.fields.input)(data),
281
+ resolve: ({ subject, options }) => Effect.gen(function* () {
282
+ const { graph } = context.getCapability(Capabilities.AppGraph);
283
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
284
+ const attention = context.getCapability(AttentionCapabilities.Attention);
285
+ const settings = context.getCapabilities(Capabilities.SettingsStore)[0]?.getStore(DECK_PLUGIN)?.value;
286
+ if (options?.workspace && state.activeDeck !== options?.workspace) {
287
+ const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
288
+ yield* dispatch(createIntent(LayoutAction.SwitchWorkspace, {
289
+ part: "workspace",
290
+ subject: options.workspace
291
+ }));
292
+ }
272
293
  const previouslyOpenIds = new Set(state.deck.solo ? [
273
294
  state.deck.solo
274
295
  ] : state.deck.active);
@@ -302,8 +323,13 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
302
323
  subject: newlyOpen[0] ?? subject[0]
303
324
  }),
304
325
  ...newlyOpen.map((subjectId) => {
305
- const active = graph?.findNode(subjectId)?.data;
306
- const typename = isLiveObject(active) ? getTypename(active) : void 0;
326
+ const typename = Option.match(graph.getNode(subjectId), {
327
+ onNone: () => void 0,
328
+ onSome: (node) => {
329
+ const active = node.data;
330
+ return isLiveObject(active) ? getTypename(active) : void 0;
331
+ }
332
+ });
307
333
  return createIntent(ObservabilityAction.SendEvent, {
308
334
  name: "navigation.activate",
309
335
  properties: {
@@ -314,14 +340,14 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
314
340
  })
315
341
  ]
316
342
  };
317
- }
343
+ })
318
344
  }),
319
345
  createResolver({
320
346
  intent: LayoutAction.UpdateLayout,
321
- filter: (data) => S.is(LayoutAction.Close.fields.input)(data),
347
+ filter: (data) => Schema.is(LayoutAction.Close.fields.input)(data),
322
348
  resolve: ({ subject }) => {
323
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
324
- const attention = context.requestCapability(AttentionCapabilities.Attention);
349
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
350
+ const attention = context.getCapability(AttentionCapabilities.Attention);
325
351
  const active = state.deck.solo ? [
326
352
  state.deck.solo
327
353
  ] : state.deck.active;
@@ -350,10 +376,10 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
350
376
  }),
351
377
  createResolver({
352
378
  intent: LayoutAction.UpdateLayout,
353
- filter: (data) => S.is(LayoutAction.Set.fields.input)(data),
379
+ filter: (data) => Schema.is(LayoutAction.Set.fields.input)(data),
354
380
  resolve: ({ subject }) => {
355
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
356
- const attention = context.requestCapability(AttentionCapabilities.Attention);
381
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
382
+ const attention = context.getCapability(AttentionCapabilities.Attention);
357
383
  const toAttend = setActive({
358
384
  next: subject,
359
385
  state,
@@ -371,30 +397,30 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
371
397
  }),
372
398
  createResolver({
373
399
  intent: LayoutAction.UpdateLayout,
374
- filter: (data) => S.is(LayoutAction.ScrollIntoView.fields.input)(data),
400
+ filter: (data) => Schema.is(LayoutAction.ScrollIntoView.fields.input)(data),
375
401
  resolve: ({ subject }) => {
376
- const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
402
+ const layout = context.getCapability(DeckCapabilities.MutableDeckState);
377
403
  layout.scrollIntoView = subject;
378
404
  }
379
405
  }),
380
406
  createResolver({
381
407
  intent: DeckAction.UpdatePlankSize,
382
408
  resolve: (data) => {
383
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
409
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
384
410
  state.deck.plankSizing[data.id] = data.size;
385
411
  }
386
412
  }),
387
413
  createResolver({
388
414
  intent: DeckAction.ChangeCompanion,
389
415
  resolve: (data) => {
390
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
416
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
391
417
  if (data.companion === null) {
392
418
  const { [data.primary]: _, ...nextActiveCompanions } = state.deck.activeCompanions ?? {};
393
419
  state.deck.activeCompanions = nextActiveCompanions;
394
420
  } else {
395
421
  invariant(data.companion !== data.primary, void 0, {
396
422
  F: __dxlog_file,
397
- L: 355,
423
+ L: 376,
398
424
  S: void 0,
399
425
  A: [
400
426
  "data.companion !== data.primary",
@@ -411,9 +437,9 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
411
437
  createResolver({
412
438
  intent: DeckAction.Adjust,
413
439
  resolve: (adjustment) => {
414
- const state = context.requestCapability(DeckCapabilities.MutableDeckState);
415
- const attention = context.requestCapability(AttentionCapabilities.Attention);
416
- const { graph } = context.requestCapability(Capabilities.AppGraph);
440
+ const state = context.getCapability(DeckCapabilities.MutableDeckState);
441
+ const attention = context.getCapability(AttentionCapabilities.Attention);
442
+ const { graph } = context.getCapability(Capabilities.AppGraph);
417
443
  return batch(() => {
418
444
  if (adjustment.type === "increment-end" || adjustment.type === "increment-start") {
419
445
  setActive({
@@ -423,12 +449,9 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
423
449
  });
424
450
  }
425
451
  if (adjustment.type === "companion") {
426
- const node = graph.findNode(adjustment.id);
427
- const [companion] = node ? graph.nodes(node, {
428
- filter: (n) => n.type === PLANK_COMPANION_TYPE
429
- }).toSorted((a, b) => byPosition(a.properties, b.properties)) : [];
430
- if (companion) {
431
- return {
452
+ return pipe(graph.getNode(adjustment.id), Option.map((node) => graph.getConnections(node.id).filter((n) => n.type === PLANK_COMPANION_TYPE).toSorted((a, b) => byPosition(a.properties, b.properties))), Option.flatMap((companions) => companions.length > 0 ? Option.some(companions[0]) : Option.none()), Option.match({
453
+ onNone: () => ({}),
454
+ onSome: (companion) => ({
432
455
  intents: [
433
456
  // TODO(wittjosiah): This should remember the previously selected companion.
434
457
  createIntent(DeckAction.ChangeCompanion, {
@@ -436,8 +459,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
436
459
  companion: companion.id
437
460
  })
438
461
  ]
439
- };
440
- }
462
+ })
463
+ }));
441
464
  }
442
465
  if (adjustment.type.startsWith("solo")) {
443
466
  const entryId = adjustment.id;
@@ -493,4 +516,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
493
516
  export {
494
517
  intent_resolver_default as default
495
518
  };
496
- //# sourceMappingURL=intent-resolver-6AK45PT5.mjs.map
519
+ //# sourceMappingURL=intent-resolver-MAKOS57L.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\nimport { Schema, Effect, pipe, Option } from 'effect';\n\nimport {\n Capabilities,\n createResolver,\n contributes,\n IntentAction,\n LayoutAction,\n type PluginContext,\n createIntent,\n chain,\n} from '@dxos/app-framework';\nimport { getTypename } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { isLiveObject } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { isActionLike } from '@dxos/plugin-graph';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { byPosition, isNonNullable } from '@dxos/util';\n\nimport { DeckCapabilities } from './capabilities';\nimport { closeEntry, createEntryId, incrementPlank, openEntry } from '../layout';\nimport { DECK_PLUGIN } from '../meta';\nimport {\n DeckAction,\n type LayoutMode,\n type DeckSettingsProps,\n isLayoutMode,\n getMode,\n defaultDeck,\n PLANK_COMPANION_TYPE,\n} from '../types';\nimport { setActive } from '../util';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: IntentAction.ShowUndo,\n resolve: (data) => {\n const layout = context.getCapability(DeckCapabilities.MutableDeckState);\n const { undoPromise: undo } = context.getCapability(Capabilities.IntentDispatcher);\n\n // TODO(wittjosiah): Support undoing further back than the last action.\n if (layout.currentUndoId) {\n layout.toasts = layout.toasts.filter((toast) => toast.id !== layout.currentUndoId);\n }\n layout.currentUndoId = `${IntentAction.ShowUndo._tag}-${Date.now()}`;\n layout.toasts = [\n ...layout.toasts,\n {\n id: layout.currentUndoId,\n title: data.message ?? ['undo available label', { ns: DECK_PLUGIN }],\n duration: 10_000,\n actionLabel: ['undo action label', { ns: DECK_PLUGIN }],\n actionAlt: ['undo action alt', { ns: DECK_PLUGIN }],\n closeLabel: ['undo close label', { ns: DECK_PLUGIN }],\n onAction: () => undo(),\n },\n ];\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateSidebar.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdateSidebar.fields.input> =>\n Schema.is(LayoutAction.UpdateSidebar.fields.input)(data),\n resolve: ({ options }) => {\n const layout = context.getCapability(DeckCapabilities.MutableDeckState);\n const next = options?.state ?? layout.sidebarState;\n if (next !== layout.sidebarState) {\n layout.sidebarState = next;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateComplementary.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdateComplementary.fields.input> =>\n Schema.is(LayoutAction.UpdateComplementary.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.getCapability(DeckCapabilities.MutableDeckState);\n\n if (layout.complementarySidebarPanel !== subject) {\n layout.complementarySidebarPanel = subject;\n }\n\n const next = subject ? 'expanded' : options?.state ?? layout.complementarySidebarState;\n if (next !== layout.complementarySidebarState) {\n layout.complementarySidebarState = next;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateDialog.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdateDialog.fields.input> =>\n Schema.is(LayoutAction.UpdateDialog.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.getCapability(DeckCapabilities.MutableDeckState);\n layout.dialogOpen = options.state ?? Boolean(subject);\n layout.dialogContent = subject ? { component: subject, props: options.props } : null;\n layout.dialogBlockAlign = options.blockAlign ?? 'center';\n layout.dialogType = options.type ?? 'default';\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdatePopover.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdatePopover.fields.input> =>\n Schema.is(LayoutAction.UpdatePopover.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.getCapability(DeckCapabilities.MutableDeckState);\n layout.popoverOpen = options.state ?? Boolean(subject);\n layout.popoverContent =\n typeof subject === 'string' ? { component: subject, props: options.props } : subject ? { subject } : null;\n layout.popoverSide = options.side;\n if (options.variant === 'virtual') {\n layout.popoverAnchor = options.anchor;\n } else {\n layout.popoverAnchorId = options.anchorId;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.AddToast.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.AddToast.fields.input> =>\n Schema.is(LayoutAction.AddToast.fields.input)(data),\n resolve: ({ subject }) => {\n const layout = context.getCapability(DeckCapabilities.MutableDeckState);\n layout.toasts.push(subject);\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.SetLayoutMode.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.SetLayoutMode.fields.input> => {\n if (!Schema.is(LayoutAction.SetLayoutMode.fields.input)(data)) {\n return false;\n }\n\n if ('mode' in data.options) {\n return isLayoutMode(data.options.mode);\n }\n\n return true;\n },\n resolve: ({ subject, options }) => {\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n\n const setMode = (mode: LayoutMode) => {\n const deck = state.deck;\n const current = deck.solo ? [deck.solo] : deck.active;\n // When un-soloing, the solo entry is added to the deck.\n const next = (\n mode !== 'deck' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]\n ).filter(isNonNullable);\n\n const removed = current.filter((id) => !next.includes(id));\n const closed = Array.from(new Set([...deck.inactive.filter((id) => !next.includes(id)), ...removed]));\n deck.inactive = closed;\n\n if (mode !== 'deck' && next[0]) {\n deck.solo = next[0];\n } else if (mode === 'deck' && deck.solo) {\n deck.solo = undefined;\n deck.initialized = true;\n }\n\n if (mode === 'solo--fullscreen') {\n deck.fullscreen = !deck.fullscreen;\n }\n };\n\n return batch(() => {\n if ('mode' in options) {\n const current = getMode(state.deck);\n if (current !== options.mode) {\n state.previousMode[state.activeDeck] = current;\n }\n setMode(options.mode as LayoutMode);\n } else if ('revert' in options) {\n const last = state.previousMode[state.activeDeck];\n setMode(last ?? 'solo');\n } else {\n log.warn('Invalid layout mode', options);\n }\n });\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.SwitchWorkspace.fields.input> =>\n Schema.is(LayoutAction.SwitchWorkspace.fields.input)(data),\n resolve: ({ subject }) => {\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n batch(() => {\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n if (!state.activeDeck.startsWith('!')) {\n state.previousDeck = state.activeDeck;\n }\n state.activeDeck = subject;\n if (!state.decks[subject]) {\n state.decks[subject] = { ...defaultDeck };\n }\n });\n\n const first = state.deck.solo ? state.deck.solo : state.deck.active[0];\n if (first) {\n return {\n intents: [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: first })],\n };\n } else {\n const [item] = graph.getConnections(subject).filter((node) => !isActionLike(node));\n if (item) {\n return {\n intents: [createIntent(LayoutAction.Open, { part: 'main', subject: [item.id] })],\n };\n }\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.RevertWorkspace.fields.input> =>\n Schema.is(LayoutAction.RevertWorkspace.fields.input)(data),\n resolve: () => {\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n return {\n intents: [createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: state.previousDeck })],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.Open.fields.input> =>\n Schema.is(LayoutAction.Open.fields.input)(data),\n resolve: ({ subject, options }) =>\n Effect.gen(function* () {\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const settings = context\n .getCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DeckSettingsProps>(DECK_PLUGIN)?.value;\n\n if (options?.workspace && state.activeDeck !== options?.workspace) {\n const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n yield* dispatch(\n createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: options.workspace }),\n );\n }\n\n const previouslyOpenIds = new Set<string>(state.deck.solo ? [state.deck.solo] : state.deck.active);\n batch(() => {\n const next = state.deck.solo\n ? (subject as string[]).map((id) => createEntryId(id, options?.variant))\n : subject.reduce(\n (acc, entryId) =>\n openEntry(acc, entryId, {\n key: options?.key,\n positioning: options?.positioning ?? settings?.newPlankPositioning,\n pivotId: options?.pivotId,\n variant: options?.variant,\n }),\n state.deck.active,\n );\n\n return setActive({ next, state, attention });\n });\n\n const ids = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const newlyOpen = ids.filter((i) => !previouslyOpenIds.has(i));\n\n return {\n intents: [\n ...(options?.scrollIntoView !== false\n ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: newlyOpen[0] ?? subject[0] })]\n : []),\n createIntent(LayoutAction.Expose, { part: 'navigation', subject: newlyOpen[0] ?? subject[0] }),\n ...newlyOpen.map((subjectId) => {\n const typename = Option.match(graph.getNode(subjectId), {\n onNone: () => undefined,\n onSome: (node) => {\n const active = node.data;\n return isLiveObject(active) ? getTypename(active) : undefined;\n },\n });\n return createIntent(ObservabilityAction.SendEvent, {\n name: 'navigation.activate',\n properties: {\n subjectId,\n typename,\n },\n });\n }),\n ],\n };\n }),\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.Close.fields.input> =>\n Schema.is(LayoutAction.Close.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const active = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const next = subject.reduce((acc, id) => closeEntry(acc, id), active);\n const toAttend = setActive({ next, state, attention });\n\n const clearCompanionIntents = subject\n .filter((id) => state.deck.activeCompanions && id in state.deck.activeCompanions)\n .map((primary) => createIntent(DeckAction.ChangeCompanion, { primary, companion: null }));\n\n return {\n intents: [\n ...clearCompanionIntents,\n ...(toAttend ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: toAttend })] : []),\n ],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.Set.fields.input> =>\n Schema.is(LayoutAction.Set.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const toAttend = setActive({ next: subject as string[], state, attention });\n return {\n intents: toAttend ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: toAttend })] : [],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.ScrollIntoView.fields.input> =>\n Schema.is(LayoutAction.ScrollIntoView.fields.input)(data),\n resolve: ({ subject }) => {\n const layout = context.getCapability(DeckCapabilities.MutableDeckState);\n layout.scrollIntoView = subject;\n },\n }),\n createResolver({\n intent: DeckAction.UpdatePlankSize,\n resolve: (data) => {\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n state.deck.plankSizing[data.id] = data.size;\n },\n }),\n createResolver({\n intent: DeckAction.ChangeCompanion,\n resolve: (data) => {\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n // TODO(thure): Reactivity only works when creating a lexically new `activeCompanions`… Are these not proxy objects?\n if (data.companion === null) {\n const { [data.primary]: _, ...nextActiveCompanions } = state.deck.activeCompanions ?? {};\n state.deck.activeCompanions = nextActiveCompanions;\n } else {\n invariant(data.companion !== data.primary);\n state.deck.activeCompanions = {\n ...state.deck.activeCompanions,\n [data.primary]: data.companion,\n };\n }\n },\n }),\n createResolver({\n intent: DeckAction.Adjust,\n resolve: (adjustment) => {\n const state = context.getCapability(DeckCapabilities.MutableDeckState);\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const { graph } = context.getCapability(Capabilities.AppGraph);\n\n return batch(() => {\n if (adjustment.type === 'increment-end' || adjustment.type === 'increment-start') {\n setActive({\n next: incrementPlank(state.deck.active, adjustment),\n state,\n attention,\n });\n }\n\n if (adjustment.type === 'companion') {\n return pipe(\n graph.getNode(adjustment.id),\n Option.map((node) =>\n graph\n .getConnections(node.id)\n .filter((n) => n.type === PLANK_COMPANION_TYPE)\n .toSorted((a, b) => byPosition(a.properties, b.properties)),\n ),\n Option.flatMap((companions) => (companions.length > 0 ? Option.some(companions[0]) : Option.none())),\n Option.match({\n onNone: () => ({}),\n onSome: (companion) => ({\n intents: [\n // TODO(wittjosiah): This should remember the previously selected companion.\n createIntent(DeckAction.ChangeCompanion, { primary: adjustment.id, companion: companion.id }),\n ],\n }),\n }),\n );\n }\n\n if (adjustment.type.startsWith('solo')) {\n const entryId = adjustment.id;\n if (!state.deck.solo) {\n // Solo the entry.\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, {\n part: 'mode',\n subject: entryId,\n options: { mode: adjustment.type },\n }),\n ],\n };\n } else {\n if (adjustment.type === 'solo--fullscreen') {\n // Toggle fullscreen on the current entry.\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, {\n part: 'mode',\n subject: entryId,\n options: { mode: 'solo--fullscreen' },\n }),\n ],\n };\n } else if (adjustment.type === 'solo') {\n // Un-solo the current entry.\n return {\n intents: [\n // NOTE: The order of these is important.\n pipe(\n createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'deck' } }),\n chain(LayoutAction.Open, { part: 'main', subject: [entryId] }),\n ),\n ],\n };\n }\n }\n }\n });\n },\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["batch", "Schema", "Effect", "pipe", "Option", "Capabilities", "createResolver", "contributes", "IntentAction", "LayoutAction", "createIntent", "chain", "getTypename", "invariant", "isLiveObject", "log", "AttentionCapabilities", "isActionLike", "ObservabilityAction", "byPosition", "isNonNullable", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "IntentAction", "ShowUndo", "resolve", "data", "layout", "getCapability", "DeckCapabilities", "MutableDeckState", "undoPromise", "undo", "IntentDispatcher", "currentUndoId", "toasts", "filter", "toast", "id", "_tag", "Date", "now", "title", "message", "ns", "DECK_PLUGIN", "duration", "actionLabel", "actionAlt", "closeLabel", "onAction", "LayoutAction", "UpdateLayout", "Schema", "is", "UpdateSidebar", "fields", "input", "options", "next", "state", "sidebarState", "UpdateComplementary", "subject", "complementarySidebarPanel", "complementarySidebarState", "UpdateDialog", "dialogOpen", "Boolean", "dialogContent", "component", "props", "dialogBlockAlign", "blockAlign", "dialogType", "type", "UpdatePopover", "popoverOpen", "popoverContent", "popoverSide", "side", "variant", "popoverAnchor", "anchor", "popoverAnchorId", "anchorId", "AddToast", "push", "SetLayoutMode", "isLayoutMode", "mode", "setMode", "deck", "current", "solo", "active", "isNonNullable", "removed", "includes", "closed", "Array", "from", "Set", "inactive", "undefined", "initialized", "fullscreen", "batch", "getMode", "previousMode", "activeDeck", "last", "log", "warn", "SwitchWorkspace", "graph", "AppGraph", "startsWith", "previousDeck", "decks", "defaultDeck", "first", "intents", "createIntent", "ScrollIntoView", "part", "item", "getConnections", "node", "isActionLike", "Open", "RevertWorkspace", "Effect", "gen", "attention", "AttentionCapabilities", "Attention", "settings", "getCapabilities", "SettingsStore", "getStore", "value", "workspace", "dispatch", "previouslyOpenIds", "map", "createEntryId", "reduce", "acc", "entryId", "openEntry", "key", "positioning", "newPlankPositioning", "pivotId", "setActive", "ids", "newlyOpen", "i", "has", "scrollIntoView", "Expose", "subjectId", "typename", "Option", "match", "getNode", "onNone", "onSome", "isLiveObject", "getTypename", "ObservabilityAction", "SendEvent", "name", "properties", "Close", "closeEntry", "toAttend", "clearCompanionIntents", "activeCompanions", "primary", "DeckAction", "ChangeCompanion", "companion", "UpdatePlankSize", "plankSizing", "size", "_", "nextActiveCompanions", "invariant", "Adjust", "adjustment", "incrementPlank", "pipe", "n", "PLANK_COMPANION_TYPE", "toSorted", "a", "b", "byPosition", "flatMap", "companions", "length", "some", "none", "chain"]
7
+ }