@dxos/react-ui-table 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/chunk-types.mjs +65 -0
- package/dist/lib/chunk-types.mjs.map +1 -0
- package/dist/lib/chunk-useTableModel.mjs +1595 -0
- package/dist/lib/chunk-useTableModel.mjs.map +1 -0
- package/dist/lib/index.mjs +1133 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/testing.mjs +88 -0
- package/dist/lib/testing.mjs.map +1 -0
- package/dist/lib/translations.mjs +30 -0
- package/dist/lib/translations.mjs.map +1 -0
- package/dist/lib/types.mjs +2 -0
- package/dist/types/src/components/Table/DynamicTable.d.ts +4 -1
- package/dist/types/src/components/Table/DynamicTable.d.ts.map +1 -1
- package/dist/types/src/components/Table/DynamicTable.stories.d.ts +3 -1
- package/dist/types/src/components/Table/DynamicTable.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/Relations.stories.d.ts +1 -0
- package/dist/types/src/components/Table/Relations.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/Table.d.ts +3 -9
- package/dist/types/src/components/Table/Table.d.ts.map +1 -1
- package/dist/types/src/components/Table/Table.stories.d.ts +2 -0
- package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/TableContent.d.ts +1 -1
- package/dist/types/src/components/Table/TableContent.d.ts.map +1 -1
- package/dist/types/src/components/Table/TableContext.d.ts +10 -0
- package/dist/types/src/components/Table/TableContext.d.ts.map +1 -0
- package/dist/types/src/components/Table/TableToolbar.d.ts +1 -1
- package/dist/types/src/components/Table/TableToolbar.d.ts.map +1 -1
- package/dist/types/src/components/Table/index.d.ts +1 -0
- package/dist/types/src/components/Table/index.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +1 -1
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/hooks/useProjectionModel.d.ts +1 -1
- package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -1
- package/dist/types/src/hooks/useTableModel.d.ts +8 -1
- package/dist/types/src/hooks/useTableModel.d.ts.map +1 -1
- package/dist/types/src/model/modal-controller.d.ts +1 -1
- package/dist/types/src/model/modal-controller.d.ts.map +1 -1
- package/dist/types/src/model/selection-model.d.ts +1 -1
- package/dist/types/src/model/selection-model.d.ts.map +1 -1
- package/dist/types/src/model/table-model.d.ts +42 -7
- package/dist/types/src/model/table-model.d.ts.map +1 -1
- package/dist/types/src/model/table-presentation.d.ts +20 -5
- package/dist/types/src/model/table-presentation.d.ts.map +1 -1
- package/dist/types/src/model/table-view-state.d.ts +5 -1
- package/dist/types/src/model/table-view-state.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/util/dynamic-table.d.ts +1 -1
- package/dist/types/src/util/dynamic-table.d.ts.map +1 -1
- package/dist/types/src/util/table-controls.d.ts +5 -3
- package/dist/types/src/util/table-controls.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +48 -50
- package/src/components/Table/DynamicTable.stories.tsx +59 -1
- package/src/components/Table/DynamicTable.tsx +16 -8
- package/src/components/Table/Relations.stories.tsx +2 -2
- package/src/components/Table/Table.stories.tsx +76 -2
- package/src/components/Table/Table.tsx +3 -15
- package/src/components/Table/TableContent.tsx +6 -5
- package/src/components/Table/TableContext.ts +21 -0
- package/src/components/Table/index.ts +2 -0
- package/src/components/TableCellEditor/TableCellEditor.stories.tsx +2 -3
- package/src/components/TableCellEditor/TableCellEditor.tsx +27 -22
- package/src/components/testing.ts +1 -1
- package/src/hooks/useProjectionModel.ts +1 -1
- package/src/hooks/useTableModel.ts +18 -6
- package/src/model/modal-controller.ts +1 -1
- package/src/model/selection-model.ts +1 -1
- package/src/model/table-model.test.ts +3 -3
- package/src/model/table-model.ts +148 -31
- package/src/model/table-presentation.test.ts +59 -1
- package/src/model/table-presentation.ts +171 -81
- package/src/model/table-view-state.ts +2 -2
- package/src/testing/useTestTableModel.ts +1 -1
- package/src/types/index.ts +4 -0
- package/src/util/dynamic-table.test.ts +1 -1
- package/src/util/dynamic-table.ts +1 -1
- package/src/util/table-buttons.ts +1 -1
- package/src/util/table-controls.ts +18 -10
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +0 -10
- package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +0 -7
- package/dist/lib/browser/chunk-K4J2CKTZ.mjs +0 -1751
- package/dist/lib/browser/chunk-K4J2CKTZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-VV3P3ADH.mjs +0 -67
- package/dist/lib/browser/chunk-VV3P3ADH.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -1416
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/testing/index.mjs +0 -115
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/browser/translations.mjs +0 -39
- package/dist/lib/browser/translations.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -8
- package/dist/lib/browser/types/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-E6V274ZW.mjs +0 -1753
- package/dist/lib/node-esm/chunk-E6V274ZW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RPEWNOZZ.mjs +0 -68
- package/dist/lib/node-esm/chunk-RPEWNOZZ.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -1417
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs +0 -116
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/translations.mjs +0 -40
- package/dist/lib/node-esm/translations.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -9
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/Table/Table.tsx", "../../../src/components/Table/TableContent.tsx", "../../../src/util/dynamic-table.ts", "../../../src/util/signals.ts", "../../../src/util/schema.ts", "../../../src/model/modal-controller.ts", "../../../src/components/TableCellEditor/TableCellEditor.tsx", "../../../src/components/TableCellEditor/CellValidationMessage.tsx", "../../../src/components/TableCellEditor/FormCellEditor.tsx", "../../../src/components/Table/ColumnActionsMenu.tsx", "../../../src/components/Table/ColumnSettings.tsx", "../../../src/components/Table/RowActionsMenu.tsx", "../../../src/components/Table/TableToolbar.tsx", "../../../src/components/Table/DynamicTable.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, type RefObject, forwardRef, useImperativeHandle, useRef } from 'react';\n\nimport { type DxGridAxisMeta, type DxGridPosition } from '@dxos/react-ui-grid';\n\nimport { type InsertRowResult } from '../../model';\nimport { TableContent } from './TableContent';\nimport { TableToolbar } from './TableToolbar';\n\nconst columnDefault = { grid: { minSize: 80, maxSize: 640 } };\nconst rowDefault = { frozenRowsStart: { readonly: true, focusUnfurl: false } };\nconst emptyColumnMeta = Atom.make<DxGridAxisMeta>({ grid: {} });\n\n//\n// Context\n//\n\ntype TableContextValue = {\n /** Mutable ref populated by Content so Root can expose the controller. */\n controllerRef: RefObject<TableController>;\n};\n\nconst [TableContextProvider, useTableContext] = createContext<TableContextValue>('Table');\n\n//\n// Controller\n//\n\ntype TableController = {\n update?: (cell?: DxGridPosition) => void;\n handleInsertRowResult?: (insertRowResult?: InsertRowResult) => void;\n};\n\n//\n// Root\n//\n\nconst TABLE_ROOT_NAME = 'Table.Root';\n\ntype TableRootProps = PropsWithChildren;\n\nconst TableRoot = forwardRef<TableController, TableRootProps>(({ children }, forwardedRef) => {\n const controllerRef = useRef<TableController>({});\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n update: (cell) => controllerRef.current?.update?.(cell),\n handleInsertRowResult: (result) => controllerRef.current?.handleInsertRowResult?.(result),\n }),\n [],\n );\n\n return <TableContextProvider controllerRef={controllerRef}>{children}</TableContextProvider>;\n});\n\nTableRoot.displayName = TABLE_ROOT_NAME;\n\n//\n// Table\n//\n\nexport const Table = {\n Root: TableRoot,\n Toolbar: TableToolbar,\n Content: TableContent,\n};\n\nexport type { TableController, TableRootProps };\nexport type { TableExportFormat } from './TableToolbar';\n\nexport { useTableContext };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom, RegistryContext, useAtomValue } from '@effect-atom/atom-react';\nimport * as String from 'effect/String';\nimport React, { type MouseEvent, type WheelEvent, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { type Type } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport {\n type DxGridAxisMeta,\n type DxGridElement,\n type DxGridPlane,\n type DxGridPlaneRange,\n Grid,\n type GridContentProps,\n closestCell,\n gridSeparatorBlockEnd,\n gridSeparatorInlineEnd,\n} from '@dxos/react-ui-grid';\nimport { DxEditRequest } from '@dxos/react-ui-grid';\nimport { mx } from '@dxos/ui-theme';\n\nimport { type InsertRowResult, ModalController, type TableModel, type TablePresentation } from '../../model';\nimport { tableButtons, tableControls } from '../../util';\nimport { type OnCreateHandler, type TableCellEditorProps, TableValueEditor } from '../TableCellEditor';\nimport { ColumnActionsMenu } from './ColumnActionsMenu';\nimport { ColumnSettings } from './ColumnSettings';\nimport { RowActionsMenu } from './RowActionsMenu';\nimport { TableController, useTableContext } from './Table';\n\nconst columnDefault = { grid: { minSize: 80, maxSize: 640 } };\nconst rowDefault = { frozenRowsStart: { readonly: true, focusUnfurl: false } };\nconst emptyColumnMeta = Atom.make<DxGridAxisMeta>({ grid: {} });\nconst emptyRowsAtom = Atom.make<unknown[]>([]);\nconst emptyCellUpdateAtom = Atom.make<number>(0);\n\n//\n// Content\n//\n\nconst TABLE_CONTENT_NAME = 'Table.Content';\n\nexport type TableContentProps = {\n schema?: Type.AnyEntity;\n model?: TableModel;\n presentation?: TablePresentation;\n // TODO(burdon): Factor out attention.\n ignoreAttention?: boolean;\n attendableId?: string;\n onCreate?: OnCreateHandler;\n onRowClick?: (row: any) => void;\n testId?: string;\n};\n\nexport const TableContent = composable<HTMLDivElement, TableContentProps>(\n (\n { schema, model, presentation, ignoreAttention, attendableId, onCreate, onRowClick, testId, ...props },\n forwardedRef,\n ) => {\n const registry = useContext(RegistryContext);\n const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);\n const { hasAttention } = useAttention(attendableId ?? model?.id ?? 'table');\n const modals = useMemo(() => new ModalController(registry), [registry]);\n const columnMeta = useAtomValue(model?.columnMeta ?? emptyColumnMeta);\n // Subscribe to rows atom to trigger re-render when rows change.\n const rows = useAtomValue(model?.rows ?? emptyRowsAtom);\n // Subscribe to cell update counter to trigger re-render when individual cells change.\n const cellUpdateCounter = useAtomValue(model?.cellUpdate ?? emptyCellUpdateAtom);\n // Derive column count from columnMeta (reactive) with fallback.\n const columnCount = Object.keys(columnMeta.grid).length || model?.projection.getFields().length || 0;\n\n const draftRowCount = model?.getDraftRowCount() ?? 0;\n\n const frozen = useMemo(() => {\n const noActionColumn =\n model?.features.dataEditable === false &&\n model?.features.schemaEditable === false &&\n model.rowActions.length === 0;\n\n return {\n frozenRowsStart: 1,\n frozenRowsEnd: Math.max(1, draftRowCount),\n frozenColsStart: model?.features.selection.enabled ? 1 : 0,\n frozenColsEnd: noActionColumn ? 0 : 1,\n };\n }, [model, draftRowCount]);\n\n const getCells = useCallback<NonNullable<GridContentProps['getCells']>>(\n (range: DxGridPlaneRange, plane: DxGridPlane) => presentation?.getCells(range, plane) ?? {},\n [presentation],\n );\n\n useEffect(() => {\n if (!dxGrid || !presentation) {\n return;\n }\n\n dxGrid.getCells = getCells;\n }, [dxGrid, presentation, getCells]);\n\n // Trigger grid update when rows or cell values change.\n useEffect(() => {\n if (!dxGrid) {\n return;\n }\n\n dxGrid.updateCells(true);\n dxGrid.requestUpdate();\n }, [dxGrid, rows, cellUpdateCounter]);\n\n const handleInsertRowResult = useCallback(\n (insertResult?: InsertRowResult) => {\n if (insertResult === 'draft') {\n requestAnimationFrame(() => {\n dxGrid?.setFocus({ plane: 'frozenRowsEnd', col: 0, row: 0 });\n dxGrid?.refocus();\n });\n } else {\n requestAnimationFrame(() => {\n dxGrid?.setFocus({ plane: 'grid', col: 0, row: model ? model.getRowCount() - 1 : 0 });\n dxGrid?.refocus();\n });\n }\n },\n [model, dxGrid],\n );\n\n const handleSave = useCallback(() => {\n dxGrid?.updateCells(true);\n dxGrid?.requestUpdate();\n }, [dxGrid]);\n\n const handleSaveDraftRow = useCallback(\n (rowIndex = 0) => {\n if (model && dxGrid) {\n const didCommitSuccessfully = model.commitDraftRow(rowIndex);\n if (didCommitSuccessfully) {\n requestAnimationFrame(() => {\n dxGrid.scrollToEndRow();\n });\n }\n }\n },\n [model, dxGrid],\n );\n\n const handleGridClick = useCallback(\n (event: MouseEvent) => {\n const cell = closestCell(event.target as HTMLElement);\n if (cell) {\n const { row: rowIndex, plane } = cell;\n if (onRowClick) {\n if (plane === 'grid') {\n const row = model?.getRowAt(rowIndex);\n row && onRowClick(row);\n } else {\n onRowClick(cell);\n }\n }\n\n if (model?.features.selection.enabled && model?.selection.selectionMode === 'single') {\n model.selection.toggleSelectionForRowIndex(rowIndex);\n }\n }\n\n if (!modals) {\n return;\n }\n\n const buttonSelector = Object.values(tableButtons)\n .map((button) => `button[${button.attr}]`)\n .join(',');\n\n const tableButtonElement = (event.target as HTMLElement).closest(buttonSelector) as HTMLElement;\n if (tableButtonElement) {\n const button = Object.values(tableButtons).find((btn) => tableButtonElement.hasAttribute(btn.attr));\n if (!button) {\n return;\n }\n\n modals.setTrigger(tableButtonElement);\n const data = button.getData(tableButtonElement);\n switch (data.type) {\n case 'rowMenu': {\n modals.showRowMenu(data.rowIndex);\n break;\n }\n case 'columnSettings': {\n modals.showColumnMenu(data.fieldId);\n break;\n }\n case 'newColumn': {\n modals.showColumnCreator();\n break;\n }\n case 'sort': {\n model?.toggleSort(data.fieldId);\n break;\n }\n case 'saveDraftRow': {\n handleSaveDraftRow();\n break;\n }\n }\n return;\n }\n\n const controlSelector = Object.values(tableControls)\n .map((control) => `input[${control.attr}]`)\n .join(',');\n\n const controlElement = (event.target as HTMLElement).closest(controlSelector) as HTMLElement;\n if (controlElement) {\n const control = Object.values(tableControls).find((ctrl) => controlElement.hasAttribute(ctrl.attr));\n if (!control) {\n return;\n }\n\n const data = control.getData(controlElement);\n switch (data.type) {\n case 'checkbox': {\n if (data.header) {\n model?.selection.setSelection(model.selection.allRowsSelected ? 'none' : 'all');\n } else {\n model?.selection.toggleSelectionForRowIndex(data.rowIndex);\n }\n break;\n }\n case 'switch': {\n if (model) {\n model.updateCellData({ row: data.rowIndex, col: data.colIndex }, (value) => !value);\n }\n break;\n }\n }\n }\n },\n [model, modals, dxGrid],\n );\n\n const handleFocus = useCallback<NonNullable<TableCellEditorProps['onFocus']>>(\n (increment, delta, cell) => {\n if (dxGrid && model) {\n if (cell?.plane === 'grid' && cell?.row >= model.getRowCount() - 1 && increment !== 'col') {\n handleInsertRowResult(draftRowCount < 1 ? model.insertRow() : 'final');\n } else if (cell?.plane === 'frozenRowsEnd' && increment === 'row') {\n handleSaveDraftRow(cell.row);\n handleInsertRowResult(model.insertRow());\n } else {\n dxGrid.refocus(increment, delta);\n }\n }\n },\n [dxGrid, model],\n );\n\n const handleKeyDown = useCallback<NonNullable<GridContentProps['onKeyDown']>>(\n (event) => {\n if (!model?.features.dataEditable) {\n return;\n }\n\n const cell = closestCell(event.target);\n if (!model || !cell) {\n return;\n }\n\n // Handle Meta+C (Copy) and Meta+V (Paste) commands\n if (event.metaKey || event.ctrlKey) {\n switch (event.key) {\n case 'c': {\n // Copy focused cell's text content to clipboard\n try {\n const cellData = model.getCellData(cell);\n const textContent = cellData?.toString() ?? '';\n void navigator.clipboard.writeText(textContent);\n event.preventDefault();\n } catch (error) {\n log.catch(error);\n }\n break;\n }\n case 'v': {\n // Paste clipboard content to focused cell\n event.preventDefault();\n void navigator.clipboard.readText().then((clipboardText) => {\n try {\n // Attempt to set the cell's content to clipboard content\n model.setCellData(cell, String.trim(clipboardText).replace(/[\\n\\r]+/, ' '));\n handleSave();\n } catch {\n // If validation fails, emit a DxEditRequest event with initialContent from clipboard\n // TODO(thure): Should `dx-grid` expose a method like this?\n const cellElement = (event.target as HTMLElement).closest(\n '[data-dx-grid-action=\"cell\"]',\n ) as HTMLElement;\n if (cellElement) {\n const rect = cellElement.getBoundingClientRect();\n const editRequest = new DxEditRequest({\n cellIndex: `${cell.plane},${cell.col},${cell.row}`,\n cellBox: {\n insetInlineStart: rect.left,\n insetBlockStart: rect.top,\n inlineSize: rect.width,\n blockSize: rect.height,\n },\n cellElement,\n initialContent: clipboardText,\n });\n cellElement.dispatchEvent(editRequest);\n }\n }\n });\n break;\n }\n }\n }\n\n switch (event.key) {\n case 'Backspace':\n case 'Delete': {\n try {\n model.setCellData(cell, undefined);\n event.preventDefault();\n handleSave();\n } catch {\n // Delete results in a validation error; don’t prevent default so dx-grid can emit an edit request.\n }\n break;\n }\n }\n },\n [model, dxGrid, handleSave],\n );\n\n const handleAxisResize = useCallback<NonNullable<GridContentProps['onAxisResize']>>(\n (event) => {\n if (event.axis === 'col') {\n const columnIndex = parseInt(event.index, 10);\n model?.setColumnWidth(columnIndex, event.size);\n }\n },\n [model],\n );\n\n const handleWheel = useCallback(\n (event: WheelEvent) => {\n if (!ignoreAttention && !hasAttention) {\n event.stopPropagation();\n }\n },\n [hasAttention, ignoreAttention],\n );\n\n const handleNewColumn = useCallback(() => {\n const columns = model?.getColumnCount();\n if (dxGrid && columns) {\n dxGrid.scrollToColumn(columns - 1);\n }\n }, [model, dxGrid]);\n\n // Publish controller to Root.\n const { controllerRef } = useTableContext(TABLE_CONTENT_NAME);\n controllerRef.current = useMemo<TableController>(() => {\n if (!dxGrid || !presentation) {\n return {};\n }\n\n return {\n update: (cell) => {\n if (cell) {\n dxGrid.updateIfWithinBounds(cell, true);\n } else {\n dxGrid.updateCells(true);\n dxGrid.requestUpdate();\n }\n },\n handleInsertRowResult,\n };\n }, [dxGrid, model, presentation]);\n\n if (!model || !modals) {\n return <span className='dx-attention-surface' />;\n }\n\n return (\n <div {...composableProps(props, { classNames: 'dx-container relative' })} ref={forwardedRef}>\n <Grid.Root id={model.id ?? 'table-grid'}>\n <TableValueEditor\n model={model}\n modals={modals}\n schema={schema}\n onFocus={handleFocus}\n onSave={handleSave}\n onCreate={onCreate}\n />\n <Grid.Content\n className={mx('[--dx-grid-base:var(--base-surface)]', gridSeparatorInlineEnd, gridSeparatorBlockEnd)}\n frozen={frozen}\n columns={columnMeta}\n columnDefault={columnDefault}\n rowDefault={rowDefault}\n limitRows={rows.length}\n limitColumns={columnCount}\n overscroll='trap'\n onAxisResize={handleAxisResize}\n onClick={handleGridClick}\n onKeyDownCapture={handleKeyDown}\n onWheelCapture={handleWheel}\n {...(testId && { 'data-testid': testId })}\n ref={setDxGrid}\n />\n <RowActionsMenu model={model} modals={modals} />\n <ColumnActionsMenu model={model} modals={modals} />\n <ColumnSettings model={model} modals={modals} onNewColumn={handleNewColumn} />\n </Grid.Root>\n </div>\n );\n },\n);\n\nTableContent.displayName = TABLE_CONTENT_NAME;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry } from '@effect-atom/atom-react';\nimport type * as Types from 'effect/Types';\n\nimport { Filter, type JsonSchema, Obj, Order, Query, type QueryAST, Ref, Type, type View } from '@dxos/echo';\nimport {\n ProjectionModel,\n type SchemaPropertyDefinition,\n ViewModel,\n createEchoChangeCallback,\n getSchemaFromJsonSchema,\n getSchemaFromPropertyDefinitions,\n} from '@dxos/schema';\n\nimport { Table } from '../types';\n\n// TODO(ZaymonFC): Upstream these extra fields to SchemaPropertyDefinition to enhance schema-tools schema creation.\ntype PropertyDisplayProps = {\n size: number;\n title: string;\n sort: QueryAST.OrderDirection;\n};\n\nexport type TablePropertyDefinition = SchemaPropertyDefinition & Partial<PropertyDisplayProps>;\n\n/**\n * @deprecated\n */\n// TODO(burdon): Remove variance.\nexport const getBaseSchema = ({\n type,\n typename,\n properties,\n jsonSchema,\n}: {\n type?: Type.AnyEntity;\n typename?: string;\n properties?: TablePropertyDefinition[];\n jsonSchema?: Types.DeepMutable<JsonSchema.JsonSchema>;\n}): { typename: string; type: Type.AnyEntity } => {\n const resolved =\n typename && properties\n ? getSchemaFromPropertyDefinitions(typename, properties)\n : (type ?? (jsonSchema ? getSchemaFromJsonSchema(jsonSchema, typename) : undefined));\n if (!resolved) {\n throw new Error('invalid properties');\n }\n\n return { typename: Type.getTypename(resolved)!, type: resolved };\n};\n\nexport const makeDynamicTable = ({\n registry,\n type,\n properties,\n}: {\n registry: Registry.Registry;\n type: Type.AnyEntity;\n properties?: TablePropertyDefinition[];\n}): { projection: ProjectionModel; object: Table.Table } => {\n const jsonSchema = type.jsonSchema;\n const view = ViewModel.make({\n query: Query.select(Filter.everything()),\n jsonSchema,\n type,\n ...(properties && { fields: properties.map((property) => property.name) }),\n });\n const object = Obj.make(Table.Table, { view: Ref.make(view), sizes: {} });\n\n const projection = new ProjectionModel({\n registry,\n view,\n baseSchema: jsonSchema,\n change: createEchoChangeCallback(view, type),\n });\n projection.normalizeView();\n if (properties && projection.getFields()) {\n setProperties(view, projection, object, properties);\n }\n\n return { projection, object };\n};\n\nconst setProperties = (\n view: View.View,\n projection: ProjectionModel,\n table: Table.Table,\n properties: TablePropertyDefinition[],\n) => {\n for (const property of properties) {\n const field = projection.getFields().find((field) => field.path === property.name);\n if (field) {\n if (property.size !== undefined) {\n Obj.update(table, (table) => {\n table.sizes[field.path] = property.size!;\n });\n }\n\n if (property.title !== undefined) {\n const fieldProjection = projection.getFieldProjection(field.id);\n projection.setFieldProjection({\n ...fieldProjection,\n props: { ...fieldProjection.props, title: property.title },\n });\n }\n\n if (property.sort) {\n // Apply sort to query instead of deprecated view.sort\n const currentQuery = Query.fromAst(Obj.getSnapshot(view).query.ast);\n // Use any type parameter since we're working with dynamic field paths\n const newQuery = currentQuery.orderBy(Order.property<any>(field.path as string, property.sort));\n Obj.update(view, (view) => {\n // Type assertion needed because Query AST types have some variance issues.\n view.query.ast = newQuery.ast as typeof view.query.ast;\n });\n }\n }\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n/**\n * Explicitly marks signal dependencies for tracking within effects.\n * Returns the passed value to enable inline usage.\n */\nexport const touch = <T>(value: T) => value;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\n/**\n * Creates a narrowed schema from an original schema that only includes\n * the specified paths. This allows form components to only display\n * and edit/validate specific fields rather than the entire object.\n *\n * @param schema The original schema to narrow\n * @param paths Array of field paths to extract\n * @returns A narrowed Schema instance containing only the properties at the specified paths\n */\nexport const narrowSchema = <S extends Schema.Schema.AnyNoContext>(\n schema: S,\n paths: string[],\n): Schema.Schema<unknown, unknown> | undefined => {\n const ast = (schema as any)?.ast;\n\n if (SchemaAST.isTypeLiteral(ast)) {\n // Filter property signatures that match any of the provided paths\n const propertySignatures = ast.propertySignatures.filter((signature) => paths.includes(signature.name.toString()));\n\n // If we found at least one matching property\n if (propertySignatures.length > 0) {\n // Create a new TypeLiteral with only the matching properties\n const narrowType = new SchemaAST.TypeLiteral(propertySignatures, []);\n return Schema.make(narrowType);\n }\n }\n\n return undefined;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom, type Registry } from '@effect-atom/atom-react';\nimport { type MutableRefObject, type RefObject } from 'react';\n\nexport type ColumnSettingsMode = { type: 'create' } | { type: 'edit'; fieldId: string };\n\nexport type ModalState =\n | { type: 'row'; rowIndex: number }\n | { type: 'column'; fieldId: string }\n | { type: 'refPanel'; targetId: string; typename: string }\n | { type: 'columnSettings'; mode: ColumnSettingsMode }\n | { type: 'closed' };\n\nexport class ModalController {\n private readonly _registry: Registry.Registry;\n private readonly _state: Atom.Writable<ModalState>;\n private readonly _triggerRef: MutableRefObject<HTMLElement> = { current: null as unknown as HTMLElement };\n\n constructor(registry: Registry.Registry) {\n this._registry = registry;\n this._state = Atom.make<ModalState>({ type: 'closed' });\n }\n\n public get state(): Atom.Atom<ModalState> {\n return this._state;\n }\n\n public get stateValue(): ModalState {\n return this._registry.get(this._state);\n }\n\n public get trigger() {\n return this._triggerRef as RefObject<HTMLButtonElement>;\n }\n\n public setTrigger = (trigger: HTMLElement) => {\n this._triggerRef.current = trigger;\n };\n\n public showRowMenu = (rowIndex: number) => {\n this._registry.set(this._state, { type: 'row', rowIndex });\n };\n\n public showColumnMenu = (fieldId: string) => {\n this._registry.set(this._state, { type: 'column', fieldId });\n };\n\n public showColumnCreator = () => {\n this._registry.set(this._state, { type: 'columnSettings', mode: { type: 'create' } });\n };\n\n public showReferencePanel = (targetId: string, schemaId: string) => {\n this._registry.set(this._state, { type: 'refPanel', targetId, typename: schemaId });\n };\n\n public openColumnSettings = () => {\n const currentState = this._registry.get(this._state);\n if (currentState.type === 'column') {\n const fieldId = currentState.fieldId;\n // Queue next render to let the column action modal close completely.\n requestAnimationFrame(() => {\n this._registry.set(this._state, {\n type: 'columnSettings',\n mode: { type: 'edit', fieldId },\n });\n });\n }\n };\n\n public close = () => {\n this._registry.set(this._state, { type: 'closed' });\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Completion } from '@codemirror/autocomplete';\nimport { EditorView } from '@codemirror/view';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { type Type } from '@dxos/echo';\nimport { Format, TypeEnum } from '@dxos/echo/Format';\nimport { invariant } from '@dxos/invariant';\nimport { type DxGridAxis, type DxGridPosition } from '@dxos/lit-grid';\nimport {\n type EditorBlurHandler,\n type EditorKeyEvent,\n type EditorKeyOrBlurHandler,\n GridCellEditor,\n type GridCellEditorProps,\n type GridScopedProps,\n editorKeys,\n parseCellIndex,\n useGridContext,\n} from '@dxos/react-ui-grid';\nimport { type FieldProjection } from '@dxos/schema';\n\nimport { type ModalController, type TableModel } from '../../model';\nimport { CellValidationMessage } from './CellValidationMessage';\nimport { FormCellEditor, type OnCreateHandler } from './FormCellEditor';\n\n/**\n * Option to create new object/value.\n */\nexport type QueryResult = Pick<Completion, 'label'> & {\n data: any;\n};\n\nexport type TableCellEditorProps<T extends Type.AnyEntity = Type.AnyEntity> = {\n schema?: T;\n model?: TableModel;\n modals?: ModalController;\n onFocus?: (axis?: DxGridAxis, delta?: -1 | 0 | 1, cell?: DxGridPosition) => void;\n onCreate?: OnCreateHandler;\n onSave?: () => void;\n};\n\nexport const TableValueEditor = <T extends Type.AnyEntity = Type.AnyEntity>({\n __gridScope,\n schema,\n model,\n modals,\n onFocus,\n onSave,\n onCreate,\n}: GridScopedProps<TableCellEditorProps<T>>) => {\n const { editing } = useGridContext('TableValueEditor', __gridScope);\n\n const fieldProjection = useMemo<FieldProjection | undefined>(() => {\n if (!model || !editing) {\n return;\n }\n\n const { col } = parseCellIndex(editing.index);\n const field = model.projection.getFields()[col];\n const fieldProjection = model.projection.getFieldProjection(field.id);\n invariant(fieldProjection);\n return fieldProjection;\n }, [model, editing]);\n\n if (\n fieldProjection?.props.type === TypeEnum.Array ||\n fieldProjection?.props.format === Format.TypeFormat.SingleSelect ||\n fieldProjection?.props.format === Format.TypeFormat.Ref\n // TODO(thure): Support `Format.TypeFormat.MultiSelect`\n ) {\n return (\n <FormCellEditor<T>\n __gridScope={__gridScope}\n schema={schema}\n model={model}\n fieldProjection={fieldProjection}\n modals={modals}\n onSave={onSave}\n onCreate={onCreate}\n />\n );\n }\n\n // For all other types, use the existing cell editor.\n return <TableCellEditor model={model} modals={modals} onFocus={onFocus} onSave={onSave} __gridScope={__gridScope} />;\n};\n\nconst cellEditorSlots: GridCellEditorProps['slots'] = {\n content: {\n className: '!py-(--dx-grid-cell-editor-padding-block)',\n },\n};\n\nexport const TableCellEditor = ({\n __gridScope,\n model,\n modals,\n onFocus,\n onSave,\n}: GridScopedProps<TableCellEditorProps>) => {\n const { editing, setEditing } = useGridContext('TableCellEditor', __gridScope);\n const suppressNextBlur = useRef(false);\n const [validationError, setValidationError] = useState<string | null>(null);\n const [validationVariant, setValidationVariant] = useState<'error' | 'warning'>('error');\n\n const fieldProjection = useMemo<FieldProjection | undefined>(() => {\n if (!model || !editing) {\n return;\n }\n\n const { col } = parseCellIndex(editing.index);\n const field = model.projection.getFields()[col];\n const fieldProjection = model.projection.getFieldProjection(field.id);\n invariant(fieldProjection);\n return fieldProjection;\n }, [model, editing]);\n\n // TOOD(burdon): Attach to event handler?\n const handleEnter = useCallback(\n async (value: any) => {\n if (!model || !editing) {\n return;\n }\n\n const cell = parseCellIndex(editing.index);\n const validationResult = await model.validateCellData(cell, value);\n\n if (validationResult.valid) {\n setValidationError(null);\n model.setCellData(cell, value);\n onFocus?.();\n setEditing(null);\n onSave?.();\n } else {\n setValidationError(validationResult.error);\n setValidationVariant('error');\n }\n },\n [model, editing, onFocus, setEditing],\n );\n\n const handleBlur = useCallback<EditorBlurHandler>(\n async (value) => {\n if (suppressNextBlur.current) {\n suppressNextBlur.current = false;\n } else if (model && editing) {\n // Save silently if validation passes\n const cell = parseCellIndex(editing.index);\n if (value !== undefined) {\n const result = await model.validateCellData(cell, value);\n if (result.valid) {\n setValidationError(null);\n model.setCellData(cell, value);\n setEditing(null);\n onSave?.();\n }\n }\n }\n },\n [model, editing],\n );\n\n const handleClose = useCallback<EditorKeyOrBlurHandler>(\n async (value, event) => {\n if (!model || !editing || !fieldProjection) {\n return;\n }\n\n const cell = parseCellIndex(editing.index);\n if (value !== undefined) {\n // Pre-commit validation check.\n const result = await model.validateCellData(cell, value);\n\n if (result.valid) {\n suppressNextBlur.current = true;\n setValidationError(null);\n model.setCellData(cell, value);\n setEditing(null);\n onSave?.();\n if (event && onFocus) {\n onFocus(determineNavigationAxis(event), determineNavigationDelta(event), cell);\n }\n } else {\n setValidationError(result.error);\n setValidationVariant('error');\n }\n } else {\n suppressNextBlur.current = true;\n setValidationError(null);\n setEditing(null);\n onSave?.();\n if (event && onFocus) {\n onFocus(determineNavigationAxis(event), determineNavigationDelta(event));\n }\n }\n },\n [model, editing, onFocus, fieldProjection, setEditing, onSave],\n );\n\n const extensions = useMemo(() => {\n if (!fieldProjection) {\n return [];\n }\n\n const extensions = [\n editorKeys({\n onClose: handleClose,\n ...(editing?.initialContent && { onNav: handleClose }),\n }),\n ];\n // Add validation extension to handle content changes.\n if (model && editing) {\n extensions.push(\n EditorView.updateListener.of(\n debounce((update) => {\n const content = update.state.doc.toString();\n const cell = parseCellIndex(editing.index);\n\n // Perform validation on content change.\n void model.validateCellData(cell, content).then((result) => {\n if (result.valid) {\n setValidationError(null);\n } else {\n setValidationError(result.error);\n setValidationVariant('error');\n }\n });\n }, 10),\n ),\n );\n }\n\n return extensions;\n }, [model, modals, editing, fieldProjection, handleClose]);\n\n const getCellContent = useCallback<GridCellEditorProps['getCellContent']>(() => {\n if (model && editing) {\n const cell = parseCellIndex(editing.index);\n const value = model.getCellData(cell);\n return value !== undefined ? String(value) : '';\n }\n }, [model, editing]);\n\n return (\n <>\n <CellValidationMessage validationError={validationError} variant={validationVariant} __gridScope={__gridScope} />\n <GridCellEditor\n extensions={extensions}\n slots={cellEditorSlots}\n getCellContent={getCellContent}\n onBlur={handleBlur}\n />\n </>\n );\n};\n\nconst determineNavigationAxis = ({ key }: EditorKeyEvent): 'col' | 'row' | undefined => {\n switch (key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Enter': {\n return 'row';\n }\n\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'Tab':\n return 'col';\n }\n};\n\nconst determineNavigationDelta = ({ key, shift }: EditorKeyEvent): -1 | 1 => {\n switch (key) {\n case 'ArrowUp':\n case 'ArrowLeft':\n return -1;\n\n case 'ArrowDown':\n case 'ArrowRight':\n return 1;\n }\n\n return shift ? -1 : 1;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type GridScopedProps, useGridContext } from '@dxos/react-ui-grid';\n\nexport type CellValidationMessageProps = {\n validationError: string | null;\n variant?: 'error' | 'warning';\n};\n\nexport const CellValidationMessage = ({\n __gridScope,\n validationError,\n variant = 'error',\n}: GridScopedProps<CellValidationMessageProps>) => {\n const { editing, editBox: box } = useGridContext('GridSheetCellEditor', __gridScope);\n\n if (!editing || !validationError) {\n return null;\n }\n\n const bgClass = variant === 'error' ? 'bg-error-surface' : 'bg-warning-surface';\n const textClass = variant === 'error' ? 'text-error-fg' : 'text-warning-fg';\n\n return (\n <div\n className={`absolute ${bgClass} ${textClass} rounded-h-sm text-xs p-1`}\n style={{\n ...{ '--dx-grid-cell-width': `${box?.inlineSize ?? 200}px` },\n zIndex: 10,\n insetBlockEnd: `calc(100% - ${box.insetBlockStart}px)`,\n insetInlineStart: box.insetInlineStart,\n inlineSize: box.inlineSize,\n }}\n >\n {validationError}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Entity, Ref, Type } from '@dxos/echo';\nimport { SchemaEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { type Label, Popover } from '@dxos/react-ui';\nimport { Form, type FormRootProps, type RefFieldProps } from '@dxos/react-ui-form';\nimport { parseCellIndex, useGridContext } from '@dxos/react-ui-grid';\nimport { type FieldProjection } from '@dxos/schema';\nimport { getDeep, isTruthy, setDeep } from '@dxos/util';\n\nimport { translationKey } from '#translations';\n\nimport { type ModalController, type TableModel, type TableRow } from '../../model';\nimport { narrowSchema } from '../../util';\n\nconst createOptionLabel: Label = ['create-new-object.label', { ns: translationKey }];\n\nexport type OnCreateHandler = (schema: Type.AnyEntity, values: any) => Parameters<typeof Ref.make>[0];\n\nexport type FormCellEditorProps<T extends Type.AnyEntity = Type.AnyEntity> = {\n __gridScope: any;\n schema?: T;\n model?: TableModel;\n fieldProjection: FieldProjection;\n modals?: ModalController; // TODO(burdon): Not used. Remove?\n onSave?: () => void;\n onCreate?: OnCreateHandler;\n} & Omit<FormRootProps<any>, 'values' | 'schema' | 'onCreate'>;\n\nexport const FormCellEditor = <T extends Type.AnyEntity = Type.AnyEntity>({\n __gridScope,\n schema,\n model,\n fieldProjection,\n onSave,\n onCreate,\n ...formProps\n}: FormCellEditorProps<T>) => {\n const anchorRef = useRef<HTMLButtonElement | null>(null);\n const { id: _gridId, editing: contextEditing, setEditing } = useGridContext('ArrayEditor', __gridScope);\n const [editing, setLocalEditing] = useState(false);\n\n useEffect(() => {\n if (contextEditing && contextEditing.cellElement) {\n anchorRef.current = (contextEditing.cellElement as HTMLElement).querySelector(\n '.dx-grid__cell__content',\n ) as HTMLButtonElement;\n setLocalEditing(true);\n } else {\n anchorRef.current = null;\n setLocalEditing(false);\n }\n }, [contextEditing]);\n\n const narrowedSchema = useMemo<Schema.Schema.AnyNoContext | undefined>(() => {\n if (!schema) {\n return undefined;\n }\n\n return narrowSchema(Type.getSchema(schema), [fieldProjection.field.path]);\n }, [JSON.stringify(schema), fieldProjection.field.path]); // TODO(burdon): Avoid stringify.\n\n const originalRow = useMemo<TableRow | undefined>(() => {\n if (model && contextEditing) {\n // Check if this is a draft cell and get the appropriate row data\n const cell = parseCellIndex(contextEditing.index);\n if (model.isDraftCell(cell)) {\n const draftRow = model.getDraftRows()[cell.row];\n invariant(draftRow);\n return draftRow.data;\n } else {\n const row = model.getRowAt(cell.row);\n invariant(row);\n return row;\n }\n }\n\n return undefined;\n }, [model, contextEditing]);\n\n // NOTE: Important to get a mutable deep clone to eject from the echo object.\n // TODO(wittjosiah): Consider using something like Obj.clone for this use case.\n const initialFormValues = useMemo(() => (originalRow ? JSON.parse(JSON.stringify(originalRow)) : {}), [originalRow]);\n const [formValues, setFormValues] = useState<any>(initialFormValues);\n\n const handleValuesChanged = useCallback<NonNullable<FormRootProps<any>['onValuesChanged']>>((values) => {\n setFormValues(values);\n }, []);\n const handleOpenChange = useCallback((nextOpen: boolean) => {\n if (nextOpen === false) {\n setEditing(null);\n onSave?.();\n }\n setLocalEditing(nextOpen);\n }, []);\n\n const handleSave = useCallback<NonNullable<FormRootProps<any>['onSave']>>(\n (values) => {\n if (!originalRow) {\n return;\n }\n const path = fieldProjection.field.path;\n const value = getDeep(values, [path]);\n // Use model's changeRow for consistent mutation handling.\n if (model) {\n model.changeRow(originalRow, (mutableRow) => {\n setDeep(mutableRow, [path], value);\n });\n } else {\n setDeep(originalRow, [path], value);\n }\n contextEditing?.cellElement?.focus();\n setEditing(null);\n setLocalEditing(false);\n onSave?.();\n },\n [fieldProjection.field.path, onSave, contextEditing, originalRow, model],\n );\n\n const handleCreate = useCallback<NonNullable<FormRootProps<any>['onCreate']>>(\n (schema, values) => {\n const objectWithId = onCreate?.(schema, values);\n if (objectWithId && originalRow) {\n const ref = Ref.make(objectWithId);\n const path = fieldProjection.field.path;\n // Use model's changeRow for consistent mutation handling.\n if (model) {\n model.changeRow(originalRow, (mutableRow) => {\n setDeep(mutableRow, [path], ref);\n });\n } else {\n setDeep(originalRow, [path], ref);\n }\n }\n contextEditing?.cellElement?.focus();\n setEditing(null);\n setLocalEditing(false);\n onSave?.();\n },\n [fieldProjection.field.path, onSave, contextEditing, originalRow, onCreate, model],\n );\n\n const getOptions = useCallback<NonNullable<RefFieldProps['getOptions']>>(\n (results) =>\n results\n .map((obj) => {\n return {\n id: Entity.getURI(obj),\n label: SchemaEx.getValue(obj, fieldProjection.field.referencePath!) || obj.id.toString(),\n };\n })\n .filter(isTruthy),\n [fieldProjection],\n );\n\n if (!editing) {\n return null;\n }\n\n return (\n <Popover.Root open={editing} onOpenChange={handleOpenChange}>\n <Popover.VirtualTrigger virtualRef={anchorRef} />\n <Popover.Portal>\n <Popover.Content tabIndex={-1} classNames='dx-card-popover-width dx-density-md'>\n <Popover.Arrow />\n <Popover.Viewport>\n <Form.Root\n {...formProps}\n autoFocus\n schema={narrowedSchema}\n values={formValues}\n onValuesChanged={handleValuesChanged}\n projection={model?.projection}\n createInitialValuePath={fieldProjection.field.referencePath}\n createOptionIcon='ph--plus--regular'\n createOptionLabel={createOptionLabel}\n db={model?.db}\n getOptions={getOptions}\n onCreate={handleCreate}\n onSave={handleSave}\n >\n <Form.Viewport>\n <Form.Content>\n <Form.FieldSet />\n <Form.Actions />\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n </Popover.Viewport>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React from 'react';\n\nimport { DropdownMenu, useTranslation } from '@dxos/react-ui';\n\nimport { translationKey } from '#translations';\n\nimport { type ModalController, type TableModel } from '../../model';\n\nexport type ColumnActionsMenuProps = {\n model: TableModel;\n modals: ModalController;\n};\n\nexport const ColumnActionsMenu = ({ model, modals }: ColumnActionsMenuProps) => {\n const { t } = useTranslation(translationKey);\n const state = useAtomValue(modals.state);\n if (state?.type !== 'column') {\n return null;\n }\n\n const currentSort = model.getSorting();\n const isCurrentColumnSorted = currentSort?.fieldId === state.fieldId;\n\n return (\n <DropdownMenu.Root modal={false} open={true} onOpenChange={modals.close}>\n <DropdownMenu.VirtualTrigger virtualRef={modals.trigger} />\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n {(!isCurrentColumnSorted || currentSort?.direction === 'asc') && (\n <DropdownMenu.Item\n data-testid='column-sort-descending'\n onClick={() => model.setSort(state.fieldId, 'desc')}\n >\n {t('column-action-sort-descending.menu')}\n </DropdownMenu.Item>\n )}\n {(!isCurrentColumnSorted || currentSort?.direction === 'desc') && (\n <DropdownMenu.Item\n data-testid='column-sort-ascending'\n onClick={() => model.setSort(state.fieldId, 'asc')}\n >\n {t('column-action-sort-ascending.menu')}\n </DropdownMenu.Item>\n )}\n {isCurrentColumnSorted && (\n <DropdownMenu.Item data-testid='column-clear-sort' onClick={() => model.clearSort()}>\n {t('column-action-clear-sorting.menu')}\n </DropdownMenu.Item>\n )}\n {model.getColumnCount() > 1 && model.features.schemaEditable && (\n <DropdownMenu.Item data-testid='column-delete' onClick={() => model.deleteColumn(state.fieldId)}>\n {t('column-action-delete.menu')}\n </DropdownMenu.Item>\n )}\n {model.features.schemaEditable && (\n <DropdownMenu.Item data-testid='column-settings' onClick={() => modals.openColumnSettings()}>\n {t('column-action-settings.menu')}\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type Registry, type View } from '@dxos/echo';\nimport { Popover } from '@dxos/react-ui';\nimport { FieldEditor } from '@dxos/react-ui-form';\n\nimport { type ModalController, type TableModel } from '../../model';\n\ntype ColumnSettingsProps = {\n registry?: Registry.Registry;\n model?: TableModel;\n modals: ModalController;\n onNewColumn: () => void;\n};\n\nexport const ColumnSettings = ({ registry, model, modals, onNewColumn }: ColumnSettingsProps) => {\n const [newField, setNewField] = useState<View.FieldType>();\n const state = useAtomValue(modals.state);\n\n useEffect(() => {\n if (state?.type === 'columnSettings' && state.mode.type === 'create' && model?.projection) {\n setNewField(model.projection.createFieldProjection());\n requestAnimationFrame(() => {\n onNewColumn();\n });\n } else {\n setNewField(undefined);\n }\n }, [model?.projection, state]);\n\n const existingField = useMemo(() => {\n if (state?.type === 'columnSettings') {\n const { mode } = state;\n if (mode.type === 'edit') {\n return model?.projection?.getFields().find((f) => f.id === mode.fieldId);\n }\n }\n return undefined;\n }, [model?.projection, state]);\n\n const field = existingField ?? newField;\n\n const handleSave = useCallback(() => {\n modals.close();\n }, [modals]);\n\n const handleCancel = useCallback(() => {\n if (state?.type === 'columnSettings' && state.mode.type === 'create' && newField) {\n model?.projection.deleteFieldProjection(newField.id);\n }\n }, [model?.projection, state, newField]);\n\n if (!model?.projection || !field) {\n return null;\n }\n\n return (\n <Popover.Root modal={false} open={state?.type === 'columnSettings'}>\n <Popover.VirtualTrigger virtualRef={modals.trigger} />\n <Popover.Portal>\n <Popover.Content classNames='md:w-64'>\n <Popover.Viewport>\n <FieldEditor\n projection={model.projection}\n field={field}\n registry={registry}\n onSave={handleSave}\n onCancel={handleCancel}\n />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React from 'react';\n\nimport { DropdownMenu, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { translationKey } from '#translations';\n\nimport { type ModalController, type TableModel } from '../../model';\n\ntype RowActionsMenuProps = { model: TableModel; modals: ModalController };\n\nexport const RowActionsMenu = ({ model, modals }: RowActionsMenuProps) => {\n const { t } = useTranslation(translationKey);\n const hasSelection = model.selection.hasSelection;\n const state = useAtomValue(modals.state);\n if (state?.type !== 'row') {\n return null;\n }\n return (\n <DropdownMenu.Root modal={false} open={true} onOpenChange={modals.close}>\n <DropdownMenu.VirtualTrigger virtualRef={modals.trigger} />\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n {/* Custom actions */}\n {model.rowActions?.length > 0 && (\n <>\n <DropdownMenu.Group>\n {model.rowActions?.map((action) => (\n <DropdownMenu.Item\n key={action.id}\n data-testid={`row-action-${action.id}`}\n onClick={() => {\n modals.close();\n model.handleRowAction(action.id, state.rowIndex);\n }}\n >\n {toLocalizedString(action.label, t)}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Group>\n <DropdownMenu.Separator />\n </>\n )}\n {/* Default actions */}\n {model.features.dataEditable !== false && (\n <DropdownMenu.Item data-testid='row-menu-delete' onClick={() => model.deleteRow(state.rowIndex)}>\n {t(hasSelection ? 'bulk-delete-row.label' : 'delete-row.label')}\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom, RegistryContext } from '@effect-atom/atom-react';\nimport React, { useContext, useEffect, useMemo } from 'react';\n\nimport { composable, composableProps } from '@dxos/react-ui';\nimport {\n type ActionGraphEdges,\n type ActionGraphNodes,\n type ActionGraphProps,\n Menu,\n type MenuAction,\n MenuRootProps,\n createGapSeparator,\n createMenuAction,\n createMenuItemGroup,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport { translationKey } from '#translations';\n\nexport type TableToolbarActionProperties = { type: TableToolbarActionType };\n\nexport type TableToolbarAction = MenuAction<TableToolbarActionProperties>;\n\nexport type TableToolbarActionType = 'add-row' | 'comment' | 'save-view' | 'export-csv' | 'export-json' | 'export-xml';\n\nexport type TableExportFormat = 'csv' | 'json' | 'xml';\n\ntype TableToolbarState = Partial<{ viewDirty: boolean }>;\n\nconst createTableToolbarActions = ({\n stateAtom,\n onAdd,\n onSave,\n onExport,\n customActions,\n}: {\n stateAtom: Atom.Atom<TableToolbarState>;\n onAdd?: () => void;\n onSave?: () => void;\n onExport?: (format: TableExportFormat) => void;\n customActions?: Atom.Atom<ActionGraphProps>;\n}) =>\n Atom.make((get) => {\n const nodes: ActionGraphNodes = [];\n const edges: ActionGraphEdges = [];\n if (onAdd) {\n const add = createMenuAction<TableToolbarActionProperties>('add-row', onAdd, {\n type: 'add-row' as const,\n icon: 'ph--plus--regular',\n label: ['add-row.label', { ns: translationKey }],\n testId: 'table.toolbar.add-row',\n });\n nodes.push(add);\n edges.push({ source: 'root', target: add.id, relation: 'child' });\n }\n if (onSave) {\n const state = get(stateAtom);\n const save = createMenuAction<TableToolbarActionProperties>('save-view', onSave, {\n type: 'save-view' as const,\n icon: 'ph--floppy-disk--regular',\n label: ['save-view.label', { ns: translationKey }],\n testId: 'table.toolbar.save-view',\n iconOnly: false,\n hidden: !state.viewDirty,\n });\n nodes.push(save);\n edges.push({ source: 'root', target: save.id, relation: 'child' });\n }\n if (onExport) {\n const exportGroup = createMenuItemGroup('export-rows', {\n label: ['export-rows.menu', { ns: translationKey }],\n icon: 'ph--export--regular',\n iconOnly: true,\n variant: 'dropdownMenu',\n });\n nodes.push(exportGroup);\n edges.push({ source: 'root', target: exportGroup.id, relation: 'child' });\n\n const formats: Array<{ format: TableExportFormat; type: TableToolbarActionType; label: string }> = [\n { format: 'csv', type: 'export-csv', label: 'export-rows-csv.menu' },\n { format: 'json', type: 'export-json', label: 'export-rows-json.menu' },\n { format: 'xml', type: 'export-xml', label: 'export-rows-xml.menu' },\n ];\n for (const { format, type, label } of formats) {\n const action = createMenuAction<TableToolbarActionProperties>(type, () => onExport(format), {\n type,\n label: [label, { ns: translationKey }],\n });\n nodes.push(action);\n edges.push({ source: exportGroup.id, target: action.id, relation: 'child' });\n }\n }\n const gap = createGapSeparator();\n nodes.push(...gap.nodes);\n edges.push(...gap.edges);\n if (customActions) {\n const custom = get(customActions);\n nodes.push(...custom.nodes);\n edges.push(...custom.edges);\n }\n\n return {\n nodes,\n edges,\n };\n });\n\nexport type TableToolbarProps = Pick<MenuRootProps, 'attendableId'> &\n TableToolbarState & {\n onAdd?: () => void;\n onSave?: () => void;\n onExport?: (format: TableExportFormat) => void;\n customActions?: Atom.Atom<ActionGraphProps>;\n };\n\nexport const TableToolbar = composable<HTMLDivElement, TableToolbarProps>(\n ({ attendableId, viewDirty, onAdd, onSave, onExport, customActions, ...props }, forwardedRef) => {\n const registry = useContext(RegistryContext);\n const stateAtom = useMemo(() => Atom.make<TableToolbarState>({ viewDirty }), []);\n\n // Update state.viewDirty when the prop changes.\n useEffect(() => {\n registry.set(stateAtom, { viewDirty });\n }, [registry, stateAtom, viewDirty]);\n\n const actionsCreator = useMemo(\n () => createTableToolbarActions({ stateAtom, onAdd, onSave, onExport, customActions }),\n [stateAtom, onAdd, onSave, onExport, customActions],\n );\n const menuActions = useMenuActions(actionsCreator);\n\n return (\n <Menu.Root {...menuActions} attendableId={attendableId}>\n <Menu.Toolbar {...composableProps(props)} ref={forwardedRef} />\n </Menu.Root>\n );\n },\n);\n\nTableToolbar.displayName = 'TableToolbar';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport type * as Types from 'effect/Types';\nimport React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type JsonSchema, type Type } from '@dxos/echo';\nimport { type ThemedClassName, useDefaultValue } from '@dxos/react-ui';\nimport { type ProjectionModel } from '@dxos/schema';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useTableModel } from '../../hooks';\nimport { type TableFeatures, TablePresentation, type TableRowAction } from '../../model';\nimport { type Table as TableType } from '../../types';\nimport { type TablePropertyDefinition, getBaseSchema, makeDynamicTable } from '../../util';\nimport { Table, type TableController } from './Table';\n\nexport type DynamicTableProps<T extends Type.AnyEntity = Type.AnyEntity> = ThemedClassName<{\n type?: T;\n name?: string; // TODO(burdon): Remove?\n rows: any[];\n properties?: TablePropertyDefinition[];\n jsonSchema?: Types.DeepMutable<JsonSchema.JsonSchema>;\n features?: Partial<TableFeatures>;\n rowActions?: TableRowAction[];\n onRowClick?: (row: any) => void;\n onRowAction?: (actionId: string, datum: any) => void;\n}>;\n\n/**\n * Properties define both the schema and display characteristics of the table columns.\n */\n// TODO(burdon): Instead of creating component variants, create helpers/hooks that normalize the props.\n// TODO(burdon): Warning: Cannot update a component (`DynamicTable`) while rendering a different component (`DynamicTable`).\nexport const DynamicTable = <T extends Type.AnyEntity = Type.AnyEntity>({\n classNames,\n type: typeProp,\n name = 'com.example.dynamicTable', // Remove default or make random; this will lead to type collisions.\n rows,\n properties,\n jsonSchema: jsonSchemaProp,\n rowActions,\n onRowClick,\n onRowAction,\n ...props\n}: DynamicTableProps<T>) => {\n const registry = useContext(RegistryContext);\n const [dynamicTable, setDynamicTable] = useState<{ object: TableType.Table; projection: ProjectionModel }>();\n\n // TODO(burdon): Remove variance from the props (should be normalized externally; possibly via hooks).\n const { type } = useMemo(\n () => getBaseSchema({ typename: name, properties, jsonSchema: jsonSchemaProp, type: typeProp }),\n [name, properties, jsonSchemaProp, typeProp],\n );\n\n useEffect(() => {\n setDynamicTable(makeDynamicTable({ registry, type, properties }));\n }, [registry, type, properties]);\n\n const tableRef = useRef<TableController>(null);\n const handleCellUpdate = useCallback((cell: any) => {\n tableRef.current?.update?.(cell);\n }, []);\n\n const handleRowOrderChange = useCallback(() => {\n tableRef.current?.update?.();\n }, []);\n\n const features = useDefaultValue(\n props.features,\n () =>\n ({\n selection: { enabled: false },\n dataEditable: false,\n }) as const,\n );\n\n const model = useTableModel({\n rows,\n object: dynamicTable?.object,\n projection: dynamicTable?.projection,\n features,\n rowActions,\n onCellUpdate: handleCellUpdate,\n onRowOrderChange: handleRowOrderChange,\n onRowAction,\n });\n\n const presentation = useMemo(() => {\n if (model) {\n return new TablePresentation(registry, model);\n }\n }, [registry, model]);\n\n return (\n <div className={mx('dx-expander grid', classNames)}>\n <div className='grid min-h-0 overflow-hidden'>\n <Table.Root ref={tableRef}>\n <Table.Content model={model} presentation={presentation} ignoreAttention onRowClick={onRowClick} />\n </Table.Root>\n </div>\n </div>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Atom", "createContext", "React", "forwardRef", "useImperativeHandle", "useRef", "Atom", "RegistryContext", "useAtomValue", "String", "React", "useCallback", "useContext", "useEffect", "useMemo", "useState", "log", "composable", "composableProps", "useAttention", "Grid", "closestCell", "gridSeparatorBlockEnd", "gridSeparatorInlineEnd", "DxEditRequest", "mx", "Filter", "Obj", "Order", "Query", "Ref", "Type", "ProjectionModel", "ViewModel", "createEchoChangeCallback", "getSchemaFromJsonSchema", "getSchemaFromPropertyDefinitions", "getBaseSchema", "type", "typename", "properties", "jsonSchema", "resolved", "getSchemaFromPropertyDefinitions", "getSchemaFromJsonSchema", "undefined", "Error", "Type", "getTypename", "makeDynamicTable", "registry", "view", "ViewModel", "make", "query", "Query", "select", "Filter", "everything", "fields", "map", "property", "name", "object", "Obj", "Table", "Ref", "sizes", "projection", "ProjectionModel", "baseSchema", "change", "createEchoChangeCallback", "normalizeView", "getFields", "setProperties", "table", "field", "find", "path", "size", "update", "title", "fieldProjection", "getFieldProjection", "id", "setFieldProjection", "props", "sort", "currentQuery", "fromAst", "getSnapshot", "ast", "newQuery", "orderBy", "Order", "touch", "value", "Schema", "SchemaAST", "narrowSchema", "schema", "paths", "ast", "isTypeLiteral", "propertySignatures", "filter", "signature", "includes", "name", "toString", "length", "narrowType", "TypeLiteral", "make", "undefined", "Atom", "ModalController", "_registry", "_state", "_triggerRef", "current", "registry", "make", "type", "state", "stateValue", "get", "trigger", "setTrigger", "showRowMenu", "rowIndex", "set", "showColumnMenu", "fieldId", "showColumnCreator", "mode", "showReferencePanel", "targetId", "schemaId", "typename", "openColumnSettings", "currentState", "requestAnimationFrame", "close", "EditorView", "React", "useCallback", "useMemo", "useRef", "useState", "debounce", "Format", "TypeEnum", "invariant", "GridCellEditor", "editorKeys", "parseCellIndex", "useGridContext", "React", "useGridContext", "CellValidationMessage", "__gridScope", "validationError", "variant", "editing", "editBox", "box", "bgClass", "textClass", "div", "className", "style", "inlineSize", "zIndex", "insetBlockEnd", "insetBlockStart", "insetInlineStart", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Entity", "Ref", "Type", "SchemaEx", "invariant", "Popover", "Form", "parseCellIndex", "useGridContext", "getDeep", "isTruthy", "setDeep", "translationKey", "createOptionLabel", "id", "editing", "contextEditing", "setEditing", "useGridContext", "__gridScope", "setLocalEditing", "useEffect", "cellElement", "anchorRef", "current", "undefined", "narrowSchema", "Type", "JSON", "useMemo", "cell", "parseCellIndex", "draftRow", "getDraftRows", "row", "invariant", "data", "model", "setFormValues", "values", "handleOpenChange", "onSave", "useCallback", "path", "setDeep", "value", "fieldProjection", "originalRow", "objectWithId", "make", "field", "Ref", "ref", "onCreate", "Entity", "obj", "label", "filter", "isTruthy", "virtualRef", "Popover", "tabIndex", "React", "autoFocus", "schema", "formValues", "onValuesChanged", "projection", "createInitialValuePath", "createOptionIcon", "db", "getOptions", "handleCreate", "__dxlog_file", "TableValueEditor", "fieldProjection", "useMemo", "model", "editing", "projection", "getFieldProjection", "invariant", "__gridScope", "schema", "modals", "onSave", "onCreate", "onFocus", "suppressNextBlur", "useRef", "validationError", "setValidationError", "useState", "validationVariant", "setValidationVariant", "useCallback", "validationResult", "value", "setEditing", "current", "cell", "parseCellIndex", "result", "validateCellData", "setCellData", "event", "extensions", "handleClose", "onNav", "content", "index", "undefined", "cellEditorSlots", "getCellContent", "onBlur", "determineNavigationAxis", "shift", "useAtomValue", "React", "DropdownMenu", "useTranslation", "translationKey", "ColumnActionsMenu", "model", "modals", "t", "state", "type", "currentSort", "getSorting", "isCurrentColumnSorted", "fieldId", "Root", "modal", "open", "onOpenChange", "close", "VirtualTrigger", "virtualRef", "trigger", "Portal", "Content", "Viewport", "direction", "Item", "data-testid", "onClick", "setSort", "clearSort", "getColumnCount", "features", "schemaEditable", "deleteColumn", "openColumnSettings", "Arrow", "useAtomValue", "React", "useCallback", "useEffect", "useMemo", "useState", "Popover", "FieldEditor", "ColumnSettings", "registry", "model", "modals", "onNewColumn", "newField", "setNewField", "state", "type", "mode", "projection", "createFieldProjection", "requestAnimationFrame", "undefined", "existingField", "getFields", "find", "f", "id", "fieldId", "field", "handleSave", "close", "handleCancel", "deleteFieldProjection", "Root", "modal", "open", "VirtualTrigger", "virtualRef", "trigger", "Portal", "Content", "classNames", "Viewport", "onSave", "onCancel", "Arrow", "useAtomValue", "React", "DropdownMenu", "toLocalizedString", "useTranslation", "translationKey", "RowActionsMenu", "model", "modals", "t", "hasSelection", "selection", "state", "type", "Root", "modal", "open", "onOpenChange", "close", "VirtualTrigger", "virtualRef", "trigger", "Content", "Viewport", "rowActions", "length", "Group", "map", "action", "Item", "key", "id", "data-testid", "onClick", "handleRowAction", "rowIndex", "label", "Separator", "features", "dataEditable", "deleteRow", "Arrow", "__dxlog_file", "columnDefault", "maxSize", "Atom", "emptyRowsAtom", "useContext", "dxGrid", "setDxGrid", "useState", "hasAttention", "useAttention", "attendableId", "modals", "useMemo", "ModalController", "registry", "rows", "useAtomValue", "model", "cellUpdateCounter", "cellUpdate", "columnCount", "Object", "columnMeta", "grid", "getFields", "frozen", "noActionColumn", "dataEditable", "frozenRowsStart", "frozenRowsEnd", "frozenColsStart", "frozenColsEnd", "useCallback", "useEffect", "getCells", "setFocus", "col", "row", "refocus", "requestAnimationFrame", "requestUpdate", "didCommitSuccessfully", "commitDraftRow", "scrollToEndRow", "plane", "cell", "onRowClick", "tableButtonElement", "values", "tableButtons", "find", "data", "controlElement", "tableControls", "ctrl", "selection", "toggleSelectionForRowIndex", "colIndex", "value", "getRowCount", "handleInsertRowResult", "increment", "handleSaveDraftRow", "delta", "navigator", "clipboard", "textContent", "event", "preventDefault", "error", "log", "catch", "cellElement", "getBoundingClientRect", "editRequest", "cellIndex", "cellBox", "insetInlineStart", "rect", "left", "insetBlockStart", "inlineSize", "width", "blockSize", "height", "initialContent", "dispatchEvent", "handleSave", "columnIndex", "index", "setColumnWidth", "stopPropagation", "columns", "scrollToColumn", "presentation", "updateIfWithinBounds", "updateCells", "className", "React", "ref", "forwardedRef", "id", "TableValueEditor", "schema", "onFocus", "onSave", "onCreate", "rowDefault", "limitRows", "limitColumns", "overscroll", "onAxisResize", "handleAxisResize", "onClick", "handleGridClick", "onKeyDownCapture", "onWheelCapture", "onNewColumn", "TableContent", "Atom", "RegistryContext", "React", "useContext", "useEffect", "useMemo", "composable", "composableProps", "Menu", "createGapSeparator", "createMenuAction", "createMenuItemGroup", "useMenuActions", "translationKey", "createTableToolbarActions", "stateAtom", "onAdd", "onSave", "onExport", "customActions", "make", "get", "nodes", "edges", "add", "type", "icon", "label", "ns", "testId", "push", "source", "target", "id", "relation", "state", "save", "iconOnly", "hidden", "viewDirty", "exportGroup", "variant", "formats", "format", "action", "gap", "custom", "TableToolbar", "attendableId", "props", "forwardedRef", "registry", "set", "actionsCreator", "menuActions", "Root", "Toolbar", "ref", "displayName", "emptyColumnMeta", "Atom", "make", "grid", "TableContextProvider", "useTableContext", "createContext", "TABLE_ROOT_NAME", "TableRoot", "forwardRef", "children", "forwardedRef", "controllerRef", "useRef", "useImperativeHandle", "update", "cell", "current", "handleInsertRowResult", "result", "React", "displayName", "Table", "Root", "Toolbar", "TableToolbar", "Content", "TableContent", "RegistryContext", "React", "useCallback", "useContext", "useEffect", "useMemo", "useRef", "useState", "useDefaultValue", "mx", "DynamicTable", "classNames", "type", "typeProp", "name", "rows", "properties", "jsonSchema", "jsonSchemaProp", "rowActions", "onRowClick", "onRowAction", "props", "registry", "useContext", "RegistryContext", "dynamicTable", "setDynamicTable", "useState", "useMemo", "getBaseSchema", "typename", "useEffect", "makeDynamicTable", "tableRef", "useRef", "handleCellUpdate", "useCallback", "cell", "current", "update", "handleRowOrderChange", "features", "useDefaultValue", "selection", "enabled", "dataEditable", "model", "useTableModel", "object", "projection", "onCellUpdate", "onRowOrderChange", "presentation", "TablePresentation", "React", "div", "className", "mx", "Table", "Root", "ref", "Content", "ignoreAttention"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"src/types/Table.ts":{"bytes":8724,"imports":[{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Annotation","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":422,"imports":[{"path":"src/types/Table.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/util/dynamic-table.ts":{"bytes":11737,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/util/query-ast.ts":{"bytes":1827,"imports":[],"format":"esm"},"src/util/signals.ts":{"bytes":782,"imports":[],"format":"esm"},"src/util/sort.ts":{"bytes":8681,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/util/table-buttons.ts":{"bytes":14443,"imports":[],"format":"esm"},"src/util/table-controls.ts":{"bytes":9056,"imports":[{"path":"@dxos/lit-grid","kind":"import-statement","external":true}],"format":"esm"},"src/util/schema.ts":{"bytes":3972,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true}],"format":"esm"},"src/util/index.ts":{"bytes":934,"imports":[{"path":"src/util/dynamic-table.ts","kind":"import-statement","original":"./dynamic-table"},{"path":"src/util/query-ast.ts","kind":"import-statement","original":"./query-ast"},{"path":"src/util/signals.ts","kind":"import-statement","original":"./signals"},{"path":"src/util/sort.ts","kind":"import-statement","original":"./sort"},{"path":"src/util/table-buttons.ts","kind":"import-statement","original":"./table-buttons"},{"path":"src/util/table-controls.ts","kind":"import-statement","original":"./table-controls"},{"path":"src/util/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/util/tag.ts":{"bytes":2762,"imports":[],"format":"esm"},"src/model/selection-model.ts":{"bytes":15505,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-view-state.ts":{"bytes":2836,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-model.ts":{"bytes":105810,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/JsonSchema","kind":"import-statement","external":true},{"path":"@dxos/echo/Obj","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"},{"path":"src/util/sort.ts","kind":"import-statement","original":"../util/sort"},{"path":"src/util/tag.ts","kind":"import-statement","original":"../util/tag"},{"path":"src/model/selection-model.ts","kind":"import-statement","original":"./selection-model"},{"path":"src/model/table-view-state.ts","kind":"import-statement","original":"./table-view-state"}],"format":"esm"},"src/model/modal-controller.ts":{"bytes":7634,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-presentation.ts":{"bytes":61529,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"src/model/index.ts":{"bytes":793,"imports":[{"path":"src/model/table-model.ts","kind":"import-statement","original":"./table-model"},{"path":"src/model/table-view-state.ts","kind":"import-statement","original":"./table-view-state"},{"path":"src/model/modal-controller.ts","kind":"import-statement","original":"./modal-controller"},{"path":"src/model/table-presentation.ts","kind":"import-statement","original":"./table-presentation"}],"format":"esm"},"src/components/TableCellEditor/CellValidationMessage.tsx":{"bytes":3908,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true}],"format":"esm"},"src/components/TableCellEditor/FormCellEditor.tsx":{"bytes":22626,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"}],"format":"esm"},"src/components/TableCellEditor/TableCellEditor.tsx":{"bytes":27211,"imports":[{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"src/components/TableCellEditor/CellValidationMessage.tsx","kind":"import-statement","original":"./CellValidationMessage"},{"path":"src/components/TableCellEditor/FormCellEditor.tsx","kind":"import-statement","original":"./FormCellEditor"}],"format":"esm"},"src/components/TableCellEditor/index.ts":{"bytes":471,"imports":[{"path":"src/components/TableCellEditor/TableCellEditor.tsx","kind":"import-statement","original":"./TableCellEditor"}],"format":"esm"},"src/components/Table/ColumnActionsMenu.tsx":{"bytes":8451,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/ColumnSettings.tsx":{"bytes":8496,"imports":[{"path":"@effect-atom/atom-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-form","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/RowActionsMenu.tsx":{"bytes":6866,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/TableContent.tsx":{"bytes":49687,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/String","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-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"src/components/TableCellEditor/index.ts","kind":"import-statement","original":"../TableCellEditor"},{"path":"src/components/Table/ColumnActionsMenu.tsx","kind":"import-statement","original":"./ColumnActionsMenu"},{"path":"src/components/Table/ColumnSettings.tsx","kind":"import-statement","original":"./ColumnSettings"},{"path":"src/components/Table/RowActionsMenu.tsx","kind":"import-statement","original":"./RowActionsMenu"},{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/components/Table/TableToolbar.tsx":{"bytes":16056,"imports":[{"path":"@effect-atom/atom-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-menu","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/Table.tsx":{"bytes":6053,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/components/Table/TableContent.tsx","kind":"import-statement","original":"./TableContent"},{"path":"src/components/Table/TableToolbar.tsx","kind":"import-statement","original":"./TableToolbar"}],"format":"esm"},"src/hooks/useAddRow.ts":{"bytes":2809,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useProjectionModel.ts":{"bytes":4251,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useTableModel.ts":{"bytes":9209,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"src/hooks/index.ts":{"bytes":596,"imports":[{"path":"src/hooks/useAddRow.ts","kind":"import-statement","original":"./useAddRow"},{"path":"src/hooks/useProjectionModel.ts","kind":"import-statement","original":"./useProjectionModel"},{"path":"src/hooks/useTableModel.ts","kind":"import-statement","original":"./useTableModel"}],"format":"esm"},"src/components/Table/DynamicTable.tsx":{"bytes":11080,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/components/Table/index.ts":{"bytes":469,"imports":[{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"},{"path":"src/components/Table/DynamicTable.tsx","kind":"import-statement","original":"./DynamicTable"}],"format":"esm"},"src/components/index.ts":{"bytes":369,"imports":[{"path":"src/components/Table/index.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/index.ts":{"bytes":620,"imports":[{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"./model"},{"path":"src/util/index.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"src/testing/useTestTableModel.ts":{"bytes":13059,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/testing","kind":"import-statement","external":true},{"path":"@dxos/react-ui-search","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/testing/index.ts":{"bytes":401,"imports":[{"path":"src/testing/useTestTableModel.ts","kind":"import-statement","original":"./useTestTableModel"}],"format":"esm"},"src/translations.ts":{"bytes":4169,"imports":[],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92019},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-E6V274ZW.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-RPEWNOZZ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/String","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-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-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-form","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-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-menu","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["BUTTON_IDENTIFIERS","CONTROL_IDENTIFIERS","CheckboxStory","DynamicTable","FieldSortSchema","ModalController","SwitchStory","Table","TableModel","TablePresentation","cellClassesForRowSelection","compareValues","createDirectChangeCallback","createEchoChangeCallback","extractOrder","getBaseSchema","getSortValue","makeDynamicTable","narrowSchema","tableButtons","tableControls","tableSortAspect","touch","useAddRow","useProjectionModel","useTableContext","useTableModel"],"entryPoint":"src/index.ts","inputs":{"src/components/Table/Table.tsx":{"bytesInOutput":914},"src/components/Table/TableContent.tsx":{"bytesInOutput":11391},"src/util/dynamic-table.ts":{"bytesInOutput":2332},"src/util/signals.ts":{"bytesInOutput":30},"src/util/schema.ts":{"bytesInOutput":498},"src/model/modal-controller.ts":{"bytesInOutput":1549},"src/components/TableCellEditor/TableCellEditor.tsx":{"bytesInOutput":6729},"src/components/TableCellEditor/CellValidationMessage.tsx":{"bytesInOutput":893},"src/components/TableCellEditor/FormCellEditor.tsx":{"bytesInOutput":5539},"src/components/Table/ColumnActionsMenu.tsx":{"bytesInOutput":2240},"src/components/Table/ColumnSettings.tsx":{"bytesInOutput":2240},"src/components/Table/RowActionsMenu.tsx":{"bytesInOutput":1773},"src/components/Table/TableToolbar.tsx":{"bytesInOutput":3857},"src/components/Table/DynamicTable.tsx":{"bytesInOutput":2208},"src/index.ts":{"bytesInOutput":0}},"bytes":44035},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7259},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-E6V274ZW.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-RPEWNOZZ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/testing","kind":"import-statement","external":true},{"path":"@dxos/react-ui-search","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["useTestTableModel"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/useTestTableModel.ts":{"bytesInOutput":2786},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":3184},"dist/lib/node-esm/chunk-E6V274ZW.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":115479},"dist/lib/node-esm/chunk-E6V274ZW.mjs":{"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/lit-grid","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/JsonSchema","kind":"import-statement","external":true},{"path":"@dxos/echo/Obj","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true}],"exports":["BUTTON_IDENTIFIERS","CONTROL_IDENTIFIERS","CheckboxStory","FieldSortSchema","SwitchStory","TableModel","TablePresentation","cellClassesForRowSelection","compareValues","createDirectChangeCallback","createEchoChangeCallback","extractOrder","getSortValue","tableButtons","tableControls","tableSortAspect","useAddRow","useProjectionModel","useTableModel"],"inputs":{"src/util/query-ast.ts":{"bytesInOutput":282},"src/util/sort.ts":{"bytesInOutput":1644},"src/util/table-buttons.ts":{"bytesInOutput":3497},"src/util/table-controls.ts":{"bytesInOutput":2023},"src/model/table-view-state.ts":{"bytesInOutput":406},"src/model/table-model.ts":{"bytesInOutput":24423},"src/util/tag.ts":{"bytesInOutput":334},"src/model/selection-model.ts":{"bytesInOutput":3552},"src/model/table-presentation.ts":{"bytesInOutput":14976},"src/hooks/useAddRow.ts":{"bytesInOutput":374},"src/hooks/useProjectionModel.ts":{"bytesInOutput":874},"src/hooks/useTableModel.ts":{"bytesInOutput":1967}},"bytes":55255},"dist/lib/node-esm/translations.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1939},"dist/lib/node-esm/translations.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.mjs","kind":"import-statement"}],"exports":["translationKey","translations"],"entryPoint":"src/translations.ts","inputs":{"src/translations.ts":{"bytesInOutput":1233}},"bytes":1467},"dist/lib/node-esm/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/types/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-RPEWNOZZ.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-HSLMI22Q.mjs","kind":"import-statement"}],"exports":["Table"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":253},"dist/lib/node-esm/chunk-RPEWNOZZ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4494},"dist/lib/node-esm/chunk-RPEWNOZZ.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HSLMI22Q.mjs","kind":"import-statement"},{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Annotation","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["Table_exports"],"inputs":{"src/types/Table.ts":{"bytesInOutput":1760},"src/types/index.ts":{"bytesInOutput":0}},"bytes":1999},"dist/lib/node-esm/chunk-HSLMI22Q.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/chunk-HSLMI22Q.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":327}}}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
TablePresentation,
|
|
4
|
-
useAddRow,
|
|
5
|
-
useProjectionModel,
|
|
6
|
-
useTableModel
|
|
7
|
-
} from "../chunk-E6V274ZW.mjs";
|
|
8
|
-
import {
|
|
9
|
-
Table_exports
|
|
10
|
-
} from "../chunk-RPEWNOZZ.mjs";
|
|
11
|
-
import "../chunk-HSLMI22Q.mjs";
|
|
12
|
-
|
|
13
|
-
// src/testing/useTestTableModel.ts
|
|
14
|
-
import { RegistryContext } from "@effect-atom/atom-react";
|
|
15
|
-
import { useCallback, useContext, useMemo, useRef } from "react";
|
|
16
|
-
import { Filter, Type } from "@dxos/echo";
|
|
17
|
-
import { random } from "@dxos/random";
|
|
18
|
-
import { useQuery, useType } from "@dxos/react-client/echo";
|
|
19
|
-
import { useClientStory } from "@dxos/react-client/testing";
|
|
20
|
-
import { useGlobalFilteredObjects } from "@dxos/react-ui-search";
|
|
21
|
-
import { getTypeURIFromQuery } from "@dxos/schema";
|
|
22
|
-
random.seed(0);
|
|
23
|
-
var useTestTableModel = () => {
|
|
24
|
-
const registry = useContext(RegistryContext);
|
|
25
|
-
const { space } = useClientStory();
|
|
26
|
-
const db = space?.db;
|
|
27
|
-
const tables = useQuery(space?.db, Filter.type(Table_exports.Table));
|
|
28
|
-
const table = tables.at(0);
|
|
29
|
-
const typeUri = table?.view.target?.query ? getTypeURIFromQuery(table.view.target.query.ast) : void 0;
|
|
30
|
-
const schema = useType(space?.db, typeUri);
|
|
31
|
-
const projection = useProjectionModel(schema, table, registry);
|
|
32
|
-
const features = useMemo(() => ({
|
|
33
|
-
selection: {
|
|
34
|
-
enabled: true,
|
|
35
|
-
mode: "multiple"
|
|
36
|
-
},
|
|
37
|
-
dataEditable: true,
|
|
38
|
-
schemaEditable: schema != null && Type.getDatabase(schema) != null
|
|
39
|
-
}), [
|
|
40
|
-
schema
|
|
41
|
-
]);
|
|
42
|
-
const objects = useQuery(db, schema ? Filter.type(schema) : Filter.nothing());
|
|
43
|
-
const filteredObjects = useGlobalFilteredObjects(objects);
|
|
44
|
-
const tableRef = useRef(null);
|
|
45
|
-
const handleCellUpdate = useCallback((cell) => {
|
|
46
|
-
tableRef.current?.update?.(cell);
|
|
47
|
-
}, []);
|
|
48
|
-
const handleRowOrderChange = useCallback(() => {
|
|
49
|
-
tableRef.current?.update?.();
|
|
50
|
-
}, []);
|
|
51
|
-
const addRow = useAddRow({
|
|
52
|
-
db,
|
|
53
|
-
schema
|
|
54
|
-
});
|
|
55
|
-
const handleDeleteRows = useCallback((_, objects2) => {
|
|
56
|
-
for (const object of objects2) {
|
|
57
|
-
db?.remove(object);
|
|
58
|
-
}
|
|
59
|
-
}, [
|
|
60
|
-
db
|
|
61
|
-
]);
|
|
62
|
-
const handleDeleteColumn = useCallback((fieldId) => {
|
|
63
|
-
if (projection) {
|
|
64
|
-
projection.deleteFieldProjection(fieldId);
|
|
65
|
-
}
|
|
66
|
-
}, [
|
|
67
|
-
projection
|
|
68
|
-
]);
|
|
69
|
-
const model = useTableModel({
|
|
70
|
-
object: table,
|
|
71
|
-
projection,
|
|
72
|
-
features,
|
|
73
|
-
rows: filteredObjects,
|
|
74
|
-
onInsertRow: addRow,
|
|
75
|
-
onDeleteRows: handleDeleteRows,
|
|
76
|
-
onColumnDelete: handleDeleteColumn,
|
|
77
|
-
onCellUpdate: handleCellUpdate,
|
|
78
|
-
onRowOrderChange: handleRowOrderChange
|
|
79
|
-
});
|
|
80
|
-
const handleInsertRow = useCallback(() => {
|
|
81
|
-
const insertResult = model?.insertRow();
|
|
82
|
-
tableRef.current?.handleInsertRowResult?.(insertResult);
|
|
83
|
-
}, [
|
|
84
|
-
model
|
|
85
|
-
]);
|
|
86
|
-
const handleSaveView = useCallback(() => {
|
|
87
|
-
model?.saveView();
|
|
88
|
-
}, [
|
|
89
|
-
model
|
|
90
|
-
]);
|
|
91
|
-
const presentation = useMemo(() => {
|
|
92
|
-
if (model) {
|
|
93
|
-
return new TablePresentation(registry, model);
|
|
94
|
-
}
|
|
95
|
-
}, [
|
|
96
|
-
registry,
|
|
97
|
-
model
|
|
98
|
-
]);
|
|
99
|
-
return {
|
|
100
|
-
schema,
|
|
101
|
-
table,
|
|
102
|
-
projection,
|
|
103
|
-
tableRef,
|
|
104
|
-
model,
|
|
105
|
-
presentation,
|
|
106
|
-
db,
|
|
107
|
-
handleInsertRow,
|
|
108
|
-
handleSaveView,
|
|
109
|
-
handleDeleteRows,
|
|
110
|
-
handleDeleteColumn
|
|
111
|
-
};
|
|
112
|
-
};
|
|
113
|
-
export {
|
|
114
|
-
useTestTableModel
|
|
115
|
-
};
|
|
116
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/testing/useTestTableModel.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport { type RefObject, useCallback, useContext, useMemo, useRef } from 'react';\n\nimport { type Database, Filter, Type } from '@dxos/echo';\nimport { random } from '@dxos/random';\nimport { useQuery, useType } from '@dxos/react-client/echo';\nimport { useClientStory } from '@dxos/react-client/testing';\nimport { useGlobalFilteredObjects } from '@dxos/react-ui-search';\nimport { type ProjectionModel, getTypeURIFromQuery } from '@dxos/schema';\n\nimport { type TableController } from '../components';\nimport { useAddRow, useProjectionModel, useTableModel } from '../hooks';\nimport { type TableModel, TablePresentation } from '../model';\nimport { Table } from '../types';\n\nrandom.seed(0); // NOTE(ZaymonFC): Required for smoke tests.\n\nexport type TestTableModel<T extends Type.AnyObj = Type.AnyObj> = {\n schema: T | undefined;\n table: Table.Table | undefined;\n projection: ProjectionModel | undefined;\n tableRef: RefObject<TableController | null>;\n model: TableModel | undefined;\n presentation: TablePresentation | undefined;\n db: Database.Database | undefined;\n handleInsertRow: () => void;\n handleSaveView: () => void;\n handleDeleteRows: (rowIndex: number, objects: any[]) => void;\n handleDeleteColumn: (fieldId: string) => void;\n};\n\n/**\n * Custom hook to create and manage a test table model for storybook demonstrations.\n * Provides table data, schema, and handlers for table operations.\n */\nexport const useTestTableModel = <T extends Type.AnyObj = Type.AnyObj>(): TestTableModel<T> => {\n const registry = useContext(RegistryContext);\n const { space } = useClientStory();\n const db = space?.db;\n\n const tables = useQuery(space?.db, Filter.type(Table.Table));\n const table = tables.at(0);\n const typeUri = table?.view.target?.query ? getTypeURIFromQuery(table.view.target.query.ast) : undefined;\n const schema = useType<T>(space?.db, typeUri);\n const projection = useProjectionModel(schema, table, registry);\n\n const features = useMemo(\n () => ({\n selection: { enabled: true, mode: 'multiple' as const },\n dataEditable: true,\n schemaEditable: schema != null && Type.getDatabase(schema) != null,\n }),\n [schema],\n );\n\n const objects = useQuery(db, schema ? Filter.type(schema) : Filter.nothing());\n const filteredObjects = useGlobalFilteredObjects(objects);\n\n const tableRef = useRef<TableController>(null);\n const handleCellUpdate = useCallback((cell: any) => {\n tableRef.current?.update?.(cell);\n }, []);\n\n const handleRowOrderChange = useCallback(() => {\n tableRef.current?.update?.();\n }, []);\n\n const addRow = useAddRow({ db, schema });\n\n const handleDeleteRows = useCallback(\n (_: number, objects: any[]) => {\n for (const object of objects) {\n db?.remove(object);\n }\n },\n [db],\n );\n\n const handleDeleteColumn = useCallback(\n (fieldId: string) => {\n if (projection) {\n projection.deleteFieldProjection(fieldId);\n }\n },\n [projection],\n );\n\n const model = useTableModel({\n object: table,\n projection,\n features,\n rows: filteredObjects,\n onInsertRow: addRow,\n onDeleteRows: handleDeleteRows,\n onColumnDelete: handleDeleteColumn,\n onCellUpdate: handleCellUpdate,\n onRowOrderChange: handleRowOrderChange,\n });\n\n const handleInsertRow = useCallback(() => {\n const insertResult = model?.insertRow();\n tableRef.current?.handleInsertRowResult?.(insertResult);\n }, [model]);\n\n const handleSaveView = useCallback(() => {\n model?.saveView();\n }, [model]);\n\n const presentation = useMemo(() => {\n if (model) {\n return new TablePresentation(registry, model);\n }\n }, [registry, model]);\n\n return {\n schema,\n table,\n projection,\n tableRef,\n model,\n presentation,\n db,\n handleInsertRow,\n handleSaveView,\n handleDeleteRows,\n handleDeleteColumn,\n };\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;AAIA,SAASA,uBAAuB;AAChC,SAAyBC,aAAaC,YAAYC,SAASC,cAAc;AAEzE,SAAwBC,QAAQC,YAAY;AAC5C,SAASC,cAAc;AACvB,SAASC,UAAUC,eAAe;AAClC,SAASC,sBAAsB;AAC/B,SAASC,gCAAgC;AACzC,SAA+BC,2BAA2B;AAO1DC,OAAOC,KAAK,CAAA;AAoBL,IAAMC,oBAAoB,MAAA;AAC/B,QAAMC,WAAWC,WAAWC,eAAAA;AAC5B,QAAM,EAAEC,MAAK,IAAKC,eAAAA;AAClB,QAAMC,KAAKF,OAAOE;AAElB,QAAMC,SAASC,SAASJ,OAAOE,IAAIG,OAAOC,KAAKC,cAAMA,KAAK,CAAA;AAC1D,QAAMC,QAAQL,OAAOM,GAAG,CAAA;AACxB,QAAMC,UAAUF,OAAOG,KAAKC,QAAQC,QAAQC,oBAAoBN,MAAMG,KAAKC,OAAOC,MAAME,GAAG,IAAIC;AAC/F,QAAMC,SAASC,QAAWlB,OAAOE,IAAIQ,OAAAA;AACrC,QAAMS,aAAaC,mBAAmBH,QAAQT,OAAOX,QAAAA;AAErD,QAAMwB,WAAWC,QACf,OAAO;IACLC,WAAW;MAAEC,SAAS;MAAMC,MAAM;IAAoB;IACtDC,cAAc;IACdC,gBAAgBV,UAAU,QAAQW,KAAKC,YAAYZ,MAAAA,KAAW;EAChE,IACA;IAACA;GAAO;AAGV,QAAMa,UAAU1B,SAASF,IAAIe,SAASZ,OAAOC,KAAKW,MAAAA,IAAUZ,OAAO0B,QAAO,CAAA;AAC1E,QAAMC,kBAAkBC,yBAAyBH,OAAAA;AAEjD,QAAMI,WAAWC,OAAwB,IAAA;AACzC,QAAMC,mBAAmBC,YAAY,CAACC,SAAAA;AACpCJ,aAASK,SAASC,SAASF,IAAAA;EAC7B,GAAG,CAAA,CAAE;AAEL,QAAMG,uBAAuBJ,YAAY,MAAA;AACvCH,aAASK,SAASC,SAAAA;EACpB,GAAG,CAAA,CAAE;AAEL,QAAME,SAASC,UAAU;IAAEzC;IAAIe;EAAO,CAAA;AAEtC,QAAM2B,mBAAmBP,YACvB,CAACQ,GAAWf,aAAAA;AACV,eAAWgB,UAAUhB,UAAS;AAC5B5B,UAAI6C,OAAOD,MAAAA;IACb;EACF,GACA;IAAC5C;GAAG;AAGN,QAAM8C,qBAAqBX,YACzB,CAACY,YAAAA;AACC,QAAI9B,YAAY;AACdA,iBAAW+B,sBAAsBD,OAAAA;IACnC;EACF,GACA;IAAC9B;GAAW;AAGd,QAAMgC,QAAQC,cAAc;IAC1BN,QAAQtC;IACRW;IACAE;IACAgC,MAAMrB;IACNsB,aAAaZ;IACba,cAAcX;IACdY,gBAAgBR;IAChBS,cAAcrB;IACdsB,kBAAkBjB;EACpB,CAAA;AAEA,QAAMkB,kBAAkBtB,YAAY,MAAA;AAClC,UAAMuB,eAAeT,OAAOU,UAAAA;AAC5B3B,aAASK,SAASuB,wBAAwBF,YAAAA;EAC5C,GAAG;IAACT;GAAM;AAEV,QAAMY,iBAAiB1B,YAAY,MAAA;AACjCc,WAAOa,SAAAA;EACT,GAAG;IAACb;GAAM;AAEV,QAAMc,eAAe3C,QAAQ,MAAA;AAC3B,QAAI6B,OAAO;AACT,aAAO,IAAIe,kBAAkBrE,UAAUsD,KAAAA;IACzC;EACF,GAAG;IAACtD;IAAUsD;GAAM;AAEpB,SAAO;IACLlC;IACAT;IACAW;IACAe;IACAiB;IACAc;IACA/D;IACAyD;IACAI;IACAnB;IACAI;EACF;AACF;",
|
|
6
|
-
"names": ["RegistryContext", "useCallback", "useContext", "useMemo", "useRef", "Filter", "Type", "random", "useQuery", "useType", "useClientStory", "useGlobalFilteredObjects", "getTypeURIFromQuery", "random", "seed", "useTestTableModel", "registry", "useContext", "RegistryContext", "space", "useClientStory", "db", "tables", "useQuery", "Filter", "type", "Table", "table", "at", "typeUri", "view", "target", "query", "getTypeURIFromQuery", "ast", "undefined", "schema", "useType", "projection", "useProjectionModel", "features", "useMemo", "selection", "enabled", "mode", "dataEditable", "schemaEditable", "Type", "getDatabase", "objects", "nothing", "filteredObjects", "useGlobalFilteredObjects", "tableRef", "useRef", "handleCellUpdate", "useCallback", "cell", "current", "update", "handleRowOrderChange", "addRow", "useAddRow", "handleDeleteRows", "_", "object", "remove", "handleDeleteColumn", "fieldId", "deleteFieldProjection", "model", "useTableModel", "rows", "onInsertRow", "onDeleteRows", "onColumnDelete", "onCellUpdate", "onRowOrderChange", "handleInsertRow", "insertResult", "insertRow", "handleInsertRowResult", "handleSaveView", "saveView", "presentation", "TablePresentation"]
|
|
7
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import "./chunk-HSLMI22Q.mjs";
|
|
3
|
-
|
|
4
|
-
// src/translations.ts
|
|
5
|
-
var translationKey = "@dxos/react-ui-table";
|
|
6
|
-
var translations = [
|
|
7
|
-
{
|
|
8
|
-
"en-US": {
|
|
9
|
-
[translationKey]: {
|
|
10
|
-
"object.placeholder": "New table",
|
|
11
|
-
"create-object.label": "Create table",
|
|
12
|
-
"table-name.placeholder": "Table name",
|
|
13
|
-
"table-schema.label": "Type",
|
|
14
|
-
"continue.label": "Continue",
|
|
15
|
-
"create-stack-section.label": "Create table",
|
|
16
|
-
"add-row.label": "Add row",
|
|
17
|
-
"column-action-sort-descending.menu": "Sort Descending",
|
|
18
|
-
"column-action-sort-ascending.menu": "Sort Ascending",
|
|
19
|
-
"column-action-clear-sorting.menu": "Clear Sorting",
|
|
20
|
-
"column-action-settings.menu": "Column Settings",
|
|
21
|
-
"column-action-delete.menu": "Delete Column",
|
|
22
|
-
"delete-row.label": "Delete row",
|
|
23
|
-
"bulk-delete-row.label": "Delete selected rows",
|
|
24
|
-
"column-deleted.label": "Column deleted",
|
|
25
|
-
"new-column-button.label": "Create column",
|
|
26
|
-
"create-new-object.label": "Create new object \u201C{{text}}\u201D",
|
|
27
|
-
"save-view.label": "Save changes to view",
|
|
28
|
-
"export-rows.menu": "Export",
|
|
29
|
-
"export-rows-csv.menu": "CSV",
|
|
30
|
-
"export-rows-json.menu": "JSON (.dx.json)",
|
|
31
|
-
"export-rows-xml.menu": "XML"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
];
|
|
36
|
-
export {
|
|
37
|
-
translationKey,
|
|
38
|
-
translations
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=translations.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nexport const translationKey = '@dxos/react-ui-table';\n\nexport const translations = [\n {\n 'en-US': {\n [translationKey]: {\n 'object.placeholder': 'New table',\n 'create-object.label': 'Create table',\n 'table-name.placeholder': 'Table name',\n 'table-schema.label': 'Type',\n 'continue.label': 'Continue',\n 'create-stack-section.label': 'Create table',\n 'add-row.label': 'Add row',\n 'column-action-sort-descending.menu': 'Sort Descending',\n 'column-action-sort-ascending.menu': 'Sort Ascending',\n 'column-action-clear-sorting.menu': 'Clear Sorting',\n 'column-action-settings.menu': 'Column Settings',\n 'column-action-delete.menu': 'Delete Column',\n 'delete-row.label': 'Delete row',\n 'bulk-delete-row.label': 'Delete selected rows',\n 'column-deleted.label': 'Column deleted',\n 'new-column-button.label': 'Create column',\n 'create-new-object.label': 'Create new object “{{text}}”',\n 'save-view.label': 'Save changes to view',\n 'export-rows.menu': 'Export',\n 'export-rows-csv.menu': 'CSV',\n 'export-rows-json.menu': 'JSON (.dx.json)',\n 'export-rows-xml.menu': 'XML',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
-
"mappings": ";;;;AAMO,IAAMA,iBAAiB;AAEvB,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,cAAAA,GAAiB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,0BAA0B;QAC1B,sBAAsB;QACtB,kBAAkB;QAClB,8BAA8B;QAC9B,iBAAiB;QACjB,sCAAsC;QACtC,qCAAqC;QACrC,oCAAoC;QACpC,+BAA+B;QAC/B,6BAA6B;QAC7B,oBAAoB;QACpB,yBAAyB;QACzB,wBAAwB;QACxB,2BAA2B;QAC3B,2BAA2B;QAC3B,mBAAmB;QACnB,oBAAoB;QACpB,wBAAwB;QACxB,yBAAyB;QACzB,wBAAwB;MAC1B;IACF;EACF;;",
|
|
6
|
-
"names": ["translationKey", "translations"]
|
|
7
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
Table_exports
|
|
4
|
-
} from "../chunk-RPEWNOZZ.mjs";
|
|
5
|
-
import "../chunk-HSLMI22Q.mjs";
|
|
6
|
-
export {
|
|
7
|
-
Table_exports as Table
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=index.mjs.map
|