@dxos/plugin-deck 0.8.4-main.c85a9c8dae → 0.8.4-main.d05673bc65

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 (113) hide show
  1. package/dist/lib/browser/Banner-HXRXEUOZ.mjs +14 -0
  2. package/dist/lib/{node-esm/Banner-HR7DPUZU.mjs.map → browser/Banner-HXRXEUOZ.mjs.map} +1 -1
  3. package/dist/lib/browser/{DeckSettings-HB5TKG2F.mjs → DeckSettings-HSSQKFNE.mjs} +3 -3
  4. package/dist/lib/browser/{app-graph-builder-22XAL7YE.mjs → app-graph-builder-MP6INIM2.mjs} +7 -7
  5. package/dist/lib/browser/{app-graph-builder-22XAL7YE.mjs.map → app-graph-builder-MP6INIM2.mjs.map} +1 -1
  6. package/dist/lib/browser/{check-app-scheme-ZV3QWNNZ.mjs → check-app-scheme-AUNCD2Y6.mjs} +3 -3
  7. package/dist/lib/browser/{chunk-OAPMV5ZR.mjs → chunk-3P2FJVXC.mjs} +15 -17
  8. package/dist/lib/browser/chunk-3P2FJVXC.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-YGOOWRJE.mjs → chunk-ITNJS5QX.mjs} +27 -31
  10. package/dist/lib/browser/chunk-ITNJS5QX.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FBL4WVYZ.mjs → chunk-L3RYMAV7.mjs} +2 -2
  12. package/dist/lib/browser/{chunk-FBL4WVYZ.mjs.map → chunk-L3RYMAV7.mjs.map} +1 -1
  13. package/dist/lib/browser/{chunk-Q4GUCIRE.mjs → chunk-TAHLKBDO.mjs} +6 -19
  14. package/dist/lib/browser/chunk-TAHLKBDO.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +12 -13
  16. package/dist/lib/browser/index.mjs.map +1 -1
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{operation-resolver-BLZGJWLO.mjs → operation-resolver-2TEGT4PG.mjs} +78 -19
  19. package/dist/lib/browser/operation-resolver-2TEGT4PG.mjs.map +7 -0
  20. package/dist/lib/browser/{react-root-4ESZAM6D.mjs → react-root-AS4IOYDG.mjs} +5 -6
  21. package/dist/lib/{node-esm/react-root-YO7IIC75.mjs.map → browser/react-root-AS4IOYDG.mjs.map} +1 -1
  22. package/dist/lib/browser/{react-surface-KYQGCALN.mjs → react-surface-FH7TC6WW.mjs} +6 -6
  23. package/dist/lib/browser/{react-surface-KYQGCALN.mjs.map → react-surface-FH7TC6WW.mjs.map} +1 -1
  24. package/dist/lib/browser/{settings-RY2TBSGP.mjs → settings-PTMGCSJH.mjs} +3 -3
  25. package/dist/lib/browser/{state-CSTTMJ43.mjs → state-MA4SQ7BE.mjs} +4 -4
  26. package/dist/lib/browser/{state-CSTTMJ43.mjs.map → state-MA4SQ7BE.mjs.map} +1 -1
  27. package/dist/lib/browser/{toolkit-EONRPYA5.mjs → toolkit-6B34QFU3.mjs} +3 -3
  28. package/dist/lib/browser/types/index.mjs +2 -4
  29. package/dist/lib/browser/{url-handler-EM3SYHHX.mjs → url-handler-FEUFPQIP.mjs} +14 -11
  30. package/dist/lib/browser/url-handler-FEUFPQIP.mjs.map +7 -0
  31. package/dist/lib/node-esm/{Banner-HR7DPUZU.mjs → Banner-RN7XXOXY.mjs} +5 -6
  32. package/dist/lib/node-esm/{DeckSettings-MWTR7HU2.mjs → DeckSettings-DJRFLKQS.mjs} +3 -3
  33. package/dist/lib/node-esm/{app-graph-builder-GNNNCWGN.mjs → app-graph-builder-ACHG5HY7.mjs} +7 -7
  34. package/dist/lib/node-esm/{app-graph-builder-GNNNCWGN.mjs.map → app-graph-builder-ACHG5HY7.mjs.map} +1 -1
  35. package/dist/lib/node-esm/{check-app-scheme-ZNISVRFH.mjs → check-app-scheme-WN76GWVC.mjs} +3 -3
  36. package/dist/lib/node-esm/{chunk-O4IOJICP.mjs → chunk-EMU4VIPH.mjs} +6 -19
  37. package/dist/lib/node-esm/chunk-EMU4VIPH.mjs.map +7 -0
  38. package/dist/lib/node-esm/{chunk-L2NPJPGL.mjs → chunk-GZJAQ5IP.mjs} +15 -17
  39. package/dist/lib/node-esm/chunk-GZJAQ5IP.mjs.map +7 -0
  40. package/dist/lib/node-esm/{chunk-Z43MBISY.mjs → chunk-MBCCNIWY.mjs} +27 -31
  41. package/dist/lib/node-esm/chunk-MBCCNIWY.mjs.map +7 -0
  42. package/dist/lib/node-esm/{chunk-EGFOT3DE.mjs → chunk-XCNF4COU.mjs} +2 -2
  43. package/dist/lib/node-esm/{chunk-EGFOT3DE.mjs.map → chunk-XCNF4COU.mjs.map} +1 -1
  44. package/dist/lib/node-esm/index.mjs +12 -13
  45. package/dist/lib/node-esm/index.mjs.map +1 -1
  46. package/dist/lib/node-esm/meta.json +1 -1
  47. package/dist/lib/node-esm/{operation-resolver-5BYDNQND.mjs → operation-resolver-GCMCCI7A.mjs} +78 -19
  48. package/dist/lib/node-esm/operation-resolver-GCMCCI7A.mjs.map +7 -0
  49. package/dist/lib/node-esm/{react-root-YO7IIC75.mjs → react-root-7DTDLAF4.mjs} +5 -6
  50. package/dist/lib/node-esm/{react-surface-G7VRKT4U.mjs → react-surface-U6Z2K324.mjs} +6 -6
  51. package/dist/lib/node-esm/{react-surface-G7VRKT4U.mjs.map → react-surface-U6Z2K324.mjs.map} +1 -1
  52. package/dist/lib/node-esm/{settings-GYLWWOBK.mjs → settings-LPPFLXNJ.mjs} +3 -3
  53. package/dist/lib/node-esm/{state-RQXTBWUX.mjs → state-KNRU3GDC.mjs} +4 -4
  54. package/dist/lib/node-esm/{state-RQXTBWUX.mjs.map → state-KNRU3GDC.mjs.map} +1 -1
  55. package/dist/lib/node-esm/{toolkit-EU3Z2R4H.mjs → toolkit-SOWYKJY3.mjs} +3 -3
  56. package/dist/lib/node-esm/types/index.mjs +2 -4
  57. package/dist/lib/node-esm/{url-handler-VUK2LBJV.mjs → url-handler-4LEB7UWF.mjs} +14 -11
  58. package/dist/lib/node-esm/url-handler-4LEB7UWF.mjs.map +7 -0
  59. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +1 -1
  61. package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
  62. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
  63. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  64. package/dist/types/src/hooks/useDeckCompanions.d.ts +0 -1
  65. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  66. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -1
  67. package/dist/types/src/layout.d.ts +1 -7
  68. package/dist/types/src/layout.d.ts.map +1 -1
  69. package/dist/types/src/types/schema.d.ts +10 -10
  70. package/dist/types/src/types/schema.d.ts.map +1 -1
  71. package/dist/types/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +34 -34
  73. package/src/capabilities/app-graph-builder/app-graph-builder.ts +4 -4
  74. package/src/capabilities/operation-resolver/operation-resolver.ts +5 -7
  75. package/src/capabilities/react-surface/react-surface.tsx +2 -2
  76. package/src/capabilities/state/state.ts +1 -1
  77. package/src/capabilities/url-handler/url-handler.ts +11 -9
  78. package/src/components/Plank/Plank.tsx +11 -6
  79. package/src/components/Plank/PlankHeading.tsx +5 -6
  80. package/src/components/Sidebar/ComplementarySidebar.tsx +12 -19
  81. package/src/components/Sidebar/SidebarButton.tsx +3 -3
  82. package/src/hooks/useDeckCompanions.ts +1 -6
  83. package/src/hooks/useSelectedCompanion.ts +4 -10
  84. package/src/layout.ts +1 -14
  85. package/src/meta.ts +1 -1
  86. package/src/types/capabilities.ts +3 -3
  87. package/src/types/events.ts +1 -1
  88. package/src/types/schema.ts +8 -10
  89. package/dist/lib/browser/Banner-DR6B7XTO.mjs +0 -15
  90. package/dist/lib/browser/chunk-OAPMV5ZR.mjs.map +0 -7
  91. package/dist/lib/browser/chunk-Q4GUCIRE.mjs.map +0 -7
  92. package/dist/lib/browser/chunk-SKBPLX5T.mjs +0 -81
  93. package/dist/lib/browser/chunk-SKBPLX5T.mjs.map +0 -7
  94. package/dist/lib/browser/chunk-YGOOWRJE.mjs.map +0 -7
  95. package/dist/lib/browser/operation-resolver-BLZGJWLO.mjs.map +0 -7
  96. package/dist/lib/browser/url-handler-EM3SYHHX.mjs.map +0 -7
  97. package/dist/lib/node-esm/chunk-IR6ODCNC.mjs +0 -83
  98. package/dist/lib/node-esm/chunk-IR6ODCNC.mjs.map +0 -7
  99. package/dist/lib/node-esm/chunk-L2NPJPGL.mjs.map +0 -7
  100. package/dist/lib/node-esm/chunk-O4IOJICP.mjs.map +0 -7
  101. package/dist/lib/node-esm/chunk-Z43MBISY.mjs.map +0 -7
  102. package/dist/lib/node-esm/operation-resolver-5BYDNQND.mjs.map +0 -7
  103. package/dist/lib/node-esm/url-handler-VUK2LBJV.mjs.map +0 -7
  104. /package/dist/lib/browser/{DeckSettings-HB5TKG2F.mjs.map → DeckSettings-HSSQKFNE.mjs.map} +0 -0
  105. /package/dist/lib/browser/{check-app-scheme-ZV3QWNNZ.mjs.map → check-app-scheme-AUNCD2Y6.mjs.map} +0 -0
  106. /package/dist/lib/browser/{settings-RY2TBSGP.mjs.map → settings-PTMGCSJH.mjs.map} +0 -0
  107. /package/dist/lib/browser/{toolkit-EONRPYA5.mjs.map → toolkit-6B34QFU3.mjs.map} +0 -0
  108. /package/dist/lib/{browser/Banner-DR6B7XTO.mjs.map → node-esm/Banner-RN7XXOXY.mjs.map} +0 -0
  109. /package/dist/lib/node-esm/{DeckSettings-MWTR7HU2.mjs.map → DeckSettings-DJRFLKQS.mjs.map} +0 -0
  110. /package/dist/lib/node-esm/{check-app-scheme-ZNISVRFH.mjs.map → check-app-scheme-WN76GWVC.mjs.map} +0 -0
  111. /package/dist/lib/{browser/react-root-4ESZAM6D.mjs.map → node-esm/react-root-7DTDLAF4.mjs.map} +0 -0
  112. /package/dist/lib/node-esm/{settings-GYLWWOBK.mjs.map → settings-LPPFLXNJ.mjs.map} +0 -0
  113. /package/dist/lib/node-esm/{toolkit-EU3Z2R4H.mjs.map → toolkit-SOWYKJY3.mjs.map} +0 -0
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  DeckCapabilities
4
- } from "./chunk-L2NPJPGL.mjs";
4
+ } from "./chunk-GZJAQ5IP.mjs";
5
5
  import {
6
6
  meta
7
- } from "./chunk-EGFOT3DE.mjs";
7
+ } from "./chunk-XCNF4COU.mjs";
8
8
 
