UNPKG

react-aria-components

Version:

A library of styleable components built using React Aria

929 lines (910 loc) • 45.8 kB
var $3114c2382242bdc0$exports = require("./Collection.main.js"); var $b856e6788a7ea5bf$exports = require("./Button.main.js"); var $525402dfec7da5bc$exports = require("./RSPContexts.main.js"); var $c5ccf687772c0422$exports = require("./utils.main.js"); var $368d79437ab76c11$exports = require("./useDragAndDrop.main.js"); var $d72d752ea1c67b9a$exports = require("./intlStrings.main.js"); var $5VUTk$reactstatelytable = require("@react-stately/table"); var $5VUTk$reactstately = require("react-stately"); var $5VUTk$reactaria = require("react-aria"); var $5VUTk$reactariautils = require("@react-aria/utils"); var $5VUTk$react = require("react"); var $5VUTk$reactdom = require("react-dom"); function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } $parcel$export(module.exports, "ResizableTableContainer", () => $37b9a5d4bd0d4ded$export$7063e69b8a954175); $parcel$export(module.exports, "TableContext", () => $37b9a5d4bd0d4ded$export$93e4b0b2cc49b648); $parcel$export(module.exports, "TableStateContext", () => $37b9a5d4bd0d4ded$export$38de1cb0526c21fb); $parcel$export(module.exports, "TableColumnResizeStateContext", () => $37b9a5d4bd0d4ded$export$a2680a798823803c); $parcel$export(module.exports, "Table", () => $37b9a5d4bd0d4ded$export$54ec01a60f47d33d); $parcel$export(module.exports, "useTableOptions", () => $37b9a5d4bd0d4ded$export$fddc468cd8cb4db9); $parcel$export(module.exports, "TableHeader", () => $37b9a5d4bd0d4ded$export$f850895b287ef28e); $parcel$export(module.exports, "Column", () => $37b9a5d4bd0d4ded$export$816b5d811295e6bc); $parcel$export(module.exports, "TableBody", () => $37b9a5d4bd0d4ded$export$76ccd210b9029917); $parcel$export(module.exports, "Row", () => $37b9a5d4bd0d4ded$export$b59bdbef9ce70de2); $parcel$export(module.exports, "Cell", () => $37b9a5d4bd0d4ded$export$f6f0c3fe4ec306ea); $parcel$export(module.exports, "ColumnResizer", () => $37b9a5d4bd0d4ded$export$ee689e97a7664bfd); class $37b9a5d4bd0d4ded$var$TableCollection extends (0, $3114c2382242bdc0$exports.BaseCollection) { addNode(node) { super.addNode(node); this.columnsDirty || (this.columnsDirty = node.type === 'column'); if (node.type === 'tableheader') this.head = node; if (node.type === 'tablebody') this.body = node; } commit(firstKey, lastKey, isSSR = false) { this.updateColumns(isSSR); super.commit(firstKey, lastKey, isSSR); } updateColumns(isSSR) { if (!this.columnsDirty) return; this.rowHeaderColumnKeys = new Set(); this.columns = []; let columnKeyMap = new Map(); let visit = (node)=>{ switch(node.type){ case 'column': columnKeyMap.set(node.key, node); if (!node.hasChildNodes) { node.index = this.columns.length; this.columns.push(node); if (node.props.isRowHeader) this.rowHeaderColumnKeys.add(node.key); } break; } for (let child of this.getChildren(node.key))visit(child); }; for (let node of this.getChildren(this.head.key))visit(node); this.headerRows = (0, $5VUTk$reactstatelytable.buildHeaderRows)(columnKeyMap, this.columns); this.columnsDirty = false; if (this.rowHeaderColumnKeys.size === 0 && this.columns.length > 0 && !isSSR) throw new Error('A table must have at least one Column with the isRowHeader prop set to true'); } get columnCount() { return this.columns.length; } get rows() { return [ ...this.getChildren(this.body.key) ]; } *[Symbol.iterator]() { yield* this.getChildren(this.body.key); } get size() { return [ ...this.getChildren(this.body.key) ].length; } getFirstKey() { var _; return (_ = [ ...this.getChildren(this.body.key) ][0]) === null || _ === void 0 ? void 0 : _.key; } getLastKey() { var _rows_; let rows = [ ...this.getChildren(this.body.key) ]; return (_rows_ = rows[rows.length - 1]) === null || _rows_ === void 0 ? void 0 : _rows_.key; } getKeyAfter(key) { let node = this.getItem(key); var _node_nextKey; if ((node === null || node === void 0 ? void 0 : node.type) === 'column') return (_node_nextKey = node.nextKey) !== null && _node_nextKey !== void 0 ? _node_nextKey : null; return super.getKeyAfter(key); } getKeyBefore(key) { var _this_getItem; let node = this.getItem(key); var _node_prevKey; if ((node === null || node === void 0 ? void 0 : node.type) === 'column') return (_node_prevKey = node.prevKey) !== null && _node_prevKey !== void 0 ? _node_prevKey : null; let k = super.getKeyBefore(key); if (k != null && ((_this_getItem = this.getItem(k)) === null || _this_getItem === void 0 ? void 0 : _this_getItem.type) === 'tablebody') return null; return k; } getChildren(key) { if (!this.getItem(key)) for (let row of this.headerRows){ if (row.key === key) return row.childNodes; } return super.getChildren(key); } clone() { let collection = super.clone(); collection.headerRows = this.headerRows; collection.columns = this.columns; collection.rowHeaderColumnKeys = this.rowHeaderColumnKeys; collection.head = this.head; collection.body = this.body; return collection; } getTextValue(key) { let row = this.getItem(key); if (!row) return ''; // If the row has a textValue, use that. if (row.textValue) return row.textValue; // Otherwise combine the text of each of the row header columns. let rowHeaderColumnKeys = this.rowHeaderColumnKeys; let text = []; for (let cell of this.getChildren(key)){ let column = this.columns[cell.index]; if (rowHeaderColumnKeys.has(column.key) && cell.textValue) text.push(cell.textValue); if (text.length === rowHeaderColumnKeys.size) break; } return text.join(' '); } constructor(...args){ super(...args); this.headerRows = []; this.columns = []; this.rowHeaderColumnKeys = new Set(); this.head = new (0, $3114c2382242bdc0$exports.NodeValue)('tableheader', -1); this.body = new (0, $3114c2382242bdc0$exports.NodeValue)('tablebody', -2); this.columnsDirty = true; } } const $37b9a5d4bd0d4ded$var$ResizableTableContainerContext = /*#__PURE__*/ (0, $5VUTk$react.createContext)(null); function $37b9a5d4bd0d4ded$var$ResizableTableContainer(props, ref) { let objectRef = (0, $5VUTk$reactariautils.useObjectRef)(ref); let [width, setWidth] = (0, $5VUTk$react.useState)(0); (0, $5VUTk$reactariautils.useResizeObserver)({ ref: objectRef, onResize () { var _objectRef_current; var _objectRef_current_clientWidth; setWidth((_objectRef_current_clientWidth = (_objectRef_current = objectRef.current) === null || _objectRef_current === void 0 ? void 0 : _objectRef_current.clientWidth) !== null && _objectRef_current_clientWidth !== void 0 ? _objectRef_current_clientWidth : 0); } }); (0, $5VUTk$reactariautils.useLayoutEffect)(()=>{ var _objectRef_current; var _objectRef_current_clientWidth; setWidth((_objectRef_current_clientWidth = (_objectRef_current = objectRef.current) === null || _objectRef_current === void 0 ? void 0 : _objectRef_current.clientWidth) !== null && _objectRef_current_clientWidth !== void 0 ? _objectRef_current_clientWidth : 0); }, [ objectRef ]); let ctx = (0, $5VUTk$react.useMemo)(()=>({ tableWidth: width, useTableColumnResizeState: $5VUTk$reactstately.useTableColumnResizeState, onResizeStart: props.onResizeStart, onResize: props.onResize, onResizeEnd: props.onResizeEnd }), [ width, props.onResizeStart, props.onResize, props.onResizeEnd ]); return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("div", { ...(0, $5VUTk$reactariautils.filterDOMProps)(props), ref: objectRef, className: props.className || 'react-aria-ResizableTableContainer', style: props.style, onScroll: props.onScroll }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$ResizableTableContainerContext.Provider, { value: ctx }, props.children)); } const $37b9a5d4bd0d4ded$export$7063e69b8a954175 = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$ResizableTableContainer); const $37b9a5d4bd0d4ded$export$93e4b0b2cc49b648 = /*#__PURE__*/ (0, $5VUTk$react.createContext)(null); const $37b9a5d4bd0d4ded$export$38de1cb0526c21fb = /*#__PURE__*/ (0, $5VUTk$react.createContext)(null); const $37b9a5d4bd0d4ded$export$a2680a798823803c = /*#__PURE__*/ (0, $5VUTk$react.createContext)(null); function $37b9a5d4bd0d4ded$var$Table(props, ref) { [props, ref] = (0, $c5ccf687772c0422$exports.useContextProps)(props, ref, $37b9a5d4bd0d4ded$export$93e4b0b2cc49b648); let initialCollection = (0, $5VUTk$react.useMemo)(()=>new $37b9a5d4bd0d4ded$var$TableCollection(), []); let { portal: portal, collection: collection } = (0, $3114c2382242bdc0$exports.useCollection)(props, initialCollection); let state = (0, $5VUTk$reactstately.useTableState)({ ...props, collection: collection, children: undefined }); let { gridProps: gridProps } = (0, $5VUTk$reactaria.useTable)(props, state, ref); let { dragAndDropHooks: dragAndDropHooks } = props; let selectionManager = state.selectionManager; let hasDragHooks = !!(dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.useDraggableCollectionState); let hasDropHooks = !!(dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.useDroppableCollectionState); let dragHooksProvided = (0, $5VUTk$react.useRef)(hasDragHooks); let dropHooksProvided = (0, $5VUTk$react.useRef)(hasDropHooks); (0, $5VUTk$react.useEffect)(()=>{ if (dragHooksProvided.current !== hasDragHooks) console.warn('Drag hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.'); if (dropHooksProvided.current !== hasDropHooks) console.warn('Drop hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.'); }, [ hasDragHooks, hasDropHooks ]); let dragState = undefined; let dropState = undefined; let droppableCollection = undefined; let isRootDropTarget = false; let dragPreview = null; let preview = (0, $5VUTk$react.useRef)(null); if (hasDragHooks && dragAndDropHooks) { dragState = dragAndDropHooks.useDraggableCollectionState({ collection: collection, selectionManager: selectionManager, preview: dragAndDropHooks.renderDragPreview ? preview : undefined }); dragAndDropHooks.useDraggableCollection({}, dragState, ref); let DragPreview = dragAndDropHooks.DragPreview; dragPreview = dragAndDropHooks.renderDragPreview ? /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement(DragPreview, { ref: preview }, dragAndDropHooks.renderDragPreview) : null; } if (hasDropHooks && dragAndDropHooks) { dropState = dragAndDropHooks.useDroppableCollectionState({ collection: collection, selectionManager: selectionManager }); let keyboardDelegate = new (0, $5VUTk$reactaria.ListKeyboardDelegate)({ collection: collection, disabledKeys: selectionManager.disabledKeys, disabledBehavior: selectionManager.disabledBehavior, ref: ref }); let dropTargetDelegate = dragAndDropHooks.dropTargetDelegate || new dragAndDropHooks.ListDropTargetDelegate(collection, ref); droppableCollection = dragAndDropHooks.useDroppableCollection({ keyboardDelegate: keyboardDelegate, dropTargetDelegate: dropTargetDelegate }, dropState, ref); isRootDropTarget = dropState.isDropTarget({ type: 'root' }); } let { focusProps: focusProps, isFocused: isFocused, isFocusVisible: isFocusVisible } = (0, $5VUTk$reactaria.useFocusRing)(); let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({ className: props.className, style: props.style, defaultClassName: 'react-aria-Table', values: { isDropTarget: isRootDropTarget, isFocused: isFocused, isFocusVisible: isFocusVisible, state: state } }); let isListDraggable = !!(hasDragHooks && !(dragState === null || dragState === void 0 ? void 0 : dragState.isDisabled)); let isListDroppable = !!(hasDropHooks && !(dropState === null || dropState === void 0 ? void 0 : dropState.isDisabled)); let { selectionBehavior: selectionBehavior, selectionMode: selectionMode, disallowEmptySelection: disallowEmptySelection } = state.selectionManager; let ctx = (0, $5VUTk$react.useMemo)(()=>({ selectionBehavior: selectionMode === 'none' ? null : selectionBehavior, selectionMode: selectionMode, disallowEmptySelection: disallowEmptySelection, allowsDragging: hasDragHooks }), [ selectionBehavior, selectionMode, disallowEmptySelection, hasDragHooks ]); let style = renderProps.style; let tableContainerContext = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$var$ResizableTableContainerContext); let layoutState = null; if (tableContainerContext) { layoutState = tableContainerContext.useTableColumnResizeState({ tableWidth: tableContainerContext.tableWidth }, state); style = { ...style, tableLayout: 'fixed', width: 'fit-content' }; } return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, ($parcel$interopDefault($5VUTk$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableOptionsContext.Provider, { value: ctx }, portal), /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, $c5ccf687772c0422$exports.Provider), { values: [ [ $37b9a5d4bd0d4ded$export$38de1cb0526c21fb, state ], [ $37b9a5d4bd0d4ded$export$a2680a798823803c, layoutState ], [ (0, $368d79437ab76c11$exports.DragAndDropContext), { dragAndDropHooks: dragAndDropHooks, dragState: dragState, dropState: dropState } ], [ (0, $368d79437ab76c11$exports.DropIndicatorContext), { render: $37b9a5d4bd0d4ded$var$TableDropIndicatorWrapper } ] ] }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, $5VUTk$reactaria.FocusScope), null, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("table", { ...(0, $5VUTk$reactariautils.filterDOMProps)(props), ...renderProps, ...(0, $5VUTk$reactaria.mergeProps)(gridProps, focusProps, droppableCollection === null || droppableCollection === void 0 ? void 0 : droppableCollection.collectionProps), style: style, ref: ref, slot: props.slot || undefined, onScroll: props.onScroll, "data-allows-dragging": isListDraggable || undefined, "data-drop-target": isRootDropTarget || undefined, "data-focused": isFocused || undefined, "data-focus-visible": isFocusVisible || undefined }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableHeaderRowGroup, { collection: collection }), /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableBodyRowGroup, { collection: collection, isDroppable: isListDroppable }))), dragPreview)); } /** * A table displays data in rows and columns and enables a user to navigate its contents via directional navigation keys, * and optionally supports row selection and sorting. */ const $37b9a5d4bd0d4ded$export$54ec01a60f47d33d = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$Table); const $37b9a5d4bd0d4ded$var$TableOptionsContext = /*#__PURE__*/ (0, $5VUTk$react.createContext)(null); function $37b9a5d4bd0d4ded$export$fddc468cd8cb4db9() { return (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$var$TableOptionsContext); } function $37b9a5d4bd0d4ded$var$TableHeader(props, ref) { let children = (0, $3114c2382242bdc0$exports.useCollectionChildren)({ children: props.children, items: props.columns, dependencies: props.dependencies }); let renderer = typeof props.children === 'function' ? props.children : null; return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, $3114c2382242bdc0$exports.CollectionRendererContext).Provider, { value: renderer }, (0, $3114c2382242bdc0$exports.useSSRCollectionNode)('tableheader', props, ref, null, children)); } /** * A header within a `<Table>`, containing the table columns. */ const $37b9a5d4bd0d4ded$export$f850895b287ef28e = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$TableHeader); function $37b9a5d4bd0d4ded$var$Column(props, ref) { return (0, $3114c2382242bdc0$exports.useSSRCollectionNode)('column', props, ref, props.children); } /** * A column within a `<Table>`. */ const $37b9a5d4bd0d4ded$export$816b5d811295e6bc = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$Column); function $37b9a5d4bd0d4ded$var$TableBody(props, ref) { let children = (0, $3114c2382242bdc0$exports.useCollectionChildren)(props); return (0, $3114c2382242bdc0$exports.useSSRCollectionNode)('tablebody', props, ref, null, children); } /** * The body of a `<Table>`, containing the table rows. */ const $37b9a5d4bd0d4ded$export$76ccd210b9029917 = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$TableBody); function $37b9a5d4bd0d4ded$var$Row(props, ref) { let dependencies = [ props.value ].concat(props.dependencies); let children = (0, $3114c2382242bdc0$exports.useCollectionChildren)({ dependencies: dependencies, children: props.children, items: props.columns, idScope: props.id }); let ctx = (0, $5VUTk$react.useMemo)(()=>({ idScope: props.id, dependencies: dependencies }), [ props.id, ...dependencies ]); return (0, $3114c2382242bdc0$exports.useSSRCollectionNode)('item', props, ref, null, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, $3114c2382242bdc0$exports.CollectionContext).Provider, { value: ctx }, children)); } /** * A row within a `<Table>`. */ const $37b9a5d4bd0d4ded$export$b59bdbef9ce70de2 = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$Row); function $37b9a5d4bd0d4ded$var$Cell(props, ref) { return (0, $3114c2382242bdc0$exports.useSSRCollectionNode)('cell', props, ref, props.children); } /** * A cell within a table row. */ const $37b9a5d4bd0d4ded$export$f6f0c3fe4ec306ea = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$Cell); function $37b9a5d4bd0d4ded$var$TableHeaderRowGroup({ collection: collection }) { let headerRows = (0, $3114c2382242bdc0$exports.useCachedChildren)({ items: collection.headerRows, children: (0, $5VUTk$react.useCallback)((item)=>{ switch(item.type){ case 'headerrow': return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableHeaderRow, { item: item }); default: throw new Error('Unsupported node type in TableHeader: ' + item.type); } }, []) }); let { rowGroupProps: rowGroupProps } = (0, $5VUTk$reactaria.useTableRowGroup)(); var _collection_head_props_className; return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("thead", { ...(0, $5VUTk$reactariautils.filterDOMProps)(collection.head.props), ...rowGroupProps, ref: collection.head.props.ref, className: (_collection_head_props_className = collection.head.props.className) !== null && _collection_head_props_className !== void 0 ? _collection_head_props_className : 'react-aria-TableHeader', style: collection.head.props.style }, headerRows); } function $37b9a5d4bd0d4ded$var$TableBodyRowGroup(props) { let { collection: collection, isDroppable: isDroppable } = props; let bodyRows = (0, $3114c2382242bdc0$exports.useCachedChildren)({ items: collection.rows, children: (0, $5VUTk$react.useCallback)((item)=>{ switch(item.type){ case 'item': return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableRow, { item: item }); default: throw new Error('Unsupported node type in TableBody: ' + item.type); } }, []) }); let state = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$38de1cb0526c21fb); let { dropState: dropState } = (0, $5VUTk$react.useContext)((0, $368d79437ab76c11$exports.DragAndDropContext)); var _dropState_isDropTarget; let isRootDropTarget = isDroppable && !!dropState && ((_dropState_isDropTarget = dropState.isDropTarget({ type: 'root' })) !== null && _dropState_isDropTarget !== void 0 ? _dropState_isDropTarget : false); let bodyProps = collection.body.props; let renderValues = { isDropTarget: isRootDropTarget, isEmpty: collection.size === 0 }; let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({ ...bodyProps, id: undefined, children: undefined, defaultClassName: 'react-aria-TableBody', values: renderValues }); let emptyState; if (collection.size === 0 && bodyProps.renderEmptyState && state) emptyState = /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("tr", { role: "row" }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("td", { role: "gridcell", colSpan: collection.columnCount }, bodyProps.renderEmptyState(renderValues))); let { rowGroupProps: rowGroupProps } = (0, $5VUTk$reactaria.useTableRowGroup)(); return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("tbody", { ...(0, $5VUTk$reactaria.mergeProps)((0, $5VUTk$reactariautils.filterDOMProps)(bodyProps), rowGroupProps), ...renderProps, ref: collection.body.props.ref, "data-empty": collection.size === 0 || undefined }, isDroppable && /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$RootDropIndicator, null), bodyRows, emptyState); } function $37b9a5d4bd0d4ded$var$TableHeaderRow({ item: item }) { let ref = (0, $5VUTk$react.useRef)(null); let state = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$38de1cb0526c21fb); let { rowProps: rowProps } = (0, $5VUTk$reactaria.useTableHeaderRow)({ node: item }, state, ref); let { checkboxProps: checkboxProps } = (0, $5VUTk$reactaria.useTableSelectAllCheckbox)(state); let cells = (0, $3114c2382242bdc0$exports.useCachedChildren)({ items: state.collection.getChildren(item.key), children: (item)=>{ switch(item.type){ case 'column': return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableColumnHeader, { column: item }); default: throw new Error('Unsupported node type in Row: ' + item.type); } } }); return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("tr", { ...rowProps, ref: ref }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, $c5ccf687772c0422$exports.Provider), { values: [ [ (0, $525402dfec7da5bc$exports.CheckboxContext), { slots: { selection: checkboxProps } } ] ] }, cells)); } const $37b9a5d4bd0d4ded$var$ColumnResizerContext = /*#__PURE__*/ (0, $5VUTk$react.createContext)(null); function $37b9a5d4bd0d4ded$var$TableColumnHeader({ column: column }) { var _state_sortDescriptor, _state_sortDescriptor1; let ref = (0, $5VUTk$reactariautils.useObjectRef)(column.props.ref); let state = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$38de1cb0526c21fb); let { columnHeaderProps: columnHeaderProps } = (0, $5VUTk$reactaria.useTableColumnHeader)({ node: column }, state, ref); let { isFocused: isFocused, isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $5VUTk$reactaria.useFocusRing)(); let layoutState = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$a2680a798823803c); let isResizing = false; if (layoutState) isResizing = layoutState.resizingColumn === column.key; else { for(let prop in [ 'width', 'defaultWidth', 'minWidth', 'maxWidth' ])if (prop in column.props) console.warn(`The ${prop} prop on a <Column> only applies when a <Table> is wrapped in a <ResizableTableContainer>. If you aren't using column resizing, you can set the width of a column with CSS.`); } let props = column.props; let { hoverProps: hoverProps, isHovered: isHovered } = (0, $5VUTk$reactaria.useHover)({ isDisabled: !props.allowsSorting }); let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({ ...props, id: undefined, children: column.rendered, defaultClassName: 'react-aria-Column', values: { isHovered: isHovered, isFocused: isFocused, isFocusVisible: isFocusVisible, allowsSorting: column.props.allowsSorting, sortDirection: ((_state_sortDescriptor = state.sortDescriptor) === null || _state_sortDescriptor === void 0 ? void 0 : _state_sortDescriptor.column) === column.key ? state.sortDescriptor.direction : undefined, isResizing: isResizing, startResize: ()=>{ if (layoutState) { layoutState.startResize(column.key); state.setKeyboardNavigationDisabled(true); } else throw new Error('Wrap your <Table> in a <ResizableTableContainer> to enable column resizing'); }, sort: (direction)=>{ state.sort(column.key, direction); } } }); let style = renderProps.style; if (layoutState) style = { ...style, width: layoutState.getColumnWidth(column.key) }; return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("th", { ...(0, $5VUTk$reactaria.mergeProps)((0, $5VUTk$reactariautils.filterDOMProps)(props), columnHeaderProps, focusProps, hoverProps), ...renderProps, style: style, colSpan: column.colspan, ref: ref, "data-hovered": isHovered || undefined, "data-focused": isFocused || undefined, "data-focus-visible": isFocusVisible || undefined, "data-resizing": isResizing || undefined, "data-allows-sorting": column.props.allowsSorting || undefined, "data-sort-direction": ((_state_sortDescriptor1 = state.sortDescriptor) === null || _state_sortDescriptor1 === void 0 ? void 0 : _state_sortDescriptor1.column) === column.key ? state.sortDescriptor.direction : undefined }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$ColumnResizerContext.Provider, { value: { column: column, triggerRef: ref } }, renderProps.children)); } function $37b9a5d4bd0d4ded$var$ColumnResizer(props, ref) { let layoutState = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$a2680a798823803c); if (!layoutState) throw new Error('Wrap your <Table> in a <ResizableTableContainer> to enable column resizing'); let stringFormatter = (0, $5VUTk$reactaria.useLocalizedStringFormatter)((0, ($parcel$interopDefault($d72d752ea1c67b9a$exports))), 'react-aria-components'); let { onResizeStart: onResizeStart, onResize: onResize, onResizeEnd: onResizeEnd } = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$var$ResizableTableContainerContext); let { column: column, triggerRef: triggerRef } = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$var$ColumnResizerContext); let inputRef = (0, $5VUTk$react.useRef)(null); let { resizerProps: resizerProps, inputProps: inputProps, isResizing: isResizing } = (0, $5VUTk$reactaria.useTableColumnResize)({ column: column, 'aria-label': props['aria-label'] || stringFormatter.format('tableResizer'), onResizeStart: onResizeStart, onResize: onResize, onResizeEnd: onResizeEnd, triggerRef: triggerRef }, layoutState, inputRef); let { focusProps: focusProps, isFocused: isFocused, isFocusVisible: isFocusVisible } = (0, $5VUTk$reactaria.useFocusRing)(); let { hoverProps: hoverProps, isHovered: isHovered } = (0, $5VUTk$reactaria.useHover)(props); let isEResizable = layoutState.getColumnMinWidth(column.key) >= layoutState.getColumnWidth(column.key); let isWResizable = layoutState.getColumnMaxWidth(column.key) <= layoutState.getColumnWidth(column.key); let { direction: direction } = (0, $5VUTk$reactaria.useLocale)(); let resizableDirection = 'both'; if (isEResizable) resizableDirection = direction === 'rtl' ? 'right' : 'left'; else if (isWResizable) resizableDirection = direction === 'rtl' ? 'left' : 'right'; else resizableDirection = 'both'; let objectRef = (0, $5VUTk$reactariautils.useObjectRef)(ref); let [cursor, setCursor] = (0, $5VUTk$react.useState)(''); (0, $5VUTk$react.useEffect)(()=>{ if (!objectRef.current) return; let style = window.getComputedStyle(objectRef.current); setCursor(style.cursor); }, [ objectRef, resizableDirection ]); let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({ ...props, defaultClassName: 'react-aria-ColumnResizer', values: { isFocused: isFocused, isFocusVisible: isFocusVisible, isResizing: isResizing, isHovered: isHovered, resizableDirection: resizableDirection } }); let [isMouseDown, setMouseDown] = (0, $5VUTk$react.useState)(false); let onPointerDown = (e)=>{ if (e.pointerType === 'mouse') setMouseDown(true); }; if (!isResizing && isMouseDown) setMouseDown(false); return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("div", { ref: objectRef, role: "presentation", ...renderProps, ...(0, $5VUTk$reactaria.mergeProps)(resizerProps, { onPointerDown: onPointerDown }, hoverProps), "data-hovered": isHovered || undefined, "data-focused": isFocused || undefined, "data-focus-visible": isFocusVisible || undefined, "data-resizing": isResizing || undefined, "data-resizable-direction": resizableDirection }, renderProps.children, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("input", { ref: inputRef, ...(0, $5VUTk$reactaria.mergeProps)(inputProps, focusProps) }), isResizing && isMouseDown && /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$reactdom))).createPortal(/*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("div", { style: { position: 'fixed', top: 0, left: 0, bottom: 0, right: 0, cursor: cursor } }), document.body)); } const $37b9a5d4bd0d4ded$export$ee689e97a7664bfd = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$ColumnResizer); function $37b9a5d4bd0d4ded$var$TableRow({ item: item }) { let ref = (0, $5VUTk$reactariautils.useObjectRef)(item.props.ref); let state = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$38de1cb0526c21fb); let { dragAndDropHooks: dragAndDropHooks, dragState: dragState, dropState: dropState } = (0, $5VUTk$react.useContext)((0, $368d79437ab76c11$exports.DragAndDropContext)); let { rowProps: rowProps, ...states } = (0, $5VUTk$reactaria.useTableRow)({ node: item, shouldSelectOnPressUp: !!dragState }, state, ref); let { isFocused: isFocused, isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $5VUTk$reactaria.useFocusRing)(); let { hoverProps: hoverProps, isHovered: isHovered } = (0, $5VUTk$reactaria.useHover)({ isDisabled: !states.allowsSelection && !states.hasAction, onHoverStart: item.props.onHoverStart, onHoverChange: item.props.onHoverChange, onHoverEnd: item.props.onHoverEnd }); let { checkboxProps: checkboxProps } = (0, $5VUTk$reactaria.useTableSelectionCheckbox)({ key: item.key }, state); let draggableItem = undefined; if (dragState && dragAndDropHooks) draggableItem = dragAndDropHooks.useDraggableItem({ key: item.key, hasDragButton: true }, dragState); let dropIndicator = undefined; let dropIndicatorRef = (0, $5VUTk$react.useRef)(null); let { visuallyHiddenProps: visuallyHiddenProps } = (0, $5VUTk$reactaria.useVisuallyHidden)(); if (dropState && dragAndDropHooks) dropIndicator = dragAndDropHooks.useDropIndicator({ target: { type: 'item', key: item.key, dropPosition: 'on' } }, dropState, dropIndicatorRef); let renderDropIndicator = (dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.renderDropIndicator) || ((target)=>/*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, $368d79437ab76c11$exports.DropIndicator), { target: target })); let dragButtonRef = (0, $5VUTk$react.useRef)(null); (0, $5VUTk$react.useEffect)(()=>{ if (dragState && !dragButtonRef.current) console.warn('Draggable items in a Table must contain a <Button slot="drag"> element so that keyboard and screen reader users can drag them.'); // eslint-disable-next-line }, []); let props = item.props; let isDragging = dragState && dragState.isDragging(item.key); // eslint-disable-next-line @typescript-eslint/no-unused-vars let { children: _, ...restProps } = props; let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({ ...restProps, id: undefined, defaultClassName: 'react-aria-Row', values: { ...states, isHovered: isHovered, isFocused: isFocused, isFocusVisible: isFocusVisible, selectionMode: state.selectionManager.selectionMode, selectionBehavior: state.selectionManager.selectionBehavior, isDragging: isDragging, isDropTarget: dropIndicator === null || dropIndicator === void 0 ? void 0 : dropIndicator.isDropTarget } }); let cells = (0, $3114c2382242bdc0$exports.useCachedChildren)({ items: state.collection.getChildren(item.key), children: (item)=>{ switch(item.type){ case 'cell': return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableCell, { cell: item }); default: throw new Error('Unsupported node type in Row: ' + item.type); } } }); return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, ($parcel$interopDefault($5VUTk$react))).Fragment, null, (dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.useDropIndicator) && renderDropIndicator({ type: 'item', key: item.key, dropPosition: 'before' }), dropIndicator && !dropIndicator.isHidden && /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("tr", { role: "row", style: { height: 0 } }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("td", { role: "gridcell", colSpan: state.collection.columnCount, style: { padding: 0 } }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("div", { role: "button", ...visuallyHiddenProps, ...dropIndicator.dropIndicatorProps, ref: dropIndicatorRef }))), /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("tr", { ...(0, $5VUTk$reactaria.mergeProps)((0, $5VUTk$reactariautils.filterDOMProps)(props), rowProps, focusProps, hoverProps, draggableItem === null || draggableItem === void 0 ? void 0 : draggableItem.dragProps), ...renderProps, ref: ref, "data-disabled": states.isDisabled || undefined, "data-selected": states.isSelected || undefined, "data-hovered": isHovered || undefined, "data-focused": states.isFocused || undefined, "data-focus-visible": isFocusVisible || undefined, "data-pressed": states.isPressed || undefined, "data-dragging": isDragging || undefined, "data-drop-target": (dropIndicator === null || dropIndicator === void 0 ? void 0 : dropIndicator.isDropTarget) || undefined, "data-selection-mode": state.selectionManager.selectionMode === 'none' ? undefined : state.selectionManager.selectionMode }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement((0, $c5ccf687772c0422$exports.Provider), { values: [ [ (0, $525402dfec7da5bc$exports.CheckboxContext), { slots: { selection: checkboxProps } } ], [ (0, $b856e6788a7ea5bf$exports.ButtonContext), { slots: { [(0, $c5ccf687772c0422$exports.DEFAULT_SLOT)]: {}, drag: { ...draggableItem === null || draggableItem === void 0 ? void 0 : draggableItem.dragButtonProps, ref: dragButtonRef, style: { pointerEvents: 'none' } } } } ] ] }, cells)), (dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : dragAndDropHooks.useDropIndicator) && state.collection.getKeyAfter(item.key) == null && renderDropIndicator({ type: 'item', key: item.key, dropPosition: 'after' })); } function $37b9a5d4bd0d4ded$var$TableCell({ cell: cell }) { let ref = (0, $5VUTk$reactariautils.useObjectRef)(cell.props.ref); let state = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$38de1cb0526c21fb); let { dragState: dragState } = (0, $5VUTk$react.useContext)((0, $368d79437ab76c11$exports.DragAndDropContext)); // @ts-ignore cell.column = state.collection.columns[cell.index]; let { gridCellProps: gridCellProps, isPressed: isPressed } = (0, $5VUTk$reactaria.useTableCell)({ node: cell, shouldSelectOnPressUp: !!dragState }, state, ref); let { isFocused: isFocused, isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $5VUTk$reactaria.useFocusRing)(); let { hoverProps: hoverProps, isHovered: isHovered } = (0, $5VUTk$reactaria.useHover)({}); let props = cell.props; let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({ ...props, id: undefined, defaultClassName: 'react-aria-Cell', values: { isFocused: isFocused, isFocusVisible: isFocusVisible, isPressed: isPressed, isHovered: isHovered } }); return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("td", { ...(0, $5VUTk$reactaria.mergeProps)((0, $5VUTk$reactariautils.filterDOMProps)(props), gridCellProps, focusProps, hoverProps), ...renderProps, ref: ref, "data-focused": isFocused || undefined, "data-focus-visible": isFocusVisible || undefined, "data-pressed": isPressed || undefined }, renderProps.children); } function $37b9a5d4bd0d4ded$var$TableDropIndicatorWrapper(props, ref) { ref = (0, $5VUTk$reactariautils.useObjectRef)(ref); let { dragAndDropHooks: dragAndDropHooks, dropState: dropState } = (0, $5VUTk$react.useContext)((0, $368d79437ab76c11$exports.DragAndDropContext)); let buttonRef = (0, $5VUTk$react.useRef)(null); let { dropIndicatorProps: dropIndicatorProps, isHidden: isHidden, isDropTarget: isDropTarget } = dragAndDropHooks.useDropIndicator(props, dropState, buttonRef); if (isHidden) return null; return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement($37b9a5d4bd0d4ded$var$TableDropIndicatorForwardRef, { ...props, dropIndicatorProps: dropIndicatorProps, isDropTarget: isDropTarget, buttonRef: buttonRef, ref: ref }); } function $37b9a5d4bd0d4ded$var$TableDropIndicator(props, ref) { let { dropIndicatorProps: dropIndicatorProps, isDropTarget: isDropTarget, buttonRef: buttonRef, ...otherProps } = props; let state = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$38de1cb0526c21fb); let { visuallyHiddenProps: visuallyHiddenProps } = (0, $5VUTk$reactaria.useVisuallyHidden)(); let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({ ...otherProps, defaultClassName: 'react-aria-DropIndicator', values: { isDropTarget: isDropTarget } }); return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("tr", { ...(0, $5VUTk$reactariautils.filterDOMProps)(props), ...renderProps, role: "row", ref: ref, "data-drop-target": isDropTarget || undefined }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("td", { role: "gridcell", colSpan: state.collection.columnCount, style: { padding: 0 } }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("div", { ...visuallyHiddenProps, role: "button", ...dropIndicatorProps, ref: buttonRef }), renderProps.children)); } const $37b9a5d4bd0d4ded$var$TableDropIndicatorForwardRef = /*#__PURE__*/ (0, $5VUTk$react.forwardRef)($37b9a5d4bd0d4ded$var$TableDropIndicator); function $37b9a5d4bd0d4ded$var$RootDropIndicator() { let state = (0, $5VUTk$react.useContext)($37b9a5d4bd0d4ded$export$38de1cb0526c21fb); let { dragAndDropHooks: dragAndDropHooks, dropState: dropState } = (0, $5VUTk$react.useContext)((0, $368d79437ab76c11$exports.DragAndDropContext)); let ref = (0, $5VUTk$react.useRef)(null); let { dropIndicatorProps: dropIndicatorProps } = dragAndDropHooks.useDropIndicator({ target: { type: 'root' } }, dropState, ref); let isDropTarget = dropState.isDropTarget({ type: 'root' }); let { visuallyHiddenProps: visuallyHiddenProps } = (0, $5VUTk$reactaria.useVisuallyHidden)(); if (!isDropTarget && dropIndicatorProps['aria-hidden']) return null; return /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("tr", { role: "row", "aria-hidden": dropIndicatorProps['aria-hidden'], style: { height: 0 } }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("td", { role: "gridcell", colSpan: state.collection.columnCount, style: { padding: 0 } }, /*#__PURE__*/ (0, ($parcel$interopDefault($5VUTk$react))).createElement("div", { role: "button", ...visuallyHiddenProps, ...dropIndicatorProps, ref: ref }))); } //# sourceMappingURL=Table.main.js.map