{"version":3,"file":"index.cjs","names":[],"sources":["../../src/table/table.classes.ts","../../src/table/table.api.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nexport const tableClasses = {\n  actionBar: \"qui-table__action-bar\",\n  body: \"qui-table__body\",\n  cell: \"qui-table__cell\",\n  cellAction: \"qui-table__cell-action\",\n  columnDropIndicator: \"qui-table__column-drop-indicator\",\n  columnFilterAction: \"qui-table__column-filter-action\",\n  columnHeaderAction: \"qui-table__column-header-action\",\n  columnResizer: \"qui-table__column-resizer\",\n  columnResizerOverlay: \"qui-table__column-resizer-overlay\",\n  columnSortAction: \"qui-table__column-sort-action\",\n  dragHandle: \"qui-table__drag-handle\",\n  dragPreview: \"qui-table__drag-preview\",\n  footer: \"qui-table__footer\",\n  header: \"qui-table__header\",\n  headerCell: \"qui-table__header-cell\",\n  pagination: \"qui-table__pagination\",\n  root: \"qui-table__root\",\n  row: \"qui-table__row\",\n  rowDropIndicator: \"qui-table__row-drop-indicator\",\n  rowExpandButton: \"qui-table__row-expand-button\",\n  rowSelectionIndicator: \"qui-table__row-selection-indicator\",\n  scrollContainer: \"qui-table__scroll-container\",\n  table: \"qui-table__table\",\n  titleBar: \"qui-table__title-bar\",\n} as const\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {booleanDataAttr} from \"@qualcomm-ui/utils/attributes\"\nimport type {PropNormalizer} from \"@qualcomm-ui/utils/machine\"\n\nimport {tableClasses} from \"./table.classes.js\"\nimport type {\n  QdsTableActionBarBindings,\n  QdsTableApi,\n  QdsTableApiProps,\n  QdsTableBodyBindings,\n  QdsTableCellActionBindings,\n  QdsTableCellBindings,\n  QdsTableCellProps,\n  QdsTableColumnDragPreviewBindings,\n  QdsTableColumnDropIndicatorBindings,\n  QdsTableColumnDropIndicatorProps,\n  QdsTableColumnFilterActionBindings,\n  QdsTableColumnFilterProps,\n  QdsTableColumnHeaderActionBindings,\n  QdsTableColumnResizerBindings,\n  QdsTableColumnResizerProps,\n  QdsTableColumnSortActionBindings,\n  QdsTableColumnSortActionProps,\n  QdsTableDragHandleBindings,\n  QdsTableFooterBindings,\n  QdsTableHeaderBindings,\n  QdsTableHeaderCellBindings,\n  QdsTableHeaderCellProps,\n  QdsTablePaginationBindings,\n  QdsTableRootBindings,\n  QdsTableRowBindings,\n  QdsTableRowDragPreviewBindings,\n  QdsTableRowDropIndicatorBindings,\n  QdsTableRowDropIndicatorProps,\n  QdsTableRowExpandButtonBindings,\n  QdsTableRowExpandButtonProps,\n  QdsTableRowProps,\n  QdsTableScrollContainerBindings,\n  QdsTableTableBindings,\n  QdsTableTitleBarBindings,\n} from \"./table.types.js\"\n\nexport function createQdsTableApi(normalize: PropNormalizer): QdsTableApi {\n  return {\n    getActionBarBindings(): QdsTableActionBarBindings {\n      return normalize.element({className: tableClasses.actionBar})\n    },\n    getBodyBindings(): QdsTableBodyBindings {\n      return normalize.element({className: tableClasses.body})\n    },\n    getCellActionBindings(): QdsTableCellActionBindings {\n      return normalize.element({className: tableClasses.cellAction})\n    },\n    getCellBindings(props: QdsTableCellProps): QdsTableCellBindings {\n      return normalize.element({\n        className: tableClasses.cell,\n        \"data-aggregated\": booleanDataAttr(props.cell?.getIsAggregated?.()),\n        \"data-grouped\": booleanDataAttr(props.cell?.getIsGrouped?.()),\n      })\n    },\n    getColumnDragPreviewBindings(): QdsTableColumnDragPreviewBindings {\n      return normalize.element({className: tableClasses.dragPreview})\n    },\n    getColumnDropIndicatorBindings(\n      props: QdsTableColumnDropIndicatorProps,\n    ): QdsTableColumnDropIndicatorBindings {\n      const index = props.columnIndex ?? -1\n      const sourceIndex = props.sourceColumnIndex ?? -1\n\n      return normalize.element({\n        className: tableClasses.columnDropIndicator,\n        \"data-closest-edge\": props.closestEdge,\n        \"data-drag-direction\":\n          index > -1 && sourceIndex > -1 && index > sourceIndex\n            ? \"right\"\n            : \"left\",\n        \"data-is-over-source\": booleanDataAttr(sourceIndex === index),\n      })\n    },\n    getColumnFilterActionBindings(\n      props: QdsTableColumnFilterProps,\n    ): QdsTableColumnFilterActionBindings {\n      return normalize.button({\n        className: tableClasses.columnFilterAction,\n        \"data-is-filtered\": booleanDataAttr(\n          props?.isFiltered || props.header?.column.getIsFiltered(),\n        ),\n      })\n    },\n    getColumnHeaderActionBindings(): QdsTableColumnHeaderActionBindings {\n      return normalize.button({className: tableClasses.columnHeaderAction})\n    },\n    getColumnResizerBindings(\n      props: QdsTableColumnResizerProps,\n    ): QdsTableColumnResizerBindings {\n      const header = props.header\n      const isResizing = header.column.getIsResizing()\n      return normalize.button({\n        className: tableClasses.columnResizer,\n        \"data-resizing\": booleanDataAttr(isResizing),\n        onDoubleClick: () => header.column.resetSize(),\n        onMouseDown: (event) => header.getResizeHandler()(event),\n        onTouchStart: (event) => header.getResizeHandler()(event),\n      })\n    },\n    getColumnSortActionBindings(\n      props: QdsTableColumnSortActionProps,\n    ): QdsTableColumnSortActionBindings {\n      const sortDirection = props.header.column.getIsSorted()\n      const nextOrder = props.header.column.getNextSortingOrder()\n      // TODO: validate with regression test\n      return normalize.element({\n        \"aria-label\":\n          nextOrder === \"asc\"\n            ? \"Sort ascending\"\n            : nextOrder === \"desc\"\n              ? \"Sort descending\"\n              : \"Remove sort\",\n        className: tableClasses.columnSortAction,\n        \"data-sort-direction\": sortDirection || undefined,\n        onClick: (event) => {\n          if (!event.defaultPrevented) {\n            return props.header.column.getToggleSortingHandler()?.(event)\n          }\n        },\n      })\n    },\n    getDragHandleBindings(): QdsTableDragHandleBindings {\n      return normalize.element({className: tableClasses.dragHandle})\n    },\n    getFooterBindings(): QdsTableFooterBindings {\n      return normalize.element({className: tableClasses.footer})\n    },\n    getHeaderBindings(): QdsTableHeaderBindings {\n      return normalize.element({className: tableClasses.header})\n    },\n    getHeaderCellBindings(\n      props: QdsTableHeaderCellProps,\n    ): QdsTableHeaderCellBindings {\n      return normalize.element({\n        className: tableClasses.headerCell,\n        \"data-dragging\": booleanDataAttr(props.isDragging),\n        \"data-dragging-over\": booleanDataAttr(props.isDraggingOver),\n        \"data-resizing\": booleanDataAttr(props.isResizing),\n      })\n    },\n    getPaginationBindings(): QdsTablePaginationBindings {\n      return normalize.element({className: tableClasses.pagination})\n    },\n    getRootBindings(props: QdsTableApiProps): QdsTableRootBindings {\n      const size = props.size || \"md\"\n      return normalize.element({\n        className: tableClasses.root,\n        \"data-show-column-divider\": booleanDataAttr(props.showColumnDivider),\n        \"data-size\": size,\n      })\n    },\n    getRowBindings(props: QdsTableRowProps): QdsTableRowBindings {\n      return normalize.element({\n        className: tableClasses.row,\n        \"data-dragging\": booleanDataAttr(props.isDragging),\n        \"data-dragging-over\": booleanDataAttr(props.isDraggingOver),\n        \"data-selected\": booleanDataAttr(props.isSelected),\n      })\n    },\n    getRowDragPreviewBindings(): QdsTableRowDragPreviewBindings {\n      return normalize.element({className: tableClasses.dragPreview})\n    },\n    getRowDropIndicatorBindings(\n      props: QdsTableRowDropIndicatorProps,\n    ): QdsTableRowDropIndicatorBindings {\n      const rowIndex = props.rowIndex ?? -1\n      const sourceIndex = props.sourceIndex ?? -1\n\n      return normalize.element({\n        className: tableClasses.rowDropIndicator,\n        \"data-closest-edge\": props.closestEdge,\n        \"data-drag-direction\":\n          rowIndex > -1 && sourceIndex > -1 && rowIndex > sourceIndex\n            ? \"down\"\n            : \"up\",\n        \"data-is-over-source\": booleanDataAttr(sourceIndex === rowIndex),\n      })\n    },\n    getRowExpandButtonBindings(\n      props: QdsTableRowExpandButtonProps,\n    ): QdsTableRowExpandButtonBindings {\n      return normalize.button({\n        \"aria-label\":\n          (props.isExpanded ?? props.row.getIsExpanded())\n            ? \"Collapse row\"\n            : \"Expand row\",\n        className: tableClasses.rowExpandButton,\n        \"data-expanded\": booleanDataAttr(props.row.getIsExpanded()),\n        disabled: !props.row.getCanExpand(),\n        onClick: props.row.getToggleExpandedHandler(),\n      })\n    },\n    getScrollContainerBindings(): QdsTableScrollContainerBindings {\n      return normalize.element({className: tableClasses.scrollContainer})\n    },\n    getTableBindings(): QdsTableTableBindings {\n      return normalize.element({className: tableClasses.table})\n    },\n    getTitleBarBindings(): QdsTableTitleBarBindings {\n      return normalize.element({className: tableClasses.titleBar})\n    },\n  }\n}\n"],"mappings":"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"}