@dxos/react-ui-stack 0.7.5-main.9d2a38b → 0.7.5-main.e9bb01b

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.
@@ -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":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}}}
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":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":54972},"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}}}
@@ -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 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");
56
+ var import_preserve_offset_on_source = require("@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source");
57
+ var import_scroll_just_enough_into_view = require("@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view");
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 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");
73
+ var import_disable_native_drag_preview = require("@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview");
74
+ var import_prevent_unhandled = 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 ch-focus-ring-inset-over-all relative !border-is-0", orientation === "horizontal" ? "bs-[--rail-size]" : "is-[--rail-size] flex-col", classNames)
211
+ className: (0, import_react_ui_theme4.mx)("flex items-center dx-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,7 +221,8 @@ var StackItemHeadingLabel = /* @__PURE__ */ (0, import_react6.forwardRef)(({ att
221
221
  });
222
222
  });
223
223
  var REM = parseFloat(getComputedStyle(document.documentElement).fontSize);
224
- var MIN_SIZE = 20;
224
+ var MIN_WIDTH = 20;
225
+ var MIN_HEIGHT = 3;
225
226
  var measureStackItem = (element) => {
226
227
  const stackItemElement = element.closest("[data-dx-stack-item]");
227
228
  return stackItemElement?.getBoundingClientRect() ?? {
@@ -230,7 +231,7 @@ var measureStackItem = (element) => {
230
231
  };
231
232
  };
232
233
  var getNextSize = (startSize, location, client) => {
233
- return Math.max(MIN_SIZE, startSize + (location.current.input[client] - location.initial.input[client]) / REM);
234
+ return Math.max(client === "clientX" ? MIN_WIDTH : MIN_HEIGHT, startSize + (location.current.input[client] - location.initial.input[client]) / REM);
234
235
  };
235
236
  var StackItemResizeHandle = () => {
236
237
  const { orientation } = useStack();
@@ -245,10 +246,10 @@ var StackItemResizeHandle = () => {
245
246
  (0, import_adapter3.draggable)({
246
247
  element: buttonRef.current,
247
248
  onGenerateDragPreview: ({ nativeSetDragImage }) => {
248
- (0, import_disable_native_drag_preview2.disableNativeDragPreview)({
249
+ (0, import_disable_native_drag_preview.disableNativeDragPreview)({
249
250
  nativeSetDragImage
250
251
  });
251
- import_prevent_unhandled2.preventUnhandled.start();
252
+ import_prevent_unhandled.preventUnhandled.start();
252
253
  },
253
254
  onDragStart: () => {
254
255
  dragStartSize.current = dragStartSize.current === "min-content" ? measureStackItem(buttonRef.current)[orientation === "horizontal" ? "width" : "height"] / REM : dragStartSize.current;
@@ -271,18 +272,20 @@ var StackItemResizeHandle = () => {
271
272
  }, []);
272
273
  return /* @__PURE__ */ import_react7.default.createElement("button", {
273
274
  ref: buttonRef,
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")
275
+ className: (0, import_react_ui_theme5.mx)("group absolute", orientation === "horizontal" ? "cursor-col-resize is-3 bs-full inline-end-[-1px] !border-lb-0 before:inset-block-0 before:inline-end-0 before:is-1" : "cursor-row-resize bs-3 is-full block-end-[-1px] !border-li-0 before:inset-inline-0 before:block-end-0 before:bs-1", "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:bg-accentFocusIndicator")
275
276
  }, /* @__PURE__ */ import_react7.default.createElement("div", {
276
277
  role: "none",
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)));
278
+ className: (0, import_react_ui_theme5.mx)("absolute flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0", orientation === "horizontal" ? "block-start-0 inline-end-px bs-[--rail-size]" : "inline-start-0 block-end-px is-[--rail-size] flex justify-center")
279
+ }, /* @__PURE__ */ import_react7.default.createElement(DragHandleSignifier, {
280
+ orientation
281
+ })));
279
282
  };
280
- var DragHandleSignifier = () => {
283
+ var DragHandleSignifier = ({ orientation }) => {
281
284
  return /* @__PURE__ */ import_react7.default.createElement("svg", {
282
285
  xmlns: "http://www.w3.org/2000/svg",
283
286
  viewBox: "0 0 256 256",
284
287
  fill: "currentColor",
285
- className: "shrink-0 bs-[1em] is-[1em] text-unAccent"
288
+ className: (0, import_react_ui_theme5.mx)("shrink-0 bs-[1em] is-[1em] text-unAccent", orientation === "vertical" && "rotate-90")
286
289
  }, /* @__PURE__ */ import_react7.default.createElement("path", {
287
290
  d: "M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z"
288
291
  }), /* @__PURE__ */ import_react7.default.createElement("path", {
@@ -333,7 +336,7 @@ var StackItemSigilButton = /* @__PURE__ */ (0, import_react8.forwardRef)(({ atte
333
336
  ...props,
334
337
  variant,
335
338
  classNames: [
336
- "shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative",
339
+ "shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag",
337
340
  classNames
338
341
  ],
339
342
  ref: forwardedRef
@@ -343,18 +346,23 @@ var StackItemSigil = /* @__PURE__ */ (0, import_react8.forwardRef)(({ actions: a
343
346
  const { t } = (0, import_react_ui3.useTranslation)(translationKey);
344
347
  const suppressNextTooltip = (0, import_react8.useRef)(false);
345
348
  const [optionsMenuOpen, setOptionsMenuOpen] = (0, import_react8.useState)(false);
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, {
349
+ const hasActions = actionGroups && actionGroups.length > 0;
350
+ const button = /* @__PURE__ */ import_react8.default.createElement(StackItemSigilButton, {
351
+ attendableId,
352
+ related,
353
+ // TODO(wittjosiah): Better disabling of interactive styles when no action are available.
354
+ // Remove underscore icon when no actions are available?
355
+ classNames: !hasActions && "cursor-default"
356
+ }, /* @__PURE__ */ import_react8.default.createElement("span", {
357
+ className: "sr-only"
358
+ }, triggerLabel), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Icon, {
359
+ icon,
360
+ size: 5
361
+ }));
362
+ if (!hasActions) {
363
+ return button;
364
+ }
365
+ return /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Root, {
358
366
  open: optionsMenuOpen,
359
367
  onOpenChange: (nextOpen) => {
360
368
  if (!nextOpen) {
@@ -362,20 +370,10 @@ var StackItemSigil = /* @__PURE__ */ (0, import_react8.forwardRef)(({ actions: a
362
370
  }
363
371
  return setOptionsMenuOpen(nextOpen);
364
372
  }
365
- }, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.Tooltip.Trigger, {
366
- asChild: true
367
373
  }, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Trigger, {
368
374
  asChild: true,
369
375
  ref: forwardedRef
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, {
376
+ }, button), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Portal, null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Content, {
379
377
  classNames: "z-[31]"
380
378
  }, /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Viewport, null, actionGroups?.map((actions, index) => {
381
379
  const separator = index > 0 ? /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Separator, null) : null;
@@ -416,14 +414,12 @@ var StackItemSigil = /* @__PURE__ */ (0, import_react8.forwardRef)(({ actions: a
416
414
  className: (0, import_react_ui_theme6.mx)("shrink-0", import_react_ui_theme6.descriptionText)
417
415
  }, (0, import_keyboard.keySymbols)(shortcut).join("")));
418
416
  }));
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))));
417
+ }), children), /* @__PURE__ */ import_react8.default.createElement(import_react_ui3.DropdownMenu.Arrow, null))));
422
418
  });
423
419
  var DEFAULT_HORIZONTAL_SIZE = 44;
424
420
  var DEFAULT_VERTICAL_SIZE = "min-content";
425
421
  var DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE;
426
- var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, ...props }, forwardedRef) => {
422
+ var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, disableRearrange, ...props }, forwardedRef) => {
427
423
  const [itemElement, itemRef] = (0, import_react3.useState)(null);
428
424
  const [selfDragHandleElement, selfDragHandleRef] = (0, import_react3.useState)(null);
429
425
  const [closestEdge, setEdge] = (0, import_react3.useState)(null);
@@ -441,7 +437,7 @@ var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, child
441
437
  ]);
