@osdk/react-components 0.2.0-beta.3 → 0.2.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +39 -22
- package/build/browser/object-table/DefaultCellRenderer.js +43 -0
- package/build/browser/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/browser/object-table/EditableCell.js +91 -0
- package/build/browser/object-table/EditableCell.js.map +1 -0
- package/build/browser/object-table/EditableCell.module.css +3 -0
- package/build/browser/object-table/EditableCell.module.css.js +6 -0
- package/build/browser/object-table/ObjectTable.js +29 -2
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/Table.js +18 -3
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/Table.module.css +17 -1
- package/build/browser/object-table/Table.module.css.js +3 -1
- package/build/browser/object-table/TableBody.module.css +2 -0
- package/build/browser/object-table/TableCell.module.css +11 -1
- package/build/browser/object-table/TableHeader.module.css +4 -2
- package/build/browser/object-table/TableRow.module.css +2 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js +13 -1
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnDefs.js +10 -2
- package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/browser/object-table/hooks/useEditableTable.js +57 -0
- package/build/browser/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/browser/object-table/utils/getCellId.js +27 -0
- package/build/browser/object-table/utils/getCellId.js.map +1 -0
- package/build/browser/object-table/utils/types.js.map +1 -1
- package/build/browser/public/experimental.js.map +1 -1
- package/build/browser/styles.css +42 -4
- package/build/cjs/public/experimental.cjs +485 -289
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +78 -48
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +44 -10
- package/build/esm/object-table/DefaultCellRenderer.js +43 -0
- package/build/esm/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/esm/object-table/EditableCell.js +91 -0
- package/build/esm/object-table/EditableCell.js.map +1 -0
- package/build/esm/object-table/EditableCell.module.css +3 -0
- package/build/esm/object-table/ObjectTable.js +29 -2
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/Table.js +18 -3
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/Table.module.css +17 -1
- package/build/esm/object-table/TableBody.module.css +2 -0
- package/build/esm/object-table/TableCell.module.css +11 -1
- package/build/esm/object-table/TableHeader.module.css +4 -2
- package/build/esm/object-table/TableRow.module.css +2 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js +13 -1
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnDefs.js +10 -2
- package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/esm/object-table/hooks/useEditableTable.js +57 -0
- package/build/esm/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/esm/object-table/utils/getCellId.js +27 -0
- package/build/esm/object-table/utils/getCellId.js.map +1 -0
- package/build/esm/object-table/utils/types.js.map +1 -1
- package/build/esm/public/experimental.js.map +1 -1
- package/build/types/object-table/DefaultCellRenderer.d.ts +3 -0
- package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -0
- package/build/types/object-table/EditableCell.d.ts +10 -0
- package/build/types/object-table/EditableCell.d.ts.map +1 -0
- package/build/types/object-table/ObjectTable.d.ts +1 -1
- package/build/types/object-table/ObjectTable.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +15 -0
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/Table.d.ts +17 -3
- package/build/types/object-table/Table.d.ts.map +1 -1
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts +1 -0
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts.map +1 -0
- package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
- package/build/types/object-table/hooks/useEditableTable.d.ts +22 -0
- package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -0
- package/build/types/object-table/utils/getCellId.d.ts +3 -0
- package/build/types/object-table/utils/getCellId.d.ts.map +1 -0
- package/build/types/object-table/utils/types.d.ts +9 -0
- package/build/types/object-table/utils/types.d.ts.map +1 -1
- package/build/types/public/experimental.d.ts +1 -0
- package/build/types/public/experimental.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/object-table/hooks/useColumnDefs.ts","../../../src/object-table/utils/constants.ts","../../../src/object-table/hooks/useColumnPinning.ts","../../../src/object-table/hooks/useColumnResize.ts","../../../src/object-table/hooks/useColumnVisibility.ts","../../../src/object-table/hooks/useObjectTableData.ts","../../../src/object-table/utils/getRowId.ts","../../../src/object-table/hooks/useRowSelection.ts","../../../src/base-components/checkbox/Checkbox.module.css","../../../src/base-components/checkbox/Checkbox.tsx","../../../src/object-table/SelectionCells.tsx","../../../src/object-table/hooks/useSelectionColumn.tsx","../../../src/object-table/hooks/useTableSorting.ts","../../../src/object-table/LoadingCell.module.css","../../../src/object-table/TableCell.module.css","../../../src/object-table/LoadingCell.tsx","../../../src/object-table/TableRow.module.css","../../../src/object-table/LoadingRow.tsx","../../../src/object-table/TableBody.module.css","../../../src/base-components/action-button/ActionButton.module.css","../../../src/base-components/action-button/ActionButton.tsx","../../../src/base-components/dialog/Dialog.module.css","../../../src/base-components/dialog/Dialog.tsx","../../../src/base-components/draggable-list/DraggableList.module.css","../../../src/base-components/draggable-list/DraggableList.tsx","../../../src/base-components/search-bar/SearchBar.module.css","../../../src/base-components/search-bar/SearchBar.tsx","../../../src/object-table/ColumnConfigDialog.module.css","../../../src/object-table/ColumnConfigDialog.tsx","../../../src/object-table/MultiColumnSortDialog.module.css","../../../src/object-table/SortableItemsList.tsx","../../../src/object-table/MultiColumnSortDialog.tsx","../../../src/object-table/TableHeader.module.css","../../../src/object-table/TableHeaderContent.module.css","../../../src/object-table/TableHeaderContent.tsx","../../../src/object-table/TableHeaderWithPopover.module.css","../../../src/object-table/TableHeaderWithPopover.tsx","../../../src/object-table/utils/getColumnPinningStyles.ts","../../../src/object-table/TableHeader.tsx","../../../src/object-table/LoadingStateTable.tsx","../../../src/object-table/NonIdealState.module.css","../../../src/object-table/NonIdealState.tsx","../../../src/object-table/Table.module.css","../../../src/object-table/CellContextMenu.module.css","../../../src/object-table/CellContextMenu.tsx","../../../src/object-table/hooks/useCellContextMenu.ts","../../../src/object-table/TableCell.tsx","../../../src/object-table/TableRow.tsx","../../../src/object-table/TableBody.tsx","../../../src/object-table/Table.tsx","../../../src/object-table/ObjectTable.tsx"],"names":["useOsdkMetadata","useMemo","useState","useEffect","useCallback","useOsdkObjects","React","BaseUICheckbox","classnames","Minus","Tick","useRef","classNames","_extends","Button","BaseUIDialog","Cross","useSortable","CSS","Trash","SmallCross","DragHandleVertical","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","BaseDndContext","closestCenter","SortableContext","verticalListSortingStrategy","Search","Input","arrayMove","Cog","Collapsible","CaretDown","SmallInfoSign","SortAlphabetical","SortAlphabeticalDesc","DialogTitle","Menu","Add","flexRender","Pin","ChevronDown","Unpin","Sort","Remove","VerticalDistribution","Settings","header","createPortal","useVirtualizer","useLayoutEffect","useReactTable","getCoreRowModel"],"mappings":"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","file":"experimental.cjs","sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useMemo } from \"react\";\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs(objectType, columnDefinitions) {\n const {\n metadata,\n loading,\n error\n } = useOsdkMetadata(objectType);\n const columns = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n return {\n columns,\n loading,\n error\n };\n}\nfunction getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {\n return columnDefinitions.map(col => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n renderCell,\n renderHeader,\n columnName\n } = col;\n const propertyMetadata = locator.type === \"property\" ? objectProperties?.[locator.id] : undefined;\n const colKey = locator.id;\n const colDef = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isVisible: col.isVisible !== false\n },\n size: width,\n ...(minWidth ? {\n minSize: minWidth\n } : {}),\n ...(maxWidth ? {\n maxSize: maxWidth\n } : {}),\n enableResizing: resizable,\n enableSorting: orderable,\n enableColumnFilter: filterable,\n cell: cellContext => {\n const object = cellContext.row.original;\n return renderCell ? renderCell(object, locator) : cellContext.getValue();\n }\n };\n return colDef;\n });\n}\nfunction getDefaultColumns(objectProperties) {\n if (!objectProperties) return [];\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef = {\n accessorKey: key,\n header: property.displayName ?? key\n };\n return colDef;\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const SELECTION_COLUMN_ID = \"__selection__\";","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\nexport const useColumnPinning = ({\n columnDefinitions,\n hasSelectionColumn,\n onColumnsPinnedChanged\n}) => {\n const [columnPinning, setColumnPinning] = useState({\n left: [],\n right: []\n });\n\n // Update column pinning when columnDefinitions change\n useEffect(() => {\n const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);\n const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];\n setColumnPinning({\n left: [...selectionCol, ...(defaultState.left ?? [])],\n right: [...(defaultState.right ?? [])]\n });\n }, [columnDefinitions, hasSelectionColumn]);\n const onColumnPinningChange = useCallback(updater => {\n setColumnPinning(prev => {\n const newPinning = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnsPinnedChanged) {\n const newStates = convertColumnPinningStateToArray(newPinning);\n const stateWithoutSelectionCol = newStates.filter(state => state.columnId !== SELECTION_COLUMN_ID);\n onColumnsPinnedChanged(stateWithoutSelectionCol);\n }\n return newPinning;\n });\n }, [onColumnsPinnedChanged]);\n return {\n columnPinning,\n onColumnPinningChange\n };\n};\nconst getColumnPinningStateFromColumnDefs = columnDefinitions => {\n if (!columnDefinitions) {\n return {};\n }\n const columnPinningState = columnDefinitions.reduce((acc, {\n locator,\n pinned\n }) => {\n const colKey = locator.id.toString();\n const isPinned = pinned != null && pinned !== \"none\";\n if (!isPinned) {\n return acc;\n }\n if (pinned === \"left\") {\n return {\n ...acc,\n left: [...(acc.left ?? []), colKey]\n };\n }\n return {\n ...acc,\n right: [...(acc.right ?? []), colKey]\n };\n }, {\n left: [],\n right: []\n });\n return columnPinningState;\n};\n\n/**\n * Converts ColumnPinningState to array format for the callback\n */\nfunction convertColumnPinningStateToArray(pinningState) {\n return [...(pinningState.left ?? []).map(columnId => ({\n columnId,\n pinned: \"left\"\n })), ...(pinningState.right ?? []).map(columnId => ({\n columnId,\n pinned: \"right\"\n }))];\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useColumnResize = ({\n onColumnResize\n}) => {\n const [columnSizing, setColumnSizing] = useState({});\n const onColumnSizingChange = useCallback(updater => {\n setColumnSizing(prev => {\n const newState = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnResize) {\n for (const columnId of Object.keys(newState)) {\n if (newState[columnId] !== prev[columnId]) {\n onColumnResize(columnId, newState[columnId]);\n }\n }\n for (const columnId of Object.keys(prev)) {\n if (!(columnId in newState)) {\n onColumnResize(columnId, null);\n }\n }\n }\n return newState;\n });\n }, [onColumnResize]);\n return {\n columnSizing,\n onColumnSizingChange\n };\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nexport const useColumnVisibility = ({\n allColumns,\n onColumnVisibilityChanged\n}) => {\n const [columnVisibility, setColumnVisibility] = useState(() => getColumnVisibilityState(allColumns));\n const [columnOrder, setColumnOrder] = useState(() => getColumnOrder(allColumns));\n\n // TODO: Explore other ways to respond to props changes for controlled mode\n useEffect(() => {\n setColumnVisibility(getColumnVisibilityState(allColumns));\n }, [allColumns]);\n useEffect(() => {\n setColumnOrder(getColumnOrder(allColumns));\n }, [allColumns]);\n const onColumnVisibilityChange = useCallback(updaterOrValue => {\n setColumnVisibility(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n if (onColumnVisibilityChanged) {\n const changes = Object.entries(newState).map(([columnId, isVisible]) => ({\n columnId,\n isVisible\n }));\n onColumnVisibilityChanged(changes);\n }\n return newState;\n });\n }, [onColumnVisibilityChanged]);\n const onColumnOrderChange = useCallback(updaterOrValue => {\n setColumnOrder(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n return newState;\n });\n }, []);\n return {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n };\n};\nconst getColumnVisibilityState = allColumns => {\n return allColumns.reduce((acc, col) => {\n const colId = col.id ?? col.accessorKey;\n if (colId) {\n return {\n ...acc,\n [colId]: col.meta?.isVisible !== false\n };\n }\n return acc;\n }, {});\n};\nconst getColumnOrder = allColumns => {\n return allColumns.map(col => col.id ?? col.accessorKey).filter(id => id != null);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkObjects } from \"@osdk/react/experimental\";\nimport { useMemo } from \"react\";\nconst PAGE_SIZE = 50;\n\n/**\n * This hook is a wrapper around useOsdkObjects\n * It extracts RDP locators from columnDefinitions and calls useObjectSet + withProperties\n * to return data containing the derived properties.\n */\nexport function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting) {\n const orderBy = useMemo(() => {\n if (!sorting || sorting.length === 0) {\n return undefined;\n }\n return sorting.reduce((acc, sort) => {\n acc[sort.id] = sort.desc ? \"desc\" : \"asc\";\n return acc;\n }, {});\n }, [sorting]);\n\n // Extract derived properties definition\n const withProperties = useMemo(() => {\n if (!columnDefinitions) {\n return;\n }\n const rdpColumns = columnDefinitions.map(colDef => colDef.locator).filter(colLocator => {\n return colLocator.type === \"rdp\";\n });\n if (!rdpColumns.length) {\n return;\n }\n return rdpColumns.reduce((acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur.creator\n };\n }, {});\n }, [columnDefinitions]);\n return useOsdkObjects(objectOrInterfaceType, {\n withProperties,\n pageSize: PAGE_SIZE,\n where: filter,\n orderBy\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const getRowId = row => {\n return getRowIdFromPrimaryKey(row.$primaryKey);\n};\nexport const getRowIdFromPrimaryKey = primaryKey => primaryKey.toString();","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\nexport function useRowSelection({\n selectionMode = \"none\",\n selectedRows,\n onRowSelection,\n data\n}) {\n // The rowSelectionState in uncontrolled mode\n const [internalRowSelection, setInternalRowSelection] = useState({});\n\n // Used for shift-click behavior in \"multiple\" mode\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState(null);\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n // Row selection state\n // If controlled mode, return the state from selectedRows prop\n // If uncontrolled, return the internalRowSelection state\n const rowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled && selectedRows) {\n return getRowSelectionState(selectedRows);\n }\n return internalRowSelection;\n }, [enableRowSelection, isControlled, selectedRows, internalRowSelection]);\n const selectedCount = Object.values(rowSelectionState).filter(Boolean).length;\n const totalCount = data?.length ?? 0;\n const isAllSelected = totalCount > 0 && selectedCount === totalCount;\n const hasSelection = selectedCount > 0;\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n const newSelectedRows = isAllSelected ? [] : data.map(item => item.$primaryKey);\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n }, [enableRowSelection, data, isAllSelected, isControlled, onRowSelection]);\n const onToggleRow = useCallback((rowId, rowIndex, isShiftClick = false) => {\n if (!enableRowSelection || !data) return;\n let newSelectedRows = [];\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n // Multiple selection mode\n\n // When user does shiftClick but lastSelectedRowIndex is null,\n // it is treated as a normal click in multiple selection\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows({\n rowId,\n rowIndex,\n data,\n lastSelectedRowIndex,\n rowSelectionState\n });\n } else {\n newSelectedRows = getMultipleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n }\n setLastSelectedRowIndex(rowIndex);\n }\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n }, [enableRowSelection, data, selectionMode, lastSelectedRowIndex, isControlled, rowSelectionState, onRowSelection]);\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow\n };\n}\nfunction getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n // Toggle row selection in single selection mode\n const newSelectedRows = rowSelectionState[rowId] ? [] : [primaryKey];\n return newSelectedRows;\n}\nfunction getRangeSelectionRows({\n lastSelectedRowIndex,\n rowIndex,\n data,\n rowSelectionState\n}) {\n // This function is only called if lastSelectedRowIndex is not null\n // This condition is added for typechecks only\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n // Add all rows in range to selectedRows if not yet selected\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\nfunction getMultipleSelectionRows({\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n // Handles single row toggle in multiple selection mode\n const newSelectedRows = currentlySelected.includes(primaryKey) ? currentlySelected.filter(i => i !== primaryKey) : [...currentlySelected, primaryKey];\n return newSelectedRows;\n}\n\n/**\n * Builds a range of rows from startIndex to endIndex\n */\nfunction getRowsInRange(data, startIndex, endIndex) {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows = [];\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n return rows;\n}\n\n/**\n * Converts an array of primary keys to a RowSelectionState object\n */\nfunction getRowSelectionState(primaryKeys) {\n return primaryKeys.reduce((acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n }, {});\n}\n\n/**\n * Converts from a RowSelectionState object back to an array of primary keys\n */\nfunction getSelectedPrimaryKeys(selectionState, data) {\n return data.filter(item => selectionState[getRowId(item)]).map(item => item.$primaryKey);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCheckboxRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n min-height: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n padding: var(--osdk-checkbox-padding);\n box-sizing: border-box;\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-checkbox-border);\n\n &[data-unchecked] {\n background-color: var(--osdk-checkbox-bg);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-active);\n }\n }\n\n &[data-checked],\n &[data-indeterminate] {\n background-color: var(--osdk-checkbox-bg-checked);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-checked-active);\n }\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkCheckboxIndicator {\n display: flex;\n justify-content: center;\n align-items: center;\n color: var(--osdk-checkbox-checked-foreground);\n width: var(--osdk-checkbox-icon-size);\n height: var(--osdk-checkbox-icon-size);\n\n &[data-unchecked] {\n display: none;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Checkbox as BaseUICheckbox } from \"@base-ui/react/checkbox\";\nimport { Minus, Tick } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Checkbox.module.css\";\nexport function Checkbox({\n indeterminate,\n className,\n indicatorProps,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICheckbox.Root, _extends({\n className: classnames(styles.osdkCheckboxRoot, className),\n indeterminate: indeterminate\n }, rest), /*#__PURE__*/React.createElement(BaseUICheckbox.Indicator, _extends({}, indicatorProps, {\n className: classnames(styles.osdkCheckboxIndicator, indicatorProps?.className)\n }), indeterminate ? /*#__PURE__*/React.createElement(Minus, {\n color: \"currentColor\"\n }) : /*#__PURE__*/React.createElement(Tick, {\n color: \"currentColor\"\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nexport function SelectionHeaderCell({\n isAllSelected,\n hasSelection,\n onToggleAll\n}) {\n return /*#__PURE__*/React.createElement(Checkbox, {\n indeterminate: hasSelection && !isAllSelected,\n checked: isAllSelected,\n onCheckedChange: onToggleAll,\n \"aria-label\": \"Select all rows\"\n });\n}\nexport function SelectionCell({\n row,\n onToggleRow\n}) {\n const handleClick = useCallback(event => {\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n }, [row, onToggleRow]);\n return /*#__PURE__*/React.createElement(Checkbox, {\n checked: row.getIsSelected(),\n onClick: handleClick,\n \"aria-label\": `Select row ${row.index + 1}`\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo, useRef } from \"react\";\nimport { SelectionCell, SelectionHeaderCell } from \"../SelectionCells.js\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\nexport const useSelectionColumn = ({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n}) => {\n // TODO: Replace with useLatestRef\n const isAllSelectedRef = useRef(isAllSelected);\n isAllSelectedRef.current = isAllSelected;\n const hasSelectionRef = useRef(hasSelection);\n hasSelectionRef.current = hasSelection;\n const onToggleAllRef = useRef(onToggleAll);\n onToggleAllRef.current = onToggleAll;\n const onToggleRowRef = useRef(onToggleRow);\n onToggleRowRef.current = onToggleRow;\n const selectionColumn = useMemo(() => {\n if (selectionMode === \"none\") return null;\n const colDef = {\n id: SELECTION_COLUMN_ID,\n header: () => selectionMode === \"multiple\" ? /*#__PURE__*/React.createElement(SelectionHeaderCell, {\n isAllSelected: isAllSelectedRef.current,\n hasSelection: hasSelectionRef.current,\n onToggleAll: onToggleAllRef.current\n }) : null,\n cell: ({\n row\n }) => /*#__PURE__*/React.createElement(SelectionCell, {\n row: row,\n onToggleRow: onToggleRowRef.current\n }),\n size: 50,\n minSize: 50,\n maxSize: 50,\n enableSorting: false,\n enableResizing: false,\n enablePinning: false\n };\n return colDef;\n }, [selectionMode]);\n return selectionColumn;\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nexport const useTableSorting = ({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n}) => {\n // The sorting state in uncontrolled mode\n const [internalSorting, setInternalSorting] = useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);\n const isControlled = orderBy !== undefined;\n\n // Sorting state\n // If controlled mode, return the state from orderBy prop\n // If uncontrolled, return the internalSorting state\n const sortingState = useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);\n const onSortingChange = useCallback(updater => {\n const newSorting = typeof updater === \"function\" ? updater(sortingState) : updater;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSorting(newSorting);\n }\n if (onOrderByChanged) {\n const newOrderBy = convertSortingStateToOrderBy(newSorting);\n onOrderByChanged(newOrderBy);\n }\n }, [isControlled, sortingState, onOrderByChanged]);\n return {\n sorting: sortingState,\n onSortingChange\n };\n};\nfunction convertOrderByToSortingState(orderBy) {\n return orderBy.map(({\n property,\n direction\n }) => ({\n id: property,\n desc: direction === \"desc\"\n }));\n}\nfunction convertSortingStateToOrderBy(sorting) {\n return sorting.map(({\n id,\n desc\n }) => ({\n property: id,\n direction: desc ? \"desc\" : \"asc\"\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkLoadingCell {\n height: var(--osdk-table-cell-fontSize);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n flex: 1;\n}\n\n/* Blueprint skeleton animation keyframes */\n@keyframes skeleton-glow {\n from {\n background: var(--osdk-table-skeleton-color-from);\n border-color: var(--osdk-table-skeleton-color-from);\n }\n\n to {\n background: var(--osdk-table-skeleton-color-to);\n border-color: var(--osdk-table-skeleton-color-to);\n }\n}\n\n.osdkCellSkeleton {\n animation: 1000ms linear infinite alternate skeleton-glow;\n background: var(--osdk-table-skeleton-color-from);\n background-clip: padding-box;\n border-color: var(--osdk-table-skeleton-color-from);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n border: 1px solid var(--osdk-table-skeleton-border-color);\n box-shadow: none;\n color: transparent;\n cursor: default;\n pointer-events: none;\n user-select: none;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableCell {\n display: flex;\n align-items: center;\n height: 100%;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-size: var(--osdk-table-cell-fontSize);\n color: var(--osdk-table-cell-color);\n background-color: inherit;\n border-right: var(--osdk-table-cell-divider);\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: var(--osdk-table-border);\n }\n}\n\n.osdkTableCell[data-pinned=\"left\"],\n.osdkTableCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-1);\n background-color: inherit;\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableCell[data-pinned=\"right\"]:not(:has(~ [data-pinned=\"right\"]):nth-child(n+2)) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableCell:has([role=\"checkbox\"]) {\n justify-content: center;\n padding: 0;\n}\n\n.osdkTableCellContent:not(:has([role=\"checkbox\"])) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n}\n\n.osdkCheckboxContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./LoadingCell.module.css\";\nimport cellStyles from \"./TableCell.module.css\";\nexport function LoadingCell({\n width\n}) {\n return /*#__PURE__*/React.createElement(\"td\", {\n className: cellStyles.osdkTableCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkLoadingCell, styles.osdkCellSkeleton)\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableRow {\n position: absolute;\n display: flex;\n background-color: var(--osdk-table-row-bg-default);\n border-top: var(--osdk-table-row-divider);\n border-bottom: var(--osdk-table-border-width) solid transparent;\n\n &:last-child {\n border-bottom: var(--osdk-table-border);\n }\n\n /* Zebra rows */\n &:nth-child(even) {\n background-color: var(\n --osdk-table-row-bg-alternate,\n var(--osdk-table-row-bg-default)\n );\n }\n\n &:hover {\n z-index: 1;\n background-color: var(\n --osdk-table-row-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n border-top-color: var(--osdk-table-row-border-color-hover);\n border-bottom-color: var(--osdk-table-row-border-color-hover);\n }\n\n &[data-selected=\"true\"] {\n z-index: 2;\n background-color: var(--osdk-table-row-bg-active);\n border-top-color: var(--osdk-table-row-border-color-active);\n border-bottom-color: var(--osdk-table-row-border-color-active);\n }\n\n &[data-selected=\"true\"] + &[data-selected=\"true\"] {\n border-top-color: transparent;\n }\n\n &[data-selected=\"true\"]:has(+ &[data-selected=\"true\"]) {\n border-bottom-color: transparent;\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { LoadingCell } from \"./LoadingCell.js\";\nimport rowStyles from \"./TableRow.module.css\";\nexport function LoadingRow({\n headers,\n columnCount,\n translateY,\n rowHeight = 40,\n columnWidth = 80\n}) {\n return /*#__PURE__*/React.createElement(\"tr\", {\n className: rowStyles.osdkTableRow,\n style: {\n height: `${rowHeight}px`,\n transform: `translateY(${translateY}px)`\n }\n }, /*#__PURE__*/React.createElement(React.Fragment, null, Array.from({\n length: columnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(LoadingCell, {\n key: `loading-cell-${index}`,\n width: width\n });\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableBody {\n display: grid;\n position: relative;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.button {\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 4);\n border-radius: var(--osdk-surface-border-radius);\n font-size: var(--osdk-typography-size-body-medium);\n cursor: pointer;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.secondaryButton {\n background-color: var(--osdk-button-secondary-bg);\n border: var(--osdk-surface-border);\n color: var(--osdk-button-secondary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-active);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.primaryButton {\n background-color: var(--osdk-button-primary-bg);\n border: none;\n color: var(--osdk-button-primary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-active);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./ActionButton.module.css\";\nexport function ActionButton({\n variant = \"secondary\",\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(Button, _extends({\n className: classNames(styles.button, variant === \"primary\" ? styles.primaryButton : styles.secondaryButton, className)\n }, rest));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.backdrop {\n position: fixed;\n inset: 0;\n background-color: var(--osdk-dialog-backdrop-bg);\n z-index: var(--osdk-surface-z-index-1);\n}\n\n.popup {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n min-width: var(--osdk-dialog-min-width);\n max-width: var(--osdk-dialog-max-width);\n min-height: var(--osdk-dialog-min-height);\n max-height: var(--osdk-dialog-max-height);\n background-color: var(--osdk-dialog-bg);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-dialog-shadow);\n z-index: var(--osdk-surface-z-index-2);\n display: flex;\n flex-direction: column;\n\n &:focus {\n outline: none;\n }\n}\n\n.header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--osdk-dialog-header-padding);\n border-bottom: var(--osdk-surface-border);\n}\n\n.title {\n font-size: var(--osdk-dialog-title-font-size);\n font-weight: var(--osdk-dialog-title-font-weight);\n}\n\n.body {\n display: flex;\n padding: var(--osdk-dialog-body-padding);\n overflow-y: auto;\n flex: 1;\n}\n\n.footer {\n display: flex;\n justify-content: flex-end;\n gap: calc(var(--osdk-surface-spacing) * 2);\n padding: var(--osdk-dialog-footer-padding);\n border-top: var(--osdk-surface-border);\n}\n\n.closeButton {\n background: none;\n border: none;\n padding: calc(var(--osdk-surface-spacing) * 0.5);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.closeIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dialog as BaseUIDialog } from \"@base-ui/react/dialog\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Dialog.module.css\";\nexport function Dialog({\n isOpen,\n onOpenChange,\n title,\n children,\n footer,\n className\n}) {\n return /*#__PURE__*/React.createElement(BaseUIDialog.Root, {\n open: isOpen,\n onOpenChange: onOpenChange\n }, /*#__PURE__*/React.createElement(BaseUIDialog.Portal, null, /*#__PURE__*/React.createElement(BaseUIDialog.Backdrop, {\n className: styles.backdrop\n }), /*#__PURE__*/React.createElement(BaseUIDialog.Popup, {\n className: classnames(styles.popup, className)\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.header\n }, /*#__PURE__*/React.createElement(BaseUIDialog.Title, {\n className: styles.title\n }, title), /*#__PURE__*/React.createElement(BaseUIDialog.Close, {\n className: styles.closeButton,\n \"aria-label\": \"Close dialog\"\n }, /*#__PURE__*/React.createElement(Cross, {\n className: styles.closeIcon\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.body\n }, children), footer != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.footer\n }, footer))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.draggableListContainer {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-draggable-item-gap);\n overflow-y: auto;\n}\n\n.draggableItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-draggable-item-gap);\n padding: var(--osdk-draggable-item-padding);\n background-color: var(--osdk-draggable-item-bg);\n border: var(--osdk-draggable-item-border);\n border-radius: var(--osdk-draggable-item-border-radius);\n width: 100%;\n touch-action: none;\n user-select: none;\n}\n\n.draggableItem[data-dragging=\"true\"] {\n opacity: 0.5;\n}\n\n.dragHandle {\n display: flex;\n cursor: grab;\n color: var(--osdk-draggable-item-drag-icon-color);\n\n &:hover {\n color: var(--osdk-draggable-item-drag-icon-color-hover);\n }\n\n &:active {\n cursor: grabbing;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.itemContent {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.removeButton {\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--osdk-draggable-item-drag-icon-color);\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n color: var(--osdk-typography-color-danger-rest);\n }\n\n &:active {\n color: var(--osdk-typography-color-danger-rest);\n background: oklch(\n from var(--osdk-surface-background-color-danger-hover) l c h / 0.2\n );\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { DragHandleVertical, SmallCross, Trash } from \"@blueprintjs/icons\";\nimport { closestCenter, DndContext as BaseDndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport styles from \"./DraggableList.module.css\";\nfunction DraggableListItem({\n item,\n onRemove,\n removeIconVariant = \"trash\",\n renderContent\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id: item.id\n });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition\n };\n const handleRemove = useCallback(() => {\n onRemove?.(item.id);\n }, [item.id, onRemove]);\n const RemoveIcon = removeIconVariant === \"trash\" ? Trash : SmallCross;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: setNodeRef,\n style: style,\n className: styles.draggableItem,\n \"data-dragging\": isDragging\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: styles.dragHandle,\n \"aria-label\": `Reorder ${item.label}`\n }, attributes, listeners), /*#__PURE__*/React.createElement(DragHandleVertical, {\n className: styles.icon\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemContent\n }, renderContent ? renderContent(item) : item.label), onRemove && /*#__PURE__*/React.createElement(Button, {\n className: styles.removeButton,\n onClick: handleRemove,\n \"aria-label\": `Remove ${item.label}`\n }, /*#__PURE__*/React.createElement(RemoveIcon, {\n className: styles.icon\n })));\n}\nexport function DraggableList({\n items,\n onReorder,\n onRemove,\n removeIconVariant = \"cross\",\n renderContent,\n emptyMessage,\n className\n}) {\n const itemIds = useMemo(() => items.map(item => item.id), [items]);\n const sensors = useSensors(useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5\n }\n }), useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n }));\n const handleDragEnd = useCallback(event => {\n const {\n active,\n over\n } = event;\n if (over && active.id !== over.id) {\n const oldIndex = items.findIndex(item => item.id === active.id);\n const newIndex = items.findIndex(item => item.id === over.id);\n onReorder(oldIndex, newIndex);\n }\n }, [items, onReorder]);\n const containerRef = useRef(null);\n useKeyboardEvents(containerRef);\n\n // TODO: Revert when @types/react is fixed\n const DndContext = BaseDndContext;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(styles.draggableListContainer, className)\n }, /*#__PURE__*/React.createElement(DndContext, {\n sensors: sensors,\n collisionDetection: closestCenter,\n onDragEnd: handleDragEnd\n }, /*#__PURE__*/React.createElement(SortableContext, {\n items: itemIds,\n strategy: verticalListSortingStrategy\n }, items.map(item => /*#__PURE__*/React.createElement(DraggableListItem, {\n key: item.id,\n item: item,\n onRemove: onRemove,\n removeIconVariant: removeIconVariant,\n renderContent: renderContent\n })))), items.length === 0 && emptyMessage && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, emptyMessage));\n}\nconst useKeyboardEvents = containerRef => {\n // Base UI's DialogPopup calls stopPropagation on arrow key events, which\n // prevents them from reaching @dnd-kit's document-level KeyboardSensor\n // listener. We use a native capture-phase listener to intercept arrow keys\n // before the dialog can swallow them, and re-dispatch them on the document\n // so @dnd-kit can process keyboard-driven reordering.\n useEffect(() => {\n const el = containerRef.current;\n if (el == null) {\n return;\n }\n const ARROW_KEYS = new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\n function handleCapture(event) {\n if (!ARROW_KEYS.has(event.key)) {\n return;\n }\n\n // Only intercept when a drag is active (an item has [data-dragging=\"true\"])\n if (el.querySelector(\"[data-dragging=\\\"true\\\"]\") == null) {\n return;\n }\n event.stopPropagation();\n document.dispatchEvent(new KeyboardEvent(\"keydown\", {\n key: event.key,\n code: event.code,\n bubbles: true\n }));\n }\n el.addEventListener(\"keydown\", handleCapture, true);\n return () => el.removeEventListener(\"keydown\", handleCapture, true);\n }, [containerRef]);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.searchBar {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 1.5);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n\n &:focus-within {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.searchIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-typography-color-muted);\n pointer-events: none;\n flex-shrink: 0;\n}\n\n.searchInput {\n border: none;\n width: 100%;\n padding: var(--osdk-surface-spacing) 0;\n font-size: var(--osdk-typography-size-body-medium);\n background: transparent;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: var(--osdk-typography-color-muted);\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Search } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./SearchBar.module.css\";\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search\",\n \"aria-label\": ariaLabel,\n className,\n onKeyDown\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.searchBar, className)\n }, /*#__PURE__*/React.createElement(Search, {\n className: styles.searchIcon\n }), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n placeholder: placeholder,\n \"aria-label\": ariaLabel ?? placeholder,\n value: value,\n onChange: onChange,\n className: styles.searchInput,\n onKeyDown: onKeyDown\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n/* Override dialog styling */\n.columnConfigDialog {\n --osdk-dialog-min-width: var(--osdk-table-column-config-dialog-min-width);\n --osdk-dialog-min-height: var(--osdk-table-column-config-dialog-min-height);\n --osdk-dialog-body-padding: 0;\n}\n\n.dialogLayout {\n display: flex;\n flex-direction: row;\n gap: 0;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.visibleColumnsContainer {\n flex: 1.5;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5);\n background: var(--osdk-table-column-config-visible-columns-bg);\n border-right: 1px solid var(--osdk-surface-border-color-default);\n}\n\n.availableColumnsContainer {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5)\n calc(var(--osdk-surface-spacing) * 3);\n}\n\n.sectionHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--osdk-surface-spacing) * 5);\n}\n\n.sectionTitle {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: var(--osdk-typography-weight-bold);\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n gap: var(--osdk-surface-spacing);\n}\n\n.countTag {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--osdk-custom-color-gray-3);\n padding: calc(var(--osdk-surface-spacing) / 2)\n calc(var(--osdk-surface-spacing) * 1.5);\n border-radius: var(--osdk-surface-border-radius);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-default);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.sectionHint {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n.columnList {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.searchContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n flex-shrink: 0;\n}\n\n.propertiesList {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.categoryHeader {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n margin: 0;\n gap: calc(var(--osdk-surface-spacing) * 3);\n flex-shrink: 0;\n}\n\n.categoryTrigger {\n display: flex;\n align-items: center;\n flex: 1;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.categoryTitle {\n flex: 1;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-bold);\n text-align: left;\n}\n\n.categoryCount {\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n margin-left: var(--osdk-surface-spacing);\n}\n\n.caretIcon {\n color: var(--osdk-typography-color-muted);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.categoryTrigger[data-panel-open] .caretIcon {\n transform: rotate(180deg);\n}\n\n.checkbox {\n width: var(--osdk-checkbox-icon-size);\n height: var(--osdk-checkbox-icon-size);\n}\n\n.propertyList {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.propertyItem {\n display: flex;\n align-items: center;\n flex-direction: row;\n width: 100%;\n gap: calc(var(--osdk-surface-spacing) * 3);\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n}\n\n.checkboxIndicator {\n color: var(--osdk-intent-primary-foreground);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.propertyName {\n text-align: left;\n flex: 1;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: 400;\n color: var(--osdk-typography-color-default-rest);\n padding: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n background: none;\n border: none;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.infoIcon {\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n width: calc(var(--osdk-checkbox-icon-size) * 0.75);\n height: calc(var(--osdk-checkbox-icon-size) * 0.75);\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Collapsible } from \"@base-ui/react/collapsible\";\nimport { CaretDown, Cog, SmallInfoSign } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./ColumnConfigDialog.module.css\";\nexport function ColumnConfigDialog({\n isOpen,\n onClose,\n columnOptions,\n currentVisibility,\n currentColumnOrder,\n onApply,\n isValidConfig\n}) {\n const [visibleColumns, setVisibleColumns] = useState([]);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const allColumns = useMemo(() => {\n return columnOptions.map(opt => {\n const isVisible = currentVisibility ? currentVisibility[opt.id] : false;\n return {\n id: opt.id,\n label: opt.name,\n isVisible\n };\n });\n }, [columnOptions, currentVisibility]);\n\n // Sync local state with prop when dialog is opened\n useEffect(() => {\n if (isOpen) {\n const visibleCols = allColumns.filter(col => col.isVisible);\n\n // Sort by current column order if available\n if (!!currentColumnOrder?.length) {\n visibleCols.sort((a, b) => {\n const indexA = currentColumnOrder.indexOf(a.id);\n const indexB = currentColumnOrder.indexOf(b.id);\n // If not in order array, put at end\n const orderA = indexA === -1 ? Infinity : indexA;\n const orderB = indexB === -1 ? Infinity : indexB;\n return orderA - orderB;\n });\n }\n setVisibleColumns(visibleCols);\n setSearchQuery(\"\");\n }\n }, [isOpen, allColumns, currentColumnOrder]);\n const handleApply = useCallback(() => {\n onApply(getColumnConfig(allColumns, visibleColumns));\n onClose();\n }, [allColumns, visibleColumns, onApply, onClose]);\n\n // If no condition provided, default to valid\n const isValid = isValidConfig ? isValidConfig(getColumnConfig(allColumns, visibleColumns)) : true;\n const isApplyDisabled = visibleColumns.length === 0 || !isValid;\n const handleReorderColumns = useCallback((fromIndex, toIndex) => {\n setVisibleColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleRemoveColumn = useCallback(columnId => {\n setVisibleColumns(prev => prev.filter(col => col.id !== columnId));\n }, []);\n const handleToggleColumn = useCallback(column => {\n setVisibleColumns(prev => {\n const isCurrentlyVisible = prev.some(col => col.id === column.id);\n if (isCurrentlyVisible) {\n return prev.filter(col => col.id !== column.id);\n } else {\n return [...prev, column];\n }\n });\n }, []);\n const handleSearchChange = useCallback(event => {\n setSearchQuery(event.target.value);\n }, []);\n const handleSelectAll = useCallback(columns => {\n setVisibleColumns(prev => {\n const allSelected = columns.every(col => prev.some(v => v.id === col.id));\n if (allSelected) {\n // Deselect all filtered columns\n return prev.filter(v => !columns.some(col => col.id === v.id));\n } else {\n // Select all filtered columns that aren't already selected\n const newColumns = columns.filter(col => !prev.some(v => v.id === col.id));\n return [...prev, ...newColumns];\n }\n });\n }, []);\n const filteredAvailableColumns = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n if (!query) {\n return allColumns;\n }\n return allColumns.filter(col => (col.label?.toLowerCase().includes(query) ?? false) || col.id.toLowerCase().includes(query));\n }, [allColumns, searchQuery]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply,\n disabled: isApplyDisabled\n }, \"Apply\")), [onClose, handleApply, isApplyDisabled]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer,\n className: styles.columnConfigDialog\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.dialogLayout\n }, /*#__PURE__*/React.createElement(VisibleColumnsList, {\n columns: visibleColumns,\n onReorder: handleReorderColumns,\n onRemove: handleRemoveColumn\n }), /*#__PURE__*/React.createElement(AvailableColumnsList, {\n visibleColumns: visibleColumns,\n searchQuery: searchQuery,\n onSearchChange: handleSearchChange,\n onToggleColumn: handleToggleColumn,\n onSelectAll: handleSelectAll,\n filteredColumns: filteredAvailableColumns\n })));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Configure Table Columns\");\nconst getColumnConfig = (allColumns, visibleColumns) => {\n const hiddenColumns = allColumns.filter(col => !visibleColumns.some(v => v.id === col.id));\n return [...visibleColumns.map(col => ({\n columnId: col.id,\n isVisible: true\n })), ...hiddenColumns.map(col => ({\n columnId: col.id,\n isVisible: false\n }))];\n};\nfunction VisibleColumnsList({\n columns,\n onReorder,\n onRemove\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.visibleColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionTitle\n }, /*#__PURE__*/React.createElement(\"span\", null, \"Visible Columns\"), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.countTag\n }, columns.length)), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHint\n }, \"Drag to reorder\")), /*#__PURE__*/React.createElement(DraggableList, {\n items: columns,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"trash\",\n emptyMessage: \"No visible columns\",\n className: styles.columnList\n }));\n}\nfunction AvailableColumnsList({\n visibleColumns,\n searchQuery,\n onSearchChange,\n onToggleColumn,\n onSelectAll,\n filteredColumns\n}) {\n const selectedCount = visibleColumns.length;\n const totalCount = filteredColumns.length;\n const allFilteredSelected = filteredColumns.every(col => visibleColumns.some(v => v.id === col.id));\n const someFilteredSelected = filteredColumns.some(col => visibleColumns.some(v => v.id === col.id));\n const handleSelectAllClick = useCallback(() => {\n onSelectAll(filteredColumns);\n }, [filteredColumns, onSelectAll]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.availableColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.sectionHeader, styles.sectionTitle)\n }, \"Add or Remove Columns\"), /*#__PURE__*/React.createElement(SearchBar, {\n value: searchQuery,\n onChange: onSearchChange,\n placeholder: \"Search...\",\n \"aria-label\": \"Search available columns\",\n className: styles.searchContainer\n }), /*#__PURE__*/React.createElement(Collapsible.Root, {\n defaultOpen: true,\n className: styles.propertiesList\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.categoryHeader\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: allFilteredSelected,\n indeterminate: someFilteredSelected && !allFilteredSelected,\n onCheckedChange: handleSelectAllClick,\n className: styles.checkbox\n }), /*#__PURE__*/React.createElement(Collapsible.Trigger, {\n className: styles.categoryTrigger\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.categoryTitle\n }, \"All Columns\"), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.categoryCount\n }, selectedCount, \"/\", totalCount), /*#__PURE__*/React.createElement(CaretDown, {\n className: styles.caretIcon\n }))), /*#__PURE__*/React.createElement(Collapsible.Panel, {\n className: styles.propertyList\n }, filteredColumns.length === 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, \"No matching columns found\") : filteredColumns.map(column => /*#__PURE__*/React.createElement(PropertyItem, {\n key: column.id,\n column: column,\n isSelected: visibleColumns.some(v => v.id === column.id),\n onToggle: onToggleColumn\n })))));\n}\nfunction PropertyItem({\n column,\n isSelected,\n onToggle,\n showInfoIcon = false\n}) {\n const handleClick = useCallback(() => {\n onToggle(column);\n }, [onToggle, column]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.propertyItem\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: isSelected,\n onCheckedChange: handleClick,\n className: styles.checkbox\n }), /*#__PURE__*/React.createElement(Button, {\n onClick: handleClick,\n className: styles.propertyName\n }, column.label), showInfoIcon && /*#__PURE__*/React.createElement(SmallInfoSign, {\n className: styles.infoIcon\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.sortColumnsList {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-surface-spacing);\n flex: 1;\n justify-content: space-between;\n overflow-x: hidden;\n}\n\n.sortableList {\n flex: 1;\n}\n\n.selectedColumnsContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n}\n\n.sortColumnItem {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n width: 100%;\n}\n\n.sortColumnName {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.sortDirectionButton {\n flex-shrink: 0;\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.sortIcon {\n color: var(--osdk-typography-color-muted);\n}\n\n.addColumnButton {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background-color: var(--osdk-button-secondary-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n cursor: pointer;\n color: var(--osdk-button-secondary-color);\n margin-top: calc(var(--osdk-surface-spacing) * 2);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.addIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: currentColor;\n}\n\n.addColumnText {\n flex: 1;\n text-align: left;\n}\n\n.menuPositioner {\n z-index: var(--osdk-surface-z-index-2);\n}\n\n.dropdownMenu {\n background-color: var(--osdk-surface-background-color-default-rest);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n max-height: calc(var(--osdk-dialog-max-height) * 0.5);\n overflow-y: auto;\n width: var(--anchor-width);\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.menuSearchContainer {\n border: none;\n border-bottom: var(--osdk-surface-border);\n border-radius: 0;\n position: sticky;\n top: 0;\n background-color: var(--osdk-surface-background-color-default-rest);\n}\n\n.menuEmptyState {\n padding: calc(var(--osdk-surface-spacing) * 3);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-medium);\n}\n\n.dropdownItem {\n display: block;\n width: 100%;\n text-align: left;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-default-rest);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\nimport { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nexport function SortableItemsList({\n items,\n onReorder,\n onRemove,\n className\n}) {\n const renderContent = useCallback(item => item.content, []);\n return /*#__PURE__*/React.createElement(DraggableList, {\n items: items,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"cross\",\n renderContent: renderContent,\n className: className\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport { Add, CaretDown, Cog, SortAlphabetical, SortAlphabeticalDesc } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { SortableItemsList } from \"./SortableItemsList.js\";\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions\n}) {\n const [selectedSortColumns, setSelectedSortColumns] = useState([]);\n const [menuSearchQuery, setMenuSearchQuery] = useState(\"\");\n\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find(col => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\"\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n const handleAddColumn = useCallback(column => {\n setSelectedSortColumns(prev => [...prev, {\n ...column,\n direction: \"asc\"\n }]);\n }, []);\n const handleRemoveSortColumn = useCallback(id => {\n setSelectedSortColumns(prev => prev.filter(item => item.id !== id));\n }, []);\n const handleReorderSortColumns = useCallback((fromIndex, toIndex) => {\n setSelectedSortColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleToggleSortDirection = useCallback(id => {\n setSelectedSortColumns(prev => prev.map(item => item.id === id ? {\n ...item,\n direction: item.direction === \"asc\" ? \"desc\" : \"asc\"\n } : item));\n }, []);\n const handleApply = useCallback(() => {\n const sortingState = selectedSortColumns.map(col => ({\n id: col.id,\n desc: col.direction === \"desc\"\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n const availableColumns = useMemo(() => columnOptions.filter(col => col.canSort && !selectedSortColumns.some(selected => selected.id === col.id)), [columnOptions, selectedSortColumns]);\n const filteredAvailableColumns = useMemo(() => {\n const query = menuSearchQuery.toLowerCase().trim();\n if (!query) {\n return availableColumns;\n }\n return availableColumns.filter(col => col.name.toLowerCase().includes(query));\n }, [availableColumns, menuSearchQuery]);\n const handleMenuSearchChange = useCallback(event => {\n setMenuSearchQuery(event.target.value);\n }, []);\n const handleMenuOpenChange = useCallback(open => {\n if (open) {\n setMenuSearchQuery(\"\");\n }\n }, []);\n const sortableItems = useMemo(() => {\n return selectedSortColumns.map(item => ({\n id: item.id,\n label: item.name,\n content: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnItem\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(styles.sortColumnName, styles.truncate)\n }, item.name), /*#__PURE__*/React.createElement(Button, {\n className: styles.sortDirectionButton,\n onClick: () => handleToggleSortDirection(item.id),\n \"aria-label\": `Toggle sort direction for ${item.name}`\n }, item.direction === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.sortIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.sortIcon\n })))\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply\n }, \"Apply\")), [handleApply, onClose]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnsList\n }, /*#__PURE__*/React.createElement(SortableItemsList, {\n items: sortableItems,\n onReorder: handleReorderSortColumns,\n onRemove: handleRemoveSortColumn,\n className: styles.sortableList\n }), /*#__PURE__*/React.createElement(Menu.Root, {\n onOpenChange: handleMenuOpenChange\n }, /*#__PURE__*/React.createElement(Menu.Trigger, {\n className: styles.addColumnButton,\n disabled: availableColumns.length === 0,\n \"aria-label\": \"Add column to sort\"\n }, /*#__PURE__*/React.createElement(Add, {\n className: styles.addIcon\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.addColumnText\n }, \"Add Column to Sort\"), /*#__PURE__*/React.createElement(CaretDown, {\n color: \"currentColor\"\n })), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {\n className: styles.menuPositioner,\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.dropdownMenu\n }, /*#__PURE__*/React.createElement(SearchBar, {\n value: menuSearchQuery,\n onChange: handleMenuSearchChange,\n placeholder: \"Search columns\",\n \"aria-label\": \"Search columns to sort\",\n className: styles.menuSearchContainer,\n onKeyDown: e => e.stopPropagation()\n }), filteredAvailableColumns.map(column => /*#__PURE__*/React.createElement(AvailableColumnMenuItem, {\n key: column.id,\n column: column,\n onAddColumn: handleAddColumn\n })), filteredAvailableColumns.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.menuEmptyState\n }, \"No matching columns\")))))));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Sort on Multiple Columns\");\nfunction AvailableColumnMenuItem({\n column,\n onAddColumn\n}) {\n const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);\n return /*#__PURE__*/React.createElement(Menu.Item, {\n className: classNames(styles.dropdownItem, styles.truncate),\n onClick: onClick\n }, column.name);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableHeader {\n display: grid;\n position: sticky;\n top: 0;\n width: 100%;\n height: var(--osdk-table-header-height);\n z-index: var(--osdk-surface-z-index-1);\n background-color: var(--osdk-table-header-bg);\n}\n\n.osdkTableHeader[data-resizing=\"true\"] {\n cursor: col-resize;\n user-select: none;\n}\n\n.osdkTableHeaderRow {\n display: flex;\n width: 100%;\n border-bottom: var(--osdk-table-border);\n}\n\n.osdkTableHeaderCell {\n display: flex;\n align-items: center;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-weight: var(--osdk-table-header-fontWeight);\n font-size: var(--osdk-table-header-fontSize);\n color: var(--osdk-table-header-color);\n border-top: var(--osdk-table-border);\n border-right: var(--osdk-table-header-divider);\n background-color: inherit;\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: var(--osdk-table-border);\n }\n}\n\n.osdkTableHeaderCell[data-pinned=\"left\"],\n.osdkTableHeaderCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-2);\n background-color: var(--osdk-table-header-bg);\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableHeaderCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableHeaderCell[data-pinned=\"right\"]:not(\n :has(~ [data-pinned=\"right\"]):nth-child(n + 2)\n ) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableHeaderCell:has([role=\"checkbox\"]) {\n justify-content: center;\n}\n\n.osdkTableHeaderResizer {\n background: none;\n cursor: col-resize;\n height: 100%;\n position: absolute;\n right: calc(-1 * var(--osdk-table-border-width));\n top: 0;\n touch-action: none;\n width: 3px;\n z-index: var(--osdk-surface-z-index-2);\n\n &:hover {\n background: var(--osdk-table-resizer-color-hover);\n }\n\n &:active {\n background: var(--osdk-table-resizer-color-active);\n }\n}\n\n.osdkLoadingHeaderCell {\n height: var(--osdk-table-header-fontSize);\n flex: 1;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkHeaderContent {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.osdkHeaderContent:has([role=\"checkbox\"]) {\n display: flex;\n justify-content: center;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { flexRender } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport styles from \"./TableHeaderContent.module.css\";\nexport function TableHeaderContent({\n header\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkHeaderContent\n }, flexRender(header.column.columnDef.header, header.getContext()));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCenterContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.osdkContentGap {\n display: flex;\n gap: var(--osdk-surface-spacing);\n}\n\n.osdkHeaderContainer {\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n align-self: stretch;\n}\n\n.osdkHeaderContentLeft {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.osdkHeaderContentRight {\n flex-shrink: 0;\n}\n\n.osdkHeaderText {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n line-clamp: 3;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-grow: 1;\n}\n\n.osdkHeaderPopoverTrigger {\n padding: var(--osdk-table-header-menu-padding);\n flex-shrink: 0;\n flex-grow: 0;\n background-color: var(--osdk-table-header-menu-bg);\n border: var(--osdk-table-header-menu-border);\n border-radius: var(--osdk-surface-border-radius);\n color: var(--osdk-table-header-menu-color);\n cursor: pointer;\n user-select: none;\n\n &:hover {\n background-color: var(--osdk-table-header-menu-bg-hover);\n }\n\n &[data-popup-open] {\n background-color: var(--osdk-table-header-menu-bg-active);\n color: var(--osdk-table-header-menu-color-active);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n}\n\n.osdkHeaderPopup {\n box-sizing: border-box;\n padding: var(--osdk-surface-spacing);\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-surface-border);\n background-color: var(--osdk-surface-background-color-default-rest);\n color: var(--osdk-typography-color-default-rest);\n box-shadow: var(--osdk-surface-shadow-2);\n font-size: var(--osdk-typography-size-body-medium);\n\n &:focus {\n outline: none;\n }\n}\n\n.osdkHeaderMenuItem {\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n border-radius: var(--osdk-surface-border-radius);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderMenuItem .osdkHeaderActiveMenuItem {\n background-color: var(--osdk-intent-primary-rest);\n color: var(--osdk-intent-primary-foreground);\n\n &:hover {\n background-color: var(--osdk-intent-primary-hover);\n }\n\n &:active {\n background-color: var(--osdk-intent-primary-active);\n }\n}\n\n.sortIndex {\n font-size: var(--osdk-typography-size-body-x-small);\n margin-left: var(--osdk-surface-spacing);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Menu } from \"@base-ui/react/menu\";\nimport { ChevronDown, Pin, Remove, Settings, Sort, SortAlphabetical, SortAlphabeticalDesc, Unpin, VerticalDistribution } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useState } from \"react\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport styles from \"./TableHeaderWithPopover.module.css\";\nfunction HeaderMenuItem({\n onClick,\n icon: Icon,\n label,\n active = false\n}) {\n return /*#__PURE__*/React.createElement(Menu.Item, {\n closeOnClick: true,\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderMenuItem, active && styles.osdkHeaderActiveMenuItem),\n onClick: onClick\n }, /*#__PURE__*/React.createElement(Icon, {\n className: styles.osdkHeaderIcon,\n color: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"span\", null, label));\n}\nexport function TableHeaderWithPopover({\n header,\n table,\n isColumnPinned,\n onResetSize,\n columnOptions,\n featureFlags,\n onOpenColumnConfig,\n onOpenMultiSort\n}) {\n const {\n showSortingItems = false,\n showPinningItems = false,\n showResizeItem = false,\n showConfigItem = false\n } = featureFlags ?? {};\n const {\n setColumnPinning,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const [isOpen, setIsOpen] = useState(false);\n const handlePinLeft = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: [...(prev.left || []), header.column.id],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleUnpin = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: prev.left?.filter(id => id !== header.column.id) || [],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleSortAscending = useCallback(() => {\n header.column.toggleSorting(false);\n setSorting?.([{\n id: header.column.id,\n desc: false\n }]);\n }, [header.column, setSorting]);\n const handleSortDescending = useCallback(() => {\n header.column.toggleSorting(true);\n setSorting?.([{\n id: header.column.id,\n desc: true\n }]);\n }, [header.column, setSorting]);\n const handleClearAllSorts = useCallback(() => {\n header.column.clearSorting();\n setSorting?.([]);\n }, [header.column, setSorting]);\n const handleResetSize = useCallback(() => {\n header.column.resetSize();\n if (onResetSize) {\n onResetSize();\n }\n }, [header.column, onResetSize]);\n const handleInteraction = useCallback(e => {\n e.preventDefault();\n setIsOpen(prev => !prev);\n }, []);\n const handleOpenColumnConfig = useCallback(() => {\n onOpenColumnConfig?.();\n setIsOpen(false);\n }, [onOpenColumnConfig]);\n const handleOpenMultiSort = useCallback(() => {\n onOpenMultiSort?.();\n setIsOpen(false);\n }, [onOpenMultiSort]);\n const isSorted = header.column.getIsSorted();\n const isSortable = header.column.getCanSort();\n const sortIndex = currentSorting?.findIndex(s => s.id === header.column.id) ?? -1;\n const hasAnyMenuItems = showPinningItems || showSortingItems && isSortable || showResizeItem || showConfigItem;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Menu.Root, {\n open: isOpen,\n onOpenChange: setIsOpen\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContainer),\n onContextMenu: handleInteraction\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentLeft)\n }, isColumnPinned && /*#__PURE__*/React.createElement(Pin, {\n className: styles.osdkHeaderIcon,\n color: \"currentColor\"\n }), /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentRight)\n }, isSorted && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkCenterContainer\n }, isSorted === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.osdkHeaderIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.osdkHeaderIcon\n }), currentSorting.length > 1 && sortIndex >= 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.sortIndex\n }, sortIndex + 1)), hasAnyMenuItems && /*#__PURE__*/React.createElement(Menu.Trigger, {\n \"aria-label\": `Open header menu for column with id=${header.column.id}`,\n className: classNames(styles.osdkCenterContainer, styles.osdkHeaderPopoverTrigger)\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n className: styles.osdkHeaderIcon\n }))), /*#__PURE__*/React.createElement(Menu.Portal, {\n container: document.body\n }, /*#__PURE__*/React.createElement(Menu.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.osdkHeaderPopup\n }, showPinningItems && !isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handlePinLeft,\n icon: Pin,\n label: \"Pin column\"\n }), showPinningItems && isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleUnpin,\n icon: Unpin,\n label: \"Unpin Column\",\n active: true\n }), showSortingItems && isSortable && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortAscending,\n icon: SortAlphabetical,\n label: \"Sort ascending\",\n active: isSorted === \"asc\"\n }), /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortDescending,\n icon: SortAlphabeticalDesc,\n label: \"Sort descending\",\n active: isSorted === \"desc\"\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenMultiSort,\n icon: Sort,\n label: \"Sort on multiple columns\"\n })), showSortingItems && !!currentSorting?.length && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleClearAllSorts,\n icon: Remove,\n label: \"Clear all sorts\"\n }), showResizeItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleResetSize,\n icon: VerticalDistribution,\n label: \"Reset Column Size\"\n }), showConfigItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenColumnConfig,\n icon: Settings,\n label: \"Configure Columns\"\n })))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function getColumnPinningStyles(column) {\n const isPinned = column.getIsPinned();\n return {\n columnStyles: {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n width: column.getSize()\n }\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { ColumnConfigDialog } from \"./ColumnConfigDialog.js\";\nimport { MultiColumnSortDialog } from \"./MultiColumnSortDialog.js\";\nimport styles from \"./TableHeader.module.css\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport { TableHeaderWithPopover } from \"./TableHeaderWithPopover.js\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nconst getHeaderName = (column, allHeaders) => {\n const {\n id,\n columnDef\n } = column;\n const header = allHeaders.find(header => header.id === id);\n const headerDef = columnDef.header;\n if (headerDef) {\n if (typeof headerDef === \"string\") {\n return headerDef;\n }\n // Try to get header name from the renderHeader function\n if (header) {\n const displayedHeader = headerDef(header.getContext());\n if (typeof displayedHeader === \"string\") return displayedHeader;\n }\n }\n // Fallback to use the columnName provided by user or id\n const {\n meta\n } = columnDef;\n return meta?.columnName ?? id;\n};\nexport function TableHeader({\n table,\n headerMenuFeatureFlags\n}) {\n // TODO: If value is number type, right align header\n\n const {\n setColumnOrder,\n setColumnVisibility,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const currentVisibility = table.getState().columnVisibility;\n const currentColumnOrder = table.getState().columnOrder;\n const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;\n const [configDialogOpen, setConfigDialogOpen] = useState(false);\n const [multiSortDialogOpen, setMultiSortDialogOpen] = useState(false);\n const handleOpenColumnConfig = useCallback(() => {\n setConfigDialogOpen(true);\n }, []);\n const handleCloseColumnConfig = useCallback(() => {\n setConfigDialogOpen(false);\n }, []);\n const handleOpenMultiSort = useCallback(() => {\n setMultiSortDialogOpen(true);\n }, []);\n const handleCloseMultiSort = useCallback(() => {\n setMultiSortDialogOpen(false);\n }, []);\n const handleApplyMultiSort = useCallback(sortColumns => {\n setMultiSortDialogOpen(false);\n setSorting?.(sortColumns);\n }, [setSorting]);\n const handleApplyColumnConfig = useCallback(updates => {\n const newVisibilityState = {};\n for (const update of updates) {\n newVisibilityState[update.columnId] = update.isVisible;\n }\n setColumnOrder(updates.map(col => col.columnId));\n setColumnVisibility(newVisibilityState);\n }, [setColumnOrder, setColumnVisibility]);\n const columnOptions = useMemo(() => {\n const allHeaders = table.getHeaderGroups().flatMap(headerGroup => headerGroup.headers);\n return table.getAllColumns().filter(column => column.id !== SELECTION_COLUMN_ID).map(column => {\n return {\n id: column.id,\n name: getHeaderName(column, allHeaders),\n canSort: column.getCanSort()\n };\n });\n }, [table]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"thead\", {\n className: styles.osdkTableHeader,\n \"data-resizing\": isResizing\n }, table.getHeaderGroups().map(headerGroup => /*#__PURE__*/React.createElement(\"tr\", {\n key: headerGroup.id,\n className: styles.osdkTableHeaderRow\n }, headerGroup.headers.map(header => {\n const {\n columnStyles\n } = getColumnPinningStyles(header.column);\n const isColumnPinned = header.column.getIsPinned();\n const isSelectColumn = header.id === SELECTION_COLUMN_ID;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: header.id,\n \"data-pinned\": header.column.getIsPinned(),\n className: styles.osdkTableHeaderCell,\n style: columnStyles\n }, header.isPlaceholder ? null : isSelectColumn ? /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n }) : /*#__PURE__*/React.createElement(TableHeaderWithPopover, {\n table: table,\n header: header,\n isColumnPinned: isColumnPinned,\n columnOptions: columnOptions,\n featureFlags: headerMenuFeatureFlags,\n onOpenColumnConfig: handleOpenColumnConfig,\n onOpenMultiSort: handleOpenMultiSort\n }), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableHeaderResizer,\n onDoubleClick: () => header.column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler()\n }));\n })))), !!columnOptions?.length && /*#__PURE__*/React.createElement(ColumnConfigDialog, {\n isOpen: configDialogOpen,\n onClose: handleCloseColumnConfig,\n columnOptions: columnOptions,\n currentVisibility: currentVisibility,\n currentColumnOrder: currentColumnOrder,\n onApply: handleApplyColumnConfig\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(MultiColumnSortDialog, {\n isOpen: multiSortDialogOpen,\n onClose: handleCloseMultiSort,\n columnOptions: columnOptions,\n currentSorting: currentSorting,\n onApply: handleApplyMultiSort\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport loadingStyles from \"./LoadingCell.module.css\";\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport bodyStyles from \"./TableBody.module.css\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport headerStyles from \"./TableHeader.module.css\";\nconst MIN_ROWS = 5;\nexport function LoadingStateTable({\n table,\n tableContainerRef,\n headerGroups,\n rowHeight = 40,\n columnWidth = 120\n}) {\n // If selection enabled, there will be a header for the selection column\n const enableRowSelection = table.options.enableRowSelection;\n const minHeaderCount = enableRowSelection ? 1 : 0;\n const headers = useMemo(() => headerGroups.length > 0 ? headerGroups[0].headers : [], [headerGroups]);\n const hasHeadersLoaded = headers.length > minHeaderCount;\n const headerRef = useRef(null);\n const bodyRef = useRef(null);\n const [loadingRowCount, setLoadingRowCount] = useState(MIN_ROWS);\n const [loadingColumnCount, setLoadingColumnCount] = useState(headers.length);\n // Calculate number of columns needed to fill container width\n useEffect(() => {\n if (hasHeadersLoaded) {\n setLoadingColumnCount(headers.length);\n } else {\n if (tableContainerRef.current) {\n const tableWidth = tableContainerRef.current.clientWidth;\n if (tableWidth > 0) {\n const columnsNeeded = Math.ceil(tableWidth / columnWidth);\n setLoadingColumnCount(columnsNeeded);\n }\n }\n }\n }, [columnWidth, hasHeadersLoaded, headers, tableContainerRef]);\n\n // Calculate number of rows needed to fill container height\n useEffect(() => {\n if (tableContainerRef.current) {\n const containerHeight = tableContainerRef.current.clientHeight;\n const availableHeight = containerHeight - rowHeight;\n if (availableHeight > 0) {\n const rowsNeeded = Math.ceil(availableHeight / rowHeight);\n setLoadingRowCount(Math.max(rowsNeeded, MIN_ROWS));\n }\n }\n }, [tableContainerRef, rowHeight]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasHeadersLoaded ? /*#__PURE__*/React.createElement(TableHeader, {\n table: table\n }) : /*#__PURE__*/React.createElement(\"thead\", {\n className: headerStyles.osdkTableHeader,\n ref: headerRef\n }, /*#__PURE__*/React.createElement(\"tr\", {\n className: headerStyles.osdkTableHeaderRow\n }, Array.from({\n length: loadingColumnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: `loading-header-${index}`,\n className: headerStyles.osdkTableHeaderCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(headerStyles.osdkLoadingHeaderCell, loadingStyles.osdkCellSkeleton)\n }));\n }))), /*#__PURE__*/React.createElement(\"tbody\", {\n className: bodyStyles.osdkTableBody,\n ref: bodyRef\n }, Array.from({\n length: loadingRowCount\n }).map((_, index) => /*#__PURE__*/React.createElement(LoadingRow, {\n key: `skeleton-${index}`,\n columnCount: loadingColumnCount,\n headers: headers,\n translateY: rowHeight * index,\n rowHeight: rowHeight,\n columnWidth: columnWidth\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.container {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.message {\n padding: calc(var(--osdk-surface-spacing) * 5);\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport styles from \"./NonIdealState.module.css\";\nexport function NonIdealState({\n message\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.message\n }, message));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableContainer {\n flex: 1;\n height: 100%;\n min-height: 0;\n overflow: auto;\n position: relative;\n}\n\n.osdkTableContainer table {\n border-collapse: collapse;\n display: grid;\n table-layout: fixed;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCellContextMenu {\n position: fixed;\n z-index: var(--osdk-surface-z-index-2);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./CellContextMenu.module.css\";\nexport function CellContextMenu({\n cell,\n position,\n onClose,\n renderContent\n}) {\n const ref = useRef(null);\n useEffect(() => {\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClose();\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: styles.osdkCellContextMenu,\n style: {\n left: position.left,\n top: position.top,\n minWidth: position.width\n }\n }, renderContent(cell.row.original, cell)), document.body);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useCellContextMenu = ({\n tdRef\n}) => {\n const [popoverPosition, setPopoverPosition] = useState(null);\n const [isContextMenuOpen, setIsContextMenuOpen] = useState(false);\n const handleOpenContextMenu = useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n if (tdRef.current) {\n const rect = tdRef.current.getBoundingClientRect();\n const position = {\n left: rect.left,\n top: rect.bottom,\n width: rect.width\n };\n setPopoverPosition(position);\n setIsContextMenuOpen(true);\n }\n }, [tdRef]);\n const handleCloseContextMenu = useCallback(() => {\n setIsContextMenuOpen(false);\n setPopoverPosition(null);\n }, []);\n return {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n };\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { flexRender } from \"@tanstack/react-table\";\nimport React, { useRef } from \"react\";\nimport { CellContextMenu } from \"./CellContextMenu.js\";\nimport { useCellContextMenu } from \"./hooks/useCellContextMenu.js\";\nimport styles from \"./TableCell.module.css\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nexport function TableCell({\n cell,\n renderCellContextMenu\n}) {\n const tdRef = useRef(null);\n const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;\n const {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n } = useCellContextMenu({\n tdRef\n });\n const shouldRenderContextMenu = !isSelectColumn && isContextMenuOpen && !!popoverPosition && !!renderCellContextMenu;\n const {\n columnStyles\n } = getColumnPinningStyles(cell.column);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"td\", {\n ref: tdRef,\n \"data-pinned\": cell.column.getIsPinned(),\n className: styles.osdkTableCell,\n style: columnStyles,\n onContextMenu: handleOpenContextMenu\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableCellContent\n }, flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /*#__PURE__*/React.createElement(CellContextMenu, {\n cell: cell,\n position: popoverPosition,\n onClose: handleCloseContextMenu,\n renderContent: renderCellContextMenu\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\nimport { TableCell } from \"./TableCell.js\";\nimport styles from \"./TableRow.module.css\";\nexport function TableRow({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu\n}) {\n const handleClick = useCallback(() => {\n onRowClick?.(row.original);\n }, [onRowClick, row.original]);\n return /*#__PURE__*/React.createElement(\"tr\", {\n \"data-selected\": row.getIsSelected(),\n className: styles.osdkTableRow,\n style: {\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`\n },\n onClick: handleClick\n }, row.getVisibleCells().map(cell => /*#__PURE__*/React.createElement(TableCell, {\n key: cell.id,\n cell: cell,\n renderCellContextMenu: renderCellContextMenu\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useLayoutEffect } from \"react\";\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport styles from \"./TableBody.module.css\";\nimport { TableRow } from \"./TableRow.js\";\nexport function TableBody({\n rows,\n tableContainerRef,\n onRowClick,\n renderCellContextMenu,\n rowHeight = 40,\n isLoadingMore = false,\n headerGroups = []\n}) {\n // Important: Keep the row virtualizer in the lowest component possible to avoid unnecessary re-renders.\n const rowVirtualizer = useVirtualizer({\n count: rows.length,\n estimateSize: () => rowHeight,\n getScrollElement: () => tableContainerRef.current,\n overscan: 5\n });\n\n // Measure the virtualizer after the DOM has been laid out to ensure proper dimensions\n useLayoutEffect(() => {\n rowVirtualizer.measure();\n }, [rowVirtualizer, rows.length]);\n const totalSize = rowVirtualizer.getTotalSize();\n const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;\n const headers = headerGroups[0]?.headers ?? [];\n return /*#__PURE__*/React.createElement(\"tbody\", {\n className: styles.osdkTableBody,\n style: {\n height: `${bodyHeight}px`\n }\n }, rowVirtualizer.getVirtualItems().map(virtualRow => {\n const row = rows[virtualRow.index];\n return /*#__PURE__*/React.createElement(TableRow, {\n key: row.id,\n row: row,\n virtualRow: virtualRow,\n onRowClick: onRowClick,\n renderCellContextMenu: renderCellContextMenu\n });\n }), isLoadingMore && /*#__PURE__*/React.createElement(LoadingRow, {\n headers: headers,\n translateY: totalSize,\n rowHeight: rowHeight,\n columnCount: headers.length\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { LoadingStateTable } from \"./LoadingStateTable.js\";\nimport { NonIdealState } from \"./NonIdealState.js\";\nimport styles from \"./Table.module.css\";\nimport { TableBody } from \"./TableBody.js\";\nimport { TableHeader } from \"./TableHeader.js\";\nexport function BaseTable({\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags\n}) {\n const tableContainerRef = useRef(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n // Using a ref to prevent duplicate fetches from rapid scroll events while a fetch is in-flight\n const fetchingRef = useRef(false);\n useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n const fetchMoreOnEndReached = useCallback(async containerRefElement => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const {\n scrollHeight,\n scrollTop,\n clientHeight\n } = containerRefElement;\n if (scrollHeight - scrollTop - clientHeight < 100 && !isLoading && fetchNextPage != null) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n }, [fetchNextPage, isLoading, isLoadingMore]);\n const handleScroll = useCallback(async e => {\n await fetchMoreOnEndReached(e.currentTarget);\n }, [fetchMoreOnEndReached]);\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: tableContainerRef,\n className: classNames(styles.osdkTableContainer, className),\n onScroll: handleScroll\n }, /*#__PURE__*/React.createElement(\"table\", null, isLoading && !hasData ? /*#__PURE__*/React.createElement(LoadingStateTable, {\n table: table,\n headerGroups: headerGroups,\n rowHeight: rowHeight,\n tableContainerRef: tableContainerRef\n }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableHeader, {\n table: table,\n headerMenuFeatureFlags: headerMenuFeatureFlags\n }), /*#__PURE__*/React.createElement(TableBody, {\n rows: rows,\n tableContainerRef: tableContainerRef,\n onRowClick: onRowClick,\n rowHeight: rowHeight,\n renderCellContextMenu: renderCellContextMenu,\n isLoadingMore: isLoadingMore,\n headerGroups: headerGroups\n }))), !hasData && error == null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: \"No Data\"\n }), error != null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: `Error Loading Data: ${error.message}`\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { useColumnDefs } from \"./hooks/useColumnDefs.js\";\nimport { useColumnPinning } from \"./hooks/useColumnPinning.js\";\nimport { useColumnResize } from \"./hooks/useColumnResize.js\";\nimport { useColumnVisibility } from \"./hooks/useColumnVisibility.js\";\nimport { useObjectTableData } from \"./hooks/useObjectTableData.js\";\nimport { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport { BaseTable } from \"./Table.js\";\nimport { getRowId } from \"./utils/getRowId.js\";\n\n/**\n * ObjectTable - A headless table component for displaying OSDK object sets\n *\n * @example\n * ```tsx\n * <ObjectTable objectType={MyObjectType} />\n * ```\n */\n\nexport function ObjectTable({\n objectType,\n columnDefinitions,\n filter,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onColumnResize,\n onRowSelection,\n renderCellContextMenu,\n selectionMode = \"none\",\n selectedRows,\n onColumnVisibilityChanged,\n enableOrdering = true,\n enableColumnPinning = true,\n enableColumnResizing = true,\n enableColumnConfig = true,\n ...props\n}) {\n const {\n columnSizing,\n onColumnSizingChange\n } = useColumnResize({\n onColumnResize\n });\n const {\n sorting,\n onSortingChange\n } = useTableSorting({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n });\n const {\n data,\n fetchMore,\n isLoading,\n error\n } = useObjectTableData(objectType, columnDefinitions, filter, sorting);\n const {\n columns,\n loading: isColumnsLoading\n } = useColumnDefs(objectType, columnDefinitions);\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n enableRowSelection\n } = useRowSelection({\n selectionMode,\n selectedRows,\n onRowSelection,\n data\n });\n const selectionColumn = useSelectionColumn({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n });\n const {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n } = useColumnVisibility({\n allColumns: columns,\n onColumnVisibilityChanged\n });\n const {\n columnPinning,\n onColumnPinningChange\n } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: enableRowSelection,\n onColumnsPinnedChanged\n });\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n const table = useReactTable({\n data: data ?? [],\n columns: allColumns,\n getCoreRowModel: getCoreRowModel(),\n state: {\n columnVisibility,\n columnOrder,\n rowSelection,\n sorting,\n columnSizing,\n columnPinning\n },\n onSortingChange,\n onColumnSizingChange,\n onColumnPinningChange,\n onColumnVisibilityChange,\n onColumnOrderChange,\n enableRowSelection,\n enableSorting: enableOrdering,\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n manualSorting: true,\n // Enable manual sorting to indicate server-side sorting\n defaultColumn: {\n minSize: 80\n },\n getRowId\n });\n const onRenderCellContextMenu = useCallback((row, cell) => {\n return renderCellContextMenu?.(row, cell.getValue());\n }, [renderCellContextMenu]);\n const isTableLoading = isLoading || isColumnsLoading;\n const headerMenuFeatureFlags = useMemo(() => ({\n showSortingItems: enableOrdering,\n showPinningItems: enableColumnPinning,\n showResizeItem: enableColumnResizing,\n showConfigItem: enableColumnConfig\n }), [enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig]);\n return /*#__PURE__*/React.createElement(BaseTable, {\n table: table,\n isLoading: isTableLoading,\n fetchNextPage: fetchMore,\n onRowClick: props.onRowClick,\n rowHeight: props.rowHeight,\n renderCellContextMenu: onRenderCellContextMenu,\n className: props.className,\n error: error,\n headerMenuFeatureFlags: headerMenuFeatureFlags\n });\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/object-table/EditableCell.module.css","../../../src/object-table/EditableCell.tsx","../../../src/object-table/utils/getCellId.ts","../../../src/object-table/DefaultCellRenderer.tsx","../../../src/object-table/hooks/useColumnDefs.ts","../../../src/object-table/utils/constants.ts","../../../src/object-table/hooks/useColumnPinning.ts","../../../src/object-table/hooks/useColumnResize.ts","../../../src/object-table/hooks/useColumnVisibility.ts","../../../src/object-table/hooks/useEditableTable.ts","../../../src/object-table/hooks/useObjectTableData.ts","../../../src/object-table/utils/getRowId.ts","../../../src/object-table/hooks/useRowSelection.ts","../../../src/base-components/checkbox/Checkbox.module.css","../../../src/base-components/checkbox/Checkbox.tsx","../../../src/object-table/SelectionCells.tsx","../../../src/object-table/hooks/useSelectionColumn.tsx","../../../src/object-table/hooks/useTableSorting.ts","../../../src/base-components/action-button/ActionButton.module.css","../../../src/base-components/action-button/ActionButton.tsx","../../../src/object-table/LoadingCell.module.css","../../../src/object-table/TableCell.module.css","../../../src/object-table/LoadingCell.tsx","../../../src/object-table/TableRow.module.css","../../../src/object-table/LoadingRow.tsx","../../../src/object-table/TableBody.module.css","../../../src/base-components/dialog/Dialog.module.css","../../../src/base-components/dialog/Dialog.tsx","../../../src/base-components/draggable-list/DraggableList.module.css","../../../src/base-components/draggable-list/DraggableList.tsx","../../../src/base-components/search-bar/SearchBar.module.css","../../../src/base-components/search-bar/SearchBar.tsx","../../../src/object-table/ColumnConfigDialog.module.css","../../../src/object-table/ColumnConfigDialog.tsx","../../../src/object-table/MultiColumnSortDialog.module.css","../../../src/object-table/SortableItemsList.tsx","../../../src/object-table/MultiColumnSortDialog.tsx","../../../src/object-table/TableHeader.module.css","../../../src/object-table/TableHeaderContent.module.css","../../../src/object-table/TableHeaderContent.tsx","../../../src/object-table/TableHeaderWithPopover.module.css","../../../src/object-table/TableHeaderWithPopover.tsx","../../../src/object-table/utils/getColumnPinningStyles.ts","../../../src/object-table/TableHeader.tsx","../../../src/object-table/LoadingStateTable.tsx","../../../src/object-table/NonIdealState.module.css","../../../src/object-table/NonIdealState.tsx","../../../src/object-table/Table.module.css","../../../src/object-table/CellContextMenu.module.css","../../../src/object-table/CellContextMenu.tsx","../../../src/object-table/hooks/useCellContextMenu.ts","../../../src/object-table/TableCell.tsx","../../../src/object-table/TableRow.tsx","../../../src/object-table/TableBody.tsx","../../../src/object-table/Table.tsx","../../../src/object-table/ObjectTable.tsx"],"names":["useState","useRef","useEffect","useCallback","value","React","Input","useOsdkMetadata","useMemo","useOsdkObjects","BaseUICheckbox","classnames","Minus","Tick","_extends","Button","classNames","BaseUIDialog","Cross","useSortable","CSS","Trash","SmallCross","DragHandleVertical","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","BaseDndContext","closestCenter","SortableContext","verticalListSortingStrategy","Search","arrayMove","Cog","Collapsible","CaretDown","SmallInfoSign","SortAlphabetical","SortAlphabeticalDesc","DialogTitle","Menu","Add","flexRender","Pin","ChevronDown","Unpin","Sort","Remove","VerticalDistribution","Settings","header","createPortal","useVirtualizer","useLayoutEffect","useReactTable","getCoreRowModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,oBAAA,GAAA,EAAA;;;ACmBA,IAAM,YAAA,GAAe,CAAC,QAAU,EAAA,SAAA,EAAW,QAAQ,OAAS,EAAA,SAAA,EAAW,QAAQ,OAAO,CAAA;AACtF,SAAS,cAAc,KAAO,EAAA;AAC5B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,EAAA;AAAA;AAET,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,IAAO,OAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA;AAG7B,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AACA,SAAS,gBAAA,CAAiB,OAAO,QAAU,EAAA;AACzC,EAAA,IAAI,CAAC,QAAY,IAAA,CAAC,YAAa,CAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACjD,IAAO,OAAA,KAAA;AAAA;AAET,EAAA,IAAI,UAAU,EAAI,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAET,EAAM,MAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AACjC,EAAI,IAAA,KAAA,CAAM,YAAY,CAAG,EAAA;AACvB,IAAO,OAAA,KAAA;AAAA;AAET,EAAO,OAAA,YAAA;AACT;AACO,SAAS,YAAa,CAAA;AAAA,EAC3B,YAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,IAAIA,gBAAS,CAAA,aAAA,CAAc,YAAY,CAAC,CAAA;AAC9D,EAAM,MAAA,WAAA,GAAcC,eAAO,KAAK,CAAA;AAChC,EAAAC,iBAAA,CAAU,MAAM;AACd,IAAS,QAAA,CAAA,aAAA,CAAc,YAAY,CAAC,CAAA;AAAA,GACtC,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAM,MAAA,UAAA,GAAaC,oBAAY,MAAM;AAEnC,IAAA,IAAI,YAAY,OAAS,EAAA;AACvB,MAAA,WAAA,CAAY,OAAU,GAAA,KAAA;AACtB,MAAA;AAAA;AAEF,IAAM,MAAA,WAAA,GAAc,gBAAiB,CAAA,KAAA,EAAO,QAAQ,CAAA;AACpD,IAAA,UAAA,GAAa,MAAQ,EAAA;AAAA,MACnB,QAAU,EAAA,WAAA;AAAA,MACV,QAAU,EAAA;AAAA,KACX,CAAA;AAAA,KACA,CAAC,KAAA,EAAO,cAAc,UAAY,EAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA;AACtD,EAAM,MAAA,YAAA,GAAeA,mBAAY,CAAA,CAAAC,MAAS,KAAA;AACxC,IAAA,QAAA,CAASA,MAAK,CAAA;AAAA,GAChB,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,aAAA,GAAgBD,oBAAY,CAAK,CAAA,KAAA;AACrC,IAAI,IAAA,CAAA,CAAE,QAAQ,OAAS,EAAA;AACrB,MAAA,CAAA,CAAE,cAAc,IAAK,EAAA;AAAA;AAEvB,IAAI,IAAA,CAAA,CAAE,QAAQ,QAAU,EAAA;AACtB,MAAA,WAAA,CAAY,OAAU,GAAA,IAAA;AACtB,MAAS,QAAA,CAAA,aAAA,CAAc,YAAY,CAAC,CAAA;AACpC,MAAA,CAAA,CAAE,cAAc,IAAK,EAAA;AAAA;AACvB,GACF,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAA,MAAM,YAAY,QAAY,IAAA,YAAA,CAAa,QAAS,CAAA,QAAQ,IAAI,QAAW,GAAA,MAAA;AAC3E,EAAoB,uBAAAE,wBAAA,CAAM,cAAcC,WAAO,EAAA;AAAA,IAC7C,WAAW,oBAAO,CAAA,iBAAA;AAAA,IAClB,IAAM,EAAA,SAAA;AAAA,IACN,KAAA;AAAA,IACA,aAAe,EAAA,YAAA;AAAA,IACf,MAAQ,EAAA,UAAA;AAAA,IACR,SAAW,EAAA;AAAA,GACZ,CAAA;AACH;;;ACzEO,SAAS,UAAU,cAAgB,EAAA;AACxC,EAAO,OAAA,IAAA,CAAK,UAAU,cAAc,CAAA;AACtC;AACO,SAAS,kBAAkB,MAAQ,EAAA;AACxC,EAAM,MAAA,MAAA,GAAS,IAAK,CAAA,KAAA,CAAM,MAAM,CAAA;AAChC,EAAI,IAAA,OAAO,WAAW,QAAY,IAAA,MAAA,IAAU,QAAQ,OAAW,IAAA,MAAA,IAAU,cAAc,MAAQ,EAAA;AAC7F,IAAO,OAAA,MAAA;AAAA;AAET,EAAM,MAAA,IAAI,MAAM,iDAAiD,CAAA;AACnE;;;ACNO,SAAS,kBAAkB,WAAa,EAAA;AAC7C,EAAM,MAAA,IAAA,GAAO,WAAY,CAAA,KAAA,CAAM,OAAQ,CAAA,IAAA;AACvC,EAAM,MAAA,UAAA,GAAa,WAAY,CAAA,MAAA,CAAO,SAAU,CAAA,IAAA;AAChD,EAAA,IAAI,CAAC,UAAA,EAAY,QAAY,IAAA,CAAC,MAAM,UAAY,EAAA;AAC9C,IAAA,OAAO,YAAY,QAAS,EAAA;AAAA;AAE9B,EAAM,MAAA,KAAA,GAAQ,YAAY,GAAI,CAAA,EAAA;AAC9B,EAAM,MAAA,QAAA,GAAW,YAAY,MAAO,CAAA,EAAA;AACpC,EAAA,MAAM,SAAS,SAAU,CAAA;AAAA,IACvB,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,YAAY,IAAK,CAAA,SAAA;AACvB,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM,CAAA;AACtC,EAAA,MAAM,YAAe,GAAA,WAAA,EAAa,QAAY,IAAA,WAAA,CAAY,QAAS,EAAA;AACnE,EAAoB,uBAAAD,wBAAM,CAAA,aAAA,CAAc,YAAc,EAAA;AAAA,IACpD,YAAA,EAAc,YAAY,QAAS,EAAA;AAAA,IACnC,YAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAU,UAAY,EAAA,QAAA;AAAA,IACtB,YAAY,IAAK,CAAA;AAAA,GAClB,CAAA;AACH;;;ACnBO,SAAS,aAAA,CAAc,YAAY,iBAAmB,EAAA;AAC3D,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAIE,sBAAgB,UAAU,CAAA;AAC9B,EAAM,MAAA,OAAA,GAAUC,gBAAQ,MAAM;AAC5B,IAAA,MAAM,mBAAmB,QAAU,EAAA,UAAA;AAEnC,IAAA,IAAI,iBAAmB,EAAA;AACrB,MAAO,OAAA,+BAAA,CAAgC,mBAAmB,gBAAgB,CAAA;AAAA;AAI5E,IAAA,OAAO,kBAAkB,gBAAgB,CAAA;AAAA,GACxC,EAAA,CAAC,iBAAmB,EAAA,QAAA,EAAU,UAAU,CAAC,CAAA;AAC5C,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AACA,SAAS,+BAAA,CAAgC,mBAAmB,gBAAkB,EAAA;AAC5E,EAAO,OAAA,iBAAA,CAAkB,IAAI,CAAO,GAAA,KAAA;AAClC,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACE,GAAA,GAAA;AACJ,IAAA,MAAM,mBAAmB,OAAQ,CAAA,IAAA,KAAS,aAAa,gBAAmB,GAAA,OAAA,CAAQ,EAAE,CAAI,GAAA,MAAA;AACxF,IAAA,MAAM,SAAS,OAAQ,CAAA,EAAA;AACvB,IAAM,MAAA,QAAA,GAAW,kBAAkB,IAAQ,IAAA,OAAO,iBAAiB,IAAS,KAAA,QAAA,GAAW,iBAAiB,IAAO,GAAA,MAAA;AAC/G,IAAA,MAAM,MAAS,GAAA;AAAA,MACb,EAAI,EAAA,MAAA;AAAA,MACJ,WAAa,EAAA,MAAA;AAAA,MACb,MAAA,EAAQ,YAAiB,KAAA,UAAA,IAAc,gBAAkB,EAAA,WAAA,CAAA;AAAA,MACzD,IAAM,EAAA;AAAA,QACJ,UAAA,EAAY,cAAc,gBAAkB,EAAA,WAAA;AAAA,QAC5C,SAAA,EAAW,IAAI,SAAc,KAAA,KAAA;AAAA,QAC7B,QAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,IAAM,EAAA,KAAA;AAAA,MACN,GAAI,QAAW,GAAA;AAAA,QACb,OAAS,EAAA;AAAA,UACP,EAAC;AAAA,MACL,GAAI,QAAW,GAAA;AAAA,QACb,OAAS,EAAA;AAAA,UACP,EAAC;AAAA,MACL,cAAgB,EAAA,SAAA;AAAA,MAChB,aAAe,EAAA,SAAA;AAAA,MACf,kBAAoB,EAAA,UAAA;AAAA,MACpB,MAAM,CAAe,WAAA,KAAA;AACnB,QAAM,MAAA,MAAA,GAAS,YAAY,GAAI,CAAA,QAAA;AAC/B,QAAA,IAAI,UAAY,EAAA;AACd,UAAO,OAAA,UAAA,CAAW,QAAQ,OAAO,CAAA;AAAA;AAEnC,QAAA,OAAO,kBAAkB,WAAW,CAAA;AAAA;AACtC,KACF;AACA,IAAO,OAAA,MAAA;AAAA,GACR,CAAA;AACH;AACA,SAAS,kBAAkB,gBAAkB,EAAA;AAC3C,EAAI,IAAA,CAAC,gBAAkB,EAAA,OAAO,EAAC;AAC/B,EAAO,OAAA,MAAA,CAAO,QAAQ,gBAAgB,CAAA,CAAE,IAAI,CAAC,CAAC,GAAK,EAAA,QAAQ,CAAM,KAAA;AAC/D,IAAA,MAAM,MAAS,GAAA;AAAA,MACb,WAAa,EAAA,GAAA;AAAA,MACb,MAAA,EAAQ,SAAS,WAAe,IAAA;AAAA,KAClC;AACA,IAAO,OAAA,MAAA;AAAA,GACR,CAAA;AACH;;;ACtFO,IAAM,mBAAsB,GAAA,eAAA;;;ACE5B,IAAM,mBAAmB,CAAC;AAAA,EAC/B,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIR,gBAAS,CAAA;AAAA,IACjD,MAAM,EAAC;AAAA,IACP,OAAO;AAAC,GACT,CAAA;AAGD,EAAAE,kBAAU,MAAM;AACd,IAAM,MAAA,YAAA,GAAe,oCAAoC,iBAAiB,CAAA;AAC1E,IAAA,MAAM,YAAe,GAAA,kBAAA,GAAqB,CAAC,mBAAmB,IAAI,EAAC;AACnE,IAAiB,gBAAA,CAAA;AAAA,MACf,IAAA,EAAM,CAAC,GAAG,YAAA,EAAc,GAAI,YAAa,CAAA,IAAA,IAAQ,EAAG,CAAA;AAAA,MACpD,OAAO,CAAC,GAAI,YAAa,CAAA,KAAA,IAAS,EAAG;AAAA,KACtC,CAAA;AAAA,GACA,EAAA,CAAC,iBAAmB,EAAA,kBAAkB,CAAC,CAAA;AAC1C,EAAM,MAAA,qBAAA,GAAwBC,oBAAY,CAAW,OAAA,KAAA;AACnD,IAAA,gBAAA,CAAiB,CAAQ,IAAA,KAAA;AACvB,MAAA,MAAM,aAAa,OAAO,OAAA,KAAY,UAAa,GAAA,OAAA,CAAQ,IAAI,CAAI,GAAA,OAAA;AACnE,MAAA,IAAI,sBAAwB,EAAA;AAC1B,QAAM,MAAA,SAAA,GAAY,iCAAiC,UAAU,CAAA;AAC7D,QAAA,MAAM,2BAA2B,SAAU,CAAA,MAAA,CAAO,CAAS,KAAA,KAAA,KAAA,CAAM,aAAa,mBAAmB,CAAA;AACjG,QAAA,sBAAA,CAAuB,wBAAwB,CAAA;AAAA;AAEjD,MAAO,OAAA,UAAA;AAAA,KACR,CAAA;AAAA,GACH,EAAG,CAAC,sBAAsB,CAAC,CAAA;AAC3B,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AACA,IAAM,sCAAsC,CAAqB,iBAAA,KAAA;AAC/D,EAAA,IAAI,CAAC,iBAAmB,EAAA;AACtB,IAAA,OAAO,EAAC;AAAA;AAEV,EAAA,MAAM,kBAAqB,GAAA,iBAAA,CAAkB,MAAO,CAAA,CAAC,GAAK,EAAA;AAAA,IACxD,OAAA;AAAA,IACA;AAAA,GACI,KAAA;AACJ,IAAM,MAAA,MAAA,GAAS,OAAQ,CAAA,EAAA,CAAG,QAAS,EAAA;AACnC,IAAM,MAAA,QAAA,GAAW,MAAU,IAAA,IAAA,IAAQ,MAAW,KAAA,MAAA;AAC9C,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAO,OAAA,GAAA;AAAA;AAET,IAAA,IAAI,WAAW,MAAQ,EAAA;AACrB,MAAO,OAAA;AAAA,QACL,GAAG,GAAA;AAAA,QACH,MAAM,CAAC,GAAI,IAAI,IAAQ,IAAA,IAAK,MAAM;AAAA,OACpC;AAAA;AAEF,IAAO,OAAA;AAAA,MACL,GAAG,GAAA;AAAA,MACH,OAAO,CAAC,GAAI,IAAI,KAAS,IAAA,IAAK,MAAM;AAAA,KACtC;AAAA,GACC,EAAA;AAAA,IACD,MAAM,EAAC;AAAA,IACP,OAAO;AAAC,GACT,CAAA;AACD,EAAO,OAAA,kBAAA;AACT,CAAA;AAKA,SAAS,iCAAiC,YAAc,EAAA;AACtD,EAAA,OAAO,CAAC,GAAI,CAAA,YAAA,CAAa,QAAQ,EAAC,EAAG,IAAI,CAAa,QAAA,MAAA;AAAA,IACpD,QAAA;AAAA,IACA,MAAQ,EAAA;AAAA,GACV,CAAE,GAAG,GAAI,CAAA,YAAA,CAAa,SAAS,EAAC,EAAG,IAAI,CAAa,QAAA,MAAA;AAAA,IAClD,QAAA;AAAA,IACA,MAAQ,EAAA;AAAA,IACR,CAAC,CAAA;AACL;AC7EO,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,CAAC,YAAc,EAAA,eAAe,CAAIH,GAAAA,gBAAAA,CAAS,EAAE,CAAA;AACnD,EAAM,MAAA,oBAAA,GAAuBG,oBAAY,CAAW,OAAA,KAAA;AAClD,IAAA,eAAA,CAAgB,CAAQ,IAAA,KAAA;AACtB,MAAA,MAAM,WAAW,OAAO,OAAA,KAAY,UAAa,GAAA,OAAA,CAAQ,IAAI,CAAI,GAAA,OAAA;AACjE,MAAA,IAAI,cAAgB,EAAA;AAClB,QAAA,KAAA,MAAW,QAAY,IAAA,MAAA,CAAO,IAAK,CAAA,QAAQ,CAAG,EAAA;AAC5C,UAAA,IAAI,QAAS,CAAA,QAAQ,CAAM,KAAA,IAAA,CAAK,QAAQ,CAAG,EAAA;AACzC,YAAe,cAAA,CAAA,QAAA,EAAU,QAAS,CAAA,QAAQ,CAAC,CAAA;AAAA;AAC7C;AAEF,QAAA,KAAA,MAAW,QAAY,IAAA,MAAA,CAAO,IAAK,CAAA,IAAI,CAAG,EAAA;AACxC,UAAI,IAAA,EAAE,YAAY,QAAW,CAAA,EAAA;AAC3B,YAAA,cAAA,CAAe,UAAU,IAAI,CAAA;AAAA;AAC/B;AACF;AAEF,MAAO,OAAA,QAAA;AAAA,KACR,CAAA;AAAA,GACH,EAAG,CAAC,cAAc,CAAC,CAAA;AACnB,EAAO,OAAA;AAAA,IACL,YAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AC1BO,IAAM,sBAAsB,CAAC;AAAA,EAClC,UAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,CAAC,kBAAkB,mBAAmB,CAAA,GAAIH,iBAAS,MAAM,wBAAA,CAAyB,UAAU,CAAC,CAAA;AACnG,EAAM,MAAA,CAAC,aAAa,cAAc,CAAA,GAAIA,iBAAS,MAAM,cAAA,CAAe,UAAU,CAAC,CAAA;AAG/E,EAAAE,kBAAU,MAAM;AACd,IAAoB,mBAAA,CAAA,wBAAA,CAAyB,UAAU,CAAC,CAAA;AAAA,GAC1D,EAAG,CAAC,UAAU,CAAC,CAAA;AACf,EAAAA,kBAAU,MAAM;AACd,IAAe,cAAA,CAAA,cAAA,CAAe,UAAU,CAAC,CAAA;AAAA,GAC3C,EAAG,CAAC,UAAU,CAAC,CAAA;AACf,EAAM,MAAA,wBAAA,GAA2BC,oBAAY,CAAkB,cAAA,KAAA;AAC7D,IAAA,mBAAA,CAAoB,CAAQ,IAAA,KAAA;AAC1B,MAAA,MAAM,WAAW,OAAO,cAAA,KAAmB,UAAa,GAAA,cAAA,CAAe,IAAI,CAAI,GAAA,cAAA;AAC/E,MAAA,IAAI,yBAA2B,EAAA;AAC7B,QAAM,MAAA,OAAA,GAAU,MAAO,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,QAAU,EAAA,SAAS,CAAO,MAAA;AAAA,UACvE,QAAA;AAAA,UACA;AAAA,SACA,CAAA,CAAA;AACF,QAAA,yBAAA,CAA0B,OAAO,CAAA;AAAA;AAEnC,MAAO,OAAA,QAAA;AAAA,KACR,CAAA;AAAA,GACH,EAAG,CAAC,yBAAyB,CAAC,CAAA;AAC9B,EAAM,MAAA,mBAAA,GAAsBA,oBAAY,CAAkB,cAAA,KAAA;AACxD,IAAA,cAAA,CAAe,CAAQ,IAAA,KAAA;AACrB,MAAA,MAAM,WAAW,OAAO,cAAA,KAAmB,UAAa,GAAA,cAAA,CAAe,IAAI,CAAI,GAAA,cAAA;AAC/E,MAAO,OAAA,QAAA;AAAA,KACR,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AACL,EAAO,OAAA;AAAA,IACL,gBAAA;AAAA,IACA,wBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AACA,IAAM,2BAA2B,CAAc,UAAA,KAAA;AAC7C,EAAA,OAAO,UAAW,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,GAAQ,KAAA;AACrC,IAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,EAAA,IAAM,GAAI,CAAA,WAAA;AAC5B,IAAA,IAAI,KAAO,EAAA;AACT,MAAO,OAAA;AAAA,QACL,GAAG,GAAA;AAAA,QACH,CAAC,KAAK,GAAG,GAAA,CAAI,MAAM,SAAc,KAAA;AAAA,OACnC;AAAA;AAEF,IAAO,OAAA,GAAA;AAAA,GACT,EAAG,EAAE,CAAA;AACP,CAAA;AACA,IAAM,iBAAiB,CAAc,UAAA,KAAA;AACnC,EAAO,OAAA,UAAA,CAAW,GAAI,CAAA,CAAA,GAAA,KAAO,GAAI,CAAA,EAAA,IAAM,GAAI,CAAA,WAAW,CAAE,CAAA,MAAA,CAAO,CAAM,EAAA,KAAA,EAAA,IAAM,IAAI,CAAA;AACjF,CAAA;ACrDO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,kBAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAIH,GAAAA,gBAAAA,CAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,cAAiBG,GAAAA,mBAAAA,CAAY,CAAC,MAAA,EAAQ,KAAU,KAAA;AACpD,IAAM,MAAA,cAAA,GAAiB,kBAAkB,MAAM,CAAA;AAG/C,IAAI,IAAA,KAAA,CAAM,QAAa,KAAA,KAAA,CAAM,QAAU,EAAA;AACrC,MAAA,YAAA,CAAa,CAAQ,IAAA,KAAA;AACnB,QAAM,MAAA;AAAA,UACJ,CAAC,MAAM,GAAG,CAAA;AAAA,UACV,GAAG;AAAA,SACD,GAAA,IAAA;AACJ,QAAO,OAAA,IAAA;AAAA,OACR,CAAA;AAAA,KACI,MAAA;AACL,MAAA,YAAA,CAAa,CAAS,IAAA,MAAA;AAAA,QACpB,GAAG,IAAA;AAAA,QACH,CAAC,MAAM,GAAG;AAAA,OACV,CAAA,CAAA;AAAA;AAEJ,IAAA,kBAAA,GAAqB,gBAAgB,KAAK,CAAA;AAAA,GAC5C,EAAG,CAAC,kBAAkB,CAAC,CAAA;AACvB,EAAM,MAAA,UAAA,GAAaA,oBAAY,MAAM;AACnC,IAAA,YAAA,CAAa,EAAE,CAAA;AAAA,GACjB,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,iBAAA,GAAoBA,oBAAY,YAAY;AAChD,IAAA,MAAM,gBAAgB,SAAS,CAAA;AAAA,GAC9B,EAAA,CAAC,SAAW,EAAA,aAAa,CAAC,CAAA;AAC7B,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AACF;ACrCA,IAAM,SAAY,GAAA,EAAA;AAOX,SAAS,kBAAmB,CAAA,qBAAA,EAAuB,iBAAmB,EAAA,MAAA,EAAQ,OAAS,EAAA;AAC5F,EAAM,MAAA,OAAA,GAAUK,gBAAQ,MAAM;AAC5B,IAAA,IAAI,CAAC,OAAA,IAAW,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACpC,MAAO,OAAA,MAAA;AAAA;AAET,IAAA,OAAO,OAAQ,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,IAAS,KAAA;AACnC,MAAA,GAAA,CAAI,IAAK,CAAA,EAAE,CAAI,GAAA,IAAA,CAAK,OAAO,MAAS,GAAA,KAAA;AACpC,MAAO,OAAA,GAAA;AAAA,KACT,EAAG,EAAE,CAAA;AAAA,GACP,EAAG,CAAC,OAAO,CAAC,CAAA;AAGZ,EAAM,MAAA,cAAA,GAAiBA,gBAAQ,MAAM;AACnC,IAAA,IAAI,CAAC,iBAAmB,EAAA;AACtB,MAAA;AAAA;AAEF,IAAM,MAAA,UAAA,GAAa,kBAAkB,GAAI,CAAA,CAAA,MAAA,KAAU,OAAO,OAAO,CAAA,CAAE,OAAO,CAAc,UAAA,KAAA;AACtF,MAAA,OAAO,WAAW,IAAS,KAAA,KAAA;AAAA,KAC5B,CAAA;AACD,IAAI,IAAA,CAAC,WAAW,MAAQ,EAAA;AACtB,MAAA;AAAA;AAEF,IAAA,OAAO,UAAW,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,GAAQ,KAAA;AACrC,MAAO,OAAA;AAAA,QACL,GAAG,GAAA;AAAA,QACH,CAAC,GAAA,CAAI,EAAE,GAAG,GAAI,CAAA;AAAA,OAChB;AAAA,KACF,EAAG,EAAE,CAAA;AAAA,GACP,EAAG,CAAC,iBAAiB,CAAC,CAAA;AACtB,EAAA,OAAOC,4BAAe,qBAAuB,EAAA;AAAA,IAC3C,cAAA;AAAA,IACA,QAAU,EAAA,SAAA;AAAA,IACV,KAAO,EAAA,MAAA;AAAA,IACP;AAAA,GACD,CAAA;AACH;;;AC5CO,IAAM,WAAW,CAAO,GAAA,KAAA;AAC7B,EAAO,OAAA,sBAAA,CAAuB,IAAI,WAAW,CAAA;AAC/C,CAAA;AACO,IAAM,sBAAA,GAAyB,CAAc,UAAA,KAAA,UAAA,CAAW,QAAS,EAAA;;;ACDjE,SAAS,eAAgB,CAAA;AAAA,EAC9B,aAAgB,GAAA,MAAA;AAAA,EAChB,YAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAG,EAAA;AAED,EAAA,MAAM,CAAC,oBAAsB,EAAA,uBAAuB,CAAIT,GAAAA,gBAAAA,CAAS,EAAE,CAAA;AAGnE,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIA,iBAAS,IAAI,CAAA;AACrE,EAAA,MAAM,eAAe,YAAiB,KAAA,MAAA;AACtC,EAAA,MAAM,qBAAqB,aAAkB,KAAA,MAAA;AAK7C,EAAM,MAAA,iBAAA,GAAoBQ,gBAAQ,MAAM;AACtC,IAAI,IAAA,CAAC,kBAAoB,EAAA,OAAO,EAAC;AACjC,IAAA,IAAI,gBAAgB,YAAc,EAAA;AAChC,MAAA,OAAO,qBAAqB,YAAY,CAAA;AAAA;AAE1C,IAAO,OAAA,oBAAA;AAAA,KACN,CAAC,kBAAA,EAAoB,YAAc,EAAA,YAAA,EAAc,oBAAoB,CAAC,CAAA;AACzE,EAAA,MAAM,gBAAgB,MAAO,CAAA,MAAA,CAAO,iBAAiB,CAAE,CAAA,MAAA,CAAO,OAAO,CAAE,CAAA,MAAA;AACvE,EAAM,MAAA,UAAA,GAAa,MAAM,MAAU,IAAA,CAAA;AACnC,EAAM,MAAA,aAAA,GAAgB,UAAa,GAAA,CAAA,IAAK,aAAkB,KAAA,UAAA;AAC1D,EAAA,MAAM,eAAe,aAAgB,GAAA,CAAA;AACrC,EAAM,MAAA,WAAA,GAAcL,oBAAY,MAAM;AACpC,IAAI,IAAA,CAAC,kBAAsB,IAAA,CAAC,IAAM,EAAA;AAClC,IAAM,MAAA,eAAA,GAAkB,gBAAgB,EAAC,GAAI,KAAK,GAAI,CAAA,CAAA,IAAA,KAAQ,KAAK,WAAW,CAAA;AAC9E,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAwB,uBAAA,CAAA,oBAAA,CAAqB,eAAe,CAAC,CAAA;AAAA;AAE/D,IAAA,cAAA,GAAiB,eAAe,CAAA;AAAA,KAC/B,CAAC,kBAAA,EAAoB,MAAM,aAAe,EAAA,YAAA,EAAc,cAAc,CAAC,CAAA;AAC1E,EAAA,MAAM,cAAcA,mBAAY,CAAA,CAAC,KAAO,EAAA,QAAA,EAAU,eAAe,KAAU,KAAA;AACzE,IAAI,IAAA,CAAC,kBAAsB,IAAA,CAAC,IAAM,EAAA;AAClC,IAAA,IAAI,kBAAkB,EAAC;AACvB,IAAA,IAAI,kBAAkB,QAAU,EAAA;AAC9B,MAAA,eAAA,GAAkB,sBAAuB,CAAA;AAAA,QACvC,KAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA,uBAAA,CAAwB,QAAQ,CAAA;AAAA,KAC3B,MAAA;AAKL,MAAI,IAAA,YAAA,IAAgB,wBAAwB,IAAM,EAAA;AAChD,QAAA,eAAA,GAAkB,qBAAsB,CAAA;AAAA,UAEtC,QAAA;AAAA,UACA,IAAA;AAAA,UACA,oBAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,OACI,MAAA;AACL,QAAA,eAAA,GAAkB,wBAAyB,CAAA;AAAA,UAEzC,QAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA;AAEH,MAAA,uBAAA,CAAwB,QAAQ,CAAA;AAAA;AAElC,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAwB,uBAAA,CAAA,oBAAA,CAAqB,eAAe,CAAC,CAAA;AAAA;AAE/D,IAAA,cAAA,GAAiB,eAAe,CAAA;AAAA,GAClC,EAAG,CAAC,kBAAoB,EAAA,IAAA,EAAM,eAAe,oBAAsB,EAAA,YAAA,EAAc,iBAAmB,EAAA,cAAc,CAAC,CAAA;AACnH,EAAO,OAAA;AAAA,IACL,YAAc,EAAA,iBAAA;AAAA,IACd,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF;AACA,SAAS,sBAAuB,CAAA;AAAA,EAC9B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,UAAA,GAAa,IAAK,CAAA,QAAQ,CAAE,CAAA,WAAA;AAElC,EAAA,MAAM,kBAAkB,iBAAkB,CAAA,KAAK,IAAI,EAAC,GAAI,CAAC,UAAU,CAAA;AACnE,EAAO,OAAA,eAAA;AACT;AACA,SAAS,qBAAsB,CAAA;AAAA,EAC7B,oBAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAG,EAAA;AAGD,EAAA,IAAI,wBAAwB,IAAM,EAAA;AAChC,IAAA,MAAM,WAAc,GAAA,cAAA,CAAe,IAAM,EAAA,oBAAA,EAAsB,QAAQ,CAAA;AACvE,IAAA,MAAM,kBAAqB,GAAA,WAAA,CAAY,GAAI,CAAA,CAAA,IAAA,KAAQ,KAAK,WAAW,CAAA;AACnE,IAAM,MAAA,iBAAA,GAAoB,sBAAuB,CAAA,iBAAA,EAAmB,IAAI,CAAA;AAGxE,IAAM,MAAA,eAAA,GAAkB,CAAC,GAAG,iBAAiB,CAAA;AAC7C,IAAA,kBAAA,CAAmB,QAAQ,CAAQ,IAAA,KAAA;AACjC,MAAA,IAAI,CAAC,eAAA,CAAgB,QAAS,CAAA,IAAI,CAAG,EAAA;AACnC,QAAA,eAAA,CAAgB,KAAK,IAAI,CAAA;AAAA;AAC3B,KACD,CAAA;AACD,IAAO,OAAA,eAAA;AAAA;AAET,EAAA,OAAO,EAAC;AACV;AACA,SAAS,wBAAyB,CAAA;AAAA,EAChC,QAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,UAAA,GAAa,IAAK,CAAA,QAAQ,CAAE,CAAA,WAAA;AAClC,EAAM,MAAA,iBAAA,GAAoB,sBAAuB,CAAA,iBAAA,EAAmB,IAAI,CAAA;AAExE,EAAA,MAAM,eAAkB,GAAA,iBAAA,CAAkB,QAAS,CAAA,UAAU,IAAI,iBAAkB,CAAA,MAAA,CAAO,CAAK,CAAA,KAAA,CAAA,KAAM,UAAU,CAAA,GAAI,CAAC,GAAG,mBAAmB,UAAU,CAAA;AACpJ,EAAO,OAAA,eAAA;AACT;AAKA,SAAS,cAAA,CAAe,IAAM,EAAA,UAAA,EAAY,QAAU,EAAA;AAClD,EAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,GAAI,CAAA,UAAA,EAAY,QAAQ,CAAA;AAC3C,EAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,UAAA,EAAY,QAAQ,CAAA;AACzC,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,KAAA,IAAS,CAAI,GAAA,KAAA,EAAO,CAAK,IAAA,GAAA,EAAK,CAAK,EAAA,EAAA;AACjC,IAAM,MAAA,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA;AAChB;AAEF,EAAO,OAAA,IAAA;AACT;AAKA,SAAS,qBAAqB,WAAa,EAAA;AACzC,EAAA,OAAO,WAAY,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,UAAe,KAAA;AAC7C,IAAI,GAAA,CAAA,sBAAA,CAAuB,UAAU,CAAC,CAAI,GAAA,IAAA;AAC1C,IAAO,OAAA,GAAA;AAAA,GACT,EAAG,EAAE,CAAA;AACP;AAKA,SAAS,sBAAA,CAAuB,gBAAgB,IAAM,EAAA;AACpD,EAAA,OAAO,IAAK,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,cAAA,CAAe,QAAS,CAAA,IAAI,CAAC,CAAC,CAAE,CAAA,GAAA,CAAI,CAAQ,IAAA,KAAA,IAAA,CAAK,WAAW,CAAA;AACzF;;;ACpLA,IAAA,gBAAA,GAAA,EAAA;;;ACAA,SAAS,QAAW,GAAA;AAAE,EAAO,OAAA,QAAA,GAAW,OAAO,MAAS,GAAA,MAAA,CAAO,OAAO,IAAK,EAAA,GAAI,SAAU,CAAG,EAAA;AAAE,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AAAE,MAAI,IAAA,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAK,IAAA,CAAA,EAAI,CAAA,IAAI,cAAe,CAAA,IAAA,CAAK,CAAG,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA;AAAM,IAAO,OAAA,CAAA;AAAA,GAAM,EAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,SAAS,CAAA;AAAG;AAsB5Q,SAAS,QAAS,CAAA;AAAA,EACvB,aAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAG,EAAA;AACD,EAAA,uBAAoBE,wBAAAA,CAAM,aAAc,CAAAK,iBAAA,CAAe,MAAM,QAAS,CAAA;AAAA,IACpE,SAAW,EAAAC,4BAAA,CAAW,gBAAO,CAAA,gBAAA,EAAkB,SAAS,CAAA;AAAA,IACxD;AAAA,GACF,EAAG,IAAI,CAAA,kBAAgBN,wBAAAA,CAAM,aAAc,CAAAK,iBAAA,CAAe,SAAW,EAAA,QAAA,CAAS,EAAC,EAAG,cAAgB,EAAA;AAAA,IAChG,SAAW,EAAAC,4BAAA,CAAW,gBAAO,CAAA,qBAAA,EAAuB,gBAAgB,SAAS;AAAA,GAC9E,CAAG,EAAA,aAAA,mBAA6BN,wBAAAA,CAAM,cAAcO,WAAO,EAAA;AAAA,IAC1D,KAAO,EAAA;AAAA,GACR,CAAA,mBAAiBP,wBAAAA,CAAM,cAAcQ,UAAM,EAAA;AAAA,IAC1C,KAAO,EAAA;AAAA,GACR,CAAC,CAAC,CAAA;AACL;;;ACpBO,SAAS,mBAAoB,CAAA;AAAA,EAClC,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAoB,uBAAAR,wBAAM,CAAA,aAAA,CAAc,QAAU,EAAA;AAAA,IAChD,aAAA,EAAe,gBAAgB,CAAC,aAAA;AAAA,IAChC,OAAS,EAAA,aAAA;AAAA,IACT,eAAiB,EAAA,WAAA;AAAA,IACjB,YAAc,EAAA;AAAA,GACf,CAAA;AACH;AACO,SAAS,aAAc,CAAA;AAAA,EAC5B,GAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,WAAA,GAAcF,oBAAY,CAAS,KAAA,KAAA;AACvC,IAAA,MAAM,eAAe,KAAM,CAAA,QAAA;AAC3B,IAAA,WAAA,CAAY,GAAI,CAAA,EAAA,EAAI,GAAI,CAAA,KAAA,EAAO,YAAY,CAAA;AAAA,GAC1C,EAAA,CAAC,GAAK,EAAA,WAAW,CAAC,CAAA;AACrB,EAAoB,uBAAAE,wBAAM,CAAA,aAAA,CAAc,QAAU,EAAA;AAAA,IAChD,OAAA,EAAS,IAAI,aAAc,EAAA;AAAA,IAC3B,OAAS,EAAA,WAAA;AAAA,IACT,YAAc,EAAA,CAAA,WAAA,EAAc,GAAI,CAAA,KAAA,GAAQ,CAAC,CAAA;AAAA,GAC1C,CAAA;AACH;;;ACxBO,IAAM,qBAAqB,CAAC;AAAA,EACjC,aAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAM,KAAA;AAEJ,EAAM,MAAA,gBAAA,GAAmBJ,eAAO,aAAa,CAAA;AAC7C,EAAA,gBAAA,CAAiB,OAAU,GAAA,aAAA;AAC3B,EAAM,MAAA,eAAA,GAAkBA,eAAO,YAAY,CAAA;AAC3C,EAAA,eAAA,CAAgB,OAAU,GAAA,YAAA;AAC1B,EAAM,MAAA,cAAA,GAAiBA,eAAO,WAAW,CAAA;AACzC,EAAA,cAAA,CAAe,OAAU,GAAA,WAAA;AACzB,EAAM,MAAA,cAAA,GAAiBA,eAAO,WAAW,CAAA;AACzC,EAAA,cAAA,CAAe,OAAU,GAAA,WAAA;AACzB,EAAM,MAAA,eAAA,GAAkBO,gBAAQ,MAAM;AACpC,IAAI,IAAA,aAAA,KAAkB,QAAe,OAAA,IAAA;AACrC,IAAA,MAAM,MAAS,GAAA;AAAA,MACb,EAAI,EAAA,mBAAA;AAAA,MACJ,QAAQ,MAAM,aAAA,KAAkB,6BAA0BH,wBAAAA,CAAM,cAAc,mBAAqB,EAAA;AAAA,QACjG,eAAe,gBAAiB,CAAA,OAAA;AAAA,QAChC,cAAc,eAAgB,CAAA,OAAA;AAAA,QAC9B,aAAa,cAAe,CAAA;AAAA,OAC7B,CAAI,GAAA,IAAA;AAAA,MACL,MAAM,CAAC;AAAA,QACL;AAAA,OACiB,qBAAAA,wBAAM,CAAA,aAAA,CAAc,aAAe,EAAA;AAAA,QACpD,GAAA;AAAA,QACA,aAAa,cAAe,CAAA;AAAA,OAC7B,CAAA;AAAA,MACD,IAAM,EAAA,EAAA;AAAA,MACN,OAAS,EAAA,EAAA;AAAA,MACT,OAAS,EAAA,EAAA;AAAA,MACT,aAAe,EAAA,KAAA;AAAA,MACf,cAAgB,EAAA,KAAA;AAAA,MAChB,aAAe,EAAA;AAAA,KACjB;AACA,IAAO,OAAA,MAAA;AAAA,GACT,EAAG,CAAC,aAAa,CAAC,CAAA;AAClB,EAAO,OAAA,eAAA;AACT,CAAA;AC3CO,IAAM,kBAAkB,CAAC;AAAA,EAC9B,OAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAM,KAAA;AAEJ,EAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAIL,GAAAA,gBAAAA,CAAS,MAAM,cAAA,GAAiB,4BAA6B,CAAA,cAAc,CAAI,GAAA,EAAE,CAAA;AAC/H,EAAA,MAAM,eAAe,OAAY,KAAA,MAAA;AAKjC,EAAM,MAAA,YAAA,GAAeQ,eAAQ,CAAA,MAAM,OAAU,GAAA,4BAAA,CAA6B,OAAO,CAAA,GAAI,eAAiB,EAAA,CAAC,OAAS,EAAA,eAAe,CAAC,CAAA;AAChI,EAAM,MAAA,eAAA,GAAkBL,oBAAY,CAAW,OAAA,KAAA;AAC7C,IAAA,MAAM,aAAa,OAAO,OAAA,KAAY,UAAa,GAAA,OAAA,CAAQ,YAAY,CAAI,GAAA,OAAA;AAG3E,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA,kBAAA,CAAmB,UAAU,CAAA;AAAA;AAE/B,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAM,MAAA,UAAA,GAAa,6BAA6B,UAAU,CAAA;AAC1D,MAAA,gBAAA,CAAiB,UAAU,CAAA;AAAA;AAC7B,GACC,EAAA,CAAC,YAAc,EAAA,YAAA,EAAc,gBAAgB,CAAC,CAAA;AACjD,EAAO,OAAA;AAAA,IACL,OAAS,EAAA,YAAA;AAAA,IACT;AAAA,GACF;AACF,CAAA;AACA,SAAS,6BAA6B,OAAS,EAAA;AAC7C,EAAO,OAAA,OAAA,CAAQ,IAAI,CAAC;AAAA,IAClB,QAAA;AAAA,IACA;AAAA,GACK,MAAA;AAAA,IACL,EAAI,EAAA,QAAA;AAAA,IACJ,MAAM,SAAc,KAAA;AAAA,GACpB,CAAA,CAAA;AACJ;AACA,SAAS,6BAA6B,OAAS,EAAA;AAC7C,EAAO,OAAA,OAAA,CAAQ,IAAI,CAAC;AAAA,IAClB,EAAA;AAAA,IACA;AAAA,GACK,MAAA;AAAA,IACL,QAAU,EAAA,EAAA;AAAA,IACV,SAAA,EAAW,OAAO,MAAS,GAAA;AAAA,GAC3B,CAAA,CAAA;AACJ;;;AChEA,IAAA,oBAAA,GAAA,EAAA;;;ACAA,SAASW,SAAW,GAAA;AAAE,EAAOA,OAAAA,SAAAA,GAAW,OAAO,MAAS,GAAA,MAAA,CAAO,OAAO,IAAK,EAAA,GAAI,SAAU,CAAG,EAAA;AAAE,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AAAE,MAAI,IAAA,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAK,IAAA,CAAA,EAAI,CAAA,IAAI,cAAe,CAAA,IAAA,CAAK,CAAG,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA;AAAM,IAAO,OAAA,CAAA;AAAA,GAAMA,EAAAA,SAAAA,CAAS,KAAM,CAAA,IAAA,EAAM,SAAS,CAAA;AAAG;AAqB5Q,SAAS,YAAa,CAAA;AAAA,EAC3B,OAAU,GAAA,WAAA;AAAA,EACV,SAAA;AAAA,EACA,GAAG;AACL,CAAG,EAAA;AACD,EAAA,uBAAoBT,wBAAAA,CAAM,aAAc,CAAAU,aAAA,EAAQD,SAAS,CAAA;AAAA,IACvD,SAAA,EAAWE,4BAAW,CAAA,oBAAA,CAAO,MAAQ,EAAA,OAAA,KAAY,YAAY,oBAAO,CAAA,aAAA,GAAgB,oBAAO,CAAA,eAAA,EAAiB,SAAS;AAAA,GACvH,EAAG,IAAI,CAAC,CAAA;AACV;;;AC7BA,IAAA,mBAAA,GAAA,EAAA;;;ACAA,IAAA,iBAAA,GAAA,EAAA;;;ACoBO,SAAS,WAAY,CAAA;AAAA,EAC1B;AACF,CAAG,EAAA;AACD,EAAoB,uBAAAX,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,IAC5C,WAAW,iBAAW,CAAA,aAAA;AAAA,IACtB,KAAO,EAAA;AAAA,MACL;AAAA;AACF,GACc,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,SAAWW,EAAAA,4BAAAA,CAAW,mBAAO,CAAA,eAAA,EAAiB,oBAAO,gBAAgB;AAAA,GACtE,CAAC,CAAA;AACJ;;;AC/BA,IAAA,gBAAA,GAAA,EAAA;;;ACmBO,SAAS,UAAW,CAAA;AAAA,EACzB,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAY,GAAA,EAAA;AAAA,EACZ,WAAc,GAAA;AAChB,CAAG,EAAA;AACD,EAAoB,uBAAAX,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,IAC5C,WAAW,gBAAU,CAAA,YAAA;AAAA,IACrB,KAAO,EAAA;AAAA,MACL,MAAA,EAAQ,GAAG,SAAS,CAAA,EAAA,CAAA;AAAA,MACpB,SAAA,EAAW,cAAc,UAAU,CAAA,GAAA;AAAA;AACrC,GACF,kBAAgBA,wBAAM,CAAA,aAAA,CAAcA,yBAAM,QAAU,EAAA,IAAA,EAAM,MAAM,IAAK,CAAA;AAAA,IACnE,MAAQ,EAAA;AAAA,GACT,CAAA,CAAE,GAAI,CAAA,CAAC,GAAG,KAAU,KAAA;AACnB,IAAM,MAAA,KAAA,GAAQ,QAAQ,MAAS,GAAA,KAAA,GAAQ,QAAQ,KAAK,CAAA,CAAE,SAAY,GAAA,WAAA;AAClE,IAAoB,uBAAAA,wBAAM,CAAA,aAAA,CAAc,WAAa,EAAA;AAAA,MACnD,GAAA,EAAK,gBAAgB,KAAK,CAAA,CAAA;AAAA,MAC1B;AAAA,KACD,CAAA;AAAA,GACF,CAAC,CAAC,CAAA;AACL;;;ACzCA,IAAA,iBAAA,GAAA,EAAA;;;ACAA,IAAA,cAAA,GAAA,EAAA;;;ACqBO,SAAS,MAAO,CAAA;AAAA,EACrB,MAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAA,uBAAoBA,wBAAAA,CAAM,aAAc,CAAAY,aAAA,CAAa,IAAM,EAAA;AAAA,IACzD,IAAM,EAAA,MAAA;AAAA,IACN;AAAA,GACF,kBAAgBZ,wBAAAA,CAAM,aAAc,CAAAY,aAAA,CAAa,MAAQ,EAAA,IAAA,kBAAmBZ,wBAAAA,CAAM,aAAc,CAAAY,aAAA,CAAa,QAAU,EAAA;AAAA,IACrH,WAAW,cAAO,CAAA;AAAA,GACnB,CAAgB,kBAAAZ,wBAAM,CAAA,aAAA,CAAcY,cAAa,KAAO,EAAA;AAAA,IACvD,SAAWN,EAAAA,4BAAAA,CAAW,cAAO,CAAA,KAAA,EAAO,SAAS;AAAA,GAC/B,kBAAAN,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,cAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAcY,cAAa,KAAO,EAAA;AAAA,IACtD,WAAW,cAAO,CAAA;AAAA,KACjB,KAAK,CAAA,kBAAgBZ,wBAAM,CAAA,aAAA,CAAcY,cAAa,KAAO,EAAA;AAAA,IAC9D,WAAW,cAAO,CAAA,WAAA;AAAA,IAClB,YAAc,EAAA;AAAA,GACA,kBAAAZ,wBAAM,CAAA,aAAA,CAAca,WAAO,EAAA;AAAA,IACzC,WAAW,cAAO,CAAA;AAAA,GACnB,CAAC,CAAC,mBAAgBb,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IAC5C,WAAW,cAAO,CAAA;AAAA,GACpB,EAAG,QAAQ,CAAG,EAAA,MAAA,IAAU,wBAAqBA,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IACtE,WAAW,cAAO,CAAA;AAAA,GACjB,EAAA,MAAM,CAAC,CAAC,CAAC,CAAA;AACd;;;AClDA,IAAA,qBAAA,GAAA,EAAA;;;ACAA,SAASS,SAAW,GAAA;AAAE,EAAOA,OAAAA,SAAAA,GAAW,OAAO,MAAS,GAAA,MAAA,CAAO,OAAO,IAAK,EAAA,GAAI,SAAU,CAAG,EAAA;AAAE,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AAAE,MAAI,IAAA,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAK,IAAA,CAAA,EAAI,CAAA,IAAI,cAAe,CAAA,IAAA,CAAK,CAAG,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA;AAAM,IAAO,OAAA,CAAA;AAAA,GAAMA,EAAAA,SAAAA,CAAS,KAAM,CAAA,IAAA,EAAM,SAAS,CAAA;AAAG;AAyBnR,SAAS,iBAAkB,CAAA;AAAA,EACzB,IAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAoB,GAAA,OAAA;AAAA,EACpB;AACF,CAAG,EAAA;AACD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACEK,oBAAY,CAAA;AAAA,IACd,IAAI,IAAK,CAAA;AAAA,GACV,CAAA;AACD,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,SAAW,EAAAC,aAAA,CAAI,SAAU,CAAA,QAAA,CAAS,SAAS,CAAA;AAAA,IAC3C;AAAA,GACF;AACA,EAAM,MAAA,YAAA,GAAejB,oBAAY,MAAM;AACrC,IAAA,QAAA,GAAW,KAAK,EAAE,CAAA;AAAA,GACjB,EAAA,CAAC,IAAK,CAAA,EAAA,EAAI,QAAQ,CAAC,CAAA;AACtB,EAAM,MAAA,UAAA,GAAa,iBAAsB,KAAA,OAAA,GAAUkB,WAAQ,GAAAC,gBAAA;AAC3D,EAAoB,uBAAAjB,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,GAAK,EAAA,UAAA;AAAA,IACL,KAAA;AAAA,IACA,WAAW,qBAAO,CAAA,aAAA;AAAA,IAClB,eAAiB,EAAA;AAAA,GACH,kBAAAA,wBAAM,CAAA,aAAA,CAAc,OAAOS,SAAS,CAAA;AAAA,IAClD,WAAW,qBAAO,CAAA,UAAA;AAAA,IAClB,YAAA,EAAc,CAAW,QAAA,EAAA,IAAA,CAAK,KAAK,CAAA;AAAA,KAClC,UAAY,EAAA,SAAS,mBAAgBT,wBAAAA,CAAM,cAAckB,wBAAoB,EAAA;AAAA,IAC9E,WAAW,qBAAO,CAAA;AAAA,GACnB,CAAC,CAAA,kBAAgBlB,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IAC3C,WAAW,qBAAO,CAAA;AAAA,GACjB,EAAA,aAAA,GAAgB,aAAc,CAAA,IAAI,CAAI,GAAA,IAAA,CAAK,KAAK,CAAA,EAAG,QAAyB,oBAAAA,wBAAM,CAAA,aAAA,CAAcU,aAAQ,EAAA;AAAA,IACzG,WAAW,qBAAO,CAAA,YAAA;AAAA,IAClB,OAAS,EAAA,YAAA;AAAA,IACT,YAAA,EAAc,CAAU,OAAA,EAAA,IAAA,CAAK,KAAK,CAAA;AAAA,GACpB,kBAAAV,wBAAM,CAAA,aAAA,CAAc,UAAY,EAAA;AAAA,IAC9C,WAAW,qBAAO,CAAA;AAAA,GACnB,CAAC,CAAC,CAAA;AACL;AACO,SAAS,aAAc,CAAA;AAAA,EAC5B,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAoB,GAAA,OAAA;AAAA,EACpB,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,OAAA,GAAUG,eAAQ,CAAA,MAAM,KAAM,CAAA,GAAA,CAAI,CAAQ,IAAA,KAAA,IAAA,CAAK,EAAE,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACjE,EAAM,MAAA,OAAA,GAAUgB,eAAW,CAAAC,cAAA,CAAUC,kBAAe,EAAA;AAAA,IAClD,oBAAsB,EAAA;AAAA,MACpB,QAAU,EAAA;AAAA;AACZ,GACD,CAAG,EAAAD,cAAA,CAAUE,mBAAgB,EAAA;AAAA,IAC5B,gBAAkB,EAAAC;AAAA,GACnB,CAAC,CAAA;AACF,EAAM,MAAA,aAAA,GAAgBzB,oBAAY,CAAS,KAAA,KAAA;AACzC,IAAM,MAAA;AAAA,MACJ,MAAA;AAAA,MACA;AAAA,KACE,GAAA,KAAA;AACJ,IAAA,IAAI,IAAQ,IAAA,MAAA,CAAO,EAAO,KAAA,IAAA,CAAK,EAAI,EAAA;AACjC,MAAA,MAAM,WAAW,KAAM,CAAA,SAAA,CAAU,UAAQ,IAAK,CAAA,EAAA,KAAO,OAAO,EAAE,CAAA;AAC9D,MAAA,MAAM,WAAW,KAAM,CAAA,SAAA,CAAU,UAAQ,IAAK,CAAA,EAAA,KAAO,KAAK,EAAE,CAAA;AAC5D,MAAA,SAAA,CAAU,UAAU,QAAQ,CAAA;AAAA;AAC9B,GACC,EAAA,CAAC,KAAO,EAAA,SAAS,CAAC,CAAA;AACrB,EAAM,MAAA,YAAA,GAAeF,eAAO,IAAI,CAAA;AAChC,EAAA,iBAAA,CAAkB,YAAY,CAAA;AAG9B,EAAA,MAAM,UAAa,GAAA4B,eAAA;AACnB,EAAoB,uBAAAxB,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,GAAK,EAAA,YAAA;AAAA,IACL,SAAWW,EAAAA,4BAAAA,CAAW,qBAAO,CAAA,sBAAA,EAAwB,SAAS;AAAA,GAChD,kBAAAX,wBAAM,CAAA,aAAA,CAAc,UAAY,EAAA;AAAA,IAC9C,OAAA;AAAA,IACA,kBAAoB,EAAAyB,kBAAA;AAAA,IACpB,SAAW,EAAA;AAAA,GACG,kBAAAzB,wBAAM,CAAA,aAAA,CAAc0B,wBAAiB,EAAA;AAAA,IACnD,KAAO,EAAA,OAAA;AAAA,IACP,QAAU,EAAAC;AAAA,KACT,KAAM,CAAA,GAAA,CAAI,0BAAqB3B,wBAAAA,CAAM,cAAc,iBAAmB,EAAA;AAAA,IACvE,KAAK,IAAK,CAAA,EAAA;AAAA,IACV,IAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACD,CAAC,CAAC,CAAC,CAAG,EAAA,KAAA,CAAM,MAAW,KAAA,CAAA,IAAK,YAA6B,oBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACnF,WAAW,qBAAO,CAAA;AAAA,GACpB,EAAG,YAAY,CAAC,CAAA;AAClB;AACA,IAAM,oBAAoB,CAAgB,YAAA,KAAA;AAMxC,EAAAH,kBAAU,MAAM;AACd,IAAA,MAAM,KAAK,YAAa,CAAA,OAAA;AACxB,IAAA,IAAI,MAAM,IAAM,EAAA;AACd,MAAA;AAAA;AAEF,IAAM,MAAA,UAAA,uBAAiB,GAAI,CAAA,CAAC,WAAW,WAAa,EAAA,WAAA,EAAa,YAAY,CAAC,CAAA;AAC9E,IAAA,SAAS,cAAc,KAAO,EAAA;AAC5B,MAAA,IAAI,CAAC,UAAA,CAAW,GAAI,CAAA,KAAA,CAAM,GAAG,CAAG,EAAA;AAC9B,QAAA;AAAA;AAIF,MAAA,IAAI,EAAG,CAAA,aAAA,CAAc,wBAA0B,CAAA,IAAK,IAAM,EAAA;AACxD,QAAA;AAAA;AAEF,MAAA,KAAA,CAAM,eAAgB,EAAA;AACtB,MAAS,QAAA,CAAA,aAAA,CAAc,IAAI,aAAA,CAAc,SAAW,EAAA;AAAA,QAClD,KAAK,KAAM,CAAA,GAAA;AAAA,QACX,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,OAAS,EAAA;AAAA,OACV,CAAC,CAAA;AAAA;AAEJ,IAAG,EAAA,CAAA,gBAAA,CAAiB,SAAW,EAAA,aAAA,EAAe,IAAI,CAAA;AAClD,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAoB,CAAA,SAAA,EAAW,eAAe,IAAI,CAAA;AAAA,GACpE,EAAG,CAAC,YAAY,CAAC,CAAA;AACnB,CAAA;;;ACzJA,IAAA,iBAAA,GAAA,EAAA;;;ACqBO,SAAS,SAAU,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAc,GAAA,QAAA;AAAA,EACd,YAAc,EAAA,SAAA;AAAA,EACd,SAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAoB,uBAAAG,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,SAAWW,EAAAA,4BAAAA,CAAW,iBAAO,CAAA,SAAA,EAAW,SAAS;AAAA,GACnC,kBAAAX,wBAAM,CAAA,aAAA,CAAc4B,YAAQ,EAAA;AAAA,IAC1C,WAAW,iBAAO,CAAA;AAAA,GACnB,CAAA,kBAAgB5B,wBAAAA,CAAM,cAAcC,WAAO,EAAA;AAAA,IAC1C,IAAM,EAAA,MAAA;AAAA,IACN,WAAA;AAAA,IACA,cAAc,SAAa,IAAA,WAAA;AAAA,IAC3B,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAW,iBAAO,CAAA,WAAA;AAAA,IAClB;AAAA,GACD,CAAC,CAAA;AACJ;;;AC1CA,IAAA,0BAAA,GAAA,EAAA;;;AC4BO,SAAS,kBAAmB,CAAA;AAAA,EACjC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,CAAIN,GAAAA,gBAAAA,CAAS,EAAE,CAAA;AACvD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,iBAAS,EAAE,CAAA;AACjD,EAAM,MAAA,UAAA,GAAaQ,gBAAQ,MAAM;AAC/B,IAAO,OAAA,aAAA,CAAc,IAAI,CAAO,GAAA,KAAA;AAC9B,MAAA,MAAM,SAAY,GAAA,iBAAA,GAAoB,iBAAkB,CAAA,GAAA,CAAI,EAAE,CAAI,GAAA,KAAA;AAClE,MAAO,OAAA;AAAA,QACL,IAAI,GAAI,CAAA,EAAA;AAAA,QACR,OAAO,GAAI,CAAA,IAAA;AAAA,QACX;AAAA,OACF;AAAA,KACD,CAAA;AAAA,GACA,EAAA,CAAC,aAAe,EAAA,iBAAiB,CAAC,CAAA;AAGrC,EAAAN,kBAAU,MAAM;AACd,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,MAAM,WAAc,GAAA,UAAA,CAAW,MAAO,CAAA,CAAA,GAAA,KAAO,IAAI,SAAS,CAAA;AAG1D,MAAI,IAAA,CAAC,CAAC,kBAAA,EAAoB,MAAQ,EAAA;AAChC,QAAY,WAAA,CAAA,IAAA,CAAK,CAAC,CAAA,EAAG,CAAM,KAAA;AACzB,UAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,OAAQ,CAAA,CAAA,CAAE,EAAE,CAAA;AAC9C,UAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,OAAQ,CAAA,CAAA,CAAE,EAAE,CAAA;AAE9C,UAAM,MAAA,MAAA,GAAS,MAAW,KAAA,EAAA,GAAK,QAAW,GAAA,MAAA;AAC1C,UAAM,MAAA,MAAA,GAAS,MAAW,KAAA,EAAA,GAAK,QAAW,GAAA,MAAA;AAC1C,UAAA,OAAO,MAAS,GAAA,MAAA;AAAA,SACjB,CAAA;AAAA;AAEH,MAAA,iBAAA,CAAkB,WAAW,CAAA;AAC7B,MAAA,cAAA,CAAe,EAAE,CAAA;AAAA;AACnB,GACC,EAAA,CAAC,MAAQ,EAAA,UAAA,EAAY,kBAAkB,CAAC,CAAA;AAC3C,EAAM,MAAA,WAAA,GAAcC,oBAAY,MAAM;AACpC,IAAQ,OAAA,CAAA,eAAA,CAAgB,UAAY,EAAA,cAAc,CAAC,CAAA;AACnD,IAAQ,OAAA,EAAA;AAAA,KACP,CAAC,UAAA,EAAY,cAAgB,EAAA,OAAA,EAAS,OAAO,CAAC,CAAA;AAGjD,EAAA,MAAM,UAAU,aAAgB,GAAA,aAAA,CAAc,gBAAgB,UAAY,EAAA,cAAc,CAAC,CAAI,GAAA,IAAA;AAC7F,EAAA,MAAM,eAAkB,GAAA,cAAA,CAAe,MAAW,KAAA,CAAA,IAAK,CAAC,OAAA;AACxD,EAAA,MAAM,oBAAuBA,GAAAA,mBAAAA,CAAY,CAAC,SAAA,EAAW,OAAY,KAAA;AAC/D,IAAA,iBAAA,CAAkB,CAAS,KAAA,KAAA+B,kBAAA,CAAU,KAAO,EAAA,SAAA,EAAW,OAAO,CAAC,CAAA;AAAA,GACjE,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,kBAAA,GAAqB/B,oBAAY,CAAY,QAAA,KAAA;AACjD,IAAA,iBAAA,CAAkB,UAAQ,IAAK,CAAA,MAAA,CAAO,SAAO,GAAI,CAAA,EAAA,KAAO,QAAQ,CAAC,CAAA;AAAA,GACnE,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,kBAAA,GAAqBA,oBAAY,CAAU,MAAA,KAAA;AAC/C,IAAA,iBAAA,CAAkB,CAAQ,IAAA,KAAA;AACxB,MAAA,MAAM,qBAAqB,IAAK,CAAA,IAAA,CAAK,SAAO,GAAI,CAAA,EAAA,KAAO,OAAO,EAAE,CAAA;AAChE,MAAA,IAAI,kBAAoB,EAAA;AACtB,QAAA,OAAO,KAAK,MAAO,CAAA,CAAA,GAAA,KAAO,GAAI,CAAA,EAAA,KAAO,OAAO,EAAE,CAAA;AAAA,OACzC,MAAA;AACL,QAAO,OAAA,CAAC,GAAG,IAAA,EAAM,MAAM,CAAA;AAAA;AACzB,KACD,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,kBAAA,GAAqBA,oBAAY,CAAS,KAAA,KAAA;AAC9C,IAAe,cAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,GACnC,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,eAAA,GAAkBA,oBAAY,CAAW,OAAA,KAAA;AAC7C,IAAA,iBAAA,CAAkB,CAAQ,IAAA,KAAA;AACxB,MAAM,MAAA,WAAA,GAAc,OAAQ,CAAA,KAAA,CAAM,CAAO,GAAA,KAAA,IAAA,CAAK,IAAK,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,EAAA,KAAO,GAAI,CAAA,EAAE,CAAC,CAAA;AACxE,MAAA,IAAI,WAAa,EAAA;AAEf,QAAO,OAAA,IAAA,CAAK,MAAO,CAAA,CAAA,CAAA,KAAK,CAAC,OAAA,CAAQ,IAAK,CAAA,CAAA,GAAA,KAAO,GAAI,CAAA,EAAA,KAAO,CAAE,CAAA,EAAE,CAAC,CAAA;AAAA,OACxD,MAAA;AAEL,QAAA,MAAM,UAAa,GAAA,OAAA,CAAQ,MAAO,CAAA,CAAA,GAAA,KAAO,CAAC,IAAA,CAAK,IAAK,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,EAAA,KAAO,GAAI,CAAA,EAAE,CAAC,CAAA;AACzE,QAAA,OAAO,CAAC,GAAG,IAAM,EAAA,GAAG,UAAU,CAAA;AAAA;AAChC,KACD,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,wBAAA,GAA2BK,gBAAQ,MAAM;AAC7C,IAAA,MAAM,KAAQ,GAAA,WAAA,CAAY,WAAY,EAAA,CAAE,IAAK,EAAA;AAC7C,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAO,OAAA,UAAA;AAAA;AAET,IAAA,OAAO,WAAW,MAAO,CAAA,CAAA,GAAA,KAAA,CAAQ,GAAI,CAAA,KAAA,EAAO,aAAc,CAAA,QAAA,CAAS,KAAK,CAAA,IAAK,UAAU,GAAI,CAAA,EAAA,CAAG,aAAc,CAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,GAC1H,EAAA,CAAC,UAAY,EAAA,WAAW,CAAC,CAAA;AAC5B,EAAA,MAAM,MAASA,GAAAA,eAAAA,CAAQ,sBAAmBH,wBAAM,CAAA,aAAA,CAAcA,wBAAM,CAAA,QAAA,EAAU,IAAmB,kBAAAA,wBAAM,CAAA,aAAA,CAAc,YAAc,EAAA;AAAA,IACjI,OAAS,EAAA;AAAA,KACR,QAAQ,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,YAAc,EAAA;AAAA,IAC3D,OAAS,EAAA,SAAA;AAAA,IACT,OAAS,EAAA,WAAA;AAAA,IACT,QAAU,EAAA;AAAA,GACZ,EAAG,OAAO,CAAC,CAAA,EAAG,CAAC,OAAS,EAAA,WAAA,EAAa,eAAe,CAAC,CAAA;AACrD,EAAoB,uBAAAA,wBAAM,CAAA,aAAA,CAAc,MAAQ,EAAA;AAAA,IAC9C,MAAA;AAAA,IACA,YAAc,EAAA,OAAA;AAAA,IACd,KAAO,EAAA,WAAA;AAAA,IACP,MAAA;AAAA,IACA,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,kBAAoB,EAAA;AAAA,IACtD,OAAS,EAAA,cAAA;AAAA,IACT,SAAW,EAAA,oBAAA;AAAA,IACX,QAAU,EAAA;AAAA,GACX,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,oBAAsB,EAAA;AAAA,IACzD,cAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAgB,EAAA,kBAAA;AAAA,IAChB,cAAgB,EAAA,kBAAA;AAAA,IAChB,WAAa,EAAA,eAAA;AAAA,IACb,eAAiB,EAAA;AAAA,GAClB,CAAC,CAAC,CAAA;AACL;AACA,IAAM,WAA2B,mBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,EAC1D,WAAW,0BAAO,CAAA;AACpB,CAAA,kBAAgBA,wBAAM,CAAA,aAAA,CAAc8B,SAAK,EAAA,IAAI,GAAG,yBAAyB,CAAA;AACzE,IAAM,eAAA,GAAkB,CAAC,UAAA,EAAY,cAAmB,KAAA;AACtD,EAAA,MAAM,aAAgB,GAAA,UAAA,CAAW,MAAO,CAAA,CAAA,GAAA,KAAO,CAAC,cAAA,CAAe,IAAK,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,EAAA,KAAO,GAAI,CAAA,EAAE,CAAC,CAAA;AACzF,EAAA,OAAO,CAAC,GAAG,cAAe,CAAA,GAAA,CAAI,CAAQ,GAAA,MAAA;AAAA,IACpC,UAAU,GAAI,CAAA,EAAA;AAAA,IACd,SAAW,EAAA;AAAA,GACX,CAAA,CAAA,EAAG,GAAG,aAAA,CAAc,IAAI,CAAQ,GAAA,MAAA;AAAA,IAChC,UAAU,GAAI,CAAA,EAAA;AAAA,IACd,SAAW,EAAA;AAAA,IACX,CAAC,CAAA;AACL,CAAA;AACA,SAAS,kBAAmB,CAAA;AAAA,EAC1B,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAoB,uBAAA9B,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,0BAAO,CAAA;AAAA,GACpB,kBAAgBA,wBAAAA,CAAM,aAAc,CAAA,MAAA,EAAQ,IAAM,EAAA,iBAAiB,CAAgB,kBAAAA,wBAAM,CAAA,aAAA,CAAc,MAAQ,EAAA;AAAA,IAC7G,WAAW,0BAAO,CAAA;AAAA,GACpB,EAAG,QAAQ,MAAM,CAAC,mBAAgBA,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IAC3D,WAAW,0BAAO,CAAA;AAAA,KACjB,iBAAiB,CAAC,mBAAgBA,wBAAAA,CAAM,cAAc,aAAe,EAAA;AAAA,IACtE,KAAO,EAAA,OAAA;AAAA,IACP,SAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAmB,EAAA,OAAA;AAAA,IACnB,YAAc,EAAA,oBAAA;AAAA,IACd,WAAW,0BAAO,CAAA;AAAA,GACnB,CAAC,CAAA;AACJ;AACA,SAAS,oBAAqB,CAAA;AAAA,EAC5B,cAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAA,MAAM,gBAAgB,cAAe,CAAA,MAAA;AACrC,EAAA,MAAM,aAAa,eAAgB,CAAA,MAAA;AACnC,EAAM,MAAA,mBAAA,GAAsB,eAAgB,CAAA,KAAA,CAAM,CAAO,GAAA,KAAA,cAAA,CAAe,IAAK,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,EAAA,KAAO,GAAI,CAAA,EAAE,CAAC,CAAA;AAClG,EAAM,MAAA,oBAAA,GAAuB,eAAgB,CAAA,IAAA,CAAK,CAAO,GAAA,KAAA,cAAA,CAAe,IAAK,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,EAAA,KAAO,GAAI,CAAA,EAAE,CAAC,CAAA;AAClG,EAAM,MAAA,oBAAA,GAAuBF,oBAAY,MAAM;AAC7C,IAAA,WAAA,CAAY,eAAe,CAAA;AAAA,GAC1B,EAAA,CAAC,eAAiB,EAAA,WAAW,CAAC,CAAA;AACjC,EAAoB,uBAAAE,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,SAAWW,EAAAA,4BAAAA,CAAW,0BAAO,CAAA,aAAA,EAAe,2BAAO,YAAY;AAAA,KAC9D,uBAAuB,CAAA,kBAAgBX,wBAAAA,CAAM,cAAc,SAAW,EAAA;AAAA,IACvE,KAAO,EAAA,WAAA;AAAA,IACP,QAAU,EAAA,cAAA;AAAA,IACV,WAAa,EAAA,WAAA;AAAA,IACb,YAAc,EAAA,0BAAA;AAAA,IACd,WAAW,0BAAO,CAAA;AAAA,GACnB,CAAgB,kBAAAA,wBAAM,CAAA,aAAA,CAAc+B,wBAAY,IAAM,EAAA;AAAA,IACrD,WAAa,EAAA,IAAA;AAAA,IACb,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAA/B,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,QAAU,EAAA;AAAA,IAC5C,OAAS,EAAA,mBAAA;AAAA,IACT,aAAA,EAAe,wBAAwB,CAAC,mBAAA;AAAA,IACxC,eAAiB,EAAA,oBAAA;AAAA,IACjB,WAAW,0BAAO,CAAA;AAAA,GACnB,CAAgB,kBAAAA,wBAAM,CAAA,aAAA,CAAc+B,wBAAY,OAAS,EAAA;AAAA,IACxD,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAA/B,wBAAM,CAAA,aAAA,CAAc,MAAQ,EAAA;AAAA,IAC1C,WAAW,0BAAO,CAAA;AAAA,KACjB,aAAa,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,MAAQ,EAAA;AAAA,IAC1D,WAAW,0BAAO,CAAA;AAAA,GACpB,EAAG,eAAe,GAAK,EAAA,UAAU,mBAAgBA,wBAAAA,CAAM,cAAcgC,eAAW,EAAA;AAAA,IAC9E,WAAW,0BAAO,CAAA;AAAA,GACnB,CAAC,CAAC,CAAA,kBAAgBhC,wBAAM,CAAA,aAAA,CAAc+B,wBAAY,KAAO,EAAA;AAAA,IACxD,WAAW,0BAAO,CAAA;AAAA,KACjB,eAAgB,CAAA,MAAA,KAAW,oBAAiB/B,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IACxE,WAAW,0BAAO,CAAA;AAAA,GACpB,EAAG,2BAA2B,CAAI,GAAA,eAAA,CAAgB,IAAI,CAAuB,MAAA,qBAAAA,wBAAM,CAAA,aAAA,CAAc,YAAc,EAAA;AAAA,IAC7G,KAAK,MAAO,CAAA,EAAA;AAAA,IACZ,MAAA;AAAA,IACA,YAAY,cAAe,CAAA,IAAA,CAAK,OAAK,CAAE,CAAA,EAAA,KAAO,OAAO,EAAE,CAAA;AAAA,IACvD,QAAU,EAAA;AAAA,GACX,CAAC,CAAC,CAAC,CAAC,CAAA;AACP;AACA,SAAS,YAAa,CAAA;AAAA,EACpB,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAe,GAAA;AACjB,CAAG,EAAA;AACD,EAAM,MAAA,WAAA,GAAcF,oBAAY,MAAM;AACpC,IAAA,QAAA,CAAS,MAAM,CAAA;AAAA,GACd,EAAA,CAAC,QAAU,EAAA,MAAM,CAAC,CAAA;AACrB,EAAoB,uBAAAE,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,WAAW,0BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,QAAU,EAAA;AAAA,IAC5C,OAAS,EAAA,UAAA;AAAA,IACT,eAAiB,EAAA,WAAA;AAAA,IACjB,WAAW,0BAAO,CAAA;AAAA,GACnB,CAAA,kBAAgBA,wBAAAA,CAAM,cAAcU,aAAQ,EAAA;AAAA,IAC3C,OAAS,EAAA,WAAA;AAAA,IACT,WAAW,0BAAO,CAAA;AAAA,GACpB,EAAG,OAAO,KAAK,CAAA,EAAG,gCAA6BV,wBAAAA,CAAM,cAAciC,mBAAe,EAAA;AAAA,IAChF,WAAW,0BAAO,CAAA;AAAA,GACnB,CAAC,CAAA;AACJ;;;ACjQA,IAAA,6BAAA,GAAA,EAAA;ACkBO,SAAS,iBAAkB,CAAA;AAAA,EAChC,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAA,MAAM,gBAAgBnC,mBAAY,CAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,OAAA,EAAS,EAAE,CAAA;AAC1D,EAAoB,uBAAAE,wBAAM,CAAA,aAAA,CAAc,aAAe,EAAA;AAAA,IACrD,KAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAmB,EAAA,OAAA;AAAA,IACnB,aAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;ACNO,SAAS,qBAAsB,CAAA;AAAA,EACpC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAA,MAAM,CAAC,mBAAqB,EAAA,sBAAsB,CAAIL,GAAAA,gBAAAA,CAAS,EAAE,CAAA;AACjE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,iBAAS,EAAE,CAAA;AAGzD,EAAAE,kBAAU,MAAM;AACd,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,MAAM,kBAAkB,EAAC;AACzB,MAAA,KAAA,MAAW,QAAQ,cAAgB,EAAA;AACjC,QAAA,MAAM,SAAS,aAAc,CAAA,IAAA,CAAK,SAAO,GAAI,CAAA,EAAA,KAAO,KAAK,EAAE,CAAA;AAC3D,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,eAAA,CAAgB,IAAK,CAAA;AAAA,YACnB,GAAG,MAAA;AAAA,YACH,SAAA,EAAW,IAAK,CAAA,IAAA,GAAO,MAAS,GAAA;AAAA,WACjC,CAAA;AAAA;AACH;AAEF,MAAA,sBAAA,CAAuB,eAAe,CAAA;AAAA;AACxC,GACC,EAAA,CAAC,MAAQ,EAAA,cAAA,EAAgB,aAAa,CAAC,CAAA;AAC1C,EAAM,MAAA,eAAA,GAAkBC,oBAAY,CAAU,MAAA,KAAA;AAC5C,IAAuB,sBAAA,CAAA,CAAA,IAAA,KAAQ,CAAC,GAAG,IAAM,EAAA;AAAA,MACvC,GAAG,MAAA;AAAA,MACH,SAAW,EAAA;AAAA,KACZ,CAAC,CAAA;AAAA,GACJ,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,sBAAA,GAAyBA,oBAAY,CAAM,EAAA,KAAA;AAC/C,IAAA,sBAAA,CAAuB,UAAQ,IAAK,CAAA,MAAA,CAAO,UAAQ,IAAK,CAAA,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,GACpE,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,wBAA2BA,GAAAA,mBAAAA,CAAY,CAAC,SAAA,EAAW,OAAY,KAAA;AACnE,IAAA,sBAAA,CAAuB,CAAS+B,KAAAA,KAAAA,kBAAAA,CAAU,KAAO,EAAA,SAAA,EAAW,OAAO,CAAC,CAAA;AAAA,GACtE,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,yBAAA,GAA4B/B,oBAAY,CAAM,EAAA,KAAA;AAClD,IAAA,sBAAA,CAAuB,UAAQ,IAAK,CAAA,GAAA,CAAI,CAAQ,IAAA,KAAA,IAAA,CAAK,OAAO,EAAK,GAAA;AAAA,MAC/D,GAAG,IAAA;AAAA,MACH,SAAW,EAAA,IAAA,CAAK,SAAc,KAAA,KAAA,GAAQ,MAAS,GAAA;AAAA,KACjD,GAAI,IAAI,CAAC,CAAA;AAAA,GACX,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,WAAA,GAAcA,oBAAY,MAAM;AACpC,IAAM,MAAA,YAAA,GAAe,mBAAoB,CAAA,GAAA,CAAI,CAAQ,GAAA,MAAA;AAAA,MACnD,IAAI,GAAI,CAAA,EAAA;AAAA,MACR,IAAA,EAAM,IAAI,SAAc,KAAA;AAAA,KACxB,CAAA,CAAA;AACF,IAAA,OAAA,CAAQ,YAAY,CAAA;AACpB,IAAQ,OAAA,EAAA;AAAA,GACP,EAAA,CAAC,mBAAqB,EAAA,OAAA,EAAS,OAAO,CAAC,CAAA;AAC1C,EAAM,MAAA,gBAAA,GAAmBK,gBAAQ,MAAM,aAAA,CAAc,OAAO,CAAO,GAAA,KAAA,GAAA,CAAI,WAAW,CAAC,mBAAA,CAAoB,KAAK,CAAY,QAAA,KAAA,QAAA,CAAS,OAAO,GAAI,CAAA,EAAE,CAAC,CAAG,EAAA,CAAC,aAAe,EAAA,mBAAmB,CAAC,CAAA;AACtL,EAAM,MAAA,wBAAA,GAA2BA,gBAAQ,MAAM;AAC7C,IAAA,MAAM,KAAQ,GAAA,eAAA,CAAgB,WAAY,EAAA,CAAE,IAAK,EAAA;AACjD,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAO,OAAA,gBAAA;AAAA;AAET,IAAO,OAAA,gBAAA,CAAiB,OAAO,CAAO,GAAA,KAAA,GAAA,CAAI,KAAK,WAAY,EAAA,CAAE,QAAS,CAAA,KAAK,CAAC,CAAA;AAAA,GAC3E,EAAA,CAAC,gBAAkB,EAAA,eAAe,CAAC,CAAA;AACtC,EAAM,MAAA,sBAAA,GAAyBL,oBAAY,CAAS,KAAA,KAAA;AAClD,IAAmB,kBAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,GACvC,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,oBAAA,GAAuBA,oBAAY,CAAQ,IAAA,KAAA;AAC/C,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,kBAAA,CAAmB,EAAE,CAAA;AAAA;AACvB,GACF,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,aAAA,GAAgBK,gBAAQ,MAAM;AAClC,IAAO,OAAA,mBAAA,CAAoB,IAAI,CAAS,IAAA,MAAA;AAAA,MACtC,IAAI,IAAK,CAAA,EAAA;AAAA,MACT,OAAO,IAAK,CAAA,IAAA;AAAA,MACZ,OAAsB,kBAAAH,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,QAC/C,WAAW,6BAAO,CAAA;AAAA,OACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,MAAQ,EAAA;AAAA,QAC1C,SAAWW,EAAAA,4BAAAA,CAAW,6BAAO,CAAA,cAAA,EAAgB,8BAAO,QAAQ;AAAA,SAC3D,IAAK,CAAA,IAAI,mBAAgBX,wBAAAA,CAAM,cAAcU,aAAQ,EAAA;AAAA,QACtD,WAAW,6BAAO,CAAA,mBAAA;AAAA,QAClB,OAAS,EAAA,MAAM,yBAA0B,CAAA,IAAA,CAAK,EAAE,CAAA;AAAA,QAChD,YAAA,EAAc,CAA6B,0BAAA,EAAA,IAAA,CAAK,IAAI,CAAA;AAAA,SACnD,IAAK,CAAA,SAAA,KAAc,wBAAqBV,wBAAAA,CAAM,cAAckC,sBAAkB,EAAA;AAAA,QAC/E,WAAW,6BAAO,CAAA;AAAA,OACnB,CAAA,mBAAiBlC,wBAAAA,CAAM,cAAcmC,0BAAsB,EAAA;AAAA,QAC1D,WAAW,6BAAO,CAAA;AAAA,OACnB,CAAC,CAAC;AAAA,KACH,CAAA,CAAA;AAAA,GACD,EAAA,CAAC,mBAAqB,EAAA,yBAAyB,CAAC,CAAA;AACnD,EAAA,MAAM,MAAShC,GAAAA,eAAAA,CAAQ,sBAAmBH,wBAAM,CAAA,aAAA,CAAcA,wBAAM,CAAA,QAAA,EAAU,IAAmB,kBAAAA,wBAAM,CAAA,aAAA,CAAc,YAAc,EAAA;AAAA,IACjI,OAAS,EAAA;AAAA,KACR,QAAQ,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,YAAc,EAAA;AAAA,IAC3D,OAAS,EAAA,SAAA;AAAA,IACT,OAAS,EAAA;AAAA,KACR,OAAO,CAAC,GAAG,CAAC,WAAA,EAAa,OAAO,CAAC,CAAA;AACpC,EAAoB,uBAAAA,wBAAM,CAAA,aAAA,CAAc,MAAQ,EAAA;AAAA,IAC9C,MAAA;AAAA,IACA,YAAc,EAAA,OAAA;AAAA,IACd,KAAOoC,EAAAA,YAAAA;AAAA,IACP;AAAA,GACc,kBAAApC,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,6BAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,iBAAmB,EAAA;AAAA,IACrD,KAAO,EAAA,aAAA;AAAA,IACP,SAAW,EAAA,wBAAA;AAAA,IACX,QAAU,EAAA,sBAAA;AAAA,IACV,WAAW,6BAAO,CAAA;AAAA,GACnB,CAAgB,kBAAAA,wBAAM,CAAA,aAAA,CAAcqC,UAAK,IAAM,EAAA;AAAA,IAC9C,YAAc,EAAA;AAAA,GACA,kBAAArC,wBAAM,CAAA,aAAA,CAAcqC,UAAK,OAAS,EAAA;AAAA,IAChD,WAAW,6BAAO,CAAA,eAAA;AAAA,IAClB,QAAA,EAAU,iBAAiB,MAAW,KAAA,CAAA;AAAA,IACtC,YAAc,EAAA;AAAA,GACA,kBAAArC,wBAAM,CAAA,aAAA,CAAcsC,SAAK,EAAA;AAAA,IACvC,WAAW,6BAAO,CAAA;AAAA,GACnB,CAAA,kBAAgBtC,wBAAAA,CAAM,cAAc,MAAQ,EAAA;AAAA,IAC3C,WAAW,6BAAO,CAAA;AAAA,KACjB,oBAAoB,CAAA,kBAAgBA,wBAAAA,CAAM,cAAcgC,eAAW,EAAA;AAAA,IACpE,KAAO,EAAA;AAAA,GACR,CAAC,CAAgB,kBAAAhC,wBAAM,CAAA,aAAA,CAAcqC,SAAK,CAAA,MAAA,EAAQ,IAAmB,kBAAArC,wBAAM,CAAA,aAAA,CAAcqC,UAAK,UAAY,EAAA;AAAA,IACzG,WAAW,6BAAO,CAAA,cAAA;AAAA,IAClB,UAAY,EAAA;AAAA,GACE,kBAAArC,wBAAM,CAAA,aAAA,CAAcqC,UAAK,KAAO,EAAA;AAAA,IAC9C,WAAW,6BAAO,CAAA;AAAA,GACJ,kBAAArC,wBAAM,CAAA,aAAA,CAAc,SAAW,EAAA;AAAA,IAC7C,KAAO,EAAA,eAAA;AAAA,IACP,QAAU,EAAA,sBAAA;AAAA,IACV,WAAa,EAAA,gBAAA;AAAA,IACb,YAAc,EAAA,wBAAA;AAAA,IACd,WAAW,6BAAO,CAAA,mBAAA;AAAA,IAClB,SAAA,EAAW,CAAK,CAAA,KAAA,CAAA,CAAE,eAAgB;AAAA,GACnC,GAAG,wBAAyB,CAAA,GAAA,CAAI,4BAAuBA,wBAAAA,CAAM,cAAc,uBAAyB,EAAA;AAAA,IACnG,KAAK,MAAO,CAAA,EAAA;AAAA,IACZ,MAAA;AAAA,IACA,WAAa,EAAA;AAAA,GACd,CAAC,CAAG,EAAA,wBAAA,CAAyB,WAAW,CAAkB,oBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACpF,WAAW,6BAAO,CAAA;AAAA,KACjB,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC;AACA,IAAMoC,YAA2B,mBAAApC,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,EAC1D,WAAW,6BAAO,CAAA;AACpB,CAAA,kBAAgBA,wBAAM,CAAA,aAAA,CAAc8B,SAAK,EAAA,IAAI,GAAG,0BAA0B,CAAA;AAC1E,SAAS,uBAAwB,CAAA;AAAA,EAC/B,MAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,OAAA,GAAUhC,oBAAY,MAAM,WAAA,CAAY,MAAM,CAAG,EAAA,CAAC,WAAa,EAAA,MAAM,CAAC,CAAA;AAC5E,EAAA,uBAAoBE,wBAAAA,CAAM,aAAc,CAAAqC,SAAA,CAAK,IAAM,EAAA;AAAA,IACjD,SAAW1B,EAAAA,4BAAAA,CAAW,6BAAO,CAAA,YAAA,EAAc,8BAAO,QAAQ,CAAA;AAAA,IAC1D;AAAA,GACF,EAAG,OAAO,IAAI,CAAA;AAChB;;;AChLA,IAAA,mBAAA,GAAA,EAAA;;;ACAA,IAAA,0BAAA,GAAA,EAAA;;;ACmBO,SAAS,kBAAmB,CAAA;AAAA,EACjC;AACF,CAAG,EAAA;AACD,EAAoB,uBAAAX,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,WAAW,0BAAO,CAAA;AAAA,GACpB,EAAGuC,sBAAW,MAAO,CAAA,MAAA,CAAO,UAAU,MAAQ,EAAA,MAAA,CAAO,UAAW,EAAC,CAAC,CAAA;AACpE;;;ACzBA,IAAA,8BAAA,GAAA,EAAA;;;ACsBA,SAAS,cAAe,CAAA;AAAA,EACtB,OAAA;AAAA,EACA,IAAM,EAAA,IAAA;AAAA,EACN,KAAA;AAAA,EACA,MAAS,GAAA;AACX,CAAG,EAAA;AACD,EAAA,uBAAoBvC,wBAAAA,CAAM,aAAcqC,CAAAA,SAAAA,CAAK,IAAM,EAAA;AAAA,IACjD,YAAc,EAAA,IAAA;AAAA,IACd,SAAA,EAAW1B,4BAAW,CAAA,8BAAA,CAAO,mBAAqB,EAAA,8BAAA,CAAO,gBAAgB,8BAAO,CAAA,kBAAA,EAAoB,MAAU,IAAA,8BAAA,CAAO,wBAAwB,CAAA;AAAA,IAC7I;AAAA,GACc,kBAAAX,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,IACxC,WAAW,8BAAO,CAAA,cAAA;AAAA,IAClB,KAAO,EAAA;AAAA,GACR,mBAAgBA,wBAAAA,CAAM,cAAc,MAAQ,EAAA,IAAA,EAAM,KAAK,CAAC,CAAA;AAC3D;AACO,SAAS,sBAAuB,CAAA;AAAA,EACrC,MAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA;AAAA,IACJ,gBAAmB,GAAA,KAAA;AAAA,IACnB,gBAAmB,GAAA,KAAA;AAAA,IACnB,cAAiB,GAAA,KAAA;AAAA,IACjB,cAAiB,GAAA;AAAA,GACnB,GAAI,gBAAgB,EAAC;AACrB,EAAM,MAAA;AAAA,IACJ,gBAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AACJ,EAAM,MAAA,cAAA,GAAiB,KAAM,CAAA,QAAA,EAAW,CAAA,OAAA;AACxC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIL,iBAAS,KAAK,CAAA;AAC1C,EAAM,MAAA,aAAA,GAAgBG,oBAAY,MAAM;AACtC,IAAA,gBAAA,CAAiB,CAAQ,IAAA,KAAA;AACvB,MAAO,OAAA;AAAA,QACL,IAAA,EAAM,CAAC,GAAI,IAAA,CAAK,QAAQ,EAAC,EAAI,MAAO,CAAA,MAAA,CAAO,EAAE,CAAA;AAAA,QAC7C,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,MAAO,CAAA,CAAA,EAAA,KAAM,OAAO,MAAO,CAAA,MAAA,CAAO,EAAE,CAAA,IAAK;AAAC,OAC/D;AAAA,KACD,CAAA;AAAA,KACA,CAAC,MAAA,CAAO,MAAO,CAAA,EAAA,EAAI,gBAAgB,CAAC,CAAA;AACvC,EAAM,MAAA,WAAA,GAAcA,oBAAY,MAAM;AACpC,IAAA,gBAAA,CAAiB,CAAQ,IAAA,KAAA;AACvB,MAAO,OAAA;AAAA,QACL,IAAA,EAAM,IAAK,CAAA,IAAA,EAAM,MAAO,CAAA,CAAA,EAAA,KAAM,OAAO,MAAO,CAAA,MAAA,CAAO,EAAE,CAAA,IAAK,EAAC;AAAA,QAC3D,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,MAAO,CAAA,CAAA,EAAA,KAAM,OAAO,MAAO,CAAA,MAAA,CAAO,EAAE,CAAA,IAAK;AAAC,OAC/D;AAAA,KACD,CAAA;AAAA,KACA,CAAC,MAAA,CAAO,MAAO,CAAA,EAAA,EAAI,gBAAgB,CAAC,CAAA;AACvC,EAAM,MAAA,mBAAA,GAAsBA,oBAAY,MAAM;AAC5C,IAAO,MAAA,CAAA,MAAA,CAAO,cAAc,KAAK,CAAA;AACjC,IAAA,UAAA,GAAa,CAAC;AAAA,MACZ,EAAA,EAAI,OAAO,MAAO,CAAA,EAAA;AAAA,MAClB,IAAM,EAAA;AAAA,KACP,CAAC,CAAA;AAAA,GACD,EAAA,CAAC,MAAO,CAAA,MAAA,EAAQ,UAAU,CAAC,CAAA;AAC9B,EAAM,MAAA,oBAAA,GAAuBA,oBAAY,MAAM;AAC7C,IAAO,MAAA,CAAA,MAAA,CAAO,cAAc,IAAI,CAAA;AAChC,IAAA,UAAA,GAAa,CAAC;AAAA,MACZ,EAAA,EAAI,OAAO,MAAO,CAAA,EAAA;AAAA,MAClB,IAAM,EAAA;AAAA,KACP,CAAC,CAAA;AAAA,GACD,EAAA,CAAC,MAAO,CAAA,MAAA,EAAQ,UAAU,CAAC,CAAA;AAC9B,EAAM,MAAA,mBAAA,GAAsBA,oBAAY,MAAM;AAC5C,IAAA,MAAA,CAAO,OAAO,YAAa,EAAA;AAC3B,IAAA,UAAA,GAAa,EAAE,CAAA;AAAA,GACd,EAAA,CAAC,MAAO,CAAA,MAAA,EAAQ,UAAU,CAAC,CAAA;AAC9B,EAAM,MAAA,eAAA,GAAkBA,oBAAY,MAAM;AACxC,IAAA,MAAA,CAAO,OAAO,SAAU,EAAA;AACxB,IAAA,IAAI,WAAa,EAAA;AACf,MAAY,WAAA,EAAA;AAAA;AACd,GACC,EAAA,CAAC,MAAO,CAAA,MAAA,EAAQ,WAAW,CAAC,CAAA;AAC/B,EAAM,MAAA,iBAAA,GAAoBA,oBAAY,CAAK,CAAA,KAAA;AACzC,IAAA,CAAA,CAAE,cAAe,EAAA;AACjB,IAAU,SAAA,CAAA,CAAA,IAAA,KAAQ,CAAC,IAAI,CAAA;AAAA,GACzB,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,sBAAA,GAAyBA,oBAAY,MAAM;AAC/C,IAAqB,kBAAA,IAAA;AACrB,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,GACjB,EAAG,CAAC,kBAAkB,CAAC,CAAA;AACvB,EAAM,MAAA,mBAAA,GAAsBA,oBAAY,MAAM;AAC5C,IAAkB,eAAA,IAAA;AAClB,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,GACjB,EAAG,CAAC,eAAe,CAAC,CAAA;AACpB,EAAM,MAAA,QAAA,GAAW,MAAO,CAAA,MAAA,CAAO,WAAY,EAAA;AAC3C,EAAM,MAAA,UAAA,GAAa,MAAO,CAAA,MAAA,CAAO,UAAW,EAAA;AAC5C,EAAM,MAAA,SAAA,GAAY,gBAAgB,SAAU,CAAA,CAAA,CAAA,KAAK,EAAE,EAAO,KAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAK,IAAA,EAAA;AAC/E,EAAA,MAAM,eAAkB,GAAA,gBAAA,IAAoB,gBAAoB,IAAA,UAAA,IAAc,cAAkB,IAAA,cAAA;AAChG,EAAoB,uBAAAE,wBAAM,CAAA,aAAA,CAAcA,wBAAM,CAAA,QAAA,EAAU,sBAAmBA,wBAAAA,CAAM,aAAcqC,CAAAA,SAAAA,CAAK,IAAM,EAAA;AAAA,IACxG,IAAM,EAAA,MAAA;AAAA,IACN,YAAc,EAAA;AAAA,GACA,kBAAArC,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAWW,4BAAW,CAAA,8BAAA,CAAO,qBAAqB,8BAAO,CAAA,cAAA,EAAgB,+BAAO,mBAAmB,CAAA;AAAA,IACnG,aAAe,EAAA;AAAA,GACD,kBAAAX,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAWW,4BAAW,CAAA,8BAAA,CAAO,qBAAqB,8BAAO,CAAA,cAAA,EAAgB,+BAAO,qBAAqB;AAAA,GACpG,EAAA,cAAA,oBAA+BX,wBAAAA,CAAM,cAAcwC,SAAK,EAAA;AAAA,IACzD,WAAW,8BAAO,CAAA,cAAA;AAAA,IAClB,KAAO,EAAA;AAAA,GACR,CAAA,kBAAgBxC,wBAAAA,CAAM,cAAc,kBAAoB,EAAA;AAAA,IACvD;AAAA,GACD,CAAC,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IAC3C,WAAWW,4BAAW,CAAA,8BAAA,CAAO,qBAAqB,8BAAO,CAAA,cAAA,EAAgB,+BAAO,sBAAsB;AAAA,GACrG,EAAA,QAAA,oBAAyBX,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IACrD,WAAW,8BAAO,CAAA;AAAA,KACjB,QAAa,KAAA,KAAA,mBAAqBA,wBAAAA,CAAM,cAAckC,sBAAkB,EAAA;AAAA,IACzE,WAAW,8BAAO,CAAA;AAAA,GACnB,CAAA,mBAAiBlC,wBAAAA,CAAM,cAAcmC,0BAAsB,EAAA;AAAA,IAC1D,WAAW,8BAAO,CAAA;AAAA,GACnB,CAAG,EAAA,cAAA,CAAe,MAAS,GAAA,CAAA,IAAK,aAAa,CAAkB,oBAAAnC,wBAAM,CAAA,aAAA,CAAc,MAAQ,EAAA;AAAA,IAC1F,WAAW,8BAAO,CAAA;AAAA,GACpB,EAAG,SAAY,GAAA,CAAC,CAAC,CAAA,EAAG,mCAAgCA,wBAAAA,CAAM,aAAcqC,CAAAA,SAAAA,CAAK,OAAS,EAAA;AAAA,IACpF,YAAc,EAAA,CAAA,oCAAA,EAAuC,MAAO,CAAA,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,IACrE,SAAW1B,EAAAA,4BAAAA,CAAW,8BAAO,CAAA,mBAAA,EAAqB,+BAAO,wBAAwB;AAAA,GACnE,kBAAAX,wBAAM,CAAA,aAAA,CAAcyC,iBAAa,EAAA;AAAA,IAC/C,WAAW,8BAAO,CAAA;AAAA,GACnB,CAAC,CAAC,CAAA,kBAAgBzC,wBAAM,CAAA,aAAA,CAAcqC,UAAK,MAAQ,EAAA;AAAA,IAClD,WAAW,QAAS,CAAA;AAAA,GACN,kBAAArC,wBAAM,CAAA,aAAA,CAAcqC,UAAK,UAAY,EAAA;AAAA,IACnD,UAAY,EAAA;AAAA,GACE,kBAAArC,wBAAM,CAAA,aAAA,CAAcqC,UAAK,KAAO,EAAA;AAAA,IAC9C,WAAW,8BAAO,CAAA;AAAA,KACjB,gBAAoB,IAAA,CAAC,kCAA+BrC,wBAAAA,CAAM,cAAc,cAAgB,EAAA;AAAA,IACzF,OAAS,EAAA,aAAA;AAAA,IACT,IAAM,EAAAwC,SAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAG,EAAA,gBAAA,IAAoB,kCAA+BxC,wBAAAA,CAAM,cAAc,cAAgB,EAAA;AAAA,IACzF,OAAS,EAAA,WAAA;AAAA,IACT,IAAM,EAAA0C,WAAA;AAAA,IACN,KAAO,EAAA,cAAA;AAAA,IACP,MAAQ,EAAA;AAAA,GACT,CAAA,EAAG,gBAAoB,IAAA,UAAA,oBAA2B1C,wBAAAA,CAAM,aAAcA,CAAAA,wBAAAA,CAAM,QAAU,EAAA,IAAA,kBAAmBA,wBAAAA,CAAM,cAAc,cAAgB,EAAA;AAAA,IAC5I,OAAS,EAAA,mBAAA;AAAA,IACT,IAAMkC,EAAAA,sBAAAA;AAAA,IACN,KAAO,EAAA,gBAAA;AAAA,IACP,QAAQ,QAAa,KAAA;AAAA,GACtB,CAAA,kBAAgBlC,wBAAAA,CAAM,cAAc,cAAgB,EAAA;AAAA,IACnD,OAAS,EAAA,oBAAA;AAAA,IACT,IAAMmC,EAAAA,0BAAAA;AAAA,IACN,KAAO,EAAA,iBAAA;AAAA,IACP,QAAQ,QAAa,KAAA;AAAA,GACtB,CAAG,EAAA,aAAA,EAAe,IAAK,CAAA,CAAA,GAAA,KAAO,GAAI,CAAA,OAAO,CAAkB,oBAAAnC,wBAAM,CAAA,aAAA,CAAc,cAAgB,EAAA;AAAA,IAC9F,OAAS,EAAA,mBAAA;AAAA,IACT,IAAM,EAAA2C,UAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAC,CAAA,EAAG,gBAAoB,IAAA,CAAC,CAAC,cAAA,EAAgB,MAAuB,oBAAA3C,wBAAM,CAAA,aAAA,CAAc,cAAgB,EAAA;AAAA,IACpG,OAAS,EAAA,mBAAA;AAAA,IACT,IAAM,EAAA4C,YAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAG,EAAA,cAAA,oBAA+B5C,wBAAAA,CAAM,cAAc,cAAgB,EAAA;AAAA,IACrE,OAAS,EAAA,eAAA;AAAA,IACT,IAAM,EAAA6C,0BAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAG,EAAA,cAAA,oBAA+B7C,wBAAAA,CAAM,cAAc,cAAgB,EAAA;AAAA,IACrE,OAAS,EAAA,sBAAA;AAAA,IACT,IAAM,EAAA8C,cAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACT;;;ACzKO,SAAS,uBAAuB,MAAQ,EAAA;AAC7C,EAAM,MAAA,QAAA,GAAW,OAAO,WAAY,EAAA;AACpC,EAAO,OAAA;AAAA,IACL,YAAc,EAAA;AAAA,MACZ,IAAA,EAAM,aAAa,MAAS,GAAA,CAAA,EAAG,OAAO,QAAS,CAAA,MAAM,CAAC,CAAO,EAAA,CAAA,GAAA,MAAA;AAAA,MAC7D,KAAA,EAAO,aAAa,OAAU,GAAA,CAAA,EAAG,OAAO,QAAS,CAAA,OAAO,CAAC,CAAO,EAAA,CAAA,GAAA,MAAA;AAAA,MAChE,KAAA,EAAO,OAAO,OAAQ;AAAA;AACxB,GACF;AACF;;;ACDA,IAAM,aAAA,GAAgB,CAAC,MAAA,EAAQ,UAAe,KAAA;AAC5C,EAAM,MAAA;AAAA,IACJ,EAAA;AAAA,IACA;AAAA,GACE,GAAA,MAAA;AACJ,EAAA,MAAM,SAAS,UAAW,CAAA,IAAA,CAAK,CAAAC,OAAUA,KAAAA,OAAAA,CAAO,OAAO,EAAE,CAAA;AACzD,EAAA,MAAM,YAAY,SAAU,CAAA,MAAA;AAC5B,EAAA,IAAI,SAAW,EAAA;AACb,IAAI,IAAA,OAAO,cAAc,QAAU,EAAA;AACjC,MAAO,OAAA,SAAA;AAAA;AAGT,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,MAAM,eAAkB,GAAA,SAAA,CAAU,MAAO,CAAA,UAAA,EAAY,CAAA;AACrD,MAAI,IAAA,OAAO,eAAoB,KAAA,QAAA,EAAiB,OAAA,eAAA;AAAA;AAClD;AAGF,EAAM,MAAA;AAAA,IACJ;AAAA,GACE,GAAA,SAAA;AACJ,EAAA,OAAO,MAAM,UAAc,IAAA,EAAA;AAC7B,CAAA;AACO,SAAS,WAAY,CAAA;AAAA,EAC1B,KAAA;AAAA,EACA;AACF,CAAG,EAAA;AAGD,EAAM,MAAA;AAAA,IACJ,cAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AACJ,EAAM,MAAA,cAAA,GAAiB,KAAM,CAAA,QAAA,EAAW,CAAA,OAAA;AACxC,EAAM,MAAA,iBAAA,GAAoB,KAAM,CAAA,QAAA,EAAW,CAAA,gBAAA;AAC3C,EAAM,MAAA,kBAAA,GAAqB,KAAM,CAAA,QAAA,EAAW,CAAA,WAAA;AAC5C,EAAA,MAAM,aAAa,CAAC,CAAC,KAAM,CAAA,QAAA,GAAW,gBAAkB,EAAA,gBAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIpD,iBAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AACpE,EAAM,MAAA,sBAAA,GAAyBG,oBAAY,MAAM;AAC/C,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,GAC1B,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,uBAAA,GAA0BA,oBAAY,MAAM;AAChD,IAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,GAC3B,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,mBAAA,GAAsBA,oBAAY,MAAM;AAC5C,IAAA,sBAAA,CAAuB,IAAI,CAAA;AAAA,GAC7B,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,oBAAA,GAAuBA,oBAAY,MAAM;AAC7C,IAAA,sBAAA,CAAuB,KAAK,CAAA;AAAA,GAC9B,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,oBAAA,GAAuBA,oBAAY,CAAe,WAAA,KAAA;AACtD,IAAA,sBAAA,CAAuB,KAAK,CAAA;AAC5B,IAAA,UAAA,GAAa,WAAW,CAAA;AAAA,GAC1B,EAAG,CAAC,UAAU,CAAC,CAAA;AACf,EAAM,MAAA,uBAAA,GAA0BA,oBAAY,CAAW,OAAA,KAAA;AACrD,IAAA,MAAM,qBAAqB,EAAC;AAC5B,IAAA,KAAA,MAAW,UAAU,OAAS,EAAA;AAC5B,MAAmB,kBAAA,CAAA,MAAA,CAAO,QAAQ,CAAA,GAAI,MAAO,CAAA,SAAA;AAAA;AAE/C,IAAA,cAAA,CAAe,OAAQ,CAAA,GAAA,CAAI,CAAO,GAAA,KAAA,GAAA,CAAI,QAAQ,CAAC,CAAA;AAC/C,IAAA,mBAAA,CAAoB,kBAAkB,CAAA;AAAA,GACrC,EAAA,CAAC,cAAgB,EAAA,mBAAmB,CAAC,CAAA;AACxC,EAAM,MAAA,aAAA,GAAgBK,gBAAQ,MAAM;AAClC,IAAA,MAAM,aAAa,KAAM,CAAA,eAAA,GAAkB,OAAQ,CAAA,CAAA,WAAA,KAAe,YAAY,OAAO,CAAA;AACrF,IAAO,OAAA,KAAA,CAAM,aAAc,EAAA,CAAE,MAAO,CAAA,CAAA,MAAA,KAAU,OAAO,EAAO,KAAA,mBAAmB,CAAE,CAAA,GAAA,CAAI,CAAU,MAAA,KAAA;AAC7F,MAAO,OAAA;AAAA,QACL,IAAI,MAAO,CAAA,EAAA;AAAA,QACX,IAAA,EAAM,aAAc,CAAA,MAAA,EAAQ,UAAU,CAAA;AAAA,QACtC,OAAA,EAAS,OAAO,UAAW;AAAA,OAC7B;AAAA,KACD,CAAA;AAAA,GACH,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAoB,uBAAAH,yBAAM,aAAcA,CAAAA,wBAAAA,CAAM,UAAU,IAAmB,kBAAAA,wBAAM,CAAA,aAAA,CAAc,OAAS,EAAA;AAAA,IACtG,WAAW,mBAAO,CAAA,eAAA;AAAA,IAClB,eAAiB,EAAA;AAAA,GACnB,EAAG,MAAM,eAAgB,EAAA,CAAE,IAAI,CAA4B,WAAA,qBAAAA,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,IACnF,KAAK,WAAY,CAAA,EAAA;AAAA,IACjB,WAAW,mBAAO,CAAA;AAAA,GACjB,EAAA,WAAA,CAAY,OAAQ,CAAA,GAAA,CAAI,CAAU,MAAA,KAAA;AACnC,IAAM,MAAA;AAAA,MACJ;AAAA,KACF,GAAI,sBAAuB,CAAA,MAAA,CAAO,MAAM,CAAA;AACxC,IAAM,MAAA,cAAA,GAAiB,MAAO,CAAA,MAAA,CAAO,WAAY,EAAA;AACjD,IAAM,MAAA,cAAA,GAAiB,OAAO,EAAO,KAAA,mBAAA;AACrC,IAAoB,uBAAAA,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,MAC5C,KAAK,MAAO,CAAA,EAAA;AAAA,MACZ,aAAA,EAAe,MAAO,CAAA,MAAA,CAAO,WAAY,EAAA;AAAA,MACzC,WAAW,mBAAO,CAAA,mBAAA;AAAA,MAClB,KAAO,EAAA;AAAA,KACT,EAAG,OAAO,aAAgB,GAAA,IAAA,GAAO,iCAA8BA,wBAAAA,CAAM,cAAc,kBAAoB,EAAA;AAAA,MACrG;AAAA,KACD,CAAA,mBAAiBA,wBAAAA,CAAM,cAAc,sBAAwB,EAAA;AAAA,MAC5D,KAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAc,EAAA,sBAAA;AAAA,MACd,kBAAoB,EAAA,sBAAA;AAAA,MACpB,eAAiB,EAAA;AAAA,KAClB,CAAA,EAAG,MAAO,CAAA,MAAA,CAAO,YAAa,EAAA,IAAK,sBAAwB,EAAA,cAAA,KAAmB,KAAsB,oBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,MAC9H,WAAW,mBAAO,CAAA,sBAAA;AAAA,MAClB,aAAe,EAAA,MAAM,MAAO,CAAA,MAAA,CAAO,SAAU,EAAA;AAAA,MAC7C,WAAA,EAAa,OAAO,gBAAiB,EAAA;AAAA,MACrC,YAAA,EAAc,OAAO,gBAAiB;AAAA,KACvC,CAAC,CAAA;AAAA,GACH,CAAC,CAAC,CAAC,CAAG,EAAA,CAAC,CAAC,aAAA,EAAe,MAAuB,oBAAAA,wBAAM,CAAA,aAAA,CAAc,kBAAoB,EAAA;AAAA,IACrF,MAAQ,EAAA,gBAAA;AAAA,IACR,OAAS,EAAA,uBAAA;AAAA,IACT,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,kBAAA;AAAA,IACA,OAAS,EAAA;AAAA,GACV,CAAG,EAAA,aAAA,EAAe,IAAK,CAAA,CAAA,GAAA,KAAO,GAAI,CAAA,OAAO,CAAkB,oBAAAA,wBAAM,CAAA,aAAA,CAAc,qBAAuB,EAAA;AAAA,IACrG,MAAQ,EAAA,mBAAA;AAAA,IACR,OAAS,EAAA,oBAAA;AAAA,IACT,aAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAS,EAAA;AAAA,GACV,CAAC,CAAA;AACJ;;;AC1HA,IAAM,QAAW,GAAA,CAAA;AACV,SAAS,iBAAkB,CAAA;AAAA,EAChC,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAY,GAAA,EAAA;AAAA,EACZ,WAAc,GAAA;AAChB,CAAG,EAAA;AAED,EAAM,MAAA,kBAAA,GAAqB,MAAM,OAAQ,CAAA,kBAAA;AACzC,EAAM,MAAA,cAAA,GAAiB,qBAAqB,CAAI,GAAA,CAAA;AAChD,EAAA,MAAM,OAAUG,GAAAA,eAAAA,CAAQ,MAAM,YAAA,CAAa,SAAS,CAAI,GAAA,YAAA,CAAa,CAAC,CAAA,CAAE,OAAU,GAAA,EAAI,EAAA,CAAC,YAAY,CAAC,CAAA;AACpG,EAAM,MAAA,gBAAA,GAAmB,QAAQ,MAAS,GAAA,cAAA;AAC1C,EAAM,MAAA,SAAA,GAAYP,eAAO,IAAI,CAAA;AAC7B,EAAM,MAAA,OAAA,GAAUA,eAAO,IAAI,CAAA;AAC3B,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAID,iBAAS,QAAQ,CAAA;AAC/D,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,CAAIA,GAAAA,gBAAAA,CAAS,QAAQ,MAAM,CAAA;AAE3E,EAAAE,kBAAU,MAAM;AACd,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAA,qBAAA,CAAsB,QAAQ,MAAM,CAAA;AAAA,KAC/B,MAAA;AACL,MAAA,IAAI,kBAAkB,OAAS,EAAA;AAC7B,QAAM,MAAA,UAAA,GAAa,kBAAkB,OAAQ,CAAA,WAAA;AAC7C,QAAA,IAAI,aAAa,CAAG,EAAA;AAClB,UAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,IAAK,CAAA,UAAA,GAAa,WAAW,CAAA;AACxD,UAAA,qBAAA,CAAsB,aAAa,CAAA;AAAA;AACrC;AACF;AACF,KACC,CAAC,WAAA,EAAa,gBAAkB,EAAA,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAG9D,EAAAA,kBAAU,MAAM;AACd,IAAA,IAAI,kBAAkB,OAAS,EAAA;AAC7B,MAAM,MAAA,eAAA,GAAkB,kBAAkB,OAAQ,CAAA,YAAA;AAClD,MAAA,MAAM,kBAAkB,eAAkB,GAAA,SAAA;AAC1C,MAAA,IAAI,kBAAkB,CAAG,EAAA;AACvB,QAAA,MAAM,UAAa,GAAA,IAAA,CAAK,IAAK,CAAA,eAAA,GAAkB,SAAS,CAAA;AACxD,QAAA,kBAAA,CAAmB,IAAK,CAAA,GAAA,CAAI,UAAY,EAAA,QAAQ,CAAC,CAAA;AAAA;AACnD;AACF,GACC,EAAA,CAAC,iBAAmB,EAAA,SAAS,CAAC,CAAA;AACjC,EAAoB,uBAAAG,wBAAM,CAAA,aAAA,CAAcA,wBAAM,CAAA,QAAA,EAAU,MAAM,gBAAgC,mBAAAA,wBAAM,CAAA,aAAA,CAAc,WAAa,EAAA;AAAA,IAC7H;AAAA,GACD,CAAA,mBAAiBA,wBAAAA,CAAM,cAAc,OAAS,EAAA;AAAA,IAC7C,WAAW,mBAAa,CAAA,eAAA;AAAA,IACxB,GAAK,EAAA;AAAA,GACS,kBAAAA,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,IACxC,WAAW,mBAAa,CAAA;AAAA,GAC1B,EAAG,MAAM,IAAK,CAAA;AAAA,IACZ,MAAQ,EAAA;AAAA,GACT,CAAA,CAAE,GAAI,CAAA,CAAC,GAAG,KAAU,KAAA;AACnB,IAAM,MAAA,KAAA,GAAQ,QAAQ,MAAS,GAAA,KAAA,GAAQ,QAAQ,KAAK,CAAA,CAAE,SAAY,GAAA,WAAA;AAClE,IAAoB,uBAAAA,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,MAC5C,GAAA,EAAK,kBAAkB,KAAK,CAAA,CAAA;AAAA,MAC5B,WAAW,mBAAa,CAAA,mBAAA;AAAA,MACxB,KAAO,EAAA;AAAA,QACL;AAAA;AACF,KACc,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,MACzC,SAAWW,EAAAA,4BAAAA,CAAW,mBAAa,CAAA,qBAAA,EAAuB,oBAAc,gBAAgB;AAAA,KACzF,CAAC,CAAA;AAAA,GACH,CAAC,CAAC,mBAAgBX,wBAAAA,CAAM,cAAc,OAAS,EAAA;AAAA,IAC9C,WAAW,iBAAW,CAAA,aAAA;AAAA,IACtB,GAAK,EAAA;AAAA,GACP,EAAG,MAAM,IAAK,CAAA;AAAA,IACZ,MAAQ,EAAA;AAAA,GACT,EAAE,GAAI,CAAA,CAAC,GAAG,KAAuB,qBAAAA,wBAAM,CAAA,aAAA,CAAc,UAAY,EAAA;AAAA,IAChE,GAAA,EAAK,YAAY,KAAK,CAAA,CAAA;AAAA,IACtB,WAAa,EAAA,kBAAA;AAAA,IACb,OAAA;AAAA,IACA,YAAY,SAAY,GAAA,KAAA;AAAA,IACxB,SAAA;AAAA,IACA;AAAA,GACD,CAAC,CAAC,CAAC,CAAA;AACN;;;ACnGA,IAAA,qBAAA,GAAA,EAAA;;;ACkBO,SAAS,aAAc,CAAA;AAAA,EAC5B;AACF,CAAG,EAAA;AACD,EAAoB,uBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,WAAW,qBAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,qBAAO,CAAA;AAAA,GACpB,EAAG,OAAO,CAAC,CAAA;AACb;;;AC1BA,IAAA,aAAA,GAAA,EAAA;;;ACAA,IAAA,uBAAA,GAAA,EAAA;;;ACmBO,SAAS,eAAgB,CAAA;AAAA,EAC9B,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,GAAA,GAAMJ,eAAO,IAAI,CAAA;AACvB,EAAAC,kBAAU,MAAM;AACd,IAAA,MAAM,qBAAqB,CAAS,KAAA,KAAA;AAClC,MAAI,IAAA,GAAA,CAAI,WAAW,CAAC,GAAA,CAAI,QAAQ,QAAS,CAAA,KAAA,CAAM,MAAM,CAAG,EAAA;AACtD,QAAQ,OAAA,EAAA;AAAA;AACV,KACF;AACA,IAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,IAAA,OAAO,MAAM;AACX,MAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,kBAAkB,CAAA;AAAA,KAC9D;AAAA,GACF,EAAG,CAAC,OAAO,CAAC,CAAA;AACZ,EAAA,uBAA8CmD,qBAAA,iBAAAhD,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACvE,GAAA;AAAA,IACA,WAAW,uBAAO,CAAA,mBAAA;AAAA,IAClB,KAAO,EAAA;AAAA,MACL,MAAM,QAAS,CAAA,IAAA;AAAA,MACf,KAAK,QAAS,CAAA,GAAA;AAAA,MACd,UAAU,QAAS,CAAA;AAAA;AACrB,GACF,EAAG,cAAc,IAAK,CAAA,GAAA,CAAI,UAAU,IAAI,CAAC,CAAG,EAAA,QAAA,CAAS,IAAI,CAAA;AAC3D;AC7BO,IAAM,qBAAqB,CAAC;AAAA,EACjC;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIL,iBAAS,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAChE,EAAM,MAAA,qBAAA,GAAwBG,oBAAY,CAAS,KAAA,KAAA;AACjD,IAAA,KAAA,CAAM,cAAe,EAAA;AACrB,IAAA,KAAA,CAAM,eAAgB,EAAA;AACtB,IAAA,IAAI,MAAM,OAAS,EAAA;AACjB,MAAM,MAAA,IAAA,GAAO,KAAM,CAAA,OAAA,CAAQ,qBAAsB,EAAA;AACjD,MAAA,MAAM,QAAW,GAAA;AAAA,QACf,MAAM,IAAK,CAAA,IAAA;AAAA,QACX,KAAK,IAAK,CAAA,MAAA;AAAA,QACV,OAAO,IAAK,CAAA;AAAA,OACd;AACA,MAAA,kBAAA,CAAmB,QAAQ,CAAA;AAC3B,MAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA;AAC3B,GACF,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAM,MAAA,sBAAA,GAAyBA,oBAAY,MAAM;AAC/C,IAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,IAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA,GACzB,EAAG,EAAE,CAAA;AACL,EAAO,OAAA;AAAA,IACL,iBAAA;AAAA,IACA,qBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;;;ACvBO,SAAS,SAAU,CAAA;AAAA,EACxB,IAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,KAAA,GAAQF,eAAO,IAAI,CAAA;AACzB,EAAM,MAAA,cAAA,GAAiB,IAAK,CAAA,MAAA,CAAO,EAAO,KAAA,mBAAA;AAC1C,EAAM,MAAA;AAAA,IACJ,iBAAA;AAAA,IACA,qBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,MACE,kBAAmB,CAAA;AAAA,IACrB;AAAA,GACD,CAAA;AACD,EAAM,MAAA,uBAAA,GAA0B,CAAC,cAAkB,IAAA,iBAAA,IAAqB,CAAC,CAAC,eAAA,IAAmB,CAAC,CAAC,qBAAA;AAC/F,EAAM,MAAA;AAAA,IACJ;AAAA,GACF,GAAI,sBAAuB,CAAA,IAAA,CAAK,MAAM,CAAA;AACtC,EAAoB,uBAAAI,yBAAM,aAAcA,CAAAA,wBAAAA,CAAM,UAAU,IAAmB,kBAAAA,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,IACnG,GAAK,EAAA,KAAA;AAAA,IACL,aAAA,EAAe,IAAK,CAAA,MAAA,CAAO,WAAY,EAAA;AAAA,IACvC,WAAW,iBAAO,CAAA,aAAA;AAAA,IAClB,KAAO,EAAA,YAAA;AAAA,IACP,aAAe,EAAA;AAAA,GACD,kBAAAA,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,WAAW,iBAAO,CAAA;AAAA,KACjBuC,qBAAW,CAAA,IAAA,CAAK,MAAO,CAAA,SAAA,CAAU,MAAM,IAAK,CAAA,UAAA,EAAY,CAAC,CAAC,CAAG,EAAA,uBAAA,oBAAwCvC,wBAAAA,CAAM,cAAc,eAAiB,EAAA;AAAA,IAC3I,IAAA;AAAA,IACA,QAAU,EAAA,eAAA;AAAA,IACV,OAAS,EAAA,sBAAA;AAAA,IACT,aAAe,EAAA;AAAA,GAChB,CAAC,CAAA;AACJ;;;ACpCO,SAAS,QAAS,CAAA;AAAA,EACvB,GAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,WAAA,GAAcF,oBAAY,MAAM;AACpC,IAAA,UAAA,GAAa,IAAI,QAAQ,CAAA;AAAA,GACxB,EAAA,CAAC,UAAY,EAAA,GAAA,CAAI,QAAQ,CAAC,CAAA;AAC7B,EAAoB,uBAAAE,wBAAM,CAAA,aAAA,CAAc,IAAM,EAAA;AAAA,IAC5C,eAAA,EAAiB,IAAI,aAAc,EAAA;AAAA,IACnC,WAAW,gBAAO,CAAA,YAAA;AAAA,IAClB,KAAO,EAAA;AAAA,MACL,MAAA,EAAQ,CAAG,EAAA,UAAA,CAAW,IAAI,CAAA,EAAA,CAAA;AAAA,MAC1B,SAAA,EAAW,CAAc,WAAA,EAAA,UAAA,CAAW,KAAK,CAAA,GAAA;AAAA,KAC3C;AAAA,IACA,OAAS,EAAA;AAAA,GACX,EAAG,IAAI,eAAgB,EAAA,CAAE,IAAI,CAAqB,IAAA,qBAAAA,wBAAM,CAAA,aAAA,CAAc,SAAW,EAAA;AAAA,IAC/E,KAAK,IAAK,CAAA,EAAA;AAAA,IACV,IAAA;AAAA,IACA;AAAA,GACD,CAAC,CAAC,CAAA;AACL;;;ACpBO,SAAS,SAAU,CAAA;AAAA,EACxB,IAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAY,GAAA,EAAA;AAAA,EACZ,aAAgB,GAAA,KAAA;AAAA,EAChB,eAAe;AACjB,CAAG,EAAA;AAED,EAAA,MAAM,iBAAiBiD,2BAAe,CAAA;AAAA,IACpC,OAAO,IAAK,CAAA,MAAA;AAAA,IACZ,cAAc,MAAM,SAAA;AAAA,IACpB,gBAAA,EAAkB,MAAM,iBAAkB,CAAA,OAAA;AAAA,IAC1C,QAAU,EAAA;AAAA,GACX,CAAA;AAGD,EAAAC,uBAAA,CAAgB,MAAM;AACpB,IAAA,cAAA,CAAe,OAAQ,EAAA;AAAA,GACtB,EAAA,CAAC,cAAgB,EAAA,IAAA,CAAK,MAAM,CAAC,CAAA;AAChC,EAAM,MAAA,SAAA,GAAY,eAAe,YAAa,EAAA;AAC9C,EAAM,MAAA,UAAA,GAAa,aAAgB,GAAA,SAAA,GAAY,SAAY,GAAA,SAAA;AAC3D,EAAA,MAAM,OAAU,GAAA,YAAA,CAAa,CAAC,CAAA,EAAG,WAAW,EAAC;AAC7C,EAAoB,uBAAAlD,wBAAM,CAAA,aAAA,CAAc,OAAS,EAAA;AAAA,IAC/C,WAAW,iBAAO,CAAA,aAAA;AAAA,IAClB,KAAO,EAAA;AAAA,MACL,MAAA,EAAQ,GAAG,UAAU,CAAA,EAAA;AAAA;AACvB,GACC,EAAA,cAAA,CAAe,eAAgB,EAAA,CAAE,IAAI,CAAc,UAAA,KAAA;AACpD,IAAM,MAAA,GAAA,GAAM,IAAK,CAAA,UAAA,CAAW,KAAK,CAAA;AACjC,IAAoB,uBAAAA,wBAAM,CAAA,aAAA,CAAc,QAAU,EAAA;AAAA,MAChD,KAAK,GAAI,CAAA,EAAA;AAAA,MACT,GAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,GACF,CAAG,EAAA,aAAA,oBAA8BA,wBAAAA,CAAM,cAAc,UAAY,EAAA;AAAA,IAChE,OAAA;AAAA,IACA,UAAY,EAAA,SAAA;AAAA,IACZ,SAAA;AAAA,IACA,aAAa,OAAQ,CAAA;AAAA,GACtB,CAAC,CAAA;AACJ;;;ACzCO,SAAS,SAAU,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,iBAAA,GAAoBJ,eAAO,IAAI,CAAA;AACrC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAID,iBAAS,KAAK,CAAA;AAGxD,EAAM,MAAA,WAAA,GAAcC,eAAO,KAAK,CAAA;AAChC,EAAAC,kBAAU,MAAM;AACd,IAAI,IAAA,CAAC,SAAa,IAAA,aAAA,IAAiB,IAAM,EAAA;AACvC,MAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA;AACxB,GACC,EAAA,CAAC,SAAW,EAAA,aAAa,CAAC,CAAA;AAC7B,EAAM,MAAA,qBAAA,GAAwBC,mBAAY,CAAA,OAAM,mBAAuB,KAAA;AACrE,IAAA,IAAI,mBAAuB,IAAA,CAAC,WAAY,CAAA,OAAA,IAAW,CAAC,aAAe,EAAA;AACjE,MAAM,MAAA;AAAA,QACJ,YAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACE,GAAA,mBAAA;AACJ,MAAA,IAAI,eAAe,SAAY,GAAA,YAAA,GAAe,OAAO,CAAC,SAAA,IAAa,iBAAiB,IAAM,EAAA;AACxF,QAAA,WAAA,CAAY,OAAU,GAAA,IAAA;AACtB,QAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,QAAI,IAAA;AACF,UAAA,MAAM,aAAc,EAAA;AAAA,SACpB,SAAA;AACA,UAAA,WAAA,CAAY,OAAU,GAAA,KAAA;AAAA;AACxB;AACF;AACF,GACC,EAAA,CAAC,aAAe,EAAA,SAAA,EAAW,aAAa,CAAC,CAAA;AAC5C,EAAM,MAAA,YAAA,GAAeA,mBAAY,CAAA,OAAM,CAAK,KAAA;AAC1C,IAAM,MAAA,qBAAA,CAAsB,EAAE,aAAa,CAAA;AAAA,GAC7C,EAAG,CAAC,qBAAqB,CAAC,CAAA;AAC1B,EAAM,MAAA,IAAA,GAAO,KAAM,CAAA,WAAA,EAAc,CAAA,IAAA;AACjC,EAAM,MAAA,YAAA,GAAe,MAAM,eAAgB,EAAA;AAC3C,EAAM,MAAA,OAAA,GAAU,KAAK,MAAS,GAAA,CAAA;AAC9B,EAAM,MAAA,QAAA,GAAW,OAAO,IAAK,CAAA,cAAA,EAAgB,aAAa,EAAE,EAAE,MAAS,GAAA,CAAA;AACvE,EAAM,MAAA,iBAAA,GAAoBA,oBAAY,YAAY;AAChD,IAAA,MAAM,gBAAgB,aAAgB,IAAA;AACtC,IAAA,cAAA,EAAgB,UAAa,IAAA;AAAA,GAC/B,EAAG,CAAC,cAAc,CAAC,CAAA;AACnB,EAAoB,uBAAAE,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IAC7C,SAAWW,EAAAA,4BAAAA,CAAW,aAAO,CAAA,gBAAA,EAAkB,SAAS;AAAA,GAC1C,kBAAAX,wBAAM,CAAA,aAAA,CAAc,KAAO,EAAA;AAAA,IACzC,GAAK,EAAA,iBAAA;AAAA,IACL,WAAWW,4BAAW,CAAA,aAAA,CAAO,kBAAoB,EAAA,cAAA,IAAkB,cAAO,4BAA4B,CAAA;AAAA,IACtG,QAAU,EAAA;AAAA,GACI,kBAAAX,wBAAM,CAAA,aAAA,CAAc,OAAS,EAAA,IAAA,EAAM,SAAa,IAAA,CAAC,OAAuB,mBAAAA,wBAAM,CAAA,aAAA,CAAc,iBAAmB,EAAA;AAAA,IAC7H,KAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAiB,mBAAAA,wBAAM,CAAA,aAAA,CAAcA,wBAAM,CAAA,QAAA,EAAU,IAAmB,kBAAAA,wBAAM,CAAA,aAAA,CAAc,WAAa,EAAA;AAAA,IACxG,KAAA;AAAA,IACA;AAAA,GACD,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,SAAW,EAAA;AAAA,IAC9C,IAAA;AAAA,IACA,iBAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,qBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACD,CAAC,CAAC,CAAG,EAAA,CAAC,OAAW,IAAA,KAAA,IAAS,IAAqB,oBAAAA,wBAAM,CAAA,aAAA,CAAc,aAAe,EAAA;AAAA,IACjF,OAAS,EAAA;AAAA,GACV,CAAG,EAAA,KAAA,IAAS,wBAAqBA,wBAAAA,CAAM,cAAc,aAAe,EAAA;AAAA,IACnE,OAAA,EAAS,CAAuB,oBAAA,EAAA,KAAA,CAAM,OAAO,CAAA;AAAA,GAC9C,CAAC,CAAA,EAAG,kCAA+BA,wBAAAA,CAAM,cAAc,KAAO,EAAA;AAAA,IAC7D,WAAW,aAAO,CAAA;AAAA,GACJ,kBAAAA,wBAAM,CAAA,aAAA,CAAc,YAAc,EAAA;AAAA,IAChD,OAAS,EAAA,SAAA;AAAA,IACT,OAAS,EAAA,iBAAA;AAAA,IACT,UAAU,CAAC;AAAA,GACb,EAAG,cAAc,CAAC,CAAC,CAAA;AACrB;;;ACrEO,SAAS,WAAY,CAAA;AAAA,EAC1B,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAgB,GAAA,MAAA;AAAA,EAChB,YAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAiB,GAAA,IAAA;AAAA,EACjB,mBAAsB,GAAA,IAAA;AAAA,EACtB,oBAAuB,GAAA,IAAA;AAAA,EACvB,kBAAqB,GAAA,IAAA;AAAA,EACrB,GAAG;AACL,CAAG,EAAA;AACD,EAAM,MAAA;AAAA,IACJ,YAAA;AAAA,IACA;AAAA,MACE,eAAgB,CAAA;AAAA,IAClB;AAAA,GACD,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,gBAAiB,CAAA;AAAA,IACnB,kBAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA;AAAA,MACE,eAAgB,CAAA;AAAA,IAClB,OAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACE,GAAA,kBAAA,CAAmB,UAAY,EAAA,iBAAA,EAAmB,QAAQ,OAAO,CAAA;AACrE,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA,OAAS,EAAA;AAAA,GACX,GAAI,aAAc,CAAA,UAAA,EAAY,iBAAiB,CAAA;AAC/C,EAAM,MAAA;AAAA,IACJ,YAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,MACE,eAAgB,CAAA;AAAA,IAClB,aAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,kBAAkB,kBAAmB,CAAA;AAAA,IACzC,aAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,gBAAA;AAAA,IACA,wBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,MACE,mBAAoB,CAAA;AAAA,IACtB,UAAY,EAAA,OAAA;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,aAAA;AAAA,IACA;AAAA,MACE,gBAAiB,CAAA;AAAA,IACnB,iBAAA;AAAA,IACA,kBAAoB,EAAA,kBAAA;AAAA,IACpB;AAAA,GACD,CAAA;AACD,EAAM,MAAA,UAAA,GAAaG,gBAAQ,MAAM;AAC/B,IAAA,OAAO,eAAkB,GAAA,CAAC,eAAiB,EAAA,GAAG,OAAO,CAAI,GAAA,OAAA;AAAA,GACxD,EAAA,CAAC,eAAiB,EAAA,OAAO,CAAC,CAAA;AAC7B,EAAA,MAAM,QAAQgD,wBAAc,CAAA;AAAA,IAC1B,IAAA,EAAM,QAAQ,EAAC;AAAA,IACf,OAAS,EAAA,UAAA;AAAA,IACT,iBAAiBC,0BAAgB,EAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,eAAA;AAAA,IACA,oBAAA;AAAA,IACA,qBAAA;AAAA,IACA,wBAAA;AAAA,IACA,mBAAA;AAAA,IACA,kBAAA;AAAA,IACA,aAAe,EAAA,cAAA;AAAA,IACf,gBAAkB,EAAA,UAAA;AAAA,IAClB,qBAAuB,EAAA,KAAA;AAAA,IACvB,aAAe,EAAA,IAAA;AAAA;AAAA,IAEf,aAAe,EAAA;AAAA,MACb,OAAS,EAAA;AAAA,KACX;AAAA,IACA,QAAA;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,UAAY,EAAA,cAAA;AAAA,MACZ;AAAA;AACF,GACD,CAAA;AACD,EAAA,MAAM,uBAA0BtD,GAAAA,mBAAAA,CAAY,CAAC,GAAA,EAAK,IAAS,KAAA;AACzD,IAAA,OAAO,qBAAwB,GAAA,GAAA,EAAK,IAAK,CAAA,QAAA,EAAU,CAAA;AAAA,GACrD,EAAG,CAAC,qBAAqB,CAAC,CAAA;AAC1B,EAAA,MAAM,iBAAiB,SAAa,IAAA,gBAAA;AACpC,EAAM,MAAA,sBAAA,GAAyBK,gBAAQ,OAAO;AAAA,IAC5C,gBAAkB,EAAA,cAAA;AAAA,IAClB,gBAAkB,EAAA,mBAAA;AAAA,IAClB,cAAgB,EAAA,oBAAA;AAAA,IAChB,cAAgB,EAAA;AAAA,MACd,CAAC,cAAA,EAAgB,mBAAqB,EAAA,oBAAA,EAAsB,kBAAkB,CAAC,CAAA;AACnF,EAAM,MAAA,cAAA,GAAiBA,gBAAQ,MAAM;AACnC,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAA;AAAA;AAEF,IAAO,OAAA;AAAA,MACL,aAAe,EAAA,iBAAA;AAAA,MACf,UAAA;AAAA,MACA;AAAA,KACF;AAAA,KACC,CAAC,aAAA,EAAe,iBAAmB,EAAA,UAAA,EAAY,SAAS,CAAC,CAAA;AAC5D,EAAoB,uBAAAH,wBAAM,CAAA,aAAA,CAAc,SAAW,EAAA;AAAA,IACjD,KAAA;AAAA,IACA,SAAW,EAAA,cAAA;AAAA,IACX,aAAe,EAAA,SAAA;AAAA,IACf,YAAY,KAAM,CAAA,UAAA;AAAA,IAClB,WAAW,KAAM,CAAA,SAAA;AAAA,IACjB,qBAAuB,EAAA,uBAAA;AAAA,IACvB,WAAW,KAAM,CAAA,SAAA;AAAA,IACjB,KAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH","file":"experimental.cjs","sourcesContent":[".osdkEditableInput:focus {\n outline: none;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./EditableCell.module.css\";\nconst NUMBER_TYPES = [\"double\", \"integer\", \"long\", \"float\", \"decimal\", \"byte\", \"short\"];\nfunction valueToString(value) {\n if (value == null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n // At this point, value is a primitive (string, number, boolean, symbol, bigint)\n return String(value);\n}\nfunction parseValueByType(value, dataType) {\n if (!dataType || !NUMBER_TYPES.includes(dataType)) {\n return value;\n }\n if (value === \"\") {\n return null;\n }\n const parsedNumber = Number(value);\n if (isNaN(parsedNumber)) {\n return value;\n }\n return parsedNumber;\n}\nexport function EditableCell({\n initialValue,\n currentValue,\n cellId,\n dataType,\n onCellEdit\n}) {\n const [value, setValue] = useState(valueToString(currentValue));\n const isCancelled = useRef(false);\n useEffect(() => {\n setValue(valueToString(currentValue));\n }, [currentValue]);\n const handleBlur = useCallback(() => {\n // Do not commit the edit if it was cancelled with Escape key\n if (isCancelled.current) {\n isCancelled.current = false;\n return;\n }\n const parsedValue = parseValueByType(value, dataType);\n onCellEdit?.(cellId, {\n newValue: parsedValue,\n oldValue: initialValue\n });\n }, [value, initialValue, onCellEdit, cellId, dataType]);\n const handleChange = useCallback(value => {\n setValue(value);\n }, []);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n if (e.key === \"Escape\") {\n isCancelled.current = true;\n setValue(valueToString(currentValue));\n e.currentTarget.blur();\n }\n }, [currentValue]);\n const inputType = dataType && NUMBER_TYPES.includes(dataType) ? \"number\" : \"text\";\n return /*#__PURE__*/React.createElement(Input, {\n className: styles.osdkEditableInput,\n type: inputType,\n value: value,\n onValueChange: handleChange,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function getCellId(cellIdentifier) {\n return JSON.stringify(cellIdentifier);\n}\nexport function getCellIdentifier(cellId) {\n const parsed = JSON.parse(cellId);\n if (typeof parsed === \"object\" && parsed != null && \"rowId\" in parsed && \"columnId\" in parsed) {\n return parsed;\n }\n throw new Error(\"Parsed cellId does not have required properties\");\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { EditableCell } from \"./EditableCell.js\";\nimport { getCellId } from \"./utils/getCellId.js\";\nexport function renderDefaultCell(cellContext) {\n const meta = cellContext.table.options.meta;\n const columnMeta = cellContext.column.columnDef.meta;\n if (!columnMeta?.editable || !meta?.onCellEdit) {\n return cellContext.getValue();\n }\n const rowId = cellContext.row.id;\n const columnId = cellContext.column.id;\n const cellId = getCellId({\n rowId,\n columnId\n });\n const cellEdits = meta.cellEdits;\n const editedValue = cellEdits?.[cellId];\n const currentValue = editedValue?.newValue ?? cellContext.getValue();\n return /*#__PURE__*/React.createElement(EditableCell, {\n initialValue: cellContext.getValue(),\n currentValue: currentValue,\n cellId: cellId,\n dataType: columnMeta?.dataType,\n onCellEdit: meta.onCellEdit\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs(objectType, columnDefinitions) {\n const {\n metadata,\n loading,\n error\n } = useOsdkMetadata(objectType);\n const columns = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n return {\n columns,\n loading,\n error\n };\n}\nfunction getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {\n return columnDefinitions.map(col => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName\n } = col;\n const propertyMetadata = locator.type === \"property\" ? objectProperties?.[locator.id] : undefined;\n const colKey = locator.id;\n const dataType = propertyMetadata?.type && typeof propertyMetadata.type === \"string\" ? propertyMetadata.type : undefined;\n const colDef = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isVisible: col.isVisible !== false,\n editable,\n dataType\n },\n size: width,\n ...(minWidth ? {\n minSize: minWidth\n } : {}),\n ...(maxWidth ? {\n maxSize: maxWidth\n } : {}),\n enableResizing: resizable,\n enableSorting: orderable,\n enableColumnFilter: filterable,\n cell: cellContext => {\n const object = cellContext.row.original;\n if (renderCell) {\n return renderCell(object, locator);\n }\n return renderDefaultCell(cellContext);\n }\n };\n return colDef;\n });\n}\nfunction getDefaultColumns(objectProperties) {\n if (!objectProperties) return [];\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef = {\n accessorKey: key,\n header: property.displayName ?? key\n };\n return colDef;\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const SELECTION_COLUMN_ID = \"__selection__\";","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\nexport const useColumnPinning = ({\n columnDefinitions,\n hasSelectionColumn,\n onColumnsPinnedChanged\n}) => {\n const [columnPinning, setColumnPinning] = useState({\n left: [],\n right: []\n });\n\n // Update column pinning when columnDefinitions change\n useEffect(() => {\n const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);\n const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];\n setColumnPinning({\n left: [...selectionCol, ...(defaultState.left ?? [])],\n right: [...(defaultState.right ?? [])]\n });\n }, [columnDefinitions, hasSelectionColumn]);\n const onColumnPinningChange = useCallback(updater => {\n setColumnPinning(prev => {\n const newPinning = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnsPinnedChanged) {\n const newStates = convertColumnPinningStateToArray(newPinning);\n const stateWithoutSelectionCol = newStates.filter(state => state.columnId !== SELECTION_COLUMN_ID);\n onColumnsPinnedChanged(stateWithoutSelectionCol);\n }\n return newPinning;\n });\n }, [onColumnsPinnedChanged]);\n return {\n columnPinning,\n onColumnPinningChange\n };\n};\nconst getColumnPinningStateFromColumnDefs = columnDefinitions => {\n if (!columnDefinitions) {\n return {};\n }\n const columnPinningState = columnDefinitions.reduce((acc, {\n locator,\n pinned\n }) => {\n const colKey = locator.id.toString();\n const isPinned = pinned != null && pinned !== \"none\";\n if (!isPinned) {\n return acc;\n }\n if (pinned === \"left\") {\n return {\n ...acc,\n left: [...(acc.left ?? []), colKey]\n };\n }\n return {\n ...acc,\n right: [...(acc.right ?? []), colKey]\n };\n }, {\n left: [],\n right: []\n });\n return columnPinningState;\n};\n\n/**\n * Converts ColumnPinningState to array format for the callback\n */\nfunction convertColumnPinningStateToArray(pinningState) {\n return [...(pinningState.left ?? []).map(columnId => ({\n columnId,\n pinned: \"left\"\n })), ...(pinningState.right ?? []).map(columnId => ({\n columnId,\n pinned: \"right\"\n }))];\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useColumnResize = ({\n onColumnResize\n}) => {\n const [columnSizing, setColumnSizing] = useState({});\n const onColumnSizingChange = useCallback(updater => {\n setColumnSizing(prev => {\n const newState = typeof updater === \"function\" ? updater(prev) : updater;\n if (onColumnResize) {\n for (const columnId of Object.keys(newState)) {\n if (newState[columnId] !== prev[columnId]) {\n onColumnResize(columnId, newState[columnId]);\n }\n }\n for (const columnId of Object.keys(prev)) {\n if (!(columnId in newState)) {\n onColumnResize(columnId, null);\n }\n }\n }\n return newState;\n });\n }, [onColumnResize]);\n return {\n columnSizing,\n onColumnSizingChange\n };\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useState } from \"react\";\nexport const useColumnVisibility = ({\n allColumns,\n onColumnVisibilityChanged\n}) => {\n const [columnVisibility, setColumnVisibility] = useState(() => getColumnVisibilityState(allColumns));\n const [columnOrder, setColumnOrder] = useState(() => getColumnOrder(allColumns));\n\n // TODO: Explore other ways to respond to props changes for controlled mode\n useEffect(() => {\n setColumnVisibility(getColumnVisibilityState(allColumns));\n }, [allColumns]);\n useEffect(() => {\n setColumnOrder(getColumnOrder(allColumns));\n }, [allColumns]);\n const onColumnVisibilityChange = useCallback(updaterOrValue => {\n setColumnVisibility(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n if (onColumnVisibilityChanged) {\n const changes = Object.entries(newState).map(([columnId, isVisible]) => ({\n columnId,\n isVisible\n }));\n onColumnVisibilityChanged(changes);\n }\n return newState;\n });\n }, [onColumnVisibilityChanged]);\n const onColumnOrderChange = useCallback(updaterOrValue => {\n setColumnOrder(prev => {\n const newState = typeof updaterOrValue === \"function\" ? updaterOrValue(prev) : updaterOrValue;\n return newState;\n });\n }, []);\n return {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n };\n};\nconst getColumnVisibilityState = allColumns => {\n return allColumns.reduce((acc, col) => {\n const colId = col.id ?? col.accessorKey;\n if (colId) {\n return {\n ...acc,\n [colId]: col.meta?.isVisible !== false\n };\n }\n return acc;\n }, {});\n};\nconst getColumnOrder = allColumns => {\n return allColumns.map(col => col.id ?? col.accessorKey).filter(id => id != null);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nimport { getCellIdentifier } from \"../utils/getCellId.js\";\nexport function useEditableTable({\n onCellValueChanged,\n onSubmitEdits\n}) {\n const [cellEdits, setCellEdits] = useState({});\n const handleCellEdit = useCallback((cellId, state) => {\n const cellIdentifier = getCellIdentifier(cellId);\n\n // If value is changed back to original, remove it from edits\n if (state.newValue === state.oldValue) {\n setCellEdits(prev => {\n const {\n [cellId]: _,\n ...rest\n } = prev;\n return rest;\n });\n } else {\n setCellEdits(prev => ({\n ...prev,\n [cellId]: state\n }));\n }\n onCellValueChanged?.(cellIdentifier, state);\n }, [onCellValueChanged]);\n const clearEdits = useCallback(() => {\n setCellEdits({});\n }, []);\n const handleSubmitEdits = useCallback(async () => {\n await onSubmitEdits?.(cellEdits);\n }, [cellEdits, onSubmitEdits]);\n return {\n cellEdits,\n handleCellEdit,\n handleSubmitEdits,\n clearEdits\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkObjects } from \"@osdk/react/experimental\";\nimport { useMemo } from \"react\";\nconst PAGE_SIZE = 50;\n\n/**\n * This hook is a wrapper around useOsdkObjects\n * It extracts RDP locators from columnDefinitions and calls useObjectSet + withProperties\n * to return data containing the derived properties.\n */\nexport function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting) {\n const orderBy = useMemo(() => {\n if (!sorting || sorting.length === 0) {\n return undefined;\n }\n return sorting.reduce((acc, sort) => {\n acc[sort.id] = sort.desc ? \"desc\" : \"asc\";\n return acc;\n }, {});\n }, [sorting]);\n\n // Extract derived properties definition\n const withProperties = useMemo(() => {\n if (!columnDefinitions) {\n return;\n }\n const rdpColumns = columnDefinitions.map(colDef => colDef.locator).filter(colLocator => {\n return colLocator.type === \"rdp\";\n });\n if (!rdpColumns.length) {\n return;\n }\n return rdpColumns.reduce((acc, cur) => {\n return {\n ...acc,\n [cur.id]: cur.creator\n };\n }, {});\n }, [columnDefinitions]);\n return useOsdkObjects(objectOrInterfaceType, {\n withProperties,\n pageSize: PAGE_SIZE,\n where: filter,\n orderBy\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const getRowId = row => {\n return getRowIdFromPrimaryKey(row.$primaryKey);\n};\nexport const getRowIdFromPrimaryKey = primaryKey => primaryKey.toString();","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\nexport function useRowSelection({\n selectionMode = \"none\",\n selectedRows,\n onRowSelection,\n data\n}) {\n // The rowSelectionState in uncontrolled mode\n const [internalRowSelection, setInternalRowSelection] = useState({});\n\n // Used for shift-click behavior in \"multiple\" mode\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState(null);\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n // Row selection state\n // If controlled mode, return the state from selectedRows prop\n // If uncontrolled, return the internalRowSelection state\n const rowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled && selectedRows) {\n return getRowSelectionState(selectedRows);\n }\n return internalRowSelection;\n }, [enableRowSelection, isControlled, selectedRows, internalRowSelection]);\n const selectedCount = Object.values(rowSelectionState).filter(Boolean).length;\n const totalCount = data?.length ?? 0;\n const isAllSelected = totalCount > 0 && selectedCount === totalCount;\n const hasSelection = selectedCount > 0;\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n const newSelectedRows = isAllSelected ? [] : data.map(item => item.$primaryKey);\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n }, [enableRowSelection, data, isAllSelected, isControlled, onRowSelection]);\n const onToggleRow = useCallback((rowId, rowIndex, isShiftClick = false) => {\n if (!enableRowSelection || !data) return;\n let newSelectedRows = [];\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n // Multiple selection mode\n\n // When user does shiftClick but lastSelectedRowIndex is null,\n // it is treated as a normal click in multiple selection\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows({\n rowId,\n rowIndex,\n data,\n lastSelectedRowIndex,\n rowSelectionState\n });\n } else {\n newSelectedRows = getMultipleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n });\n }\n setLastSelectedRowIndex(rowIndex);\n }\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n }, [enableRowSelection, data, selectionMode, lastSelectedRowIndex, isControlled, rowSelectionState, onRowSelection]);\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow\n };\n}\nfunction getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n // Toggle row selection in single selection mode\n const newSelectedRows = rowSelectionState[rowId] ? [] : [primaryKey];\n return newSelectedRows;\n}\nfunction getRangeSelectionRows({\n lastSelectedRowIndex,\n rowIndex,\n data,\n rowSelectionState\n}) {\n // This function is only called if lastSelectedRowIndex is not null\n // This condition is added for typechecks only\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n // Add all rows in range to selectedRows if not yet selected\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\nfunction getMultipleSelectionRows({\n rowIndex,\n data,\n rowSelectionState\n}) {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n // Handles single row toggle in multiple selection mode\n const newSelectedRows = currentlySelected.includes(primaryKey) ? currentlySelected.filter(i => i !== primaryKey) : [...currentlySelected, primaryKey];\n return newSelectedRows;\n}\n\n/**\n * Builds a range of rows from startIndex to endIndex\n */\nfunction getRowsInRange(data, startIndex, endIndex) {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows = [];\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n return rows;\n}\n\n/**\n * Converts an array of primary keys to a RowSelectionState object\n */\nfunction getRowSelectionState(primaryKeys) {\n return primaryKeys.reduce((acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n }, {});\n}\n\n/**\n * Converts from a RowSelectionState object back to an array of primary keys\n */\nfunction getSelectedPrimaryKeys(selectionState, data) {\n return data.filter(item => selectionState[getRowId(item)]).map(item => item.$primaryKey);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCheckboxRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n min-height: calc(\n var(--osdk-checkbox-icon-size) + var(--osdk-checkbox-padding) * 2\n );\n padding: var(--osdk-checkbox-padding);\n box-sizing: border-box;\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-checkbox-border);\n\n &[data-unchecked] {\n background-color: var(--osdk-checkbox-bg);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-active);\n }\n }\n\n &[data-checked],\n &[data-indeterminate] {\n background-color: var(--osdk-checkbox-bg-checked);\n\n &:hover {\n background-color: var(--osdk-checkbox-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-checkbox-bg-checked-active);\n }\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkCheckboxIndicator {\n display: flex;\n justify-content: center;\n align-items: center;\n color: var(--osdk-checkbox-checked-foreground);\n width: var(--osdk-checkbox-icon-size);\n height: var(--osdk-checkbox-icon-size);\n\n &[data-unchecked] {\n display: none;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Checkbox as BaseUICheckbox } from \"@base-ui/react/checkbox\";\nimport { Minus, Tick } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Checkbox.module.css\";\nexport function Checkbox({\n indeterminate,\n className,\n indicatorProps,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUICheckbox.Root, _extends({\n className: classnames(styles.osdkCheckboxRoot, className),\n indeterminate: indeterminate\n }, rest), /*#__PURE__*/React.createElement(BaseUICheckbox.Indicator, _extends({}, indicatorProps, {\n className: classnames(styles.osdkCheckboxIndicator, indicatorProps?.className)\n }), indeterminate ? /*#__PURE__*/React.createElement(Minus, {\n color: \"currentColor\"\n }) : /*#__PURE__*/React.createElement(Tick, {\n color: \"currentColor\"\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nexport function SelectionHeaderCell({\n isAllSelected,\n hasSelection,\n onToggleAll\n}) {\n return /*#__PURE__*/React.createElement(Checkbox, {\n indeterminate: hasSelection && !isAllSelected,\n checked: isAllSelected,\n onCheckedChange: onToggleAll,\n \"aria-label\": \"Select all rows\"\n });\n}\nexport function SelectionCell({\n row,\n onToggleRow\n}) {\n const handleClick = useCallback(event => {\n const isShiftClick = event.shiftKey;\n onToggleRow(row.id, row.index, isShiftClick);\n }, [row, onToggleRow]);\n return /*#__PURE__*/React.createElement(Checkbox, {\n checked: row.getIsSelected(),\n onClick: handleClick,\n \"aria-label\": `Select row ${row.index + 1}`\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo, useRef } from \"react\";\nimport { SelectionCell, SelectionHeaderCell } from \"../SelectionCells.js\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\nexport const useSelectionColumn = ({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n}) => {\n // TODO: Replace with useLatestRef\n const isAllSelectedRef = useRef(isAllSelected);\n isAllSelectedRef.current = isAllSelected;\n const hasSelectionRef = useRef(hasSelection);\n hasSelectionRef.current = hasSelection;\n const onToggleAllRef = useRef(onToggleAll);\n onToggleAllRef.current = onToggleAll;\n const onToggleRowRef = useRef(onToggleRow);\n onToggleRowRef.current = onToggleRow;\n const selectionColumn = useMemo(() => {\n if (selectionMode === \"none\") return null;\n const colDef = {\n id: SELECTION_COLUMN_ID,\n header: () => selectionMode === \"multiple\" ? /*#__PURE__*/React.createElement(SelectionHeaderCell, {\n isAllSelected: isAllSelectedRef.current,\n hasSelection: hasSelectionRef.current,\n onToggleAll: onToggleAllRef.current\n }) : null,\n cell: ({\n row\n }) => /*#__PURE__*/React.createElement(SelectionCell, {\n row: row,\n onToggleRow: onToggleRowRef.current\n }),\n size: 50,\n minSize: 50,\n maxSize: 50,\n enableSorting: false,\n enableResizing: false,\n enablePinning: false\n };\n return colDef;\n }, [selectionMode]);\n return selectionColumn;\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useState } from \"react\";\nexport const useTableSorting = ({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n}) => {\n // The sorting state in uncontrolled mode\n const [internalSorting, setInternalSorting] = useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);\n const isControlled = orderBy !== undefined;\n\n // Sorting state\n // If controlled mode, return the state from orderBy prop\n // If uncontrolled, return the internalSorting state\n const sortingState = useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);\n const onSortingChange = useCallback(updater => {\n const newSorting = typeof updater === \"function\" ? updater(sortingState) : updater;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSorting(newSorting);\n }\n if (onOrderByChanged) {\n const newOrderBy = convertSortingStateToOrderBy(newSorting);\n onOrderByChanged(newOrderBy);\n }\n }, [isControlled, sortingState, onOrderByChanged]);\n return {\n sorting: sortingState,\n onSortingChange\n };\n};\nfunction convertOrderByToSortingState(orderBy) {\n return orderBy.map(({\n property,\n direction\n }) => ({\n id: property,\n desc: direction === \"desc\"\n }));\n}\nfunction convertSortingStateToOrderBy(sorting) {\n return sorting.map(({\n id,\n desc\n }) => ({\n property: id,\n direction: desc ? \"desc\" : \"asc\"\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.button {\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 4);\n border-radius: var(--osdk-surface-border-radius);\n font-size: var(--osdk-typography-size-body-medium);\n cursor: pointer;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.secondaryButton {\n background-color: var(--osdk-button-secondary-bg);\n border: var(--osdk-surface-border);\n color: var(--osdk-button-secondary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-active);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.primaryButton {\n background-color: var(--osdk-button-primary-bg);\n border: none;\n color: var(--osdk-button-primary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-active);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./ActionButton.module.css\";\nexport function ActionButton({\n variant = \"secondary\",\n className,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(Button, _extends({\n className: classNames(styles.button, variant === \"primary\" ? styles.primaryButton : styles.secondaryButton, className)\n }, rest));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkLoadingCell {\n height: var(--osdk-table-cell-fontSize);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n flex: 1;\n}\n\n/* Blueprint skeleton animation keyframes */\n@keyframes skeleton-glow {\n from {\n background: var(--osdk-table-skeleton-color-from);\n border-color: var(--osdk-table-skeleton-color-from);\n }\n\n to {\n background: var(--osdk-table-skeleton-color-to);\n border-color: var(--osdk-table-skeleton-color-to);\n }\n}\n\n.osdkCellSkeleton {\n animation: 1000ms linear infinite alternate skeleton-glow;\n background: var(--osdk-table-skeleton-color-from);\n background-clip: padding-box;\n border-color: var(--osdk-table-skeleton-color-from);\n border-radius: calc(var(--osdk-surface-border-radius) * 0.5);\n border: 1px solid var(--osdk-table-skeleton-border-color);\n box-shadow: none;\n color: transparent;\n cursor: default;\n pointer-events: none;\n user-select: none;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableCell {\n display: flex;\n align-items: center;\n height: 100%;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-size: var(--osdk-table-cell-fontSize);\n color: var(--osdk-table-cell-color);\n background-color: inherit;\n border-right: var(--osdk-table-cell-divider);\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: var(--osdk-table-border);\n }\n}\n\n.osdkTableCell[data-pinned=\"left\"],\n.osdkTableCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-1);\n background-color: inherit;\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableCell[data-pinned=\"right\"]:not(\n :has(~ [data-pinned=\"right\"]):nth-child(n + 2)\n ) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableCell:has([role=\"checkbox\"]) {\n justify-content: center;\n padding: 0;\n}\n\n/* Show focus state for editable cells */\n.osdkTableCell:not(:has([role=\"checkbox\"])):has(input):focus-within {\n border: var(--osdk-emphasis-focus-width) solid\n var(--osdk-emphasis-focus-color);\n border-radius: var(--osdk-surface-border-radius);\n background-color: var(--osdk-table-cell-editable-bg);\n}\n\n.osdkTableCellContent:not(:has([role=\"checkbox\"])) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n}\n\n.osdkCheckboxContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./LoadingCell.module.css\";\nimport cellStyles from \"./TableCell.module.css\";\nexport function LoadingCell({\n width\n}) {\n return /*#__PURE__*/React.createElement(\"td\", {\n className: cellStyles.osdkTableCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkLoadingCell, styles.osdkCellSkeleton)\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableRow {\n position: absolute;\n display: flex;\n width: max-content;\n min-width: 100%;\n background-color: var(--osdk-table-row-bg-default);\n border-top: var(--osdk-table-row-divider);\n border-bottom: var(--osdk-table-border-width) solid transparent;\n\n &:last-child {\n border-bottom: var(--osdk-table-border);\n }\n\n /* Zebra rows */\n &:nth-child(even) {\n background-color: var(\n --osdk-table-row-bg-alternate,\n var(--osdk-table-row-bg-default)\n );\n }\n\n &:hover {\n z-index: 1;\n background-color: var(\n --osdk-table-row-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n border-top-color: var(--osdk-table-row-border-color-hover);\n border-bottom-color: var(--osdk-table-row-border-color-hover);\n }\n\n &[data-selected=\"true\"] {\n z-index: 2;\n background-color: var(--osdk-table-row-bg-active);\n border-top-color: var(--osdk-table-row-border-color-active);\n border-bottom-color: var(--osdk-table-row-border-color-active);\n }\n\n &[data-selected=\"true\"] + &[data-selected=\"true\"] {\n border-top-color: transparent;\n }\n\n &[data-selected=\"true\"]:has(+ &[data-selected=\"true\"]) {\n border-bottom-color: transparent;\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { LoadingCell } from \"./LoadingCell.js\";\nimport rowStyles from \"./TableRow.module.css\";\nexport function LoadingRow({\n headers,\n columnCount,\n translateY,\n rowHeight = 40,\n columnWidth = 80\n}) {\n return /*#__PURE__*/React.createElement(\"tr\", {\n className: rowStyles.osdkTableRow,\n style: {\n height: `${rowHeight}px`,\n transform: `translateY(${translateY}px)`\n }\n }, /*#__PURE__*/React.createElement(React.Fragment, null, Array.from({\n length: columnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(LoadingCell, {\n key: `loading-cell-${index}`,\n width: width\n });\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableBody {\n display: grid;\n position: relative;\n width: max-content;\n min-width: 100%;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.backdrop {\n position: fixed;\n inset: 0;\n background-color: var(--osdk-dialog-backdrop-bg);\n z-index: var(--osdk-surface-z-index-1);\n}\n\n.popup {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n min-width: var(--osdk-dialog-min-width);\n max-width: var(--osdk-dialog-max-width);\n min-height: var(--osdk-dialog-min-height);\n max-height: var(--osdk-dialog-max-height);\n background-color: var(--osdk-dialog-bg);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-dialog-shadow);\n z-index: var(--osdk-surface-z-index-2);\n display: flex;\n flex-direction: column;\n\n &:focus {\n outline: none;\n }\n}\n\n.header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--osdk-dialog-header-padding);\n border-bottom: var(--osdk-surface-border);\n}\n\n.title {\n font-size: var(--osdk-dialog-title-font-size);\n font-weight: var(--osdk-dialog-title-font-weight);\n}\n\n.body {\n display: flex;\n padding: var(--osdk-dialog-body-padding);\n overflow-y: auto;\n flex: 1;\n}\n\n.footer {\n display: flex;\n justify-content: flex-end;\n gap: calc(var(--osdk-surface-spacing) * 2);\n padding: var(--osdk-dialog-footer-padding);\n border-top: var(--osdk-surface-border);\n}\n\n.closeButton {\n background: none;\n border: none;\n padding: calc(var(--osdk-surface-spacing) * 0.5);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.closeIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dialog as BaseUIDialog } from \"@base-ui/react/dialog\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Dialog.module.css\";\nexport function Dialog({\n isOpen,\n onOpenChange,\n title,\n children,\n footer,\n className\n}) {\n return /*#__PURE__*/React.createElement(BaseUIDialog.Root, {\n open: isOpen,\n onOpenChange: onOpenChange\n }, /*#__PURE__*/React.createElement(BaseUIDialog.Portal, null, /*#__PURE__*/React.createElement(BaseUIDialog.Backdrop, {\n className: styles.backdrop\n }), /*#__PURE__*/React.createElement(BaseUIDialog.Popup, {\n className: classnames(styles.popup, className)\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.header\n }, /*#__PURE__*/React.createElement(BaseUIDialog.Title, {\n className: styles.title\n }, title), /*#__PURE__*/React.createElement(BaseUIDialog.Close, {\n className: styles.closeButton,\n \"aria-label\": \"Close dialog\"\n }, /*#__PURE__*/React.createElement(Cross, {\n className: styles.closeIcon\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.body\n }, children), footer != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.footer\n }, footer))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.draggableListContainer {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-draggable-item-gap);\n overflow-y: auto;\n}\n\n.draggableItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-draggable-item-gap);\n padding: var(--osdk-draggable-item-padding);\n background-color: var(--osdk-draggable-item-bg);\n border: var(--osdk-draggable-item-border);\n border-radius: var(--osdk-draggable-item-border-radius);\n width: 100%;\n touch-action: none;\n user-select: none;\n}\n\n.draggableItem[data-dragging=\"true\"] {\n opacity: 0.5;\n}\n\n.dragHandle {\n display: flex;\n cursor: grab;\n color: var(--osdk-draggable-item-drag-icon-color);\n\n &:hover {\n color: var(--osdk-draggable-item-drag-icon-color-hover);\n }\n\n &:active {\n cursor: grabbing;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.itemContent {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.removeButton {\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--osdk-draggable-item-drag-icon-color);\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n color: var(--osdk-typography-color-danger-rest);\n }\n\n &:active {\n color: var(--osdk-typography-color-danger-rest);\n background: oklch(\n from var(--osdk-surface-background-color-danger-hover) l c h / 0.2\n );\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { DragHandleVertical, SmallCross, Trash } from \"@blueprintjs/icons\";\nimport { closestCenter, DndContext as BaseDndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport styles from \"./DraggableList.module.css\";\nfunction DraggableListItem({\n item,\n onRemove,\n removeIconVariant = \"trash\",\n renderContent\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id: item.id\n });\n const style = {\n transform: CSS.Transform.toString(transform),\n transition\n };\n const handleRemove = useCallback(() => {\n onRemove?.(item.id);\n }, [item.id, onRemove]);\n const RemoveIcon = removeIconVariant === \"trash\" ? Trash : SmallCross;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: setNodeRef,\n style: style,\n className: styles.draggableItem,\n \"data-dragging\": isDragging\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: styles.dragHandle,\n \"aria-label\": `Reorder ${item.label}`\n }, attributes, listeners), /*#__PURE__*/React.createElement(DragHandleVertical, {\n className: styles.icon\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.itemContent\n }, renderContent ? renderContent(item) : item.label), onRemove && /*#__PURE__*/React.createElement(Button, {\n className: styles.removeButton,\n onClick: handleRemove,\n \"aria-label\": `Remove ${item.label}`\n }, /*#__PURE__*/React.createElement(RemoveIcon, {\n className: styles.icon\n })));\n}\nexport function DraggableList({\n items,\n onReorder,\n onRemove,\n removeIconVariant = \"cross\",\n renderContent,\n emptyMessage,\n className\n}) {\n const itemIds = useMemo(() => items.map(item => item.id), [items]);\n const sensors = useSensors(useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5\n }\n }), useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n }));\n const handleDragEnd = useCallback(event => {\n const {\n active,\n over\n } = event;\n if (over && active.id !== over.id) {\n const oldIndex = items.findIndex(item => item.id === active.id);\n const newIndex = items.findIndex(item => item.id === over.id);\n onReorder(oldIndex, newIndex);\n }\n }, [items, onReorder]);\n const containerRef = useRef(null);\n useKeyboardEvents(containerRef);\n\n // TODO: Revert when @types/react is fixed\n const DndContext = BaseDndContext;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(styles.draggableListContainer, className)\n }, /*#__PURE__*/React.createElement(DndContext, {\n sensors: sensors,\n collisionDetection: closestCenter,\n onDragEnd: handleDragEnd\n }, /*#__PURE__*/React.createElement(SortableContext, {\n items: itemIds,\n strategy: verticalListSortingStrategy\n }, items.map(item => /*#__PURE__*/React.createElement(DraggableListItem, {\n key: item.id,\n item: item,\n onRemove: onRemove,\n removeIconVariant: removeIconVariant,\n renderContent: renderContent\n })))), items.length === 0 && emptyMessage && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, emptyMessage));\n}\nconst useKeyboardEvents = containerRef => {\n // Base UI's DialogPopup calls stopPropagation on arrow key events, which\n // prevents them from reaching @dnd-kit's document-level KeyboardSensor\n // listener. We use a native capture-phase listener to intercept arrow keys\n // before the dialog can swallow them, and re-dispatch them on the document\n // so @dnd-kit can process keyboard-driven reordering.\n useEffect(() => {\n const el = containerRef.current;\n if (el == null) {\n return;\n }\n const ARROW_KEYS = new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\n function handleCapture(event) {\n if (!ARROW_KEYS.has(event.key)) {\n return;\n }\n\n // Only intercept when a drag is active (an item has [data-dragging=\"true\"])\n if (el.querySelector(\"[data-dragging=\\\"true\\\"]\") == null) {\n return;\n }\n event.stopPropagation();\n document.dispatchEvent(new KeyboardEvent(\"keydown\", {\n key: event.key,\n code: event.code,\n bubbles: true\n }));\n }\n el.addEventListener(\"keydown\", handleCapture, true);\n return () => el.removeEventListener(\"keydown\", handleCapture, true);\n }, [containerRef]);\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.searchBar {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 1.5);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n\n &:focus-within {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.searchIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: var(--osdk-typography-color-muted);\n pointer-events: none;\n flex-shrink: 0;\n}\n\n.searchInput {\n border: none;\n width: 100%;\n padding: var(--osdk-surface-spacing) 0;\n font-size: var(--osdk-typography-size-body-medium);\n background: transparent;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: var(--osdk-typography-color-muted);\n }\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Search } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./SearchBar.module.css\";\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search\",\n \"aria-label\": ariaLabel,\n className,\n onKeyDown\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.searchBar, className)\n }, /*#__PURE__*/React.createElement(Search, {\n className: styles.searchIcon\n }), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n placeholder: placeholder,\n \"aria-label\": ariaLabel ?? placeholder,\n value: value,\n onChange: onChange,\n className: styles.searchInput,\n onKeyDown: onKeyDown\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n/* Override dialog styling */\n.columnConfigDialog {\n --osdk-dialog-min-width: var(--osdk-table-column-config-dialog-min-width);\n --osdk-dialog-min-height: var(--osdk-table-column-config-dialog-min-height);\n --osdk-dialog-body-padding: 0;\n}\n\n.dialogLayout {\n display: flex;\n flex-direction: row;\n gap: 0;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.visibleColumnsContainer {\n flex: 1.5;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5);\n background: var(--osdk-table-column-config-visible-columns-bg);\n border-right: 1px solid var(--osdk-surface-border-color-default);\n}\n\n.availableColumnsContainer {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: calc(var(--osdk-surface-spacing) * 5)\n calc(var(--osdk-surface-spacing) * 3);\n}\n\n.sectionHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--osdk-surface-spacing) * 5);\n}\n\n.sectionTitle {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: var(--osdk-typography-weight-bold);\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n gap: var(--osdk-surface-spacing);\n}\n\n.countTag {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: var(--osdk-custom-color-gray-3);\n padding: calc(var(--osdk-surface-spacing) / 2)\n calc(var(--osdk-surface-spacing) * 1.5);\n border-radius: var(--osdk-surface-border-radius);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-default);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.sectionHint {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n.columnList {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.searchContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n flex-shrink: 0;\n}\n\n.propertiesList {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.categoryHeader {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n margin: 0;\n gap: calc(var(--osdk-surface-spacing) * 3);\n flex-shrink: 0;\n}\n\n.categoryTrigger {\n display: flex;\n align-items: center;\n flex: 1;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.categoryTitle {\n flex: 1;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n font-weight: var(--osdk-typography-weight-bold);\n text-align: left;\n}\n\n.categoryCount {\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-small);\n margin-left: var(--osdk-surface-spacing);\n}\n\n.caretIcon {\n color: var(--osdk-typography-color-muted);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.categoryTrigger[data-panel-open] .caretIcon {\n transform: rotate(180deg);\n}\n\n.checkbox {\n width: var(--osdk-checkbox-icon-size);\n height: var(--osdk-checkbox-icon-size);\n}\n\n.propertyList {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.propertyItem {\n display: flex;\n align-items: center;\n flex-direction: row;\n width: 100%;\n gap: calc(var(--osdk-surface-spacing) * 3);\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n}\n\n.checkboxIndicator {\n color: var(--osdk-intent-primary-foreground);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.propertyName {\n text-align: left;\n flex: 1;\n font-size: var(--osdk-typography-size-body-medium);\n font-weight: 400;\n color: var(--osdk-typography-color-default-rest);\n padding: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n background: none;\n border: none;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.infoIcon {\n color: var(--osdk-typography-color-muted);\n flex-shrink: 0;\n width: calc(var(--osdk-checkbox-icon-size) * 0.75);\n height: calc(var(--osdk-checkbox-icon-size) * 0.75);\n}\n\n.emptyState {\n padding: calc(var(--osdk-surface-spacing) * 5);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Collapsible } from \"@base-ui/react/collapsible\";\nimport { CaretDown, Cog, SmallInfoSign } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Checkbox } from \"../base-components/checkbox/Checkbox.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./ColumnConfigDialog.module.css\";\nexport function ColumnConfigDialog({\n isOpen,\n onClose,\n columnOptions,\n currentVisibility,\n currentColumnOrder,\n onApply,\n isValidConfig\n}) {\n const [visibleColumns, setVisibleColumns] = useState([]);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const allColumns = useMemo(() => {\n return columnOptions.map(opt => {\n const isVisible = currentVisibility ? currentVisibility[opt.id] : false;\n return {\n id: opt.id,\n label: opt.name,\n isVisible\n };\n });\n }, [columnOptions, currentVisibility]);\n\n // Sync local state with prop when dialog is opened\n useEffect(() => {\n if (isOpen) {\n const visibleCols = allColumns.filter(col => col.isVisible);\n\n // Sort by current column order if available\n if (!!currentColumnOrder?.length) {\n visibleCols.sort((a, b) => {\n const indexA = currentColumnOrder.indexOf(a.id);\n const indexB = currentColumnOrder.indexOf(b.id);\n // If not in order array, put at end\n const orderA = indexA === -1 ? Infinity : indexA;\n const orderB = indexB === -1 ? Infinity : indexB;\n return orderA - orderB;\n });\n }\n setVisibleColumns(visibleCols);\n setSearchQuery(\"\");\n }\n }, [isOpen, allColumns, currentColumnOrder]);\n const handleApply = useCallback(() => {\n onApply(getColumnConfig(allColumns, visibleColumns));\n onClose();\n }, [allColumns, visibleColumns, onApply, onClose]);\n\n // If no condition provided, default to valid\n const isValid = isValidConfig ? isValidConfig(getColumnConfig(allColumns, visibleColumns)) : true;\n const isApplyDisabled = visibleColumns.length === 0 || !isValid;\n const handleReorderColumns = useCallback((fromIndex, toIndex) => {\n setVisibleColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleRemoveColumn = useCallback(columnId => {\n setVisibleColumns(prev => prev.filter(col => col.id !== columnId));\n }, []);\n const handleToggleColumn = useCallback(column => {\n setVisibleColumns(prev => {\n const isCurrentlyVisible = prev.some(col => col.id === column.id);\n if (isCurrentlyVisible) {\n return prev.filter(col => col.id !== column.id);\n } else {\n return [...prev, column];\n }\n });\n }, []);\n const handleSearchChange = useCallback(event => {\n setSearchQuery(event.target.value);\n }, []);\n const handleSelectAll = useCallback(columns => {\n setVisibleColumns(prev => {\n const allSelected = columns.every(col => prev.some(v => v.id === col.id));\n if (allSelected) {\n // Deselect all filtered columns\n return prev.filter(v => !columns.some(col => col.id === v.id));\n } else {\n // Select all filtered columns that aren't already selected\n const newColumns = columns.filter(col => !prev.some(v => v.id === col.id));\n return [...prev, ...newColumns];\n }\n });\n }, []);\n const filteredAvailableColumns = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n if (!query) {\n return allColumns;\n }\n return allColumns.filter(col => (col.label?.toLowerCase().includes(query) ?? false) || col.id.toLowerCase().includes(query));\n }, [allColumns, searchQuery]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply,\n disabled: isApplyDisabled\n }, \"Apply\")), [onClose, handleApply, isApplyDisabled]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer,\n className: styles.columnConfigDialog\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.dialogLayout\n }, /*#__PURE__*/React.createElement(VisibleColumnsList, {\n columns: visibleColumns,\n onReorder: handleReorderColumns,\n onRemove: handleRemoveColumn\n }), /*#__PURE__*/React.createElement(AvailableColumnsList, {\n visibleColumns: visibleColumns,\n searchQuery: searchQuery,\n onSearchChange: handleSearchChange,\n onToggleColumn: handleToggleColumn,\n onSelectAll: handleSelectAll,\n filteredColumns: filteredAvailableColumns\n })));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Configure Table Columns\");\nconst getColumnConfig = (allColumns, visibleColumns) => {\n const hiddenColumns = allColumns.filter(col => !visibleColumns.some(v => v.id === col.id));\n return [...visibleColumns.map(col => ({\n columnId: col.id,\n isVisible: true\n })), ...hiddenColumns.map(col => ({\n columnId: col.id,\n isVisible: false\n }))];\n};\nfunction VisibleColumnsList({\n columns,\n onReorder,\n onRemove\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.visibleColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionTitle\n }, /*#__PURE__*/React.createElement(\"span\", null, \"Visible Columns\"), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.countTag\n }, columns.length)), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sectionHint\n }, \"Drag to reorder\")), /*#__PURE__*/React.createElement(DraggableList, {\n items: columns,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"trash\",\n emptyMessage: \"No visible columns\",\n className: styles.columnList\n }));\n}\nfunction AvailableColumnsList({\n visibleColumns,\n searchQuery,\n onSearchChange,\n onToggleColumn,\n onSelectAll,\n filteredColumns\n}) {\n const selectedCount = visibleColumns.length;\n const totalCount = filteredColumns.length;\n const allFilteredSelected = filteredColumns.every(col => visibleColumns.some(v => v.id === col.id));\n const someFilteredSelected = filteredColumns.some(col => visibleColumns.some(v => v.id === col.id));\n const handleSelectAllClick = useCallback(() => {\n onSelectAll(filteredColumns);\n }, [filteredColumns, onSelectAll]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.availableColumnsContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.sectionHeader, styles.sectionTitle)\n }, \"Add or Remove Columns\"), /*#__PURE__*/React.createElement(SearchBar, {\n value: searchQuery,\n onChange: onSearchChange,\n placeholder: \"Search...\",\n \"aria-label\": \"Search available columns\",\n className: styles.searchContainer\n }), /*#__PURE__*/React.createElement(Collapsible.Root, {\n defaultOpen: true,\n className: styles.propertiesList\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.categoryHeader\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: allFilteredSelected,\n indeterminate: someFilteredSelected && !allFilteredSelected,\n onCheckedChange: handleSelectAllClick,\n className: styles.checkbox\n }), /*#__PURE__*/React.createElement(Collapsible.Trigger, {\n className: styles.categoryTrigger\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.categoryTitle\n }, \"All Columns\"), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.categoryCount\n }, selectedCount, \"/\", totalCount), /*#__PURE__*/React.createElement(CaretDown, {\n className: styles.caretIcon\n }))), /*#__PURE__*/React.createElement(Collapsible.Panel, {\n className: styles.propertyList\n }, filteredColumns.length === 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, \"No matching columns found\") : filteredColumns.map(column => /*#__PURE__*/React.createElement(PropertyItem, {\n key: column.id,\n column: column,\n isSelected: visibleColumns.some(v => v.id === column.id),\n onToggle: onToggleColumn\n })))));\n}\nfunction PropertyItem({\n column,\n isSelected,\n onToggle,\n showInfoIcon = false\n}) {\n const handleClick = useCallback(() => {\n onToggle(column);\n }, [onToggle, column]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.propertyItem\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: isSelected,\n onCheckedChange: handleClick,\n className: styles.checkbox\n }), /*#__PURE__*/React.createElement(Button, {\n onClick: handleClick,\n className: styles.propertyName\n }, column.label), showInfoIcon && /*#__PURE__*/React.createElement(SmallInfoSign, {\n className: styles.infoIcon\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.title {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.sortColumnsList {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-surface-spacing);\n flex: 1;\n justify-content: space-between;\n overflow-x: hidden;\n}\n\n.sortableList {\n flex: 1;\n}\n\n.selectedColumnsContainer {\n margin-bottom: calc(var(--osdk-surface-spacing) * 2);\n}\n\n.sortColumnItem {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n width: 100%;\n}\n\n.sortColumnName {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.sortDirectionButton {\n flex-shrink: 0;\n background: none;\n border: none;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--osdk-surface-border-radius);\n\n &:hover {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.sortIcon {\n color: var(--osdk-typography-color-muted);\n}\n\n.addColumnButton {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n width: 100%;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background-color: var(--osdk-button-secondary-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n cursor: pointer;\n color: var(--osdk-button-secondary-color);\n margin-top: calc(var(--osdk-surface-spacing) * 2);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.addIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n color: currentColor;\n}\n\n.addColumnText {\n flex: 1;\n text-align: left;\n}\n\n.menuPositioner {\n z-index: var(--osdk-surface-z-index-2);\n}\n\n.dropdownMenu {\n background-color: var(--osdk-surface-background-color-default-rest);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n max-height: calc(var(--osdk-dialog-max-height) * 0.5);\n overflow-y: auto;\n width: var(--anchor-width);\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.menuSearchContainer {\n border: none;\n border-bottom: var(--osdk-surface-border);\n border-radius: 0;\n position: sticky;\n top: 0;\n background-color: var(--osdk-surface-background-color-default-rest);\n}\n\n.menuEmptyState {\n padding: calc(var(--osdk-surface-spacing) * 3);\n text-align: center;\n color: var(--osdk-typography-color-muted);\n font-size: var(--osdk-typography-size-body-medium);\n}\n\n.dropdownItem {\n display: block;\n width: 100%;\n text-align: left;\n padding: calc(var(--osdk-surface-spacing) * 2)\n calc(var(--osdk-surface-spacing) * 3);\n background: none;\n border: none;\n cursor: pointer;\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-default-rest);\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\nimport { DraggableList } from \"../base-components/draggable-list/DraggableList.js\";\nexport function SortableItemsList({\n items,\n onReorder,\n onRemove,\n className\n}) {\n const renderContent = useCallback(item => item.content, []);\n return /*#__PURE__*/React.createElement(DraggableList, {\n items: items,\n onReorder: onReorder,\n onRemove: onRemove,\n removeIconVariant: \"cross\",\n renderContent: renderContent,\n className: className\n });\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport { Add, CaretDown, Cog, SortAlphabetical, SortAlphabeticalDesc } from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { SortableItemsList } from \"./SortableItemsList.js\";\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions\n}) {\n const [selectedSortColumns, setSelectedSortColumns] = useState([]);\n const [menuSearchQuery, setMenuSearchQuery] = useState(\"\");\n\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find(col => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\"\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n const handleAddColumn = useCallback(column => {\n setSelectedSortColumns(prev => [...prev, {\n ...column,\n direction: \"asc\"\n }]);\n }, []);\n const handleRemoveSortColumn = useCallback(id => {\n setSelectedSortColumns(prev => prev.filter(item => item.id !== id));\n }, []);\n const handleReorderSortColumns = useCallback((fromIndex, toIndex) => {\n setSelectedSortColumns(items => arrayMove(items, fromIndex, toIndex));\n }, []);\n const handleToggleSortDirection = useCallback(id => {\n setSelectedSortColumns(prev => prev.map(item => item.id === id ? {\n ...item,\n direction: item.direction === \"asc\" ? \"desc\" : \"asc\"\n } : item));\n }, []);\n const handleApply = useCallback(() => {\n const sortingState = selectedSortColumns.map(col => ({\n id: col.id,\n desc: col.direction === \"desc\"\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n const availableColumns = useMemo(() => columnOptions.filter(col => col.canSort && !selectedSortColumns.some(selected => selected.id === col.id)), [columnOptions, selectedSortColumns]);\n const filteredAvailableColumns = useMemo(() => {\n const query = menuSearchQuery.toLowerCase().trim();\n if (!query) {\n return availableColumns;\n }\n return availableColumns.filter(col => col.name.toLowerCase().includes(query));\n }, [availableColumns, menuSearchQuery]);\n const handleMenuSearchChange = useCallback(event => {\n setMenuSearchQuery(event.target.value);\n }, []);\n const handleMenuOpenChange = useCallback(open => {\n if (open) {\n setMenuSearchQuery(\"\");\n }\n }, []);\n const sortableItems = useMemo(() => {\n return selectedSortColumns.map(item => ({\n id: item.id,\n label: item.name,\n content: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnItem\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(styles.sortColumnName, styles.truncate)\n }, item.name), /*#__PURE__*/React.createElement(Button, {\n className: styles.sortDirectionButton,\n onClick: () => handleToggleSortDirection(item.id),\n \"aria-label\": `Toggle sort direction for ${item.name}`\n }, item.direction === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.sortIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.sortIcon\n })))\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {\n onClick: onClose\n }, \"Cancel\"), /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleApply\n }, \"Apply\")), [handleApply, onClose]);\n return /*#__PURE__*/React.createElement(Dialog, {\n isOpen: isOpen,\n onOpenChange: onClose,\n title: DialogTitle,\n footer: footer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sortColumnsList\n }, /*#__PURE__*/React.createElement(SortableItemsList, {\n items: sortableItems,\n onReorder: handleReorderSortColumns,\n onRemove: handleRemoveSortColumn,\n className: styles.sortableList\n }), /*#__PURE__*/React.createElement(Menu.Root, {\n onOpenChange: handleMenuOpenChange\n }, /*#__PURE__*/React.createElement(Menu.Trigger, {\n className: styles.addColumnButton,\n disabled: availableColumns.length === 0,\n \"aria-label\": \"Add column to sort\"\n }, /*#__PURE__*/React.createElement(Add, {\n className: styles.addIcon\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.addColumnText\n }, \"Add Column to Sort\"), /*#__PURE__*/React.createElement(CaretDown, {\n color: \"currentColor\"\n })), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {\n className: styles.menuPositioner,\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.dropdownMenu\n }, /*#__PURE__*/React.createElement(SearchBar, {\n value: menuSearchQuery,\n onChange: handleMenuSearchChange,\n placeholder: \"Search columns\",\n \"aria-label\": \"Search columns to sort\",\n className: styles.menuSearchContainer,\n onKeyDown: e => e.stopPropagation()\n }), filteredAvailableColumns.map(column => /*#__PURE__*/React.createElement(AvailableColumnMenuItem, {\n key: column.id,\n column: column,\n onAddColumn: handleAddColumn\n })), filteredAvailableColumns.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.menuEmptyState\n }, \"No matching columns\")))))));\n}\nconst DialogTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: styles.title\n}, /*#__PURE__*/React.createElement(Cog, null), \"Sort on Multiple Columns\");\nfunction AvailableColumnMenuItem({\n column,\n onAddColumn\n}) {\n const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);\n return /*#__PURE__*/React.createElement(Menu.Item, {\n className: classNames(styles.dropdownItem, styles.truncate),\n onClick: onClick\n }, column.name);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableHeader {\n display: grid;\n position: sticky;\n top: 0;\n width: max-content;\n min-width: 100%;\n height: var(--osdk-table-header-height);\n z-index: var(--osdk-surface-z-index-1);\n background-color: var(--osdk-table-header-bg);\n}\n\n.osdkTableHeader[data-resizing=\"true\"] {\n cursor: col-resize;\n user-select: none;\n}\n\n.osdkTableHeaderRow {\n display: flex;\n width: max-content;\n min-width: 100%;\n border-bottom: var(--osdk-table-border);\n}\n\n.osdkTableHeaderCell {\n display: flex;\n align-items: center;\n text-align: left;\n position: relative;\n padding: var(--osdk-table-cell-padding);\n font-weight: var(--osdk-table-header-fontWeight);\n font-size: var(--osdk-table-header-fontSize);\n color: var(--osdk-table-header-color);\n border-top: var(--osdk-table-border);\n border-right: var(--osdk-table-header-divider);\n background-color: inherit;\n\n &:first-child {\n border-left: var(--osdk-table-border);\n }\n\n &:last-child {\n border-right: var(--osdk-table-border);\n }\n}\n\n.osdkTableHeaderCell[data-pinned=\"left\"],\n.osdkTableHeaderCell[data-pinned=\"right\"] {\n position: sticky;\n z-index: var(--osdk-surface-z-index-2);\n background-color: var(--osdk-table-header-bg);\n}\n\n/* Last left-pinned column - no left-pinned siblings after it */\n.osdkTableHeaderCell[data-pinned=\"left\"]:not(:has(~ [data-pinned=\"left\"])) {\n border-right: var(--osdk-table-pinned-column-border);\n}\n\n/* First right-pinned column - no right-pinned siblings before it */\n.osdkTableHeaderCell[data-pinned=\"right\"]:not(\n :has(~ [data-pinned=\"right\"]):nth-child(n + 2)\n ) {\n border-left: var(--osdk-table-pinned-column-border);\n}\n\n.osdkTableHeaderCell:has([role=\"checkbox\"]) {\n justify-content: center;\n}\n\n.osdkTableHeaderResizer {\n background: none;\n cursor: col-resize;\n height: 100%;\n position: absolute;\n right: calc(-1 * var(--osdk-table-border-width));\n top: 0;\n touch-action: none;\n width: 3px;\n z-index: var(--osdk-surface-z-index-2);\n\n &:hover {\n background: var(--osdk-table-resizer-color-hover);\n }\n\n &:active {\n background: var(--osdk-table-resizer-color-active);\n }\n}\n\n.osdkLoadingHeaderCell {\n height: var(--osdk-table-header-fontSize);\n flex: 1;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkHeaderContent {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.osdkHeaderContent:has([role=\"checkbox\"]) {\n display: flex;\n justify-content: center;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { flexRender } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport styles from \"./TableHeaderContent.module.css\";\nexport function TableHeaderContent({\n header\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkHeaderContent\n }, flexRender(header.column.columnDef.header, header.getContext()));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCenterContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.osdkContentGap {\n display: flex;\n gap: var(--osdk-surface-spacing);\n}\n\n.osdkHeaderContainer {\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n align-self: stretch;\n}\n\n.osdkHeaderContentLeft {\n min-width: 0;\n flex-shrink: 1;\n}\n\n.osdkHeaderContentRight {\n flex-shrink: 0;\n}\n\n.osdkHeaderText {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n line-clamp: 3;\n overflow: hidden;\n text-overflow: ellipsis;\n flex-grow: 1;\n}\n\n.osdkHeaderPopoverTrigger {\n padding: var(--osdk-table-header-menu-padding);\n flex-shrink: 0;\n flex-grow: 0;\n background-color: var(--osdk-table-header-menu-bg);\n border: var(--osdk-table-header-menu-border);\n border-radius: var(--osdk-surface-border-radius);\n color: var(--osdk-table-header-menu-color);\n cursor: pointer;\n user-select: none;\n\n &:hover {\n background-color: var(--osdk-table-header-menu-bg-hover);\n }\n\n &[data-popup-open] {\n background-color: var(--osdk-table-header-menu-bg-active);\n color: var(--osdk-table-header-menu-color-active);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderIcon {\n width: var(--osdk-iconography-size-small);\n height: var(--osdk-iconography-size-small);\n}\n\n.osdkHeaderPopup {\n box-sizing: border-box;\n padding: var(--osdk-surface-spacing);\n border-radius: var(--osdk-surface-border-radius);\n border: var(--osdk-surface-border);\n background-color: var(--osdk-surface-background-color-default-rest);\n color: var(--osdk-typography-color-default-rest);\n box-shadow: var(--osdk-surface-shadow-2);\n font-size: var(--osdk-typography-size-body-medium);\n\n &:focus {\n outline: none;\n }\n}\n\n.osdkHeaderMenuItem {\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing);\n cursor: pointer;\n\n &:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n border-radius: var(--osdk-surface-border-radius);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n.osdkHeaderMenuItem .osdkHeaderActiveMenuItem {\n background-color: var(--osdk-intent-primary-rest);\n color: var(--osdk-intent-primary-foreground);\n\n &:hover {\n background-color: var(--osdk-intent-primary-hover);\n }\n\n &:active {\n background-color: var(--osdk-intent-primary-active);\n }\n}\n\n.sortIndex {\n font-size: var(--osdk-typography-size-body-x-small);\n margin-left: var(--osdk-surface-spacing);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Menu } from \"@base-ui/react/menu\";\nimport { ChevronDown, Pin, Remove, Settings, Sort, SortAlphabetical, SortAlphabeticalDesc, Unpin, VerticalDistribution } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useState } from \"react\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport styles from \"./TableHeaderWithPopover.module.css\";\nfunction HeaderMenuItem({\n onClick,\n icon: Icon,\n label,\n active = false\n}) {\n return /*#__PURE__*/React.createElement(Menu.Item, {\n closeOnClick: true,\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderMenuItem, active && styles.osdkHeaderActiveMenuItem),\n onClick: onClick\n }, /*#__PURE__*/React.createElement(Icon, {\n className: styles.osdkHeaderIcon,\n color: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"span\", null, label));\n}\nexport function TableHeaderWithPopover({\n header,\n table,\n isColumnPinned,\n onResetSize,\n columnOptions,\n featureFlags,\n onOpenColumnConfig,\n onOpenMultiSort\n}) {\n const {\n showSortingItems = false,\n showPinningItems = false,\n showResizeItem = false,\n showConfigItem = false\n } = featureFlags ?? {};\n const {\n setColumnPinning,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const [isOpen, setIsOpen] = useState(false);\n const handlePinLeft = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: [...(prev.left || []), header.column.id],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleUnpin = useCallback(() => {\n setColumnPinning(prev => {\n return {\n left: prev.left?.filter(id => id !== header.column.id) || [],\n right: prev.right?.filter(id => id !== header.column.id) || []\n };\n });\n }, [header.column.id, setColumnPinning]);\n const handleSortAscending = useCallback(() => {\n header.column.toggleSorting(false);\n setSorting?.([{\n id: header.column.id,\n desc: false\n }]);\n }, [header.column, setSorting]);\n const handleSortDescending = useCallback(() => {\n header.column.toggleSorting(true);\n setSorting?.([{\n id: header.column.id,\n desc: true\n }]);\n }, [header.column, setSorting]);\n const handleClearAllSorts = useCallback(() => {\n header.column.clearSorting();\n setSorting?.([]);\n }, [header.column, setSorting]);\n const handleResetSize = useCallback(() => {\n header.column.resetSize();\n if (onResetSize) {\n onResetSize();\n }\n }, [header.column, onResetSize]);\n const handleInteraction = useCallback(e => {\n e.preventDefault();\n setIsOpen(prev => !prev);\n }, []);\n const handleOpenColumnConfig = useCallback(() => {\n onOpenColumnConfig?.();\n setIsOpen(false);\n }, [onOpenColumnConfig]);\n const handleOpenMultiSort = useCallback(() => {\n onOpenMultiSort?.();\n setIsOpen(false);\n }, [onOpenMultiSort]);\n const isSorted = header.column.getIsSorted();\n const isSortable = header.column.getCanSort();\n const sortIndex = currentSorting?.findIndex(s => s.id === header.column.id) ?? -1;\n const hasAnyMenuItems = showPinningItems || showSortingItems && isSortable || showResizeItem || showConfigItem;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Menu.Root, {\n open: isOpen,\n onOpenChange: setIsOpen\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContainer),\n onContextMenu: handleInteraction\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentLeft)\n }, isColumnPinned && /*#__PURE__*/React.createElement(Pin, {\n className: styles.osdkHeaderIcon,\n color: \"currentColor\"\n }), /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkCenterContainer, styles.osdkContentGap, styles.osdkHeaderContentRight)\n }, isSorted && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkCenterContainer\n }, isSorted === \"asc\" ? /*#__PURE__*/React.createElement(SortAlphabetical, {\n className: styles.osdkHeaderIcon\n }) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {\n className: styles.osdkHeaderIcon\n }), currentSorting.length > 1 && sortIndex >= 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.sortIndex\n }, sortIndex + 1)), hasAnyMenuItems && /*#__PURE__*/React.createElement(Menu.Trigger, {\n \"aria-label\": `Open header menu for column with id=${header.column.id}`,\n className: classNames(styles.osdkCenterContainer, styles.osdkHeaderPopoverTrigger)\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n className: styles.osdkHeaderIcon\n }))), /*#__PURE__*/React.createElement(Menu.Portal, {\n container: document.body\n }, /*#__PURE__*/React.createElement(Menu.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Menu.Popup, {\n className: styles.osdkHeaderPopup\n }, showPinningItems && !isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handlePinLeft,\n icon: Pin,\n label: \"Pin column\"\n }), showPinningItems && isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleUnpin,\n icon: Unpin,\n label: \"Unpin Column\",\n active: true\n }), showSortingItems && isSortable && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortAscending,\n icon: SortAlphabetical,\n label: \"Sort ascending\",\n active: isSorted === \"asc\"\n }), /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleSortDescending,\n icon: SortAlphabeticalDesc,\n label: \"Sort descending\",\n active: isSorted === \"desc\"\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenMultiSort,\n icon: Sort,\n label: \"Sort on multiple columns\"\n })), showSortingItems && !!currentSorting?.length && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleClearAllSorts,\n icon: Remove,\n label: \"Clear all sorts\"\n }), showResizeItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleResetSize,\n icon: VerticalDistribution,\n label: \"Reset Column Size\"\n }), showConfigItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {\n onClick: handleOpenColumnConfig,\n icon: Settings,\n label: \"Configure Columns\"\n })))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function getColumnPinningStyles(column) {\n const isPinned = column.getIsPinned();\n return {\n columnStyles: {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n width: column.getSize()\n }\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { ColumnConfigDialog } from \"./ColumnConfigDialog.js\";\nimport { MultiColumnSortDialog } from \"./MultiColumnSortDialog.js\";\nimport styles from \"./TableHeader.module.css\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport { TableHeaderWithPopover } from \"./TableHeaderWithPopover.js\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nconst getHeaderName = (column, allHeaders) => {\n const {\n id,\n columnDef\n } = column;\n const header = allHeaders.find(header => header.id === id);\n const headerDef = columnDef.header;\n if (headerDef) {\n if (typeof headerDef === \"string\") {\n return headerDef;\n }\n // Try to get header name from the renderHeader function\n if (header) {\n const displayedHeader = headerDef(header.getContext());\n if (typeof displayedHeader === \"string\") return displayedHeader;\n }\n }\n // Fallback to use the columnName provided by user or id\n const {\n meta\n } = columnDef;\n return meta?.columnName ?? id;\n};\nexport function TableHeader({\n table,\n headerMenuFeatureFlags\n}) {\n // TODO: If value is number type, right align header\n\n const {\n setColumnOrder,\n setColumnVisibility,\n setSorting\n } = table;\n const currentSorting = table.getState().sorting;\n const currentVisibility = table.getState().columnVisibility;\n const currentColumnOrder = table.getState().columnOrder;\n const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;\n const [configDialogOpen, setConfigDialogOpen] = useState(false);\n const [multiSortDialogOpen, setMultiSortDialogOpen] = useState(false);\n const handleOpenColumnConfig = useCallback(() => {\n setConfigDialogOpen(true);\n }, []);\n const handleCloseColumnConfig = useCallback(() => {\n setConfigDialogOpen(false);\n }, []);\n const handleOpenMultiSort = useCallback(() => {\n setMultiSortDialogOpen(true);\n }, []);\n const handleCloseMultiSort = useCallback(() => {\n setMultiSortDialogOpen(false);\n }, []);\n const handleApplyMultiSort = useCallback(sortColumns => {\n setMultiSortDialogOpen(false);\n setSorting?.(sortColumns);\n }, [setSorting]);\n const handleApplyColumnConfig = useCallback(updates => {\n const newVisibilityState = {};\n for (const update of updates) {\n newVisibilityState[update.columnId] = update.isVisible;\n }\n setColumnOrder(updates.map(col => col.columnId));\n setColumnVisibility(newVisibilityState);\n }, [setColumnOrder, setColumnVisibility]);\n const columnOptions = useMemo(() => {\n const allHeaders = table.getHeaderGroups().flatMap(headerGroup => headerGroup.headers);\n return table.getAllColumns().filter(column => column.id !== SELECTION_COLUMN_ID).map(column => {\n return {\n id: column.id,\n name: getHeaderName(column, allHeaders),\n canSort: column.getCanSort()\n };\n });\n }, [table]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"thead\", {\n className: styles.osdkTableHeader,\n \"data-resizing\": isResizing\n }, table.getHeaderGroups().map(headerGroup => /*#__PURE__*/React.createElement(\"tr\", {\n key: headerGroup.id,\n className: styles.osdkTableHeaderRow\n }, headerGroup.headers.map(header => {\n const {\n columnStyles\n } = getColumnPinningStyles(header.column);\n const isColumnPinned = header.column.getIsPinned();\n const isSelectColumn = header.id === SELECTION_COLUMN_ID;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: header.id,\n \"data-pinned\": header.column.getIsPinned(),\n className: styles.osdkTableHeaderCell,\n style: columnStyles\n }, header.isPlaceholder ? null : isSelectColumn ? /*#__PURE__*/React.createElement(TableHeaderContent, {\n header: header\n }) : /*#__PURE__*/React.createElement(TableHeaderWithPopover, {\n table: table,\n header: header,\n isColumnPinned: isColumnPinned,\n columnOptions: columnOptions,\n featureFlags: headerMenuFeatureFlags,\n onOpenColumnConfig: handleOpenColumnConfig,\n onOpenMultiSort: handleOpenMultiSort\n }), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableHeaderResizer,\n onDoubleClick: () => header.column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler()\n }));\n })))), !!columnOptions?.length && /*#__PURE__*/React.createElement(ColumnConfigDialog, {\n isOpen: configDialogOpen,\n onClose: handleCloseColumnConfig,\n columnOptions: columnOptions,\n currentVisibility: currentVisibility,\n currentColumnOrder: currentColumnOrder,\n onApply: handleApplyColumnConfig\n }), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(MultiColumnSortDialog, {\n isOpen: multiSortDialogOpen,\n onClose: handleCloseMultiSort,\n columnOptions: columnOptions,\n currentSorting: currentSorting,\n onApply: handleApplyMultiSort\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport loadingStyles from \"./LoadingCell.module.css\";\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport bodyStyles from \"./TableBody.module.css\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport headerStyles from \"./TableHeader.module.css\";\nconst MIN_ROWS = 5;\nexport function LoadingStateTable({\n table,\n tableContainerRef,\n headerGroups,\n rowHeight = 40,\n columnWidth = 120\n}) {\n // If selection enabled, there will be a header for the selection column\n const enableRowSelection = table.options.enableRowSelection;\n const minHeaderCount = enableRowSelection ? 1 : 0;\n const headers = useMemo(() => headerGroups.length > 0 ? headerGroups[0].headers : [], [headerGroups]);\n const hasHeadersLoaded = headers.length > minHeaderCount;\n const headerRef = useRef(null);\n const bodyRef = useRef(null);\n const [loadingRowCount, setLoadingRowCount] = useState(MIN_ROWS);\n const [loadingColumnCount, setLoadingColumnCount] = useState(headers.length);\n // Calculate number of columns needed to fill container width\n useEffect(() => {\n if (hasHeadersLoaded) {\n setLoadingColumnCount(headers.length);\n } else {\n if (tableContainerRef.current) {\n const tableWidth = tableContainerRef.current.clientWidth;\n if (tableWidth > 0) {\n const columnsNeeded = Math.ceil(tableWidth / columnWidth);\n setLoadingColumnCount(columnsNeeded);\n }\n }\n }\n }, [columnWidth, hasHeadersLoaded, headers, tableContainerRef]);\n\n // Calculate number of rows needed to fill container height\n useEffect(() => {\n if (tableContainerRef.current) {\n const containerHeight = tableContainerRef.current.clientHeight;\n const availableHeight = containerHeight - rowHeight;\n if (availableHeight > 0) {\n const rowsNeeded = Math.ceil(availableHeight / rowHeight);\n setLoadingRowCount(Math.max(rowsNeeded, MIN_ROWS));\n }\n }\n }, [tableContainerRef, rowHeight]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasHeadersLoaded ? /*#__PURE__*/React.createElement(TableHeader, {\n table: table\n }) : /*#__PURE__*/React.createElement(\"thead\", {\n className: headerStyles.osdkTableHeader,\n ref: headerRef\n }, /*#__PURE__*/React.createElement(\"tr\", {\n className: headerStyles.osdkTableHeaderRow\n }, Array.from({\n length: loadingColumnCount\n }).map((_, index) => {\n const width = headers.length > index ? headers[index].getSize() : columnWidth;\n return /*#__PURE__*/React.createElement(\"th\", {\n key: `loading-header-${index}`,\n className: headerStyles.osdkTableHeaderCell,\n style: {\n width\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(headerStyles.osdkLoadingHeaderCell, loadingStyles.osdkCellSkeleton)\n }));\n }))), /*#__PURE__*/React.createElement(\"tbody\", {\n className: bodyStyles.osdkTableBody,\n ref: bodyRef\n }, Array.from({\n length: loadingRowCount\n }).map((_, index) => /*#__PURE__*/React.createElement(LoadingRow, {\n key: `skeleton-${index}`,\n columnCount: loadingColumnCount,\n headers: headers,\n translateY: rowHeight * index,\n rowHeight: rowHeight,\n columnWidth: columnWidth\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.container {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.message {\n padding: calc(var(--osdk-surface-spacing) * 5);\n color: var(--osdk-typography-color-muted);\n font-style: italic;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport styles from \"./NonIdealState.module.css\";\nexport function NonIdealState({\n message\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.container\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.message\n }, message));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkTableWrapper {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: relative;\n}\n\n.osdkTableContainer {\n flex: 1;\n min-height: 0;\n overflow: auto;\n position: relative;\n}\n\n.osdkTableContainer table {\n border-collapse: collapse;\n display: grid;\n table-layout: fixed;\n width: max-content;\n min-width: 100%;\n}\n\n.submitButtonContainer {\n background-color: var(--osdk-surface-background-color-default-rest);\n border-top: var(--osdk-table-border);\n padding: var(--osdk-table-button-container-padding);\n display: flex;\n justify-content: flex-end;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkCellContextMenu {\n position: fixed;\n z-index: var(--osdk-surface-z-index-2);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./CellContextMenu.module.css\";\nexport function CellContextMenu({\n cell,\n position,\n onClose,\n renderContent\n}) {\n const ref = useRef(null);\n useEffect(() => {\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClose();\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: styles.osdkCellContextMenu,\n style: {\n left: position.left,\n top: position.top,\n minWidth: position.width\n }\n }, renderContent(cell.row.original, cell)), document.body);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nexport const useCellContextMenu = ({\n tdRef\n}) => {\n const [popoverPosition, setPopoverPosition] = useState(null);\n const [isContextMenuOpen, setIsContextMenuOpen] = useState(false);\n const handleOpenContextMenu = useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n if (tdRef.current) {\n const rect = tdRef.current.getBoundingClientRect();\n const position = {\n left: rect.left,\n top: rect.bottom,\n width: rect.width\n };\n setPopoverPosition(position);\n setIsContextMenuOpen(true);\n }\n }, [tdRef]);\n const handleCloseContextMenu = useCallback(() => {\n setIsContextMenuOpen(false);\n setPopoverPosition(null);\n }, []);\n return {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n };\n};","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { flexRender } from \"@tanstack/react-table\";\nimport React, { useRef } from \"react\";\nimport { CellContextMenu } from \"./CellContextMenu.js\";\nimport { useCellContextMenu } from \"./hooks/useCellContextMenu.js\";\nimport styles from \"./TableCell.module.css\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nexport function TableCell({\n cell,\n renderCellContextMenu\n}) {\n const tdRef = useRef(null);\n const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;\n const {\n isContextMenuOpen,\n handleOpenContextMenu,\n handleCloseContextMenu,\n popoverPosition\n } = useCellContextMenu({\n tdRef\n });\n const shouldRenderContextMenu = !isSelectColumn && isContextMenuOpen && !!popoverPosition && !!renderCellContextMenu;\n const {\n columnStyles\n } = getColumnPinningStyles(cell.column);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"td\", {\n ref: tdRef,\n \"data-pinned\": cell.column.getIsPinned(),\n className: styles.osdkTableCell,\n style: columnStyles,\n onContextMenu: handleOpenContextMenu\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTableCellContent\n }, flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /*#__PURE__*/React.createElement(CellContextMenu, {\n cell: cell,\n position: popoverPosition,\n onClose: handleCloseContextMenu,\n renderContent: renderCellContextMenu\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from \"react\";\nimport { TableCell } from \"./TableCell.js\";\nimport styles from \"./TableRow.module.css\";\nexport function TableRow({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu\n}) {\n const handleClick = useCallback(() => {\n onRowClick?.(row.original);\n }, [onRowClick, row.original]);\n return /*#__PURE__*/React.createElement(\"tr\", {\n \"data-selected\": row.getIsSelected(),\n className: styles.osdkTableRow,\n style: {\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`\n },\n onClick: handleClick\n }, row.getVisibleCells().map(cell => /*#__PURE__*/React.createElement(TableCell, {\n key: cell.id,\n cell: cell,\n renderCellContextMenu: renderCellContextMenu\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useLayoutEffect } from \"react\";\nimport { LoadingRow } from \"./LoadingRow.js\";\nimport styles from \"./TableBody.module.css\";\nimport { TableRow } from \"./TableRow.js\";\nexport function TableBody({\n rows,\n tableContainerRef,\n onRowClick,\n renderCellContextMenu,\n rowHeight = 40,\n isLoadingMore = false,\n headerGroups = []\n}) {\n // Important: Keep the row virtualizer in the lowest component possible to avoid unnecessary re-renders.\n const rowVirtualizer = useVirtualizer({\n count: rows.length,\n estimateSize: () => rowHeight,\n getScrollElement: () => tableContainerRef.current,\n overscan: 5\n });\n\n // Measure the virtualizer after the DOM has been laid out to ensure proper dimensions\n useLayoutEffect(() => {\n rowVirtualizer.measure();\n }, [rowVirtualizer, rows.length]);\n const totalSize = rowVirtualizer.getTotalSize();\n const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;\n const headers = headerGroups[0]?.headers ?? [];\n return /*#__PURE__*/React.createElement(\"tbody\", {\n className: styles.osdkTableBody,\n style: {\n height: `${bodyHeight}px`\n }\n }, rowVirtualizer.getVirtualItems().map(virtualRow => {\n const row = rows[virtualRow.index];\n return /*#__PURE__*/React.createElement(TableRow, {\n key: row.id,\n row: row,\n virtualRow: virtualRow,\n onRowClick: onRowClick,\n renderCellContextMenu: renderCellContextMenu\n });\n }), isLoadingMore && /*#__PURE__*/React.createElement(LoadingRow, {\n headers: headers,\n translateY: totalSize,\n rowHeight: rowHeight,\n columnCount: headers.length\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { LoadingStateTable } from \"./LoadingStateTable.js\";\nimport { NonIdealState } from \"./NonIdealState.js\";\nimport styles from \"./Table.module.css\";\nimport { TableBody } from \"./TableBody.js\";\nimport { TableHeader } from \"./TableHeader.js\";\nexport function BaseTable({\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags,\n editableConfig\n}) {\n const tableContainerRef = useRef(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n // Using a ref to prevent duplicate fetches from rapid scroll events while a fetch is in-flight\n const fetchingRef = useRef(false);\n useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n const fetchMoreOnEndReached = useCallback(async containerRefElement => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const {\n scrollHeight,\n scrollTop,\n clientHeight\n } = containerRefElement;\n if (scrollHeight - scrollTop - clientHeight < 100 && !isLoading && fetchNextPage != null) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n }, [fetchNextPage, isLoading, isLoadingMore]);\n const handleScroll = useCallback(async e => {\n await fetchMoreOnEndReached(e.currentTarget);\n }, [fetchMoreOnEndReached]);\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n const hasEdits = Object.keys(editableConfig?.cellEdits ?? {}).length > 0;\n const handleSubmitEdits = useCallback(async () => {\n await editableConfig?.onSubmitEdits?.();\n editableConfig?.clearEdits?.();\n }, [editableConfig]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(styles.osdkTableWrapper, className)\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tableContainerRef,\n className: classNames(styles.osdkTableContainer, editableConfig && styles.osdkTableContainerWithButton),\n onScroll: handleScroll\n }, /*#__PURE__*/React.createElement(\"table\", null, isLoading && !hasData ? /*#__PURE__*/React.createElement(LoadingStateTable, {\n table: table,\n headerGroups: headerGroups,\n rowHeight: rowHeight,\n tableContainerRef: tableContainerRef\n }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableHeader, {\n table: table,\n headerMenuFeatureFlags: headerMenuFeatureFlags\n }), /*#__PURE__*/React.createElement(TableBody, {\n rows: rows,\n tableContainerRef: tableContainerRef,\n onRowClick: onRowClick,\n rowHeight: rowHeight,\n renderCellContextMenu: renderCellContextMenu,\n isLoadingMore: isLoadingMore,\n headerGroups: headerGroups\n }))), !hasData && error == null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: \"No Data\"\n }), error != null && /*#__PURE__*/React.createElement(NonIdealState, {\n message: `Error Loading Data: ${error.message}`\n })), editableConfig && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.submitButtonContainer\n }, /*#__PURE__*/React.createElement(ActionButton, {\n variant: \"primary\",\n onClick: handleSubmitEdits,\n disabled: !hasEdits\n }, \"Submit Edits\")));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { useColumnDefs } from \"./hooks/useColumnDefs.js\";\nimport { useColumnPinning } from \"./hooks/useColumnPinning.js\";\nimport { useColumnResize } from \"./hooks/useColumnResize.js\";\nimport { useColumnVisibility } from \"./hooks/useColumnVisibility.js\";\nimport { useEditableTable } from \"./hooks/useEditableTable.js\";\nimport { useObjectTableData } from \"./hooks/useObjectTableData.js\";\nimport { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport { BaseTable } from \"./Table.js\";\nimport { getRowId } from \"./utils/getRowId.js\";\n\n/**\n * ObjectTable - A headless table component for displaying OSDK object sets\n *\n * @example\n * ```tsx\n * <ObjectTable objectType={MyObjectType} />\n * ```\n */\n\nexport function ObjectTable({\n objectType,\n columnDefinitions,\n filter,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onColumnResize,\n onRowSelection,\n renderCellContextMenu,\n selectionMode = \"none\",\n selectedRows,\n onColumnVisibilityChanged,\n onCellValueChanged,\n onSubmitEdits,\n enableOrdering = true,\n enableColumnPinning = true,\n enableColumnResizing = true,\n enableColumnConfig = true,\n ...props\n}) {\n const {\n columnSizing,\n onColumnSizingChange\n } = useColumnResize({\n onColumnResize\n });\n const {\n cellEdits,\n clearEdits,\n handleCellEdit,\n handleSubmitEdits\n } = useEditableTable({\n onCellValueChanged,\n onSubmitEdits\n });\n const {\n sorting,\n onSortingChange\n } = useTableSorting({\n orderBy,\n defaultOrderBy,\n onOrderByChanged\n });\n const {\n data,\n fetchMore,\n isLoading,\n error\n } = useObjectTableData(objectType, columnDefinitions, filter, sorting);\n const {\n columns,\n loading: isColumnsLoading\n } = useColumnDefs(objectType, columnDefinitions);\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n enableRowSelection\n } = useRowSelection({\n selectionMode,\n selectedRows,\n onRowSelection,\n data\n });\n const selectionColumn = useSelectionColumn({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow\n });\n const {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange\n } = useColumnVisibility({\n allColumns: columns,\n onColumnVisibilityChanged\n });\n const {\n columnPinning,\n onColumnPinningChange\n } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: enableRowSelection,\n onColumnsPinnedChanged\n });\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n const table = useReactTable({\n data: data ?? [],\n columns: allColumns,\n getCoreRowModel: getCoreRowModel(),\n state: {\n columnVisibility,\n columnOrder,\n rowSelection,\n sorting,\n columnSizing,\n columnPinning\n },\n onSortingChange,\n onColumnSizingChange,\n onColumnPinningChange,\n onColumnVisibilityChange,\n onColumnOrderChange,\n enableRowSelection,\n enableSorting: enableOrdering,\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n manualSorting: true,\n // Enable manual sorting to indicate server-side sorting\n defaultColumn: {\n minSize: 80\n },\n getRowId,\n meta: {\n onCellEdit: handleCellEdit,\n cellEdits\n }\n });\n const onRenderCellContextMenu = useCallback((row, cell) => {\n return renderCellContextMenu?.(row, cell.getValue());\n }, [renderCellContextMenu]);\n const isTableLoading = isLoading || isColumnsLoading;\n const headerMenuFeatureFlags = useMemo(() => ({\n showSortingItems: enableOrdering,\n showPinningItems: enableColumnPinning,\n showResizeItem: enableColumnResizing,\n showConfigItem: enableColumnConfig\n }), [enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig]);\n const editableConfig = useMemo(() => {\n if (!onSubmitEdits) {\n return;\n }\n return {\n onSubmitEdits: handleSubmitEdits,\n clearEdits,\n cellEdits\n };\n }, [onSubmitEdits, handleSubmitEdits, clearEdits, cellEdits]);\n return /*#__PURE__*/React.createElement(BaseTable, {\n table: table,\n isLoading: isTableLoading,\n fetchNextPage: fetchMore,\n onRowClick: props.onRowClick,\n rowHeight: props.rowHeight,\n renderCellContextMenu: onRenderCellContextMenu,\n className: props.className,\n error: error,\n headerMenuFeatureFlags: headerMenuFeatureFlags,\n editableConfig: editableConfig\n });\n}"]}
|