@dxos/plugin-deck 0.8.4-main.b97322e → 0.8.4-main.bc674ce
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.
- package/dist/lib/browser/app-graph-builder-DTVCULQ4.mjs +120 -0
- package/dist/lib/browser/app-graph-builder-DTVCULQ4.mjs.map +7 -0
- package/dist/lib/browser/{check-app-scheme-57U62A3A.mjs → check-app-scheme-JSRXXIYF.mjs} +9 -9
- package/dist/lib/browser/check-app-scheme-JSRXXIYF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-F5BQOOEG.mjs → chunk-ATFPDN6J.mjs} +155 -23
- package/dist/lib/browser/chunk-ATFPDN6J.mjs.map +7 -0
- package/dist/lib/browser/{chunk-CNTGBCMK.mjs → chunk-NHABISX2.mjs} +40 -33
- package/dist/lib/browser/chunk-NHABISX2.mjs.map +7 -0
- package/dist/lib/browser/chunk-S4A5UO4K.mjs +1448 -0
- package/dist/lib/browser/chunk-S4A5UO4K.mjs.map +7 -0
- package/dist/lib/browser/chunk-UNG4CLLP.mjs +161 -0
- package/dist/lib/browser/chunk-UNG4CLLP.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +79 -67
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-CDYBLZJ4.mjs +595 -0
- package/dist/lib/browser/operation-resolver-CDYBLZJ4.mjs.map +7 -0
- package/dist/lib/browser/react-root-XDCMNENQ.mjs +47 -0
- package/dist/lib/browser/react-root-XDCMNENQ.mjs.map +7 -0
- package/dist/lib/browser/react-surface-HODERLOL.mjs +42 -0
- package/dist/lib/browser/react-surface-HODERLOL.mjs.map +7 -0
- package/dist/lib/browser/settings-OMHVGZ6V.mjs +37 -0
- package/dist/lib/browser/settings-OMHVGZ6V.mjs.map +7 -0
- package/dist/lib/browser/state-OC3BSB6E.mjs +103 -0
- package/dist/lib/browser/state-OC3BSB6E.mjs.map +7 -0
- package/dist/lib/browser/toolkit-R53LD3EA.mjs +53 -0
- package/dist/lib/browser/toolkit-R53LD3EA.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +11 -4
- package/dist/lib/browser/url-handler-53TE6JZO.mjs +93 -0
- package/dist/lib/browser/url-handler-53TE6JZO.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-473BNZDJ.mjs +121 -0
- package/dist/lib/node-esm/app-graph-builder-473BNZDJ.mjs.map +7 -0
- package/dist/lib/node-esm/check-app-scheme-IVYRHKRH.mjs +33 -0
- package/dist/lib/node-esm/check-app-scheme-IVYRHKRH.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ADPMWKLL.mjs +154 -0
- package/dist/lib/node-esm/chunk-ADPMWKLL.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-D34L3ECT.mjs +1449 -0
- package/dist/lib/node-esm/chunk-D34L3ECT.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-SKEVPQ7E.mjs +162 -0
- package/dist/lib/node-esm/chunk-SKEVPQ7E.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XAKTY3EB.mjs +294 -0
- package/dist/lib/node-esm/chunk-XAKTY3EB.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +181 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/lib/node-esm/operation-resolver-WUOE33ID.mjs +596 -0
- package/dist/lib/node-esm/operation-resolver-WUOE33ID.mjs.map +7 -0
- package/dist/lib/node-esm/react-root-O6GZO62Z.mjs +48 -0
- package/dist/lib/node-esm/react-root-O6GZO62Z.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-IHDJDGC5.mjs +43 -0
- package/dist/lib/node-esm/react-surface-IHDJDGC5.mjs.map +7 -0
- package/dist/lib/node-esm/settings-2HB6FKIK.mjs +38 -0
- package/dist/lib/node-esm/settings-2HB6FKIK.mjs.map +7 -0
- package/dist/lib/node-esm/state-JRQ45ACJ.mjs +104 -0
- package/dist/lib/node-esm/state-JRQ45ACJ.mjs.map +7 -0
- package/dist/lib/node-esm/toolkit-JLPZNNKB.mjs +54 -0
- package/dist/lib/node-esm/toolkit-JLPZNNKB.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +40 -0
- package/dist/lib/node-esm/url-handler-QGF2R24T.mjs +94 -0
- package/dist/lib/node-esm/url-handler-QGF2R24T.mjs.map +7 -0
- package/dist/types/src/DeckPlugin.d.ts +2 -1
- package/dist/types/src/DeckPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts +5 -0
- package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts.map +1 -0
- package/dist/types/src/capabilities/check-app-scheme/index.d.ts +3 -0
- package/dist/types/src/capabilities/check-app-scheme/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +8 -13
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
- package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
- package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/index.d.ts +19 -0
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/settings.d.ts +21 -0
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/index.d.ts +172 -0
- package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/state.d.ts +175 -0
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
- package/dist/types/src/capabilities/toolkit/index.d.ts +3 -0
- package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts +26 -0
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -0
- package/dist/types/src/capabilities/tools/index.d.ts +3 -0
- package/dist/types/src/capabilities/tools/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/tools/tools.d.ts +12 -0
- package/dist/types/src/capabilities/tools/tools.d.ts.map +1 -0
- package/dist/types/src/capabilities/url-handler/index.d.ts +3 -0
- package/dist/types/src/capabilities/url-handler/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/url-handler/url-handler.d.ts +5 -0
- package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +1 -0
- package/dist/types/src/components/DeckLayout/Banner.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/DeckLayout.d.ts +2 -3
- package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts +74 -0
- package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts.map +1 -0
- package/dist/types/src/components/DeckLayout/DeckMain.d.ts +3 -0
- package/dist/types/src/components/DeckLayout/DeckMain.d.ts.map +1 -0
- package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Toast.d.ts +7 -2
- package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts +4 -2
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
- package/dist/types/src/components/Plank/Plank.d.ts +4 -4
- package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
- package/dist/types/src/components/Plank/Plank.stories.d.ts +104 -5
- package/dist/types/src/components/Plank/Plank.stories.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankControls.d.ts +1 -1
- package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankError.d.ts +1 -1
- package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankHeading.d.ts +3 -3
- package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckCompanions.d.ts +3 -3
- package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckState.d.ts +17 -0
- package/dist/types/src/hooks/useDeckState.d.ts.map +1 -0
- package/dist/types/src/hooks/useHoistStatusbar.d.ts +1 -1
- package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -1
- package/dist/types/src/hooks/useNodeActionExpander.d.ts +1 -1
- package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -3
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/{capabilities → types}/capabilities.d.ts +96 -90
- package/dist/types/src/types/capabilities.d.ts.map +1 -0
- package/dist/types/src/types/events.d.ts +7 -0
- package/dist/types/src/types/events.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +90 -30
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util/set-active.d.ts +18 -3
- package/dist/types/src/util/set-active.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +56 -46
- package/src/DeckPlugin.ts +45 -61
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +118 -0
- package/src/capabilities/app-graph-builder/index.ts +7 -0
- package/src/capabilities/{check-app-scheme.ts → check-app-scheme/check-app-scheme.ts} +12 -11
- package/src/capabilities/check-app-scheme/index.ts +7 -0
- package/src/capabilities/index.ts +9 -13
- package/src/capabilities/operation-resolver/index.ts +10 -0
- package/src/capabilities/operation-resolver/operation-resolver.ts +555 -0
- package/src/capabilities/react-root/index.ts +7 -0
- package/src/capabilities/react-root/react-root.tsx +47 -0
- package/src/capabilities/react-surface/index.ts +7 -0
- package/src/capabilities/react-surface/react-surface.tsx +37 -0
- package/src/capabilities/settings/index.ts +7 -0
- package/src/capabilities/settings/settings.ts +38 -0
- package/src/capabilities/state/index.ts +7 -0
- package/src/capabilities/state/state.ts +104 -0
- package/src/capabilities/toolkit/index.ts +7 -0
- package/src/capabilities/toolkit/toolkit.ts +63 -0
- package/src/capabilities/tools/index.ts +7 -0
- package/src/capabilities/tools/tools.ts +92 -0
- package/src/capabilities/url-handler/index.ts +7 -0
- package/src/capabilities/url-handler/url-handler.ts +95 -0
- package/src/components/DeckLayout/ActiveNode.tsx +1 -1
- package/src/components/DeckLayout/Banner.tsx +6 -6
- package/src/components/DeckLayout/ContentEmpty.tsx +4 -5
- package/src/components/DeckLayout/DeckLayout.stories.tsx +51 -0
- package/src/components/DeckLayout/DeckLayout.tsx +18 -285
- package/src/components/DeckLayout/DeckMain.tsx +286 -0
- package/src/components/DeckLayout/Dialog.tsx +13 -10
- package/src/components/DeckLayout/Fallback.tsx +4 -4
- package/src/components/DeckLayout/Popover.tsx +44 -32
- package/src/components/DeckLayout/StatusBar.tsx +1 -1
- package/src/components/DeckLayout/Toast.tsx +30 -5
- package/src/components/DeckSettings/DeckSettings.tsx +91 -66
- package/src/components/Plank/Plank.stories.tsx +23 -16
- package/src/components/Plank/Plank.tsx +89 -56
- package/src/components/Plank/PlankControls.tsx +9 -9
- package/src/components/Plank/PlankError.tsx +5 -4
- package/src/components/Plank/PlankHeading.tsx +38 -42
- package/src/components/Sidebar/ComplementarySidebar.tsx +61 -33
- package/src/components/Sidebar/Sidebar.tsx +6 -6
- package/src/components/Sidebar/SidebarButton.tsx +39 -32
- package/src/components/fragments.ts +1 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useCompanions.ts +1 -1
- package/src/hooks/useDeckCompanions.ts +7 -5
- package/src/hooks/useDeckState.ts +82 -0
- package/src/hooks/useHoistStatusbar.ts +4 -5
- package/src/hooks/useNodeActionExpander.ts +4 -4
- package/src/index.ts +1 -2
- package/src/meta.ts +8 -5
- package/src/translations.ts +3 -1
- package/src/types/capabilities.ts +33 -0
- package/src/types/events.ts +20 -0
- package/src/types/index.ts +2 -0
- package/src/types/schema.ts +86 -14
- package/src/util/layoutAppliesTopbar.ts +1 -1
- package/src/util/set-active.ts +49 -29
- package/dist/lib/browser/app-graph-builder-JTFSDT2I.mjs +0 -152
- package/dist/lib/browser/app-graph-builder-JTFSDT2I.mjs.map +0 -7
- package/dist/lib/browser/check-app-scheme-57U62A3A.mjs.map +0 -7
- package/dist/lib/browser/chunk-CNTGBCMK.mjs.map +0 -7
- package/dist/lib/browser/chunk-D7KTFCUV.mjs +0 -1494
- package/dist/lib/browser/chunk-D7KTFCUV.mjs.map +0 -7
- package/dist/lib/browser/chunk-F5BQOOEG.mjs.map +0 -7
- package/dist/lib/browser/chunk-JFTXENFN.mjs +0 -129
- package/dist/lib/browser/chunk-JFTXENFN.mjs.map +0 -7
- package/dist/lib/browser/chunk-M57WD3V6.mjs +0 -16
- package/dist/lib/browser/chunk-M57WD3V6.mjs.map +0 -7
- package/dist/lib/browser/chunk-QDZO4AJ4.mjs +0 -127
- package/dist/lib/browser/chunk-QDZO4AJ4.mjs.map +0 -7
- package/dist/lib/browser/chunk-Z5KITAZW.mjs +0 -13
- package/dist/lib/browser/chunk-Z5KITAZW.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-P2OBK5HK.mjs +0 -521
- package/dist/lib/browser/intent-resolver-P2OBK5HK.mjs.map +0 -7
- package/dist/lib/browser/react-root-PO64J7ML.mjs +0 -43
- package/dist/lib/browser/react-root-PO64J7ML.mjs.map +0 -7
- package/dist/lib/browser/react-surface-E45YOVF5.mjs +0 -40
- package/dist/lib/browser/react-surface-E45YOVF5.mjs.map +0 -7
- package/dist/lib/browser/settings-6AJZPZPM.mjs +0 -29
- package/dist/lib/browser/settings-6AJZPZPM.mjs.map +0 -7
- package/dist/lib/browser/state-MVDYX77Y.mjs +0 -12
- package/dist/lib/browser/tools-TKQDPCHJ.mjs +0 -88
- package/dist/lib/browser/tools-TKQDPCHJ.mjs.map +0 -7
- package/dist/lib/browser/url-handler-7L7M6IKH.mjs +0 -70
- package/dist/lib/browser/url-handler-7L7M6IKH.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/check-app-scheme.d.ts +0 -4
- package/dist/types/src/capabilities/check-app-scheme.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-root.d.ts +0 -7
- package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface.d.ts +0 -4
- package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings.d.ts +0 -4
- package/dist/types/src/capabilities/settings.d.ts.map +0 -1
- package/dist/types/src/capabilities/state.d.ts +0 -101
- package/dist/types/src/capabilities/state.d.ts.map +0 -1
- package/dist/types/src/capabilities/tools.d.ts +0 -11
- package/dist/types/src/capabilities/tools.d.ts.map +0 -1
- package/dist/types/src/capabilities/url-handler.d.ts +0 -4
- package/dist/types/src/capabilities/url-handler.d.ts.map +0 -1
- package/dist/types/src/events.d.ts +0 -4
- package/dist/types/src/events.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder.ts +0 -141
- package/src/capabilities/capabilities.ts +0 -14
- package/src/capabilities/intent-resolver.ts +0 -468
- package/src/capabilities/react-root.tsx +0 -38
- package/src/capabilities/react-surface.tsx +0 -30
- package/src/capabilities/settings.ts +0 -26
- package/src/capabilities/state.ts +0 -104
- package/src/capabilities/tools.ts +0 -81
- package/src/capabilities/url-handler.ts +0 -59
- package/src/events.ts +0 -11
- /package/dist/lib/{browser/state-MVDYX77Y.mjs.map → node-esm/types/index.mjs.map} +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useFocusFinders } from '@fluentui/react-tabster';
|
|
5
6
|
import React, {
|
|
6
7
|
type KeyboardEvent,
|
|
7
8
|
type PropsWithChildren,
|
|
@@ -12,30 +13,28 @@ import React, {
|
|
|
12
13
|
useRef,
|
|
13
14
|
} from 'react';
|
|
14
15
|
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
Surface,
|
|
18
|
-
createIntent,
|
|
19
|
-
useCapability,
|
|
20
|
-
useAppGraph,
|
|
21
|
-
useIntentDispatcher,
|
|
22
|
-
} from '@dxos/app-framework';
|
|
16
|
+
import { Common } from '@dxos/app-framework';
|
|
17
|
+
import { Surface, useAppGraph, useOperationInvoker } from '@dxos/app-framework/react';
|
|
23
18
|
import { debounce } from '@dxos/async';
|
|
24
|
-
import {
|
|
19
|
+
import { type Node, useNode } from '@dxos/plugin-graph';
|
|
25
20
|
import { ATTENDABLE_PATH_SEPARATOR, useAttentionAttributes } from '@dxos/react-ui-attention';
|
|
26
21
|
import { StackItem, railGridHorizontal } from '@dxos/react-ui-stack';
|
|
27
|
-
import { mainIntrinsicSize, mx } from '@dxos/
|
|
22
|
+
import { mainIntrinsicSize, mx } from '@dxos/ui-theme';
|
|
23
|
+
|
|
24
|
+
import { useCompanions, useDeckState, useMainSize } from '../../hooks';
|
|
25
|
+
import { parseEntryId } from '../../layout';
|
|
26
|
+
import { DeckOperation, type DeckSettingsProps, type LayoutMode, type ResolvedPart } from '../../types';
|
|
28
27
|
|
|
29
28
|
import { PlankContentError, PlankError } from './PlankError';
|
|
30
29
|
import { PlankHeading } from './PlankHeading';
|
|
31
30
|
import { PlankLoading } from './PlankLoading';
|
|
32
|
-
import { DeckCapabilities } from '../../capabilities';
|
|
33
|
-
import { useMainSize, useCompanions } from '../../hooks';
|
|
34
|
-
import { parseEntryId } from '../../layout';
|
|
35
|
-
import { DeckAction, type LayoutMode, type ResolvedPart, type DeckSettingsProps } from '../../types';
|
|
36
31
|
|
|
37
32
|
const UNKNOWN_ID = 'unknown_id';
|
|
38
33
|
|
|
34
|
+
//
|
|
35
|
+
// Plank
|
|
36
|
+
//
|
|
37
|
+
|
|
39
38
|
export type PlankProps = Pick<PlankComponentProps, 'layoutMode' | 'part' | 'path' | 'order' | 'active' | 'settings'> & {
|
|
40
39
|
id?: string;
|
|
41
40
|
companionId?: string;
|
|
@@ -49,10 +48,10 @@ export type PlankProps = Pick<PlankComponentProps, 'layoutMode' | 'part' | 'path
|
|
|
49
48
|
// benefits. I think where we anticipate users will definitely want to quickly switch between showing and hiding entire
|
|
50
49
|
// articles, over the (again probably large) performance benefit that unmounting them would confer, we can mount and
|
|
51
50
|
// hide them, but I think that scenario in its most unambiguous form is probably rare. You could extrapolate
|
|
52
|
-
// the scenario to include all
|
|
53
|
-
// don
|
|
51
|
+
// the scenario to include all "potential" planks such as companions, which we could keep mounted and hidden, but I
|
|
52
|
+
// don't think the resulting performance would be acceptable. I think the real issue is "perceived performance" which
|
|
54
53
|
// has mitigations that are in between mounting and un-mounting since both of those have tradeoffs; we may need one or more
|
|
55
|
-
//
|
|
54
|
+
// "partially-mounted" experiences, like loading skeletons at the simple end, or screenshots of "sleeping" planks at
|
|
56
55
|
// the advanced end.
|
|
57
56
|
|
|
58
57
|
/**
|
|
@@ -67,7 +66,11 @@ export const Plank = memo(({ id = UNKNOWN_ID, companionId, ...props }: PlankProp
|
|
|
67
66
|
const hasCompanion = !!(companionId && currentCompanion);
|
|
68
67
|
|
|
69
68
|
return (
|
|
70
|
-
<PlankContainer
|
|
69
|
+
<PlankContainer
|
|
70
|
+
solo={props.part === 'solo'}
|
|
71
|
+
companion={hasCompanion}
|
|
72
|
+
encapsulate={!!props.settings?.encapsulatedPlanks}
|
|
73
|
+
>
|
|
71
74
|
<PlankComponent
|
|
72
75
|
id={id}
|
|
73
76
|
node={node}
|
|
@@ -91,7 +94,13 @@ export const Plank = memo(({ id = UNKNOWN_ID, companionId, ...props }: PlankProp
|
|
|
91
94
|
);
|
|
92
95
|
});
|
|
93
96
|
|
|
94
|
-
|
|
97
|
+
//
|
|
98
|
+
// PlankContainer
|
|
99
|
+
//
|
|
100
|
+
|
|
101
|
+
type PlankContainerProps = PropsWithChildren<{ solo: boolean; companion: boolean; encapsulate: boolean }>;
|
|
102
|
+
|
|
103
|
+
const PlankContainer = ({ children, solo, companion, encapsulate }: PlankContainerProps) => {
|
|
95
104
|
const sizeAttrs = useMainSize();
|
|
96
105
|
if (!solo) {
|
|
97
106
|
return children;
|
|
@@ -101,7 +110,14 @@ const PlankContainer = ({ children, solo, companion }: PropsWithChildren<{ solo:
|
|
|
101
110
|
return (
|
|
102
111
|
<div
|
|
103
112
|
role='none'
|
|
104
|
-
|
|
113
|
+
data-popover-collision-boundary={true}
|
|
114
|
+
className={mx(
|
|
115
|
+
'absolute inset-[--main-spacing] grid',
|
|
116
|
+
encapsulate && 'border border-separator rounded overflow-hidden',
|
|
117
|
+
companion && 'grid-cols-[6fr_4fr]', // TODO(burdon): Resize.
|
|
118
|
+
railGridHorizontal,
|
|
119
|
+
mainIntrinsicSize,
|
|
120
|
+
)}
|
|
105
121
|
{...sizeAttrs}
|
|
106
122
|
>
|
|
107
123
|
{children}
|
|
@@ -109,6 +125,10 @@ const PlankContainer = ({ children, solo, companion }: PropsWithChildren<{ solo:
|
|
|
109
125
|
);
|
|
110
126
|
};
|
|
111
127
|
|
|
128
|
+
//
|
|
129
|
+
// PlankComponent
|
|
130
|
+
//
|
|
131
|
+
|
|
112
132
|
type PlankComponentProps = {
|
|
113
133
|
layoutMode: LayoutMode;
|
|
114
134
|
id: string;
|
|
@@ -116,11 +136,10 @@ type PlankComponentProps = {
|
|
|
116
136
|
path?: string[];
|
|
117
137
|
order?: number;
|
|
118
138
|
active?: string[];
|
|
119
|
-
// TODO(burdon): Change to role?
|
|
120
139
|
companioned?: 'primary' | 'companion';
|
|
121
|
-
node?: Node;
|
|
122
|
-
primary?: Node;
|
|
123
|
-
companions?: Node[];
|
|
140
|
+
node?: Node.Node;
|
|
141
|
+
primary?: Node.Node;
|
|
142
|
+
companions?: Node.Node[];
|
|
124
143
|
settings?: DeckSettingsProps;
|
|
125
144
|
};
|
|
126
145
|
|
|
@@ -138,8 +157,10 @@ const PlankComponent = memo(
|
|
|
138
157
|
companions,
|
|
139
158
|
settings,
|
|
140
159
|
}: PlankComponentProps) => {
|
|
141
|
-
const {
|
|
142
|
-
const {
|
|
160
|
+
const { invokePromise } = useOperationInvoker();
|
|
161
|
+
const { state, deck } = useDeckState();
|
|
162
|
+
const { popoverAnchorId, scrollIntoView } = state;
|
|
163
|
+
const { findFirstFocusable } = useFocusFinders();
|
|
143
164
|
const canResize = layoutMode === 'deck';
|
|
144
165
|
|
|
145
166
|
const attentionAttrs = useAttentionAttributes(primary?.id ?? id);
|
|
@@ -156,29 +177,32 @@ const PlankComponent = memo(
|
|
|
156
177
|
|
|
157
178
|
const handleSizeChange = useCallback(
|
|
158
179
|
debounce((nextSize: number) => {
|
|
159
|
-
return
|
|
180
|
+
return invokePromise(DeckOperation.UpdatePlankSize, { id: sizeKey, size: nextSize });
|
|
160
181
|
}, 200),
|
|
161
|
-
[
|
|
182
|
+
[invokePromise, sizeKey],
|
|
162
183
|
);
|
|
163
184
|
|
|
164
|
-
// TODO(thure): Tabster
|
|
185
|
+
// TODO(thure): Tabster's focus group should handle moving focus to Main, but something is blocking it.
|
|
165
186
|
const handleKeyDown = useCallback((event: KeyboardEvent) => {
|
|
166
|
-
if (event.target === event.currentTarget
|
|
167
|
-
|
|
187
|
+
if (event.target === event.currentTarget) {
|
|
188
|
+
switch (event.key) {
|
|
189
|
+
case 'Escape':
|
|
190
|
+
rootElement.current?.closest('main')?.focus();
|
|
191
|
+
break;
|
|
192
|
+
case 'Enter':
|
|
193
|
+
rootElement.current && findFirstFocusable(rootElement.current)?.focus();
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
168
196
|
}
|
|
169
197
|
}, []);
|
|
170
198
|
|
|
171
199
|
useLayoutEffect(() => {
|
|
172
200
|
if (scrollIntoView === id) {
|
|
173
|
-
|
|
174
|
-
// Forcing focus to something smaller than the plank prevents large focus ring in the interim.
|
|
175
|
-
const focusable = rootElement.current?.querySelector('button') || rootElement.current;
|
|
176
|
-
focusable?.focus({ preventScroll: true });
|
|
177
|
-
layoutMode === 'deck' && focusable?.scrollIntoView({ behavior: 'smooth', inline: 'center' });
|
|
201
|
+
layoutMode === 'deck' && rootElement.current?.scrollIntoView({ behavior: 'smooth', inline: 'center' });
|
|
178
202
|
// Clear the scroll into view state once it has been actioned.
|
|
179
|
-
void
|
|
203
|
+
void invokePromise(Common.LayoutOperation.ScrollIntoView, { subject: undefined });
|
|
180
204
|
}
|
|
181
|
-
}, [id, scrollIntoView, layoutMode]);
|
|
205
|
+
}, [id, scrollIntoView, layoutMode, invokePromise]);
|
|
182
206
|
|
|
183
207
|
const isSolo = layoutMode.startsWith('solo') && part === 'solo';
|
|
184
208
|
const isAttendable =
|
|
@@ -189,34 +213,42 @@ const PlankComponent = memo(
|
|
|
189
213
|
const data = useMemo(
|
|
190
214
|
() =>
|
|
191
215
|
node && {
|
|
216
|
+
attendableId: id,
|
|
192
217
|
subject: node.data,
|
|
193
218
|
companionTo: primary?.data,
|
|
219
|
+
properties: node.properties,
|
|
194
220
|
variant,
|
|
195
221
|
path,
|
|
196
222
|
popoverAnchorId,
|
|
197
223
|
},
|
|
198
|
-
[node, node?.data, path, popoverAnchorId, primary?.data, variant],
|
|
224
|
+
[node, node?.data, node?.properties, path, popoverAnchorId, primary?.data, variant],
|
|
199
225
|
);
|
|
200
226
|
|
|
201
227
|
// TODO(wittjosiah): Change prop to accept a component.
|
|
202
228
|
const placeholder = useMemo(() => <PlankLoading />, []);
|
|
203
229
|
|
|
204
230
|
const Root = part.startsWith('solo') ? 'article' : StackItem.Root;
|
|
231
|
+
const fullscreen = layoutMode === 'solo--fullscreen';
|
|
205
232
|
const className = mx(
|
|
206
233
|
'attention-surface relative dx-focus-ring-inset-over-all density-coarse',
|
|
207
|
-
isSolo && mainIntrinsicSize,
|
|
208
|
-
isSolo && railGridHorizontal,
|
|
209
234
|
isSolo && 'absolute inset-0',
|
|
235
|
+
isSolo && mainIntrinsicSize,
|
|
236
|
+
railGridHorizontal,
|
|
210
237
|
part.startsWith('solo') && 'grid',
|
|
238
|
+
part.startsWith('solo-') && 'grid-rows-subgrid row-span-2 min-is-0',
|
|
239
|
+
fullscreen && 'grid-rows-1',
|
|
211
240
|
part === 'deck' && (companioned === 'companion' ? '!border-separator border-ie' : '!border-separator border-li'),
|
|
212
|
-
part.startsWith('solo-') && 'row-span-2 grid-rows-subgrid min-is-0',
|
|
213
241
|
part === 'solo-companion' && '!border-separator border-is',
|
|
242
|
+
settings?.encapsulatedPlanks &&
|
|
243
|
+
!part.startsWith('solo') &&
|
|
244
|
+
'mli-[--main-spacing] !border-separator border rounded overflow-hidden',
|
|
214
245
|
);
|
|
215
246
|
|
|
216
247
|
return (
|
|
217
248
|
<Root
|
|
218
249
|
ref={rootElement}
|
|
219
250
|
data-testid='deck.plank'
|
|
251
|
+
data-popover-collision-boundary={true}
|
|
220
252
|
tabIndex={0}
|
|
221
253
|
{...(part.startsWith('solo')
|
|
222
254
|
? ({ ...sizeAttrs, className } as any)
|
|
@@ -233,19 +265,21 @@ const PlankComponent = memo(
|
|
|
233
265
|
>
|
|
234
266
|
{node ? (
|
|
235
267
|
<>
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
268
|
+
{!fullscreen && (
|
|
269
|
+
<PlankHeading
|
|
270
|
+
id={id}
|
|
271
|
+
part={part.startsWith('solo-') ? 'solo' : part}
|
|
272
|
+
node={node}
|
|
273
|
+
layoutMode={layoutMode}
|
|
274
|
+
deckEnabled={settings?.enableDeck}
|
|
275
|
+
canIncrementStart={canIncrementStart}
|
|
276
|
+
canIncrementEnd={canIncrementEnd}
|
|
277
|
+
popoverAnchorId={popoverAnchorId}
|
|
278
|
+
primaryId={primary?.id}
|
|
279
|
+
companioned={companioned}
|
|
280
|
+
companions={companions}
|
|
281
|
+
/>
|
|
282
|
+
)}
|
|
249
283
|
<Surface
|
|
250
284
|
key={node.id}
|
|
251
285
|
role='article'
|
|
@@ -258,7 +292,6 @@ const PlankComponent = memo(
|
|
|
258
292
|
) : (
|
|
259
293
|
<PlankError id={id} part={part} />
|
|
260
294
|
)}
|
|
261
|
-
|
|
262
295
|
{canResize && <StackItem.ResizeHandle />}
|
|
263
296
|
</Root>
|
|
264
297
|
);
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { forwardRef, useCallback } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { useOperationInvoker } from '@dxos/app-framework/react';
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
9
9
|
import { ButtonGroup, type ButtonGroupProps, type ButtonProps, IconButton, useTranslation } from '@dxos/react-ui';
|
|
10
10
|
|
|
11
|
-
import {
|
|
12
|
-
import { DeckAction, type LayoutMode } from '../../types';
|
|
11
|
+
import { meta } from '../../meta';
|
|
12
|
+
import { type DeckAction, DeckOperation, type LayoutMode } from '../../types';
|
|
13
13
|
|
|
14
14
|
export type PlankControlHandler = (event: DeckAction.PartAdjustment) => void;
|
|
15
15
|
|
|
@@ -32,7 +32,7 @@ export type PlankControlsProps = Omit<ButtonGroupProps, 'onClick'> & {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
const PlankControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {
|
|
35
|
-
return <IconButton
|
|
35
|
+
return <IconButton label={label} icon={icon} iconOnly variant='ghost' tooltipSide='bottom' {...props} />;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
const plankControlSpacing = 'pli-2';
|
|
@@ -43,12 +43,12 @@ type PlankComplimentControlsProps = {
|
|
|
43
43
|
|
|
44
44
|
export const PlankCompanionControls = forwardRef<HTMLDivElement, PlankComplimentControlsProps>(
|
|
45
45
|
({ primary }, forwardedRef) => {
|
|
46
|
-
const { t } = useTranslation(
|
|
47
|
-
const {
|
|
46
|
+
const { t } = useTranslation(meta.id);
|
|
47
|
+
const { invokePromise } = useOperationInvoker();
|
|
48
48
|
const handleCloseCompanion = useCallback(() => {
|
|
49
49
|
invariant(primary);
|
|
50
|
-
return
|
|
51
|
-
}, []);
|
|
50
|
+
return invokePromise(DeckOperation.ChangeCompanion, { primary, companion: null });
|
|
51
|
+
}, [invokePromise, primary]);
|
|
52
52
|
return (
|
|
53
53
|
<div ref={forwardedRef} className='contents app-no-drag'>
|
|
54
54
|
<PlankControl
|
|
@@ -71,7 +71,7 @@ export const PlankControls = forwardRef<HTMLDivElement, PlankControlsProps>(
|
|
|
71
71
|
{ children, classNames, variant = 'default', capabilities, layoutMode, pin, close = false, onClick, ...props },
|
|
72
72
|
forwardedRef,
|
|
73
73
|
) => {
|
|
74
|
-
const { t } = useTranslation(
|
|
74
|
+
const { t } = useTranslation(meta.id);
|
|
75
75
|
const buttonClassNames =
|
|
76
76
|
variant === 'hide-disabled' ? `disabled:hidden ${plankControlSpacing}` : plankControlSpacing;
|
|
77
77
|
|
|
@@ -6,14 +6,15 @@ import React, { useEffect, useState } from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { type Node } from '@dxos/plugin-graph';
|
|
8
8
|
import { useTranslation } from '@dxos/react-ui';
|
|
9
|
-
import { descriptionMessage, mx } from '@dxos/
|
|
9
|
+
import { descriptionMessage, mx } from '@dxos/ui-theme';
|
|
10
|
+
|
|
11
|
+
import { meta } from '../../meta';
|
|
10
12
|
|
|
11
13
|
import { PlankHeading, type PlankHeadingProps } from './PlankHeading';
|
|
12
14
|
import { PlankLoading } from './PlankLoading';
|
|
13
|
-
import { DECK_PLUGIN } from '../../meta';
|
|
14
15
|
|
|
15
16
|
export const PlankContentError = ({ error }: { error?: Error }) => {
|
|
16
|
-
const { t } = useTranslation(
|
|
17
|
+
const { t } = useTranslation(meta.id);
|
|
17
18
|
const errorString = error?.toString() ?? '';
|
|
18
19
|
return (
|
|
19
20
|
<div role='none' className='overflow-y-auto p-8 attention-surface grid place-items-center'>
|
|
@@ -32,7 +33,7 @@ export const PlankError = ({
|
|
|
32
33
|
}: {
|
|
33
34
|
id: string;
|
|
34
35
|
part: PlankHeadingProps['part'];
|
|
35
|
-
node?: Node;
|
|
36
|
+
node?: Node.Node;
|
|
36
37
|
error?: Error;
|
|
37
38
|
}) => {
|
|
38
39
|
const [timedOut, setTimedOut] = useState(false);
|
|
@@ -2,29 +2,31 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React, { Fragment, memo, useCallback, useEffect, useMemo
|
|
5
|
+
import React, { Fragment, type MouseEvent, memo, useCallback, useEffect, useMemo } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { Common } from '@dxos/app-framework';
|
|
8
|
+
import { Surface, useAppGraph, useOperationInvoker } from '@dxos/app-framework/react';
|
|
9
|
+
import { Graph, type Node, useActionRunner } from '@dxos/plugin-graph';
|
|
9
10
|
import { Icon, IconButton, Popover, toLocalizedString, useTranslation } from '@dxos/react-ui';
|
|
10
11
|
import { StackItem, type StackItemSigilAction } from '@dxos/react-ui-stack';
|
|
11
12
|
import { TextTooltip } from '@dxos/react-ui-text-tooltip';
|
|
12
|
-
import { hoverableControls, hoverableFocusedWithinControls } from '@dxos/
|
|
13
|
+
import { hoverableControls, hoverableFocusedWithinControls } from '@dxos/ui-theme';
|
|
13
14
|
|
|
14
|
-
import { PlankCompanionControls, PlankControls } from './PlankControls';
|
|
15
15
|
import { useBreakpoints } from '../../hooks';
|
|
16
16
|
import { parseEntryId } from '../../layout';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import { meta } from '../../meta';
|
|
18
|
+
import { DeckOperation, type LayoutMode, PLANK_COMPANION_TYPE, type ResolvedPart } from '../../types';
|
|
19
19
|
import { soloInlinePadding } from '../fragments';
|
|
20
20
|
|
|
21
|
+
import { PlankCompanionControls, PlankControls } from './PlankControls';
|
|
22
|
+
|
|
21
23
|
const MAX_COMPANIONS = 5;
|
|
22
24
|
|
|
23
25
|
export type PlankHeadingProps = {
|
|
24
26
|
id: string;
|
|
25
27
|
part: ResolvedPart;
|
|
26
28
|
layoutMode?: LayoutMode;
|
|
27
|
-
node?: Node;
|
|
29
|
+
node?: Node.Node;
|
|
28
30
|
deckEnabled?: boolean;
|
|
29
31
|
canIncrementStart?: boolean;
|
|
30
32
|
canIncrementEnd?: boolean;
|
|
@@ -32,7 +34,7 @@ export type PlankHeadingProps = {
|
|
|
32
34
|
primaryId?: string;
|
|
33
35
|
pending?: boolean;
|
|
34
36
|
companioned?: 'primary' | 'companion';
|
|
35
|
-
companions?: Node[];
|
|
37
|
+
companions?: Node.Node[];
|
|
36
38
|
actions?: StackItemSigilAction[];
|
|
37
39
|
};
|
|
38
40
|
|
|
@@ -52,14 +54,15 @@ export const PlankHeading = memo(
|
|
|
52
54
|
layoutMode,
|
|
53
55
|
actions = [],
|
|
54
56
|
}: PlankHeadingProps) => {
|
|
55
|
-
const { t } = useTranslation(
|
|
56
|
-
const {
|
|
57
|
+
const { t } = useTranslation(meta.id);
|
|
58
|
+
const { invokePromise, invokeSync } = useOperationInvoker();
|
|
59
|
+
const runAction = useActionRunner();
|
|
57
60
|
const { graph } = useAppGraph();
|
|
58
61
|
const breakpoint = useBreakpoints();
|
|
59
62
|
const icon = node?.properties?.icon ?? 'ph--placeholder--regular';
|
|
60
63
|
const label = pending
|
|
61
64
|
? t('pending heading')
|
|
62
|
-
: toLocalizedString(node?.properties?.label ?? ['plank heading fallback label', { ns:
|
|
65
|
+
: toLocalizedString(node?.properties?.label ?? ['plank heading fallback label', { ns: meta.id }], t);
|
|
63
66
|
|
|
64
67
|
const isCompanionNode = node?.type === PLANK_COMPANION_TYPE;
|
|
65
68
|
|
|
@@ -67,7 +70,7 @@ export const PlankHeading = memo(
|
|
|
67
70
|
const frame = requestAnimationFrame(() => {
|
|
68
71
|
// Load actions for the node.
|
|
69
72
|
if (node) {
|
|
70
|
-
void
|
|
73
|
+
void Graph.expand(graph, node.id);
|
|
71
74
|
}
|
|
72
75
|
});
|
|
73
76
|
|
|
@@ -96,60 +99,53 @@ export const PlankHeading = memo(
|
|
|
96
99
|
} else {
|
|
97
100
|
return [
|
|
98
101
|
actions,
|
|
99
|
-
graph
|
|
100
|
-
.
|
|
101
|
-
|
|
102
|
+
Graph.getActions(graph, node.id).filter((a) =>
|
|
103
|
+
['list-item', 'list-item-primary', 'heading-list-item'].includes(a.properties.disposition),
|
|
104
|
+
),
|
|
102
105
|
].filter((a) => a.length > 0);
|
|
103
106
|
}
|
|
104
107
|
}, [actions, node, variant, graph]);
|
|
105
108
|
|
|
106
109
|
const handleAction = useCallback(
|
|
107
110
|
(action: StackItemSigilAction) => {
|
|
108
|
-
typeof action.data === 'function'
|
|
111
|
+
if (typeof action.data === 'function') {
|
|
112
|
+
void runAction(action as Node.Action, { parent: node, caller: meta.id });
|
|
113
|
+
}
|
|
109
114
|
},
|
|
110
|
-
[node],
|
|
115
|
+
[node, runAction],
|
|
111
116
|
);
|
|
112
117
|
|
|
113
118
|
const handlePlankAction = useCallback(
|
|
114
|
-
(eventType:
|
|
119
|
+
(eventType: DeckOperation.PartAdjustment) => {
|
|
115
120
|
if (eventType.startsWith('solo')) {
|
|
116
|
-
return
|
|
121
|
+
return invokePromise(DeckOperation.Adjust, { type: eventType, id });
|
|
117
122
|
} else if (eventType === 'close') {
|
|
118
123
|
if (part === 'complementary') {
|
|
119
|
-
return
|
|
120
|
-
createIntent(LayoutAction.UpdateComplementary, {
|
|
121
|
-
part: 'complementary',
|
|
122
|
-
options: { state: 'collapsed' },
|
|
123
|
-
}),
|
|
124
|
-
);
|
|
124
|
+
return invokeSync(Common.LayoutOperation.UpdateComplementary, { state: 'collapsed' });
|
|
125
125
|
} else {
|
|
126
|
-
return
|
|
127
|
-
createIntent(LayoutAction.Close, { part: 'main', subject: [id], options: { state: false } }),
|
|
128
|
-
);
|
|
126
|
+
return invokeSync(Common.LayoutOperation.Close, { subject: [id] });
|
|
129
127
|
}
|
|
130
128
|
} else {
|
|
131
|
-
return
|
|
129
|
+
return invokePromise(DeckOperation.Adjust, { type: eventType, id });
|
|
132
130
|
}
|
|
133
131
|
},
|
|
134
|
-
[
|
|
132
|
+
[invokePromise, invokeSync, id, part],
|
|
135
133
|
);
|
|
136
134
|
|
|
137
|
-
const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${
|
|
135
|
+
const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${meta.id}/${node.id}` ? Popover.Anchor : Fragment;
|
|
138
136
|
|
|
139
137
|
const handleTabClick = useCallback(
|
|
140
138
|
(event: MouseEvent) => {
|
|
141
139
|
const target = (event.target as HTMLElement).closest('[data-id]') as HTMLElement | null;
|
|
142
140
|
const tabId = target?.dataset?.id;
|
|
143
141
|
if (primaryId && tabId) {
|
|
144
|
-
void
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}),
|
|
149
|
-
);
|
|
142
|
+
void invokePromise(DeckOperation.ChangeCompanion, {
|
|
143
|
+
primary: primaryId,
|
|
144
|
+
companion: tabId,
|
|
145
|
+
});
|
|
150
146
|
}
|
|
151
147
|
},
|
|
152
|
-
[primaryId],
|
|
148
|
+
[primaryId, invokePromise],
|
|
153
149
|
);
|
|
154
150
|
|
|
155
151
|
return (
|
|
@@ -161,7 +157,8 @@ export const PlankHeading = memo(
|
|
|
161
157
|
? [
|
|
162
158
|
hoverableControls,
|
|
163
159
|
hoverableFocusedWithinControls,
|
|
164
|
-
'*:transition-opacity *:opacity-[--controls-opacity] bg-transparent border-transparent transition-[background-color,border-color]
|
|
160
|
+
'*:transition-opacity *:opacity-[--controls-opacity] bg-transparent border-transparent transition-[background-color,border-color]',
|
|
161
|
+
'hover-hover:hover:bg-headerSurface focus-within:bg-headerSurface hover-hover:hover:border-subduedSeparator focus-within:border-subduedSeparator',
|
|
165
162
|
]
|
|
166
163
|
: []),
|
|
167
164
|
]}
|
|
@@ -177,7 +174,6 @@ export const PlankHeading = memo(
|
|
|
177
174
|
icon={icon}
|
|
178
175
|
iconOnly={companions.length > MAX_COMPANIONS && node?.id !== id}
|
|
179
176
|
label={toLocalizedString(label, t)}
|
|
180
|
-
size={5}
|
|
181
177
|
variant={node?.id === id ? 'primary' : 'ghost'}
|
|
182
178
|
onClick={handleTabClick}
|
|
183
179
|
/>
|
|
@@ -200,7 +196,7 @@ export const PlankHeading = memo(
|
|
|
200
196
|
) : (
|
|
201
197
|
<StackItem.SigilButton>
|
|
202
198
|
<span className='sr-only'>{label}</span>
|
|
203
|
-
<Icon icon={icon}
|
|
199
|
+
<Icon icon={icon} />
|
|
204
200
|
</StackItem.SigilButton>
|
|
205
201
|
)}
|
|
206
202
|
</ActionRoot>
|