@dxos/react-ui-stack 0.7.5-labs.e27f9b9 → 0.7.5-main.2567c87
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/index.mjs +49 -54
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +49 -54
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +49 -54
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/StackItem.d.ts +0 -1
- package/dist/types/src/components/StackItem.d.ts.map +1 -1
- package/dist/types/src/components/StackItemContent.d.ts.map +1 -1
- package/dist/types/src/components/StackItemResizeHandle.d.ts.map +1 -1
- package/dist/types/src/components/StackItemSigil.d.ts.map +1 -1
- package/package.json +27 -27
- package/src/components/StackItem.tsx +9 -19
- package/src/components/StackItemContent.tsx +0 -2
- package/src/components/StackItemHeading.tsx +1 -1
- package/src/components/StackItemResizeHandle.tsx +9 -20
- package/src/components/StackItemSigil.tsx +103 -90
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytes":3091,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytes":13994,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytes":5528,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx":{"bytes":2101,"imports":[{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx":{"bytes":5758,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx":{"bytes":16102,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"packages/ui/react-ui-stack/src/components/StackItem.tsx","kind":"import-statement","original":"./StackItem"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx":{"bytes":3282,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/translations.ts":{"bytes":1870,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytes":18750,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx","kind":"import-statement","original":"./MenuSignifier"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem.tsx":{"bytes":23131,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"packages/ui/react-ui-stack/src/components/StackItemContent.tsx","kind":"import-statement","original":"./StackItemContent"},{"path":"packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx","kind":"import-statement","original":"./StackItemDragHandle"},{"path":"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx","kind":"import-statement","original":"./StackItemHeading"},{"path":"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx","kind":"import-statement","original":"./StackItemResizeHandle"},{"path":"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx","kind":"import-statement","original":"./StackItemSigil"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/LayoutControls.tsx":{"bytes":11653,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/index.ts":{"bytes":801,"imports":[{"path":"packages/ui/react-ui-stack/src/components/Stack.tsx","kind":"import-statement","original":"./Stack"},{"path":"packages/ui/react-ui-stack/src/components/StackItem.tsx","kind":"import-statement","original":"./StackItem"},{"path":"packages/ui/react-ui-stack/src/components/LayoutControls.tsx","kind":"import-statement","original":"./LayoutControls"},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/index.ts":{"bytes":718,"imports":[{"path":"packages/ui/react-ui-stack/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytes":7183,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytes":519,"imports":[{"path":"packages/ui/react-ui-stack/src/testing/stack-manager.ts","kind":"import-statement","original":"./stack-manager"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-stack/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":54976},"packages/ui/react-ui-stack/dist/lib/browser/index.mjs":{"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["DEFAULT_EXTRINSIC_SIZE","DEFAULT_HORIZONTAL_SIZE","DEFAULT_VERTICAL_SIZE","LayoutControls","Stack","StackContext","StackItem","StackItemContext","railGridHorizontal","railGridVertical","translations","useStack","useStackItem"],"entryPoint":"packages/ui/react-ui-stack/src/index.ts","inputs":{"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytesInOutput":3397},"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytesInOutput":408},"packages/ui/react-ui-stack/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/StackItem.tsx":{"bytesInOutput":5405},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytesInOutput":850},"packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx":{"bytesInOutput":335},"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx":{"bytesInOutput":1286},"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx":{"bytesInOutput":4101},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytesInOutput":4540},"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx":{"bytesInOutput":442},"packages/ui/react-ui-stack/src/translations.ts":{"bytesInOutput":444},"packages/ui/react-ui-stack/src/components/LayoutControls.tsx":{"bytesInOutput":3014},"packages/ui/react-ui-stack/src/index.ts":{"bytesInOutput":0}},"bytes":25412},"packages/ui/react-ui-stack/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3597},"packages/ui/react-ui-stack/dist/lib/browser/testing/index.mjs":{"imports":[],"exports":["SectionManager","StackManager"],"entryPoint":"packages/ui/react-ui-stack/src/testing/index.ts","inputs":{"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytesInOutput":1516},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytesInOutput":0}},"bytes":1655}}}
|
|
1
|
+
{"inputs":{"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytes":3091,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytes":13994,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytes":5524,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx":{"bytes":2101,"imports":[{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx":{"bytes":5758,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx":{"bytes":14876,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"packages/ui/react-ui-stack/src/components/StackItem.tsx","kind":"import-statement","original":"./StackItem"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx":{"bytes":3282,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/translations.ts":{"bytes":1870,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytes":20057,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx","kind":"import-statement","original":"./MenuSignifier"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem.tsx":{"bytes":21446,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"packages/ui/react-ui-stack/src/components/StackItemContent.tsx","kind":"import-statement","original":"./StackItemContent"},{"path":"packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx","kind":"import-statement","original":"./StackItemDragHandle"},{"path":"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx","kind":"import-statement","original":"./StackItemHeading"},{"path":"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx","kind":"import-statement","original":"./StackItemResizeHandle"},{"path":"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx","kind":"import-statement","original":"./StackItemSigil"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/LayoutControls.tsx":{"bytes":11653,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/index.ts":{"bytes":801,"imports":[{"path":"packages/ui/react-ui-stack/src/components/Stack.tsx","kind":"import-statement","original":"./Stack"},{"path":"packages/ui/react-ui-stack/src/components/StackItem.tsx","kind":"import-statement","original":"./StackItem"},{"path":"packages/ui/react-ui-stack/src/components/LayoutControls.tsx","kind":"import-statement","original":"./LayoutControls"},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/index.ts":{"bytes":718,"imports":[{"path":"packages/ui/react-ui-stack/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytes":7183,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytes":519,"imports":[{"path":"packages/ui/react-ui-stack/src/testing/stack-manager.ts","kind":"import-statement","original":"./stack-manager"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-stack/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":54279},"packages/ui/react-ui-stack/dist/lib/browser/index.mjs":{"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["DEFAULT_EXTRINSIC_SIZE","DEFAULT_HORIZONTAL_SIZE","DEFAULT_VERTICAL_SIZE","LayoutControls","Stack","StackContext","StackItem","StackItemContext","railGridHorizontal","railGridVertical","translations","useStack","useStackItem"],"entryPoint":"packages/ui/react-ui-stack/src/index.ts","inputs":{"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytesInOutput":3397},"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytesInOutput":408},"packages/ui/react-ui-stack/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/StackItem.tsx":{"bytesInOutput":5094},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytesInOutput":850},"packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx":{"bytesInOutput":335},"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx":{"bytesInOutput":1286},"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx":{"bytesInOutput":3762},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytesInOutput":4883},"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx":{"bytesInOutput":442},"packages/ui/react-ui-stack/src/translations.ts":{"bytesInOutput":444},"packages/ui/react-ui-stack/src/components/LayoutControls.tsx":{"bytesInOutput":3030},"packages/ui/react-ui-stack/src/index.ts":{"bytesInOutput":0}},"bytes":25121},"packages/ui/react-ui-stack/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3597},"packages/ui/react-ui-stack/dist/lib/browser/testing/index.mjs":{"imports":[],"exports":["SectionManager","StackManager"],"entryPoint":"packages/ui/react-ui-stack/src/testing/index.ts","inputs":{"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytesInOutput":1516},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytesInOutput":0}},"bytes":1655}}}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -53,8 +53,8 @@ var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
|
53
53
|
var import_react2 = require("react");
|
|
54
54
|
var import_combine = require("@atlaskit/pragmatic-drag-and-drop/combine");
|
|
55
55
|
var import_adapter2 = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
|
|
56
|
-
var
|
|
57
|
-
var
|
|
56
|
+
var import_disable_native_drag_preview = require("@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview");
|
|
57
|
+
var import_prevent_unhandled = require("@atlaskit/pragmatic-drag-and-drop/prevent-unhandled");
|
|
58
58
|
var import_closest_edge2 = require("@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge");
|
|
59
59
|
var import_react_tabster2 = require("@fluentui/react-tabster");
|
|
60
60
|
var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
|
|
@@ -70,8 +70,8 @@ var import_react6 = __toESM(require("react"));
|
|
|
70
70
|
var import_react_ui_attention = require("@dxos/react-ui-attention");
|
|
71
71
|
var import_react_ui_theme4 = require("@dxos/react-ui-theme");
|
|
72
72
|
var import_adapter3 = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
|
|
73
|
-
var
|
|
74
|
-
var
|
|
73
|
+
var import_disable_native_drag_preview2 = require("@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview");
|
|
74
|
+
var import_prevent_unhandled2 = require("@atlaskit/pragmatic-drag-and-drop/prevent-unhandled");
|
|
75
75
|
var import_react7 = __toESM(require("react"));
|
|
76
76
|
var import_react_ui_theme5 = require("@dxos/react-ui-theme");
|
|
77
77
|
var import_react8 = __toESM(require("react"));
|
|
@@ -208,7 +208,7 @@ var StackItemHeading = ({ children, classNames, ...props }) => {
|
|
|
208
208
|
...props,
|
|
209
209
|
tabIndex: 0,
|
|
210
210
|
...focusableGroupAttrs,
|
|
211
|
-
className: (0, import_react_ui_theme4.mx)("flex items-center
|
|
211
|
+
className: (0, import_react_ui_theme4.mx)("flex items-center ch-focus-ring-inset-over-all relative !border-is-0", orientation === "horizontal" ? "bs-[--rail-size]" : "is-[--rail-size] flex-col", classNames)
|
|
212
212
|
}, children);
|
|
213
213
|
};
|
|
214
214
|
var StackItemHeadingLabel = /* @__PURE__ */ (0, import_react6.forwardRef)(({ attendableId, related, classNames, ...props }, forwardedRef) => {
|
|
@@ -221,8 +221,7 @@ var StackItemHeadingLabel = /* @__PURE__ */ (0, import_react6.forwardRef)(({ att
|
|
|
221
221
|
});
|
|
222
222
|
});
|
|
223
223
|
var REM = parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
224
|
-
var
|
|
225
|
-
var MIN_HEIGHT = 3;
|
|
224
|
+
var MIN_SIZE = 20;
|
|
226
225
|
var measureStackItem = (element) => {
|
|
227
226
|
const stackItemElement = element.closest("[data-dx-stack-item]");
|
|
228
227
|
return stackItemElement?.getBoundingClientRect() ?? {
|
|
@@ -231,7 +230,7 @@ var measureStackItem = (element) => {
|
|
|
231
230
|
};
|
|
232
231
|
};
|
|
233
232
|
var getNextSize = (startSize, location, client) => {
|
|
234
|
-
return Math.max(
|
|
233
|
+
return Math.max(MIN_SIZE, startSize + (location.current.input[client] - location.initial.input[client]) / REM);
|
|
235
234
|
};
|
|
236
235
|
var StackItemResizeHandle = () => {
|
|
237
236
|
const { orientation } = useStack();
|
|
@@ -246,10 +245,10 @@ var StackItemResizeHandle = () => {
|
|
|
246
245
|
(0, import_adapter3.draggable)({
|
|
247
246
|
element: buttonRef.current,
|
|
248
247
|
onGenerateDragPreview: ({ nativeSetDragImage }) => {
|
|
249
|
-
(0,
|
|
248
|
+
(0, import_disable_native_drag_preview2.disableNativeDragPreview)({
|
|
250
249
|
nativeSetDragImage
|
|
251
250
|
});
|
|
252
|
-
|
|
251
|
+
import_prevent_unhandled2.preventUnhandled.start();
|
|
253
252
|
},
|
|
254
253
|
onDragStart: () => {
|
|
255
254
|
dragStartSize.current = dragStartSize.current === "min-content" ? measureStackItem(buttonRef.current)[orientation === "horizontal" ? "width" : "height"] / REM : dragStartSize.current;
|
|
@@ -272,20 +271,18 @@ var StackItemResizeHandle = () => {
|
|
|
272
271
|
}, []);
|
|
273
272
|
return /* @__PURE__ */ import_react7.default.createElement("button", {
|
|
274
273
|
ref: buttonRef,
|
|
275
|
-
className: (0, import_react_ui_theme5.mx)(
|
|
274
|
+
className: (0, import_react_ui_theme5.mx)(orientation === "horizontal" ? "cursor-col-resize" : "cursor-row-resize", "group absolute is-3 bs-full inline-end-[-1px] !border-lb-0", "before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100", "before:absolute before:block before:inset-block-0 before:inline-end-0 before:is-1 before:bg-accentFocusIndicator")
|
|
276
275
|
}, /* @__PURE__ */ import_react7.default.createElement("div", {
|
|
277
276
|
role: "none",
|
|
278
|
-
className:
|
|
279
|
-
}, /* @__PURE__ */ import_react7.default.createElement(DragHandleSignifier,
|
|
280
|
-
orientation
|
|
281
|
-
})));
|
|
277
|
+
className: "absolute block-start-0 inline-end-[1px] bs-[--rail-size] flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0"
|
|
278
|
+
}, /* @__PURE__ */ import_react7.default.createElement(DragHandleSignifier, null)));
|
|
282
279
|
};
|
|
283
|
-
var DragHandleSignifier = (
|
|
280
|
+
var DragHandleSignifier = () => {
|
|
284
281
|
return /* @__PURE__ */ import_react7.default.createElement("svg", {
|
|
285
282
|
xmlns: "http://www.w3.org/2000/svg",
|
|
286
283
|
viewBox: "0 0 256 256",
|
|
287
284
|
fill: "currentColor",
|
|
288
|
-
className:
|
|
285
|
+
className: "shrink-0 bs-[1em] is-[1em] text-unAccent"
|
|
289
286
|
}, /* @__PURE__ */ import_react7.default.createElement("path", {
|
|
290
287
|
d: "M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z"
|
|
291
288
|
}), /* @__PURE__ */ import_react7.default.createElement("path", {
|
|
@@ -336,7 +333,7 @@ var StackItemSigilButton = /* @__PURE__ */ (0, import_react8.forwardRef)(({ atte
|
|
|
336
333
|
...props,
|
|
337
334
|
variant,
|
|
338
335
|
classNames: [
|
|
339
|
-
"shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative
|
|
336
|
+
"shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative",
|
|
340
337
|
classNames
|
|
341
338
|
],
|
|
342
339
|
ref: forwardedRef
|
|
@@ -346,23 +343,18 @@ var StackItemSigil = /* @__PURE__ */ (0, import_react8.forwardRef)(({ actions: a
|
|
|
346
343
|
const { t } = (0, import_react_ui3.useTranslation)(translationKey);
|
|
347
344
|
const suppressNextTooltip = (0, import_react8.useRef)(false);
|
|
348
345
|
const [optionsMenuOpen, setOptionsMenuOpen] = (0, import_react8.useState)(false);
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
}));
|
|
362
|
-
if (!hasActions) {
|
|
363
|
-
return button;
|
|
364
|
-
}
|
|
365
|
-
return /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Root, {
|
|
346
|
+
const [triggerTooltipOpen, setTriggerTooltipOpen] = (0, import_react8.useState)(false);
|
|
347
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Tooltip.Root, {
|
|
348
|
+
open: triggerTooltipOpen,
|
|
349
|
+
onOpenChange: (nextOpen) => {
|
|
350
|
+
if (suppressNextTooltip.current) {
|
|
351
|
+
setTriggerTooltipOpen(false);
|
|
352
|
+
suppressNextTooltip.current = false;
|
|
353
|
+
} else {
|
|
354
|
+
setTriggerTooltipOpen(nextOpen);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Root, {
|
|
366
358
|
open: optionsMenuOpen,
|
|
367
359
|
onOpenChange: (nextOpen) => {
|
|
368
360
|
if (!nextOpen) {
|
|
@@ -370,10 +362,20 @@ var StackItemSigil = /* @__PURE__ */ (0, import_react8.forwardRef)(({ actions: a
|
|
|
370
362
|
}
|
|
371
363
|
return setOptionsMenuOpen(nextOpen);
|
|
372
364
|
}
|
|
365
|
+
}, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Tooltip.Trigger, {
|
|
366
|
+
asChild: true
|
|
373
367
|
}, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Trigger, {
|
|
374
368
|
asChild: true,
|
|
375
369
|
ref: forwardedRef
|
|
376
|
-
},
|
|
370
|
+
}, /* @__PURE__ */ import_react8.default.createElement(StackItemSigilButton, {
|
|
371
|
+
attendableId,
|
|
372
|
+
related
|
|
373
|
+
}, /* @__PURE__ */ import_react8.default.createElement("span", {
|
|
374
|
+
className: "sr-only"
|
|
375
|
+
}, triggerLabel), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Icon, {
|
|
376
|
+
icon,
|
|
377
|
+
size: 5
|
|
378
|
+
})))), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Portal, null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Content, {
|
|
377
379
|
classNames: "z-[31]"
|
|
378
380
|
}, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Viewport, null, actionGroups?.map((actions, index) => {
|
|
379
381
|
const separator = index > 0 ? /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Separator, null) : null;
|
|
@@ -414,12 +416,14 @@ var StackItemSigil = /* @__PURE__ */ (0, import_react8.forwardRef)(({ actions: a
|
|
|
414
416
|
className: (0, import_react_ui_theme6.mx)("shrink-0", import_react_ui_theme6.descriptionText)
|
|
415
417
|
}, (0, import_keyboard.keySymbols)(shortcut).join("")));
|
|
416
418
|
}));
|
|
417
|
-
}), children), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Arrow, null))))
|
|
419
|
+
}), children), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Arrow, null)))), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Tooltip.Portal, null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Tooltip.Content, {
|
|
420
|
+
side: "bottom"
|
|
421
|
+
}, triggerLabel, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Tooltip.Arrow, null))));
|
|
418
422
|
});
|
|
419
423
|
var DEFAULT_HORIZONTAL_SIZE = 44;
|
|
420
424
|
var DEFAULT_VERTICAL_SIZE = "min-content";
|
|
421
425
|
var DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE;
|
|
422
|
-
var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, children, classNames, size: propsSize, onSizeChange, role, order, style,
|
|
426
|
+
var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, ...props }, forwardedRef) => {
|
|
423
427
|
const [itemElement, itemRef] = (0, import_react3.useState)(null);
|
|
424
428
|
const [selfDragHandleElement, selfDragHandleRef] = (0, import_react3.useState)(null);
|
|
425
429
|
const [closestEdge, setEdge] = (0, import_react3.useState)(null);
|
|
@@ -437,7 +441,7 @@ var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, child
|
|
|
437
441
|
]);
|
|
438
442
|
const type = orientation === "horizontal" ? "column" : "card";
|
|
439
443
|
(0, import_react3.useLayoutEffect)(() => {
|
|
440
|
-
if (!itemElement || !onRearrange
|
|
444
|
+
if (!itemElement || !onRearrange) {
|
|
441
445
|
return;
|
|
442
446
|
}
|
|
443
447
|
return (0, import_combine.combine)((0, import_adapter2.draggable)({
|
|
@@ -449,21 +453,12 @@ var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, child
|
|
|
449
453
|
id: item.id,
|
|
450
454
|
type
|
|
451
455
|
}),
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
(0,
|
|
455
|
-
|
|
456
|
-
});
|
|
457
|
-
const { x, y } = (0, import_preserve_offset_on_source.preserveOffsetOnSource)({
|
|
458
|
-
element: source.element,
|
|
459
|
-
input: location.current.input
|
|
460
|
-
})({
|
|
461
|
-
container: source.element.offsetParent ?? document.body
|
|
456
|
+
// TODO(thure): tabster focus honeypots are causing the preview to render with the wrong dimensions; what do?
|
|
457
|
+
onGenerateDragPreview: ({ nativeSetDragImage }) => {
|
|
458
|
+
(0, import_disable_native_drag_preview.disableNativeDragPreview)({
|
|
459
|
+
nativeSetDragImage
|
|
462
460
|
});
|
|
463
|
-
|
|
464
|
-
},
|
|
465
|
-
onDragStart: () => {
|
|
466
|
-
document.body.removeAttribute("data-drag-preview");
|
|
461
|
+
import_prevent_unhandled.preventUnhandled.start();
|
|
467
462
|
}
|
|
468
463
|
}), (0, import_adapter2.dropTargetForElements)({
|
|
469
464
|
element: itemElement,
|
|
@@ -521,7 +516,7 @@ var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, child
|
|
|
521
516
|
...props,
|
|
522
517
|
tabIndex: 0,
|
|
523
518
|
...focusGroupAttrs,
|
|
524
|
-
className: (0, import_react_ui_theme2.mx)("group/stack-item grid relative
|
|
519
|
+
className: (0, import_react_ui_theme2.mx)("group/stack-item grid relative ch-focus-ring-inset-over-all", size === "min-content" && (orientation === "horizontal" ? "is-min" : "bs-min"), orientation === "horizontal" ? "grid-rows-subgrid" : "grid-cols-subgrid", rail && (orientation === "horizontal" ? "row-span-2" : "col-span-2"), classNames),
|
|
525
520
|
"data-dx-stack-item": true,
|
|
526
521
|
style: {
|
|
527
522
|
...size !== "min-content" && {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/Stack.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackItem.tsx", "../../../src/components/StackItemContent.tsx", "../../../src/components/StackItemDragHandle.tsx", "../../../src/components/StackItemHeading.tsx", "../../../src/components/StackItemResizeHandle.tsx", "../../../src/components/StackItemSigil.tsx", "../../../src/components/MenuSignifier.tsx", "../../../src/translations.ts", "../../../src/components/LayoutControls.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { attachClosestEdge, extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n Children,\n type CSSProperties,\n type ComponentPropsWithRef,\n forwardRef,\n useLayoutEffect,\n useState,\n} from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type StackContextValue, StackContext, type StackItemData } from './StackContext';\n\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Size = 'intrinsic' | 'contain';\n\nexport type StackProps = Omit<ThemedClassName<ComponentPropsWithRef<'div'>>, 'aria-orientation'> &\n Partial<StackContextValue> & { itemsCount?: number };\n\nexport const railGridHorizontal = 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const railGridVertical = 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n children,\n classNames,\n style,\n orientation = 'vertical',\n rail = true,\n size = 'intrinsic',\n onRearrange,\n itemsCount = Children.count(children),\n ...props\n },\n forwardedRef,\n ) => {\n const [stackElement, stackRef] = useState<HTMLDivElement | null>(null);\n const composedItemRef = composeRefs<HTMLDivElement>(stackRef, forwardedRef);\n const [dropping, setDropping] = useState(false);\n\n const arrowNavigationGroup = useArrowNavigationGroup({ axis: orientation });\n\n const styles: CSSProperties = {\n [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']: `repeat(${itemsCount}, min-content)`,\n ...style,\n };\n\n const selfDroppable = !!(itemsCount < 1 && onRearrange && props.id);\n\n useLayoutEffect(() => {\n if (!stackElement || !selfDroppable) {\n return;\n }\n const acceptSourceType = orientation === 'horizontal' ? 'column' : 'card';\n return dropTargetForElements({\n element: stackElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: props.id, type: orientation === 'horizontal' ? 'card' : 'column' },\n { input, element, allowedEdges: [orientation === 'horizontal' ? 'left' : 'top'] },\n );\n },\n onDragEnter: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDrag: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDragLeave: () => setDropping(false),\n onDrop: ({ self, source }) => {\n setDropping(false);\n if (source.data.type === acceptSourceType && selfDroppable) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n });\n }, [stackElement, selfDroppable]);\n\n return (\n <StackContext.Provider value={{ orientation, rail, size, onRearrange }}>\n <div\n {...props}\n {...arrowNavigationGroup}\n className={mx(\n 'grid relative',\n rail\n ? orientation === 'horizontal'\n ? railGridHorizontal\n : railGridVertical\n : orientation === 'horizontal'\n ? 'grid-rows-1'\n : 'grid-cols-1',\n size === 'contain' &&\n (orientation === 'horizontal'\n ? 'overflow-x-auto min-bs-0 bs-full max-bs-full'\n : 'overflow-y-auto min-is-0 is-full max-is-full'),\n classNames,\n )}\n aria-orientation={orientation}\n style={styles}\n ref={composedItemRef}\n >\n {children}\n {selfDroppable && dropping && <ListItem.DropIndicator edge={orientation === 'horizontal' ? 'left' : 'top'} />}\n </div>\n </StackContext.Provider>\n );\n },\n);\n\nexport { StackContext };\nexport type { StackContextValue };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { createContext, useContext } from 'react';\n\nimport { type Orientation, type Size } from './Stack';\n\nexport type StackItemSize = number | 'min-content';\n\nexport type StackItemData = { id: string; type: 'column' | 'card' };\n\nexport type StackItemRearrangeHandler = (\n source: StackItemData,\n target: StackItemData,\n closestEdge: Edge | null,\n) => void;\n\nexport type StackContextValue = {\n orientation: Orientation;\n rail: boolean;\n size: Size;\n onRearrange?: StackItemRearrangeHandler;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n orientation: 'vertical',\n rail: true,\n size: 'intrinsic',\n});\n\nexport const useStack = () => useContext(StackContext);\n\nexport type StackItemContextValue = {\n selfDragHandleRef: (element: HTMLDivElement | null) => void;\n size: StackItemSize;\n setSize: (nextSize: StackItemSize, commit?: boolean) => void;\n};\n\nexport const StackItemContext = createContext<StackItemContextValue>({\n selfDragHandleRef: () => {},\n size: 'min-content',\n setSize: () => {},\n});\n\nexport const useStackItem = () => useContext(StackItemContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { scrollJustEnoughIntoView } from '@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view';\nimport {\n attachClosestEdge,\n extractClosestEdge,\n type Edge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, { forwardRef, useLayoutEffect, useState, type ComponentPropsWithRef, useCallback } from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, StackItemContext, type StackItemSize, type StackItemData } from './StackContext';\nimport { StackItemContent, type StackItemContentProps } from './StackItemContent';\nimport { StackItemDragHandle, type StackItemDragHandleProps } from './StackItemDragHandle';\nimport {\n StackItemHeading,\n StackItemHeadingLabel,\n type StackItemHeadingProps,\n type StackItemHeadingLabelProps,\n} from './StackItemHeading';\nimport { StackItemResizeHandle, type StackItemResizeHandleProps } from './StackItemResizeHandle';\nimport {\n StackItemSigil,\n type StackItemSigilProps,\n type StackItemSigilAction,\n type StackItemSigilButtonProps,\n StackItemSigilButton,\n} from './StackItemSigil';\n\nexport const DEFAULT_HORIZONTAL_SIZE = 44 satisfies StackItemSize;\nexport const DEFAULT_VERTICAL_SIZE = 'min-content' satisfies StackItemSize;\nexport const DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE satisfies StackItemSize;\n\nexport type StackItemRootProps = ThemedClassName<ComponentPropsWithRef<'div'>> & {\n item: Omit<StackItemData, 'type'>;\n order?: number;\n size?: StackItemSize;\n onSizeChange?: (nextSize: StackItemSize) => void;\n role?: 'article' | 'section';\n disableRearrange?: boolean;\n};\n\nconst StackItemRoot = forwardRef<HTMLDivElement, StackItemRootProps>(\n (\n { item, children, classNames, size: propsSize, onSizeChange, role, order, style, disableRearrange, ...props },\n forwardedRef,\n ) => {\n const [itemElement, itemRef] = useState<HTMLDivElement | null>(null);\n const [selfDragHandleElement, selfDragHandleRef] = useState<HTMLDivElement | null>(null);\n const [closestEdge, setEdge] = useState<Edge | null>(null);\n const { orientation, rail, onRearrange } = useStack();\n const [size = orientation === 'horizontal' ? DEFAULT_HORIZONTAL_SIZE : DEFAULT_VERTICAL_SIZE, setInternalSize] =\n useState(propsSize);\n\n const Root = role ?? 'div';\n\n const composedItemRef = composeRefs<HTMLDivElement>(itemRef, forwardedRef);\n\n const setSize = useCallback(\n (nextSize: StackItemSize, commit?: boolean) => {\n setInternalSize(nextSize);\n if (commit) {\n onSizeChange?.(nextSize);\n }\n },\n [onSizeChange],\n );\n\n const type = orientation === 'horizontal' ? 'column' : 'card';\n\n useLayoutEffect(() => {\n if (!itemElement || !onRearrange || disableRearrange) {\n return;\n }\n return combine(\n draggable({\n element: itemElement,\n ...(selfDragHandleElement && { dragHandle: selfDragHandleElement }),\n getInitialData: () => ({ id: item.id, type }),\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n document.body.setAttribute('data-drag-preview', 'true');\n scrollJustEnoughIntoView({ element: source.element });\n const { x, y } = preserveOffsetOnSource({ element: source.element, input: location.current.input })({\n container: (source.element.offsetParent ?? document.body) as HTMLElement,\n });\n nativeSetDragImage?.(source.element, x, y);\n },\n onDragStart: () => {\n document.body.removeAttribute('data-drag-preview');\n },\n }),\n dropTargetForElements({\n element: itemElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: item.id, type },\n { input, element, allowedEdges: orientation === 'horizontal' ? ['left', 'right'] : ['top', 'bottom'] },\n );\n },\n onDragEnter: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDragLeave: () => setEdge(null),\n onDrop: ({ self, source }) => {\n setEdge(null);\n if (source.data.type === self.data.type) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n }),\n );\n }, [orientation, item, onRearrange, selfDragHandleElement, itemElement]);\n\n const focusGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <StackItemContext.Provider value={{ selfDragHandleRef, size, setSize }}>\n <Root\n {...props}\n tabIndex={0}\n {...focusGroupAttrs}\n className={mx(\n 'group/stack-item grid relative dx-focus-ring-inset-over-all',\n size === 'min-content' && (orientation === 'horizontal' ? 'is-min' : 'bs-min'),\n orientation === 'horizontal' ? 'grid-rows-subgrid' : 'grid-cols-subgrid',\n rail && (orientation === 'horizontal' ? 'row-span-2' : 'col-span-2'),\n classNames,\n )}\n data-dx-stack-item\n style={{\n ...(size !== 'min-content' && {\n [orientation === 'horizontal' ? 'inlineSize' : 'blockSize']: `${size}rem`,\n }),\n ...(Number.isFinite(order) && {\n [orientation === 'horizontal' ? 'gridColumn' : 'gridRow']: `${order}`,\n }),\n ...style,\n }}\n ref={composedItemRef}\n >\n {children}\n {closestEdge && <ListItem.DropIndicator edge={closestEdge} />}\n </Root>\n </StackItemContext.Provider>\n );\n },\n);\n\nexport const StackItem = {\n Root: StackItemRoot,\n Content: StackItemContent,\n Heading: StackItemHeading,\n HeadingLabel: StackItemHeadingLabel,\n ResizeHandle: StackItemResizeHandle,\n DragHandle: StackItemDragHandle,\n Sigil: StackItemSigil,\n SigilButton: StackItemSigilButton,\n};\n\nexport type {\n StackItemContentProps,\n StackItemHeadingProps,\n StackItemHeadingLabelProps,\n StackItemResizeHandleProps,\n StackItemDragHandleProps,\n StackItemSigilProps,\n StackItemSigilButtonProps,\n StackItemSigilAction,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef, forwardRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack } from './StackContext';\n\nexport type StackItemContentProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {\n /**\n * This flag is required in order to clarify a developer experience that seemed like it needed extra boilerplate\n * (`row-span-2`) or was buggy. See the description of the StackItem.Content component itself for more information.\n */\n toolbar: boolean;\n\n /**\n * Whether to provide for the layout of a statusbar after the content.\n */\n statusbar?: boolean;\n\n /**\n * Whether to set a certain aspect ratio on the content, including the toolbar and statusbar. This is provided for\n * convenience and consistency; it can instead be specified by the `classNames` or `style` props as needed.\n */\n size?: 'intrinsic' | 'video' | 'square';\n};\n\n/**\n * This component should be used by plugins for rendering content within a stack item, a.k.a. a “plank” or “section”.\n * The `toolbar` flag must be provided since this component provides for the layout of content with the toolbar.\n */\nexport const StackItemContent = forwardRef<HTMLDivElement, StackItemContentProps>(\n ({ children, toolbar, statusbar, classNames, size = 'intrinsic', ...props }, forwardedRef) => {\n const { size: stackItemSize } = useStack();\n\n return (\n <div\n role='none'\n {...props}\n className={mx(\n 'group grid grid-cols-[100%]',\n stackItemSize === 'contain' && 'min-bs-0 overflow-hidden',\n size === 'video' ? 'aspect-video' : size === 'square' && 'aspect-square',\n classNames,\n )}\n style={{\n gridTemplateRows: [\n ...(toolbar ? ['var(--rail-action)'] : []),\n '1fr',\n ...(statusbar ? ['var(--statusbar-size)'] : []),\n ].join(' '),\n }}\n ref={forwardedRef}\n >\n {children}\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nimport { useStackItem } from './StackContext';\n\nexport type StackItemDragHandleProps = ComponentPropsWithoutRef<'button'> & { asChild: boolean };\n\nexport const StackItemDragHandle = ({ asChild, children }: StackItemDragHandleProps) => {\n const { selfDragHandleRef } = useStackItem();\n\n const Root = asChild ? Slot : 'div';\n\n return (\n <Root ref={selfDragHandleRef} role='button'>\n {children}\n </Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport React, { type ComponentPropsWithoutRef, type ComponentPropsWithRef, forwardRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useAttention, type AttendableId, type Related } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack } from './StackContext';\n\nexport type StackItemHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;\n\nexport const StackItemHeading = ({ children, classNames, ...props }: StackItemHeadingProps) => {\n const { orientation } = useStack();\n const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n return (\n <div\n role='heading'\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'flex items-center dx-focus-ring-inset-over-all relative !border-is-0',\n orientation === 'horizontal' ? 'bs-[--rail-size]' : 'is-[--rail-size] flex-col',\n classNames,\n )}\n >\n {children}\n </div>\n );\n};\n\nexport type StackItemHeadingLabelProps = ThemedClassName<ComponentPropsWithRef<'h1'>> & AttendableId & Related;\n\nexport const StackItemHeadingLabel = forwardRef<HTMLHeadingElement, StackItemHeadingLabelProps>(\n ({ attendableId, related, classNames, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n return (\n <h1\n {...props}\n data-attention={((related && isRelated) || hasAttention || isAncestor).toString()}\n className={mx(\n 'pli-1 min-is-0 is-0 grow truncate font-medium text-baseText data-[attention=true]:text-accentText self-center',\n classNames,\n )}\n ref={forwardedRef}\n />\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport { type DragLocationHistory } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport React, { useLayoutEffect, useRef } from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, useStackItem, type StackItemSize } from './StackContext';\nimport { DEFAULT_EXTRINSIC_SIZE } from './StackItem';\n\nconst REM = parseFloat(getComputedStyle(document.documentElement).fontSize);\n\nconst MIN_WIDTH = 20;\nconst MIN_HEIGHT = 3;\n\nconst measureStackItem = (element: HTMLButtonElement): { width: number; height: number } => {\n const stackItemElement = element.closest('[data-dx-stack-item]');\n return stackItemElement?.getBoundingClientRect() ?? { width: DEFAULT_EXTRINSIC_SIZE, height: DEFAULT_EXTRINSIC_SIZE };\n};\n\nconst getNextSize = (startSize: number, location: DragLocationHistory, client: 'clientX' | 'clientY') => {\n return Math.max(\n client === 'clientX' ? MIN_WIDTH : MIN_HEIGHT,\n startSize + (location.current.input[client] - location.initial.input[client]) / REM,\n );\n};\n\nexport type StackItemResizeHandleProps = {};\n\nexport const StackItemResizeHandle = () => {\n const { orientation } = useStack();\n const { setSize, size } = useStackItem();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const dragStartSize = useRef<StackItemSize>(size);\n const client = orientation === 'horizontal' ? 'clientX' : 'clientY';\n\n useLayoutEffect(\n () => {\n if (!buttonRef.current || buttonRef.current.hasAttribute('draggable')) {\n return;\n }\n // TODO(thure): This should handle StackItem state vs local state better.\n draggable({\n element: buttonRef.current,\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n // We will be moving the line to indicate a drag; we can disable the native drag preview.\n disableNativeDragPreview({ nativeSetDragImage });\n // We don't want any native drop animation for when the user does not drop on a drop target.\n // We want the drag to finish immediately.\n preventUnhandled.start();\n },\n onDragStart: () => {\n dragStartSize.current =\n dragStartSize.current === 'min-content'\n ? measureStackItem(buttonRef.current!)[orientation === 'horizontal' ? 'width' : 'height'] / REM\n : dragStartSize.current;\n },\n onDrag: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n setSize(getNextSize(dragStartSize.current, location, client));\n },\n onDrop: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n const nextSize = getNextSize(dragStartSize.current, location, client);\n setSize(nextSize, true);\n dragStartSize.current = nextSize;\n },\n });\n },\n [\n // Note that `size` should not be a dependency here since dragging this adjusts the size.\n ],\n );\n\n return (\n <button\n ref={buttonRef}\n className={mx(\n 'group absolute',\n orientation === 'horizontal'\n ? 'cursor-col-resize is-3 bs-full inline-end-[-1px] !border-lb-0 before:inset-block-0 before:inline-end-0 before:is-1'\n : 'cursor-row-resize bs-3 is-full block-end-[-1px] !border-li-0 before:inset-inline-0 before:block-end-0 before:bs-1',\n 'before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100',\n 'before:absolute before:block before:bg-accentFocusIndicator',\n )}\n >\n <div\n role='none'\n className={mx(\n 'absolute flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0',\n orientation === 'horizontal'\n ? 'block-start-0 inline-end-px bs-[--rail-size]'\n : 'inline-start-0 block-end-px is-[--rail-size] flex justify-center',\n )}\n >\n <DragHandleSignifier orientation={orientation} />\n </div>\n </button>\n );\n};\n\nconst DragHandleSignifier = ({ orientation }: { orientation: 'horizontal' | 'vertical' }) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 256 256'\n fill='currentColor'\n className={mx('shrink-0 bs-[1em] is-[1em] text-unAccent', orientation === 'vertical' && 'rotate-90')}\n >\n {/* two pips: <path d='M256,120c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' /> */}\n <path d='M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,120c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,176c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n </svg>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, type PropsWithChildren, forwardRef, useRef, useState } from 'react';\n\nimport { type ActionLike } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport { Button, type ButtonProps, DropdownMenu, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type AttendableId, type Related, useAttention } from '@dxos/react-ui-attention';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { MenuSignifierHorizontal } from './MenuSignifier';\nimport { translationKey } from '../translations';\n\nexport type KeyBinding = {\n windows?: string;\n macos?: string;\n ios?: string;\n linux?: string;\n unknown?: string;\n};\n\nexport type StackItemSigilAction = Pick<ActionLike, 'id' | 'properties' | 'data'>;\n\nexport type StackItemSigilButtonProps = Omit<ButtonProps, 'variant'> & AttendableId & Related;\n\nexport const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigilButtonProps>(\n ({ attendableId, classNames, related, children, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n const variant = (related && isRelated) || hasAttention || isAncestor ? 'primary' : 'ghost';\n return (\n <Button\n {...props}\n variant={variant}\n classNames={['shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag', classNames]}\n ref={forwardedRef}\n >\n <MenuSignifierHorizontal />\n {children}\n </Button>\n );\n },\n);\n\nexport type StackItemSigilProps = PropsWithChildren<\n {\n attendableId?: string;\n triggerLabel: string;\n actions?: StackItemSigilAction[][];\n icon: string;\n onAction?: (action: StackItemSigilAction) => void;\n } & Related\n>;\n\nexport const StackItemSigil = forwardRef<HTMLButtonElement, StackItemSigilProps>(\n ({ actions: actionGroups, onAction, triggerLabel, attendableId, icon, related, children }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const suppressNextTooltip = useRef(false);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n\n const hasActions = actionGroups && actionGroups.length > 0;\n\n const button = (\n <StackItemSigilButton\n attendableId={attendableId}\n related={related}\n // TODO(wittjosiah): Better disabling of interactive styles when no action are available.\n // Remove underscore icon when no actions are available?\n classNames={!hasActions && 'cursor-default'}\n >\n <span className='sr-only'>{triggerLabel}</span>\n <Icon icon={icon} size={5} />\n </StackItemSigilButton>\n );\n\n if (!hasActions) {\n return button;\n }\n\n return (\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <DropdownMenu.Trigger asChild ref={forwardedRef}>\n {button}\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='z-[31]'>\n <DropdownMenu.Viewport>\n {actionGroups?.map((actions, index) => {\n const separator = index > 0 ? <DropdownMenu.Separator /> : null;\n return (\n <Fragment key={index}>\n {separator}\n {actions.map((action) => {\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n\n const menuItemType = action.properties.menuItemType;\n const Root = menuItemType === 'toggle' ? DropdownMenu.CheckboxItem : DropdownMenu.Item;\n\n return (\n <Root\n key={action.id}\n onClick={(event) => {\n if (action.properties.disabled) {\n return;\n }\n event.stopPropagation();\n // TODO(thure): Why does Dialog’s modal-ness cause issues if we don’t explicitly close the menu here?\n suppressNextTooltip.current = true;\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties.disabled}\n checked={menuItemType === 'toggle' ? action.properties.isChecked : undefined}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n <Icon icon={action.properties.icon ?? 'ph--placeholder--regular'} size={4} />\n <span className='grow truncate'>{toLocalizedString(action.properties.label ?? '', t)}</span>\n {menuItemType === 'toggle' && (\n <DropdownMenu.ItemIndicator asChild>\n <Icon icon='ph--check--regular' size={4} />\n </DropdownMenu.ItemIndicator>\n )}\n {shortcut && (\n <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>\n )}\n </Root>\n );\n })}\n </Fragment>\n );\n })}\n {children}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nexport const MenuSignifierHorizontal = () => (\n <svg\n className='absolute block-end-[7px]'\n width={20}\n height={2}\n viewBox='0 0 20 2'\n stroke='currentColor'\n opacity={0.5}\n >\n <line\n x1={0.5}\n y1={0.75}\n x2={19}\n y2={0.75}\n strokeWidth={1.25}\n strokeLinecap='round'\n strokeDasharray='6 20'\n strokeDashoffset='-6.5'\n />\n </svg>\n);\n\nexport const MenuSignifierVertical = () => (\n <svg className='absolute inline-start-1' width={2} height={18} viewBox='0 0 2 18' stroke='currentColor'>\n <line x1={1} y1={3} x2={1} y2={18} strokeWidth={1.5} strokeLinecap='round' strokeDasharray='0 6' />\n </svg>\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'stack';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'close label': 'Close',\n 'minify label': 'Minify',\n },\n },\n },\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef } from 'react';\n\nimport {\n Button,\n ButtonGroup,\n type ButtonGroupProps,\n type ButtonProps,\n Icon,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { translationKey } from '../translations';\n\nexport type LayoutControlEvent = 'solo' | 'close' | `${'pin' | 'increment'}-${'start' | 'end'}`;\nexport type LayoutControlHandler = (event: LayoutControlEvent) => void;\n\nexport type LayoutCapabilities = {\n incrementStart?: boolean;\n incrementEnd?: boolean;\n solo?: boolean;\n};\n\nexport type LayoutControlsProps = Omit<ButtonGroupProps, 'onClick'> & {\n onClick?: LayoutControlHandler;\n variant?: 'hide-disabled' | 'default';\n close?: boolean | 'minify-start' | 'minify-end';\n capabilities: LayoutCapabilities;\n isSolo?: boolean;\n pin?: 'start' | 'end' | 'both';\n};\n\nconst LayoutControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant='ghost' {...props}>\n <span className='sr-only'>{label}</span>\n <Icon icon={icon} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>{label}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport const LayoutControls = forwardRef<HTMLDivElement, LayoutControlsProps>(\n (\n { onClick, variant = 'default', capabilities: can, isSolo, pin, close = false, children, ...props },\n forwardedRef,\n ) => {\n const { t } = useTranslation(translationKey);\n const buttonClassNames = variant === 'hide-disabled' ? 'disabled:hidden !p-1' : '!p-1';\n\n return (\n <ButtonGroup {...props} ref={forwardedRef}>\n {pin && !isSolo && ['both', 'start'].includes(pin) && (\n <LayoutControl\n label={t('pin start label')}\n variant='ghost'\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-start')}\n icon='ph--caret-line-left--regular'\n />\n )}\n\n {can.solo && (\n <LayoutControl\n label={t('solo layout label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('solo')}\n icon={isSolo ? 'ph--arrows-in--regular' : 'ph--arrows-out--regular'}\n />\n )}\n\n {!isSolo && can.solo && (\n <>\n <LayoutControl\n label={t('increment start label')}\n disabled={!can.incrementStart}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-start')}\n icon='ph--caret-left--regular'\n />\n <LayoutControl\n label={t('increment end label')}\n disabled={!can.incrementEnd}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-end')}\n icon='ph--caret-right--regular'\n />\n </>\n )}\n\n {pin && !isSolo && ['both', 'end'].includes(pin) && (\n <LayoutControl\n label={t('pin end label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-end')}\n icon='ph--caret-line-right--regular'\n />\n )}\n\n {close && !isSolo && (\n <LayoutControl\n label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}\n classNames={buttonClassNames}\n onClick={() => onClick?.('close')}\n data-testid='layoutHeading.close'\n icon={\n close === 'minify-start'\n ? 'ph--caret-line-left--regular'\n : close === 'minify-end'\n ? 'ph--caret-line-right--regular'\n : 'ph--x--regular'\n }\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_react", "import_adapter", "import_closest_edge", "import_react_tabster", "import_react_compose_refs", "import_react_ui", "import_react_ui_theme", "import_react_ui_attention", "StackContext", "createContext", "orientation", "rail", "size", "useStack", "useContext", "StackItemContext", "selfDragHandleRef", "setSize", "useStackItem", "railGridHorizontal", "railGridVertical", "Stack", "forwardRef", "children", "classNames", "style", "onRearrange", "itemsCount", "Children", "count", "props", "forwardedRef", "stackElement", "stackRef", "useState", "composedItemRef", "composeRefs", "dropping", "setDropping", "arrowNavigationGroup", "useArrowNavigationGroup", "axis", "styles", "selfDroppable", "id", "useLayoutEffect", "acceptSourceType", "dropTargetForElements", "element", "getData", "input", "attachClosestEdge", "type", "allowedEdges", "onDragEnter", "source", "data", "onDrag", "onDragLeave", "onDrop", "self", "extractClosestEdge", "React", "Provider", "value", "div", "className", "mx", "aria-orientation", "ref", "ListItem", "DropIndicator", "edge", "StackItemContent", "toolbar", "statusbar", "stackItemSize", "role", "gridTemplateRows", "join", "StackItemDragHandle", "asChild", "Root", "Slot", "StackItemHeading", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "tabIndex", "StackItemHeadingLabel", "attendableId", "related", "hasAttention", "isAncestor", "isRelated", "useAttention", "h1", "data-attention", "toString", "REM", "parseFloat", "getComputedStyle", "document", "documentElement", "fontSize", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { attachClosestEdge, extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n Children,\n type CSSProperties,\n type ComponentPropsWithRef,\n forwardRef,\n useLayoutEffect,\n useState,\n} from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type StackContextValue, StackContext, type StackItemData } from './StackContext';\n\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Size = 'intrinsic' | 'contain';\n\nexport type StackProps = Omit<ThemedClassName<ComponentPropsWithRef<'div'>>, 'aria-orientation'> &\n Partial<StackContextValue> & { itemsCount?: number };\n\nexport const railGridHorizontal = 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const railGridVertical = 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n children,\n classNames,\n style,\n orientation = 'vertical',\n rail = true,\n size = 'intrinsic',\n onRearrange,\n itemsCount = Children.count(children),\n ...props\n },\n forwardedRef,\n ) => {\n const [stackElement, stackRef] = useState<HTMLDivElement | null>(null);\n const composedItemRef = composeRefs<HTMLDivElement>(stackRef, forwardedRef);\n const [dropping, setDropping] = useState(false);\n\n const arrowNavigationGroup = useArrowNavigationGroup({ axis: orientation });\n\n const styles: CSSProperties = {\n [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']: `repeat(${itemsCount}, min-content)`,\n ...style,\n };\n\n const selfDroppable = !!(itemsCount < 1 && onRearrange && props.id);\n\n useLayoutEffect(() => {\n if (!stackElement || !selfDroppable) {\n return;\n }\n const acceptSourceType = orientation === 'horizontal' ? 'column' : 'card';\n return dropTargetForElements({\n element: stackElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: props.id, type: orientation === 'horizontal' ? 'card' : 'column' },\n { input, element, allowedEdges: [orientation === 'horizontal' ? 'left' : 'top'] },\n );\n },\n onDragEnter: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDrag: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDragLeave: () => setDropping(false),\n onDrop: ({ self, source }) => {\n setDropping(false);\n if (source.data.type === acceptSourceType && selfDroppable) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n });\n }, [stackElement, selfDroppable]);\n\n return (\n <StackContext.Provider value={{ orientation, rail, size, onRearrange }}>\n <div\n {...props}\n {...arrowNavigationGroup}\n className={mx(\n 'grid relative',\n rail\n ? orientation === 'horizontal'\n ? railGridHorizontal\n : railGridVertical\n : orientation === 'horizontal'\n ? 'grid-rows-1'\n : 'grid-cols-1',\n size === 'contain' &&\n (orientation === 'horizontal'\n ? 'overflow-x-auto min-bs-0 bs-full max-bs-full'\n : 'overflow-y-auto min-is-0 is-full max-is-full'),\n classNames,\n )}\n aria-orientation={orientation}\n style={styles}\n ref={composedItemRef}\n >\n {children}\n {selfDroppable && dropping && <ListItem.DropIndicator edge={orientation === 'horizontal' ? 'left' : 'top'} />}\n </div>\n </StackContext.Provider>\n );\n },\n);\n\nexport { StackContext };\nexport type { StackContextValue };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { createContext, useContext } from 'react';\n\nimport { type Orientation, type Size } from './Stack';\n\nexport type StackItemSize = number | 'min-content';\n\nexport type StackItemData = { id: string; type: 'column' | 'card' };\n\nexport type StackItemRearrangeHandler = (\n source: StackItemData,\n target: StackItemData,\n closestEdge: Edge | null,\n) => void;\n\nexport type StackContextValue = {\n orientation: Orientation;\n rail: boolean;\n size: Size;\n onRearrange?: StackItemRearrangeHandler;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n orientation: 'vertical',\n rail: true,\n size: 'intrinsic',\n});\n\nexport const useStack = () => useContext(StackContext);\n\nexport type StackItemContextValue = {\n selfDragHandleRef: (element: HTMLDivElement | null) => void;\n size: StackItemSize;\n setSize: (nextSize: StackItemSize, commit?: boolean) => void;\n};\n\nexport const StackItemContext = createContext<StackItemContextValue>({\n selfDragHandleRef: () => {},\n size: 'min-content',\n setSize: () => {},\n});\n\nexport const useStackItem = () => useContext(StackItemContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport {\n attachClosestEdge,\n extractClosestEdge,\n type Edge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, { forwardRef, useLayoutEffect, useState, type ComponentPropsWithRef, useCallback } from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, StackItemContext, type StackItemSize, type StackItemData } from './StackContext';\nimport { StackItemContent, type StackItemContentProps } from './StackItemContent';\nimport { StackItemDragHandle, type StackItemDragHandleProps } from './StackItemDragHandle';\nimport {\n StackItemHeading,\n StackItemHeadingLabel,\n type StackItemHeadingProps,\n type StackItemHeadingLabelProps,\n} from './StackItemHeading';\nimport { StackItemResizeHandle, type StackItemResizeHandleProps } from './StackItemResizeHandle';\nimport {\n StackItemSigil,\n type StackItemSigilProps,\n type StackItemSigilAction,\n type StackItemSigilButtonProps,\n StackItemSigilButton,\n} from './StackItemSigil';\n\nexport const DEFAULT_HORIZONTAL_SIZE = 44 satisfies StackItemSize;\nexport const DEFAULT_VERTICAL_SIZE = 'min-content' satisfies StackItemSize;\nexport const DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE satisfies StackItemSize;\n\nexport type StackItemRootProps = ThemedClassName<ComponentPropsWithRef<'div'>> & {\n item: Omit<StackItemData, 'type'>;\n order?: number;\n size?: StackItemSize;\n onSizeChange?: (nextSize: StackItemSize) => void;\n role?: 'article' | 'section';\n};\n\nconst StackItemRoot = forwardRef<HTMLDivElement, StackItemRootProps>(\n ({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, ...props }, forwardedRef) => {\n const [itemElement, itemRef] = useState<HTMLDivElement | null>(null);\n const [selfDragHandleElement, selfDragHandleRef] = useState<HTMLDivElement | null>(null);\n const [closestEdge, setEdge] = useState<Edge | null>(null);\n const { orientation, rail, onRearrange } = useStack();\n const [size = orientation === 'horizontal' ? DEFAULT_HORIZONTAL_SIZE : DEFAULT_VERTICAL_SIZE, setInternalSize] =\n useState(propsSize);\n\n const Root = role ?? 'div';\n\n const composedItemRef = composeRefs<HTMLDivElement>(itemRef, forwardedRef);\n\n const setSize = useCallback(\n (nextSize: StackItemSize, commit?: boolean) => {\n setInternalSize(nextSize);\n if (commit) {\n onSizeChange?.(nextSize);\n }\n },\n [onSizeChange],\n );\n\n const type = orientation === 'horizontal' ? 'column' : 'card';\n\n useLayoutEffect(() => {\n if (!itemElement || !onRearrange) {\n return;\n }\n return combine(\n draggable({\n element: itemElement,\n ...(selfDragHandleElement && { dragHandle: selfDragHandleElement }),\n getInitialData: () => ({ id: item.id, type }),\n // TODO(thure): tabster focus honeypots are causing the preview to render with the wrong dimensions; what do?\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n disableNativeDragPreview({ nativeSetDragImage });\n preventUnhandled.start();\n },\n }),\n dropTargetForElements({\n element: itemElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: item.id, type },\n { input, element, allowedEdges: orientation === 'horizontal' ? ['left', 'right'] : ['top', 'bottom'] },\n );\n },\n onDragEnter: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDragLeave: () => setEdge(null),\n onDrop: ({ self, source }) => {\n setEdge(null);\n if (source.data.type === self.data.type) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n }),\n );\n }, [orientation, item, onRearrange, selfDragHandleElement, itemElement]);\n\n const focusGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <StackItemContext.Provider value={{ selfDragHandleRef, size, setSize }}>\n <Root\n {...props}\n tabIndex={0}\n {...focusGroupAttrs}\n className={mx(\n 'group/stack-item grid relative ch-focus-ring-inset-over-all',\n size === 'min-content' && (orientation === 'horizontal' ? 'is-min' : 'bs-min'),\n orientation === 'horizontal' ? 'grid-rows-subgrid' : 'grid-cols-subgrid',\n rail && (orientation === 'horizontal' ? 'row-span-2' : 'col-span-2'),\n classNames,\n )}\n data-dx-stack-item\n style={{\n ...(size !== 'min-content' && {\n [orientation === 'horizontal' ? 'inlineSize' : 'blockSize']: `${size}rem`,\n }),\n ...(Number.isFinite(order) && {\n [orientation === 'horizontal' ? 'gridColumn' : 'gridRow']: `${order}`,\n }),\n ...style,\n }}\n ref={composedItemRef}\n >\n {children}\n {closestEdge && <ListItem.DropIndicator edge={closestEdge} />}\n </Root>\n </StackItemContext.Provider>\n );\n },\n);\n\nexport const StackItem = {\n Root: StackItemRoot,\n Content: StackItemContent,\n Heading: StackItemHeading,\n HeadingLabel: StackItemHeadingLabel,\n ResizeHandle: StackItemResizeHandle,\n DragHandle: StackItemDragHandle,\n Sigil: StackItemSigil,\n SigilButton: StackItemSigilButton,\n};\n\nexport type {\n StackItemContentProps,\n StackItemHeadingProps,\n StackItemHeadingLabelProps,\n StackItemResizeHandleProps,\n StackItemDragHandleProps,\n StackItemSigilProps,\n StackItemSigilButtonProps,\n StackItemSigilAction,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef, forwardRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack } from './StackContext';\n\nexport type StackItemContentProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {\n /**\n * This flag is required in order to clarify a developer experience that seemed like it needed extra boilerplate\n * (`row-span-2`) or was buggy. See the description of the StackItem.Content component itself for more information.\n */\n toolbar: boolean;\n /**\n * Whether to provide for the layout of a statusbar after the content.\n */\n statusbar?: boolean;\n /**\n * Whether to set a certain aspect ratio on the content, including the toolbar and statusbar. This is provided for\n * convenience and consistency; it can instead be specified by the `classNames` or `style` props as needed.\n */\n size?: 'intrinsic' | 'video' | 'square';\n};\n\n/**\n * This component should be used by plugins for rendering content within a stack item, a.k.a. a “plank” or “section”.\n * The `toolbar` flag must be provided since this component provides for the layout of content with the toolbar.\n */\nexport const StackItemContent = forwardRef<HTMLDivElement, StackItemContentProps>(\n ({ children, toolbar, statusbar, classNames, size = 'intrinsic', ...props }, forwardedRef) => {\n const { size: stackItemSize } = useStack();\n\n return (\n <div\n role='none'\n {...props}\n className={mx(\n 'group grid grid-cols-[100%]',\n stackItemSize === 'contain' && 'min-bs-0 overflow-hidden',\n size === 'video' ? 'aspect-video' : size === 'square' && 'aspect-square',\n classNames,\n )}\n style={{\n gridTemplateRows: [\n ...(toolbar ? ['var(--rail-action)'] : []),\n '1fr',\n ...(statusbar ? ['var(--statusbar-size)'] : []),\n ].join(' '),\n }}\n ref={forwardedRef}\n >\n {children}\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nimport { useStackItem } from './StackContext';\n\nexport type StackItemDragHandleProps = ComponentPropsWithoutRef<'button'> & { asChild: boolean };\n\nexport const StackItemDragHandle = ({ asChild, children }: StackItemDragHandleProps) => {\n const { selfDragHandleRef } = useStackItem();\n\n const Root = asChild ? Slot : 'div';\n\n return (\n <Root ref={selfDragHandleRef} role='button'>\n {children}\n </Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport React, { type ComponentPropsWithoutRef, type ComponentPropsWithRef, forwardRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useAttention, type AttendableId, type Related } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack } from './StackContext';\n\nexport type StackItemHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;\n\nexport const StackItemHeading = ({ children, classNames, ...props }: StackItemHeadingProps) => {\n const { orientation } = useStack();\n const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n return (\n <div\n role='heading'\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'flex items-center ch-focus-ring-inset-over-all relative !border-is-0',\n orientation === 'horizontal' ? 'bs-[--rail-size]' : 'is-[--rail-size] flex-col',\n classNames,\n )}\n >\n {children}\n </div>\n );\n};\n\nexport type StackItemHeadingLabelProps = ThemedClassName<ComponentPropsWithRef<'h1'>> & AttendableId & Related;\n\nexport const StackItemHeadingLabel = forwardRef<HTMLHeadingElement, StackItemHeadingLabelProps>(\n ({ attendableId, related, classNames, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n return (\n <h1\n {...props}\n data-attention={((related && isRelated) || hasAttention || isAncestor).toString()}\n className={mx(\n 'pli-1 min-is-0 is-0 grow truncate font-medium text-baseText data-[attention=true]:text-accentText self-center',\n classNames,\n )}\n ref={forwardedRef}\n />\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport { type DragLocationHistory } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport React, { useLayoutEffect, useRef } from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, useStackItem, type StackItemSize } from './StackContext';\nimport { DEFAULT_EXTRINSIC_SIZE } from './StackItem';\n\nconst REM = parseFloat(getComputedStyle(document.documentElement).fontSize);\n\nconst MIN_SIZE = 20;\n\nconst measureStackItem = (element: HTMLButtonElement): { width: number; height: number } => {\n const stackItemElement = element.closest('[data-dx-stack-item]');\n return stackItemElement?.getBoundingClientRect() ?? { width: DEFAULT_EXTRINSIC_SIZE, height: DEFAULT_EXTRINSIC_SIZE };\n};\n\nconst getNextSize = (startSize: number, location: DragLocationHistory, client: 'clientX' | 'clientY') => {\n return Math.max(MIN_SIZE, startSize + (location.current.input[client] - location.initial.input[client]) / REM);\n};\n\nexport type StackItemResizeHandleProps = {};\n\nexport const StackItemResizeHandle = () => {\n const { orientation } = useStack();\n const { setSize, size } = useStackItem();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const dragStartSize = useRef<StackItemSize>(size);\n const client = orientation === 'horizontal' ? 'clientX' : 'clientY';\n\n useLayoutEffect(\n () => {\n if (!buttonRef.current || buttonRef.current.hasAttribute('draggable')) {\n return;\n }\n // TODO(thure): This should handle StackItem state vs local state better.\n draggable({\n element: buttonRef.current,\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n // We will be moving the line to indicate a drag; we can disable the native drag preview.\n disableNativeDragPreview({ nativeSetDragImage });\n // We don't want any native drop animation for when the user does not drop on a drop target.\n // We want the drag to finish immediately.\n preventUnhandled.start();\n },\n onDragStart: () => {\n dragStartSize.current =\n dragStartSize.current === 'min-content'\n ? measureStackItem(buttonRef.current!)[orientation === 'horizontal' ? 'width' : 'height'] / REM\n : dragStartSize.current;\n },\n onDrag: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n setSize(getNextSize(dragStartSize.current, location, client));\n },\n onDrop: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n const nextSize = getNextSize(dragStartSize.current, location, client);\n setSize(nextSize, true);\n dragStartSize.current = nextSize;\n },\n });\n },\n [\n // Note that `size` should not be a dependency here since dragging this adjusts the size.\n ],\n );\n\n return (\n <button\n ref={buttonRef}\n className={mx(\n orientation === 'horizontal' ? 'cursor-col-resize' : 'cursor-row-resize',\n 'group absolute is-3 bs-full inline-end-[-1px] !border-lb-0',\n 'before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100',\n 'before:absolute before:block before:inset-block-0 before:inline-end-0 before:is-1 before:bg-accentFocusIndicator',\n )}\n >\n <div\n role='none'\n className='absolute block-start-0 inline-end-[1px] bs-[--rail-size] flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0'\n >\n <DragHandleSignifier />\n </div>\n </button>\n );\n};\n\nconst DragHandleSignifier = () => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 256 256'\n fill='currentColor'\n className='shrink-0 bs-[1em] is-[1em] text-unAccent'\n >\n {/* two pips: <path d='M256,120c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' /> */}\n <path d='M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,120c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,176c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n </svg>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, type PropsWithChildren, forwardRef, useRef, useState } from 'react';\n\nimport { type ActionLike } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport {\n Button,\n type ButtonProps,\n DropdownMenu,\n Icon,\n toLocalizedString,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\nimport { type AttendableId, type Related, useAttention } from '@dxos/react-ui-attention';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { MenuSignifierHorizontal } from './MenuSignifier';\nimport { translationKey } from '../translations';\n\nexport type KeyBinding = {\n windows?: string;\n macos?: string;\n ios?: string;\n linux?: string;\n unknown?: string;\n};\n\nexport type StackItemSigilAction = Pick<ActionLike, 'id' | 'properties' | 'data'>;\n\nexport type StackItemSigilButtonProps = Omit<ButtonProps, 'variant'> & AttendableId & Related;\n\nexport const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigilButtonProps>(\n ({ attendableId, classNames, related, children, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n const variant = (related && isRelated) || hasAttention || isAncestor ? 'primary' : 'ghost';\n return (\n <Button\n {...props}\n variant={variant}\n classNames={['shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative', classNames]}\n ref={forwardedRef}\n >\n <MenuSignifierHorizontal />\n {children}\n </Button>\n );\n },\n);\n\nexport type StackItemSigilProps = PropsWithChildren<\n {\n attendableId?: string;\n triggerLabel: string;\n actions?: StackItemSigilAction[][];\n icon: string;\n onAction?: (action: StackItemSigilAction) => void;\n } & Related\n>;\n\nexport const StackItemSigil = forwardRef<HTMLButtonElement, StackItemSigilProps>(\n ({ actions: actionGroups, onAction, triggerLabel, attendableId, icon, related, children }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const suppressNextTooltip = useRef(false);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild ref={forwardedRef}>\n <StackItemSigilButton attendableId={attendableId} related={related}>\n <span className='sr-only'>{triggerLabel}</span>\n <Icon icon={icon} size={5} />\n </StackItemSigilButton>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='z-[31]'>\n <DropdownMenu.Viewport>\n {actionGroups?.map((actions, index) => {\n const separator = index > 0 ? <DropdownMenu.Separator /> : null;\n return (\n <Fragment key={index}>\n {separator}\n {actions.map((action) => {\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n\n const menuItemType = action.properties.menuItemType;\n const Root = menuItemType === 'toggle' ? DropdownMenu.CheckboxItem : DropdownMenu.Item;\n\n return (\n <Root\n key={action.id}\n onClick={(event) => {\n if (action.properties.disabled) {\n return;\n }\n event.stopPropagation();\n // TODO(thure): Why does Dialog’s modal-ness cause issues if we don’t explicitly close the menu here?\n suppressNextTooltip.current = true;\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties.disabled}\n checked={menuItemType === 'toggle' ? action.properties.isChecked : undefined}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n <Icon icon={action.properties.icon ?? 'ph--placeholder--regular'} size={4} />\n <span className='grow truncate'>{toLocalizedString(action.properties.label ?? '', t)}</span>\n {menuItemType === 'toggle' && (\n <DropdownMenu.ItemIndicator asChild>\n <Icon icon='ph--check--regular' size={4} />\n </DropdownMenu.ItemIndicator>\n )}\n {shortcut && (\n <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>\n )}\n </Root>\n );\n })}\n </Fragment>\n );\n })}\n {children}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n {triggerLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nexport const MenuSignifierHorizontal = () => (\n <svg\n className='absolute block-end-[7px]'\n width={20}\n height={2}\n viewBox='0 0 20 2'\n stroke='currentColor'\n opacity={0.5}\n >\n <line\n x1={0.5}\n y1={0.75}\n x2={19}\n y2={0.75}\n strokeWidth={1.25}\n strokeLinecap='round'\n strokeDasharray='6 20'\n strokeDashoffset='-6.5'\n />\n </svg>\n);\n\nexport const MenuSignifierVertical = () => (\n <svg className='absolute inline-start-1' width={2} height={18} viewBox='0 0 2 18' stroke='currentColor'>\n <line x1={1} y1={3} x2={1} y2={18} strokeWidth={1.5} strokeLinecap='round' strokeDasharray='0 6' />\n </svg>\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'stack';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'close label': 'Close',\n 'minify label': 'Minify',\n },\n },\n },\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef } from 'react';\n\nimport {\n Button,\n ButtonGroup,\n type ButtonGroupProps,\n type ButtonProps,\n Icon,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { translationKey } from '../translations';\n\nexport type LayoutControlEvent = 'solo' | 'close' | `${'pin' | 'increment'}-${'start' | 'end'}`;\nexport type LayoutControlHandler = (event: LayoutControlEvent) => void;\n\nexport type LayoutCapabilities = {\n incrementStart?: boolean;\n incrementEnd?: boolean;\n solo?: boolean;\n};\n\nexport type LayoutControlsProps = Omit<ButtonGroupProps, 'onClick'> & {\n onClick?: LayoutControlHandler;\n variant?: 'hide-disabled' | 'default';\n close?: boolean | 'minify-start' | 'minify-end';\n capabilities: LayoutCapabilities;\n isSolo?: boolean;\n pin?: 'start' | 'end' | 'both';\n};\n\nconst LayoutControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant='ghost' {...props}>\n <span className='sr-only'>{label}</span>\n <Icon icon={icon} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>{label}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport const LayoutControls = forwardRef<HTMLDivElement, LayoutControlsProps>(\n (\n { onClick, variant = 'default', capabilities: can, isSolo, pin, close = false, children, ...props },\n forwardedRef,\n ) => {\n const { t } = useTranslation(translationKey);\n const buttonClassNames = variant === 'hide-disabled' ? 'disabled:hidden !p-1' : '!p-1';\n\n return (\n <ButtonGroup {...props} ref={forwardedRef}>\n {pin && !isSolo && ['both', 'start'].includes(pin) && (\n <LayoutControl\n label={t('pin start label')}\n variant='ghost'\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-start')}\n icon='ph--caret-line-left--regular'\n />\n )}\n\n {can.solo && (\n <LayoutControl\n label={t('solo layout label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('solo')}\n icon={isSolo ? 'ph--arrows-in--regular' : 'ph--arrows-out--regular'}\n />\n )}\n\n {!isSolo && can.solo && (\n <>\n <LayoutControl\n label={t('increment start label')}\n disabled={!can.incrementStart}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-start')}\n icon='ph--caret-left--regular'\n />\n <LayoutControl\n label={t('increment end label')}\n disabled={!can.incrementEnd}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-end')}\n icon='ph--caret-right--regular'\n />\n </>\n )}\n\n {pin && !isSolo && ['both', 'end'].includes(pin) && (\n <LayoutControl\n label={t('pin end label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-end')}\n icon='ph--caret-line-right--regular'\n />\n )}\n\n {close && !isSolo && (\n <LayoutControl\n label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}\n classNames={buttonClassNames}\n onClick={() => onClick?.('close')}\n data-testid='layoutHeading.close'\n icon={\n close === 'minify-start'\n ? 'ph--caret-line-left--regular'\n : close === 'minify-end'\n ? 'ph--caret-line-right--regular'\n : 'ph--x--regular'\n }\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "import_adapter", "import_closest_edge", "import_react_tabster", "import_react_compose_refs", "import_react_ui", "import_react_ui_theme", "import_disable_native_drag_preview", "import_prevent_unhandled", "import_react_ui_attention", "StackContext", "createContext", "orientation", "rail", "size", "useStack", "useContext", "StackItemContext", "selfDragHandleRef", "setSize", "useStackItem", "railGridHorizontal", "railGridVertical", "Stack", "forwardRef", "children", "classNames", "style", "onRearrange", "itemsCount", "Children", "count", "props", "forwardedRef", "stackElement", "stackRef", "useState", "composedItemRef", "composeRefs", "dropping", "setDropping", "arrowNavigationGroup", "useArrowNavigationGroup", "axis", "styles", "selfDroppable", "id", "useLayoutEffect", "acceptSourceType", "dropTargetForElements", "element", "getData", "input", "attachClosestEdge", "type", "allowedEdges", "onDragEnter", "source", "data", "onDrag", "onDragLeave", "onDrop", "self", "extractClosestEdge", "React", "Provider", "value", "div", "className", "mx", "aria-orientation", "ref", "ListItem", "DropIndicator", "edge", "StackItemContent", "toolbar", "statusbar", "stackItemSize", "role", "gridTemplateRows", "join", "StackItemDragHandle", "asChild", "Root", "Slot", "StackItemHeading", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "tabIndex", "StackItemHeadingLabel", "attendableId", "related", "hasAttention", "isAncestor", "isRelated", "useAttention", "h1", "data-attention", "toString", "REM", "parseFloat", "getComputedStyle", "document", "documentElement", "fontSize", "MIN_SIZE", "measureStackItem", "stackItemElement", "closest", "getBoundingClientRect", "width", "DEFAULT_EXTRINSIC_SIZE", "height", "getNextSize", "startSize", "location", "client", "Math", "max", "current", "initial", "StackItemResizeHandle", "buttonRef", "useRef", "dragStartSize", "hasAttribute", "draggable", "onGenerateDragPreview", "nativeSetDragImage", "disableNativeDragPreview", "preventUnhandled", "start", "onDragStart", "nextSize", "button", "DragHandleSignifier", "svg", "xmlns", "viewBox", "fill", "path", "d", "MenuSignifierHorizontal", "stroke", "opacity", "line", "x1", "y1", "x2", "y2", "strokeWidth", "strokeLinecap", "strokeDasharray", "strokeDashoffset", "translationKey", "StackItemSigilButton", "variant", "Button", "StackItemSigil", "actions", "actionGroups", "onAction", "triggerLabel", "icon", "t", "useTranslation", "suppressNextTooltip", "optionsMenuOpen", "setOptionsMenuOpen", "triggerTooltipOpen", "setTriggerTooltipOpen", "Tooltip", "open", "onOpenChange", "nextOpen", "DropdownMenu", "Trigger", "span", "Icon", "Portal", "Content", "Viewport", "map", "index", "separator", "Separator", "Fragment", "key", "action", "shortcut", "properties", "keyBinding", "getHostPlatform", "menuItemType", "CheckboxItem", "Item", "onClick", "event", "disabled", "stopPropagation", "checked", "isChecked", "undefined", "testId", "toLocalizedString", "label", "ItemIndicator", "descriptionText", "keySymbols", "Arrow", "side", "DEFAULT_HORIZONTAL_SIZE", "DEFAULT_VERTICAL_SIZE", "StackItemRoot", "item", "propsSize", "onSizeChange", "order", "itemElement", "itemRef", "selfDragHandleElement", "closestEdge", "setEdge", "setInternalSize", "useCallback", "commit", "combine", "dragHandle", "getInitialData", "focusGroupAttrs", "data-dx-stack-item", "Number", "isFinite", "StackItem", "Heading", "HeadingLabel", "ResizeHandle", "DragHandle", "Sigil", "SigilButton", "LayoutControl", "LayoutControls", "capabilities", "can", "isSolo", "pin", "close", "buttonClassNames", "ButtonGroup", "includes", "solo", "incrementStart", "incrementEnd", "data-testid"]
|
|
7
7
|
}
|