442
438
  const type = orientation === "horizontal" ? "column" : "card";
443
439
  (0, import_react3.useLayoutEffect)(() => {
444
- if (!itemElement || !onRearrange) {
440
+ if (!itemElement || !onRearrange || disableRearrange) {
445
441
  return;
446
442
  }
447
443
  return (0, import_combine.combine)((0, import_adapter2.draggable)({
@@ -453,12 +449,21 @@ var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, child
453
449
  id: item.id,
454
450
  type
455
451
  }),
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
452
+ onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {
453
+ document.body.setAttribute("data-drag-preview", "true");
454
+ (0, import_scroll_just_enough_into_view.scrollJustEnoughIntoView)({
455
+ element: source.element
460
456
  });
461
- import_prevent_unhandled.preventUnhandled.start();
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
462
+ });
463
+ nativeSetDragImage?.(source.element, x, y);
464
+ },
465
+ onDragStart: () => {
466
+ document.body.removeAttribute("data-drag-preview");
462
467
  }
463
468
  }), (0, import_adapter2.dropTargetForElements)({
464
469
  element: itemElement,
@@ -516,7 +521,7 @@ var StackItemRoot = /* @__PURE__ */ (0, import_react3.forwardRef)(({ item, child
516
521
  ...props,
517
522
  tabIndex: 0,
518
523
  ...focusGroupAttrs,
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),
524
+ className: (0, import_react_ui_theme2.mx)("group/stack-item grid relative dx-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),
520
525
  "data-dx-stack-item": true,
521
526
  style: {
522
527
  ...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 { 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"]
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 * 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 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", "MIN_WIDTH", "MIN_HEIGHT", "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", "hasActions", "length", "span", "Icon", "DropdownMenu", "open", "onOpenChange", "nextOpen", "Trigger", "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", "DEFAULT_HORIZONTAL_SIZE", "DEFAULT_VERTICAL_SIZE", "StackItemRoot", "item", "propsSize", "onSizeChange", "order", "disableRearrange", "itemElement", "itemRef", "selfDragHandleElement", "closestEdge", "setEdge", "setInternalSize", "useCallback", "commit", "combine", "dragHandle", "getInitialData", "body", "setAttribute", "scrollJustEnoughIntoView", "x", "y", "preserveOffsetOnSource", "container", "offsetParent", "removeAttribute", "focusGroupAttrs", "data-dx-stack-item", "Number", "isFinite", "StackItem", "Heading", "HeadingLabel", "ResizeHandle", "DragHandle", "Sigil", "SigilButton", "LayoutControl", "Tooltip", "side", "LayoutControls", "capabilities", "can", "isSolo", "pin", "close", "buttonClassNames", "ButtonGroup", "includes", "solo", "incrementStart", "incrementEnd", "data-testid"]
7
7
  }