@dxos/react-ui-table 0.5.3-main.f752aaa → 0.5.3-main.fffc127

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.
Files changed (35) hide show
  1. package/dist/lib/browser/index.mjs +2 -2
  2. package/dist/lib/browser/index.mjs.map +3 -3
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/types/src/components/Cell/Cell.d.ts.map +1 -1
  5. package/dist/types/src/components/Cell/CellCombobox.d.ts +1 -0
  6. package/dist/types/src/components/Cell/CellCombobox.d.ts.map +1 -1
  7. package/dist/types/src/components/ColumnMenu/ColumnMenu.d.ts +1 -0
  8. package/dist/types/src/components/ColumnMenu/ColumnMenu.d.ts.map +1 -1
  9. package/dist/types/src/components/ColumnMenu/ColumnMenu.stories.d.ts +1 -0
  10. package/dist/types/src/components/ColumnMenu/ColumnMenu.stories.d.ts.map +1 -1
  11. package/dist/types/src/components/ColumnMenu/ColumnSettingsForm.d.ts +1 -0
  12. package/dist/types/src/components/ColumnMenu/ColumnSettingsForm.d.ts.map +1 -1
  13. package/dist/types/src/components/Table/Table.d.ts.map +1 -1
  14. package/dist/types/src/components/Table/Table.stories.d.ts +1 -0
  15. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  16. package/dist/types/src/components/Table/TableBody.d.ts +1 -0
  17. package/dist/types/src/components/Table/TableBody.d.ts.map +1 -1
  18. package/dist/types/src/components/Table/TableContext.d.ts.map +1 -1
  19. package/dist/types/src/components/Table/TableFooter.d.ts +1 -0
  20. package/dist/types/src/components/Table/TableFooter.d.ts.map +1 -1
  21. package/dist/types/src/components/Table/TableHead.d.ts +1 -0
  22. package/dist/types/src/components/Table/TableHead.d.ts.map +1 -1
  23. package/dist/types/src/components/Table/TableRootContext.d.ts +1 -0
  24. package/dist/types/src/components/Table/TableRootContext.d.ts.map +1 -1
  25. package/dist/types/src/hooks/useColumnSizing.d.ts +1 -0
  26. package/dist/types/src/hooks/useColumnSizing.d.ts.map +1 -1
  27. package/dist/types/src/schema/schema.d.ts.map +1 -1
  28. package/dist/types/src/schema/schemaToColumns.d.ts +1 -1
  29. package/dist/types/src/schema/schemaToColumns.d.ts.map +1 -1
  30. package/dist/types/src/theme.d.ts +1 -1
  31. package/dist/types/src/theme.d.ts.map +1 -1
  32. package/package.json +17 -17
  33. package/src/components/Table/Table.tsx +9 -5
  34. package/src/schema/schema.ts +1 -0
  35. package/src/theme.ts +1 -2