9
9
  // src/capabilities/app-graph-builder/app-graph-builder.ts
10
10
  import * as Effect from "effect/Effect";
@@ -19,7 +19,7 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
19
19
  match: NodeMatcher.whenRoot,
20
20
  actions: (_node, get) => Effect.gen(function* () {
21
21
  const closeCurrent = {
22
- id: `${LayoutOperation.Close.meta.key}/current`,
22
+ id: `${LayoutOperation.Close.meta.key}.current`,
23
23
  data: Effect.fnUntraced(function* () {
24
24
  const attention = yield* Capability.get(AttentionCapabilities.Attention);
25
25
  const attended = attention.getCurrent().at(-1);
@@ -42,7 +42,7 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
42
42
  }
43
43
  };
44
44
  const closeOthers = {
45
- id: `${LayoutOperation.Close.meta.key}/others`,
45
+ id: `${LayoutOperation.Close.meta.key}.others`,
46
46
  data: Effect.fnUntraced(function* () {
47
47
  const attention = yield* Capability.get(AttentionCapabilities.Attention);
48
48
  const deck2 = yield* DeckCapabilities.getDeck();
@@ -63,7 +63,7 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
63
63
  }
64
64
  };
65
65
  const closeAll = {
66
- id: `${LayoutOperation.Close.meta.key}/all`,
66
+ id: `${LayoutOperation.Close.meta.key}.all`,
67
67
  data: Effect.fnUntraced(function* () {
68
68
  const deck2 = yield* DeckCapabilities.getDeck();
69
69
  yield* Operation.invoke(LayoutOperation.Close, {
@@ -83,7 +83,7 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
83
83
  const state = get(yield* Capability.get(DeckCapabilities.State));
84
84
  const deck = state.decks[state.activeDeck];
85
85
  const toggleSidebar = {
86
- id: `${LayoutOperation.UpdateSidebar.meta.key}/nav`,
86
+ id: `${LayoutOperation.UpdateSidebar.meta.key}.nav`,
87
87
  data: Effect.fnUntraced(function* () {
88
88
  yield* Capabilities.updateAtomValue(DeckCapabilities.State, (s) => ({
89
89
  ...s,
@@ -121,4 +121,4 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
121
121
  export {
122
122
  app_graph_builder_default as default
123
123
  };
124
- //# sourceMappingURL=app-graph-builder-GNNNCWGN.mjs.map
124
+ //# sourceMappingURL=app-graph-builder-ACHG5HY7.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\n\nimport { meta } from '../../meta';\nimport { DeckCapabilities } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* GraphBuilder.createExtension({\n id: meta.id,\n match: NodeMatcher.whenRoot,\n actions: (_node, get) =>\n Effect.gen(function* () {\n // NOTE(Zan): This is currently disabled.\n // TODO(Zan): Fullscreen needs to know the active node and provide that to the layout part.\n // const _fullscreen = {\n // id: `${LayoutAction.UpdateLayout._tag}/fullscreen`,\n // data: async () => {\n // const { dispatchPromise: dispatch } = context.get(Capabilities.IntentDispatcher);\n // await dispatch(\n // createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'fullscreen' } }),\n // );\n // },\n // properties: {\n // label: ['toggle fullscreen label', { ns: meta.id }],\n // icon: 'ph--arrows-out--regular',\n // keyBinding: {\n // macos: 'ctrl+meta+f',\n // windows: 'shift+ctrl+f',\n // },\n // },\n // };\n\n const closeCurrent = {\n id: `${LayoutOperation.Close.meta.key}/current`,\n data: Effect.fnUntraced(function* () {\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n const attended = attention.getCurrent().at(-1);\n if (attended) {\n yield* Operation.invoke(LayoutOperation.Close, { subject: [attended] });\n }\n }),\n properties: {\n label: ['close current label', { ns: meta.id }],\n icon: 'ph--x--regular',\n },\n };\n\n const closeOthers = {\n id: `${LayoutOperation.Close.meta.key}/others`,\n data: Effect.fnUntraced(function* () {\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n const deck = yield* DeckCapabilities.getDeck();\n const attended = attention.getCurrent().at(-1);\n const ids = deck.active.filter((id: string) => id !== attended) ?? [];\n yield* Operation.invoke(LayoutOperation.Close, { subject: ids });\n }),\n properties: {\n label: ['close others label', { ns: meta.id }],\n icon: 'ph--x-square--regular',\n },\n };\n\n const closeAll = {\n id: `${LayoutOperation.Close.meta.key}/all`,\n data: Effect.fnUntraced(function* () {\n const deck = yield* DeckCapabilities.getDeck();\n yield* Operation.invoke(LayoutOperation.Close, { subject: deck.active });\n }),\n properties: {\n label: ['close all label', { ns: meta.id }],\n icon: 'ph--x-circle--regular',\n },\n };\n\n const state = get(yield* Capability.get(DeckCapabilities.State));\n const deck = state.decks[state.activeDeck];\n\n const toggleSidebar = {\n id: `${LayoutOperation.UpdateSidebar.meta.key}/nav`,\n data: Effect.fnUntraced(function* () {\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (s) => ({\n ...s,\n sidebarState: s.sidebarState === 'expanded' ? ('collapsed' as const) : ('expanded' as const),\n }));\n }),\n properties: {\n label: [\n state.sidebarState === 'expanded'\n ? 'collapse navigation sidebar label'\n : 'open navigation sidebar label',\n { ns: meta.id },\n ],\n icon: 'ph--sidebar--regular',\n keyBinding: {\n macos: \"meta+'\",\n },\n disposition: 'pin-end',\n position: 'hoist',\n l0Breakpoint: 'lg',\n },\n };\n\n return !deck?.solo ? [closeCurrent, closeOthers, closeAll, toggleSidebar] : [toggleSidebar];\n }),\n });\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\n\nimport { meta } from '../../meta';\nimport { DeckCapabilities } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* GraphBuilder.createExtension({\n id: meta.id,\n match: NodeMatcher.whenRoot,\n actions: (_node, get) =>\n Effect.gen(function* () {\n // NOTE(Zan): This is currently disabled.\n // TODO(Zan): Fullscreen needs to know the active node and provide that to the layout part.\n // const _fullscreen = {\n // id: `${LayoutAction.UpdateLayout._tag}/fullscreen`,\n // data: async () => {\n // const { dispatchPromise: dispatch } = context.get(Capabilities.IntentDispatcher);\n // await dispatch(\n // createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'fullscreen' } }),\n // );\n // },\n // properties: {\n // label: ['toggle fullscreen label', { ns: meta.id }],\n // icon: 'ph--arrows-out--regular',\n // keyBinding: {\n // macos: 'ctrl+meta+f',\n // windows: 'shift+ctrl+f',\n // },\n // },\n // };\n\n const closeCurrent = {\n id: `${LayoutOperation.Close.meta.key}.current`,\n data: Effect.fnUntraced(function* () {\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n const attended = attention.getCurrent().at(-1);\n if (attended) {\n yield* Operation.invoke(LayoutOperation.Close, { subject: [attended] });\n }\n }),\n properties: {\n label: ['close current label', { ns: meta.id }],\n icon: 'ph--x--regular',\n },\n };\n\n const closeOthers = {\n id: `${LayoutOperation.Close.meta.key}.others`,\n data: Effect.fnUntraced(function* () {\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n const deck = yield* DeckCapabilities.getDeck();\n const attended = attention.getCurrent().at(-1);\n const ids = deck.active.filter((id: string) => id !== attended) ?? [];\n yield* Operation.invoke(LayoutOperation.Close, { subject: ids });\n }),\n properties: {\n label: ['close others label', { ns: meta.id }],\n icon: 'ph--x-square--regular',\n },\n };\n\n const closeAll = {\n id: `${LayoutOperation.Close.meta.key}.all`,\n data: Effect.fnUntraced(function* () {\n const deck = yield* DeckCapabilities.getDeck();\n yield* Operation.invoke(LayoutOperation.Close, { subject: deck.active });\n }),\n properties: {\n label: ['close all label', { ns: meta.id }],\n icon: 'ph--x-circle--regular',\n },\n };\n\n const state = get(yield* Capability.get(DeckCapabilities.State));\n const deck = state.decks[state.activeDeck];\n\n const toggleSidebar = {\n id: `${LayoutOperation.UpdateSidebar.meta.key}.nav`,\n data: Effect.fnUntraced(function* () {\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (s) => ({\n ...s,\n sidebarState: s.sidebarState === 'expanded' ? ('collapsed' as const) : ('expanded' as const),\n }));\n }),\n properties: {\n label: [\n state.sidebarState === 'expanded'\n ? 'collapse navigation sidebar label'\n : 'open navigation sidebar label',\n { ns: meta.id },\n ],\n icon: 'ph--sidebar--regular',\n keyBinding: {\n macos: \"meta+'\",\n },\n disposition: 'pin-end',\n position: 'hoist',\n l0Breakpoint: 'lg',\n },\n };\n\n return !deck?.solo ? [closeCurrent, closeOthers, closeAll, toggleSidebar] : [toggleSidebar];\n }),\n });\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
5
  "mappings": "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",
6
6
  "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "Operation", "AttentionCapabilities", "GraphBuilder", "NodeMatcher", "Capability", "makeModule", "fnUntraced", "extensions", "GraphBuilder", "createExtension", "id", "meta", "match", "NodeMatcher", "whenRoot", "actions", "_node", "get", "gen", "closeCurrent", "LayoutOperation", "Close", "key", "data", "attention", "AttentionCapabilities", "Attention", "attended", "getCurrent", "at", "Operation", "invoke", "subject", "properties", "label", "ns", "icon", "closeOthers", "deck", "DeckCapabilities", "getDeck", "ids", "active", "filter", "closeAll", "state", "State", "decks", "activeDeck", "toggleSidebar", "UpdateSidebar", "Capabilities", "updateAtomValue", "s", "sidebarState", "keyBinding", "macos", "disposition", "position", "l0Breakpoint", "solo", "contributes", "AppCapabilities", "AppGraphBuilder"]
7
7
  }
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  DeckCapabilities
4
- } from "./chunk-L2NPJPGL.mjs";
5
- import "./chunk-EGFOT3DE.mjs";
4
+ } from "./chunk-GZJAQ5IP.mjs";
5
+ import "./chunk-XCNF4COU.mjs";
6
6
 
7
7
  // src/capabilities/check-app-scheme/check-app-scheme.ts
8
8
  import * as Effect from "effect/Effect";
@@ -31,4 +31,4 @@ var check_app_scheme_default = Capability.makeModule(Effect.fnUntraced(function*
31
31
  export {
32
32
  check_app_scheme_default as default
33
33
  };
34
- //# sourceMappingURL=check-app-scheme-ZNISVRFH.mjs.map
34
+ //# sourceMappingURL=check-app-scheme-WN76GWVC.mjs.map
@@ -1,13 +1,9 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- parseEntryId
4
- } from "./chunk-IR6ODCNC.mjs";
5
- import {
6
- ATTENDABLE_PATH_SEPARATOR,
7
3
  DECK_COMPANION_TYPE,
8
4
  DeckCapabilities,
9
5
  PLANK_COMPANION_TYPE
10
- } from "./chunk-L2NPJPGL.mjs";
6
+ } from "./chunk-GZJAQ5IP.mjs";
11
7
 
12
8
  // src/hooks/useCompanions.ts
13
9
  import { useMemo } from "react";
@@ -97,10 +93,6 @@ import { useAppGraph as useAppGraph2 } from "@dxos/app-toolkit/ui";
97
93
  import { Node } from "@dxos/plugin-graph";
98
94
  import { useConnections as useConnections2 } from "@dxos/plugin-graph";
99
95
  import { byPosition as byPosition2 } from "@dxos/util";
100
- var getCompanionId = (id) => {
101
- const [_, companionId] = id.split(ATTENDABLE_PATH_SEPARATOR);
102
- return companionId ?? "never";
103
- };
104
96
  var useDeckCompanions = () => {
105
97
  const { graph } = useAppGraph2();
106
98
  const connections = useConnections2(graph, Node.RootId, "child");
@@ -154,6 +146,7 @@ var useNodeActionExpander = (node) => {
154
146
 
155
147
  // src/hooks/useSelectedCompanion.ts
156
148
  import { useMemo as useMemo4 } from "react";
149
+ import { getCompanionVariant } from "@dxos/app-toolkit";
157
150
  var useSelectedCompanion = (companions, preferredVariant) => {
158
151
  return useMemo4(() => {
159
152
  if (companions.length === 0) {
@@ -163,23 +156,18 @@ var useSelectedCompanion = (companions, preferredVariant) => {
163
156
  };
164
157
  }
165
158
  if (preferredVariant) {
166
- const preferred = companions.find((companion) => {
167
- const { variant: variant2 } = parseEntryId(companion.id);
168
- return variant2 === preferredVariant;
169
- });
159
+ const preferred = companions.find((companion) => getCompanionVariant(companion.id) === preferredVariant);
170
160
  if (preferred) {
171
- const { variant: variant2 } = parseEntryId(preferred.id);
172
161
  return {
173
162
  companionId: preferred.id,
174
- variant: variant2
163
+ variant: getCompanionVariant(preferred.id)
175
164
  };
176
165
  }
177
166
  }
178
167
  const first = companions[0];
179
- const { variant } = parseEntryId(first.id);
180
168
  return {
181
169
  companionId: first.id,
182
- variant
170
+ variant: getCompanionVariant(first.id)
183
171
  };
184
172
  }, [
185
173
  companions,
@@ -190,7 +178,6 @@ var useSelectedCompanion = (companions, preferredVariant) => {
190
178
  export {
191
179
  useBreakpoints,
192
180
  useCompanions,
193
- getCompanionId,
194
181
  useDeckCompanions,
195
182
  useDeckState,
196
183
  useHoistStatusbar,
@@ -198,4 +185,4 @@ export {
198
185
  useNodeActionExpander,
199
186
  useSelectedCompanion
200
187
  };
201
- //# sourceMappingURL=chunk-O4IOJICP.mjs.map
188
+ //# sourceMappingURL=chunk-EMU4VIPH.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useCompanions.ts", "../../../src/hooks/useDeckState.ts", "../../../src/hooks/useBreakpoints.ts", "../../../src/hooks/useDeckCompanions.ts", "../../../src/hooks/useHoistStatusbar.ts", "../../../src/hooks/useMainSize.ts", "../../../src/hooks/useNodeActionExpander.ts", "../../../src/hooks/useSelectedCompanion.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { useConnections } from '@dxos/plugin-graph';\nimport { byPosition } from '@dxos/util';\n\nimport { PLANK_COMPANION_TYPE } from '../types';\n\nexport const useCompanions = (id?: string) => {\n const { graph } = useAppGraph();\n const nodes = useConnections(graph, id, 'child');\n const companions = nodes.filter((node) => node.type === PLANK_COMPANION_TYPE);\n return useMemo(() => companions.toSorted((a, b) => byPosition(a.properties, b.properties)), [companions]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback, useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { invariant } from '@dxos/invariant';\n\nimport {\n DeckCapabilities,\n type DeckEphemeralStateProps,\n type DeckPluginState,\n type DeckState,\n type DeckStateProps,\n} from '../types';\n\nexport type DeckStateHook = {\n /** Combined state value (reactive). Includes both persisted and ephemeral state. */\n state: DeckPluginState;\n /** The active deck, computed from decks[activeDeck]. */\n deck: DeckState;\n /** Update persisted state. */\n updateState: (fn: (current: DeckStateProps) => DeckStateProps) => void;\n /** Update ephemeral state. */\n updateEphemeral: (fn: (current: DeckEphemeralStateProps) => DeckEphemeralStateProps) => void;\n};\n\n/**\n * Hook to access the deck plugin state reactively.\n * Returns the combined state, the active deck, and update functions for each atom.\n */\nexport const useDeckState = (): DeckStateHook => {\n const registry = useCapability(Capabilities.AtomRegistry);\n const stateAtom = useCapability(DeckCapabilities.State);\n const ephemeralAtom = useCapability(DeckCapabilities.EphemeralState);\n\n const persistedState = useAtomValue(stateAtom);\n const ephemeralState = useAtomValue(ephemeralAtom);\n\n // Compute deck from decks[activeDeck] to ensure it's always current.\n const deck = useMemo(() => {\n const d = persistedState.decks[persistedState.activeDeck];\n invariant(d, `Deck not found: ${persistedState.activeDeck}`);\n return d;\n }, [persistedState.decks, persistedState.activeDeck]);\n\n // Combine persisted and ephemeral state into a unified view.\n const state = useMemo(\n (): DeckPluginState => ({\n ...persistedState,\n ...ephemeralState,\n }),\n [persistedState, ephemeralState],\n );\n\n const updateState = useCallback(\n (fn: (current: DeckStateProps) => DeckStateProps) => {\n registry.set(stateAtom, fn(registry.get(stateAtom)));\n },\n [registry, stateAtom],\n );\n\n const updateEphemeral = useCallback(\n (fn: (current: DeckEphemeralStateProps) => DeckEphemeralStateProps) => {\n registry.set(ephemeralAtom, fn(registry.get(ephemeralAtom)));\n },\n [registry, ephemeralAtom],\n );\n\n return useMemo(\n () => ({\n state,\n deck,\n updateState,\n updateEphemeral,\n }),\n [state, deck, updateState, updateEphemeral],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMediaQuery } from '@dxos/react-ui';\n\nexport const useBreakpoints = () => {\n const [isNotMobile] = useMediaQuery('md');\n const [isDesktop] = useMediaQuery('lg');\n return isDesktop ? 'desktop' : isNotMobile ? 'tablet' : 'mobile';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Node, type Node as NodeType } from '@dxos/plugin-graph';\nimport { useConnections } from '@dxos/plugin-graph';\nimport { type Label } from '@dxos/ui-types';\nimport { type Position, byPosition } from '@dxos/util';\n\nimport { DECK_COMPANION_TYPE } from '../types';\n\nexport type DeckCompanion = NodeType.Node<\n any,\n {\n label: Label;\n icon: string;\n // TODO(burdon): Scroll area should be controlled by surface.\n /** If true, the panel will not be wrapped in a scroll area. */\n fixed?: boolean;\n position?: Position;\n }\n>;\n\nexport const useDeckCompanions = (): DeckCompanion[] => {\n const { graph } = useAppGraph();\n const connections = useConnections(graph, Node.RootId, 'child');\n const companions = connections.filter((node) => node.type === DECK_COMPANION_TYPE) as DeckCompanion[];\n return companions.toSorted((a, b) => byPosition(a.properties, b.properties));\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useAtomCapability } from '@dxos/app-framework/ui';\nimport { useThemeContext } from '@dxos/react-ui';\n\nimport { DeckCapabilities, type LayoutMode } from '../types';\n\nexport const useHoistStatusbar = (breakpoint: string, layoutMode?: LayoutMode): boolean => {\n const { safeAreaPadding } = useThemeContext();\n const enableStatusbar = useAtomCapability(DeckCapabilities.Settings).enableStatusbar;\n\n return useMemo(() => {\n return (\n breakpoint === 'desktop' &&\n layoutMode !== 'solo--fullscreen' &&\n !!enableStatusbar &&\n safeAreaPadding?.bottom === 0\n );\n }, [enableStatusbar, breakpoint, safeAreaPadding?.bottom, layoutMode]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useMainContext } from '@dxos/react-ui';\n\nexport const useMainSize = () => {\n const { navigationSidebarState, complementarySidebarState } = useMainContext('DeckPluginPlank');\n return {\n 'data-sidebar-left-state': navigationSidebarState,\n 'data-sidebar-right-state': complementarySidebarState,\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { Graph, type Node } from '@dxos/plugin-graph';\n\nexport const useNodeActionExpander = (node?: Node.Node) => {\n useEffect(() => {\n if (node) {\n const frame = requestAnimationFrame(() => {\n const graph = Graph.getGraph(node);\n void Graph.expand(graph, node.id, 'action');\n });\n return () => cancelAnimationFrame(frame);\n }\n }, [node]);\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { getCompanionVariant } from '@dxos/app-toolkit';\nimport { type Node } from '@dxos/plugin-graph';\n\n/**\n * Resolves which companion to show based on variant preference.\n * Falls back to first available if preferred variant not found.\n */\nexport const useSelectedCompanion = (companions: Node.Node[], preferredVariant?: string) => {\n return useMemo(() => {\n if (companions.length === 0) {\n return { companionId: undefined, variant: undefined };\n }\n\n // Try to find companion matching the preferred variant.\n if (preferredVariant) {\n const preferred = companions.find((companion) => getCompanionVariant(companion.id) === preferredVariant);\n if (preferred) {\n return { companionId: preferred.id, variant: getCompanionVariant(preferred.id) };\n }\n }\n\n // Fallback to first companion.\n const first = companions[0];\n return { companionId: first.id, variant: getCompanionVariant(first.id) };\n }, [companions, preferredVariant]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useMemo", "useAppGraph", "useConnections", "byPosition", "useCompanions", "id", "graph", "useAppGraph", "nodes", "useConnections", "companions", "filter", "node", "type", "PLANK_COMPANION_TYPE", "useMemo", "toSorted", "a", "b", "byPosition", "properties", "useAtomValue", "useCallback", "useMemo", "Capabilities", "useCapability", "invariant", "useDeckState", "registry", "useCapability", "Capabilities", "AtomRegistry", "stateAtom", "DeckCapabilities", "State", "ephemeralAtom", "EphemeralState", "persistedState", "useAtomValue", "ephemeralState", "deck", "useMemo", "d", "decks", "activeDeck", "invariant", "state", "updateState", "useCallback", "fn", "set", "get", "updateEphemeral", "useMediaQuery", "useBreakpoints", "isNotMobile", "useMediaQuery", "isDesktop", "useAppGraph", "Node", "useConnections", "byPosition", "useDeckCompanions", "graph", "useAppGraph", "connections", "useConnections", "Node", "RootId", "companions", "filter", "node", "type", "DECK_COMPANION_TYPE", "toSorted", "a", "b", "byPosition", "properties", "useMemo", "useAtomCapability", "useThemeContext", "useHoistStatusbar", "breakpoint", "layoutMode", "safeAreaPadding", "useThemeContext", "enableStatusbar", "useAtomCapability", "DeckCapabilities", "Settings", "useMemo", "bottom", "useMainContext", "useMainSize", "navigationSidebarState", "complementarySidebarState", "useMainContext", "useEffect", "Graph", "useNodeActionExpander", "node", "useEffect", "frame", "requestAnimationFrame", "graph", "Graph", "getGraph", "expand", "id", "cancelAnimationFrame", "useMemo", "getCompanionVariant", "useSelectedCompanion", "companions", "preferredVariant", "useMemo", "length", "companionId", "undefined", "variant", "preferred", "find", "companion", "getCompanionVariant", "id", "first"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-EGFOT3DE.mjs";
4
+ } from "./chunk-XCNF4COU.mjs";
5
5
 
6
6
  // src/types/capabilities.ts
7
7
  import * as Effect from "effect/Effect";
@@ -9,9 +9,9 @@ import { Capabilities, Capability } from "@dxos/app-framework";
9
9
  import { invariant } from "@dxos/invariant";
10
10
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-deck/src/types/capabilities.ts";
11
11
  (function(DeckCapabilities2) {
12
- DeckCapabilities2.Settings = Capability.make(`${meta.id}/capability/settings`);
13
- DeckCapabilities2.State = Capability.make(`${meta.id}/capability/state`);
14
- DeckCapabilities2.EphemeralState = Capability.make(`${meta.id}/capability/ephemeral-state`);
12
+ DeckCapabilities2.Settings = Capability.make(`${meta.id}.capability.settings`);
13
+ DeckCapabilities2.State = Capability.make(`${meta.id}.capability.state`);
14
+ DeckCapabilities2.EphemeralState = Capability.make(`${meta.id}.capability.ephemeral-state`);
15
15
  DeckCapabilities2.getDeck = () => Effect.gen(function* () {
16
16
  const state = yield* Capabilities.getAtomValue(DeckCapabilities2.State);
17
17
  const deck = state.decks[state.activeDeck];
@@ -32,7 +32,7 @@ var DeckCapabilities;
32
32
  // src/types/events.ts
33
33
  import { AppActivationEvents } from "@dxos/app-toolkit";
34
34
  (function(DeckEvents2) {
35
- DeckEvents2.StateReady = AppActivationEvents.createStateEvent(`${meta.id}/state-ready`);
35
+ DeckEvents2.StateReady = AppActivationEvents.createStateEvent(`${meta.id}.state-ready`);
36
36
  DeckEvents2.SettingsReady = AppActivationEvents.createSettingsEvent(DeckCapabilities.Settings.identifier);
37
37
  })(DeckEvents || (DeckEvents = {}));
38
38
  var DeckEvents;
@@ -42,9 +42,8 @@ import * as Schema from "effect/Schema";
42
42
  import { Capability as Capability2 } from "@dxos/app-framework";
43
43
  import { Label, LayoutOperation } from "@dxos/app-toolkit";
44
44
  import { Operation } from "@dxos/operation";
45
- import { ATTENDABLE_PATH_SEPARATOR } from "@dxos/react-ui-attention";
46
- var PLANK_COMPANION_TYPE = `${meta.id}/plank-companion`;
47
- var DECK_COMPANION_TYPE = `${meta.id}/deck-companion`;
45
+ var PLANK_COMPANION_TYPE = `${meta.id}.plank-companion`;
46
+ var DECK_COMPANION_TYPE = `${meta.id}.deck-companion`;
48
47
  var NewPlankPositions = [
49
48
  "start",
50
49
  "end"
@@ -159,13 +158,13 @@ var DeckEphemeralStateSchema = Schema.Struct({
159
158
  id: Schema.String,
160
159
  type: PartAdjustmentSchema
161
160
  }));
162
- class Adjust extends Schema.TaggedClass()(`${meta.id}/action/adjust`, {
161
+ class Adjust extends Schema.TaggedClass()(`${meta.id}.action.adjust`, {
163
162
  input: DeckAction2.Adjustment,
164
163
  output: Schema.Void
165
164
  }) {
166
165
  }
167
166
  DeckAction2.Adjust = Adjust;
168
- class UpdatePlankSize extends Schema.TaggedClass()(`${meta.id}/action/update-plank-size`, {
167
+ class UpdatePlankSize extends Schema.TaggedClass()(`${meta.id}.action.update-plank-size`, {
169
168
  input: Schema.Struct({
170
169
  id: Schema.String,
171
170
  size: Schema.Number
@@ -174,7 +173,7 @@ var DeckEphemeralStateSchema = Schema.Struct({
174
173
  }) {
175
174
  }
176
175
  DeckAction2.UpdatePlankSize = UpdatePlankSize;
177
- class ChangeCompanion extends Schema.TaggedClass()(`${meta.id}/action/change-companion`, {
176
+ class ChangeCompanion extends Schema.TaggedClass()(`${meta.id}.action.change-companion`, {
178
177
  input: Schema.Struct({
179
178
  companion: Schema.Union(Schema.String, Schema.Null)
180
179
  }),
@@ -199,7 +198,7 @@ var DeckEphemeralStateSchema = Schema.Struct({
199
198
  }));
200
199
  DeckOperation2.Adjust = Operation.make({
201
200
  meta: {
202
- key: `${meta.id}/operation/adjust`,
201
+ key: `${meta.id}.operation.adjust`,
203
202
  name: "Adjust",
204
203
  description: "Adjust the layout of a plank."
205
204
  },
@@ -220,7 +219,7 @@ var DeckEphemeralStateSchema = Schema.Struct({
220
219
  });
221
220
  DeckOperation2.UpdatePlankSize = Operation.make({
222
221
  meta: {
223
- key: `${meta.id}/operation/update-plank-size`,
222
+ key: `${meta.id}.operation.update-plank-size`,
224
223
  name: "Update Plank Size",
225
224
  description: "Update the size of a plank."
226
225
  },
@@ -241,7 +240,7 @@ var DeckEphemeralStateSchema = Schema.Struct({
241
240
  });
242
241
  DeckOperation2.ChangeCompanion = Operation.make({
243
242
  meta: {
244
- key: `${meta.id}/operation/change-companion`,
243
+ key: `${meta.id}.operation.change-companion`,
245
244
  name: "Change Companion",
246
245
  description: "Change the companion plank for a primary plank."
247
246
  },
@@ -275,7 +274,6 @@ export {
275
274
  DeckStateSchema,
276
275
  DeckEphemeralStateSchema,
277
276
  DeckAction,
278
- DeckOperation,
279
- ATTENDABLE_PATH_SEPARATOR
277
+ DeckOperation
280
278
  };
281
- //# sourceMappingURL=chunk-L2NPJPGL.mjs.map
279
+ //# sourceMappingURL=chunk-GZJAQ5IP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/capabilities.ts", "../../../src/types/events.ts", "../../../src/types/schema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\n\nimport { meta } from '../meta';\nimport { type DeckEphemeralStateProps, type DeckSettingsProps, type DeckState, type DeckStateProps } from '../types';\n\nexport namespace DeckCapabilities {\n export const Settings = Capability.make<Atom.Writable<DeckSettingsProps>>(`${meta.id}.capability.settings`);\n\n /** Persisted state (stored in KVS/localStorage). */\n export const State = Capability.make<Atom.Writable<DeckStateProps>>(`${meta.id}.capability.state`);\n\n /** Transient/ephemeral state (not persisted). */\n export const EphemeralState = Capability.make<Atom.Writable<DeckEphemeralStateProps>>(\n `${meta.id}.capability.ephemeral-state`,\n );\n\n /** Get the current active deck from state. */\n export const getDeck = (): Effect.Effect<DeckState, Error, Capability.Service> =>\n Effect.gen(function* () {\n const state = yield* Capabilities.getAtomValue(State);\n const deck = state.decks[state.activeDeck];\n invariant(deck, `Deck not found: ${state.activeDeck}`);\n return deck;\n });\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ActivationEvent } from '@dxos/app-framework';\nimport { AppActivationEvents } from '@dxos/app-toolkit';\n\nimport { meta } from '../meta';\n\nimport { DeckCapabilities } from './capabilities';\n\nexport namespace DeckEvents {\n export const StateReady: ActivationEvent.ActivationEvent = AppActivationEvents.createStateEvent(\n `${meta.id}.state-ready`,\n );\n\n /** Fired when DeckSettings capability is ready. */\n export const SettingsReady: ActivationEvent.ActivationEvent = AppActivationEvents.createSettingsEvent(\n DeckCapabilities.Settings.identifier,\n );\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Label, LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\nimport { type DeepReadonly } from '@dxos/util';\n\nimport { meta } from '../meta';\n\nexport const PLANK_COMPANION_TYPE = `${meta.id}.plank-companion`;\nexport const DECK_COMPANION_TYPE = `${meta.id}.deck-companion`;\n\n// TODO(Zan): In the future we should consider adding new planks adjacent to the attended plank.\nexport const NewPlankPositions = ['start', 'end'] as const;\nexport type NewPlankPositioning = (typeof NewPlankPositions)[number];\n\nexport const OverScrollToProps = ['none', 'centering'] as const;\nexport type Overscroll = (typeof OverScrollToProps)[number];\n\nexport type Part = 'solo' | 'deck' | 'complementary';\nexport type ResolvedPart = Part | 'solo-primary' | 'solo-companion';\n\nexport const DeckSettingsSchema = Schema.Struct({\n showHints: Schema.optional(Schema.Boolean),\n enableDeck: Schema.optional(Schema.Boolean),\n enableStatusbar: Schema.optional(Schema.Boolean),\n enableNativeRedirect: Schema.optional(Schema.Boolean),\n newPlankPositioning: Schema.optional(Schema.Literal(...NewPlankPositions)),\n overscroll: Schema.optional(Schema.Literal(...OverScrollToProps)),\n // TODO(burdon): Rename layoutMode? (e.g., bento | encapsulated?)\n encapsulatedPlanks: Schema.optional(Schema.Boolean),\n}).pipe(Schema.mutable);\nexport type DeckSettingsProps = Schema.Schema.Type<typeof DeckSettingsSchema>;\n\nexport const PlankSizing = Schema.Record({ key: Schema.String, value: Schema.Number });\nexport type PlankSizing = Schema.Schema.Type<typeof PlankSizing>;\n\n// State of an individual deck.\nexport const DeckState = Schema.Struct({\n /** If false, the deck has not yet left solo mode and new planks should be soloed. */\n initialized: Schema.Boolean,\n active: Schema.mutable(Schema.Array(Schema.String)),\n companionOpen: Schema.Boolean,\n companionVariant: Schema.optional(Schema.String),\n inactive: Schema.mutable(Schema.Array(Schema.String)),\n solo: Schema.optional(Schema.String),\n fullscreen: Schema.Boolean,\n plankSizing: Schema.mutable(PlankSizing),\n companionFrameSizing: Schema.mutable(PlankSizing),\n});\nexport type DeckState = Schema.Schema.Type<typeof DeckState>;\n\nexport const defaultDeck: DeckState = {\n initialized: false,\n active: [],\n companionOpen: false,\n companionVariant: undefined,\n inactive: [],\n solo: undefined,\n fullscreen: false,\n plankSizing: {},\n companionFrameSizing: {},\n};\n\nconst LayoutMode = Schema.Literal('deck', 'solo', 'solo--fullscreen');\nexport type LayoutMode = Schema.Schema.Type<typeof LayoutMode>;\nexport const isLayoutMode = (value: any): value is LayoutMode => Schema.is(LayoutMode)(value);\n\nexport const getMode = (deck: DeckState | DeepReadonly<DeckState>): LayoutMode => {\n if (deck.solo) {\n return deck.fullscreen ? 'solo--fullscreen' : 'solo';\n }\n\n return 'deck';\n};\n\n// Persisted plugin state (stored in KVS/localStorage).\nexport const DeckStateSchema = Schema.Struct({\n sidebarState: Schema.Literal('closed', 'collapsed', 'expanded'),\n complementarySidebarState: Schema.Literal('closed', 'collapsed', 'expanded'),\n complementarySidebarPanel: Schema.optional(Schema.String),\n activeDeck: Schema.String,\n previousDeck: Schema.String,\n decks: Schema.mutable(Schema.Record({ key: Schema.String, value: Schema.mutable(DeckState) })),\n previousMode: Schema.mutable(Schema.Record({ key: Schema.String, value: LayoutMode })),\n}).pipe(Schema.mutable);\nexport type DeckStateProps = Schema.Schema.Type<typeof DeckStateSchema>;\n\n// TODO(burdon): Factor out state (in common with other layouts?)\n// Transient/ephemeral plugin state (not persisted).\nexport const DeckEphemeralStateSchema = Schema.Struct({\n dialogOpen: Schema.Boolean,\n dialogType: Schema.optional(Schema.Literal('default', 'alert')),\n dialogBlockAlign: Schema.optional(Schema.Literal('start', 'center', 'end')),\n dialogOverlayClasses: Schema.optional(Schema.String),\n dialogOverlayStyle: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n /** Data to be passed to the dialog Surface. */\n dialogContent: Schema.optional(Schema.Any),\n\n popoverOpen: Schema.Boolean,\n popoverSide: Schema.optional(Schema.Literal('top', 'right', 'bottom', 'left')),\n popoverAnchor: Schema.optional(Schema.Any),\n popoverAnchorId: Schema.optional(Schema.String),\n popoverKind: Schema.optional(Schema.Literal('base', 'card')),\n popoverTitle: Schema.optional(Label.annotations({ description: 'The title of the popover.' })),\n /** Ref of the subject to be passed to the popover Surface. */\n popoverContentRef: Schema.optional(Schema.String),\n /** Data to be passed to the popover Surface. */\n popoverContent: Schema.optional(Schema.Any),\n\n toasts: Schema.mutable(Schema.Array(LayoutOperation.Toast)),\n currentUndoId: Schema.optional(Schema.String),\n\n /** The identifier of a component to scroll into view when it is mounted. */\n scrollIntoView: Schema.optional(Schema.String),\n}).pipe(Schema.mutable);\nexport type DeckEphemeralStateProps = Schema.Schema.Type<typeof DeckEphemeralStateSchema>;\n\n// Combined state type (for convenience in components that need both).\nexport type DeckPluginState = DeckStateProps & DeckEphemeralStateProps;\n\nexport namespace DeckAction {\n const PartAdjustmentSchema = Schema.Union(\n Schema.Literal('close').annotations({ description: 'Close the plank.' }),\n Schema.Literal('companion').annotations({ description: 'Open the companion plank.' }),\n Schema.Literal('solo').annotations({ description: 'Solo the plank.' }),\n Schema.Literal('solo--fullscreen').annotations({ description: 'Fullscreen the plank.' }),\n Schema.Literal('increment-start').annotations({ description: 'Move the plank towards the start of the deck.' }),\n Schema.Literal('increment-end').annotations({ description: 'Move the plank towards the end of the deck.' }),\n );\n export type PartAdjustment = Schema.Schema.Type<typeof PartAdjustmentSchema>;\n export const Adjustment = Schema.mutable(Schema.Struct({ id: Schema.String, type: PartAdjustmentSchema }));\n export type Adjustment = Schema.Schema.Type<typeof Adjustment>;\n\n // An atomic transaction to apply to the deck, describing which element to move to which location.\n export class Adjust extends Schema.TaggedClass<Adjust>()(`${meta.id}.action.adjust`, {\n input: Adjustment,\n output: Schema.Void,\n }) {}\n\n export class UpdatePlankSize extends Schema.TaggedClass<UpdatePlankSize>()(`${meta.id}.action.update-plank-size`, {\n input: Schema.Struct({\n id: Schema.String,\n size: Schema.Number,\n }),\n output: Schema.Void,\n }) {}\n\n export class ChangeCompanion extends Schema.TaggedClass<ChangeCompanion>()(`${meta.id}.action.change-companion`, {\n input: Schema.Struct({\n companion: Schema.Union(Schema.String, Schema.Null),\n }),\n output: Schema.Void,\n }) {}\n}\n\n/**\n * Operations for the Deck plugin.\n */\nexport namespace DeckOperation {\n const PartAdjustmentSchema = Schema.Union(\n Schema.Literal('close').annotations({ description: 'Close the plank.' }),\n Schema.Literal('companion').annotations({ description: 'Open the companion plank.' }),\n Schema.Literal('solo').annotations({ description: 'Solo the plank.' }),\n Schema.Literal('solo--fullscreen').annotations({ description: 'Fullscreen the plank.' }),\n Schema.Literal('increment-start').annotations({ description: 'Move the plank towards the start of the deck.' }),\n Schema.Literal('increment-end').annotations({ description: 'Move the plank towards the end of the deck.' }),\n );\n export type PartAdjustment = Schema.Schema.Type<typeof PartAdjustmentSchema>;\n\n export const Adjust = Operation.make({\n meta: {\n key: `${meta.id}.operation.adjust`,\n name: 'Adjust',\n description: 'Adjust the layout of a plank.',\n },\n services: [Capability.Service],\n schema: {\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to adjust.' }),\n type: PartAdjustmentSchema.annotations({ description: 'The type of adjustment to make.' }),\n }),\n output: Schema.Void,\n },\n });\n\n export const UpdatePlankSize = Operation.make({\n meta: {\n key: `${meta.id}.operation.update-plank-size`,\n name: 'Update Plank Size',\n description: 'Update the size of a plank.',\n },\n services: [Capability.Service],\n schema: {\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to resize.' }),\n size: Schema.Number.annotations({ description: 'The new size of the plank.' }),\n }),\n output: Schema.Void,\n },\n });\n\n export const ChangeCompanion = Operation.make({\n meta: {\n key: `${meta.id}.operation.change-companion`,\n name: 'Change Companion',\n description: 'Change the companion plank for a primary plank.',\n },\n services: [Capability.Service],\n schema: {\n input: Schema.Struct({\n companion: Schema.Union(Schema.String, Schema.Null),\n }),\n output: Schema.Void,\n },\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Capabilities", "Capability", "invariant", "DeckCapabilities", "Settings", "Capability", "make", "meta", "id", "State", "EphemeralState", "getDeck", "gen", "state", "Capabilities", "getAtomValue", "deck", "decks", "activeDeck", "invariant", "AppActivationEvents", "DeckEvents", "StateReady", "AppActivationEvents", "createStateEvent", "meta", "id", "SettingsReady", "createSettingsEvent", "DeckCapabilities", "Settings", "identifier", "Schema", "Capability", "Label", "LayoutOperation", "Operation", "PLANK_COMPANION_TYPE", "meta", "id", "DECK_COMPANION_TYPE", "NewPlankPositions", "OverScrollToProps", "DeckSettingsSchema", "Struct", "showHints", "optional", "Boolean", "enableDeck", "enableStatusbar", "enableNativeRedirect", "newPlankPositioning", "Literal", "overscroll", "encapsulatedPlanks", "pipe", "mutable", "PlankSizing", "Record", "key", "String", "value", "Number", "DeckState", "initialized", "active", "Array", "companionOpen", "companionVariant", "inactive", "solo", "fullscreen", "plankSizing", "companionFrameSizing", "defaultDeck", "undefined", "LayoutMode", "isLayoutMode", "is", "getMode", "deck", "DeckStateSchema", "sidebarState", "complementarySidebarState", "complementarySidebarPanel", "activeDeck", "previousDeck", "decks", "previousMode", "DeckEphemeralStateSchema", "dialogOpen", "dialogType", "dialogBlockAlign", "dialogOverlayClasses", "dialogOverlayStyle", "Any", "dialogContent", "popoverOpen", "popoverSide", "popoverAnchor", "popoverAnchorId", "popoverKind", "popoverTitle", "Label", "annotations", "description", "popoverContentRef", "popoverContent", "toasts", "LayoutOperation", "Toast", "currentUndoId", "scrollIntoView", "DeckAction", "PartAdjustmentSchema", "Union", "Adjustment", "type", "Adjust", "TaggedClass", "input", "output", "Void", "UpdatePlankSize", "size", "ChangeCompanion", "companion", "Null", "DeckOperation", "Operation", "make", "name", "services", "Capability", "Service", "schema"]
7
+ }
@@ -1,6 +1,5 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- getCompanionId,
4
3
  useBreakpoints,
5
4
  useCompanions,
6
5
  useDeckCompanions,
@@ -9,23 +8,20 @@ import {
9
8
  useMainSize,
10
9
  useNodeActionExpander,
11
10
  useSelectedCompanion
12
- } from "./chunk-O4IOJICP.mjs";
11
+ } from "./chunk-EMU4VIPH.mjs";
13
12
  import {
14
13
  calculateOverscroll,
15
14
  layoutAppliesTopbar
16
15
  } from "./chunk-DGTRKKWZ.mjs";
17
- import {
18
- parseEntryId
19
- } from "./chunk-IR6ODCNC.mjs";
20
16
  import {
21
17
  DeckCapabilities,
22
18
  DeckOperation,
23
19
  PLANK_COMPANION_TYPE,
24
20
  getMode
25
- } from "./chunk-L2NPJPGL.mjs";
21
+ } from "./chunk-GZJAQ5IP.mjs";
26
22
  import {
27
23
  meta
28
- } from "./chunk-EGFOT3DE.mjs";
24
+ } from "./chunk-XCNF4COU.mjs";
29
25
 
30
26
  // src/components/DeckLayout/Banner.tsx
31
27
  import React9 from "react";
@@ -36,7 +32,7 @@ import { mx as mx5, osTranslations } from "@dxos/ui-theme";
36
32
  // src/components/Sidebar/ComplementarySidebar.tsx
37
33
  import React7, { Fragment as Fragment2, useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo3, useState as useState2 } from "react";
38
34
  import { Surface as Surface3, useOperationInvoker as useOperationInvoker5 } from "@dxos/app-framework/ui";
39
- import { LayoutOperation as LayoutOperation4 } from "@dxos/app-toolkit";
35
+ import { LayoutOperation as LayoutOperation4, getCompanionVariant as getCompanionVariant4 } from "@dxos/app-toolkit";
40
36
  import { IconButton as IconButton4, Main, ScrollArea, toLocalizedString as toLocalizedString2, useTranslation as useTranslation5 } from "@dxos/react-ui";
41
37
  import { Tabs } from "@dxos/react-ui-tabs";
42
38
  import { mx as mx4 } from "@dxos/ui-theme";
@@ -45,11 +41,11 @@ import { mx as mx4 } from "@dxos/ui-theme";
45
41
  import { useFocusFinders } from "@fluentui/react-tabster";
46
42
  import React5, { memo as memo2, useCallback as useCallback3, useLayoutEffect, useMemo as useMemo2, useRef } from "react";
47
43
  import { Surface as Surface2, useOperationInvoker as useOperationInvoker3 } from "@dxos/app-framework/ui";
48
- import { LayoutOperation as LayoutOperation2 } from "@dxos/app-toolkit";
44
+ import { LayoutOperation as LayoutOperation2, getCompanionVariant as getCompanionVariant2 } from "@dxos/app-toolkit";
49
45
  import { useAppGraph as useAppGraph2 } from "@dxos/app-toolkit/ui";
50
46
  import { debounce } from "@dxos/async";
51
47
  import { useNode } from "@dxos/plugin-graph";
52
- import { ATTENDABLE_PATH_SEPARATOR, useAttentionAttributes } from "@dxos/react-ui-attention";
48
+ import { useAttentionAttributes } from "@dxos/react-ui-attention";
53
49
  import { StackItem as StackItem2, railGridHorizontal } from "@dxos/react-ui-stack";
54
50
  import { mainIntrinsicSize, mx as mx3 } from "@dxos/ui-theme";
55
51
 
@@ -61,7 +57,7 @@ import { descriptionMessage, mx as mx2 } from "@dxos/ui-theme";
61
57
  // src/components/Plank/PlankHeading.tsx
62
58
  import React2, { Fragment, memo, useCallback as useCallback2, useEffect, useMemo } from "react";
63
59
  import { Surface, useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/ui";
64
- import { LayoutOperation } from "@dxos/app-toolkit";
60
+ import { LayoutOperation, getCompanionVariant } from "@dxos/app-toolkit";
65
61
  import { useAppGraph } from "@dxos/app-toolkit/ui";
66
62
  import { Graph, useActionRunner } from "@dxos/plugin-graph";
67
63
  import { Icon, IconButton as IconButton2, Popover, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
@@ -208,7 +204,7 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
208
204
  isCompanionNode,
209
205
  deckEnabled
210
206
  ]);
211
- const { variant } = parseEntryId(id);
207
+ const variant = isCompanionNode ? getCompanionVariant(id) : void 0;
212
208
  const sigilActions = useMemo(() => {
213
209
  if (!node) {
214
210
  return void 0;
@@ -217,11 +213,11 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
217
213
  } else {
218
214
  return [
219
215
  actions,
220
- Graph.getActions(graph, node.id).filter((a) => [
216
+ Graph.getActions(graph, node.id).filter((action) => [
221
217
  "list-item",
222
218
  "list-item-primary",
223
219
  "heading-list-item"
224
- ].includes(a.properties.disposition))
220
+ ].includes(action.properties.disposition))
225
221
  ].filter((a) => a.length > 0);
226
222
  }
227
223
  }, [
@@ -271,7 +267,7 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
271
267
  id,
272
268
  part
273
269
  ]);
274
- const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${meta.id}/${node.id}` ? Popover.Anchor : Fragment;
270
+ const ActionRoot = node && popoverAnchorId === `${meta.id}:${node.id}` ? Popover.Anchor : Fragment;
275
271
  const handleTabClick = useCallback2((event) => {
276
272
  const target = event.target.closest("[data-id]");
277
273
  const tabId = target?.dataset?.id;
@@ -454,8 +450,8 @@ var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order,
454
450
  const canIncrementStart = active && index !== void 0 && index > 0 && length !== void 0 && length > 1;
455
451
  const canIncrementEnd = active && index !== void 0 && index < length - 1 && length !== void 0;
456
452
  const rootElement = useRef(null);
457
- const { variant } = parseEntryId(id);
458
- const sizeKey = `${id.split("+")[0]}${variant ? `${ATTENDABLE_PATH_SEPARATOR}${variant}` : ""}`;
453
+ const variant = node?.type === PLANK_COMPANION_TYPE ? getCompanionVariant2(id) : void 0;
454
+ const sizeKey = id.split("+")[0];
459
455
  const size = deck.plankSizing[sizeKey];
460
456
  const handleSizeChange = useCallback3(debounce((nextSize) => {
461
457
  return invokePromise(DeckOperation.UpdatePlankSize, {
@@ -566,7 +562,7 @@ var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order,
566
562
  // src/components/Sidebar/SidebarButton.tsx
567
563
  import React6, { useCallback as useCallback4 } from "react";
568
564
  import { useOperationInvoker as useOperationInvoker4 } from "@dxos/app-framework/ui";
569
- import { LayoutOperation as LayoutOperation3 } from "@dxos/app-toolkit";
565
+ import { LayoutOperation as LayoutOperation3, getCompanionVariant as getCompanionVariant3 } from "@dxos/app-toolkit";
570
566
  import { IconButton as IconButton3, useTranslation as useTranslation4 } from "@dxos/react-ui";
571
567
  var ToggleSidebarButton = ({ classNames, variant = "ghost" }) => {
572
568
  const { updateState } = useDeckState();
@@ -621,7 +617,7 @@ var ToggleComplementarySidebarButton = ({ inR0, classNames, current }) => {
621
617
  ...state2,
622
618
  complementarySidebarState: nextState
623
619
  }));
624
- const subject = state.complementarySidebarPanel ?? (companions[0] && getCompanionId(companions[0].id));
620
+ const subject = state.complementarySidebarPanel ?? (companions[0] && getCompanionVariant3(companions[0].id));
625
621
  if (nextState === "expanded" && !current && subject) {
626
622
  invokeSync(LayoutOperation3.UpdateComplementary, {
627
623
  subject
@@ -665,8 +661,8 @@ var ComplementarySidebar = ({ current }) => {
665
661
  const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
666
662
  const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);
667
663
  const companions = useDeckCompanions();
668
- const activeCompanion = companions.find((companion) => getCompanionId(companion.id) === current);
669
- const activeId = activeCompanion && getCompanionId(activeCompanion.id);
664
+ const activeCompanion = companions.find((companion) => getCompanionVariant4(companion.id) === current);
665
+ const activeId = activeCompanion && getCompanionVariant4(activeCompanion.id);
670
666
  const [internalValue, setInternalValue] = useState2(activeId);
671
667
  useEffect3(() => {
672
668
  setInternalValue(activeId);
@@ -730,16 +726,16 @@ var ComplementarySidebar = ({ current }) => {
730
726
  }, /* @__PURE__ */ React7.createElement(Tabs.Tablist, {
731
727
  classNames: "grid grid-cols-1 auto-rows-(--dx-rail-action) p-1 gap-1 overflow-y-auto!"
732
728
  }, companions.map((companion) => /* @__PURE__ */ React7.createElement(Tabs.Tab, {
733
- key: getCompanionId(companion.id),
734
- value: getCompanionId(companion.id),
729
+ key: getCompanionVariant4(companion.id),
730
+ value: getCompanionVariant4(companion.id),
735
731
  asChild: true
736
732
  }, /* @__PURE__ */ React7.createElement(IconButton4, {
737
733
  label: toLocalizedString2(companion.properties.label, t),
738
734
  icon: companion.properties.icon,
739
735
  iconOnly: true,
740
736
  tooltipSide: "left",
741
- "data-value": getCompanionId(companion.id),
742
- variant: activeId === getCompanionId(companion.id) ? state.complementarySidebarState === "expanded" ? "primary" : "default" : "ghost",
737
+ "data-value": getCompanionVariant4(companion.id),
738
+ variant: activeId === getCompanionVariant4(companion.id) ? state.complementarySidebarState === "expanded" ? "primary" : "default" : "ghost",
743
739
  onClick: handleTabClick
744
740
  })))), !hoistStatusbar && /* @__PURE__ */ React7.createElement("div", {
745
741
  role: "none",
@@ -751,8 +747,8 @@ var ComplementarySidebar = ({ current }) => {
751
747
  role: "none",
752
748
  className: "hidden lg:grid grid-cols-1 auto-rows-(--dx-rail-action) p-1"
753
749
  }, /* @__PURE__ */ React7.createElement(ToggleComplementarySidebarButton, null))), activeId && companions.map((companion) => /* @__PURE__ */ React7.createElement(Tabs.Tabpanel, {
754
- key: getCompanionId(companion.id),
755
- value: getCompanionId(companion.id),
750
+ key: getCompanionVariant4(companion.id),
751
+ value: getCompanionVariant4(companion.id),
756
752
  classNames: [
757
753
  'absolute data-[state="inactive"]:-z-[1] overflow-hidden',
758
754
  "inset-y-0 start-0 w-[calc(100%-var(--dx-r0-size))] lg:w-(--dx-r1-size)",
@@ -770,7 +766,7 @@ var ComplementarySidebar = ({ current }) => {
770
766
  };
771
767
  var ComplementarySidebarPanel = ({ companion, activeId, data, hoistStatusbar }) => {
772
768
  const { t } = useTranslation5(meta.id);
773
- if (getCompanionId(companion.id) !== activeId && !data) {
769
+ if (getCompanionVariant4(companion.id) !== activeId && !data) {
774
770
  return null;
775
771
  }
776
772
  const Wrapper = companion.properties.fixed ? Fragment2 : ScrollAreaWrapper;
@@ -782,14 +778,14 @@ var ComplementarySidebarPanel = ({ companion, activeId, data, hoistStatusbar })
782
778
  icon: companion.properties.icon,
783
779
  iconOnly: true,
784
780
  tooltipSide: "left",
785
- "data-value": getCompanionId(companion.id),
781
+ "data-value": getCompanionVariant4(companion.id),
786
782
  classNames: "h-10 w-10",
787
783
  variant: "default"
788
784
  }), /* @__PURE__ */ React7.createElement("div", {
789
785
  role: "none",
790
786
  className: "px-1"
791
787
  }, toLocalizedString2(companion.properties.label, t))), /* @__PURE__ */ React7.createElement(Wrapper, null, /* @__PURE__ */ React7.createElement(Surface3.Surface, {
792
- role: `deck-companion--${getCompanionId(companion.id)}`,
788
+ role: `deck-companion--${getCompanionVariant4(companion.id)}`,
793
789
  data,
794
790
  fallback: PlankErrorFallback,
795
791
  placeholder: /* @__PURE__ */ React7.createElement(PlankLoading, null)
@@ -1388,4 +1384,4 @@ export {
1388
1384
  Banner,
1389
1385
  DeckLayout
1390
1386
  };
1391
- //# sourceMappingURL=chunk-Z43MBISY.mjs.map
1387
+ //# sourceMappingURL=chunk-MBCCNIWY.mjs.map