@@ -584,7 +584,7 @@ var SortIndicator = ({ direction, onClick }) => {
584
584
 
585
585
  // packages/ui/react-ui-table/src/components/Table/Table.tsx
586
586
  import { Slot } from "@radix-ui/react-slot";
587
- import { getCoreRowModel, getSortedRowModel, useReactTable, getGroupedRowModel, getExpandedRowModel } from "@tanstack/react-table";
587
+ import { getCoreRowModel, getExpandedRowModel, getGroupedRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
588
588
  import React9, { Fragment, useCallback as useCallback6, useEffect as useEffect3, useState as useState8, useContext as useContext3 } from "react";
589
589
  import { useDefaultValue } from "@dxos/react-ui";
590
590
  import { mx as mx5 } from "@dxos/react-ui-theme";
@@ -630,7 +630,7 @@ var selectedRow = "!bg-primary-100 dark:!bg-primary-700";
630
630
  var flushPadding = "pli-0 plb-0";
631
631
  var textPadding = "pli-2 plb-0.5";
632
632
  var headPadding = "pli-2 plb-1";
633
- var gridCellFocusRing = "focus-within:z-[11] focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400";
633
+ var gridCellFocusRing = "focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400";
634
634
  var tableRoot = ({ fullWidth }, ...etc) => mx4("table-fixed", fullWidth && "is-full", ...etc);
635
635
  var groupTh = (_props, ...etc) => mx4("text-start font-medium", flushPadding, ...etc);
636
636
  var theadRoot = ({ header, stickyHeader }, ...etc) => mx4(header ? stickyHeader && "sticky block-start-[--sticky-top] z-[1]" : "collapse", header && "base-surface", "drop-shadow-sm", ...etc);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/translations.ts", "../../../src/components/Cell/CellCombobox.tsx", "../../../src/components/ColumnMenu/ColumnMenu.tsx", "../../../src/components/ColumnMenu/ColumnSettingsForm.tsx", "../../../src/hooks/useColumnSizing.ts", "../../../src/hooks/useColumnSorting.ts", "../../../src/components/Table/TableContext.tsx", "../../../src/hooks/usePinLastRow.ts", "../../../src/hooks/useRowSelection.ts", "../../../src/components/Table/Table.tsx", "../../../src/components/Table/TableBody.tsx", "../../../src/components/Table/TableRootContext.ts", "../../../src/theme.ts", "../../../src/components/Cell/Cell.tsx", "../../../src/components/Table/TableFooter.tsx", "../../../src/components/Table/TableHead.tsx", "../../../src/helpers.tsx", "../../../src/schema/schema.ts", "../../../src/schema/schemaToColumns.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'table';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'no selection label': ' ',\n 'number column type label': 'Number',\n 'boolean column type label': 'Toggle',\n 'date column type label': 'Date',\n 'string column type label': 'Text',\n 'ref column type label': 'Reference',\n 'digits label': 'Decimal places',\n 'save label': 'Save',\n 'delete label': 'Delete',\n 'column label label': 'Label',\n 'property key label': 'Property',\n 'column type label': 'Type',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CaretDown } from '@phosphor-icons/react';\nimport { type RowData } from '@tanstack/react-table';\nimport React, { useCallback, useState } from 'react';\n\nimport { Popover, useTranslation } from '@dxos/react-ui';\nimport { PopoverCombobox } from '@dxos/react-ui-searchlist';\nimport { descriptionText, getSize, mx, staticPlaceholderText } from '@dxos/react-ui-theme';\n\nimport { type SearchListQueryModel } from '../../helpers';\nimport { translationKey } from '../../translations';\n\nexport type ComboboxCellItems<TData extends RowData> = Record<string, { label: string; data: TData }>;\n\nconst initialItems = <TData extends RowData>(model: SearchListQueryModel<TData>, value?: TData) =>\n value\n ? {\n [model.getId(value)]: { label: model.getText(value), data: value },\n }\n : {};\n\nexport const CellCombobox = <TData extends RowData>({\n model,\n value,\n onValueChange,\n}: {\n model: SearchListQueryModel<TData>;\n value: TData;\n onValueChange: (value: TData) => void;\n}) => {\n const { t } = useTranslation(translationKey);\n const [items, setItems] = useState<ComboboxCellItems<TData>>(initialItems(model, value));\n const [loading, setLoading] = useState(false);\n const [searchInputValue, setSearchInputValue] = useState('');\n const handleSearchInputValueChange = async (text?: string) => {\n setSearchInputValue(text ?? '');\n setLoading(true);\n const items = await model.query(text);\n setItems(\n items.reduce(\n (acc: ComboboxCellItems<TData>, item) => {\n acc[model.getId(item)] = {\n label: model.getText(item),\n data: item,\n };\n return acc;\n },\n initialItems(model, value),\n ),\n );\n setLoading(false);\n };\n\n const handleValueChange = useCallback(\n (id: string) => {\n onValueChange(items[id]?.data);\n },\n [items, onValueChange],\n );\n\n return (\n <PopoverCombobox.Root placeholder={t('no selection label')}>\n <PopoverCombobox.Trigger variant='ghost' classNames='is-full rounded-none ring-inset'>\n {value ? (\n <>\n <span\n className={mx(\n 'font-normal text-start text-base flex-1 min-is-0 truncate mie-2',\n !value && staticPlaceholderText,\n )}\n >\n {model.getText(value)}\n </span>\n <CaretDown weight='bold' className={getSize(3)} />\n </>\n ) : null}\n </PopoverCombobox.Trigger>\n <PopoverCombobox.Content shouldFilter={false} classNames='is-[--radix-popover-trigger-width]'>\n <PopoverCombobox.Input value={searchInputValue} onValueChange={handleSearchInputValueChange} />\n <PopoverCombobox.List>\n {searchInputValue.length < 1 ? (\n <p className={mx('text-center', descriptionText)}>Start typing to search</p>\n ) : loading ? (\n <p className={mx('text-center', descriptionText)}>Searching…</p>\n ) : (\n <>\n <PopoverCombobox.Empty classNames={['text-center', descriptionText]}>No results</PopoverCombobox.Empty>\n {Object.entries(items).map(([id, { label }]) => (\n <PopoverCombobox.Item key={id} value={id} onSelect={handleValueChange} classNames='truncate'>\n {label}\n </PopoverCombobox.Item>\n ))}\n </>\n )}\n </PopoverCombobox.List>\n <Popover.Arrow />\n </PopoverCombobox.Content>\n </PopoverCombobox.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { X, GearSix, CaretDown, ArrowDown, ArrowUp, ArrowRight, ArrowLeft } from '@phosphor-icons/react';\nimport { type SortDirection, type HeaderContext, type RowData } from '@tanstack/react-table';\nimport React, { useRef, useState, useCallback } from 'react';\n\nimport { Button, DensityProvider, Popover, DropdownMenu } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { ColumnSettingsForm } from './ColumnSettingsForm';\nimport { useSortColumn } from '../../hooks';\nimport { type TableDef, type ColumnProps } from '../../schema';\n\nexport type ColumnMenuProps<TData extends RowData, TValue> = {\n context: HeaderContext<TData, TValue>;\n tablesToReference: TableDef[];\n tableDef: TableDef;\n column: ColumnProps;\n columnOrderable: boolean;\n columnPosition: 'start' | 'end' | undefined;\n onColumnReorder: (columnId: string, direction: 'left' | 'right') => void;\n onUpdate?: (id: string, column: ColumnProps) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const ColumnMenu = <TData extends RowData, TValue>({\n column,\n columnOrderable,\n columnPosition,\n onColumnReorder,\n ...props\n}: ColumnMenuProps<TData, TValue>) => {\n const title = column.label?.length ? column.label : column.id;\n const header = props.context.header;\n\n const { canSort, sortDirection, onSelectSort, onToggleSort, onClearSort } = useSortColumn(header.column);\n\n const columnSettingsAnchorRef = useRef<any>(null);\n\n const [isColumnSettingsOpen, setIsColumnSettingsOpen] = useState(false);\n\n const shouldPreventFocusOnClose = useRef(false);\n\n const onOpenColumnSettings = useCallback(() => {\n shouldPreventFocusOnClose.current = true;\n setIsColumnSettingsOpen(true);\n }, [shouldPreventFocusOnClose, setIsColumnSettingsOpen]); // setIsColumnSettingsOpen is a dependency\n\n const onDropdownCloseAutoFocus = useCallback(\n (event: Event) => {\n if (shouldPreventFocusOnClose.current) {\n event.preventDefault();\n shouldPreventFocusOnClose.current = false;\n }\n },\n [shouldPreventFocusOnClose],\n );\n\n return (\n <div className='flex items-center justify-center justify-between'>\n <div className='flex items-center gap-1 truncate' title={title}>\n <SortIndicator direction={sortDirection} onClick={onToggleSort} />\n <div className='truncate'>{title}</div>\n </div>\n\n <DropdownMenu.Root modal={false}>\n <Popover.Root open={isColumnSettingsOpen} onOpenChange={setIsColumnSettingsOpen} modal={false}>\n <DropdownMenu.Trigger ref={columnSettingsAnchorRef} asChild>\n <Popover.Anchor asChild>\n <Button variant='ghost'>\n <CaretDown className={getSize(4)} />\n </Button>\n </Popover.Anchor>\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content onCloseAutoFocus={onDropdownCloseAutoFocus} sideOffset={4} collisionPadding={8}>\n <DropdownMenu.Viewport>\n {canSort && (\n <>\n <DropdownMenu.Item onClick={() => onSelectSort('asc')}>\n <span className='grow'>Sort ascending</span>\n <span className='opacity-50'>\n <ArrowUp className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onSelectSort('desc')}>\n <span className='grow'>Sort descending</span>\n <span className='opacity-50'>\n <ArrowDown className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n {sortDirection && (\n <DropdownMenu.Item onClick={onClearSort}>\n <span className='grow'>Clear sort</span>\n <span className='opacity-50'>\n <X className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n )}\n </>\n )}\n\n {columnOrderable && (\n <>\n {columnPosition !== 'start' && (\n <DropdownMenu.Item onClick={() => onColumnReorder(header.column.id, 'left')}>\n <span className='grow'>Move left</span>\n <span className='opacity-50'>\n <ArrowLeft className={mx(getSize(4))} />\n </span>\n </DropdownMenu.Item>\n )}\n {columnPosition !== 'end' && (\n <DropdownMenu.Item onClick={() => onColumnReorder(header.column.id, 'right')}>\n <span className='grow'>Move right</span>\n <span className='opacity-50'>\n <ArrowRight className={mx(getSize(4))} />\n </span>\n </DropdownMenu.Item>\n )}\n </>\n )}\n\n <DropdownMenu.Item onClick={onOpenColumnSettings}>\n <span className='grow'>Column settings</span>\n <span className='opacity-50'>\n <GearSix className={mx(getSize(4), 'rotate-90')} />\n </span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n\n <Popover.Portal>\n <Popover.Content>\n <Popover.Viewport classNames='w-60'>\n <DensityProvider density='fine'>\n <ColumnSettingsForm {...props} column={column} onClose={() => setIsColumnSettingsOpen(false)} />\n </DensityProvider>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </DropdownMenu.Root>\n </div>\n );\n};\n\nexport const SortIndicator = ({\n direction,\n onClick,\n}: {\n direction: SortDirection | undefined;\n onClick: (e: any) => void;\n}) => {\n if (direction === undefined) {\n return null;\n }\n\n let icon;\n\n switch (direction) {\n case 'asc':\n icon = <ArrowUp className={getSize(3)} />;\n break;\n case 'desc':\n icon = <ArrowDown className={getSize(3)} />;\n break;\n }\n\n return (\n <div onClick={onClick} className='flex items-center cursor-pointer'>\n {icon}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { Check, Trash, X } from '@phosphor-icons/react';\nimport React, { type FC, type PropsWithChildren, useRef, useState } from 'react';\n\nimport { Button, Input, Select, Separator, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { safeParseInt } from '@dxos/util';\n\nimport { type TableDef, type ColumnProps, type ColumnType } from '../../schema';\nimport { translationKey } from '../../translations';\n\nconst Section: FC<PropsWithChildren & { className?: string }> = ({ children, className }) => (\n <div role='none' className={mx('p-2', className)}>\n {children}\n </div>\n);\n\nexport type ColumnSettingsFormProps = {\n column: ColumnProps;\n tableDef: TableDef;\n tablesToReference: TableDef[];\n onUpdate?: ((id: string, column: ColumnProps) => void) | undefined;\n onDelete?: ((id: string) => void) | undefined;\n onClose?: () => void;\n};\n\nexport const ColumnSettingsForm = ({\n column,\n tableDef,\n tablesToReference,\n onUpdate,\n onDelete,\n onClose,\n}: ColumnSettingsFormProps) => {\n const [formState, setFormState] = useState({\n prop: column.id,\n refTable: column.refTable,\n refProp: column.refProp,\n type: String(column.type),\n label: column.label,\n digits: String(column.digits ?? '0'),\n });\n\n const propRef = useRef<HTMLInputElement>(null);\n const { t } = useTranslation(translationKey);\n\n const handleCancel = () => {\n onClose?.();\n };\n\n const handleSave = () => {\n const { prop, refTable, refProp, type, label, digits } = formState;\n\n // Check valid.\n if (!prop.length || !prop.match(/^[a-zA-Z_].+/i)) {\n propRef.current?.focus();\n return;\n }\n\n // If already exists then check same type.\n const current = tableDef.columns.find((c) => c.id !== column.id && c.id === prop);\n if (current) {\n // TODO(burdon): Allow multiple columns with different refProps. Ensure correct table prop is updated.\n if (current.type !== 'ref' /* || current.ref !== refTable */) {\n // TODO(burdon): Show error.\n propRef.current?.focus();\n return;\n }\n }\n\n onUpdate?.(column.id, {\n id: prop, // TODO(burdon): Make unique.\n prop,\n label,\n type: type as ColumnProps['type'],\n refTable,\n refProp,\n digits: safeParseInt(digits),\n });\n onClose?.();\n };\n\n const handleDelete = () => {\n onDelete?.(column.id);\n onClose?.();\n };\n\n return (\n <div className='flex flex-col gap-1'>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1'>{t('column label label')}</Input.Label>\n <Input.TextInput\n placeholder='Column label'\n value={formState.label ?? ''}\n onChange={(event) => setFormState((prevState) => ({ ...prevState, label: event.target.value }))}\n autoFocus\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>{t('property key label')}</Input.Label>\n <Input.TextInput\n ref={propRef}\n placeholder='Property key'\n value={formState.prop ?? ''}\n onChange={(event) =>\n setFormState((prevState) => ({ ...prevState, prop: event.target.value.replace(/[^\\w_]/g, '') }))\n }\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>{t('column type label')}</Input.Label>\n <Select.Root\n value={formState.type}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, type: value }))}\n >\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {(['number', 'boolean', 'string', 'ref'] as ColumnType[]).map((type) => (\n <Select.Option key={type} value={type}>\n {t(`${type} column type label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </Section>\n {formState.type === 'number' && (\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>{t('digits label')}</Input.Label>\n <Input.TextInput\n value={formState.digits ?? ''}\n onChange={(event) => setFormState((prevState) => ({ ...prevState, digits: event.target.value }))}\n />\n </Input.Root>\n </Section>\n )}\n\n {formState.type === 'ref' && (\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table</Input.Label>\n <Select.Root\n value={formState.refTable}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, refTable: value }))}\n >\n <Select.TriggerButton placeholder='Table' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tablesToReference\n .filter((t) => t.id !== tableDef.id)\n .map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n\n {formState.refTable && (\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table property</Input.Label>\n <Select.Root\n value={formState.refProp}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, refProp: value }))}\n >\n <Select.TriggerButton placeholder='Property' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tablesToReference\n .find((tableDef) => tableDef.id === formState.refTable)\n ?.columns.map(({ id, label }) => (\n <Select.Option key={id} value={id}>\n {label ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n )}\n </Section>\n )}\n\n <Separator classNames='mli-2' />\n\n <Section className='space-b-1.5'>\n <Button variant='primary' classNames='is-full flex gap-2' onClick={handleSave}>\n <span>{t('save label')}</span>\n <div className='grow' />\n <Check className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={handleCancel}>\n <span>{t('cancel label', { ns: 'os' })}</span>\n <div className='grow' />\n <X className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={handleDelete}>\n <span>{t('delete label')}</span>\n <div className='grow' />\n <Trash className={getSize(5)} />\n </Button>\n </Section>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { type ColumnSizingInfoState, type ColumnSizingState } from '@tanstack/react-table';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useOnTransition } from '@dxos/react-ui';\n\nimport { type TableColumnDef } from '../components/Table';\n\nexport const useColumnResizing = ({\n columns,\n onColumnResize,\n}: {\n columns: TableColumnDef<any>[];\n onColumnResize: ((state: Record<string, number>) => void) | undefined;\n}) => {\n const [columnsInitialised, setColumnsInitialised] = useState(false);\n const [columnSizing, setColumnSizing] = useState<ColumnSizingState>({});\n\n useEffect(() => {\n if (columnsInitialised) {\n return;\n }\n\n setColumnSizing(\n columns\n .filter((column) => !!column.size && (column as any).prop !== undefined)\n .reduce<ColumnSizingState>((state, column) => {\n state[(column as any).prop] = column.size!;\n return state;\n }, {}),\n );\n\n setColumnsInitialised(true);\n }, [columns, setColumnSizing]);\n\n const [columnSizingInfo, setColumnSizingInfo] = useState<ColumnSizingInfoState>({} as ColumnSizingInfoState);\n\n // Notify on column resize.\n const notifyColumnResize = useCallback(() => onColumnResize?.(columnSizing), [onColumnResize, columnSizing]);\n useOnTransition(columnSizingInfo.isResizingColumn, (v) => typeof v === 'string', false, notifyColumnResize);\n\n return { columnSizing, columnSizingInfo, setColumnSizing, setColumnSizingInfo };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type SortDirection, type Column, type ColumnSort } from '@tanstack/react-table';\nimport { useState } from 'react';\n\nimport { useTableContext } from '../components/Table/TableContext';\n\nexport const useColumnSorting = () => {\n const [columnSorting, setColumnSorting] = useState<ColumnSort[]>([]);\n\n const sortColumn = (columnId: string, sortDirection: SortDirection) => {\n setColumnSorting([{ id: columnId, desc: sortDirection === 'desc' }]);\n };\n\n const clearColumnSorting = () => {\n setColumnSorting([]);\n };\n\n return { sorting: columnSorting, sortColumn, clearColumnSorting };\n};\n\nexport type ColumnSorting = ReturnType<typeof useColumnSorting>;\n\nexport const useSortColumn = (column: Column<any>) => {\n const { sorting, sortColumn, clearColumnSorting } = useTableContext();\n const [initialSortDirection, setInitialSortDirection] = useState<SortDirection | undefined>();\n\n const columnSort = sorting.find((s) => s.id === column.id);\n const sortDirection = columnSort ? (columnSort.desc ? ('desc' as const) : ('asc' as const)) : undefined;\n\n const canSort = column.getCanSort();\n\n const updateColumnSort = (direction: SortDirection) => {\n sortColumn(column.id, direction);\n };\n\n // Whichever sort is explicitly set first, will be the first sort direction\n // When toggling, we always go to the other direction, and then to unsorted.\n const onToggleSort = () => {\n if (sortDirection === undefined) {\n return;\n }\n\n if (sortDirection === initialSortDirection) {\n updateColumnSort(initialSortDirection === 'asc' ? 'desc' : 'asc');\n } else {\n clearColumnSorting();\n }\n };\n\n const onSelectSort = (direction: SortDirection) => {\n clearColumnSorting();\n setInitialSortDirection(direction);\n updateColumnSort(direction);\n };\n\n const onClearSort = () => {\n clearColumnSorting();\n };\n\n return { canSort, sortDirection, onSelectSort, onToggleSort, onClearSort };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type RowData } from '@tanstack/react-table';\nimport React, { useContext, createContext, type ReactNode } from 'react';\n\nimport { type TableContextValue } from './props';\n\nexport const TABLE_NAME = 'Table';\n\n// Create the context without a default value.\n// The expectation is that the provider will always supply a value, so no need to define a default here.\nconst TableContext = createContext<TableContextValue<RowData>>({} as TableContextValue<RowData>);\n\nexport type TypedTableProvider<TData extends RowData> = {\n (props: TableContextValue<TData> & { children: ReactNode }): JSX.Element;\n displayName: string;\n};\n\nexport const TableProvider: React.FC<TableContextValue<RowData> & { children: ReactNode }> = ({\n children,\n ...value\n}) => {\n return <TableContext.Provider value={value}>{children}</TableContext.Provider>;\n};\n\n// Create a custom hook to consume the context\nexport const useTableContext = <TData extends RowData>(): TableContextValue<TData> => {\n const context = useContext(TableContext as React.Context<TableContextValue<TData>>);\n\n return context;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Row, type Table } from '@tanstack/react-table';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useTableRootContext } from '../components';\n\nexport const usePinLastRow = (pinLastRow: boolean | undefined, table: Table<any>, data: any[]) => {\n const { scrollContextRef } = useTableRootContext();\n const [pinnedRowKey, setPinnedRowKey] = useState<string>();\n\n // Scrolls to the bottom of a scrollable element.\n const scrollToBottom = useCallback(() => {\n const element = scrollContextRef.current;\n const scrollHeight = element?.scrollHeight;\n\n if (element && scrollHeight) {\n requestAnimationFrame(() => element.scrollTo({ top: scrollHeight }));\n }\n }, []);\n\n const pinRow = useCallback(\n (rowToPin: Row<any>) => {\n table.resetRowPinning();\n rowToPin.pin('bottom');\n setPinnedRowKey(rowToPin.id);\n },\n [table],\n );\n\n const clearRowPinning = useCallback(() => {\n table.resetRowPinning();\n setPinnedRowKey(undefined);\n }, [table]);\n\n // Define the logic for pinning the last row in a callback.\n const pinLastRowCallback = useCallback(() => {\n const rows = table.getRowModel().rows;\n\n if (rows.length === 0) {\n return clearRowPinning();\n }\n\n const lastRow = rows[rows.length - 1];\n if (lastRow.id === pinnedRowKey) {\n return;\n }\n\n pinRow(lastRow);\n\n if (pinnedRowKey !== undefined) {\n scrollToBottom();\n }\n }, [table, scrollToBottom, pinnedRowKey]);\n\n // Effect to handle pinning logic when data changes.\n useEffect(() => {\n if (pinLastRow) {\n pinLastRowCallback();\n }\n }, [data, pinLastRow, pinLastRowCallback]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { type OnChangeFn, type RowSelectionState } from '@tanstack/react-table';\nimport { useCallback } from 'react';\n\nimport { type TableProps } from '../components/Table';\n\nexport const useRowSelection = (\n props: Pick<\n TableProps<any>,\n 'rowsSelectable' | 'defaultRowSelection' | 'rowSelection' | 'onRowSelectionChange' | 'rowsSelectable'\n >,\n) => {\n const [rowSelection = {}, setRowSelection] = useControllableState({\n prop: props.rowSelection,\n onChange: props.onRowSelectionChange,\n defaultProp: props.defaultRowSelection,\n });\n\n // TODO(thure): Does @tanstack/react-table really need this intervention? It did seem necessary to enforce single-selection...\n const handleRowSelectionChange = useCallback<OnChangeFn<RowSelectionState>>(\n (updaterOrValue) => {\n const nextRowSelection = typeof updaterOrValue === 'function' ? updaterOrValue(rowSelection) : updaterOrValue;\n if (props.rowsSelectable === 'multi') {\n setRowSelection(nextRowSelection);\n } else if (props.rowsSelectable) {\n const nextRowSelectionKey = Object.keys(nextRowSelection).filter((id) => !rowSelection[id])[0];\n setRowSelection(nextRowSelectionKey ? { [nextRowSelectionKey]: true } : {});\n } else {\n setRowSelection({});\n }\n },\n [props.rowsSelectable, setRowSelection, rowSelection],\n );\n\n return { rowSelection, handleRowSelectionChange };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\nimport { type Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type GroupingState,\n type RowData,\n getGroupedRowModel,\n getExpandedRowModel,\n type Row,\n} from '@tanstack/react-table';\nimport React, { type ComponentPropsWithoutRef, Fragment, useCallback, useEffect, useState, useContext } from 'react';\n\nimport { type ThemedClassName, useDefaultValue } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { TableBody } from './TableBody';\nimport { type TypedTableProvider, TableProvider as UntypedTableProvider, useTableContext } from './TableContext';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { TableRootContext, useTableRootContext } from './TableRootContext';\nimport { type TableProps } from './props';\nimport { useColumnResizing, useColumnSorting, usePinLastRow, useRowSelection } from '../../hooks';\nimport { groupTh, tableRoot } from '../../theme';\n\ntype TableRootProps = { children: React.ReactNode };\n\nconst TableRoot = ({ children }: TableRootProps) => {\n const contextValue = useTableRootContext();\n return <TableRootContext.Provider value={contextValue}>{children}</TableRootContext.Provider>;\n};\n\ntype TableViewportProps = ThemedClassName<ComponentPropsWithoutRef<typeof Primitive.div>> & {\n asChild?: boolean;\n};\n\nconst TableViewport = ({ children, classNames, asChild, ...props }: TableViewportProps) => {\n const { scrollContextRef } = useContext(TableRootContext);\n\n const classes = mx(classNames);\n\n return asChild ? (\n <Slot ref={scrollContextRef} {...props}>\n {children}\n </Slot>\n ) : (\n <div role='none' className={classes} ref={scrollContextRef} {...props}>\n {children}\n </div>\n );\n};\n\nexport const TablePrimitive = <TData extends RowData>(props: TableProps<TData>) => {\n const {\n role,\n onColumnResize,\n columnVisibility,\n header = true,\n rowsSelectable,\n debug,\n onDataSelectionChange,\n pinLastRow,\n } = props;\n\n const columns = useDefaultValue(props.columns, []);\n const incomingData = useDefaultValue(props.data, []);\n\n const [data, setData] = useState([...incomingData]);\n\n // Reactivity workaround: https://github.com/dxos/dxos/issues/6376.\n const forceUpdate = useCallback(() => setData([...incomingData]), [incomingData]);\n useEffect(() => forceUpdate(), [JSON.stringify(incomingData), forceUpdate]);\n\n const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;\n\n const { columnSizing, setColumnSizing, columnSizingInfo, setColumnSizingInfo } = useColumnResizing({\n columns,\n onColumnResize,\n });\n\n const { rowSelection, handleRowSelectionChange } = useRowSelection(props);\n\n const [grouping, handleGroupingChange] = useState<GroupingState>(props.grouping ?? []);\n useEffect(() => handleGroupingChange(props.grouping ?? []), [handleGroupingChange, props.grouping]);\n\n const columnSorting = useColumnSorting();\n\n const table = useReactTable({\n // Data\n meta: {},\n data,\n\n // Columns\n columns,\n defaultColumn: {\n size: 256, // Required in order remove default width.\n maxSize: 1024,\n },\n\n // State\n state: {\n columnVisibility,\n columnSizing,\n columnSizingInfo,\n sorting: columnSorting.sorting,\n rowSelection,\n grouping,\n },\n\n // Resize columns\n columnResizeMode: 'onChange',\n enableColumnResizing: true,\n onColumnSizingChange: setColumnSizing,\n onColumnSizingInfoChange: setColumnSizingInfo,\n\n // Rows\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n\n // Grouping\n getGroupedRowModel: grouping.length > 1 ? getGroupedRowModel() : undefined,\n onGroupingChange: handleGroupingChange,\n\n enableMultiRowSelection: rowsSelectable === 'multi' ? true : undefined,\n enableRowSelection: rowsSelectable === true ? true : undefined,\n\n onRowSelectionChange: handleRowSelectionChange,\n\n enableSorting: true,\n enableColumnPinning: true,\n\n // Debug\n debugTable: debug,\n });\n\n useEffect(() => {\n onDataSelectionChange?.(Object.keys(rowSelection).map((id) => table.getRowModel().rowsById[id].original));\n }, [onDataSelectionChange, rowSelection, table]);\n\n usePinLastRow(pinLastRow, table, data);\n\n // Create additional expansion column if all columns have fixed width.\n const expand = false; // columns.map((column) => column.size).filter(Boolean).length === columns?.length;\n\n return (\n <TableProvider\n {...{ ...props, ...columnSorting }}\n table={table}\n header={header}\n expand={expand}\n isGrid={role === 'grid' || role === 'treegrid'}\n >\n <TableImpl<TData> debug={false} {...props} />\n </TableProvider>\n );\n};\n\n// TODO(Zan): Smush this into the Table component.\n/**\n * Pure implementation of table outside of context set-up.\n */\nconst TableImpl = <TData extends RowData>(props: TableProps<TData>) => {\n const { debug, classNames, role, footer, grouping, fullWidth } = props;\n const { table } = useTableContext<TData>();\n\n if (debug) {\n return (\n <pre className='font-mono text-xs text-neutral-500 m-1 p-2 ring'>\n <code>{JSON.stringify(table.getState(), undefined, 2)}</code>\n </pre>\n );\n }\n\n const isResizingColumn = table.getState().columnSizingInfo.isResizingColumn;\n\n const TableComponent = isResizingColumn ? MemoizedVirtualisedTableContent : VirtualizedTableContent;\n\n return (\n <table\n role={role}\n className={tableRoot(props, classNames)}\n {...(!fullWidth && { style: { width: table.getTotalSize() } })}\n >\n <TableHead />\n\n {grouping?.length !== 0 ? <TableComponent /> : <GroupedTableContent />}\n\n {footer && <TableFooter />}\n </table>\n );\n};\n\nconst VirtualizedTableContent = () => {\n const { table } = useTableContext();\n const { virtualizer, dispatch } = useContext(TableRootContext);\n\n const centerRows = table.getCenterRows();\n let pinnedRows = [] as Row<unknown>[];\n\n useEffect(() => {\n dispatch({ type: 'updateTableCount', count: centerRows.length });\n }, [centerRows.length]);\n\n try {\n // TODO(zan): Work out how to sync the row pinning with rendering\n // This is a hack because the first call to this function after a row is deleted will throw an error\n // because the row index is no longer in the table\n // The pin last row hook updates the pinned row key after the row is deleted\n pinnedRows = table.getBottomRows();\n } catch (_) {} // Ignore error\n\n const { getTotalSize, getVirtualItems } = virtualizer;\n\n const virtualRows = getVirtualItems();\n const totalSize = getTotalSize();\n\n const paddingTop = virtualRows.length > 0 ? virtualRows?.[0]?.start || 0 : 0;\n const paddingBottom = virtualRows.length > 0 ? totalSize - (virtualRows?.[virtualRows.length - 1]?.end || 0) : 0;\n\n const rowsToRender = [...virtualRows.map((virtualRow) => centerRows[virtualRow.index]), ...pinnedRows].filter(\n (r) => !!r,\n );\n\n return (\n <Fragment>\n {paddingTop > 0 && (\n <tbody role='none'>\n <tr role='none'>\n <td style={{ height: `${paddingTop}px` }} role='none' />\n </tr>\n </tbody>\n )}\n <TableBody rows={rowsToRender} />\n {paddingBottom > 0 && (\n <tbody role='none'>\n <tr role='none'>\n <td style={{ height: `${paddingBottom}px` }} role='none' />\n </tr>\n </tbody>\n )}\n </Fragment>\n );\n};\n\nexport const MemoizedVirtualisedTableContent = React.memo(VirtualizedTableContent);\n\nconst GroupedTableContent = () => {\n const {\n table: { getGroupedRowModel, getHeaderGroups, getState },\n debug,\n } = useTableContext();\n\n return (\n <>\n {getGroupedRowModel().rows.map((row, i) => {\n return (\n <Fragment key={i}>\n {/* TODO(burdon): Customize group header renderer. */}\n <thead>\n <tr>\n {debug && <th />}\n <th\n // TODO(burdon): Calculate row span.\n colSpan={getHeaderGroups()[0].headers.length}\n className={groupTh({})}\n >\n {getState().grouping[0]}[{String(row.getGroupingValue(getState().grouping[0]))}]\n </th>\n </tr>\n </thead>\n <TableBody rows={row.subRows} />\n </Fragment>\n );\n })}\n </>\n );\n};\n\nexport const Table = {\n Root: TableRoot,\n Viewport: TableViewport,\n Main: TablePrimitive,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { flexRender, type Row, type RowData } from '@tanstack/react-table';\nimport React, { useContext } from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { TableRootContext } from './TableRootContext';\nimport { tbodyTr } from '../../theme';\nimport { Cell } from '../Cell/Cell';\n\nconst TABLE_BODY_NAME = 'TableBody';\n\ntype TableBodyProps = {\n rows: Row<RowData>[];\n};\n\nconst TableBody = ({ rows }: TableBodyProps) => {\n const { table, keyAccessor, currentDatum, debug, expand, isGrid, onDatumClick } = useTableContext();\n\n const rowSelection = table.getState().rowSelection;\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const canBeCurrent = !isGrid && !!onDatumClick;\n\n const { virtualizer } = useContext(TableRootContext);\n\n return (\n <tbody {...(isGrid && domAttributes)}>\n {rows.map((row) => {\n const isCurrent = currentDatum === row.original;\n const isSelected = rowSelection?.[row.id];\n\n const isPinned = row.getIsPinned();\n\n const classNames = tbodyTr({ canBeCurrent, isPinned: isPinned !== false });\n\n return (\n <tr\n key={keyAccessor ? keyAccessor(row.original) : row.id}\n className={classNames}\n data-index={row.index}\n ref={virtualizer.measureElement}\n {...(isCurrent && { 'aria-current': 'location' })}\n {...(isSelected && { 'aria-selected': 'true' })}\n {...(canBeCurrent && {\n tabIndex: 0,\n onClick: () => {\n onDatumClick(row.original);\n },\n onKeyUp: ({ key }) => {\n if (key === 'Enter' || key === ' ') {\n onDatumClick(row.original);\n }\n },\n })}\n >\n {debug && <td>{row.id}</td>}\n\n {row.getVisibleCells().map((cell) => {\n return (\n <Cell key={cell.id} cell={cell}>\n {flexRender(cell.column.columnDef.cell, { className: 'pli-2', ...cell.getContext() })}\n </Cell>\n );\n })}\n\n {expand && <td />}\n </tr>\n );\n })}\n </tbody>\n );\n};\n\nTableBody.displayName = TABLE_BODY_NAME;\n\nexport { TableBody };\n\nexport type { TableBodyProps };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { createContext, useRef, useState } from 'react';\n\ntype TableRootContextActions = { type: 'updateTableCount'; count: number };\n\nexport const useTableRootContext = () => {\n const scrollContextRef = useRef<HTMLDivElement>(null);\n const [tableCount, setTableCount] = useState(0);\n\n const virtualizer = useVirtualizer({\n getScrollElement: () => scrollContextRef?.current ?? null,\n count: tableCount,\n overscan: 8,\n estimateSize: () => 40,\n });\n\n const dispatch = (action: TableRootContextActions) => {\n switch (action.type) {\n case 'updateTableCount':\n setTableCount(action.count);\n break;\n\n default:\n break;\n }\n };\n\n return { scrollContextRef, virtualizer, dispatch };\n};\n\nexport type TableRootContextValue = ReturnType<typeof useTableRootContext>;\n\n// Create the context without a default value.\n// The expectation is that the provider will always supply a value, so no need to define a default here.\nexport const TableRootContext = createContext<TableRootContextValue>({} as TableRootContextValue);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type CellContext } from '@tanstack/react-table';\n\nimport { modalSurface, focusRing, ghostSelected, ghostSelectedCurrent, groupBorder, mx } from '@dxos/react-ui-theme';\nimport { type ComponentFunction } from '@dxos/react-ui-types';\n\nimport { type TableContextValue, type TableFlags } from './components';\n\nexport const currentRow = '!bg-neutral-75 !dark:bg-neutral-850';\nexport const selectedRow = '!bg-primary-100 dark:!bg-primary-700';\nexport const flushPadding = 'pli-0 plb-0';\nexport const textPadding = 'pli-2 plb-0.5';\nexport const headPadding = 'pli-2 plb-1';\n\nexport const gridCellFocusRing =\n 'focus-within:z-[11] focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400';\n\n//\n// table\n//\n\nexport type TableStyleProps = Partial<TableContextValue<any>>;\n\nexport const tableRoot: ComponentFunction<TableStyleProps> = ({ fullWidth }, ...etc) =>\n mx('table-fixed', fullWidth && 'is-full', ...etc);\n\nexport const groupTh: ComponentFunction<TableStyleProps> = (_props, ...etc) =>\n mx('text-start font-medium', flushPadding, ...etc);\n\n//\n// thead\n//\n\nexport type TheadStyleProps = Partial<TableFlags>;\n\nexport const theadRoot: ComponentFunction<TheadStyleProps> = ({ header, stickyHeader }, ...etc) =>\n mx(\n header ? stickyHeader && 'sticky block-start-[--sticky-top] z-[1]' : 'collapse',\n header && 'base-surface',\n 'drop-shadow-sm',\n ...etc,\n );\n\nexport const theadTr: ComponentFunction<TheadStyleProps> = (_props, ...etc) => mx('group', ...etc);\n\nexport const theadTh: ComponentFunction<TheadStyleProps> = ({ border }, ...etc) =>\n mx(\n 'relative',\n 'text-start font-medium select-none truncate',\n headPadding,\n border && groupBorder,\n border && 'border border-t-0 border-b-0 border-neutral-200',\n ...etc,\n );\n\nexport const theadResizeRoot: ComponentFunction<{ isResizing: boolean }> = ({ isResizing }) => {\n return mx(\n 'absolute h-full w-[4px] top-0 right-0',\n 'cursor-col-resize',\n 'user-select-none',\n 'touch-action-none',\n !isResizing && 'group-hover:bg-neutral-100 dark:group-hover:bg-neutral-800',\n 'pointer-coarse:bg-neutral-100 dark:pointer-coarse:bg-neutral-800',\n isResizing && 'bg-primary-500 dark:bg-primary-400',\n );\n};\n\n//\n// tbody\n//\n\nexport type TbodyStyleProps = Partial<TableContextValue<any>>;\nexport const tbodyRoot: ComponentFunction<TbodyStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport type TbodyTrStyleProps = Partial<{ canBeCurrent?: boolean; isPinned?: boolean }>;\nexport const tbodyTr: ComponentFunction<TbodyTrStyleProps> = ({ canBeCurrent, isPinned }, ...etc) =>\n mx(\n 'group',\n canBeCurrent ? ghostSelectedCurrent : ghostSelected,\n canBeCurrent && focusRing,\n canBeCurrent && 'cursor-pointer rounded',\n isPinned && 'sticky z-1 bottom-[-1px] base-surface',\n ...etc,\n );\n\n//\n// td, th\n//\n\nexport const tdRoot: ComponentFunction<TbodyStyleProps> = ({ border, isGrid }, ...etc) =>\n mx('relative', flushPadding, border && 'border', border && groupBorder, isGrid && gridCellFocusRing, ...etc);\n\nexport const tdContent: ComponentFunction<CellContext<any, any>> = (_props, ...etc) => mx(...etc);\n\n//\n// tfoot\n//\n\nexport type TfootStyleProps = Partial<TableContextValue<any>>;\n\nexport const tfootRoot: ComponentFunction<TfootStyleProps> = (_props, ...etc) =>\n mx('sticky block-end-0 z-10', modalSurface, ...etc);\n\nexport const tfootTr: ComponentFunction<TfootStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport const tfootTh: ComponentFunction<TfootStyleProps> = ({ border }, ...etc) =>\n mx(textPadding, modalSurface, border && groupBorder, ...etc);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { type Cell as CellType, type RowData } from '@tanstack/react-table';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { tdRoot } from '../../theme';\nimport { useTableContext } from '../Table/TableContext';\n\ntype CellProps<TData extends RowData, TValue> = PropsWithChildren<{\n cell: CellType<TData, TValue>;\n}>;\n\nconst CELL_NAME = 'Cell';\n\nconst FocusableCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext();\n const domAttributes = useFocusableGroup({ tabBehavior: 'limited' });\n\n const className = tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames);\n\n return (\n <td tabIndex={0} {...domAttributes} className={className}>\n {children}\n </td>\n );\n};\n\nconst StaticCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext();\n return <td className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>{children}</td>;\n};\n\nconst Cell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const { isGrid } = useTableContext();\n const Root = isGrid ? FocusableCell : StaticCell;\n return <Root cell={cell}>{children}</Root>;\n};\n\nCell.displayName = CELL_NAME;\n\nexport { Cell };\n\nexport type { CellProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { tfootRoot, tfootTr, tfootTh } from '../../theme';\n\ntype TableFooterProps = {};\n\nconst TABLE_FOOT_NAME = 'TableFooter';\n\nconst TableFooter = (props: TableFooterProps) => {\n const tableContext = useTableContext();\n const { table, expand, debug } = tableContext;\n const footers = table.getFooterGroups();\n\n return (\n <tfoot className={tfootRoot(props)}>\n {footers.map((footerGroup) => (\n <tr key={footerGroup.id} className={tfootTr(tableContext)}>\n {debug && <th />}\n\n {footerGroup.headers.map((footer) => {\n return (\n <th key={footer.id} className={tfootTh(tableContext, footer.column.columnDef.meta?.footer?.classNames)}>\n {footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext())}\n </th>\n );\n })}\n\n {expand && <th />}\n </tr>\n ))}\n </tfoot>\n );\n};\n\nTableFooter.displayName = TABLE_FOOT_NAME;\n\nexport { TableFooter };\n\nexport type { TableFooterProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { theadResizeRoot, theadRoot, theadTh, theadTr } from '../../theme';\n\nconst TABLE_HEAD_NAME = 'TableHeader';\n\ntype TableHeadProps = {};\n\nconst TableHead = (_props: TableHeadProps) => {\n const tableContext = useTableContext();\n const headerGroups = tableContext.table.getHeaderGroups();\n\n return (\n <thead className={theadRoot(tableContext)}>\n {headerGroups.map((headerGroup) => {\n return (\n // Group element to hover resize handles.\n <tr key={headerGroup.id} className={theadTr(tableContext)}>\n {/* TODO(burdon): Calc. width. */}\n {tableContext.debug && (\n <th className='font-mono' style={{ width: 32 }}>\n #\n </th>\n )}\n\n {headerGroup.headers.map((header) => {\n const isResizing = header.column.getIsResizing();\n const onResize = header.getResizeHandler();\n const resizable = header.column.columnDef.meta?.resizable;\n\n return (\n <th\n key={header.id}\n style={{\n width: header.getSize(),\n }}\n className={theadTh(tableContext, header.column.columnDef.meta?.header?.classNames)}\n >\n {!header || header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n\n {/*\n * Resize handle.\n * https://codesandbox.io/p/sandbox/github/tanstack/table/tree/main/examples/react/column-sizing\n */}\n\n {resizable && (\n <div\n className={theadResizeRoot({ isResizing })}\n onDoubleClick={header.column.resetSize} // TODO(zan): How should non-pointer users reset column sizing?\n onMouseDown={onResize}\n onTouchStart={onResize}\n />\n )}\n </th>\n );\n })}\n\n {tableContext.expand && <th />}\n </tr>\n );\n })}\n </thead>\n );\n};\n\nTableHead.displayName = TABLE_HEAD_NAME;\n\nexport { TableHead };\n\nexport type { TableHeadProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusFinders } from '@fluentui/react-tabster';\nimport { Check, ClipboardText, type Icon, X } from '@phosphor-icons/react';\nimport {\n createColumnHelper,\n type ColumnDef,\n type ColumnMeta,\n type RowData,\n type ColumnHelper,\n type CellContext,\n} from '@tanstack/react-table';\nimport { format } from 'date-fns/format';\nimport { formatDistanceToNow } from 'date-fns/formatDistanceToNow';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type ClassNameValue, Input, Tooltip } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { CellCombobox } from './components';\nimport { useTableContext } from './components/Table/TableContext';\nimport { textPadding } from './theme';\n\nexport type ValueUpdater<TData extends RowData, TValue> = (row: TData, id: string, value: TValue) => void;\n\nexport const createColumnBuilder = <TData extends RowData>() => ({\n helper: createColumnHelper<TData>(),\n builder: new ColumnBuilder<TData>(),\n});\n\n// TODO(thure): This interface is redundant, e.g. `classNames` == `meta.cell.classNames`\n/**\n * NOTE: Can use `meta` for custom properties.\n */\nexport type BaseColumnOptions<TData, TValue> = Partial<ColumnDef<TData, TValue>> & {\n meta?: ColumnMeta<TData, TValue>;\n label?: string;\n classNames?: ClassNameValue;\n onUpdate?: ValueUpdater<TData, TValue | undefined>;\n};\n\n// TODO(burdon): Better abstraction?\nexport type SearchListQueryModel<TData extends RowData> = {\n getId(object: TData): string;\n getText(object: TData): string;\n query(text?: string): Promise<TData[]>;\n};\n\nexport type ComboboxColumnOptions<TData extends RowData> = BaseColumnOptions<TData, any> & {\n model: SearchListQueryModel<TData>;\n};\n\nexport type StringColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\nexport type SelectRowColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\n\nexport type NumberColumnOptions<TData extends RowData> = BaseColumnOptions<TData, number> & {\n digits?: number;\n};\n\nexport type KeyColumnOptions<TData extends RowData> = BaseColumnOptions<TData, PublicKey> & {\n tooltip?: boolean;\n};\n\nexport type DateColumnOptions<TData extends RowData> = BaseColumnOptions<TData, Date> & {\n format?: string;\n relative?: boolean;\n};\n\nexport type SwitchColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {};\n\nexport type IconColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {\n on?: {\n Icon?: Icon;\n className?: string;\n };\n off?: {\n Icon?: Icon;\n className?: string;\n };\n};\n\nconst ComboboxBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, TData>) => {\n const { model, onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, TData>;\n return model ? (\n <CellCombobox<TData>\n model={model}\n value={cellContext.getValue()}\n onValueChange={(value) => onUpdate?.(cellContext.row.original, cellContext.column.id, value)}\n />\n ) : null;\n};\n\nconst StringBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, string>) => {\n const ref = useRef<HTMLInputElement>(null);\n const { findPrevFocusable } = useFocusFinders();\n\n const { onUpdate, cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n\n // https://tanstack.com/table/v8/docs/examples/react/editable-data\n const initialValue = cellContext.getValue();\n\n const getInitialValue = useCallback(() => {\n // TODO(burdon): Temporary shim for automerge.\n return (initialValue as any)?.content ?? initialValue;\n }, [initialValue]);\n\n const [value, setValue] = useState(getInitialValue);\n\n // Update value if initialValue changes externally (cell reactivity).\n useEffect(() => setValue(getInitialValue()), [getInitialValue]);\n\n const handleSave = () => {\n ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();\n\n if (value !== initialValue) {\n onUpdate?.(cellContext.row.original, cellContext.column.id, value);\n }\n };\n\n const handleCancel = () => setValue(initialValue);\n\n let placeholder = false;\n const columns = cellContext.table.getVisibleFlatColumns();\n\n // Calling getRowModel is expensive, so only do it when we're a cell in the first position\n if (columns[0].id === cellContext.column.id) {\n const rowCount = cellContext.table.getRowModel().rows.length;\n placeholder = cellContext.row.index === rowCount - 1 && columns[0].id === cellContext.column.id;\n }\n\n // TODO(burdon): Don't render inputs unless mouse over (Show ellipsis when div)?\n return (\n <Input.Root>\n <Input.TextInput\n ref={ref}\n variant='subdued'\n placeholder={placeholder ? 'Add row...' : undefined}\n classNames={['is-full', textPadding, cell?.classNames]}\n value={value ?? ''}\n onBlur={handleSave}\n onChange={(event) => setValue(event.target.value)}\n onKeyDown={(event) => (event.key === 'Enter' && handleSave()) || (event.key === 'Escape' && handleCancel())}\n />\n </Input.Root>\n );\n};\n\nconst parseNumber = (text?: string) => (text?.trim().length ? Number(text) : NaN);\n\nconst displayNumber = (value?: number, digits?: number) =>\n value || value === 0\n ? value.toLocaleString(undefined, {\n minimumFractionDigits: digits ?? 0,\n maximumFractionDigits: digits ?? 2,\n })\n : '';\n\nconst NumberBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, number>) => {\n const { onUpdate, digits } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n const value = cellContext.getValue();\n const [text, setText] = useState<string>(displayNumber(value, digits));\n const { findPrevFocusable } = useFocusFinders();\n const ref = useRef<HTMLInputElement | null>(null);\n\n // Update display value if `digits` changes and input is not in focus.\n useEffect(() => {\n (!document.activeElement || document.activeElement !== ref.current) && setText(displayNumber(value, digits));\n }, [digits, value]);\n\n const handleEdit = () => setText(value !== undefined ? String(value) : '');\n\n // TODO(burdon): Property is encoded as float (e.g., 6.1 => 6.099)\n const handleSave = () => {\n const nextValue = parseNumber(text);\n\n if (!isNaN(nextValue)) {\n onUpdate?.(cellContext.row.original, cellContext.column.id, nextValue);\n setText(displayNumber(nextValue, digits));\n } else {\n // Reset the text to display the original value without updating the model.\n setText(displayNumber(value, digits));\n }\n\n // Shift focus only if input is focused on save (e.g. on `Enter`).\n ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();\n };\n\n const _handleCancel = () => {\n setText(displayNumber(value, digits));\n ref.current && findPrevFocusable(ref.current)?.focus();\n };\n\n return (\n <Input.Root>\n <Input.TextInput\n ref={ref}\n variant='subdued'\n value={text}\n classNames={['is-full text-end font-mono', textPadding]}\n onBlur={handleSave}\n onFocus={handleEdit}\n onChange={({ target: { value } }) => setText(value)}\n onKeyDown={(event) => {\n // TODO(thure): `Escape` is reserved for blurring the input and moving focus to the cell\n return /* (event.key === 'Escape' && handleCancel()) || */ event.key === 'Enter' && handleSave();\n }}\n />\n </Input.Root>\n );\n};\n\nconst RowSelectorBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, unknown>) => {\n const { cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, unknown>;\n const { row } = cellContext;\n\n const checked = row.getCanSelect()\n ? row.getIsSelected()\n : row.getCanSelectSubRows() && (row.getIsSomeSelected() ? 'indeterminate' : row.getIsAllSubRowsSelected());\n\n return (\n <div className='flex justify-center w-full h-full' role='presentation'>\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={[cell?.classNames]}\n checked={checked}\n onCheckedChange={(event) => {\n if (row.getCanSelect()) {\n row.getToggleSelectedHandler()(event);\n }\n }}\n disabled={!(row.getCanSelect() || row.getCanSelectSubRows())}\n />\n </Input.Root>\n </div>\n );\n};\n\nconst SwitchBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, boolean>) => {\n const { onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, boolean>;\n const value = cellContext.getValue();\n return (\n <Input.Root>\n <Input.Switch\n classNames='block mli-auto'\n onClick={(event) => event.stopPropagation()}\n disabled={!onUpdate}\n checked={!!value}\n onCheckedChange={(value) => {\n onUpdate?.(cellContext.row.original, cellContext.column.id, !!value);\n }}\n />\n </Input.Root>\n );\n};\n\n/**\n * Util to create column definitions.\n */\nexport class ColumnBuilder<TData extends RowData> {\n /**\n * Combobox value\n */\n combobox({\n label,\n classNames,\n model,\n onUpdate,\n ...props\n }: ComboboxColumnOptions<TData>): Partial<ColumnDef<TData, any>> {\n return {\n minSize: 100,\n header: (column) => {\n return label ?? column.header.id;\n },\n cell:\n model && onUpdate\n ? ComboboxBuilderCell\n : (cellContext) => {\n const cellValue = cellContext.getValue();\n return <div className={mx('truncate', classNames)}>{cellValue ? model?.getText(cellValue) : ''}</div>;\n },\n ...props,\n meta: {\n ...props.meta,\n model,\n onUpdate,\n cell: { classNames, ...props.meta?.cell },\n },\n };\n }\n\n /**\n * String formats.\n */\n string({ label, classNames, onUpdate, ...props }: StringColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, string>\n > {\n return {\n minSize: 100,\n // TODO(burdon): Default.\n header: (column) => {\n return label ?? column.header.id;\n },\n cell: onUpdate\n ? StringBuilderCell\n : (cell) => {\n let value = cell.getValue();\n // TODO(burdon): Hack to support automerge.\n if (typeof value === 'object' && (value as any)?.__typename === 'dxos.Text.v0') {\n value = (value as any).content;\n }\n\n return <div className={mx('truncate', textPadding, classNames)}>{value}</div>;\n },\n ...props,\n meta: {\n ...props.meta,\n onUpdate,\n cell: { ...props.meta?.cell, classNames },\n },\n };\n }\n\n /**\n * Number formats.\n */\n number({ label, minSize, classNames, digits, onUpdate, ...props }: NumberColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, number>\n > {\n return {\n size: 100,\n minSize: 100,\n header: (cell) => label ?? cell.header.id,\n cell: NumberBuilderCell,\n ...props,\n meta: {\n ...props.meta,\n onUpdate,\n digits,\n header: { ...props.meta?.header },\n cell: { ...props.meta?.cell, classNames },\n },\n };\n }\n\n /**\n * Date formats.\n */\n // TODO(burdon): Date picker (pluggable renderers?)\n date({ label, format: formatSpec, relative, classNames, ...props }: DateColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, Date>\n > {\n return {\n size: 220, // TODO(burdon): Depends on format.\n minSize: 100,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n\n try {\n const str = value\n ? formatSpec\n ? format(value, formatSpec)\n : relative\n ? formatDistanceToNow(value, { addSuffix: true })\n : value.toISOString()\n : undefined;\n\n return <div className={mx(textPadding, classNames)}>{str}</div>;\n } catch (err) {\n log.info('formatError', { value });\n return null;\n }\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames } },\n };\n }\n\n /**\n * PublicKey with tooltip.\n */\n key({ label, tooltip, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return {\n size: 94,\n minSize: 94,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n if (!value) {\n return;\n }\n\n // TODO(burdon): Factor out styles.\n const element = value.truncate();\n if (!tooltip) {\n return element;\n }\n\n return (\n <Tooltip.Provider>\n <Tooltip.Root>\n <Tooltip.Trigger>{element}</Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n <Tooltip.Arrow />\n <ClipboardText\n onClick={(ev) => {\n ev.stopPropagation(); // Prevent select row.\n void navigator.clipboard.writeText(value.toHex());\n }}\n />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },\n };\n }\n\n /**\n * Row selector\n */\n selectRow({ classNames, onUpdate, id = 'selectRow' }: SelectRowColumnOptions<TData> = {}): Parameters<\n ColumnHelper<TData>['display']\n >[0] {\n return {\n id,\n size: 32,\n enableResizing: false,\n meta: { onUpdate, cell: { classNames } },\n header: ({ table }) => {\n const { rowsSelectable } = useTableContext();\n const checked = table.getIsSomeRowsSelected() ? 'indeterminate' : table.getIsAllRowsSelected();\n\n return rowsSelectable === 'multi' ? (\n <div className='flex justify-center w-full h-full' role='presentation'>\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={['mli-auto', classNames]}\n checked={checked}\n onCheckedChange={() => table.toggleAllRowsSelected()}\n />\n </Input.Root>\n </div>\n ) : null;\n },\n cell: RowSelectorBuilderCell,\n };\n }\n\n /**\n * Switch\n */\n switch({ label, classNames, onUpdate, ...props }: SwitchColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, boolean>\n > {\n return {\n size: 50,\n minSize: 50,\n header: (column) => label ?? column.header.id,\n // TODO(Zan): Implement sort algorithm\n enableSorting: true,\n cell: SwitchBuilderCell,\n ...props,\n meta: { ...props.meta, onUpdate, cell: { ...props.meta?.cell, classNames: [textPadding, classNames] } },\n };\n }\n\n /**\n * Icon based on boolean value.\n */\n icon({ label, size, on, off, ...props }: IconColumnOptions<TData> = {}): Partial<ColumnDef<TData, boolean>> {\n const IconOn = on?.Icon ?? Check;\n const IconOff = off?.Icon ?? X;\n return {\n size: size ?? 32,\n // TODO(Zan): Implement sort algorithm\n enableSorting: false,\n header: (column) => <div className={'justify-center'}>{label ?? column.header.id}</div>,\n cell: (cell) => {\n const value = cell.getValue();\n if (value) {\n return <IconOn className={mx('block mli-auto', getSize(6), on?.className ?? 'text-green-700')} />;\n } else if (value === false) {\n return <IconOff className={mx('block mli-auto', getSize(6), off?.className ?? 'text-red-700')} />;\n } else {\n return null;\n }\n },\n ...props,\n };\n }\n\n /**\n * This display column type is for nested/unhandled data to appear as JSON.\n */\n display({ label, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return {\n size: 120,\n minSize: 120,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n\n return (\n <div className='overflow-scroll'>\n <code className='text-xs'>{JSON.stringify(value)}</code>\n </div>\n );\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },\n };\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as AST from '@effect/schema/AST';\nimport type * as S from '@effect/schema/Schema';\n\nimport { type ColumnType } from './types';\n\nexport type ClassifiedColumnType = ColumnType | 'display';\n\n// TODO(burdon): Rename getX? and return typed array?\nexport const classifySchemaProperties = (schema: S.Schema<any, any>): [string, ClassifiedColumnType][] => {\n const recurse = (node: AST.AST, path: string[], acc: [string, ClassifiedColumnType][]) => {\n const properties = AST.getPropertySignatures(node);\n properties.forEach((prop) => {\n const propName = prop.name.toString();\n\n if (prop.isOptional) {\n const unwrappedAst = unwrapOptionProperty(prop);\n if (isStruct(unwrappedAst)) {\n return recurse(unwrappedAst, [...path, propName], acc);\n }\n }\n\n if (isStruct(prop.type)) {\n recurse(prop.type, [...path, propName], acc);\n } else {\n acc.push([path.concat(propName).join('.'), propertyToColumn(prop)]);\n }\n });\n\n return acc;\n };\n\n return recurse(schema.ast, [], []);\n};\n\nconst isStruct = (node: AST.AST) => AST.isTypeLiteral(node);\n\nconst isOptionalUnion = (prop: AST.PropertySignature) => AST.isUnion(prop.type) && prop.isOptional;\n\nconst unwrapOptionProperty = (prop: AST.PropertySignature) => {\n if (!isOptionalUnion(prop)) {\n throw new Error(`Not an optional property: ${String(prop.name)}`);\n }\n\n if (!AST.isUnion(prop.type)) {\n throw new Error(`Not a union type: ${String(prop.name)}`);\n }\n\n const [type, _undefinedCase] = prop.type.types;\n return type;\n};\n\nconst typeToColumn = (type: AST.AST): ClassifiedColumnType => {\n if (AST.isStringKeyword(type)) {\n return 'string';\n } else if (AST.isNumberKeyword(type)) {\n return 'number';\n } else if (AST.isBooleanKeyword(type)) {\n return 'boolean';\n }\n\n if (AST.isRefinement(type)) {\n return typeToColumn(type.from);\n }\n\n // TODO(zan): How should we be thinking about transformations?\n // - Which of these are we storing in the database?\n // - For types that aren't the 'DateFromString' transformation, should we be using the 'from' or 'to' type?\n\n if (AST.isTransform(type)) {\n const identifier = AST.getIdentifierAnnotation(type);\n if (identifier._tag === 'Some') {\n if (identifier.value === 'DateFromString') {\n return 'date';\n }\n }\n }\n\n return 'display';\n};\n\nconst propertyToColumn = (prop: AST.PropertySignature): ClassifiedColumnType => {\n let type = prop.type;\n if (prop.isOptional) {\n type = unwrapOptionProperty(prop);\n }\n\n return typeToColumn(type);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ColumnDef } from '@tanstack/react-table';\n\nimport type { S } from '@dxos/echo-schema';\n\nimport { classifySchemaProperties } from './schema';\nimport { createColumnBuilder } from '../helpers';\n\nexport const schemaToColumnDefs = <T>(schema: S.Schema<T, any>): ColumnDef<T, any>[] => {\n const { helper, builder } = createColumnBuilder<T>();\n\n const classified = classifySchemaProperties(schema);\n return classified.map(([name, type]) => {\n const propertyKey = name.toString();\n\n let column: Partial<ColumnDef<any, any>> | undefined;\n switch (type) {\n case 'string': {\n column = builder.string({ label: propertyKey });\n break;\n }\n case 'number': {\n column = builder.number({ label: propertyKey });\n break;\n }\n case 'boolean': {\n column = builder.switch({ label: propertyKey });\n break;\n }\n case 'date': {\n column = builder.date({ label: propertyKey });\n break;\n }\n case 'display': {\n column = builder.display({ label: propertyKey, id: propertyKey });\n break;\n }\n default: {\n throw new Error(`Unhandled column type: ${type}`);\n }\n }\n\n return helper.accessor(propertyKey as any, column);\n });\n};\n"],
5
- "mappings": "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",
6
- "names": ["translationKey", "CaretDown", "React", "useCallback", "useState", "Popover", "useTranslation", "PopoverCombobox", "descriptionText", "getSize", "mx", "staticPlaceholderText", "initialItems", "model", "value", "getId", "label", "getText", "data", "CellCombobox", "onValueChange", "t", "useTranslation", "translationKey", "items", "setItems", "useState", "loading", "setLoading", "searchInputValue", "setSearchInputValue", "handleSearchInputValueChange", "text", "query", "reduce", "acc", "item", "handleValueChange", "useCallback", "id", "PopoverCombobox", "Root", "placeholder", "Trigger", "variant", "classNames", "span", "className", "mx", "staticPlaceholderText", "CaretDown", "weight", "getSize", "Content", "shouldFilter", "Input", "List", "length", "p", "descriptionText", "Empty", "Object", "entries", "map", "Item", "key", "onSelect", "Popover", "Arrow", "X", "GearSix", "CaretDown", "ArrowDown", "ArrowUp", "ArrowRight", "ArrowLeft", "React", "useRef", "useState", "useCallback", "Button", "DensityProvider", "Popover", "DropdownMenu", "getSize", "mx", "Check", "Trash", "X", "React", "useRef", "useState", "Button", "Input", "Select", "Separator", "useTranslation", "getSize", "mx", "safeParseInt", "Section", "children", "className", "React", "div", "role", "mx", "ColumnSettingsForm", "column", "tableDef", "tablesToReference", "onUpdate", "onDelete", "onClose", "formState", "setFormState", "useState", "prop", "id", "refTable", "refProp", "type", "String", "label", "digits", "propRef", "useRef", "t", "useTranslation", "translationKey", "handleCancel", "handleSave", "length", "match", "current", "focus", "columns", "find", "c", "safeParseInt", "handleDelete", "Input", "Root", "Label", "classNames", "TextInput", "placeholder", "value", "onChange", "event", "prevState", "target", "autoFocus", "ref", "replace", "Select", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "map", "Option", "key", "filter", "name", "Separator", "Button", "variant", "onClick", "span", "Check", "getSize", "ns", "X", "Trash", "useCallback", "useEffect", "useState", "useOnTransition", "useColumnResizing", "columns", "onColumnResize", "columnsInitialised", "setColumnsInitialised", "useState", "columnSizing", "setColumnSizing", "useEffect", "filter", "column", "size", "prop", "undefined", "reduce", "state", "columnSizingInfo", "setColumnSizingInfo", "notifyColumnResize", "useCallback", "useOnTransition", "isResizingColumn", "v", "useState", "React", "useContext", "createContext", "TableContext", "createContext", "TableProvider", "children", "value", "React", "Provider", "useTableContext", "context", "useContext", "useColumnSorting", "columnSorting", "setColumnSorting", "useState", "sortColumn", "columnId", "sortDirection", "id", "desc", "clearColumnSorting", "sorting", "useSortColumn", "column", "useTableContext", "initialSortDirection", "setInitialSortDirection", "columnSort", "find", "s", "undefined", "canSort", "getCanSort", "updateColumnSort", "direction", "onToggleSort", "onSelectSort", "onClearSort", "useCallback", "useEffect", "useState", "usePinLastRow", "pinLastRow", "table", "data", "scrollContextRef", "useTableRootContext", "pinnedRowKey", "setPinnedRowKey", "useState", "scrollToBottom", "useCallback", "element", "current", "scrollHeight", "requestAnimationFrame", "scrollTo", "top", "pinRow", "rowToPin", "resetRowPinning", "pin", "id", "clearRowPinning", "undefined", "pinLastRowCallback", "rows", "getRowModel", "length", "lastRow", "useEffect", "useControllableState", "useCallback", "useRowSelection", "props", "rowSelection", "setRowSelection", "useControllableState", "prop", "onChange", "onRowSelectionChange", "defaultProp", "defaultRowSelection", "handleRowSelectionChange", "useCallback", "updaterOrValue", "nextRowSelection", "rowsSelectable", "nextRowSelectionKey", "Object", "keys", "filter", "id", "ColumnMenu", "column", "columnOrderable", "columnPosition", "onColumnReorder", "props", "title", "label", "length", "id", "header", "context", "canSort", "sortDirection", "onSelectSort", "onToggleSort", "onClearSort", "useSortColumn", "columnSettingsAnchorRef", "useRef", "isColumnSettingsOpen", "setIsColumnSettingsOpen", "useState", "shouldPreventFocusOnClose", "onOpenColumnSettings", "useCallback", "current", "onDropdownCloseAutoFocus", "event", "preventDefault", "React", "div", "className", "SortIndicator", "direction", "onClick", "DropdownMenu", "Root", "modal", "Popover", "open", "onOpenChange", "Trigger", "ref", "asChild", "Anchor", "Button", "variant", "CaretDown", "getSize", "Portal", "Content", "onCloseAutoFocus", "sideOffset", "collisionPadding", "Viewport", "Item", "span", "ArrowUp", "ArrowDown", "X", "ArrowLeft", "mx", "ArrowRight", "GearSix", "Arrow", "classNames", "DensityProvider", "density", "ColumnSettingsForm", "onClose", "undefined", "icon", "Slot", "getCoreRowModel", "getSortedRowModel", "useReactTable", "getGroupedRowModel", "getExpandedRowModel", "React", "Fragment", "useCallback", "useEffect", "useState", "useContext", "useDefaultValue", "mx", "useArrowNavigationGroup", "flexRender", "React", "useContext", "useVirtualizer", "createContext", "useRef", "useState", "useTableRootContext", "scrollContextRef", "useRef", "tableCount", "setTableCount", "useState", "virtualizer", "useVirtualizer", "getScrollElement", "current", "count", "overscan", "estimateSize", "dispatch", "action", "type", "TableRootContext", "createContext", "modalSurface", "focusRing", "ghostSelected", "ghostSelectedCurrent", "groupBorder", "mx", "currentRow", "selectedRow", "flushPadding", "textPadding", "headPadding", "gridCellFocusRing", "tableRoot", "fullWidth", "etc", "mx", "groupTh", "_props", "theadRoot", "header", "stickyHeader", "theadTr", "theadTh", "border", "groupBorder", "theadResizeRoot", "isResizing", "tbodyRoot", "tbodyTr", "canBeCurrent", "isPinned", "ghostSelectedCurrent", "ghostSelected", "focusRing", "tdRoot", "isGrid", "tdContent", "tfootRoot", "modalSurface", "tfootTr", "tfootTh", "useFocusableGroup", "React", "CELL_NAME", "FocusableCell", "cell", "children", "tableContext", "useTableContext", "domAttributes", "useFocusableGroup", "tabBehavior", "className", "tdRoot", "column", "columnDef", "meta", "classNames", "React", "td", "tabIndex", "StaticCell", "Cell", "isGrid", "Root", "displayName", "TABLE_BODY_NAME", "TableBody", "rows", "table", "keyAccessor", "currentDatum", "debug", "expand", "isGrid", "onDatumClick", "useTableContext", "rowSelection", "getState", "domAttributes", "useArrowNavigationGroup", "axis", "canBeCurrent", "virtualizer", "useContext", "TableRootContext", "React", "tbody", "map", "row", "isCurrent", "original", "isSelected", "id", "isPinned", "getIsPinned", "classNames", "tbodyTr", "tr", "key", "className", "data-index", "index", "ref", "measureElement", "tabIndex", "onClick", "onKeyUp", "td", "getVisibleCells", "cell", "Cell", "flexRender", "column", "columnDef", "getContext", "displayName", "flexRender", "React", "TABLE_FOOT_NAME", "TableFooter", "props", "tableContext", "useTableContext", "table", "expand", "debug", "footers", "getFooterGroups", "React", "tfoot", "className", "tfootRoot", "map", "footerGroup", "tr", "key", "id", "tfootTr", "th", "headers", "footer", "tfootTh", "column", "columnDef", "meta", "classNames", "isPlaceholder", "flexRender", "getContext", "displayName", "flexRender", "React", "TABLE_HEAD_NAME", "TableHead", "_props", "tableContext", "useTableContext", "headerGroups", "table", "getHeaderGroups", "React", "thead", "className", "theadRoot", "map", "headerGroup", "tr", "key", "id", "theadTr", "debug", "th", "style", "width", "headers", "header", "isResizing", "column", "getIsResizing", "onResize", "getResizeHandler", "resizable", "columnDef", "meta", "getSize", "theadTh", "classNames", "isPlaceholder", "flexRender", "getContext", "div", "theadResizeRoot", "onDoubleClick", "resetSize", "onMouseDown", "onTouchStart", "expand", "displayName", "TableRoot", "children", "contextValue", "useTableRootContext", "React", "TableRootContext", "Provider", "value", "TableViewport", "classNames", "asChild", "props", "scrollContextRef", "useContext", "classes", "mx", "Slot", "ref", "div", "role", "className", "TablePrimitive", "onColumnResize", "columnVisibility", "header", "rowsSelectable", "debug", "onDataSelectionChange", "pinLastRow", "columns", "useDefaultValue", "incomingData", "data", "setData", "useState", "forceUpdate", "useCallback", "useEffect", "JSON", "stringify", "TableProvider", "UntypedTableProvider", "columnSizing", "setColumnSizing", "columnSizingInfo", "setColumnSizingInfo", "useColumnResizing", "rowSelection", "handleRowSelectionChange", "useRowSelection", "grouping", "handleGroupingChange", "columnSorting", "useColumnSorting", "table", "useReactTable", "meta", "defaultColumn", "size", "maxSize", "state", "sorting", "columnResizeMode", "enableColumnResizing", "onColumnSizingChange", "onColumnSizingInfoChange", "getCoreRowModel", "getSortedRowModel", "getExpandedRowModel", "getGroupedRowModel", "length", "undefined", "onGroupingChange", "enableMultiRowSelection", "enableRowSelection", "onRowSelectionChange", "enableSorting", "enableColumnPinning", "debugTable", "Object", "keys", "map", "id", "getRowModel", "rowsById", "original", "usePinLastRow", "expand", "isGrid", "TableImpl", "footer", "fullWidth", "useTableContext", "pre", "code", "getState", "isResizingColumn", "TableComponent", "MemoizedVirtualisedTableContent", "VirtualizedTableContent", "tableRoot", "style", "width", "getTotalSize", "TableHead", "GroupedTableContent", "TableFooter", "virtualizer", "dispatch", "centerRows", "getCenterRows", "pinnedRows", "type", "count", "getBottomRows", "_", "getVirtualItems", "virtualRows", "totalSize", "paddingTop", "start", "paddingBottom", "end", "rowsToRender", "virtualRow", "index", "filter", "r", "Fragment", "tbody", "tr", "td", "height", "TableBody", "rows", "memo", "getHeaderGroups", "row", "i", "key", "thead", "th", "colSpan", "headers", "groupTh", "String", "getGroupingValue", "subRows", "Table", "Root", "Viewport", "Main", "useFocusFinders", "Check", "ClipboardText", "X", "createColumnHelper", "format", "formatDistanceToNow", "React", "useCallback", "useEffect", "useRef", "useState", "log", "Input", "Tooltip", "getSize", "mx", "createColumnBuilder", "helper", "createColumnHelper", "builder", "ColumnBuilder", "ComboboxBuilderCell", "cellContext", "model", "onUpdate", "column", "columnDef", "meta", "React", "CellCombobox", "value", "getValue", "onValueChange", "row", "original", "id", "StringBuilderCell", "ref", "useRef", "findPrevFocusable", "useFocusFinders", "cell", "initialValue", "getInitialValue", "useCallback", "content", "setValue", "useState", "useEffect", "handleSave", "current", "document", "activeElement", "focus", "handleCancel", "placeholder", "columns", "table", "getVisibleFlatColumns", "rowCount", "getRowModel", "rows", "length", "index", "Input", "Root", "TextInput", "variant", "undefined", "classNames", "textPadding", "onBlur", "onChange", "event", "target", "onKeyDown", "key", "parseNumber", "text", "trim", "Number", "NaN", "displayNumber", "digits", "toLocaleString", "minimumFractionDigits", "maximumFractionDigits", "NumberBuilderCell", "setText", "handleEdit", "String", "nextValue", "isNaN", "_handleCancel", "onFocus", "RowSelectorBuilderCell", "checked", "getCanSelect", "getIsSelected", "getCanSelectSubRows", "getIsSomeSelected", "getIsAllSubRowsSelected", "div", "className", "role", "Checkbox", "size", "onCheckedChange", "getToggleSelectedHandler", "disabled", "SwitchBuilderCell", "Switch", "onClick", "stopPropagation", "combobox", "label", "props", "minSize", "header", "cellValue", "mx", "getText", "string", "__typename", "number", "date", "format", "formatSpec", "relative", "str", "formatDistanceToNow", "addSuffix", "toISOString", "err", "log", "info", "tooltip", "element", "truncate", "Tooltip", "Provider", "Trigger", "Portal", "Content", "side", "Arrow", "ClipboardText", "ev", "navigator", "clipboard", "writeText", "toHex", "selectRow", "enableResizing", "rowsSelectable", "useTableContext", "getIsSomeRowsSelected", "getIsAllRowsSelected", "toggleAllRowsSelected", "switch", "enableSorting", "icon", "on", "off", "IconOn", "Icon", "Check", "IconOff", "X", "getSize", "display", "code", "JSON", "stringify", "AST", "classifySchemaProperties", "schema", "recurse", "node", "path", "acc", "properties", "getPropertySignatures", "forEach", "prop", "propName", "name", "toString", "isOptional", "unwrappedAst", "unwrapOptionProperty", "isStruct", "type", "push", "concat", "join", "propertyToColumn", "ast", "isTypeLiteral", "isOptionalUnion", "isUnion", "Error", "String", "_undefinedCase", "types", "typeToColumn", "isStringKeyword", "isNumberKeyword", "isBooleanKeyword", "isRefinement", "from", "isTransform", "identifier", "getIdentifierAnnotation", "_tag", "value", "schemaToColumnDefs", "schema", "helper", "builder", "createColumnBuilder", "classified", "classifySchemaProperties", "map", "name", "type", "propertyKey", "toString", "column", "string", "label", "number", "switch", "date", "display", "id", "Error", "accessor"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'table';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'no selection label': ' ',\n 'number column type label': 'Number',\n 'boolean column type label': 'Toggle',\n 'date column type label': 'Date',\n 'string column type label': 'Text',\n 'ref column type label': 'Reference',\n 'digits label': 'Decimal places',\n 'save label': 'Save',\n 'delete label': 'Delete',\n 'column label label': 'Label',\n 'property key label': 'Property',\n 'column type label': 'Type',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CaretDown } from '@phosphor-icons/react';\nimport { type RowData } from '@tanstack/react-table';\nimport React, { useCallback, useState } from 'react';\n\nimport { Popover, useTranslation } from '@dxos/react-ui';\nimport { PopoverCombobox } from '@dxos/react-ui-searchlist';\nimport { descriptionText, getSize, mx, staticPlaceholderText } from '@dxos/react-ui-theme';\n\nimport { type SearchListQueryModel } from '../../helpers';\nimport { translationKey } from '../../translations';\n\nexport type ComboboxCellItems<TData extends RowData> = Record<string, { label: string; data: TData }>;\n\nconst initialItems = <TData extends RowData>(model: SearchListQueryModel<TData>, value?: TData) =>\n value\n ? {\n [model.getId(value)]: { label: model.getText(value), data: value },\n }\n : {};\n\nexport const CellCombobox = <TData extends RowData>({\n model,\n value,\n onValueChange,\n}: {\n model: SearchListQueryModel<TData>;\n value: TData;\n onValueChange: (value: TData) => void;\n}) => {\n const { t } = useTranslation(translationKey);\n const [items, setItems] = useState<ComboboxCellItems<TData>>(initialItems(model, value));\n const [loading, setLoading] = useState(false);\n const [searchInputValue, setSearchInputValue] = useState('');\n const handleSearchInputValueChange = async (text?: string) => {\n setSearchInputValue(text ?? '');\n setLoading(true);\n const items = await model.query(text);\n setItems(\n items.reduce(\n (acc: ComboboxCellItems<TData>, item) => {\n acc[model.getId(item)] = {\n label: model.getText(item),\n data: item,\n };\n return acc;\n },\n initialItems(model, value),\n ),\n );\n setLoading(false);\n };\n\n const handleValueChange = useCallback(\n (id: string) => {\n onValueChange(items[id]?.data);\n },\n [items, onValueChange],\n );\n\n return (\n <PopoverCombobox.Root placeholder={t('no selection label')}>\n <PopoverCombobox.Trigger variant='ghost' classNames='is-full rounded-none ring-inset'>\n {value ? (\n <>\n <span\n className={mx(\n 'font-normal text-start text-base flex-1 min-is-0 truncate mie-2',\n !value && staticPlaceholderText,\n )}\n >\n {model.getText(value)}\n </span>\n <CaretDown weight='bold' className={getSize(3)} />\n </>\n ) : null}\n </PopoverCombobox.Trigger>\n <PopoverCombobox.Content shouldFilter={false} classNames='is-[--radix-popover-trigger-width]'>\n <PopoverCombobox.Input value={searchInputValue} onValueChange={handleSearchInputValueChange} />\n <PopoverCombobox.List>\n {searchInputValue.length < 1 ? (\n <p className={mx('text-center', descriptionText)}>Start typing to search</p>\n ) : loading ? (\n <p className={mx('text-center', descriptionText)}>Searching…</p>\n ) : (\n <>\n <PopoverCombobox.Empty classNames={['text-center', descriptionText]}>No results</PopoverCombobox.Empty>\n {Object.entries(items).map(([id, { label }]) => (\n <PopoverCombobox.Item key={id} value={id} onSelect={handleValueChange} classNames='truncate'>\n {label}\n </PopoverCombobox.Item>\n ))}\n </>\n )}\n </PopoverCombobox.List>\n <Popover.Arrow />\n </PopoverCombobox.Content>\n </PopoverCombobox.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { X, GearSix, CaretDown, ArrowDown, ArrowUp, ArrowRight, ArrowLeft } from '@phosphor-icons/react';\nimport { type SortDirection, type HeaderContext, type RowData } from '@tanstack/react-table';\nimport React, { useRef, useState, useCallback } from 'react';\n\nimport { Button, DensityProvider, Popover, DropdownMenu } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { ColumnSettingsForm } from './ColumnSettingsForm';\nimport { useSortColumn } from '../../hooks';\nimport { type TableDef, type ColumnProps } from '../../schema';\n\nexport type ColumnMenuProps<TData extends RowData, TValue> = {\n context: HeaderContext<TData, TValue>;\n tablesToReference: TableDef[];\n tableDef: TableDef;\n column: ColumnProps;\n columnOrderable: boolean;\n columnPosition: 'start' | 'end' | undefined;\n onColumnReorder: (columnId: string, direction: 'left' | 'right') => void;\n onUpdate?: (id: string, column: ColumnProps) => void;\n onDelete?: (id: string) => void;\n};\n\nexport const ColumnMenu = <TData extends RowData, TValue>({\n column,\n columnOrderable,\n columnPosition,\n onColumnReorder,\n ...props\n}: ColumnMenuProps<TData, TValue>) => {\n const title = column.label?.length ? column.label : column.id;\n const header = props.context.header;\n\n const { canSort, sortDirection, onSelectSort, onToggleSort, onClearSort } = useSortColumn(header.column);\n\n const columnSettingsAnchorRef = useRef<any>(null);\n\n const [isColumnSettingsOpen, setIsColumnSettingsOpen] = useState(false);\n\n const shouldPreventFocusOnClose = useRef(false);\n\n const onOpenColumnSettings = useCallback(() => {\n shouldPreventFocusOnClose.current = true;\n setIsColumnSettingsOpen(true);\n }, [shouldPreventFocusOnClose, setIsColumnSettingsOpen]); // setIsColumnSettingsOpen is a dependency\n\n const onDropdownCloseAutoFocus = useCallback(\n (event: Event) => {\n if (shouldPreventFocusOnClose.current) {\n event.preventDefault();\n shouldPreventFocusOnClose.current = false;\n }\n },\n [shouldPreventFocusOnClose],\n );\n\n return (\n <div className='flex items-center justify-center justify-between'>\n <div className='flex items-center gap-1 truncate' title={title}>\n <SortIndicator direction={sortDirection} onClick={onToggleSort} />\n <div className='truncate'>{title}</div>\n </div>\n\n <DropdownMenu.Root modal={false}>\n <Popover.Root open={isColumnSettingsOpen} onOpenChange={setIsColumnSettingsOpen} modal={false}>\n <DropdownMenu.Trigger ref={columnSettingsAnchorRef} asChild>\n <Popover.Anchor asChild>\n <Button variant='ghost'>\n <CaretDown className={getSize(4)} />\n </Button>\n </Popover.Anchor>\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content onCloseAutoFocus={onDropdownCloseAutoFocus} sideOffset={4} collisionPadding={8}>\n <DropdownMenu.Viewport>\n {canSort && (\n <>\n <DropdownMenu.Item onClick={() => onSelectSort('asc')}>\n <span className='grow'>Sort ascending</span>\n <span className='opacity-50'>\n <ArrowUp className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onSelectSort('desc')}>\n <span className='grow'>Sort descending</span>\n <span className='opacity-50'>\n <ArrowDown className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n {sortDirection && (\n <DropdownMenu.Item onClick={onClearSort}>\n <span className='grow'>Clear sort</span>\n <span className='opacity-50'>\n <X className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n )}\n </>\n )}\n\n {columnOrderable && (\n <>\n {columnPosition !== 'start' && (\n <DropdownMenu.Item onClick={() => onColumnReorder(header.column.id, 'left')}>\n <span className='grow'>Move left</span>\n <span className='opacity-50'>\n <ArrowLeft className={mx(getSize(4))} />\n </span>\n </DropdownMenu.Item>\n )}\n {columnPosition !== 'end' && (\n <DropdownMenu.Item onClick={() => onColumnReorder(header.column.id, 'right')}>\n <span className='grow'>Move right</span>\n <span className='opacity-50'>\n <ArrowRight className={mx(getSize(4))} />\n </span>\n </DropdownMenu.Item>\n )}\n </>\n )}\n\n <DropdownMenu.Item onClick={onOpenColumnSettings}>\n <span className='grow'>Column settings</span>\n <span className='opacity-50'>\n <GearSix className={mx(getSize(4), 'rotate-90')} />\n </span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n\n <Popover.Portal>\n <Popover.Content>\n <Popover.Viewport classNames='w-60'>\n <DensityProvider density='fine'>\n <ColumnSettingsForm {...props} column={column} onClose={() => setIsColumnSettingsOpen(false)} />\n </DensityProvider>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </DropdownMenu.Root>\n </div>\n );\n};\n\nexport const SortIndicator = ({\n direction,\n onClick,\n}: {\n direction: SortDirection | undefined;\n onClick: (e: any) => void;\n}) => {\n if (direction === undefined) {\n return null;\n }\n\n let icon;\n\n switch (direction) {\n case 'asc':\n icon = <ArrowUp className={getSize(3)} />;\n break;\n case 'desc':\n icon = <ArrowDown className={getSize(3)} />;\n break;\n }\n\n return (\n <div onClick={onClick} className='flex items-center cursor-pointer'>\n {icon}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { Check, Trash, X } from '@phosphor-icons/react';\nimport React, { type FC, type PropsWithChildren, useRef, useState } from 'react';\n\nimport { Button, Input, Select, Separator, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { safeParseInt } from '@dxos/util';\n\nimport { type TableDef, type ColumnProps, type ColumnType } from '../../schema';\nimport { translationKey } from '../../translations';\n\nconst Section: FC<PropsWithChildren & { className?: string }> = ({ children, className }) => (\n <div role='none' className={mx('p-2', className)}>\n {children}\n </div>\n);\n\nexport type ColumnSettingsFormProps = {\n column: ColumnProps;\n tableDef: TableDef;\n tablesToReference: TableDef[];\n onUpdate?: ((id: string, column: ColumnProps) => void) | undefined;\n onDelete?: ((id: string) => void) | undefined;\n onClose?: () => void;\n};\n\nexport const ColumnSettingsForm = ({\n column,\n tableDef,\n tablesToReference,\n onUpdate,\n onDelete,\n onClose,\n}: ColumnSettingsFormProps) => {\n const [formState, setFormState] = useState({\n prop: column.id,\n refTable: column.refTable,\n refProp: column.refProp,\n type: String(column.type),\n label: column.label,\n digits: String(column.digits ?? '0'),\n });\n\n const propRef = useRef<HTMLInputElement>(null);\n const { t } = useTranslation(translationKey);\n\n const handleCancel = () => {\n onClose?.();\n };\n\n const handleSave = () => {\n const { prop, refTable, refProp, type, label, digits } = formState;\n\n // Check valid.\n if (!prop.length || !prop.match(/^[a-zA-Z_].+/i)) {\n propRef.current?.focus();\n return;\n }\n\n // If already exists then check same type.\n const current = tableDef.columns.find((c) => c.id !== column.id && c.id === prop);\n if (current) {\n // TODO(burdon): Allow multiple columns with different refProps. Ensure correct table prop is updated.\n if (current.type !== 'ref' /* || current.ref !== refTable */) {\n // TODO(burdon): Show error.\n propRef.current?.focus();\n return;\n }\n }\n\n onUpdate?.(column.id, {\n id: prop, // TODO(burdon): Make unique.\n prop,\n label,\n type: type as ColumnProps['type'],\n refTable,\n refProp,\n digits: safeParseInt(digits),\n });\n onClose?.();\n };\n\n const handleDelete = () => {\n onDelete?.(column.id);\n onClose?.();\n };\n\n return (\n <div className='flex flex-col gap-1'>\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1'>{t('column label label')}</Input.Label>\n <Input.TextInput\n placeholder='Column label'\n value={formState.label ?? ''}\n onChange={(event) => setFormState((prevState) => ({ ...prevState, label: event.target.value }))}\n autoFocus\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>{t('property key label')}</Input.Label>\n <Input.TextInput\n ref={propRef}\n placeholder='Property key'\n value={formState.prop ?? ''}\n onChange={(event) =>\n setFormState((prevState) => ({ ...prevState, prop: event.target.value.replace(/[^\\w_]/g, '') }))\n }\n />\n </Input.Root>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>{t('column type label')}</Input.Label>\n <Select.Root\n value={formState.type}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, type: value }))}\n >\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {(['number', 'boolean', 'string', 'ref'] as ColumnType[]).map((type) => (\n <Select.Option key={type} value={type}>\n {t(`${type} column type label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </Section>\n {formState.type === 'number' && (\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>{t('digits label')}</Input.Label>\n <Input.TextInput\n value={formState.digits ?? ''}\n onChange={(event) => setFormState((prevState) => ({ ...prevState, digits: event.target.value }))}\n />\n </Input.Root>\n </Section>\n )}\n\n {formState.type === 'ref' && (\n <Section>\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table</Input.Label>\n <Select.Root\n value={formState.refTable}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, refTable: value }))}\n >\n <Select.TriggerButton placeholder='Table' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tablesToReference\n .filter((t) => t.id !== tableDef.id)\n .map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n\n {formState.refTable && (\n <Input.Root>\n <Input.Label classNames='mbe-1 mbs-3'>Table property</Input.Label>\n <Select.Root\n value={formState.refProp}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, refProp: value }))}\n >\n <Select.TriggerButton placeholder='Property' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tablesToReference\n .find((tableDef) => tableDef.id === formState.refTable)\n ?.columns.map(({ id, label }) => (\n <Select.Option key={id} value={id}>\n {label ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n )}\n </Section>\n )}\n\n <Separator classNames='mli-2' />\n\n <Section className='space-b-1.5'>\n <Button variant='primary' classNames='is-full flex gap-2' onClick={handleSave}>\n <span>{t('save label')}</span>\n <div className='grow' />\n <Check className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={handleCancel}>\n <span>{t('cancel label', { ns: 'os' })}</span>\n <div className='grow' />\n <X className={getSize(5)} />\n </Button>\n <Button classNames='is-full flex gap-2' onClick={handleDelete}>\n <span>{t('delete label')}</span>\n <div className='grow' />\n <Trash className={getSize(5)} />\n </Button>\n </Section>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { type ColumnSizingInfoState, type ColumnSizingState } from '@tanstack/react-table';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useOnTransition } from '@dxos/react-ui';\n\nimport { type TableColumnDef } from '../components/Table';\n\nexport const useColumnResizing = ({\n columns,\n onColumnResize,\n}: {\n columns: TableColumnDef<any>[];\n onColumnResize: ((state: Record<string, number>) => void) | undefined;\n}) => {\n const [columnsInitialised, setColumnsInitialised] = useState(false);\n const [columnSizing, setColumnSizing] = useState<ColumnSizingState>({});\n\n useEffect(() => {\n if (columnsInitialised) {\n return;\n }\n\n setColumnSizing(\n columns\n .filter((column) => !!column.size && (column as any).prop !== undefined)\n .reduce<ColumnSizingState>((state, column) => {\n state[(column as any).prop] = column.size!;\n return state;\n }, {}),\n );\n\n setColumnsInitialised(true);\n }, [columns, setColumnSizing]);\n\n const [columnSizingInfo, setColumnSizingInfo] = useState<ColumnSizingInfoState>({} as ColumnSizingInfoState);\n\n // Notify on column resize.\n const notifyColumnResize = useCallback(() => onColumnResize?.(columnSizing), [onColumnResize, columnSizing]);\n useOnTransition(columnSizingInfo.isResizingColumn, (v) => typeof v === 'string', false, notifyColumnResize);\n\n return { columnSizing, columnSizingInfo, setColumnSizing, setColumnSizingInfo };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type SortDirection, type Column, type ColumnSort } from '@tanstack/react-table';\nimport { useState } from 'react';\n\nimport { useTableContext } from '../components/Table/TableContext';\n\nexport const useColumnSorting = () => {\n const [columnSorting, setColumnSorting] = useState<ColumnSort[]>([]);\n\n const sortColumn = (columnId: string, sortDirection: SortDirection) => {\n setColumnSorting([{ id: columnId, desc: sortDirection === 'desc' }]);\n };\n\n const clearColumnSorting = () => {\n setColumnSorting([]);\n };\n\n return { sorting: columnSorting, sortColumn, clearColumnSorting };\n};\n\nexport type ColumnSorting = ReturnType<typeof useColumnSorting>;\n\nexport const useSortColumn = (column: Column<any>) => {\n const { sorting, sortColumn, clearColumnSorting } = useTableContext();\n const [initialSortDirection, setInitialSortDirection] = useState<SortDirection | undefined>();\n\n const columnSort = sorting.find((s) => s.id === column.id);\n const sortDirection = columnSort ? (columnSort.desc ? ('desc' as const) : ('asc' as const)) : undefined;\n\n const canSort = column.getCanSort();\n\n const updateColumnSort = (direction: SortDirection) => {\n sortColumn(column.id, direction);\n };\n\n // Whichever sort is explicitly set first, will be the first sort direction\n // When toggling, we always go to the other direction, and then to unsorted.\n const onToggleSort = () => {\n if (sortDirection === undefined) {\n return;\n }\n\n if (sortDirection === initialSortDirection) {\n updateColumnSort(initialSortDirection === 'asc' ? 'desc' : 'asc');\n } else {\n clearColumnSorting();\n }\n };\n\n const onSelectSort = (direction: SortDirection) => {\n clearColumnSorting();\n setInitialSortDirection(direction);\n updateColumnSort(direction);\n };\n\n const onClearSort = () => {\n clearColumnSorting();\n };\n\n return { canSort, sortDirection, onSelectSort, onToggleSort, onClearSort };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type RowData } from '@tanstack/react-table';\nimport React, { useContext, createContext, type ReactNode } from 'react';\n\nimport { type TableContextValue } from './props';\n\nexport const TABLE_NAME = 'Table';\n\n// Create the context without a default value.\n// The expectation is that the provider will always supply a value, so no need to define a default here.\nconst TableContext = createContext<TableContextValue<RowData>>({} as TableContextValue<RowData>);\n\nexport type TypedTableProvider<TData extends RowData> = {\n (props: TableContextValue<TData> & { children: ReactNode }): JSX.Element;\n displayName: string;\n};\n\nexport const TableProvider: React.FC<TableContextValue<RowData> & { children: ReactNode }> = ({\n children,\n ...value\n}) => {\n return <TableContext.Provider value={value}>{children}</TableContext.Provider>;\n};\n\n// Create a custom hook to consume the context\nexport const useTableContext = <TData extends RowData>(): TableContextValue<TData> => {\n const context = useContext(TableContext as React.Context<TableContextValue<TData>>);\n\n return context;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Row, type Table } from '@tanstack/react-table';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useTableRootContext } from '../components';\n\nexport const usePinLastRow = (pinLastRow: boolean | undefined, table: Table<any>, data: any[]) => {\n const { scrollContextRef } = useTableRootContext();\n const [pinnedRowKey, setPinnedRowKey] = useState<string>();\n\n // Scrolls to the bottom of a scrollable element.\n const scrollToBottom = useCallback(() => {\n const element = scrollContextRef.current;\n const scrollHeight = element?.scrollHeight;\n\n if (element && scrollHeight) {\n requestAnimationFrame(() => element.scrollTo({ top: scrollHeight }));\n }\n }, []);\n\n const pinRow = useCallback(\n (rowToPin: Row<any>) => {\n table.resetRowPinning();\n rowToPin.pin('bottom');\n setPinnedRowKey(rowToPin.id);\n },\n [table],\n );\n\n const clearRowPinning = useCallback(() => {\n table.resetRowPinning();\n setPinnedRowKey(undefined);\n }, [table]);\n\n // Define the logic for pinning the last row in a callback.\n const pinLastRowCallback = useCallback(() => {\n const rows = table.getRowModel().rows;\n\n if (rows.length === 0) {\n return clearRowPinning();\n }\n\n const lastRow = rows[rows.length - 1];\n if (lastRow.id === pinnedRowKey) {\n return;\n }\n\n pinRow(lastRow);\n\n if (pinnedRowKey !== undefined) {\n scrollToBottom();\n }\n }, [table, scrollToBottom, pinnedRowKey]);\n\n // Effect to handle pinning logic when data changes.\n useEffect(() => {\n if (pinLastRow) {\n pinLastRowCallback();\n }\n }, [data, pinLastRow, pinLastRowCallback]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { type OnChangeFn, type RowSelectionState } from '@tanstack/react-table';\nimport { useCallback } from 'react';\n\nimport { type TableProps } from '../components/Table';\n\nexport const useRowSelection = (\n props: Pick<\n TableProps<any>,\n 'rowsSelectable' | 'defaultRowSelection' | 'rowSelection' | 'onRowSelectionChange' | 'rowsSelectable'\n >,\n) => {\n const [rowSelection = {}, setRowSelection] = useControllableState({\n prop: props.rowSelection,\n onChange: props.onRowSelectionChange,\n defaultProp: props.defaultRowSelection,\n });\n\n // TODO(thure): Does @tanstack/react-table really need this intervention? It did seem necessary to enforce single-selection...\n const handleRowSelectionChange = useCallback<OnChangeFn<RowSelectionState>>(\n (updaterOrValue) => {\n const nextRowSelection = typeof updaterOrValue === 'function' ? updaterOrValue(rowSelection) : updaterOrValue;\n if (props.rowsSelectable === 'multi') {\n setRowSelection(nextRowSelection);\n } else if (props.rowsSelectable) {\n const nextRowSelectionKey = Object.keys(nextRowSelection).filter((id) => !rowSelection[id])[0];\n setRowSelection(nextRowSelectionKey ? { [nextRowSelectionKey]: true } : {});\n } else {\n setRowSelection({});\n }\n },\n [props.rowsSelectable, setRowSelection, rowSelection],\n );\n\n return { rowSelection, handleRowSelectionChange };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n type GroupingState,\n type Row,\n type RowData,\n getCoreRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport React, { type ComponentPropsWithoutRef, Fragment, useCallback, useEffect, useState, useContext } from 'react';\n\nimport { type ThemedClassName, useDefaultValue } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { TableBody } from './TableBody';\nimport { type TypedTableProvider, TableProvider as UntypedTableProvider, useTableContext } from './TableContext';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { TableRootContext, useTableRootContext } from './TableRootContext';\nimport { type TableProps } from './props';\nimport { useColumnResizing, useColumnSorting, usePinLastRow, useRowSelection } from '../../hooks';\nimport { groupTh, tableRoot } from '../../theme';\n\ntype TableRootProps = { children: React.ReactNode };\n\nconst TableRoot = ({ children }: TableRootProps) => {\n const contextValue = useTableRootContext();\n return <TableRootContext.Provider value={contextValue}>{children}</TableRootContext.Provider>;\n};\n\ntype TableViewportProps = ThemedClassName<ComponentPropsWithoutRef<typeof Primitive.div>> & {\n asChild?: boolean;\n};\n\nconst TableViewport = ({ children, classNames, asChild, ...props }: TableViewportProps) => {\n const { scrollContextRef } = useContext(TableRootContext);\n\n const classes = mx(classNames);\n\n return asChild ? (\n <Slot ref={scrollContextRef} {...props}>\n {children}\n </Slot>\n ) : (\n <div role='none' className={classes} ref={scrollContextRef} {...props}>\n {children}\n </div>\n );\n};\n\nexport const TablePrimitive = <TData extends RowData>(props: TableProps<TData>) => {\n const {\n role,\n onColumnResize,\n columnVisibility,\n header = true,\n rowsSelectable,\n debug,\n onDataSelectionChange,\n pinLastRow,\n } = props;\n\n const columns = useDefaultValue(props.columns, []);\n const incomingData = useDefaultValue(props.data, []);\n\n const [data, setData] = useState([...incomingData]);\n\n // Reactivity workaround: https://github.com/dxos/dxos/issues/6376.\n const forceUpdate = useCallback(() => setData([...incomingData]), [incomingData]);\n useEffect(() => forceUpdate(), [JSON.stringify(incomingData), forceUpdate]);\n\n const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;\n\n const { columnSizing, setColumnSizing, columnSizingInfo, setColumnSizingInfo } = useColumnResizing({\n columns,\n onColumnResize,\n });\n\n const { rowSelection, handleRowSelectionChange } = useRowSelection(props);\n\n const [grouping, handleGroupingChange] = useState<GroupingState>(props.grouping ?? []);\n useEffect(() => handleGroupingChange(props.grouping ?? []), [handleGroupingChange, props.grouping]);\n\n const columnSorting = useColumnSorting();\n\n const table = useReactTable({\n // Data\n meta: {},\n data,\n\n // Columns\n columns,\n defaultColumn: {\n size: 256, // Required in order remove default width.\n maxSize: 1024,\n },\n\n // State\n state: {\n columnVisibility,\n columnSizing,\n columnSizingInfo,\n sorting: columnSorting.sorting,\n rowSelection,\n grouping,\n },\n\n // Resize columns\n columnResizeMode: 'onChange',\n enableColumnResizing: true,\n onColumnSizingChange: setColumnSizing,\n onColumnSizingInfoChange: setColumnSizingInfo,\n\n // Rows\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n\n // Grouping\n getGroupedRowModel: grouping.length > 1 ? getGroupedRowModel() : undefined,\n onGroupingChange: handleGroupingChange,\n\n enableMultiRowSelection: rowsSelectable === 'multi' ? true : undefined,\n enableRowSelection: rowsSelectable === true ? true : undefined,\n\n onRowSelectionChange: handleRowSelectionChange,\n\n enableSorting: true,\n enableColumnPinning: true,\n\n // Debug\n debugTable: debug,\n });\n\n useEffect(() => {\n onDataSelectionChange?.(Object.keys(rowSelection).map((id) => table.getRowModel().rowsById[id].original));\n }, [onDataSelectionChange, rowSelection, table]);\n\n usePinLastRow(pinLastRow, table, data);\n\n // Create additional expansion column if all columns have fixed width.\n const expand = false; // columns.map((column) => column.size).filter(Boolean).length === columns?.length;\n\n return (\n <TableProvider\n {...{ ...props, ...columnSorting }}\n table={table}\n header={header}\n expand={expand}\n isGrid={role === 'grid' || role === 'treegrid'}\n >\n <TableImpl<TData> debug={false} {...props} />\n </TableProvider>\n );\n};\n\n// TODO(Zan): Smush this into the Table component.\n/**\n * Pure implementation of table outside of context set-up.\n */\nconst TableImpl = <TData extends RowData>(props: TableProps<TData>) => {\n const { debug, classNames, role, footer, grouping, fullWidth } = props;\n const { table } = useTableContext<TData>();\n\n if (debug) {\n return (\n <pre className='font-mono text-xs text-neutral-500 m-1 p-2 ring'>\n <code>{JSON.stringify(table.getState(), undefined, 2)}</code>\n </pre>\n );\n }\n\n const isResizingColumn = table.getState().columnSizingInfo.isResizingColumn;\n\n const TableComponent = isResizingColumn ? MemoizedVirtualisedTableContent : VirtualizedTableContent;\n\n return (\n <table\n role={role}\n className={tableRoot(props, classNames)}\n {...(!fullWidth && { style: { width: table.getTotalSize() } })}\n >\n <TableHead />\n\n {grouping?.length !== 0 ? <TableComponent /> : <GroupedTableContent />}\n\n {footer && <TableFooter />}\n </table>\n );\n};\n\nconst VirtualizedTableContent = () => {\n const { table } = useTableContext();\n const { virtualizer, dispatch } = useContext(TableRootContext);\n\n const centerRows = table.getCenterRows();\n let pinnedRows = [] as Row<unknown>[];\n\n useEffect(() => {\n dispatch({ type: 'updateTableCount', count: centerRows.length });\n }, [centerRows.length]);\n\n try {\n // TODO(zan): Work out how to sync the row pinning with rendering\n // This is a hack because the first call to this function after a row is deleted will throw an error\n // because the row index is no longer in the table\n // The pin last row hook updates the pinned row key after the row is deleted\n pinnedRows = table.getBottomRows();\n } catch (_) {} // Ignore error\n\n const { getTotalSize, getVirtualItems } = virtualizer;\n\n const virtualRows = getVirtualItems();\n const totalSize = getTotalSize();\n\n const paddingTop = virtualRows.length > 0 ? virtualRows?.[0]?.start || 0 : 0;\n const paddingBottom = virtualRows.length > 0 ? totalSize - (virtualRows?.[virtualRows.length - 1]?.end || 0) : 0;\n\n const rowsToRender = [...virtualRows.map((virtualRow) => centerRows[virtualRow.index]), ...pinnedRows].filter(\n (r) => !!r,\n );\n\n return (\n <Fragment>\n {paddingTop > 0 && (\n <tbody role='none'>\n <tr role='none'>\n <td style={{ height: `${paddingTop}px` }} role='none' />\n </tr>\n </tbody>\n )}\n <TableBody rows={rowsToRender} />\n {paddingBottom > 0 && (\n <tbody role='none'>\n <tr role='none'>\n <td style={{ height: `${paddingBottom}px` }} role='none' />\n </tr>\n </tbody>\n )}\n </Fragment>\n );\n};\n\nexport const MemoizedVirtualisedTableContent = React.memo(VirtualizedTableContent);\n\nconst GroupedTableContent = () => {\n const {\n table: { getGroupedRowModel, getHeaderGroups, getState },\n debug,\n } = useTableContext();\n\n return (\n <>\n {getGroupedRowModel().rows.map((row, i) => {\n return (\n <Fragment key={i}>\n {/* TODO(burdon): Customize group header renderer. */}\n <thead>\n <tr>\n {debug && <th />}\n <th\n // TODO(burdon): Calculate row span.\n colSpan={getHeaderGroups()[0].headers.length}\n className={groupTh({})}\n >\n {getState().grouping[0]}[{String(row.getGroupingValue(getState().grouping[0]))}]\n </th>\n </tr>\n </thead>\n <TableBody rows={row.subRows} />\n </Fragment>\n );\n })}\n </>\n );\n};\n\n// TODO(burdon): Floating \"add row\" jumps by 1 pixel on scroll.\n// TODO(burdon): Blue focus highlight is clipped by 1px on the left.\n// TODO(burdon): Focused row and focus ring passes over the sticky header.\nexport const Table = {\n Root: TableRoot,\n Viewport: TableViewport,\n Main: TablePrimitive,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { flexRender, type Row, type RowData } from '@tanstack/react-table';\nimport React, { useContext } from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { TableRootContext } from './TableRootContext';\nimport { tbodyTr } from '../../theme';\nimport { Cell } from '../Cell/Cell';\n\nconst TABLE_BODY_NAME = 'TableBody';\n\ntype TableBodyProps = {\n rows: Row<RowData>[];\n};\n\nconst TableBody = ({ rows }: TableBodyProps) => {\n const { table, keyAccessor, currentDatum, debug, expand, isGrid, onDatumClick } = useTableContext();\n\n const rowSelection = table.getState().rowSelection;\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const canBeCurrent = !isGrid && !!onDatumClick;\n\n const { virtualizer } = useContext(TableRootContext);\n\n return (\n <tbody {...(isGrid && domAttributes)}>\n {rows.map((row) => {\n const isCurrent = currentDatum === row.original;\n const isSelected = rowSelection?.[row.id];\n\n const isPinned = row.getIsPinned();\n\n const classNames = tbodyTr({ canBeCurrent, isPinned: isPinned !== false });\n\n return (\n <tr\n key={keyAccessor ? keyAccessor(row.original) : row.id}\n className={classNames}\n data-index={row.index}\n ref={virtualizer.measureElement}\n {...(isCurrent && { 'aria-current': 'location' })}\n {...(isSelected && { 'aria-selected': 'true' })}\n {...(canBeCurrent && {\n tabIndex: 0,\n onClick: () => {\n onDatumClick(row.original);\n },\n onKeyUp: ({ key }) => {\n if (key === 'Enter' || key === ' ') {\n onDatumClick(row.original);\n }\n },\n })}\n >\n {debug && <td>{row.id}</td>}\n\n {row.getVisibleCells().map((cell) => {\n return (\n <Cell key={cell.id} cell={cell}>\n {flexRender(cell.column.columnDef.cell, { className: 'pli-2', ...cell.getContext() })}\n </Cell>\n );\n })}\n\n {expand && <td />}\n </tr>\n );\n })}\n </tbody>\n );\n};\n\nTableBody.displayName = TABLE_BODY_NAME;\n\nexport { TableBody };\n\nexport type { TableBodyProps };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { createContext, useRef, useState } from 'react';\n\ntype TableRootContextActions = { type: 'updateTableCount'; count: number };\n\nexport const useTableRootContext = () => {\n const scrollContextRef = useRef<HTMLDivElement>(null);\n const [tableCount, setTableCount] = useState(0);\n\n const virtualizer = useVirtualizer({\n getScrollElement: () => scrollContextRef?.current ?? null,\n count: tableCount,\n overscan: 8,\n estimateSize: () => 40,\n });\n\n const dispatch = (action: TableRootContextActions) => {\n switch (action.type) {\n case 'updateTableCount':\n setTableCount(action.count);\n break;\n\n default:\n break;\n }\n };\n\n return { scrollContextRef, virtualizer, dispatch };\n};\n\nexport type TableRootContextValue = ReturnType<typeof useTableRootContext>;\n\n// Create the context without a default value.\n// The expectation is that the provider will always supply a value, so no need to define a default here.\nexport const TableRootContext = createContext<TableRootContextValue>({} as TableRootContextValue);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type CellContext } from '@tanstack/react-table';\n\nimport { modalSurface, focusRing, ghostSelected, ghostSelectedCurrent, groupBorder, mx } from '@dxos/react-ui-theme';\nimport { type ComponentFunction } from '@dxos/react-ui-types';\n\nimport { type TableContextValue, type TableFlags } from './components';\n\nexport const currentRow = '!bg-neutral-75 !dark:bg-neutral-850';\nexport const selectedRow = '!bg-primary-100 dark:!bg-primary-700';\nexport const flushPadding = 'pli-0 plb-0';\nexport const textPadding = 'pli-2 plb-0.5';\nexport const headPadding = 'pli-2 plb-1';\n\nexport const gridCellFocusRing = 'focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400';\n\n//\n// table\n//\n\nexport type TableStyleProps = Partial<TableContextValue<any>>;\n\nexport const tableRoot: ComponentFunction<TableStyleProps> = ({ fullWidth }, ...etc) =>\n mx('table-fixed', fullWidth && 'is-full', ...etc);\n\nexport const groupTh: ComponentFunction<TableStyleProps> = (_props, ...etc) =>\n mx('text-start font-medium', flushPadding, ...etc);\n\n//\n// thead\n//\n\nexport type TheadStyleProps = Partial<TableFlags>;\n\nexport const theadRoot: ComponentFunction<TheadStyleProps> = ({ header, stickyHeader }, ...etc) =>\n mx(\n header ? stickyHeader && 'sticky block-start-[--sticky-top] z-[1]' : 'collapse',\n header && 'base-surface',\n 'drop-shadow-sm',\n ...etc,\n );\n\nexport const theadTr: ComponentFunction<TheadStyleProps> = (_props, ...etc) => mx('group', ...etc);\n\nexport const theadTh: ComponentFunction<TheadStyleProps> = ({ border }, ...etc) =>\n mx(\n 'relative',\n 'text-start font-medium select-none truncate',\n headPadding,\n border && groupBorder,\n border && 'border border-t-0 border-b-0 border-neutral-200',\n ...etc,\n );\n\nexport const theadResizeRoot: ComponentFunction<{ isResizing: boolean }> = ({ isResizing }) => {\n return mx(\n 'absolute h-full w-[4px] top-0 right-0',\n 'cursor-col-resize',\n 'user-select-none',\n 'touch-action-none',\n !isResizing && 'group-hover:bg-neutral-100 dark:group-hover:bg-neutral-800',\n 'pointer-coarse:bg-neutral-100 dark:pointer-coarse:bg-neutral-800',\n isResizing && 'bg-primary-500 dark:bg-primary-400',\n );\n};\n\n//\n// tbody\n//\n\nexport type TbodyStyleProps = Partial<TableContextValue<any>>;\nexport const tbodyRoot: ComponentFunction<TbodyStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport type TbodyTrStyleProps = Partial<{ canBeCurrent?: boolean; isPinned?: boolean }>;\nexport const tbodyTr: ComponentFunction<TbodyTrStyleProps> = ({ canBeCurrent, isPinned }, ...etc) =>\n mx(\n 'group',\n canBeCurrent ? ghostSelectedCurrent : ghostSelected,\n canBeCurrent && focusRing,\n canBeCurrent && 'cursor-pointer rounded',\n isPinned && 'sticky z-1 bottom-[-1px] base-surface',\n ...etc,\n );\n\n//\n// td, th\n//\n\nexport const tdRoot: ComponentFunction<TbodyStyleProps> = ({ border, isGrid }, ...etc) =>\n mx('relative', flushPadding, border && 'border', border && groupBorder, isGrid && gridCellFocusRing, ...etc);\n\nexport const tdContent: ComponentFunction<CellContext<any, any>> = (_props, ...etc) => mx(...etc);\n\n//\n// tfoot\n//\n\nexport type TfootStyleProps = Partial<TableContextValue<any>>;\n\nexport const tfootRoot: ComponentFunction<TfootStyleProps> = (_props, ...etc) =>\n mx('sticky block-end-0 z-10', modalSurface, ...etc);\n\nexport const tfootTr: ComponentFunction<TfootStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport const tfootTh: ComponentFunction<TfootStyleProps> = ({ border }, ...etc) =>\n mx(textPadding, modalSurface, border && groupBorder, ...etc);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { type Cell as CellType, type RowData } from '@tanstack/react-table';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { tdRoot } from '../../theme';\nimport { useTableContext } from '../Table/TableContext';\n\ntype CellProps<TData extends RowData, TValue> = PropsWithChildren<{\n cell: CellType<TData, TValue>;\n}>;\n\nconst CELL_NAME = 'Cell';\n\nconst FocusableCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext();\n const domAttributes = useFocusableGroup({ tabBehavior: 'limited' });\n\n const className = tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames);\n\n return (\n <td tabIndex={0} {...domAttributes} className={className}>\n {children}\n </td>\n );\n};\n\nconst StaticCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext();\n return <td className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>{children}</td>;\n};\n\nconst Cell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const { isGrid } = useTableContext();\n const Root = isGrid ? FocusableCell : StaticCell;\n return <Root cell={cell}>{children}</Root>;\n};\n\nCell.displayName = CELL_NAME;\n\nexport { Cell };\n\nexport type { CellProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { tfootRoot, tfootTr, tfootTh } from '../../theme';\n\ntype TableFooterProps = {};\n\nconst TABLE_FOOT_NAME = 'TableFooter';\n\nconst TableFooter = (props: TableFooterProps) => {\n const tableContext = useTableContext();\n const { table, expand, debug } = tableContext;\n const footers = table.getFooterGroups();\n\n return (\n <tfoot className={tfootRoot(props)}>\n {footers.map((footerGroup) => (\n <tr key={footerGroup.id} className={tfootTr(tableContext)}>\n {debug && <th />}\n\n {footerGroup.headers.map((footer) => {\n return (\n <th key={footer.id} className={tfootTh(tableContext, footer.column.columnDef.meta?.footer?.classNames)}>\n {footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext())}\n </th>\n );\n })}\n\n {expand && <th />}\n </tr>\n ))}\n </tfoot>\n );\n};\n\nTableFooter.displayName = TABLE_FOOT_NAME;\n\nexport { TableFooter };\n\nexport type { TableFooterProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { flexRender } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { theadResizeRoot, theadRoot, theadTh, theadTr } from '../../theme';\n\nconst TABLE_HEAD_NAME = 'TableHeader';\n\ntype TableHeadProps = {};\n\nconst TableHead = (_props: TableHeadProps) => {\n const tableContext = useTableContext();\n const headerGroups = tableContext.table.getHeaderGroups();\n\n return (\n <thead className={theadRoot(tableContext)}>\n {headerGroups.map((headerGroup) => {\n return (\n // Group element to hover resize handles.\n <tr key={headerGroup.id} className={theadTr(tableContext)}>\n {/* TODO(burdon): Calc. width. */}\n {tableContext.debug && (\n <th className='font-mono' style={{ width: 32 }}>\n #\n </th>\n )}\n\n {headerGroup.headers.map((header) => {\n const isResizing = header.column.getIsResizing();\n const onResize = header.getResizeHandler();\n const resizable = header.column.columnDef.meta?.resizable;\n\n return (\n <th\n key={header.id}\n style={{\n width: header.getSize(),\n }}\n className={theadTh(tableContext, header.column.columnDef.meta?.header?.classNames)}\n >\n {!header || header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n\n {/*\n * Resize handle.\n * https://codesandbox.io/p/sandbox/github/tanstack/table/tree/main/examples/react/column-sizing\n */}\n\n {resizable && (\n <div\n className={theadResizeRoot({ isResizing })}\n onDoubleClick={header.column.resetSize} // TODO(zan): How should non-pointer users reset column sizing?\n onMouseDown={onResize}\n onTouchStart={onResize}\n />\n )}\n </th>\n );\n })}\n\n {tableContext.expand && <th />}\n </tr>\n );\n })}\n </thead>\n );\n};\n\nTableHead.displayName = TABLE_HEAD_NAME;\n\nexport { TableHead };\n\nexport type { TableHeadProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusFinders } from '@fluentui/react-tabster';\nimport { Check, ClipboardText, type Icon, X } from '@phosphor-icons/react';\nimport {\n createColumnHelper,\n type ColumnDef,\n type ColumnMeta,\n type RowData,\n type ColumnHelper,\n type CellContext,\n} from '@tanstack/react-table';\nimport { format } from 'date-fns/format';\nimport { formatDistanceToNow } from 'date-fns/formatDistanceToNow';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type ClassNameValue, Input, Tooltip } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { CellCombobox } from './components';\nimport { useTableContext } from './components/Table/TableContext';\nimport { textPadding } from './theme';\n\nexport type ValueUpdater<TData extends RowData, TValue> = (row: TData, id: string, value: TValue) => void;\n\nexport const createColumnBuilder = <TData extends RowData>() => ({\n helper: createColumnHelper<TData>(),\n builder: new ColumnBuilder<TData>(),\n});\n\n// TODO(thure): This interface is redundant, e.g. `classNames` == `meta.cell.classNames`\n/**\n * NOTE: Can use `meta` for custom properties.\n */\nexport type BaseColumnOptions<TData, TValue> = Partial<ColumnDef<TData, TValue>> & {\n meta?: ColumnMeta<TData, TValue>;\n label?: string;\n classNames?: ClassNameValue;\n onUpdate?: ValueUpdater<TData, TValue | undefined>;\n};\n\n// TODO(burdon): Better abstraction?\nexport type SearchListQueryModel<TData extends RowData> = {\n getId(object: TData): string;\n getText(object: TData): string;\n query(text?: string): Promise<TData[]>;\n};\n\nexport type ComboboxColumnOptions<TData extends RowData> = BaseColumnOptions<TData, any> & {\n model: SearchListQueryModel<TData>;\n};\n\nexport type StringColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\nexport type SelectRowColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\n\nexport type NumberColumnOptions<TData extends RowData> = BaseColumnOptions<TData, number> & {\n digits?: number;\n};\n\nexport type KeyColumnOptions<TData extends RowData> = BaseColumnOptions<TData, PublicKey> & {\n tooltip?: boolean;\n};\n\nexport type DateColumnOptions<TData extends RowData> = BaseColumnOptions<TData, Date> & {\n format?: string;\n relative?: boolean;\n};\n\nexport type SwitchColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {};\n\nexport type IconColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {\n on?: {\n Icon?: Icon;\n className?: string;\n };\n off?: {\n Icon?: Icon;\n className?: string;\n };\n};\n\nconst ComboboxBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, TData>) => {\n const { model, onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, TData>;\n return model ? (\n <CellCombobox<TData>\n model={model}\n value={cellContext.getValue()}\n onValueChange={(value) => onUpdate?.(cellContext.row.original, cellContext.column.id, value)}\n />\n ) : null;\n};\n\nconst StringBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, string>) => {\n const ref = useRef<HTMLInputElement>(null);\n const { findPrevFocusable } = useFocusFinders();\n\n const { onUpdate, cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n\n // https://tanstack.com/table/v8/docs/examples/react/editable-data\n const initialValue = cellContext.getValue();\n\n const getInitialValue = useCallback(() => {\n // TODO(burdon): Temporary shim for automerge.\n return (initialValue as any)?.content ?? initialValue;\n }, [initialValue]);\n\n const [value, setValue] = useState(getInitialValue);\n\n // Update value if initialValue changes externally (cell reactivity).\n useEffect(() => setValue(getInitialValue()), [getInitialValue]);\n\n const handleSave = () => {\n ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();\n\n if (value !== initialValue) {\n onUpdate?.(cellContext.row.original, cellContext.column.id, value);\n }\n };\n\n const handleCancel = () => setValue(initialValue);\n\n let placeholder = false;\n const columns = cellContext.table.getVisibleFlatColumns();\n\n // Calling getRowModel is expensive, so only do it when we're a cell in the first position\n if (columns[0].id === cellContext.column.id) {\n const rowCount = cellContext.table.getRowModel().rows.length;\n placeholder = cellContext.row.index === rowCount - 1 && columns[0].id === cellContext.column.id;\n }\n\n // TODO(burdon): Don't render inputs unless mouse over (Show ellipsis when div)?\n return (\n <Input.Root>\n <Input.TextInput\n ref={ref}\n variant='subdued'\n placeholder={placeholder ? 'Add row...' : undefined}\n classNames={['is-full', textPadding, cell?.classNames]}\n value={value ?? ''}\n onBlur={handleSave}\n onChange={(event) => setValue(event.target.value)}\n onKeyDown={(event) => (event.key === 'Enter' && handleSave()) || (event.key === 'Escape' && handleCancel())}\n />\n </Input.Root>\n );\n};\n\nconst parseNumber = (text?: string) => (text?.trim().length ? Number(text) : NaN);\n\nconst displayNumber = (value?: number, digits?: number) =>\n value || value === 0\n ? value.toLocaleString(undefined, {\n minimumFractionDigits: digits ?? 0,\n maximumFractionDigits: digits ?? 2,\n })\n : '';\n\nconst NumberBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, number>) => {\n const { onUpdate, digits } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n const value = cellContext.getValue();\n const [text, setText] = useState<string>(displayNumber(value, digits));\n const { findPrevFocusable } = useFocusFinders();\n const ref = useRef<HTMLInputElement | null>(null);\n\n // Update display value if `digits` changes and input is not in focus.\n useEffect(() => {\n (!document.activeElement || document.activeElement !== ref.current) && setText(displayNumber(value, digits));\n }, [digits, value]);\n\n const handleEdit = () => setText(value !== undefined ? String(value) : '');\n\n // TODO(burdon): Property is encoded as float (e.g., 6.1 => 6.099)\n const handleSave = () => {\n const nextValue = parseNumber(text);\n\n if (!isNaN(nextValue)) {\n onUpdate?.(cellContext.row.original, cellContext.column.id, nextValue);\n setText(displayNumber(nextValue, digits));\n } else {\n // Reset the text to display the original value without updating the model.\n setText(displayNumber(value, digits));\n }\n\n // Shift focus only if input is focused on save (e.g. on `Enter`).\n ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();\n };\n\n const _handleCancel = () => {\n setText(displayNumber(value, digits));\n ref.current && findPrevFocusable(ref.current)?.focus();\n };\n\n return (\n <Input.Root>\n <Input.TextInput\n ref={ref}\n variant='subdued'\n value={text}\n classNames={['is-full text-end font-mono', textPadding]}\n onBlur={handleSave}\n onFocus={handleEdit}\n onChange={({ target: { value } }) => setText(value)}\n onKeyDown={(event) => {\n // TODO(thure): `Escape` is reserved for blurring the input and moving focus to the cell\n return /* (event.key === 'Escape' && handleCancel()) || */ event.key === 'Enter' && handleSave();\n }}\n />\n </Input.Root>\n );\n};\n\nconst RowSelectorBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, unknown>) => {\n const { cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, unknown>;\n const { row } = cellContext;\n\n const checked = row.getCanSelect()\n ? row.getIsSelected()\n : row.getCanSelectSubRows() && (row.getIsSomeSelected() ? 'indeterminate' : row.getIsAllSubRowsSelected());\n\n return (\n <div className='flex justify-center w-full h-full' role='presentation'>\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={[cell?.classNames]}\n checked={checked}\n onCheckedChange={(event) => {\n if (row.getCanSelect()) {\n row.getToggleSelectedHandler()(event);\n }\n }}\n disabled={!(row.getCanSelect() || row.getCanSelectSubRows())}\n />\n </Input.Root>\n </div>\n );\n};\n\nconst SwitchBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, boolean>) => {\n const { onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, boolean>;\n const value = cellContext.getValue();\n return (\n <Input.Root>\n <Input.Switch\n classNames='block mli-auto'\n onClick={(event) => event.stopPropagation()}\n disabled={!onUpdate}\n checked={!!value}\n onCheckedChange={(value) => {\n onUpdate?.(cellContext.row.original, cellContext.column.id, !!value);\n }}\n />\n </Input.Root>\n );\n};\n\n/**\n * Util to create column definitions.\n */\nexport class ColumnBuilder<TData extends RowData> {\n /**\n * Combobox value\n */\n combobox({\n label,\n classNames,\n model,\n onUpdate,\n ...props\n }: ComboboxColumnOptions<TData>): Partial<ColumnDef<TData, any>> {\n return {\n minSize: 100,\n header: (column) => {\n return label ?? column.header.id;\n },\n cell:\n model && onUpdate\n ? ComboboxBuilderCell\n : (cellContext) => {\n const cellValue = cellContext.getValue();\n return <div className={mx('truncate', classNames)}>{cellValue ? model?.getText(cellValue) : ''}</div>;\n },\n ...props,\n meta: {\n ...props.meta,\n model,\n onUpdate,\n cell: { classNames, ...props.meta?.cell },\n },\n };\n }\n\n /**\n * String formats.\n */\n string({ label, classNames, onUpdate, ...props }: StringColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, string>\n > {\n return {\n minSize: 100,\n // TODO(burdon): Default.\n header: (column) => {\n return label ?? column.header.id;\n },\n cell: onUpdate\n ? StringBuilderCell\n : (cell) => {\n let value = cell.getValue();\n // TODO(burdon): Hack to support automerge.\n if (typeof value === 'object' && (value as any)?.__typename === 'dxos.Text.v0') {\n value = (value as any).content;\n }\n\n return <div className={mx('truncate', textPadding, classNames)}>{value}</div>;\n },\n ...props,\n meta: {\n ...props.meta,\n onUpdate,\n cell: { ...props.meta?.cell, classNames },\n },\n };\n }\n\n /**\n * Number formats.\n */\n number({ label, minSize, classNames, digits, onUpdate, ...props }: NumberColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, number>\n > {\n return {\n size: 100,\n minSize: 100,\n header: (cell) => label ?? cell.header.id,\n cell: NumberBuilderCell,\n ...props,\n meta: {\n ...props.meta,\n onUpdate,\n digits,\n header: { ...props.meta?.header },\n cell: { ...props.meta?.cell, classNames },\n },\n };\n }\n\n /**\n * Date formats.\n */\n // TODO(burdon): Date picker (pluggable renderers?)\n date({ label, format: formatSpec, relative, classNames, ...props }: DateColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, Date>\n > {\n return {\n size: 220, // TODO(burdon): Depends on format.\n minSize: 100,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n\n try {\n const str = value\n ? formatSpec\n ? format(value, formatSpec)\n : relative\n ? formatDistanceToNow(value, { addSuffix: true })\n : value.toISOString()\n : undefined;\n\n return <div className={mx(textPadding, classNames)}>{str}</div>;\n } catch (err) {\n log.info('formatError', { value });\n return null;\n }\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames } },\n };\n }\n\n /**\n * PublicKey with tooltip.\n */\n key({ label, tooltip, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return {\n size: 94,\n minSize: 94,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n if (!value) {\n return;\n }\n\n // TODO(burdon): Factor out styles.\n const element = value.truncate();\n if (!tooltip) {\n return element;\n }\n\n return (\n <Tooltip.Provider>\n <Tooltip.Root>\n <Tooltip.Trigger>{element}</Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n <Tooltip.Arrow />\n <ClipboardText\n onClick={(ev) => {\n ev.stopPropagation(); // Prevent select row.\n void navigator.clipboard.writeText(value.toHex());\n }}\n />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },\n };\n }\n\n /**\n * Row selector\n */\n selectRow({ classNames, onUpdate, id = 'selectRow' }: SelectRowColumnOptions<TData> = {}): Parameters<\n ColumnHelper<TData>['display']\n >[0] {\n return {\n id,\n size: 32,\n enableResizing: false,\n meta: { onUpdate, cell: { classNames } },\n header: ({ table }) => {\n const { rowsSelectable } = useTableContext();\n const checked = table.getIsSomeRowsSelected() ? 'indeterminate' : table.getIsAllRowsSelected();\n\n return rowsSelectable === 'multi' ? (\n <div className='flex justify-center w-full h-full' role='presentation'>\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={['mli-auto', classNames]}\n checked={checked}\n onCheckedChange={() => table.toggleAllRowsSelected()}\n />\n </Input.Root>\n </div>\n ) : null;\n },\n cell: RowSelectorBuilderCell,\n };\n }\n\n /**\n * Switch\n */\n switch({ label, classNames, onUpdate, ...props }: SwitchColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, boolean>\n > {\n return {\n size: 50,\n minSize: 50,\n header: (column) => label ?? column.header.id,\n // TODO(Zan): Implement sort algorithm\n enableSorting: true,\n cell: SwitchBuilderCell,\n ...props,\n meta: { ...props.meta, onUpdate, cell: { ...props.meta?.cell, classNames: [textPadding, classNames] } },\n };\n }\n\n /**\n * Icon based on boolean value.\n */\n icon({ label, size, on, off, ...props }: IconColumnOptions<TData> = {}): Partial<ColumnDef<TData, boolean>> {\n const IconOn = on?.Icon ?? Check;\n const IconOff = off?.Icon ?? X;\n return {\n size: size ?? 32,\n // TODO(Zan): Implement sort algorithm\n enableSorting: false,\n header: (column) => <div className={'justify-center'}>{label ?? column.header.id}</div>,\n cell: (cell) => {\n const value = cell.getValue();\n if (value) {\n return <IconOn className={mx('block mli-auto', getSize(6), on?.className ?? 'text-green-700')} />;\n } else if (value === false) {\n return <IconOff className={mx('block mli-auto', getSize(6), off?.className ?? 'text-red-700')} />;\n } else {\n return null;\n }\n },\n ...props,\n };\n }\n\n /**\n * This display column type is for nested/unhandled data to appear as JSON.\n */\n display({ label, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return {\n size: 120,\n minSize: 120,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n\n return (\n <div className='overflow-scroll'>\n <code className='text-xs'>{JSON.stringify(value)}</code>\n </div>\n );\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },\n };\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as AST from '@effect/schema/AST';\nimport type * as S from '@effect/schema/Schema';\n\nimport { type ColumnType } from './types';\n\n// TODO(burdon): Reconcile with react-ui-table.\nexport type ClassifiedColumnType = ColumnType | 'display';\n\n// TODO(burdon): Rename getX? and return typed array?\nexport const classifySchemaProperties = (schema: S.Schema<any, any>): [string, ClassifiedColumnType][] => {\n const recurse = (node: AST.AST, path: string[], acc: [string, ClassifiedColumnType][]) => {\n const properties = AST.getPropertySignatures(node);\n properties.forEach((prop) => {\n const propName = prop.name.toString();\n\n if (prop.isOptional) {\n const unwrappedAst = unwrapOptionProperty(prop);\n if (isStruct(unwrappedAst)) {\n return recurse(unwrappedAst, [...path, propName], acc);\n }\n }\n\n if (isStruct(prop.type)) {\n recurse(prop.type, [...path, propName], acc);\n } else {\n acc.push([path.concat(propName).join('.'), propertyToColumn(prop)]);\n }\n });\n\n return acc;\n };\n\n return recurse(schema.ast, [], []);\n};\n\nconst isStruct = (node: AST.AST) => AST.isTypeLiteral(node);\n\nconst isOptionalUnion = (prop: AST.PropertySignature) => AST.isUnion(prop.type) && prop.isOptional;\n\nconst unwrapOptionProperty = (prop: AST.PropertySignature) => {\n if (!isOptionalUnion(prop)) {\n throw new Error(`Not an optional property: ${String(prop.name)}`);\n }\n\n if (!AST.isUnion(prop.type)) {\n throw new Error(`Not a union type: ${String(prop.name)}`);\n }\n\n const [type, _undefinedCase] = prop.type.types;\n return type;\n};\n\nconst typeToColumn = (type: AST.AST): ClassifiedColumnType => {\n if (AST.isStringKeyword(type)) {\n return 'string';\n } else if (AST.isNumberKeyword(type)) {\n return 'number';\n } else if (AST.isBooleanKeyword(type)) {\n return 'boolean';\n }\n\n if (AST.isRefinement(type)) {\n return typeToColumn(type.from);\n }\n\n // TODO(zan): How should we be thinking about transformations?\n // - Which of these are we storing in the database?\n // - For types that aren't the 'DateFromString' transformation, should we be using the 'from' or 'to' type?\n\n if (AST.isTransform(type)) {\n const identifier = AST.getIdentifierAnnotation(type);\n if (identifier._tag === 'Some') {\n if (identifier.value === 'DateFromString') {\n return 'date';\n }\n }\n }\n\n return 'display';\n};\n\nconst propertyToColumn = (prop: AST.PropertySignature): ClassifiedColumnType => {\n let type = prop.type;\n if (prop.isOptional) {\n type = unwrapOptionProperty(prop);\n }\n\n return typeToColumn(type);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ColumnDef } from '@tanstack/react-table';\n\nimport type { S } from '@dxos/echo-schema';\n\nimport { classifySchemaProperties } from './schema';\nimport { createColumnBuilder } from '../helpers';\n\nexport const schemaToColumnDefs = <T>(schema: S.Schema<T, any>): ColumnDef<T, any>[] => {\n const { helper, builder } = createColumnBuilder<T>();\n\n const classified = classifySchemaProperties(schema);\n return classified.map(([name, type]) => {\n const propertyKey = name.toString();\n\n let column: Partial<ColumnDef<any, any>> | undefined;\n switch (type) {\n case 'string': {\n column = builder.string({ label: propertyKey });\n break;\n }\n case 'number': {\n column = builder.number({ label: propertyKey });\n break;\n }\n case 'boolean': {\n column = builder.switch({ label: propertyKey });\n break;\n }\n case 'date': {\n column = builder.date({ label: propertyKey });\n break;\n }\n case 'display': {\n column = builder.display({ label: propertyKey, id: propertyKey });\n break;\n }\n default: {\n throw new Error(`Unhandled column type: ${type}`);\n }\n }\n\n return helper.accessor(propertyKey as any, column);\n });\n};\n"],
5
+ "mappings": ";AAIO,IAAMA,iBAAiB;AAE9B,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACA,cAAAA,GAAiB;QAChB,sBAAsB;QACtB,4BAA4B;QAC5B,6BAA6B;QAC7B,0BAA0B;QAC1B,4BAA4B;QAC5B,yBAAyB;QACzB,gBAAgB;QAChB,cAAc;QACd,gBAAgB;QAChB,sBAAsB;QACtB,sBAAsB;QACtB,qBAAqB;MACvB;IACF;EACF;;;;ACpBF,SAASC,iBAAiB;AAE1B,OAAOC,SAASC,aAAaC,gBAAgB;AAE7C,SAASC,SAASC,sBAAsB;AACxC,SAASC,uBAAuB;AAChC,SAASC,iBAAiBC,SAASC,IAAIC,6BAA6B;AAOpE,IAAMC,eAAe,CAAwBC,OAAoCC,UAC/EA,QACI;EACE,CAACD,MAAME,MAAMD,KAAAA,CAAAA,GAAS;IAAEE,OAAOH,MAAMI,QAAQH,KAAAA;IAAQI,MAAMJ;EAAM;AACnE,IACA,CAAC;AAEA,IAAMK,eAAe,CAAwB,EAClDN,OACAC,OACAM,cAAa,MAKd;AACC,QAAM,EAAEC,EAAC,IAAKC,eAAeC,cAAAA;AAC7B,QAAM,CAACC,OAAOC,QAAAA,IAAYC,SAAmCd,aAAaC,OAAOC,KAAAA,CAAAA;AACjF,QAAM,CAACa,SAASC,UAAAA,IAAcF,SAAS,KAAA;AACvC,QAAM,CAACG,kBAAkBC,mBAAAA,IAAuBJ,SAAS,EAAA;AACzD,QAAMK,+BAA+B,OAAOC,SAAAA;AAC1CF,wBAAoBE,QAAQ,EAAA;AAC5BJ,eAAW,IAAA;AACX,UAAMJ,SAAQ,MAAMX,MAAMoB,MAAMD,IAAAA;AAChCP,aACED,OAAMU,OACJ,CAACC,KAA+BC,SAAAA;AAC9BD,UAAItB,MAAME,MAAMqB,IAAAA,CAAAA,IAAS;QACvBpB,OAAOH,MAAMI,QAAQmB,IAAAA;QACrBlB,MAAMkB;MACR;AACA,aAAOD;IACT,GACAvB,aAAaC,OAAOC,KAAAA,CAAAA,CAAAA;AAGxBc,eAAW,KAAA;EACb;AAEA,QAAMS,oBAAoBC,YACxB,CAACC,OAAAA;AACCnB,kBAAcI,MAAMe,EAAAA,GAAKrB,IAAAA;EAC3B,GACA;IAACM;IAAOJ;GAAc;AAGxB,SACE,sBAAA,cAACoB,gBAAgBC,MAAI;IAACC,aAAarB,EAAE,oBAAA;KACnC,sBAAA,cAACmB,gBAAgBG,SAAO;IAACC,SAAQ;IAAQC,YAAW;KACjD/B,QACC,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACgC,QAAAA;IACCC,WAAWC,GACT,mEACA,CAAClC,SAASmC,qBAAAA;KAGXpC,MAAMI,QAAQH,KAAAA,CAAAA,GAEjB,sBAAA,cAACoC,WAAAA;IAAUC,QAAO;IAAOJ,WAAWK,QAAQ,CAAA;QAE5C,IAAA,GAEN,sBAAA,cAACZ,gBAAgBa,SAAO;IAACC,cAAc;IAAOT,YAAW;KACvD,sBAAA,cAACL,gBAAgBe,OAAK;IAACzC,OAAOe;IAAkBT,eAAeW;MAC/D,sBAAA,cAACS,gBAAgBgB,MAAI,MAClB3B,iBAAiB4B,SAAS,IACzB,sBAAA,cAACC,KAAAA;IAAEX,WAAWC,GAAG,eAAeW,eAAAA;KAAkB,wBAAA,IAChDhC,UACF,sBAAA,cAAC+B,KAAAA;IAAEX,WAAWC,GAAG,eAAeW,eAAAA;KAAkB,iBAAA,IAElD,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACnB,gBAAgBoB,OAAK;IAACf,YAAY;MAAC;MAAec;;KAAkB,YAAA,GACpEE,OAAOC,QAAQtC,KAAAA,EAAOuC,IAAI,CAAC,CAACxB,IAAI,EAAEvB,MAAK,CAAE,MACxC,sBAAA,cAACwB,gBAAgBwB,MAAI;IAACC,KAAK1B;IAAIzB,OAAOyB;IAAI2B,UAAU7B;IAAmBQ,YAAW;KAC/E7B,KAAAA,CAAAA,CAAAA,CAAAA,GAMX,sBAAA,cAACmD,QAAQC,OAAK,IAAA,CAAA,CAAA;AAItB;;;AClGA,SAASC,KAAAA,IAAGC,SAASC,aAAAA,YAAWC,WAAWC,SAASC,YAAYC,iBAAiB;AAEjF,OAAOC,UAASC,UAAAA,SAAQC,YAAAA,WAAUC,eAAAA,oBAAmB;AAErD,SAASC,UAAAA,SAAQC,iBAAiBC,WAAAA,UAASC,oBAAoB;AAC/D,SAASC,WAAAA,UAASC,MAAAA,WAAU;;;ACN5B,SAASC,OAAOC,OAAOC,SAAS;AAChC,OAAOC,UAA0CC,QAAQC,YAAAA,iBAAgB;AAEzE,SAASC,QAAQC,OAAOC,QAAQC,WAAWC,kBAAAA,uBAAsB;AACjE,SAASC,WAAAA,UAASC,MAAAA,WAAU;AAC5B,SAASC,oBAAoB;AAK7B,IAAMC,UAA0D,CAAC,EAAEC,UAAUC,UAAS,MACpF,gBAAAC,OAAA,cAACC,OAAAA;EAAIC,MAAK;EAAOH,WAAWI,IAAG,OAAOJ,SAAAA;GACnCD,QAAAA;AAaE,IAAMM,qBAAqB,CAAC,EACjCC,QACAC,UACAC,mBACAC,UACAC,UACAC,QAAO,MACiB;AACxB,QAAM,CAACC,WAAWC,YAAAA,IAAgBC,UAAS;IACzCC,MAAMT,OAAOU;IACbC,UAAUX,OAAOW;IACjBC,SAASZ,OAAOY;IAChBC,MAAMC,OAAOd,OAAOa,IAAI;IACxBE,OAAOf,OAAOe;IACdC,QAAQF,OAAOd,OAAOgB,UAAU,GAAA;EAClC,CAAA;AAEA,QAAMC,UAAUC,OAAyB,IAAA;AACzC,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,cAAAA;AAE7B,QAAMC,eAAe,MAAA;AACnBjB,cAAAA;EACF;AAEA,QAAMkB,aAAa,MAAA;AACjB,UAAM,EAAEd,MAAME,UAAUC,SAASC,MAAME,OAAOC,OAAM,IAAKV;AAGzD,QAAI,CAACG,KAAKe,UAAU,CAACf,KAAKgB,MAAM,eAAA,GAAkB;AAChDR,cAAQS,SAASC,MAAAA;AACjB;IACF;AAGA,UAAMD,UAAUzB,SAAS2B,QAAQC,KAAK,CAACC,MAAMA,EAAEpB,OAAOV,OAAOU,MAAMoB,EAAEpB,OAAOD,IAAAA;AAC5E,QAAIiB,SAAS;AAEX,UAAIA,QAAQb,SAAS,OAAyC;AAE5DI,gBAAQS,SAASC,MAAAA;AACjB;MACF;IACF;AAEAxB,eAAWH,OAAOU,IAAI;MACpBA,IAAID;MACJA;MACAM;MACAF;MACAF;MACAC;MACAI,QAAQe,aAAaf,MAAAA;IACvB,CAAA;AACAX,cAAAA;EACF;AAEA,QAAM2B,eAAe,MAAA;AACnB5B,eAAWJ,OAAOU,EAAE;AACpBL,cAAAA;EACF;AAEA,SACE,gBAAAV,OAAA,cAACC,OAAAA;IAAIF,WAAU;KACb,gBAAAC,OAAA,cAACH,SAAAA,MACC,gBAAAG,OAAA,cAACsC,MAAMC,MAAI,MACT,gBAAAvC,OAAA,cAACsC,MAAME,OAAK;IAACC,YAAW;KAASjB,EAAE,oBAAA,CAAA,GACnC,gBAAAxB,OAAA,cAACsC,MAAMI,WAAS;IACdC,aAAY;IACZC,OAAOjC,UAAUS,SAAS;IAC1ByB,UAAU,CAACC,UAAUlC,aAAa,CAACmC,eAAe;MAAE,GAAGA;MAAW3B,OAAO0B,MAAME,OAAOJ;IAAM,EAAA;IAC5FK,WAAAA;OAGJ,gBAAAjD,OAAA,cAACsC,MAAMC,MAAI,MACT,gBAAAvC,OAAA,cAACsC,MAAME,OAAK;IAACC,YAAW;KAAejB,EAAE,oBAAA,CAAA,GACzC,gBAAAxB,OAAA,cAACsC,MAAMI,WAAS;IACdQ,KAAK5B;IACLqB,aAAY;IACZC,OAAOjC,UAAUG,QAAQ;IACzB+B,UAAU,CAACC,UACTlC,aAAa,CAACmC,eAAe;MAAE,GAAGA;MAAWjC,MAAMgC,MAAME,OAAOJ,MAAMO,QAAQ,WAAW,EAAA;IAAI,EAAA;OAInG,gBAAAnD,OAAA,cAACsC,MAAMC,MAAI,MACT,gBAAAvC,OAAA,cAACsC,MAAME,OAAK;IAACC,YAAW;KAAejB,EAAE,mBAAA,CAAA,GACzC,gBAAAxB,OAAA,cAACoD,OAAOb,MAAI;IACVK,OAAOjC,UAAUO;IACjBmC,eAAe,CAACT,UAAUhC,aAAa,CAACmC,eAAe;MAAE,GAAGA;MAAW7B,MAAM0B;IAAM,EAAA;KAEnF,gBAAA5C,OAAA,cAACoD,OAAOE,eAAa;IAACX,aAAY;IAAOF,YAAW;MACpD,gBAAAzC,OAAA,cAACoD,OAAOG,QAAM,MACZ,gBAAAvD,OAAA,cAACoD,OAAOI,SAAO,MACb,gBAAAxD,OAAA,cAACoD,OAAOK,UAAQ,MACZ;IAAC;IAAU;IAAW;IAAU;IAAwBC,IAAI,CAACxC,SAC7D,gBAAAlB,OAAA,cAACoD,OAAOO,QAAM;IAACC,KAAK1C;IAAM0B,OAAO1B;KAC9BM,EAAE,GAAGN,IAAAA,oBAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAS7CP,UAAUO,SAAS,YAClB,gBAAAlB,OAAA,cAACH,SAAAA,MACC,gBAAAG,OAAA,cAACsC,MAAMC,MAAI,MACT,gBAAAvC,OAAA,cAACsC,MAAME,OAAK;IAACC,YAAW;KAAejB,EAAE,cAAA,CAAA,GACzC,gBAAAxB,OAAA,cAACsC,MAAMI,WAAS;IACdE,OAAOjC,UAAUU,UAAU;IAC3BwB,UAAU,CAACC,UAAUlC,aAAa,CAACmC,eAAe;MAAE,GAAGA;MAAW1B,QAAQyB,MAAME,OAAOJ;IAAM,EAAA;QAMpGjC,UAAUO,SAAS,SAClB,gBAAAlB,OAAA,cAACH,SAAAA,MACC,gBAAAG,OAAA,cAACsC,MAAMC,MAAI,MACT,gBAAAvC,OAAA,cAACsC,MAAME,OAAK;IAACC,YAAW;KAAc,OAAA,GACtC,gBAAAzC,OAAA,cAACoD,OAAOb,MAAI;IACVK,OAAOjC,UAAUK;IACjBqC,eAAe,CAACT,UAAUhC,aAAa,CAACmC,eAAe;MAAE,GAAGA;MAAW/B,UAAU4B;IAAM,EAAA;KAEvF,gBAAA5C,OAAA,cAACoD,OAAOE,eAAa;IAACX,aAAY;IAAQF,YAAW;MACrD,gBAAAzC,OAAA,cAACoD,OAAOG,QAAM,MACZ,gBAAAvD,OAAA,cAACoD,OAAOI,SAAO,MACb,gBAAAxD,OAAA,cAACoD,OAAOK,UAAQ,MACblD,kBACEsD,OAAO,CAACrC,OAAMA,GAAET,OAAOT,SAASS,EAAE,EAClC2C,IAAI,CAAC,EAAE3C,IAAI+C,KAAI,MACd,gBAAA9D,OAAA,cAACoD,OAAOO,QAAM;IAACC,KAAK7C;IAAI6B,OAAO7B;KAC5B+C,QAAQ/C,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GASxBJ,UAAUK,YACT,gBAAAhB,OAAA,cAACsC,MAAMC,MAAI,MACT,gBAAAvC,OAAA,cAACsC,MAAME,OAAK;IAACC,YAAW;KAAc,gBAAA,GACtC,gBAAAzC,OAAA,cAACoD,OAAOb,MAAI;IACVK,OAAOjC,UAAUM;IACjBoC,eAAe,CAACT,UAAUhC,aAAa,CAACmC,eAAe;MAAE,GAAGA;MAAW9B,SAAS2B;IAAM,EAAA;KAEtF,gBAAA5C,OAAA,cAACoD,OAAOE,eAAa;IAACX,aAAY;IAAWF,YAAW;MACxD,gBAAAzC,OAAA,cAACoD,OAAOG,QAAM,MACZ,gBAAAvD,OAAA,cAACoD,OAAOI,SAAO,MACb,gBAAAxD,OAAA,cAACoD,OAAOK,UAAQ,MACblD,kBACE2B,KAAK,CAAC5B,cAAaA,UAASS,OAAOJ,UAAUK,QAAQ,GACpDiB,QAAQyB,IAAI,CAAC,EAAE3C,IAAIK,MAAK,MACxB,gBAAApB,OAAA,cAACoD,OAAOO,QAAM;IAACC,KAAK7C;IAAI6B,OAAO7B;KAC5BK,SAASL,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAYhC,gBAAAf,OAAA,cAAC+D,WAAAA;IAAUtB,YAAW;MAEtB,gBAAAzC,OAAA,cAACH,SAAAA;IAAQE,WAAU;KACjB,gBAAAC,OAAA,cAACgE,QAAAA;IAAOC,SAAQ;IAAUxB,YAAW;IAAqByB,SAAStC;KACjE,gBAAA5B,OAAA,cAACmE,QAAAA,MAAM3C,EAAE,YAAA,CAAA,GACT,gBAAAxB,OAAA,cAACC,OAAAA;IAAIF,WAAU;MACf,gBAAAC,OAAA,cAACoE,OAAAA;IAAMrE,WAAWsE,SAAQ,CAAA;OAE5B,gBAAArE,OAAA,cAACgE,QAAAA;IAAOvB,YAAW;IAAqByB,SAASvC;KAC/C,gBAAA3B,OAAA,cAACmE,QAAAA,MAAM3C,EAAE,gBAAgB;IAAE8C,IAAI;EAAK,CAAA,CAAA,GACpC,gBAAAtE,OAAA,cAACC,OAAAA;IAAIF,WAAU;MACf,gBAAAC,OAAA,cAACuE,GAAAA;IAAExE,WAAWsE,SAAQ,CAAA;OAExB,gBAAArE,OAAA,cAACgE,QAAAA;IAAOvB,YAAW;IAAqByB,SAAS7B;KAC/C,gBAAArC,OAAA,cAACmE,QAAAA,MAAM3C,EAAE,cAAA,CAAA,GACT,gBAAAxB,OAAA,cAACC,OAAAA;IAAIF,WAAU;MACf,gBAAAC,OAAA,cAACwE,OAAAA;IAAMzE,WAAWsE,SAAQ,CAAA;;AAKpC;;;ACtNA,SAASI,eAAAA,cAAaC,WAAWC,YAAAA,iBAAgB;AAEjD,SAASC,uBAAuB;AAIzB,IAAMC,oBAAoB,CAAC,EAChCC,SACAC,eAAc,MAIf;AACC,QAAM,CAACC,oBAAoBC,qBAAAA,IAAyBC,UAAS,KAAA;AAC7D,QAAM,CAACC,cAAcC,eAAAA,IAAmBF,UAA4B,CAAC,CAAA;AAErEG,YAAU,MAAA;AACR,QAAIL,oBAAoB;AACtB;IACF;AAEAI,oBACEN,QACGQ,OAAO,CAACC,WAAW,CAAC,CAACA,OAAOC,QAASD,OAAeE,SAASC,MAAAA,EAC7DC,OAA0B,CAACC,OAAOL,WAAAA;AACjCK,YAAOL,OAAeE,IAAI,IAAIF,OAAOC;AACrC,aAAOI;IACT,GAAG,CAAC,CAAA,CAAA;AAGRX,0BAAsB,IAAA;EACxB,GAAG;IAACH;IAASM;GAAgB;AAE7B,QAAM,CAACS,kBAAkBC,mBAAAA,IAAuBZ,UAAgC,CAAC,CAAA;AAGjF,QAAMa,qBAAqBC,aAAY,MAAMjB,iBAAiBI,YAAAA,GAAe;IAACJ;IAAgBI;GAAa;AAC3Gc,kBAAgBJ,iBAAiBK,kBAAkB,CAACC,MAAM,OAAOA,MAAM,UAAU,OAAOJ,kBAAAA;AAExF,SAAO;IAAEZ;IAAcU;IAAkBT;IAAiBU;EAAoB;AAChF;;;ACvCA,SAASM,YAAAA,iBAAgB;;;ACAzB,OAAOC,UAASC,YAAYC,qBAAqC;AAQjE,IAAMC,eAAeC,8BAA0C,CAAC,CAAA;AAOzD,IAAMC,gBAAgF,CAAC,EAC5FC,UACA,GAAGC,MAAAA,MACJ;AACC,SAAO,gBAAAC,OAAA,cAACL,aAAaM,UAAQ;IAACF;KAAeD,QAAAA;AAC/C;AAGO,IAAMI,kBAAkB,MAAA;AAC7B,QAAMC,UAAUC,WAAWT,YAAAA;AAE3B,SAAOQ;AACT;;;ADvBO,IAAME,mBAAmB,MAAA;AAC9B,QAAM,CAACC,eAAeC,gBAAAA,IAAoBC,UAAuB,CAAA,CAAE;AAEnE,QAAMC,aAAa,CAACC,UAAkBC,kBAAAA;AACpCJ,qBAAiB;MAAC;QAAEK,IAAIF;QAAUG,MAAMF,kBAAkB;MAAO;KAAE;EACrE;AAEA,QAAMG,qBAAqB,MAAA;AACzBP,qBAAiB,CAAA,CAAE;EACrB;AAEA,SAAO;IAAEQ,SAAST;IAAeG;IAAYK;EAAmB;AAClE;AAIO,IAAME,gBAAgB,CAACC,WAAAA;AAC5B,QAAM,EAAEF,SAASN,YAAYK,mBAAkB,IAAKI,gBAAAA;AACpD,QAAM,CAACC,sBAAsBC,uBAAAA,IAA2BZ,UAAAA;AAExD,QAAMa,aAAaN,QAAQO,KAAK,CAACC,MAAMA,EAAEX,OAAOK,OAAOL,EAAE;AACzD,QAAMD,gBAAgBU,aAAcA,WAAWR,OAAQ,SAAoB,QAAmBW;AAE9F,QAAMC,UAAUR,OAAOS,WAAU;AAEjC,QAAMC,mBAAmB,CAACC,cAAAA;AACxBnB,eAAWQ,OAAOL,IAAIgB,SAAAA;EACxB;AAIA,QAAMC,eAAe,MAAA;AACnB,QAAIlB,kBAAkBa,QAAW;AAC/B;IACF;AAEA,QAAIb,kBAAkBQ,sBAAsB;AAC1CQ,uBAAiBR,yBAAyB,QAAQ,SAAS,KAAA;IAC7D,OAAO;AACLL,yBAAAA;IACF;EACF;AAEA,QAAMgB,eAAe,CAACF,cAAAA;AACpBd,uBAAAA;AACAM,4BAAwBQ,SAAAA;AACxBD,qBAAiBC,SAAAA;EACnB;AAEA,QAAMG,cAAc,MAAA;AAClBjB,uBAAAA;EACF;AAEA,SAAO;IAAEW;IAASd;IAAemB;IAAcD;IAAcE;EAAY;AAC3E;;;AE1DA,SAASC,eAAAA,cAAaC,aAAAA,YAAWC,YAAAA,iBAAgB;AAI1C,IAAMC,gBAAgB,CAACC,YAAiCC,OAAmBC,SAAAA;AAChF,QAAM,EAAEC,iBAAgB,IAAKC,oBAAAA;AAC7B,QAAM,CAACC,cAAcC,eAAAA,IAAmBC,UAAAA;AAGxC,QAAMC,iBAAiBC,aAAY,MAAA;AACjC,UAAMC,UAAUP,iBAAiBQ;AACjC,UAAMC,eAAeF,SAASE;AAE9B,QAAIF,WAAWE,cAAc;AAC3BC,4BAAsB,MAAMH,QAAQI,SAAS;QAAEC,KAAKH;MAAa,CAAA,CAAA;IACnE;EACF,GAAG,CAAA,CAAE;AAEL,QAAMI,SAASP,aACb,CAACQ,aAAAA;AACChB,UAAMiB,gBAAe;AACrBD,aAASE,IAAI,QAAA;AACbb,oBAAgBW,SAASG,EAAE;EAC7B,GACA;IAACnB;GAAM;AAGT,QAAMoB,kBAAkBZ,aAAY,MAAA;AAClCR,UAAMiB,gBAAe;AACrBZ,oBAAgBgB,MAAAA;EAClB,GAAG;IAACrB;GAAM;AAGV,QAAMsB,qBAAqBd,aAAY,MAAA;AACrC,UAAMe,OAAOvB,MAAMwB,YAAW,EAAGD;AAEjC,QAAIA,KAAKE,WAAW,GAAG;AACrB,aAAOL,gBAAAA;IACT;AAEA,UAAMM,UAAUH,KAAKA,KAAKE,SAAS,CAAA;AACnC,QAAIC,QAAQP,OAAOf,cAAc;AAC/B;IACF;AAEAW,WAAOW,OAAAA;AAEP,QAAItB,iBAAiBiB,QAAW;AAC9Bd,qBAAAA;IACF;EACF,GAAG;IAACP;IAAOO;IAAgBH;GAAa;AAGxCuB,EAAAA,WAAU,MAAA;AACR,QAAI5B,YAAY;AACduB,yBAAAA;IACF;EACF,GAAG;IAACrB;IAAMF;IAAYuB;GAAmB;AAC3C;;;AC5DA,SAASM,4BAA4B;AAErC,SAASC,eAAAA,oBAAmB;AAIrB,IAAMC,kBAAkB,CAC7BC,UAAAA;AAKA,QAAM,CAACC,eAAe,CAAC,GAAGC,eAAAA,IAAmBC,qBAAqB;IAChEC,MAAMJ,MAAMC;IACZI,UAAUL,MAAMM;IAChBC,aAAaP,MAAMQ;EACrB,CAAA;AAGA,QAAMC,2BAA2BC,aAC/B,CAACC,mBAAAA;AACC,UAAMC,mBAAmB,OAAOD,mBAAmB,aAAaA,eAAeV,YAAAA,IAAgBU;AAC/F,QAAIX,MAAMa,mBAAmB,SAAS;AACpCX,sBAAgBU,gBAAAA;IAClB,WAAWZ,MAAMa,gBAAgB;AAC/B,YAAMC,sBAAsBC,OAAOC,KAAKJ,gBAAAA,EAAkBK,OAAO,CAACC,OAAO,CAACjB,aAAaiB,EAAAA,CAAG,EAAE,CAAA;AAC5FhB,sBAAgBY,sBAAsB;QAAE,CAACA,mBAAAA,GAAsB;MAAK,IAAI,CAAC,CAAA;IAC3E,OAAO;AACLZ,sBAAgB,CAAC,CAAA;IACnB;EACF,GACA;IAACF,MAAMa;IAAgBX;IAAiBD;GAAa;AAGvD,SAAO;IAAEA;IAAcQ;EAAyB;AAClD;;;ANXO,IAAMU,aAAa,CAAgC,EACxDC,QACAC,iBACAC,gBACAC,iBACA,GAAGC,MAAAA,MAC4B;AAC/B,QAAMC,QAAQL,OAAOM,OAAOC,SAASP,OAAOM,QAAQN,OAAOQ;AAC3D,QAAMC,SAASL,MAAMM,QAAQD;AAE7B,QAAM,EAAEE,SAASC,eAAeC,cAAcC,cAAcC,YAAW,IAAKC,cAAcP,OAAOT,MAAM;AAEvG,QAAMiB,0BAA0BC,QAAY,IAAA;AAE5C,QAAM,CAACC,sBAAsBC,uBAAAA,IAA2BC,UAAS,KAAA;AAEjE,QAAMC,4BAA4BJ,QAAO,KAAA;AAEzC,QAAMK,uBAAuBC,aAAY,MAAA;AACvCF,8BAA0BG,UAAU;AACpCL,4BAAwB,IAAA;EAC1B,GAAG;IAACE;IAA2BF;GAAwB;AAEvD,QAAMM,2BAA2BF,aAC/B,CAACG,UAAAA;AACC,QAAIL,0BAA0BG,SAAS;AACrCE,YAAMC,eAAc;AACpBN,gCAA0BG,UAAU;IACtC;EACF,GACA;IAACH;GAA0B;AAG7B,SACE,gBAAAO,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACC,OAAAA;IAAIC,WAAU;IAAmC1B;KAChD,gBAAAwB,OAAA,cAACG,eAAAA;IAAcC,WAAWrB;IAAesB,SAASpB;MAClD,gBAAAe,OAAA,cAACC,OAAAA;IAAIC,WAAU;KAAY1B,KAAAA,CAAAA,GAG7B,gBAAAwB,OAAA,cAACM,aAAaC,MAAI;IAACC,OAAO;KACxB,gBAAAR,OAAA,cAACS,SAAQF,MAAI;IAACG,MAAMpB;IAAsBqB,cAAcpB;IAAyBiB,OAAO;KACtF,gBAAAR,OAAA,cAACM,aAAaM,SAAO;IAACC,KAAKzB;IAAyB0B,SAAAA;KAClD,gBAAAd,OAAA,cAACS,SAAQM,QAAM;IAACD,SAAAA;KACd,gBAAAd,OAAA,cAACgB,SAAAA;IAAOC,SAAQ;KACd,gBAAAjB,OAAA,cAACkB,YAAAA;IAAUhB,WAAWiB,SAAQ,CAAA;SAKpC,gBAAAnB,OAAA,cAACM,aAAac,QAAM,MAClB,gBAAApB,OAAA,cAACM,aAAae,SAAO;IAACC,kBAAkBzB;IAA0B0B,YAAY;IAAGC,kBAAkB;KACjG,gBAAAxB,OAAA,cAACM,aAAamB,UAAQ,MACnB3C,WACC,gBAAAkB,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACM,aAAaoB,MAAI;IAACrB,SAAS,MAAMrB,aAAa,KAAA;KAC7C,gBAAAgB,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KAAO,gBAAA,GACvB,gBAAAF,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KACd,gBAAAF,OAAA,cAAC4B,SAAAA;IAAQ1B,WAAWiB,SAAQ,CAAA;QAGhC,gBAAAnB,OAAA,cAACM,aAAaoB,MAAI;IAACrB,SAAS,MAAMrB,aAAa,MAAA;KAC7C,gBAAAgB,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KAAO,iBAAA,GACvB,gBAAAF,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KACd,gBAAAF,OAAA,cAAC6B,WAAAA;IAAU3B,WAAWiB,SAAQ,CAAA;QAGjCpC,iBACC,gBAAAiB,OAAA,cAACM,aAAaoB,MAAI;IAACrB,SAASnB;KAC1B,gBAAAc,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KAAO,YAAA,GACvB,gBAAAF,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KACd,gBAAAF,OAAA,cAAC8B,IAAAA;IAAE5B,WAAWiB,SAAQ,CAAA;SAO/B/C,mBACC,gBAAA4B,OAAA,cAAAA,OAAA,UAAA,MACG3B,mBAAmB,WAClB,gBAAA2B,OAAA,cAACM,aAAaoB,MAAI;IAACrB,SAAS,MAAM/B,gBAAgBM,OAAOT,OAAOQ,IAAI,MAAA;KAClE,gBAAAqB,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KAAO,WAAA,GACvB,gBAAAF,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KACd,gBAAAF,OAAA,cAAC+B,WAAAA;IAAU7B,WAAW8B,IAAGb,SAAQ,CAAA,CAAA;QAItC9C,mBAAmB,SAClB,gBAAA2B,OAAA,cAACM,aAAaoB,MAAI;IAACrB,SAAS,MAAM/B,gBAAgBM,OAAOT,OAAOQ,IAAI,OAAA;KAClE,gBAAAqB,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KAAO,YAAA,GACvB,gBAAAF,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KACd,gBAAAF,OAAA,cAACiC,YAAAA;IAAW/B,WAAW8B,IAAGb,SAAQ,CAAA,CAAA;SAO5C,gBAAAnB,OAAA,cAACM,aAAaoB,MAAI;IAACrB,SAASX;KAC1B,gBAAAM,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KAAO,iBAAA,GACvB,gBAAAF,OAAA,cAAC2B,QAAAA;IAAKzB,WAAU;KACd,gBAAAF,OAAA,cAACkC,SAAAA;IAAQhC,WAAW8B,IAAGb,SAAQ,CAAA,GAAI,WAAA;SAIzC,gBAAAnB,OAAA,cAACM,aAAa6B,OAAK,IAAA,CAAA,CAAA,GAIvB,gBAAAnC,OAAA,cAACS,SAAQW,QAAM,MACb,gBAAApB,OAAA,cAACS,SAAQY,SAAO,MACd,gBAAArB,OAAA,cAACS,SAAQgB,UAAQ;IAACW,YAAW;KAC3B,gBAAApC,OAAA,cAACqC,iBAAAA;IAAgBC,SAAQ;KACvB,gBAAAtC,OAAA,cAACuC,oBAAAA;IAAoB,GAAGhE;IAAOJ;IAAgBqE,SAAS,MAAMjD,wBAAwB,KAAA;QAG1F,gBAAAS,OAAA,cAACS,SAAQ0B,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAO5B;AAEO,IAAMhC,gBAAgB,CAAC,EAC5BC,WACAC,QAAO,MAIR;AACC,MAAID,cAAcqC,QAAW;AAC3B,WAAO;EACT;AAEA,MAAIC;AAEJ,UAAQtC,WAAAA;IACN,KAAK;AACHsC,aAAO,gBAAA1C,OAAA,cAAC4B,SAAAA;QAAQ1B,WAAWiB,SAAQ,CAAA;;AACnC;IACF,KAAK;AACHuB,aAAO,gBAAA1C,OAAA,cAAC6B,WAAAA;QAAU3B,WAAWiB,SAAQ,CAAA;;AACrC;EACJ;AAEA,SACE,gBAAAnB,OAAA,cAACC,OAAAA;IAAII;IAAkBH,WAAU;KAC9BwC,IAAAA;AAGP;;;AO/KA,SAASC,YAAY;AACrB,SAIEC,iBACAC,qBACAC,oBACAC,mBACAC,qBACK;AACP,OAAOC,UAAwCC,UAAUC,eAAAA,cAAaC,aAAAA,YAAWC,YAAAA,WAAUC,cAAAA,mBAAkB;AAE7G,SAA+BC,uBAAuB;AACtD,SAASC,MAAAA,WAAU;;;ACfnB,SAASC,+BAA+B;AACxC,SAASC,kBAA0C;AACnD,OAAOC,UAASC,cAAAA,mBAAkB;;;ACFlC,SAASC,sBAAsB;AAC/B,SAASC,iBAAAA,gBAAeC,UAAAA,SAAQC,YAAAA,iBAAgB;AAIzC,IAAMC,sBAAsB,MAAA;AACjC,QAAMC,mBAAmBC,QAAuB,IAAA;AAChD,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,UAAS,CAAA;AAE7C,QAAMC,cAAcC,eAAe;IACjCC,kBAAkB,MAAMP,kBAAkBQ,WAAW;IACrDC,OAAOP;IACPQ,UAAU;IACVC,cAAc,MAAM;EACtB,CAAA;AAEA,QAAMC,WAAW,CAACC,WAAAA;AAChB,YAAQA,OAAOC,MAAI;MACjB,KAAK;AACHX,sBAAcU,OAAOJ,KAAK;AAC1B;MAEF;AACE;IACJ;EACF;AAEA,SAAO;IAAET;IAAkBK;IAAaO;EAAS;AACnD;AAMO,IAAMG,mBAAmBC,eAAqC,CAAC,CAAA;;;AChCtE,SAASC,cAAcC,WAAWC,eAAeC,sBAAsBC,aAAaC,MAAAA,WAAU;AAKvF,IAAMC,aAAa;AACnB,IAAMC,cAAc;AACpB,IAAMC,eAAe;AACrB,IAAMC,cAAc;AACpB,IAAMC,cAAc;AAEpB,IAAMC,oBAAoB;AAQ1B,IAAMC,YAAgD,CAAC,EAAEC,UAAS,MAAOC,QAC9EC,IAAG,eAAeF,aAAa,WAAA,GAAcC,GAAAA;AAExC,IAAME,UAA8C,CAACC,WAAWH,QACrEC,IAAG,0BAA0BP,cAAAA,GAAiBM,GAAAA;AAQzC,IAAMI,YAAgD,CAAC,EAAEC,QAAQC,aAAY,MAAON,QACzFC,IACEI,SAASC,gBAAgB,4CAA4C,YACrED,UAAU,gBACV,kBAAA,GACGL,GAAAA;AAGA,IAAMO,UAA8C,CAACJ,WAAWH,QAAQC,IAAG,SAAA,GAAYD,GAAAA;AAEvF,IAAMQ,UAA8C,CAAC,EAAEC,OAAM,MAAOT,QACzEC,IACE,YACA,+CACAL,aACAa,UAAUC,aACVD,UAAU,mDAAA,GACPT,GAAAA;AAGA,IAAMW,kBAA8D,CAAC,EAAEC,WAAU,MAAE;AACxF,SAAOX,IACL,yCACA,qBACA,oBACA,qBACA,CAACW,cAAc,8DACf,oEACAA,cAAc,oCAAA;AAElB;AAOO,IAAMC,YAAgD,CAACV,WAAWH,QAAQC,IAAAA,GAAMD,GAAAA;AAGhF,IAAMc,UAAgD,CAAC,EAAEC,cAAcC,SAAQ,MAAOhB,QAC3FC,IACE,SACAc,eAAeE,uBAAuBC,eACtCH,gBAAgBI,WAChBJ,gBAAgB,0BAChBC,YAAY,yCAAA,GACThB,GAAAA;AAOA,IAAMoB,SAA6C,CAAC,EAAEX,QAAQY,OAAM,MAAOrB,QAChFC,IAAG,YAAYP,cAAce,UAAU,UAAUA,UAAUC,aAAaW,UAAUxB,mBAAAA,GAAsBG,GAAAA;AAEnG,IAAMsB,YAAsD,CAACnB,WAAWH,QAAQC,IAAAA,GAAMD,GAAAA;AAQtF,IAAMuB,YAAgD,CAACpB,WAAWH,QACvEC,IAAG,2BAA2BuB,cAAAA,GAAiBxB,GAAAA;AAE1C,IAAMyB,UAA8C,CAACtB,WAAWH,QAAQC,IAAAA,GAAMD,GAAAA;AAE9E,IAAM0B,UAA8C,CAAC,EAAEjB,OAAM,MAAOT,QACzEC,IAAGN,aAAa6B,cAAcf,UAAUC,aAAAA,GAAgBV,GAAAA;;;ACxG1D,SAAS2B,yBAAyB;AAElC,OAAOC,YAAuC;AAS9C,IAAMC,YAAY;AAElB,IAAMC,gBAAgB,CAAgC,EAAEC,MAAMC,SAAQ,MAA4B;AAChG,QAAMC,eAAeC,gBAAAA;AACrB,QAAMC,gBAAgBC,kBAAkB;IAAEC,aAAa;EAAU,CAAA;AAEjE,QAAMC,YAAYC,OAAON,cAAcF,KAAKS,OAAOC,UAAUC,MAAMX,MAAMY,UAAAA;AAEzE,SACE,gBAAAC,OAAA,cAACC,MAAAA;IAAGC,UAAU;IAAI,GAAGX;IAAeG;KACjCN,QAAAA;AAGP;AAEA,IAAMe,aAAa,CAAgC,EAAEhB,MAAMC,SAAQ,MAA4B;AAC7F,QAAMC,eAAeC,gBAAAA;AACrB,SAAO,gBAAAU,OAAA,cAACC,MAAAA;IAAGP,WAAWC,OAAON,cAAcF,KAAKS,OAAOC,UAAUC,MAAMX,MAAMY,UAAAA;KAAcX,QAAAA;AAC7F;AAEA,IAAMgB,OAAO,CAAgC,EAAEjB,MAAMC,SAAQ,MAA4B;AACvF,QAAM,EAAEiB,OAAM,IAAKf,gBAAAA;AACnB,QAAMgB,OAAOD,SAASnB,gBAAgBiB;AACtC,SAAO,gBAAAH,OAAA,cAACM,MAAAA;IAAKnB;KAAaC,QAAAA;AAC5B;AAEAgB,KAAKG,cAActB;;;AH5BnB,IAAMuB,kBAAkB;AAMxB,IAAMC,YAAY,CAAC,EAAEC,KAAI,MAAkB;AACzC,QAAM,EAAEC,OAAOC,aAAaC,cAAcC,OAAOC,QAAQC,QAAQC,aAAY,IAAKC,gBAAAA;AAElF,QAAMC,eAAeR,MAAMS,SAAQ,EAAGD;AACtC,QAAME,gBAAgBC,wBAAwB;IAAEC,MAAM;EAAO,CAAA;AAC7D,QAAMC,eAAe,CAACR,UAAU,CAAC,CAACC;AAElC,QAAM,EAAEQ,YAAW,IAAKC,YAAWC,gBAAAA;AAEnC,SACE,gBAAAC,OAAA,cAACC,SAAWb,UAAUK,eACnBX,KAAKoB,IAAI,CAACC,QAAAA;AACT,UAAMC,YAAYnB,iBAAiBkB,IAAIE;AACvC,UAAMC,aAAaf,eAAeY,IAAII,EAAE;AAExC,UAAMC,WAAWL,IAAIM,YAAW;AAEhC,UAAMC,aAAaC,QAAQ;MAAEf;MAAcY,UAAUA,aAAa;IAAM,CAAA;AAExE,WACE,gBAAAR,OAAA,cAACY,MAAAA;MACCC,KAAK7B,cAAcA,YAAYmB,IAAIE,QAAQ,IAAIF,IAAII;MACnDO,WAAWJ;MACXK,cAAYZ,IAAIa;MAChBC,KAAKpB,YAAYqB;MAChB,GAAId,aAAa;QAAE,gBAAgB;MAAW;MAC9C,GAAIE,cAAc;QAAE,iBAAiB;MAAO;MAC5C,GAAIV,gBAAgB;QACnBuB,UAAU;QACVC,SAAS,MAAA;AACP/B,uBAAac,IAAIE,QAAQ;QAC3B;QACAgB,SAAS,CAAC,EAAER,IAAG,MAAE;AACf,cAAIA,QAAQ,WAAWA,QAAQ,KAAK;AAClCxB,yBAAac,IAAIE,QAAQ;UAC3B;QACF;MACF;OAECnB,SAAS,gBAAAc,OAAA,cAACsB,MAAAA,MAAInB,IAAII,EAAE,GAEpBJ,IAAIoB,gBAAe,EAAGrB,IAAI,CAACsB,SAAAA;AAC1B,aACE,gBAAAxB,OAAA,cAACyB,MAAAA;QAAKZ,KAAKW,KAAKjB;QAAIiB;SACjBE,WAAWF,KAAKG,OAAOC,UAAUJ,MAAM;QAAEV,WAAW;QAAS,GAAGU,KAAKK,WAAU;MAAG,CAAA,CAAA;IAGzF,CAAA,GAEC1C,UAAU,gBAAAa,OAAA,cAACsB,MAAAA,IAAAA,CAAAA;EAGlB,CAAA,CAAA;AAGN;AAEAzC,UAAUiD,cAAclD;;;AIxExB,SAASmD,cAAAA,mBAAkB;AAC3B,OAAOC,YAAW;AAOlB,IAAMC,kBAAkB;AAExB,IAAMC,cAAc,CAACC,UAAAA;AACnB,QAAMC,eAAeC,gBAAAA;AACrB,QAAM,EAAEC,OAAOC,QAAQC,MAAK,IAAKJ;AACjC,QAAMK,UAAUH,MAAMI,gBAAe;AAErC,SACE,gBAAAC,OAAA,cAACC,SAAAA;IAAMC,WAAWC,UAAUX,KAAAA;KACzBM,QAAQM,IAAI,CAACC,gBACZ,gBAAAL,OAAA,cAACM,MAAAA;IAAGC,KAAKF,YAAYG;IAAIN,WAAWO,QAAQhB,YAAAA;KACzCI,SAAS,gBAAAG,OAAA,cAACU,MAAAA,IAAAA,GAEVL,YAAYM,QAAQP,IAAI,CAACQ,WAAAA;AACxB,WACE,gBAAAZ,OAAA,cAACU,MAAAA;MAAGH,KAAKK,OAAOJ;MAAIN,WAAWW,QAAQpB,cAAcmB,OAAOE,OAAOC,UAAUC,MAAMJ,QAAQK,UAAAA;OACxFL,OAAOM,gBAAgB,OAAOC,YAAWP,OAAOE,OAAOC,UAAUH,QAAQA,OAAOQ,WAAU,CAAA,CAAA;EAGjG,CAAA,GAECxB,UAAU,gBAAAI,OAAA,cAACU,MAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAKtB;AAEAnB,YAAY8B,cAAc/B;;;ACpC1B,SAASgC,cAAAA,mBAAkB;AAC3B,OAAOC,YAAW;AAKlB,IAAMC,kBAAkB;AAIxB,IAAMC,YAAY,CAACC,WAAAA;AACjB,QAAMC,eAAeC,gBAAAA;AACrB,QAAMC,eAAeF,aAAaG,MAAMC,gBAAe;AAEvD,SACE,gBAAAC,OAAA,cAACC,SAAAA;IAAMC,WAAWC,UAAUR,YAAAA;KACzBE,aAAaO,IAAI,CAACC,gBAAAA;AACjB;;MAEE,gBAAAL,OAAA,cAACM,MAAAA;QAAGC,KAAKF,YAAYG;QAAIN,WAAWO,QAAQd,YAAAA;SAEzCA,aAAae,SACZ,gBAAAV,OAAA,cAACW,MAAAA;QAAGT,WAAU;QAAYU,OAAO;UAAEC,OAAO;QAAG;SAAG,GAAA,GAKjDR,YAAYS,QAAQV,IAAI,CAACW,WAAAA;AACxB,cAAMC,aAAaD,OAAOE,OAAOC,cAAa;AAC9C,cAAMC,WAAWJ,OAAOK,iBAAgB;AACxC,cAAMC,YAAYN,OAAOE,OAAOK,UAAUC,MAAMF;AAEhD,eACE,gBAAArB,OAAA,cAACW,MAAAA;UACCJ,KAAKQ,OAAOP;UACZI,OAAO;YACLC,OAAOE,OAAOS,QAAO;UACvB;UACAtB,WAAWuB,QAAQ9B,cAAcoB,OAAOE,OAAOK,UAAUC,MAAMR,QAAQW,UAAAA;WAEtE,CAACX,UAAUA,OAAOY,gBACf,OACAC,YAAWb,OAAOE,OAAOK,UAAUP,QAAQA,OAAOc,WAAU,CAAA,GAO/DR,aACC,gBAAArB,OAAA,cAAC8B,OAAAA;UACC5B,WAAW6B,gBAAgB;YAAEf;UAAW,CAAA;UACxCgB,eAAejB,OAAOE,OAAOgB;UAC7BC,aAAaf;UACbgB,cAAchB;;MAKxB,CAAA,GAECxB,aAAayC,UAAU,gBAAApC,OAAA,cAACW,MAAAA,IAAAA,CAAAA;;EAG/B,CAAA,CAAA;AAGN;AAEAlB,UAAU4C,cAAc7C;;;ANzCxB,IAAM8C,YAAY,CAAC,EAAEC,SAAQ,MAAkB;AAC7C,QAAMC,eAAeC,oBAAAA;AACrB,SAAO,gBAAAC,OAAA,cAACC,iBAAiBC,UAAQ;IAACC,OAAOL;KAAeD,QAAAA;AAC1D;AAMA,IAAMO,gBAAgB,CAAC,EAAEP,UAAUQ,YAAYC,SAAS,GAAGC,MAAAA,MAA2B;AACpF,QAAM,EAAEC,iBAAgB,IAAKC,YAAWR,gBAAAA;AAExC,QAAMS,UAAUC,IAAGN,UAAAA;AAEnB,SAAOC,UACL,gBAAAN,OAAA,cAACY,MAAAA;IAAKC,KAAKL;IAAmB,GAAGD;KAC9BV,QAAAA,IAGH,gBAAAG,OAAA,cAACc,OAAAA;IAAIC,MAAK;IAAOC,WAAWN;IAASG,KAAKL;IAAmB,GAAGD;KAC7DV,QAAAA;AAGP;AAEO,IAAMoB,iBAAiB,CAAwBV,UAAAA;AACpD,QAAM,EACJQ,MACAG,gBACAC,kBACAC,SAAS,MACTC,gBACAC,OACAC,uBACAC,WAAU,IACRjB;AAEJ,QAAMkB,UAAUC,gBAAgBnB,MAAMkB,SAAS,CAAA,CAAE;AACjD,QAAME,eAAeD,gBAAgBnB,MAAMqB,MAAM,CAAA,CAAE;AAEnD,QAAM,CAACA,MAAMC,OAAAA,IAAWC,UAAS;OAAIH;GAAa;AAGlD,QAAMI,cAAcC,aAAY,MAAMH,QAAQ;OAAIF;GAAa,GAAG;IAACA;GAAa;AAChFM,EAAAA,WAAU,MAAMF,YAAAA,GAAe;IAACG,KAAKC,UAAUR,YAAAA;IAAeI;GAAY;AAE1E,QAAMK,iBAAgBC;AAEtB,QAAM,EAAEC,cAAcC,iBAAiBC,kBAAkBC,oBAAmB,IAAKC,kBAAkB;IACjGjB;IACAP;EACF,CAAA;AAEA,QAAM,EAAEyB,cAAcC,yBAAwB,IAAKC,gBAAgBtC,KAAAA;AAEnE,QAAM,CAACuC,UAAUC,oBAAAA,IAAwBjB,UAAwBvB,MAAMuC,YAAY,CAAA,CAAE;AACrFb,EAAAA,WAAU,MAAMc,qBAAqBxC,MAAMuC,YAAY,CAAA,CAAE,GAAG;IAACC;IAAsBxC,MAAMuC;GAAS;AAElG,QAAME,gBAAgBC,iBAAAA;AAEtB,QAAMC,QAAQC,cAAc;;IAE1BC,MAAM,CAAC;IACPxB;;IAGAH;IACA4B,eAAe;MACbC,MAAM;MACNC,SAAS;IACX;;IAGAC,OAAO;MACLrC;MACAmB;MACAE;MACAiB,SAAST,cAAcS;MACvBd;MACAG;IACF;;IAGAY,kBAAkB;IAClBC,sBAAsB;IACtBC,sBAAsBrB;IACtBsB,0BAA0BpB;;IAG1BqB,iBAAiBA,gBAAAA;IACjBC,mBAAmBA,kBAAAA;IACnBC,qBAAqBA,oBAAAA;;IAGrBC,oBAAoBnB,SAASoB,SAAS,IAAID,mBAAAA,IAAuBE;IACjEC,kBAAkBrB;IAElBsB,yBAAyBhD,mBAAmB,UAAU,OAAO8C;IAC7DG,oBAAoBjD,mBAAmB,OAAO,OAAO8C;IAErDI,sBAAsB3B;IAEtB4B,eAAe;IACfC,qBAAqB;;IAGrBC,YAAYpD;EACd,CAAA;AAEAW,EAAAA,WAAU,MAAA;AACRV,4BAAwBoD,OAAOC,KAAKjC,YAAAA,EAAckC,IAAI,CAACC,OAAO5B,MAAM6B,YAAW,EAAGC,SAASF,EAAAA,EAAIG,QAAQ,CAAA;EACzG,GAAG;IAAC1D;IAAuBoB;IAAcO;GAAM;AAE/CgC,gBAAc1D,YAAY0B,OAAOtB,IAAAA;AAGjC,QAAMuD,SAAS;AAEf,SACE,gBAAAnF,OAAA,cAACoC,gBAAAA;IACO,GAAG7B;IAAO,GAAGyC;IACnBE;IACA9B;IACA+D;IACAC,QAAQrE,SAAS,UAAUA,SAAS;KAEpC,gBAAAf,OAAA,cAACqF,WAAAA;IAAiB/D,OAAO;IAAQ,GAAGf;;AAG1C;AAMA,IAAM8E,YAAY,CAAwB9E,UAAAA;AACxC,QAAM,EAAEe,OAAOjB,YAAYU,MAAMuE,QAAQxC,UAAUyC,UAAS,IAAKhF;AACjE,QAAM,EAAE2C,MAAK,IAAKsC,gBAAAA;AAElB,MAAIlE,OAAO;AACT,WACE,gBAAAtB,OAAA,cAACyF,OAAAA;MAAIzE,WAAU;OACb,gBAAAhB,OAAA,cAAC0F,QAAAA,MAAMxD,KAAKC,UAAUe,MAAMyC,SAAQ,GAAIxB,QAAW,CAAA,CAAA,CAAA;EAGzD;AAEA,QAAMyB,mBAAmB1C,MAAMyC,SAAQ,EAAGnD,iBAAiBoD;AAE3D,QAAMC,iBAAiBD,mBAAmBE,kCAAkCC;AAE5E,SACE,gBAAA/F,OAAA,cAACkD,SAAAA;IACCnC;IACAC,WAAWgF,UAAUzF,OAAOF,UAAAA;IAC3B,GAAI,CAACkF,aAAa;MAAEU,OAAO;QAAEC,OAAOhD,MAAMiD,aAAY;MAAG;IAAE;KAE5D,gBAAAnG,OAAA,cAACoG,WAAAA,IAAAA,GAEAtD,UAAUoB,WAAW,IAAI,gBAAAlE,OAAA,cAAC6F,gBAAAA,IAAAA,IAAoB,gBAAA7F,OAAA,cAACqG,qBAAAA,IAAAA,GAE/Cf,UAAU,gBAAAtF,OAAA,cAACsG,aAAAA,IAAAA,CAAAA;AAGlB;AAEA,IAAMP,0BAA0B,MAAA;AAC9B,QAAM,EAAE7C,MAAK,IAAKsC,gBAAAA;AAClB,QAAM,EAAEe,aAAaC,SAAQ,IAAK/F,YAAWR,gBAAAA;AAE7C,QAAMwG,aAAavD,MAAMwD,cAAa;AACtC,MAAIC,aAAa,CAAA;AAEjB1E,EAAAA,WAAU,MAAA;AACRuE,aAAS;MAAEI,MAAM;MAAoBC,OAAOJ,WAAWvC;IAAO,CAAA;EAChE,GAAG;IAACuC,WAAWvC;GAAO;AAEtB,MAAI;AAKFyC,iBAAazD,MAAM4D,cAAa;EAClC,SAASC,GAAG;EAAC;AAEb,QAAM,EAAEZ,cAAca,gBAAe,IAAKT;AAE1C,QAAMU,cAAcD,gBAAAA;AACpB,QAAME,YAAYf,aAAAA;AAElB,QAAMgB,aAAaF,YAAY/C,SAAS,IAAI+C,cAAc,CAAA,GAAIG,SAAS,IAAI;AAC3E,QAAMC,gBAAgBJ,YAAY/C,SAAS,IAAIgD,aAAaD,cAAcA,YAAY/C,SAAS,CAAA,GAAIoD,OAAO,KAAK;AAE/G,QAAMC,eAAe;OAAIN,YAAYpC,IAAI,CAAC2C,eAAef,WAAWe,WAAWC,KAAK,CAAC;OAAMd;IAAYe,OACrG,CAACC,MAAM,CAAC,CAACA,CAAAA;AAGX,SACE,gBAAA3H,OAAA,cAAC4H,UAAAA,MACET,aAAa,KACZ,gBAAAnH,OAAA,cAAC6H,SAAAA;IAAM9G,MAAK;KACV,gBAAAf,OAAA,cAAC8H,MAAAA;IAAG/G,MAAK;KACP,gBAAAf,OAAA,cAAC+H,MAAAA;IAAG9B,OAAO;MAAE+B,QAAQ,GAAGb,UAAAA;IAAe;IAAGpG,MAAK;QAIrD,gBAAAf,OAAA,cAACiI,WAAAA;IAAUC,MAAMX;MAChBF,gBAAgB,KACf,gBAAArH,OAAA,cAAC6H,SAAAA;IAAM9G,MAAK;KACV,gBAAAf,OAAA,cAAC8H,MAAAA;IAAG/G,MAAK;KACP,gBAAAf,OAAA,cAAC+H,MAAAA;IAAG9B,OAAO;MAAE+B,QAAQ,GAAGX,aAAAA;IAAkB;IAAGtG,MAAK;;AAM9D;AAEO,IAAM+E,kCAAkC9F,gBAAAA,OAAMmI,KAAKpC,uBAAAA;AAE1D,IAAMM,sBAAsB,MAAA;AAC1B,QAAM,EACJnD,OAAO,EAAEe,oBAAAA,qBAAoBmE,iBAAiBzC,SAAQ,GACtDrE,MAAK,IACHkE,gBAAAA;AAEJ,SACE,gBAAAxF,OAAA,cAAAA,OAAA,UAAA,MACGiE,oBAAAA,EAAqBiE,KAAKrD,IAAI,CAACwD,KAAKC,MAAAA;AACnC,WACE,gBAAAtI,OAAA,cAAC4H,UAAAA;MAASW,KAAKD;OAEb,gBAAAtI,OAAA,cAACwI,SAAAA,MACC,gBAAAxI,OAAA,cAAC8H,MAAAA,MACExG,SAAS,gBAAAtB,OAAA,cAACyI,MAAAA,IAAAA,GACX,gBAAAzI,OAAA,cAACyI,MAAAA;;MAECC,SAASN,gBAAAA,EAAkB,CAAA,EAAGO,QAAQzE;MACtClD,WAAW4H,QAAQ,CAAC,CAAA;OAEnBjD,SAAAA,EAAW7C,SAAS,CAAA,GAAG,KAAE+F,OAAOR,IAAIS,iBAAiBnD,SAAAA,EAAW7C,SAAS,CAAA,CAAE,CAAA,GAAG,GAAA,CAAA,CAAA,GAIrF,gBAAA9C,OAAA,cAACiI,WAAAA;MAAUC,MAAMG,IAAIU;;EAG3B,CAAA,CAAA;AAGN;AAKO,IAAMC,QAAQ;EACnBC,MAAMrJ;EACNsJ,UAAU9I;EACV+I,MAAMlI;AACR;;;AO/RA,SAASmI,uBAAuB;AAChC,SAASC,SAAAA,QAAOC,eAA0BC,KAAAA,UAAS;AACnD,SACEC,0BAMK;AACP,SAASC,cAAc;AACvB,SAASC,2BAA2B;AACpC,OAAOC,WAASC,eAAAA,cAAaC,aAAAA,YAAWC,UAAAA,SAAQC,YAAAA,iBAAgB;AAGhE,SAASC,WAAW;AACpB,SAA8BC,SAAAA,QAAOC,eAAe;AACpD,SAASC,WAAAA,UAASC,MAAAA,WAAU;;AAQrB,IAAMC,sBAAsB,OAA8B;EAC/DC,QAAQC,mBAAAA;EACRC,SAAS,IAAIC,cAAAA;AACf;AAqDA,IAAMC,sBAAsB,CAAwBC,gBAAAA;AAClD,QAAM,EAAEC,OAAOC,SAAQ,IAAKF,YAAYG,OAAOC,UAAUC;AACzD,SAAOJ,QACL,gBAAAK,QAAA,cAACC,cAAAA;IACCN;IACAO,OAAOR,YAAYS,SAAQ;IAC3BC,eAAe,CAACF,UAAUN,WAAWF,YAAYW,IAAIC,UAAUZ,YAAYG,OAAOU,IAAIL,KAAAA;OAEtF;AACN;AAEA,IAAMM,oBAAoB,CAAwBd,gBAAAA;AAChD,QAAMe,MAAMC,QAAyB,IAAA;AACrC,QAAM,EAAEC,kBAAiB,IAAKC,gBAAAA;AAE9B,QAAM,EAAEhB,UAAUiB,KAAI,IAAKnB,YAAYG,OAAOC,UAAUC;AAGxD,QAAMe,eAAepB,YAAYS,SAAQ;AAEzC,QAAMY,kBAAkBC,aAAY,MAAA;AAElC,WAAQF,cAAsBG,WAAWH;EAC3C,GAAG;IAACA;GAAa;AAEjB,QAAM,CAACZ,OAAOgB,QAAAA,IAAYC,UAASJ,eAAAA;AAGnCK,EAAAA,WAAU,MAAMF,SAASH,gBAAAA,CAAAA,GAAoB;IAACA;GAAgB;AAE9D,QAAMM,aAAa,MAAA;AACjBZ,QAAIa,WAAWC,SAASC,kBAAkBf,IAAIa,WAAWX,kBAAkBF,IAAIa,OAAO,GAAGG,MAAAA;AAEzF,QAAIvB,UAAUY,cAAc;AAC1BlB,iBAAWF,YAAYW,IAAIC,UAAUZ,YAAYG,OAAOU,IAAIL,KAAAA;IAC9D;EACF;AAEA,QAAMwB,eAAe,MAAMR,SAASJ,YAAAA;AAEpC,MAAIa,cAAc;AAClB,QAAMC,UAAUlC,YAAYmC,MAAMC,sBAAqB;AAGvD,MAAIF,QAAQ,CAAA,EAAGrB,OAAOb,YAAYG,OAAOU,IAAI;AAC3C,UAAMwB,WAAWrC,YAAYmC,MAAMG,YAAW,EAAGC,KAAKC;AACtDP,kBAAcjC,YAAYW,IAAI8B,UAAUJ,WAAW,KAAKH,QAAQ,CAAA,EAAGrB,OAAOb,YAAYG,OAAOU;EAC/F;AAGA,SACE,gBAAAP,QAAA,cAACoC,OAAMC,MAAI,MACT,gBAAArC,QAAA,cAACoC,OAAME,WAAS;IACd7B;IACA8B,SAAQ;IACRZ,aAAaA,cAAc,eAAea;IAC1CC,YAAY;MAAC;MAAWC;MAAa7B,MAAM4B;;IAC3CvC,OAAOA,SAAS;IAChByC,QAAQtB;IACRuB,UAAU,CAACC,UAAU3B,SAAS2B,MAAMC,OAAO5C,KAAK;IAChD6C,WAAW,CAACF,UAAWA,MAAMG,QAAQ,WAAW3B,WAAAA,KAAkBwB,MAAMG,QAAQ,YAAYtB,aAAAA;;AAIpG;AAEA,IAAMuB,cAAc,CAACC,SAAmBA,MAAMC,KAAAA,EAAOjB,SAASkB,OAAOF,IAAAA,IAAQG;AAE7E,IAAMC,gBAAgB,CAACpD,OAAgBqD,WACrCrD,SAASA,UAAU,IACfA,MAAMsD,eAAehB,QAAW;EAC9BiB,uBAAuBF,UAAU;EACjCG,uBAAuBH,UAAU;AACnC,CAAA,IACA;AAEN,IAAMI,oBAAoB,CAAwBjE,gBAAAA;AAChD,QAAM,EAAEE,UAAU2D,OAAM,IAAK7D,YAAYG,OAAOC,UAAUC;AAC1D,QAAMG,QAAQR,YAAYS,SAAQ;AAClC,QAAM,CAAC+C,MAAMU,OAAAA,IAAWzC,UAAiBmC,cAAcpD,OAAOqD,MAAAA,CAAAA;AAC9D,QAAM,EAAE5C,kBAAiB,IAAKC,gBAAAA;AAC9B,QAAMH,MAAMC,QAAgC,IAAA;AAG5CU,EAAAA,WAAU,MAAA;AACP,KAAA,CAACG,SAASC,iBAAiBD,SAASC,kBAAkBf,IAAIa,YAAYsC,QAAQN,cAAcpD,OAAOqD,MAAAA,CAAAA;EACtG,GAAG;IAACA;IAAQrD;GAAM;AAElB,QAAM2D,aAAa,MAAMD,QAAQ1D,UAAUsC,SAAYsB,OAAO5D,KAAAA,IAAS,EAAA;AAGvE,QAAMmB,aAAa,MAAA;AACjB,UAAM0C,YAAYd,YAAYC,IAAAA;AAE9B,QAAI,CAACc,MAAMD,SAAAA,GAAY;AACrBnE,iBAAWF,YAAYW,IAAIC,UAAUZ,YAAYG,OAAOU,IAAIwD,SAAAA;AAC5DH,cAAQN,cAAcS,WAAWR,MAAAA,CAAAA;IACnC,OAAO;AAELK,cAAQN,cAAcpD,OAAOqD,MAAAA,CAAAA;IAC/B;AAGA9C,QAAIa,WAAWC,SAASC,kBAAkBf,IAAIa,WAAWX,kBAAkBF,IAAIa,OAAO,GAAGG,MAAAA;EAC3F;AAEA,QAAMwC,gBAAgB,MAAA;AACpBL,YAAQN,cAAcpD,OAAOqD,MAAAA,CAAAA;AAC7B9C,QAAIa,WAAWX,kBAAkBF,IAAIa,OAAO,GAAGG,MAAAA;EACjD;AAEA,SACE,gBAAAzB,QAAA,cAACoC,OAAMC,MAAI,MACT,gBAAArC,QAAA,cAACoC,OAAME,WAAS;IACd7B;IACA8B,SAAQ;IACRrC,OAAOgD;IACPT,YAAY;MAAC;MAA8BC;;IAC3CC,QAAQtB;IACR6C,SAASL;IACTjB,UAAU,CAAC,EAAEE,QAAQ,EAAE5C,OAAAA,OAAK,EAAE,MAAO0D,QAAQ1D,MAAAA;IAC7C6C,WAAW,CAACF,UAAAA;AAEV;;QAA2DA,MAAMG,QAAQ,WAAW3B,WAAAA;;IACtF;;AAIR;AAEA,IAAM8C,yBAAyB,CAAwBzE,gBAAAA;AACrD,QAAM,EAAEmB,KAAI,IAAKnB,YAAYG,OAAOC,UAAUC;AAC9C,QAAM,EAAEM,IAAG,IAAKX;AAEhB,QAAM0E,UAAU/D,IAAIgE,aAAY,IAC5BhE,IAAIiE,cAAa,IACjBjE,IAAIkE,oBAAmB,MAAOlE,IAAImE,kBAAiB,IAAK,kBAAkBnE,IAAIoE,wBAAuB;AAEzG,SACE,gBAAAzE,QAAA,cAAC0E,OAAAA;IAAIC,WAAU;IAAoCC,MAAK;KACtD,gBAAA5E,QAAA,cAACoC,OAAMC,MAAI,MACT,gBAAArC,QAAA,cAACoC,OAAMyC,UAAQ;IACbC,MAAM;IACNrC,YAAY;MAAC5B,MAAM4B;;IACnB2B;IACAW,iBAAiB,CAAClC,UAAAA;AAChB,UAAIxC,IAAIgE,aAAY,GAAI;AACtBhE,YAAI2E,yBAAwB,EAAGnC,KAAAA;MACjC;IACF;IACAoC,UAAU,EAAE5E,IAAIgE,aAAY,KAAMhE,IAAIkE,oBAAmB;;AAKnE;AAEA,IAAMW,oBAAoB,CAAwBxF,gBAAAA;AAChD,QAAM,EAAEE,SAAQ,IAAKF,YAAYG,OAAOC,UAAUC;AAClD,QAAMG,QAAQR,YAAYS,SAAQ;AAClC,SACE,gBAAAH,QAAA,cAACoC,OAAMC,MAAI,MACT,gBAAArC,QAAA,cAACoC,OAAM+C,QAAM;IACX1C,YAAW;IACX2C,SAAS,CAACvC,UAAUA,MAAMwC,gBAAe;IACzCJ,UAAU,CAACrF;IACXwE,SAAS,CAAC,CAAClE;IACX6E,iBAAiB,CAAC7E,WAAAA;AAChBN,iBAAWF,YAAYW,IAAIC,UAAUZ,YAAYG,OAAOU,IAAI,CAAC,CAACL,MAAAA;IAChE;;AAIR;AAKO,IAAMV,gBAAN,MAAMA;;;;EAIX8F,SAAS,EACPC,OACA9C,YACA9C,OACAC,UACA,GAAG4F,MAAAA,GAC4D;AAC/D,WAAO;MACLC,SAAS;MACTC,QAAQ,CAAC7F,WAAAA;AACP,eAAO0F,SAAS1F,OAAO6F,OAAOnF;MAChC;MACAM,MACElB,SAASC,WACLH,sBACA,CAACC,gBAAAA;AACC,cAAMiG,YAAYjG,YAAYS,SAAQ;AACtC,eAAO,gBAAAH,QAAA,cAAC0E,OAAAA;UAAIC,WAAWiB,IAAG,YAAYnD,UAAAA;WAAckD,YAAYhG,OAAOkG,QAAQF,SAAAA,IAAa,EAAA;MAC9F;MACN,GAAGH;MACHzF,MAAM;QACJ,GAAGyF,MAAMzF;QACTJ;QACAC;QACAiB,MAAM;UAAE4B;UAAY,GAAG+C,MAAMzF,MAAMc;QAAK;MAC1C;IACF;EACF;;;;EAKAiF,OAAO,EAAEP,OAAO9C,YAAY7C,UAAU,GAAG4F,MAAAA,IAAsC,CAAC,GAE9E;AACA,WAAO;MACLC,SAAS;;MAETC,QAAQ,CAAC7F,WAAAA;AACP,eAAO0F,SAAS1F,OAAO6F,OAAOnF;MAChC;MACAM,MAAMjB,WACFY,oBACA,CAACK,SAAAA;AACC,YAAIX,QAAQW,KAAKV,SAAQ;AAEzB,YAAI,OAAOD,UAAU,YAAaA,OAAe6F,eAAe,gBAAgB;AAC9E7F,kBAASA,MAAce;QACzB;AAEA,eAAO,gBAAAjB,QAAA,cAAC0E,OAAAA;UAAIC,WAAWiB,IAAG,YAAYlD,aAAaD,UAAAA;WAAcvC,KAAAA;MACnE;MACJ,GAAGsF;MACHzF,MAAM;QACJ,GAAGyF,MAAMzF;QACTH;QACAiB,MAAM;UAAE,GAAG2E,MAAMzF,MAAMc;UAAM4B;QAAW;MAC1C;IACF;EACF;;;;EAKAuD,OAAO,EAAET,OAAOE,SAAShD,YAAYc,QAAQ3D,UAAU,GAAG4F,MAAAA,IAAsC,CAAC,GAE/F;AACA,WAAO;MACLV,MAAM;MACNW,SAAS;MACTC,QAAQ,CAAC7E,SAAS0E,SAAS1E,KAAK6E,OAAOnF;MACvCM,MAAM8C;MACN,GAAG6B;MACHzF,MAAM;QACJ,GAAGyF,MAAMzF;QACTH;QACA2D;QACAmC,QAAQ;UAAE,GAAGF,MAAMzF,MAAM2F;QAAO;QAChC7E,MAAM;UAAE,GAAG2E,MAAMzF,MAAMc;UAAM4B;QAAW;MAC1C;IACF;EACF;;;;;EAMAwD,KAAK,EAAEV,OAAOW,QAAQC,YAAYC,UAAU3D,YAAY,GAAG+C,MAAAA,IAAoC,CAAC,GAE9F;AACA,WAAO;MACLV,MAAM;MACNW,SAAS;MACTC,QAAQ,CAAC7E,SAAS0E,SAAS1E,KAAK6E,OAAOnF;MACvCM,MAAM,CAACA,SAAAA;AACL,cAAMX,QAAQW,KAAKV,SAAQ;AAE3B,YAAI;AACF,gBAAMkG,MAAMnG,QACRiG,aACED,OAAOhG,OAAOiG,UAAAA,IACdC,WACEE,oBAAoBpG,OAAO;YAAEqG,WAAW;UAAK,CAAA,IAC7CrG,MAAMsG,YAAW,IACrBhE;AAEJ,iBAAO,gBAAAxC,QAAA,cAAC0E,OAAAA;YAAIC,WAAWiB,IAAGlD,aAAaD,UAAAA;aAAc4D,GAAAA;QACvD,SAASI,KAAK;AACZC,cAAIC,KAAK,eAAe;YAAEzG;UAAM,GAAA;;;;;;AAChC,iBAAO;QACT;MACF;MACA,GAAGsF;MACHzF,MAAM;QAAE,GAAGyF,MAAMzF;QAAMc,MAAM;UAAE,GAAG2E,MAAMzF,MAAMc;UAAM4B;QAAW;MAAE;IACnE;EACF;;;;EAKAO,IAAI,EAAEuC,OAAOqB,SAASnE,YAAY,GAAG+C,MAAAA,IAAmC,CAAC,GAAyC;AAChH,WAAO;MACLV,MAAM;MACNW,SAAS;MACTC,QAAQ,CAAC7E,SAAS0E,SAAS1E,KAAK6E,OAAOnF;MACvCM,MAAM,CAACA,SAAAA;AACL,cAAMX,QAAQW,KAAKV,SAAQ;AAC3B,YAAI,CAACD,OAAO;AACV;QACF;AAGA,cAAM2G,UAAU3G,MAAM4G,SAAQ;AAC9B,YAAI,CAACF,SAAS;AACZ,iBAAOC;QACT;AAEA,eACE,gBAAA7G,QAAA,cAAC+G,QAAQC,UAAQ,MACf,gBAAAhH,QAAA,cAAC+G,QAAQ1E,MAAI,MACX,gBAAArC,QAAA,cAAC+G,QAAQE,SAAO,MAAEJ,OAAAA,GAClB,gBAAA7G,QAAA,cAAC+G,QAAQG,QAAM,MACb,gBAAAlH,QAAA,cAAC+G,QAAQI,SAAO;UAACC,MAAK;WACpB,gBAAApH,QAAA,cAAC+G,QAAQM,OAAK,IAAA,GACd,gBAAArH,QAAA,cAACsH,eAAAA;UACClC,SAAS,CAACmC,OAAAA;AACRA,eAAGlC,gBAAe;AAClB,iBAAKmC,UAAUC,UAAUC,UAAUxH,MAAMyH,MAAK,CAAA;UAChD;;MAOd;MACA,GAAGnC;MACHzF,MAAM;QAAE,GAAGyF,MAAMzF;QAAMc,MAAM;UAAE,GAAG2E,MAAMzF,MAAMc;UAAM4B,YAAY;YAAC;YAAaC;YAAaD;;QAAY;MAAE;IAC3G;EACF;;;;EAKAmF,UAAU,EAAEnF,YAAY7C,UAAUW,KAAK,YAAW,IAAoC,CAAC,GAElF;AACH,WAAO;MACLA;MACAuE,MAAM;MACN+C,gBAAgB;MAChB9H,MAAM;QAAEH;QAAUiB,MAAM;UAAE4B;QAAW;MAAE;MACvCiD,QAAQ,CAAC,EAAE7D,MAAK,MAAE;AAChB,cAAM,EAAEiG,eAAc,IAAKC,gBAAAA;AAC3B,cAAM3D,UAAUvC,MAAMmG,sBAAqB,IAAK,kBAAkBnG,MAAMoG,qBAAoB;AAE5F,eAAOH,mBAAmB,UACxB,gBAAA9H,QAAA,cAAC0E,OAAAA;UAAIC,WAAU;UAAoCC,MAAK;WACtD,gBAAA5E,QAAA,cAACoC,OAAMC,MAAI,MACT,gBAAArC,QAAA,cAACoC,OAAMyC,UAAQ;UACbC,MAAM;UACNrC,YAAY;YAAC;YAAYA;;UACzB2B;UACAW,iBAAiB,MAAMlD,MAAMqG,sBAAqB;eAItD;MACN;MACArH,MAAMsD;IACR;EACF;;;;EAKAgE,OAAO,EAAE5C,OAAO9C,YAAY7C,UAAU,GAAG4F,MAAAA,IAAsC,CAAC,GAE9E;AACA,WAAO;MACLV,MAAM;MACNW,SAAS;MACTC,QAAQ,CAAC7F,WAAW0F,SAAS1F,OAAO6F,OAAOnF;;MAE3C6H,eAAe;MACfvH,MAAMqE;MACN,GAAGM;MACHzF,MAAM;QAAE,GAAGyF,MAAMzF;QAAMH;QAAUiB,MAAM;UAAE,GAAG2E,MAAMzF,MAAMc;UAAM4B,YAAY;YAACC;YAAaD;;QAAY;MAAE;IACxG;EACF;;;;EAKA4F,KAAK,EAAE9C,OAAOT,MAAMwD,IAAIC,KAAK,GAAG/C,MAAAA,IAAoC,CAAC,GAAuC;AAC1G,UAAMgD,SAASF,IAAIG,QAAQC;AAC3B,UAAMC,UAAUJ,KAAKE,QAAQG;AAC7B,WAAO;MACL9D,MAAMA,QAAQ;;MAEdsD,eAAe;MACf1C,QAAQ,CAAC7F,WAAW,gBAAAG,QAAA,cAAC0E,OAAAA;QAAIC,WAAW;SAAmBY,SAAS1F,OAAO6F,OAAOnF,EAAE;MAChFM,MAAM,CAACA,SAAAA;AACL,cAAMX,QAAQW,KAAKV,SAAQ;AAC3B,YAAID,OAAO;AACT,iBAAO,gBAAAF,QAAA,cAACwI,QAAAA;YAAO7D,WAAWiB,IAAG,kBAAkBiD,SAAQ,CAAA,GAAIP,IAAI3D,aAAa,gBAAA;;QAC9E,WAAWzE,UAAU,OAAO;AAC1B,iBAAO,gBAAAF,QAAA,cAAC2I,SAAAA;YAAQhE,WAAWiB,IAAG,kBAAkBiD,SAAQ,CAAA,GAAIN,KAAK5D,aAAa,cAAA;;QAChF,OAAO;AACL,iBAAO;QACT;MACF;MACA,GAAGa;IACL;EACF;;;;EAKAsD,QAAQ,EAAEvD,OAAO9C,YAAY,GAAG+C,MAAAA,IAAmC,CAAC,GAAyC;AAC3G,WAAO;MACLV,MAAM;MACNW,SAAS;MACTC,QAAQ,CAAC7E,SAAS0E,SAAS1E,KAAK6E,OAAOnF;MACvCM,MAAM,CAACA,SAAAA;AACL,cAAMX,QAAQW,KAAKV,SAAQ;AAE3B,eACE,gBAAAH,QAAA,cAAC0E,OAAAA;UAAIC,WAAU;WACb,gBAAA3E,QAAA,cAAC+I,QAAAA;UAAKpE,WAAU;WAAWqE,KAAKC,UAAU/I,KAAAA,CAAAA,CAAAA;MAGhD;MACA,GAAGsF;MACHzF,MAAM;QAAE,GAAGyF,MAAMzF;QAAMc,MAAM;UAAE,GAAG2E,MAAMzF,MAAMc;UAAM4B,YAAY;YAAC;YAAaC;YAAaD;;QAAY;MAAE;IAC3G;EACF;AACF;;;ACxgBA,YAAYyG,SAAS;AASd,IAAMC,2BAA2B,CAACC,WAAAA;AACvC,QAAMC,UAAU,CAACC,MAAeC,MAAgBC,QAAAA;AAC9C,UAAMC,aAAiBC,0BAAsBJ,IAAAA;AAC7CG,eAAWE,QAAQ,CAACC,SAAAA;AAClB,YAAMC,WAAWD,KAAKE,KAAKC,SAAQ;AAEnC,UAAIH,KAAKI,YAAY;AACnB,cAAMC,eAAeC,qBAAqBN,IAAAA;AAC1C,YAAIO,SAASF,YAAAA,GAAe;AAC1B,iBAAOZ,QAAQY,cAAc;eAAIV;YAAMM;aAAWL,GAAAA;QACpD;MACF;AAEA,UAAIW,SAASP,KAAKQ,IAAI,GAAG;AACvBf,gBAAQO,KAAKQ,MAAM;aAAIb;UAAMM;WAAWL,GAAAA;MAC1C,OAAO;AACLA,YAAIa,KAAK;UAACd,KAAKe,OAAOT,QAAAA,EAAUU,KAAK,GAAA;UAAMC,iBAAiBZ,IAAAA;SAAM;MACpE;IACF,CAAA;AAEA,WAAOJ;EACT;AAEA,SAAOH,QAAQD,OAAOqB,KAAK,CAAA,GAAI,CAAA,CAAE;AACnC;AAEA,IAAMN,WAAW,CAACb,SAAsBoB,kBAAcpB,IAAAA;AAEtD,IAAMqB,kBAAkB,CAACf,SAAoCgB,YAAQhB,KAAKQ,IAAI,KAAKR,KAAKI;AAExF,IAAME,uBAAuB,CAACN,SAAAA;AAC5B,MAAI,CAACe,gBAAgBf,IAAAA,GAAO;AAC1B,UAAM,IAAIiB,MAAM,6BAA6BC,OAAOlB,KAAKE,IAAI,CAAA,EAAG;EAClE;AAEA,MAAI,CAAKc,YAAQhB,KAAKQ,IAAI,GAAG;AAC3B,UAAM,IAAIS,MAAM,qBAAqBC,OAAOlB,KAAKE,IAAI,CAAA,EAAG;EAC1D;AAEA,QAAM,CAACM,MAAMW,cAAAA,IAAkBnB,KAAKQ,KAAKY;AACzC,SAAOZ;AACT;AAEA,IAAMa,eAAe,CAACb,SAAAA;AACpB,MAAQc,oBAAgBd,IAAAA,GAAO;AAC7B,WAAO;EACT,WAAee,oBAAgBf,IAAAA,GAAO;AACpC,WAAO;EACT,WAAegB,qBAAiBhB,IAAAA,GAAO;AACrC,WAAO;EACT;AAEA,MAAQiB,iBAAajB,IAAAA,GAAO;AAC1B,WAAOa,aAAab,KAAKkB,IAAI;EAC/B;AAMA,MAAQC,gBAAYnB,IAAAA,GAAO;AACzB,UAAMoB,aAAiBC,4BAAwBrB,IAAAA;AAC/C,QAAIoB,WAAWE,SAAS,QAAQ;AAC9B,UAAIF,WAAWG,UAAU,kBAAkB;AACzC,eAAO;MACT;IACF;EACF;AAEA,SAAO;AACT;AAEA,IAAMnB,mBAAmB,CAACZ,SAAAA;AACxB,MAAIQ,OAAOR,KAAKQ;AAChB,MAAIR,KAAKI,YAAY;AACnBI,WAAOF,qBAAqBN,IAAAA;EAC9B;AAEA,SAAOqB,aAAab,IAAAA;AACtB;;;ACjFO,IAAMwB,qBAAqB,CAAIC,WAAAA;AACpC,QAAM,EAAEC,QAAQC,QAAO,IAAKC,oBAAAA;AAE5B,QAAMC,aAAaC,yBAAyBL,MAAAA;AAC5C,SAAOI,WAAWE,IAAI,CAAC,CAACC,MAAMC,IAAAA,MAAK;AACjC,UAAMC,cAAcF,KAAKG,SAAQ;AAEjC,QAAIC;AACJ,YAAQH,MAAAA;MACN,KAAK,UAAU;AACbG,iBAAST,QAAQU,OAAO;UAAEC,OAAOJ;QAAY,CAAA;AAC7C;MACF;MACA,KAAK,UAAU;AACbE,iBAAST,QAAQY,OAAO;UAAED,OAAOJ;QAAY,CAAA;AAC7C;MACF;MACA,KAAK,WAAW;AACdE,iBAAST,QAAQa,OAAO;UAAEF,OAAOJ;QAAY,CAAA;AAC7C;MACF;MACA,KAAK,QAAQ;AACXE,iBAAST,QAAQc,KAAK;UAAEH,OAAOJ;QAAY,CAAA;AAC3C;MACF;MACA,KAAK,WAAW;AACdE,iBAAST,QAAQe,QAAQ;UAAEJ,OAAOJ;UAAaS,IAAIT;QAAY,CAAA;AAC/D;MACF;MACA,SAAS;AACP,cAAM,IAAIU,MAAM,0BAA0BX,IAAAA,EAAM;MAClD;IACF;AAEA,WAAOP,OAAOmB,SAASX,aAAoBE,MAAAA;EAC7C,CAAA;AACF;",
6
+ "names": ["translationKey", "CaretDown", "React", "useCallback", "useState", "Popover", "useTranslation", "PopoverCombobox", "descriptionText", "getSize", "mx", "staticPlaceholderText", "initialItems", "model", "value", "getId", "label", "getText", "data", "CellCombobox", "onValueChange", "t", "useTranslation", "translationKey", "items", "setItems", "useState", "loading", "setLoading", "searchInputValue", "setSearchInputValue", "handleSearchInputValueChange", "text", "query", "reduce", "acc", "item", "handleValueChange", "useCallback", "id", "PopoverCombobox", "Root", "placeholder", "Trigger", "variant", "classNames", "span", "className", "mx", "staticPlaceholderText", "CaretDown", "weight", "getSize", "Content", "shouldFilter", "Input", "List", "length", "p", "descriptionText", "Empty", "Object", "entries", "map", "Item", "key", "onSelect", "Popover", "Arrow", "X", "GearSix", "CaretDown", "ArrowDown", "ArrowUp", "ArrowRight", "ArrowLeft", "React", "useRef", "useState", "useCallback", "Button", "DensityProvider", "Popover", "DropdownMenu", "getSize", "mx", "Check", "Trash", "X", "React", "useRef", "useState", "Button", "Input", "Select", "Separator", "useTranslation", "getSize", "mx", "safeParseInt", "Section", "children", "className", "React", "div", "role", "mx", "ColumnSettingsForm", "column", "tableDef", "tablesToReference", "onUpdate", "onDelete", "onClose", "formState", "setFormState", "useState", "prop", "id", "refTable", "refProp", "type", "String", "label", "digits", "propRef", "useRef", "t", "useTranslation", "translationKey", "handleCancel", "handleSave", "length", "match", "current", "focus", "columns", "find", "c", "safeParseInt", "handleDelete", "Input", "Root", "Label", "classNames", "TextInput", "placeholder", "value", "onChange", "event", "prevState", "target", "autoFocus", "ref", "replace", "Select", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "map", "Option", "key", "filter", "name", "Separator", "Button", "variant", "onClick", "span", "Check", "getSize", "ns", "X", "Trash", "useCallback", "useEffect", "useState", "useOnTransition", "useColumnResizing", "columns", "onColumnResize", "columnsInitialised", "setColumnsInitialised", "useState", "columnSizing", "setColumnSizing", "useEffect", "filter", "column", "size", "prop", "undefined", "reduce", "state", "columnSizingInfo", "setColumnSizingInfo", "notifyColumnResize", "useCallback", "useOnTransition", "isResizingColumn", "v", "useState", "React", "useContext", "createContext", "TableContext", "createContext", "TableProvider", "children", "value", "React", "Provider", "useTableContext", "context", "useContext", "useColumnSorting", "columnSorting", "setColumnSorting", "useState", "sortColumn", "columnId", "sortDirection", "id", "desc", "clearColumnSorting", "sorting", "useSortColumn", "column", "useTableContext", "initialSortDirection", "setInitialSortDirection", "columnSort", "find", "s", "undefined", "canSort", "getCanSort", "updateColumnSort", "direction", "onToggleSort", "onSelectSort", "onClearSort", "useCallback", "useEffect", "useState", "usePinLastRow", "pinLastRow", "table", "data", "scrollContextRef", "useTableRootContext", "pinnedRowKey", "setPinnedRowKey", "useState", "scrollToBottom", "useCallback", "element", "current", "scrollHeight", "requestAnimationFrame", "scrollTo", "top", "pinRow", "rowToPin", "resetRowPinning", "pin", "id", "clearRowPinning", "undefined", "pinLastRowCallback", "rows", "getRowModel", "length", "lastRow", "useEffect", "useControllableState", "useCallback", "useRowSelection", "props", "rowSelection", "setRowSelection", "useControllableState", "prop", "onChange", "onRowSelectionChange", "defaultProp", "defaultRowSelection", "handleRowSelectionChange", "useCallback", "updaterOrValue", "nextRowSelection", "rowsSelectable", "nextRowSelectionKey", "Object", "keys", "filter", "id", "ColumnMenu", "column", "columnOrderable", "columnPosition", "onColumnReorder", "props", "title", "label", "length", "id", "header", "context", "canSort", "sortDirection", "onSelectSort", "onToggleSort", "onClearSort", "useSortColumn", "columnSettingsAnchorRef", "useRef", "isColumnSettingsOpen", "setIsColumnSettingsOpen", "useState", "shouldPreventFocusOnClose", "onOpenColumnSettings", "useCallback", "current", "onDropdownCloseAutoFocus", "event", "preventDefault", "React", "div", "className", "SortIndicator", "direction", "onClick", "DropdownMenu", "Root", "modal", "Popover", "open", "onOpenChange", "Trigger", "ref", "asChild", "Anchor", "Button", "variant", "CaretDown", "getSize", "Portal", "Content", "onCloseAutoFocus", "sideOffset", "collisionPadding", "Viewport", "Item", "span", "ArrowUp", "ArrowDown", "X", "ArrowLeft", "mx", "ArrowRight", "GearSix", "Arrow", "classNames", "DensityProvider", "density", "ColumnSettingsForm", "onClose", "undefined", "icon", "Slot", "getCoreRowModel", "getExpandedRowModel", "getGroupedRowModel", "getSortedRowModel", "useReactTable", "React", "Fragment", "useCallback", "useEffect", "useState", "useContext", "useDefaultValue", "mx", "useArrowNavigationGroup", "flexRender", "React", "useContext", "useVirtualizer", "createContext", "useRef", "useState", "useTableRootContext", "scrollContextRef", "useRef", "tableCount", "setTableCount", "useState", "virtualizer", "useVirtualizer", "getScrollElement", "current", "count", "overscan", "estimateSize", "dispatch", "action", "type", "TableRootContext", "createContext", "modalSurface", "focusRing", "ghostSelected", "ghostSelectedCurrent", "groupBorder", "mx", "currentRow", "selectedRow", "flushPadding", "textPadding", "headPadding", "gridCellFocusRing", "tableRoot", "fullWidth", "etc", "mx", "groupTh", "_props", "theadRoot", "header", "stickyHeader", "theadTr", "theadTh", "border", "groupBorder", "theadResizeRoot", "isResizing", "tbodyRoot", "tbodyTr", "canBeCurrent", "isPinned", "ghostSelectedCurrent", "ghostSelected", "focusRing", "tdRoot", "isGrid", "tdContent", "tfootRoot", "modalSurface", "tfootTr", "tfootTh", "useFocusableGroup", "React", "CELL_NAME", "FocusableCell", "cell", "children", "tableContext", "useTableContext", "domAttributes", "useFocusableGroup", "tabBehavior", "className", "tdRoot", "column", "columnDef", "meta", "classNames", "React", "td", "tabIndex", "StaticCell", "Cell", "isGrid", "Root", "displayName", "TABLE_BODY_NAME", "TableBody", "rows", "table", "keyAccessor", "currentDatum", "debug", "expand", "isGrid", "onDatumClick", "useTableContext", "rowSelection", "getState", "domAttributes", "useArrowNavigationGroup", "axis", "canBeCurrent", "virtualizer", "useContext", "TableRootContext", "React", "tbody", "map", "row", "isCurrent", "original", "isSelected", "id", "isPinned", "getIsPinned", "classNames", "tbodyTr", "tr", "key", "className", "data-index", "index", "ref", "measureElement", "tabIndex", "onClick", "onKeyUp", "td", "getVisibleCells", "cell", "Cell", "flexRender", "column", "columnDef", "getContext", "displayName", "flexRender", "React", "TABLE_FOOT_NAME", "TableFooter", "props", "tableContext", "useTableContext", "table", "expand", "debug", "footers", "getFooterGroups", "React", "tfoot", "className", "tfootRoot", "map", "footerGroup", "tr", "key", "id", "tfootTr", "th", "headers", "footer", "tfootTh", "column", "columnDef", "meta", "classNames", "isPlaceholder", "flexRender", "getContext", "displayName", "flexRender", "React", "TABLE_HEAD_NAME", "TableHead", "_props", "tableContext", "useTableContext", "headerGroups", "table", "getHeaderGroups", "React", "thead", "className", "theadRoot", "map", "headerGroup", "tr", "key", "id", "theadTr", "debug", "th", "style", "width", "headers", "header", "isResizing", "column", "getIsResizing", "onResize", "getResizeHandler", "resizable", "columnDef", "meta", "getSize", "theadTh", "classNames", "isPlaceholder", "flexRender", "getContext", "div", "theadResizeRoot", "onDoubleClick", "resetSize", "onMouseDown", "onTouchStart", "expand", "displayName", "TableRoot", "children", "contextValue", "useTableRootContext", "React", "TableRootContext", "Provider", "value", "TableViewport", "classNames", "asChild", "props", "scrollContextRef", "useContext", "classes", "mx", "Slot", "ref", "div", "role", "className", "TablePrimitive", "onColumnResize", "columnVisibility", "header", "rowsSelectable", "debug", "onDataSelectionChange", "pinLastRow", "columns", "useDefaultValue", "incomingData", "data", "setData", "useState", "forceUpdate", "useCallback", "useEffect", "JSON", "stringify", "TableProvider", "UntypedTableProvider", "columnSizing", "setColumnSizing", "columnSizingInfo", "setColumnSizingInfo", "useColumnResizing", "rowSelection", "handleRowSelectionChange", "useRowSelection", "grouping", "handleGroupingChange", "columnSorting", "useColumnSorting", "table", "useReactTable", "meta", "defaultColumn", "size", "maxSize", "state", "sorting", "columnResizeMode", "enableColumnResizing", "onColumnSizingChange", "onColumnSizingInfoChange", "getCoreRowModel", "getSortedRowModel", "getExpandedRowModel", "getGroupedRowModel", "length", "undefined", "onGroupingChange", "enableMultiRowSelection", "enableRowSelection", "onRowSelectionChange", "enableSorting", "enableColumnPinning", "debugTable", "Object", "keys", "map", "id", "getRowModel", "rowsById", "original", "usePinLastRow", "expand", "isGrid", "TableImpl", "footer", "fullWidth", "useTableContext", "pre", "code", "getState", "isResizingColumn", "TableComponent", "MemoizedVirtualisedTableContent", "VirtualizedTableContent", "tableRoot", "style", "width", "getTotalSize", "TableHead", "GroupedTableContent", "TableFooter", "virtualizer", "dispatch", "centerRows", "getCenterRows", "pinnedRows", "type", "count", "getBottomRows", "_", "getVirtualItems", "virtualRows", "totalSize", "paddingTop", "start", "paddingBottom", "end", "rowsToRender", "virtualRow", "index", "filter", "r", "Fragment", "tbody", "tr", "td", "height", "TableBody", "rows", "memo", "getHeaderGroups", "row", "i", "key", "thead", "th", "colSpan", "headers", "groupTh", "String", "getGroupingValue", "subRows", "Table", "Root", "Viewport", "Main", "useFocusFinders", "Check", "ClipboardText", "X", "createColumnHelper", "format", "formatDistanceToNow", "React", "useCallback", "useEffect", "useRef", "useState", "log", "Input", "Tooltip", "getSize", "mx", "createColumnBuilder", "helper", "createColumnHelper", "builder", "ColumnBuilder", "ComboboxBuilderCell", "cellContext", "model", "onUpdate", "column", "columnDef", "meta", "React", "CellCombobox", "value", "getValue", "onValueChange", "row", "original", "id", "StringBuilderCell", "ref", "useRef", "findPrevFocusable", "useFocusFinders", "cell", "initialValue", "getInitialValue", "useCallback", "content", "setValue", "useState", "useEffect", "handleSave", "current", "document", "activeElement", "focus", "handleCancel", "placeholder", "columns", "table", "getVisibleFlatColumns", "rowCount", "getRowModel", "rows", "length", "index", "Input", "Root", "TextInput", "variant", "undefined", "classNames", "textPadding", "onBlur", "onChange", "event", "target", "onKeyDown", "key", "parseNumber", "text", "trim", "Number", "NaN", "displayNumber", "digits", "toLocaleString", "minimumFractionDigits", "maximumFractionDigits", "NumberBuilderCell", "setText", "handleEdit", "String", "nextValue", "isNaN", "_handleCancel", "onFocus", "RowSelectorBuilderCell", "checked", "getCanSelect", "getIsSelected", "getCanSelectSubRows", "getIsSomeSelected", "getIsAllSubRowsSelected", "div", "className", "role", "Checkbox", "size", "onCheckedChange", "getToggleSelectedHandler", "disabled", "SwitchBuilderCell", "Switch", "onClick", "stopPropagation", "combobox", "label", "props", "minSize", "header", "cellValue", "mx", "getText", "string", "__typename", "number", "date", "format", "formatSpec", "relative", "str", "formatDistanceToNow", "addSuffix", "toISOString", "err", "log", "info", "tooltip", "element", "truncate", "Tooltip", "Provider", "Trigger", "Portal", "Content", "side", "Arrow", "ClipboardText", "ev", "navigator", "clipboard", "writeText", "toHex", "selectRow", "enableResizing", "rowsSelectable", "useTableContext", "getIsSomeRowsSelected", "getIsAllRowsSelected", "toggleAllRowsSelected", "switch", "enableSorting", "icon", "on", "off", "IconOn", "Icon", "Check", "IconOff", "X", "getSize", "display", "code", "JSON", "stringify", "AST", "classifySchemaProperties", "schema", "recurse", "node", "path", "acc", "properties", "getPropertySignatures", "forEach", "prop", "propName", "name", "toString", "isOptional", "unwrappedAst", "unwrapOptionProperty", "isStruct", "type", "push", "concat", "join", "propertyToColumn", "ast", "isTypeLiteral", "isOptionalUnion", "isUnion", "Error", "String", "_undefinedCase", "types", "typeToColumn", "isStringKeyword", "isNumberKeyword", "isBooleanKeyword", "isRefinement", "from", "isTransform", "identifier", "getIdentifierAnnotation", "_tag", "value", "schemaToColumnDefs", "schema", "helper", "builder", "createColumnBuilder", "classified", "classifySchemaProperties", "map", "name", "type", "propertyKey", "toString", "column", "string", "label", "number", "switch", "date", "display", "id", "Error", "accessor"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-table/src/translations.ts":{"bytes":2343,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytes":11696,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"../../translations"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytes":494,"imports":[{"path":"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx","kind":"import-statement","original":"./CellCombobox"}],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx":{"bytes":25276,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"../../translations"}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/useColumnSizing.ts":{"bytes":5013,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytes":3140,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/useColumnSorting.ts":{"bytes":6741,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"../components/Table/TableContext"}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/usePinLastRow.ts":{"bytes":6297,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/useRowSelection.ts":{"bytes":5030,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/index.ts":{"bytes":811,"imports":[{"path":"packages/ui/react-ui-table/src/hooks/useColumnSizing.ts","kind":"import-statement","original":"./useColumnSizing"},{"path":"packages/ui/react-ui-table/src/hooks/useColumnSorting.ts","kind":"import-statement","original":"./useColumnSorting"},{"path":"packages/ui/react-ui-table/src/hooks/usePinLastRow.ts","kind":"import-statement","original":"./usePinLastRow"},{"path":"packages/ui/react-ui-table/src/hooks/useRowSelection.ts","kind":"import-statement","original":"./useRowSelection"}],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnMenu.tsx":{"bytes":21032,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx","kind":"import-statement","original":"./ColumnSettingsForm"},{"path":"packages/ui/react-ui-table/src/hooks/index.ts","kind":"import-statement","original":"../../hooks"}],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu/index.ts":{"bytes":608,"imports":[{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnMenu.tsx","kind":"import-statement","original":"./ColumnMenu"},{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx","kind":"import-statement","original":"./ColumnSettingsForm"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts":{"bytes":3903,"imports":[{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/theme.ts":{"bytes":10262,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytes":4842,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"../Table/TableContext"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytes":8850,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts","kind":"import-statement","original":"./TableRootContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Cell/Cell.tsx","kind":"import-statement","original":"../Cell/Cell"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytes":4638,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytes":7863,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytes":30604,"imports":[{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableBody.tsx","kind":"import-statement","original":"./TableBody"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx","kind":"import-statement","original":"./TableFooter"},{"path":"packages/ui/react-ui-table/src/components/Table/TableHead.tsx","kind":"import-statement","original":"./TableHead"},{"path":"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts","kind":"import-statement","original":"./TableRootContext"},{"path":"packages/ui/react-ui-table/src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/props.ts":{"bytes":2875,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytes":669,"imports":[{"path":"packages/ui/react-ui-table/src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"},{"path":"packages/ui/react-ui-table/src/components/Table/props.ts","kind":"import-statement","original":"./props"},{"path":"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts","kind":"import-statement","original":"./TableRootContext"}],"format":"esm"},"packages/ui/react-ui-table/src/components/index.ts":{"bytes":644,"imports":[{"path":"packages/ui/react-ui-table/src/components/Cell/index.ts","kind":"import-statement","original":"./Cell"},{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/index.ts","kind":"import-statement","original":"./ColumnMenu"},{"path":"packages/ui/react-ui-table/src/components/Table/index.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"packages/ui/react-ui-table/src/helpers.tsx":{"bytes":54890,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./components/Table/TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"}],"format":"esm"},"packages/ui/react-ui-table/src/schema/schema.ts":{"bytes":9419,"imports":[{"path":"@effect/schema/AST","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/schema/schemaToColumns.ts":{"bytes":5160,"imports":[{"path":"packages/ui/react-ui-table/src/schema/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/ui/react-ui-table/src/helpers.tsx","kind":"import-statement","original":"../helpers"}],"format":"esm"},"packages/ui/react-ui-table/src/schema/types.ts":{"bytes":1117,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/schema/index.ts":{"bytes":573,"imports":[{"path":"packages/ui/react-ui-table/src/schema/schemaToColumns.ts","kind":"import-statement","original":"./schemaToColumns"},{"path":"packages/ui/react-ui-table/src/schema/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/ui/react-ui-table/src/types.ts":{"bytes":1830,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/index.ts":{"bytes":1102,"imports":[{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/helpers.tsx","kind":"import-statement","original":"./helpers"},{"path":"packages/ui/react-ui-table/src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"packages/ui/react-ui-table/src/schema/index.ts","kind":"import-statement","original":"./schema"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"},{"path":"packages/ui/react-ui-table/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-table/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":119278},"packages/ui/react-ui-table/dist/lib/browser/index.mjs":{"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@effect/schema/AST","kind":"import-statement","external":true}],"exports":["CellCombobox","ColumnBuilder","ColumnMenu","ColumnSettingsForm","MemoizedVirtualisedTableContent","SortIndicator","Table","TablePrimitive","TableRootContext","createColumnBuilder","currentRow","flushPadding","gridCellFocusRing","groupTh","headPadding","schemaToColumnDefs","selectedRow","tableRoot","tbodyRoot","tbodyTr","tdContent","tdRoot","textPadding","tfootRoot","tfootTh","tfootTr","theadResizeRoot","theadRoot","theadTh","theadTr","translations","useColumnResizing","useColumnSorting","usePinLastRow","useRowSelection","useSortColumn","useTableRootContext"],"entryPoint":"packages/ui/react-ui-table/src/index.ts","inputs":{"packages/ui/react-ui-table/src/translations.ts":{"bytesInOutput":611},"packages/ui/react-ui-table/src/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytesInOutput":2989},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnMenu.tsx":{"bytesInOutput":6168},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx":{"bytesInOutput":7006},"packages/ui/react-ui-table/src/hooks/useColumnSizing.ts":{"bytesInOutput":1068},"packages/ui/react-ui-table/src/hooks/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/hooks/useColumnSorting.ts":{"bytesInOutput":1472},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytesInOutput":358},"packages/ui/react-ui-table/src/hooks/usePinLastRow.ts":{"bytesInOutput":1381},"packages/ui/react-ui-table/src/hooks/useRowSelection.ts":{"bytesInOutput":1055},"packages/ui/react-ui-table/src/components/ColumnMenu/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytesInOutput":7412},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytesInOutput":1983},"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts":{"bytesInOutput":758},"packages/ui/react-ui-table/src/theme.ts":{"bytesInOutput":2205},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytesInOutput":973},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytesInOutput":1015},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytesInOutput":1739},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/helpers.tsx":{"bytesInOutput":13550},"packages/ui/react-ui-table/src/schema/schema.ts":{"bytesInOutput":1957},"packages/ui/react-ui-table/src/schema/schemaToColumns.ts":{"bytesInOutput":1047},"packages/ui/react-ui-table/src/schema/index.ts":{"bytesInOutput":0}},"bytes":56856}}}
1
+ {"inputs":{"packages/ui/react-ui-table/src/translations.ts":{"bytes":2399,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytes":11816,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"../../translations"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytes":526,"imports":[{"path":"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx","kind":"import-statement","original":"./CellCombobox"}],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx":{"bytes":25524,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"../../translations"}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/useColumnSizing.ts":{"bytes":5085,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytes":3188,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/useColumnSorting.ts":{"bytes":6849,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"../components/Table/TableContext"}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/usePinLastRow.ts":{"bytes":6405,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/useRowSelection.ts":{"bytes":5102,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/hooks/index.ts":{"bytes":847,"imports":[{"path":"packages/ui/react-ui-table/src/hooks/useColumnSizing.ts","kind":"import-statement","original":"./useColumnSizing"},{"path":"packages/ui/react-ui-table/src/hooks/useColumnSorting.ts","kind":"import-statement","original":"./useColumnSorting"},{"path":"packages/ui/react-ui-table/src/hooks/usePinLastRow.ts","kind":"import-statement","original":"./usePinLastRow"},{"path":"packages/ui/react-ui-table/src/hooks/useRowSelection.ts","kind":"import-statement","original":"./useRowSelection"}],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnMenu.tsx":{"bytes":21244,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx","kind":"import-statement","original":"./ColumnSettingsForm"},{"path":"packages/ui/react-ui-table/src/hooks/index.ts","kind":"import-statement","original":"../../hooks"}],"format":"esm"},"packages/ui/react-ui-table/src/components/ColumnMenu/index.ts":{"bytes":640,"imports":[{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnMenu.tsx","kind":"import-statement","original":"./ColumnMenu"},{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx","kind":"import-statement","original":"./ColumnSettingsForm"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts":{"bytes":3971,"imports":[{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/theme.ts":{"bytes":10278,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytes":4914,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"../Table/TableContext"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytes":8958,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts","kind":"import-statement","original":"./TableRootContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"},{"path":"packages/ui/react-ui-table/src/components/Cell/Cell.tsx","kind":"import-statement","original":"../Cell/Cell"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytes":4698,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytes":7951,"imports":[{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytes":31472,"imports":[{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/Table/TableBody.tsx","kind":"import-statement","original":"./TableBody"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./TableContext"},{"path":"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx","kind":"import-statement","original":"./TableFooter"},{"path":"packages/ui/react-ui-table/src/components/Table/TableHead.tsx","kind":"import-statement","original":"./TableHead"},{"path":"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts","kind":"import-statement","original":"./TableRootContext"},{"path":"packages/ui/react-ui-table/src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"../../theme"}],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/props.ts":{"bytes":2907,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytes":701,"imports":[{"path":"packages/ui/react-ui-table/src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"},{"path":"packages/ui/react-ui-table/src/components/Table/props.ts","kind":"import-statement","original":"./props"},{"path":"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts","kind":"import-statement","original":"./TableRootContext"}],"format":"esm"},"packages/ui/react-ui-table/src/components/index.ts":{"bytes":676,"imports":[{"path":"packages/ui/react-ui-table/src/components/Cell/index.ts","kind":"import-statement","original":"./Cell"},{"path":"packages/ui/react-ui-table/src/components/ColumnMenu/index.ts","kind":"import-statement","original":"./ColumnMenu"},{"path":"packages/ui/react-ui-table/src/components/Table/index.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"packages/ui/react-ui-table/src/helpers.tsx":{"bytes":55498,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/components/Table/TableContext.tsx","kind":"import-statement","original":"./components/Table/TableContext"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"}],"format":"esm"},"packages/ui/react-ui-table/src/schema/schema.ts":{"bytes":9615,"imports":[{"path":"@effect/schema/AST","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-table/src/schema/schemaToColumns.ts":{"bytes":5260,"imports":[{"path":"packages/ui/react-ui-table/src/schema/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/ui/react-ui-table/src/helpers.tsx","kind":"import-statement","original":"../helpers"}],"format":"esm"},"packages/ui/react-ui-table/src/schema/types.ts":{"bytes":1149,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/schema/index.ts":{"bytes":605,"imports":[{"path":"packages/ui/react-ui-table/src/schema/schemaToColumns.ts","kind":"import-statement","original":"./schemaToColumns"},{"path":"packages/ui/react-ui-table/src/schema/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/ui/react-ui-table/src/types.ts":{"bytes":1862,"imports":[],"format":"esm"},"packages/ui/react-ui-table/src/index.ts":{"bytes":1142,"imports":[{"path":"packages/ui/react-ui-table/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/ui/react-ui-table/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-table/src/helpers.tsx","kind":"import-statement","original":"./helpers"},{"path":"packages/ui/react-ui-table/src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"packages/ui/react-ui-table/src/schema/index.ts","kind":"import-statement","original":"./schema"},{"path":"packages/ui/react-ui-table/src/theme.ts","kind":"import-statement","original":"./theme"},{"path":"packages/ui/react-ui-table/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-table/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":119522},"packages/ui/react-ui-table/dist/lib/browser/index.mjs":{"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@tanstack/react-table","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/formatDistanceToNow","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@effect/schema/AST","kind":"import-statement","external":true}],"exports":["CellCombobox","ColumnBuilder","ColumnMenu","ColumnSettingsForm","MemoizedVirtualisedTableContent","SortIndicator","Table","TablePrimitive","TableRootContext","createColumnBuilder","currentRow","flushPadding","gridCellFocusRing","groupTh","headPadding","schemaToColumnDefs","selectedRow","tableRoot","tbodyRoot","tbodyTr","tdContent","tdRoot","textPadding","tfootRoot","tfootTh","tfootTr","theadResizeRoot","theadRoot","theadTh","theadTr","translations","useColumnResizing","useColumnSorting","usePinLastRow","useRowSelection","useSortColumn","useTableRootContext"],"entryPoint":"packages/ui/react-ui-table/src/index.ts","inputs":{"packages/ui/react-ui-table/src/translations.ts":{"bytesInOutput":611},"packages/ui/react-ui-table/src/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx":{"bytesInOutput":2989},"packages/ui/react-ui-table/src/components/Cell/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnMenu.tsx":{"bytesInOutput":6168},"packages/ui/react-ui-table/src/components/ColumnMenu/ColumnSettingsForm.tsx":{"bytesInOutput":7006},"packages/ui/react-ui-table/src/hooks/useColumnSizing.ts":{"bytesInOutput":1068},"packages/ui/react-ui-table/src/hooks/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/hooks/useColumnSorting.ts":{"bytesInOutput":1472},"packages/ui/react-ui-table/src/components/Table/TableContext.tsx":{"bytesInOutput":358},"packages/ui/react-ui-table/src/hooks/usePinLastRow.ts":{"bytesInOutput":1381},"packages/ui/react-ui-table/src/hooks/useRowSelection.ts":{"bytesInOutput":1055},"packages/ui/react-ui-table/src/components/ColumnMenu/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/components/Table/Table.tsx":{"bytesInOutput":7412},"packages/ui/react-ui-table/src/components/Table/TableBody.tsx":{"bytesInOutput":1983},"packages/ui/react-ui-table/src/components/Table/TableRootContext.ts":{"bytesInOutput":758},"packages/ui/react-ui-table/src/theme.ts":{"bytesInOutput":2185},"packages/ui/react-ui-table/src/components/Cell/Cell.tsx":{"bytesInOutput":973},"packages/ui/react-ui-table/src/components/Table/TableFooter.tsx":{"bytesInOutput":1015},"packages/ui/react-ui-table/src/components/Table/TableHead.tsx":{"bytesInOutput":1739},"packages/ui/react-ui-table/src/components/Table/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-table/src/helpers.tsx":{"bytesInOutput":13550},"packages/ui/react-ui-table/src/schema/schema.ts":{"bytesInOutput":1957},"packages/ui/react-ui-table/src/schema/schemaToColumns.ts":{"bytesInOutput":1047},"packages/ui/react-ui-table/src/schema/index.ts":{"bytesInOutput":0}},"bytes":56836}}}
@@ -1 +1 @@
1
- {"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../../../src/components/Cell/Cell.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAKtD,KAAK,SAAS,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM,IAAI,iBAAiB,CAAC;IAChE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC,CAAC;AAsBH,QAAA,MAAM,IAAI;;;CAIT,CAAC;AAIF,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,YAAY,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../../../src/components/Cell/Cell.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAKtD,KAAK,SAAS,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM,IAAI,iBAAiB,CAAC;IAChE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC,CAAC;AAsBH,QAAA,MAAM,IAAI;wDAAuD,UAAU,KAAK,EAAE,MAAM,CAAC;;CAIxF,CAAC;AAIF,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { type RowData } from '@tanstack/react-table';
2
3
  import { type SearchListQueryModel } from '../../helpers';
3
4
  export type ComboboxCellItems<TData extends RowData> = Record<string, {
@@ -1 +1 @@
1
- {"version":3,"file":"CellCombobox.d.ts","sourceRoot":"","sources":["../../../../../src/components/Cell/CellCombobox.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAOrD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG1D,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAStG,eAAO,MAAM,YAAY;;;qCAOU,IAAI;iBAuEtC,CAAC"}
1
+ {"version":3,"file":"CellCombobox.d.ts","sourceRoot":"","sources":["../../../../../src/components/Cell/CellCombobox.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAOrD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG1D,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAStG,eAAO,MAAM,YAAY,4DAItB;IACD,KAAK,EAAE,qBAAqB,KAAK,CAAC,CAAC;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACvC,gBAsEA,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { type SortDirection, type HeaderContext, type RowData } from '@tanstack/react-table';
2
3
  import { type TableDef, type ColumnProps } from '../../schema';
3
4
  export type ColumnMenuProps<TData extends RowData, TValue> = {
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/ColumnMenu/ColumnMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAQ7F,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM,IAAI;IAC3D,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5C,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,UAAU,wJA4HtB,CAAC;AAEF,eAAO,MAAM,aAAa;eAIb,aAAa,GAAG,SAAS;iBACvB,GAAG,KAAK,IAAI;wBAsB1B,CAAC"}
1
+ {"version":3,"file":"ColumnMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/ColumnMenu/ColumnMenu.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAQ7F,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM,IAAI;IAC3D,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5C,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,UAAU,0GAMpB,gBAAgB,KAAK,EAAE,MAAM,CAAC,gBAsHhC,CAAC;AAEF,eAAO,MAAM,aAAa,4BAGvB;IACD,SAAS,EAAE,aAAa,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3B,uBAqBA,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import '@dxosTheme';
2
3
  import { type ColumnProps } from '../../schema';
3
4
  declare const _default: {
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnMenu.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/ColumnMenu/ColumnMenu.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AASpB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;;;;;;AAEhD,wBAIE;AA2BF,eAAO,MAAM,OAAO;;;;;;2CAca,OAAO;;;;;;;;;;;;yBAY5B,GAAG;;;;CASd,CAAC;AAEF,eAAO,MAAM,YAAY;;CA2CxB,CAAC"}
1
+ {"version":3,"file":"ColumnMenu.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/ColumnMenu/ColumnMenu.stories.tsx"],"names":[],"mappings":";AAIA,OAAO,YAAY,CAAC;AASpB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;;;;;;AAEhD,wBAIE;AA2BF,eAAO,MAAM,OAAO;;;;;;2CAca,OAAO;;;;;;;;;;;;yBAY5B,GAAG;;;;CASd,CAAC;AAEF,eAAO,MAAM,YAAY;;CA2CxB,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { type TableDef, type ColumnProps } from '../../schema';
2
3
  export type ColumnSettingsFormProps = {
3
4
  column: ColumnProps;
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/ColumnMenu/ColumnSettingsForm.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAmB,MAAM,cAAc,CAAC;AAShF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,kBAAkB,0EAO5B,uBAAuB,gBAuLzB,CAAC"}
1
+ {"version":3,"file":"ColumnSettingsForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/ColumnMenu/ColumnSettingsForm.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAmB,MAAM,cAAc,CAAC;AAShF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,kBAAkB,0EAO5B,uBAAuB,gBAuLzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY3D,OAAO,KAAK,EAAE,EAAE,KAAK,wBAAwB,EAA0D,MAAM,OAAO,CAAC;AAErH,OAAO,EAAE,KAAK,eAAe,EAAmB,MAAM,gBAAgB,CAAC;AAQvE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,KAAK,cAAc,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC;AAOpD,KAAK,kBAAkB,GAAG,eAAe,CAAC,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAkBF,eAAO,MAAM,cAAc,kEAwG1B,CAAC;AAyFF,eAAO,MAAM,+BAA+B,8CAAsC,CAAC;AAkCnF,eAAO,MAAM,KAAK;yBA5Pe,cAAc;4DASqB,kBAAkB;;CAuPrF,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY3D,OAAO,KAAK,EAAE,EAAE,KAAK,wBAAwB,EAA0D,MAAM,OAAO,CAAC;AAErH,OAAO,EAAE,KAAK,eAAe,EAAmB,MAAM,gBAAgB,CAAC;AAQvE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,KAAK,cAAc,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC;AAOpD,KAAK,kBAAkB,GAAG,eAAe,CAAC,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAkBF,eAAO,MAAM,cAAc,iCAAkC,WAAW,KAAK,CAAC,gBAwG7E,CAAC;AAyFF,eAAO,MAAM,+BAA+B,8CAAsC,CAAC;AAqCnF,eAAO,MAAM,KAAK;yBA/Pe,cAAc;4DASqB,kBAAkB;yCAgBzB,WAAW,KAAK,CAAC;CA0O7E,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import '@dxosTheme';
2
3
  import { PublicKey } from '@dxos/keys';
3
4
  import { type TableColumnDef } from '../../types';
@@ -1 +1 @@
1
- {"version":3,"file":"Table.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAOpB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;4BAsGsB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAL5B,wBAuCE;AAEF,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;CAMtB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;CAIjB,CAAC;AAEF,eAAO,MAAM,OAAO;;CAoCnB,CAAC;AAEF,eAAO,MAAM,QAAQ;;CA6BpB,CAAC;AAEF,eAAO,MAAM,aAAa;;CA6BzB,CAAC;AAEF,eAAO,MAAM,YAAY;;CAqDxB,CAAC;AAEF,eAAO,MAAM,SAAS;;CAwBrB,CAAC;AAEF,eAAO,MAAM,eAAe;;CA4B3B,CAAC;AAKF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;mIAuBvB,GAAG;CA2EP,CAAC"}
1
+ {"version":3,"file":"Table.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.stories.tsx"],"names":[],"mappings":";AAIA,OAAO,YAAY,CAAC;AAOpB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;4BAsGsB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAL5B,wBAuCE;AAEF,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;CAMtB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;CAIjB,CAAC;AAEF,eAAO,MAAM,OAAO;;CAoCnB,CAAC;AAEF,eAAO,MAAM,QAAQ;;CA6BpB,CAAC;AAEF,eAAO,MAAM,aAAa;;CA6BzB,CAAC;AAEF,eAAO,MAAM,YAAY;;CAqDxB,CAAC;AAEF,eAAO,MAAM,SAAS;;CAwBrB,CAAC;AAEF,eAAO,MAAM,eAAe;;CA4B3B,CAAC;AAKF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;mIAuBvB,GAAG;CA2EP,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { type Row, type RowData } from '@tanstack/react-table';
2
3
  type TableBodyProps = {
3
4
  rows: Row<RowData>[];
@@ -1 +1 @@
1
- {"version":3,"file":"TableBody.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableBody.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAc,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAU3E,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,SAAS;eAAc,cAAc;;CAuD1C,CAAC;AAIF,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"TableBody.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableBody.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAc,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAU3E,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,SAAS;eAAc,cAAc;;CAuD1C,CAAC;AAIF,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableContext.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableContext.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,UAAU,UAAU,CAAC;AAMlC,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,OAAO,IAAI;IACtD,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAKxF,CAAC;AAGF,eAAO,MAAM,eAAe,uDAI3B,CAAC"}
1
+ {"version":3,"file":"TableContext.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableContext.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,UAAU,UAAU,CAAC;AAMlC,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,OAAO,IAAI;IACtD,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAKxF,CAAC;AAGF,eAAO,MAAM,eAAe,+BAA8B,kBAAkB,KAAK,CAIhF,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  type TableFooterProps = {};
2
3
  declare const TableFooter: {
3
4
  (props: TableFooterProps): JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"TableFooter.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableFooter.tsx"],"names":[],"mappings":"AAUA,KAAK,gBAAgB,GAAG,EAAE,CAAC;AAI3B,QAAA,MAAM,WAAW;YAAW,gBAAgB;;CAwB3C,CAAC;AAIF,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"TableFooter.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableFooter.tsx"],"names":[],"mappings":";AAUA,KAAK,gBAAgB,GAAG,EAAE,CAAC;AAI3B,QAAA,MAAM,WAAW;YAAW,gBAAgB;;CAwB3C,CAAC;AAIF,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  type TableHeadProps = {};
2
3
  declare const TableHead: {
3
4
  (_props: TableHeadProps): JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"TableHead.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableHead.tsx"],"names":[],"mappings":"AAYA,KAAK,cAAc,GAAG,EAAE,CAAC;AAEzB,QAAA,MAAM,SAAS;aAAY,cAAc;;CAyDxC,CAAC;AAIF,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"TableHead.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableHead.tsx"],"names":[],"mappings":";AAYA,KAAK,cAAc,GAAG,EAAE,CAAC;AAEzB,QAAA,MAAM,SAAS;aAAY,cAAc;;CAyDxC,CAAC;AAIF,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  type TableRootContextActions = {
2
3
  type: 'updateTableCount';
3
4
  count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TableRootContext.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableRootContext.ts"],"names":[],"mappings":"AAOA,KAAK,uBAAuB,GAAG;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,eAAO,MAAM,mBAAmB;;;uBAWJ,uBAAuB;CAYlD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAI3E,eAAO,MAAM,gBAAgB;;;uBAlBD,uBAAuB;EAkB8C,CAAC"}
1
+ {"version":3,"file":"TableRootContext.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/TableRootContext.ts"],"names":[],"mappings":";AAOA,KAAK,uBAAuB,GAAG;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,eAAO,MAAM,mBAAmB;;;uBAWJ,uBAAuB;CAYlD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAI3E,eAAO,MAAM,gBAAgB;;;uBAlBD,uBAAuB;EAkB8C,CAAC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { type ColumnSizingInfoState, type ColumnSizingState } from '@tanstack/react-table';
2
3
  import { type TableColumnDef } from '../components/Table';
3
4
  export declare const useColumnResizing: ({ columns, onColumnResize, }: {
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnSizing.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useColumnSizing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK3F,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAO,MAAM,iBAAiB;aAInB,eAAe,GAAG,CAAC,EAAE;6BACL,OAAO,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI;;;;;;CA6BzD,CAAC"}
1
+ {"version":3,"file":"useColumnSizing.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useColumnSizing.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK3F,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAO,MAAM,iBAAiB,iCAG3B;IACD,OAAO,EAAE,eAAe,GAAG,CAAC,EAAE,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACvE;;;;;CA4BA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/schema/schema.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,SAAS,CAAC;AAG1D,eAAO,MAAM,wBAAwB,WAAY,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,KAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAwBnG,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/schema/schema.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,SAAS,CAAC;AAG1D,eAAO,MAAM,wBAAwB,WAAY,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,KAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAwBnG,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { type ColumnDef } from '@tanstack/react-table';
2
2
  import type { S } from '@dxos/echo-schema';
3
- export declare const schemaToColumnDefs: <T>(schema: S.Schema<T, any, never>) => ColumnDef<T, any>[];
3
+ export declare const schemaToColumnDefs: <T>(schema: S.Schema<T, any>) => ColumnDef<T, any>[];
4
4
  //# sourceMappingURL=schemaToColumns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaToColumns.d.ts","sourceRoot":"","sources":["../../../../src/schema/schemaToColumns.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAK3C,eAAO,MAAM,kBAAkB,6DAoC9B,CAAC"}
1
+ {"version":3,"file":"schemaToColumns.d.ts","sourceRoot":"","sources":["../../../../src/schema/schemaToColumns.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAK3C,eAAO,MAAM,kBAAkB,cAAe,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,KAAG,UAAU,CAAC,EAAE,GAAG,CAAC,EAoCjF,CAAC"}
@@ -6,7 +6,7 @@ export declare const selectedRow = "!bg-primary-100 dark:!bg-primary-700";
6
6
  export declare const flushPadding = "pli-0 plb-0";
7
7
  export declare const textPadding = "pli-2 plb-0.5";
8
8
  export declare const headPadding = "pli-2 plb-1";
9
- export declare const gridCellFocusRing = "focus-within:z-[11] focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400";
9
+ export declare const gridCellFocusRing = "focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400";
10
10
  export type TableStyleProps = Partial<TableContextValue<any>>;
11
11
  export declare const tableRoot: ComponentFunction<TableStyleProps>;
12
12
  export declare const groupTh: ComponentFunction<TableStyleProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAChE,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,eAAO,MAAM,iBAAiB,oGACqE,CAAC;AAMpG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACN,CAAC;AAEpD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAMrD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAMtD,CAAC;AAEJ,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAA2C,CAAC;AAEnG,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAQpD,CAAC;AAEJ,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,CAUtE,CAAC;AAMF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE5F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACxF,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAQtD,CAAC;AAMJ,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,eAAe,CACwD,CAAC;AAE/G,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAkC,CAAC;AAMlG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACJ,CAAC;AAEtD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE1F,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACO,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAChE,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,eAAO,MAAM,iBAAiB,gFAAgF,CAAC;AAM/G,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACN,CAAC;AAEpD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAMrD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAMtD,CAAC;AAEJ,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAA2C,CAAC;AAEnG,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAQpD,CAAC;AAEJ,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,CAUtE,CAAC;AAMF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE5F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACxF,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAQtD,CAAC;AAMJ,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,eAAe,CACwD,CAAC;AAE/G,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAkC,CAAC;AAMlG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACJ,CAAC;AAEtD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE1F,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-table",
3
- "version": "0.5.3-main.f752aaa",
3
+ "version": "0.5.3-main.fffc127",
4
4
  "description": "A table component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -16,7 +16,7 @@
16
16
  "src"
17
17
  ],
18
18
  "dependencies": {
19
- "@effect/schema": "0.64.7",
19
+ "@effect/schema": "^0.64.20",
20
20
  "@fluentui/react-tabster": "^9.19.0",
21
21
  "@radix-ui/react-context": "^1.0.0",
22
22
  "@radix-ui/react-primitive": "^1.0.2",
@@ -25,16 +25,16 @@
25
25
  "@tanstack/react-table": "^8.13.2",
26
26
  "@tanstack/react-virtual": "^3.0.1",
27
27
  "date-fns": "^3.3.1",
28
- "effect": "2.4.9",
29
- "@dxos/async": "0.5.3-main.f752aaa",
30
- "@dxos/keys": "0.5.3-main.f752aaa",
31
- "@dxos/log": "0.5.3-main.f752aaa",
32
- "@dxos/react-ui-searchlist": "0.5.3-main.f752aaa",
33
- "@dxos/invariant": "0.5.3-main.f752aaa",
34
- "@dxos/react-ui": "0.5.3-main.f752aaa",
35
- "@dxos/react-ui-theme": "0.5.3-main.f752aaa",
36
- "@dxos/react-ui-types": "0.5.3-main.f752aaa",
37
- "@dxos/util": "0.5.3-main.f752aaa"
28
+ "effect": "^2.4.19",
29
+ "@dxos/async": "0.5.3-main.fffc127",
30
+ "@dxos/keys": "0.5.3-main.fffc127",
31
+ "@dxos/invariant": "0.5.3-main.fffc127",
32
+ "@dxos/log": "0.5.3-main.fffc127",
33
+ "@dxos/react-ui": "0.5.3-main.fffc127",
34
+ "@dxos/react-ui-searchlist": "0.5.3-main.fffc127",
35
+ "@dxos/react-ui-theme": "0.5.3-main.fffc127",
36
+ "@dxos/react-ui-types": "0.5.3-main.fffc127",
37
+ "@dxos/util": "0.5.3-main.fffc127"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@phosphor-icons/react": "^2.1.5",
@@ -45,11 +45,11 @@
45
45
  "react-dom": "^18.2.0",
46
46
  "vite": "^5.2.9",
47
47
  "vite-plugin-turbosnap": "^1.0.2",
48
- "@dxos/echo-schema": "0.5.3-main.f752aaa",
49
- "@dxos/random": "0.5.3-main.f752aaa",
50
- "@dxos/echo-signals": "0.5.3-main.f752aaa",
51
- "@dxos/react-ui-theme": "0.5.3-main.f752aaa",
52
- "@dxos/storybook-utils": "0.5.3-main.f752aaa"
48
+ "@dxos/echo-schema": "0.5.3-main.fffc127",
49
+ "@dxos/echo-signals": "0.5.3-main.fffc127",
50
+ "@dxos/random": "0.5.3-main.fffc127",
51
+ "@dxos/react-ui-theme": "0.5.3-main.fffc127",
52
+ "@dxos/storybook-utils": "0.5.3-main.fffc127"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "@phosphor-icons/react": "^2.0.5",
@@ -1,17 +1,18 @@
1
1
  //
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
+
4
5
  import { type Primitive } from '@radix-ui/react-primitive';
5
6
  import { Slot } from '@radix-ui/react-slot';
6
7
  import {
7
- getCoreRowModel,
8
- getSortedRowModel,
9
- useReactTable,
10
8
  type GroupingState,
9
+ type Row,
11
10
  type RowData,
12
- getGroupedRowModel,
11
+ getCoreRowModel,
13
12
  getExpandedRowModel,
14
- type Row,
13
+ getGroupedRowModel,
14
+ getSortedRowModel,
15
+ useReactTable,
15
16
  } from '@tanstack/react-table';
16
17
  import React, { type ComponentPropsWithoutRef, Fragment, useCallback, useEffect, useState, useContext } from 'react';
17
18
 
@@ -281,6 +282,9 @@ const GroupedTableContent = () => {
281
282
  );
282
283
  };
283
284
 
285
+ // TODO(burdon): Floating "add row" jumps by 1 pixel on scroll.
286
+ // TODO(burdon): Blue focus highlight is clipped by 1px on the left.
287
+ // TODO(burdon): Focused row and focus ring passes over the sticky header.
284
288
  export const Table = {
285
289
  Root: TableRoot,
286
290
  Viewport: TableViewport,
@@ -7,6 +7,7 @@ import type * as S from '@effect/schema/Schema';
7
7
 
8
8
  import { type ColumnType } from './types';
9
9
 
10
+ // TODO(burdon): Reconcile with react-ui-table.
10
11
  export type ClassifiedColumnType = ColumnType | 'display';
11
12
 
12
13
  // TODO(burdon): Rename getX? and return typed array?
package/src/theme.ts CHANGED
@@ -15,8 +15,7 @@ export const flushPadding = 'pli-0 plb-0';
15
15
  export const textPadding = 'pli-2 plb-0.5';
16
16
  export const headPadding = 'pli-2 plb-1';
17
17
 
18
- export const gridCellFocusRing =
19
- 'focus-within:z-[11] focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400';
18
+ export const gridCellFocusRing = 'focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400';
20
19
 
21
20
  //
22
21
  // table