@sanity/table
3.1.123.1.13
dist/index.js.map~
dist/index.js.mapModified+1−1
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["RemoveIcon","Box","Button","TextInput","ChangeEvent","TableRow","TableInputProps","rows","updateCell","e","HTMLInputElement","rowIndex","cellIndex","removeRow","index","removeColumn","TableInput","props","$","_c","t0","Symbol","for","width","t1","t2","row","_key","cells","map","cell","textAlign","t3","t4","_","i","t5","AddIcon","ControlsIcon","WarningOutlineIcon","Box","Button","Card","Dialog","Inline","Menu","MenuButton","MenuDivider","MenuItem","Placement","TextInput","ChangeEventHandler","useState","TableMenuProps","id","addColumns","count","addColumnAt","index","addRows","addRowAt","remove","placement","TableMenu","props","$","_c","handleRemove","dialog","setDialog","setCount","t0","Symbol","for","e","currentTarget","value","updateCount","t1","type","callback","c","t2","t3","c_0","t4","index_0","addColumnsAt","parsedCount","t5","Number","parseInt","isInteger","isValidCount","t6","onConfirm","t7","textAlign","undefined","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","AddIcon","Box","Button","Card","Dialog","Flex","Inline","Text","uuid","ChangeEvent","useState","ObjectInputProps","set","unset","TableInput","TableMenu","deepClone","data","T","globalThis","structuredClone","JSON","parse","stringify","TableValue","_type","rows","TableRow","TableProps","_key","cells","TableComponent","props","$","_c","id","rowType","t0","value","onChange","undefined","dialog","setDialog","t1","v","updateValue","t2","resetValue","t3","newValue","createTable","confirmRemoveTable","type","callback","removeTable","t4","t5","count","newRows","columnCount","length","i","push","Array","fill","addRows","t6","index","newRows_0","columnCount_0","splice","addRowAt","index_0","newRows_1","removeRow","t7","index_1","confirmRemoveRow","addColumnAt","addColumns","confirmRemoveColumn","index_2","removeColumn","t8","count_0","newRows_2","forEach","row","j","t9","index_3","newRows_3","row_0","index_4","newRows_4","row_1","e","rowIndex","cellIndex","newRows_5","row_2","currentTarget","updateCell","textAlign","t10","t11","t12","t13","t14","createTableComponent","Table","TableIcon","$","_c","t0","Symbol","for","Box","Card","Grid","Inline","Label","Text","PreviewProps","TableRow","TableIcon","TablePreviewProps","rows","Table","t0","$","_c","numCols","cells","length","t1","map","_temp","t2","TablePreview","props","schemaType","title","undefined","previewTitle","Symbol","for","t3","t4","t5","row","cell","i","_key","outline","definePlugin","defineType","createTableComponent","TableComponent","TablePreview","TableProps","TableRow","TableValue","TableConfig","rowType","table","config","tableRowSchema","title","name","type","fields","of","tableSchema","components","input","preview","select","rows","prepare","schema","types"],"sources":["../src/components/TableInput.tsx","../src/components/TableMenu.tsx","../src/components/TableComponent.tsx","../src/components/TableIcon.tsx","../src/components/TablePreview.tsx","../src/index.ts"],"sourcesContent":["import {RemoveIcon} from '@sanity/icons/Remove'\nimport {Box, Button, TextInput} from '@sanity/ui'\nimport type {ChangeEvent} from 'react'\n\nimport type {TableRow} from './TableComponent'\n\ninterface TableInputProps {\n rows: TableRow[]\n updateCell: (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => void\n removeRow: (index: number) => void\n removeColumn: (index: number) => void\n}\n\nexport const TableInput = (props: TableInputProps) => {\n const {rows, updateCell, removeRow, removeColumn} = props\n\n return (\n <table style={{width: '100%'}}>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={row._key}>\n {row.cells.map((cell, cellIndex) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={`${row._key}-${cellIndex}`}>\n <TextInput\n fontSize={1}\n padding={3}\n value={cell}\n onChange={(e) => updateCell(e, rowIndex, cellIndex)}\n />\n </td>\n ))}\n <td key={`${row._key}-remove`}>\n <Box marginLeft={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeRow(rowIndex)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n </tr>\n ))}\n <tr>\n {(rows[0]?.cells || []).map((_, i) => (\n // Cells are plain strings; the column position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={i}>\n <Box marginTop={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeColumn(i)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n ))}\n </tr>\n </tbody>\n </table>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {ControlsIcon} from '@sanity/icons/Controls'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {\n Box,\n Button,\n Card,\n Dialog,\n Inline,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n type Placement,\n TextInput,\n} from '@sanity/ui'\nimport {type ChangeEventHandler, useState} from 'react'\n\ninterface TableMenuProps {\n id: string\n addColumns: (count: number) => void\n addColumnAt: (index: number) => void\n addRows: (count: number) => void\n addRowAt: (index: number) => void\n remove: () => void\n placement: Placement\n}\n\nexport const TableMenu = (props: TableMenuProps): React.JSX.Element => {\n const {id, remove: handleRemove} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: (count: number) => void\n } | null>(null)\n\n // Keep `count` always a string so the TextInput is controlled for the component lifetime.\n const [count, setCount] = useState<string>('')\n\n const updateCount: ChangeEventHandler<HTMLInputElement> = (e) => {\n setCount(e.currentTarget.value)\n }\n\n const addRows = () => {\n setDialog({type: 'rows', callback: (c) => props.addRows(c)})\n setCount('') // ensure input starts controlled when dialog opens\n }\n\n const addRowAt = () => {\n setDialog({type: 'rows', callback: (index) => props.addRowAt(index)})\n setCount('')\n }\n\n const addColumns = () => {\n setDialog({\n type: 'columns',\n callback: (c) => props.addColumns(c),\n })\n setCount('')\n }\n\n const addColumnsAt = () => {\n setDialog({type: 'columns', callback: (index) => props.addColumnAt(index)})\n setCount('')\n }\n\n // The dialog is reused for \"add N rows/columns\" (a count) and \"add at index\"\n // (a position where 0 is valid), so allow 0 but reject NaN/negative/too-large.\n const parsedCount = Number.parseInt(count, 10)\n const isValidCount = Number.isInteger(parsedCount) && parsedCount >= 0 && parsedCount < 100\n\n const onConfirm = () => {\n if (!isValidCount) {\n return\n }\n setDialog(null)\n dialog?.callback(parsedCount)\n setCount('')\n }\n\n return (\n <>\n {dialog && (\n <Dialog\n header={`Add ${dialog.type}`}\n id={`${id}-dialog-add`}\n onClose={() => {\n setDialog(null)\n setCount('')\n }}\n zOffset={1000}\n >\n <Card padding={4}>\n <TextInput\n style={{textAlign: 'left'}}\n fontSize={2}\n padding={3}\n type=\"number\"\n value={count}\n onChange={updateCount}\n customValidity={\n count !== '' && !isValidCount ? 'Enter a whole number from 0 to 99' : undefined\n }\n />\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button\n text=\"Cancel\"\n mode=\"ghost\"\n onClick={() => {\n setDialog(null)\n setCount('')\n }}\n />\n <Button\n text=\"Confirm\"\n tone=\"critical\"\n onClick={onConfirm}\n disabled={!isValidCount}\n />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <MenuButton\n button={<Button icon={ControlsIcon} fontSize={1} padding={2} mode=\"ghost\" />}\n id={`${id}-menu-button`}\n menu={\n <Menu>\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row(s)\" onClick={addRows} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row At Index\" onClick={addRowAt} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Column(s)\" onClick={addColumns} />\n <MenuItem\n icon={AddIcon}\n fontSize={1}\n text=\"Add Column At Index\"\n onClick={addColumnsAt}\n />\n <MenuDivider />\n <MenuItem\n icon={WarningOutlineIcon}\n fontSize={1}\n text=\"Remove\"\n tone=\"critical\"\n onClick={handleRemove}\n />\n </Menu>\n }\n popover={{placement: props.placement}}\n />\n </>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Box, Button, Card, Dialog, Flex, Inline, Text} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type ChangeEvent, useState} from 'react'\nimport {type ObjectInputProps, set, unset} from 'sanity'\n\nimport {TableInput} from './TableInput'\nimport {TableMenu} from './TableMenu'\n\nconst deepClone: <T>(data: T) => T =\n globalThis.structuredClone ?? ((data) => JSON.parse(JSON.stringify(data)))\n\nexport interface TableValue {\n _type?: 'table'\n rows?: TableRow[]\n}\n\nexport type TableProps = ObjectInputProps<TableValue>\n\nexport type TableRow = {\n _type: string\n _key: string\n cells: string[]\n}\n\n// TODO refactor deepClone stuff to use proper patches\n// TODO use callback all the things\n\nexport const TableComponent = (props: TableProps & {rowType?: string}) => {\n const {id, rowType = 'tableRow', value, onChange} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: () => void\n } | null>(null)\n\n const updateValue = (v?: Omit<TableValue, '_type'>) => {\n return onChange(set(v))\n }\n\n const resetValue = () => {\n return onChange(unset())\n }\n\n const createTable = () => {\n const newValue: Omit<TableValue, '_type'> = {\n rows: [\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n ],\n }\n return updateValue({...value, ...newValue})\n }\n\n const confirmRemoveTable = () => {\n setDialog({type: 'table', callback: removeTable})\n }\n\n const removeTable = () => {\n resetValue()\n setDialog(null)\n }\n\n const addRows = (count = 1) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n for (let i = 0; i < count; i++) {\n // Add as many cells as we have columns\n newRows.push({\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n }\n return updateValue({...value, rows: newRows})\n }\n\n const addRowAt = (index = 0) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n\n newRows.splice(index, 0, {\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.splice(index, 1)\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const confirmRemoveRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n if (value.rows.length <= 1) return confirmRemoveTable()\n return setDialog({type: 'row', callback: () => removeRow(index)})\n }\n\n const confirmRemoveColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n if ((value.rows[0]?.cells.length ?? 0) <= 1) return confirmRemoveTable()\n return setDialog({type: 'column', callback: () => removeColumn(index)})\n }\n\n const addColumns = (count: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Add a cell to each of the rows\n newRows.forEach((row) => {\n for (let j = 0; j < count; j++) {\n row.cells.push('')\n }\n })\n return updateValue({...value, rows: newRows})\n }\n\n const addColumnAt = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n\n newRows.forEach((row) => {\n row.cells.splice(index, 0, '')\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.forEach((row) => {\n row.cells.splice(index, 1)\n })\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const updateCell = (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n const row = newRows[rowIndex]\n if (!row) {\n return\n }\n row.cells[cellIndex] = e.currentTarget.value\n return updateValue({...value, rows: newRows})\n }\n\n return (\n <div>\n {dialog && (\n <Dialog\n header={`Remove ${dialog.type}`}\n id={`${id}-dialog-remove`}\n onClose={() => setDialog(null)}\n zOffset={1000}\n >\n <Card padding={4}>\n <Text>Are you sure you want to remove this {dialog.type}?</Text>\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button text=\"Cancel\" mode=\"ghost\" onClick={() => setDialog(null)} />\n <Button text=\"Confirm\" tone=\"critical\" onClick={() => dialog.callback()} />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <Box>\n <Flex justify=\"flex-end\">\n {value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add row\"\n mode=\"ghost\"\n onClick={() => addRows(1)}\n />\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add column\"\n mode=\"ghost\"\n onClick={() => addColumns(1)}\n />\n <TableMenu\n id={id}\n addColumns={addColumns}\n addColumnAt={addColumnAt}\n addRows={addRows}\n addRowAt={addRowAt}\n remove={confirmRemoveTable}\n placement=\"left\"\n />\n </Inline>\n ) : null}\n </Flex>\n </Box>\n {value?.rows?.length ? (\n <TableInput\n rows={value.rows}\n removeRow={confirmRemoveRow}\n removeColumn={confirmRemoveColumn}\n updateCell={updateCell}\n />\n ) : null}\n {!value || !value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={3}\n icon={AddIcon}\n text=\"Create Table\"\n tone=\"primary\"\n mode=\"ghost\"\n onClick={createTable}\n />\n </Inline>\n ) : null}\n </div>\n )\n}\n\nexport function createTableComponent(rowType: string) {\n return function Table(props: TableProps) {\n return <TableComponent {...props} rowType={rowType} />\n }\n}\n","export function TableIcon() {\n return (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n >\n <path d=\"M3 3h18v18H3zM21 9H3M21 15H3M12 3v18\" />\n </svg>\n )\n}\n","import {Box, Card, Grid, Inline, Label, Text} from '@sanity/ui'\nimport type {PreviewProps} from 'sanity'\n\nimport type {TableRow} from './TableComponent'\nimport {TableIcon} from './TableIcon'\n\ninterface TablePreviewProps extends PreviewProps {\n rows?: TableRow[]\n}\n\nconst Table = ({rows}: {rows: TableRow[]}) => {\n const numCols = rows[0]?.cells.length ?? 0\n\n return (\n <Grid gridTemplateColumns={numCols} padding={2}>\n {rows.map((row) =>\n row.cells.map((cell, i) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <Card key={row._key + i} padding={2} style={{outline: '1px solid #DFE2E9'}}>\n <Text textOverflow=\"ellipsis\">{cell}</Text>\n </Card>\n )),\n )}\n </Grid>\n )\n}\n\nexport const TablePreview = (props: TablePreviewProps) => {\n const {schemaType, rows = [], title} = props\n const previewTitle = schemaType?.title ?? (typeof title === 'string' ? title : 'Title missing')\n\n return (\n <>\n <Box padding={3}>\n <Inline gap={3}>\n <Card>\n <Label size={4}>\n <TableIcon />\n </Label>\n </Card>\n <Card>\n <Text>{previewTitle}</Text>\n </Card>\n </Inline>\n </Box>\n <Box padding={2}>\n {rows.length === 0 ? <Label muted>Empty Table</Label> : <Table rows={rows} />}\n </Box>\n </>\n )\n}\n","import {definePlugin, defineType} from 'sanity'\n\nimport {createTableComponent, TableComponent} from './components/TableComponent'\nimport {TablePreview} from './components/TablePreview'\nexport type {TableProps, TableRow, TableValue} from './components/TableComponent'\n\nexport {TableComponent, TablePreview}\n\nexport interface TableConfig {\n rowType?: string\n}\n\nexport const table = definePlugin<TableConfig | void>((config) => {\n const tableRowSchema = defineType({\n title: 'Table Row',\n name: config?.rowType || 'tableRow',\n type: 'object',\n fields: [\n {\n name: 'cells',\n type: 'array',\n of: [{type: 'string'}],\n },\n ],\n })\n\n const tableSchema = defineType({\n title: 'Table',\n name: 'table',\n type: 'object',\n fields: [\n {\n name: 'rows',\n type: 'array',\n of: [\n {\n type: tableRowSchema.name,\n },\n ],\n },\n ],\n components: {\n input: createTableComponent(tableRowSchema.name),\n preview: TablePreview,\n },\n preview: {\n select: {\n rows: 'rows',\n title: 'title',\n },\n prepare: ({title, rows = []}) => ({\n title,\n rows,\n }),\n },\n })\n\n return {\n name: 'table',\n schema: {\n types: [tableRowSchema, tableSchema],\n },\n }\n})\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["RemoveIcon","Box","Button","TextInput","ChangeEvent","TableRow","TableInputProps","rows","updateCell","e","HTMLInputElement","rowIndex","cellIndex","removeRow","index","removeColumn","TableInput","props","$","_c","t0","Symbol","for","width","t1","t2","row","_key","cells","map","cell","textAlign","t3","t4","_","i","t5","AddIcon","ControlsIcon","WarningOutlineIcon","Box","Button","Card","Dialog","Inline","Placement","TextInput","Menu","MenuButton","MenuDivider","MenuItem","ChangeEventHandler","useState","TableMenuProps","id","addColumns","count","addColumnAt","index","addRows","addRowAt","remove","placement","TableMenu","props","$","_c","handleRemove","dialog","setDialog","setCount","t0","Symbol","for","e","currentTarget","value","updateCount","t1","type","callback","c","t2","t3","c_0","t4","index_0","addColumnsAt","parsedCount","t5","Number","parseInt","isInteger","isValidCount","t6","onConfirm","t7","textAlign","undefined","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","AddIcon","Box","Button","Card","Dialog","Flex","Inline","Text","uuid","ChangeEvent","useState","ObjectInputProps","set","unset","TableInput","TableMenu","deepClone","data","T","globalThis","structuredClone","JSON","parse","stringify","TableValue","_type","rows","TableRow","TableProps","_key","cells","TableComponent","props","$","_c","id","rowType","t0","value","onChange","undefined","dialog","setDialog","t1","v","updateValue","t2","resetValue","t3","newValue","createTable","confirmRemoveTable","type","callback","removeTable","t4","t5","count","newRows","columnCount","length","i","push","Array","fill","addRows","t6","index","newRows_0","columnCount_0","splice","addRowAt","index_0","newRows_1","removeRow","t7","index_1","confirmRemoveRow","addColumnAt","addColumns","confirmRemoveColumn","index_2","removeColumn","t8","count_0","newRows_2","forEach","row","j","t9","index_3","newRows_3","row_0","index_4","newRows_4","row_1","e","rowIndex","cellIndex","newRows_5","row_2","currentTarget","updateCell","textAlign","t10","t11","t12","t13","t14","createTableComponent","Table","TableIcon","$","_c","t0","Symbol","for","Box","Card","Grid","Inline","Label","Text","PreviewProps","TableRow","TableIcon","TablePreviewProps","rows","Table","t0","$","_c","numCols","cells","length","t1","map","_temp","t2","TablePreview","props","schemaType","title","undefined","previewTitle","Symbol","for","t3","t4","t5","row","cell","i","_key","outline","definePlugin","defineType","createTableComponent","TableComponent","TablePreview","TableProps","TableRow","TableValue","TableConfig","rowType","table","config","tableRowSchema","title","name","type","fields","of","tableSchema","components","input","preview","select","rows","prepare","schema","types"],"sources":["../src/components/TableInput.tsx","../src/components/TableMenu.tsx","../src/components/TableComponent.tsx","../src/components/TableIcon.tsx","../src/components/TablePreview.tsx","../src/index.ts"],"sourcesContent":["import {RemoveIcon} from '@sanity/icons/Remove'\nimport {Box, Button, TextInput} from '@sanity/ui'\nimport type {ChangeEvent} from 'react'\n\nimport type {TableRow} from './TableComponent'\n\ninterface TableInputProps {\n rows: TableRow[]\n updateCell: (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => void\n removeRow: (index: number) => void\n removeColumn: (index: number) => void\n}\n\nexport const TableInput = (props: TableInputProps) => {\n const {rows, updateCell, removeRow, removeColumn} = props\n\n return (\n <table style={{width: '100%'}}>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={row._key}>\n {row.cells.map((cell, cellIndex) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={`${row._key}-${cellIndex}`}>\n <TextInput\n fontSize={1}\n padding={3}\n value={cell}\n onChange={(e) => updateCell(e, rowIndex, cellIndex)}\n />\n </td>\n ))}\n <td key={`${row._key}-remove`}>\n <Box marginLeft={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeRow(rowIndex)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n </tr>\n ))}\n <tr>\n {(rows[0]?.cells || []).map((_, i) => (\n // Cells are plain strings; the column position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <td key={i}>\n <Box marginTop={1} style={{textAlign: 'center'}}>\n <Button\n icon={RemoveIcon}\n padding={2}\n onClick={() => removeColumn(i)}\n mode=\"bleed\"\n />\n </Box>\n </td>\n ))}\n </tr>\n </tbody>\n </table>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {ControlsIcon} from '@sanity/icons/Controls'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Button, Card, Dialog, Inline, type Placement, TextInput} from '@sanity/ui'\nimport {Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui/menu'\nimport {type ChangeEventHandler, useState} from 'react'\n\ninterface TableMenuProps {\n id: string\n addColumns: (count: number) => void\n addColumnAt: (index: number) => void\n addRows: (count: number) => void\n addRowAt: (index: number) => void\n remove: () => void\n placement: Placement\n}\n\nexport const TableMenu = (props: TableMenuProps): React.JSX.Element => {\n const {id, remove: handleRemove} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: (count: number) => void\n } | null>(null)\n\n // Keep `count` always a string so the TextInput is controlled for the component lifetime.\n const [count, setCount] = useState<string>('')\n\n const updateCount: ChangeEventHandler<HTMLInputElement> = (e) => {\n setCount(e.currentTarget.value)\n }\n\n const addRows = () => {\n setDialog({type: 'rows', callback: (c) => props.addRows(c)})\n setCount('') // ensure input starts controlled when dialog opens\n }\n\n const addRowAt = () => {\n setDialog({type: 'rows', callback: (index) => props.addRowAt(index)})\n setCount('')\n }\n\n const addColumns = () => {\n setDialog({\n type: 'columns',\n callback: (c) => props.addColumns(c),\n })\n setCount('')\n }\n\n const addColumnsAt = () => {\n setDialog({type: 'columns', callback: (index) => props.addColumnAt(index)})\n setCount('')\n }\n\n // The dialog is reused for \"add N rows/columns\" (a count) and \"add at index\"\n // (a position where 0 is valid), so allow 0 but reject NaN/negative/too-large.\n const parsedCount = Number.parseInt(count, 10)\n const isValidCount = Number.isInteger(parsedCount) && parsedCount >= 0 && parsedCount < 100\n\n const onConfirm = () => {\n if (!isValidCount) {\n return\n }\n setDialog(null)\n dialog?.callback(parsedCount)\n setCount('')\n }\n\n return (\n <>\n {dialog && (\n <Dialog\n header={`Add ${dialog.type}`}\n id={`${id}-dialog-add`}\n onClose={() => {\n setDialog(null)\n setCount('')\n }}\n zOffset={1000}\n >\n <Card padding={4}>\n <TextInput\n style={{textAlign: 'left'}}\n fontSize={2}\n padding={3}\n type=\"number\"\n value={count}\n onChange={updateCount}\n customValidity={\n count !== '' && !isValidCount ? 'Enter a whole number from 0 to 99' : undefined\n }\n />\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button\n text=\"Cancel\"\n mode=\"ghost\"\n onClick={() => {\n setDialog(null)\n setCount('')\n }}\n />\n <Button\n text=\"Confirm\"\n tone=\"critical\"\n onClick={onConfirm}\n disabled={!isValidCount}\n />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <MenuButton\n button={<Button icon={ControlsIcon} fontSize={1} padding={2} mode=\"ghost\" />}\n id={`${id}-menu-button`}\n menu={\n <Menu>\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row(s)\" onClick={addRows} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Row At Index\" onClick={addRowAt} />\n <MenuItem icon={AddIcon} fontSize={1} text=\"Add Column(s)\" onClick={addColumns} />\n <MenuItem\n icon={AddIcon}\n fontSize={1}\n text=\"Add Column At Index\"\n onClick={addColumnsAt}\n />\n <MenuDivider />\n <MenuItem\n icon={WarningOutlineIcon}\n fontSize={1}\n text=\"Remove\"\n tone=\"critical\"\n onClick={handleRemove}\n />\n </Menu>\n }\n popover={{placement: props.placement}}\n />\n </>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Box, Button, Card, Dialog, Flex, Inline, Text} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type ChangeEvent, useState} from 'react'\nimport {type ObjectInputProps, set, unset} from 'sanity'\n\nimport {TableInput} from './TableInput'\nimport {TableMenu} from './TableMenu'\n\nconst deepClone: <T>(data: T) => T =\n globalThis.structuredClone ?? ((data) => JSON.parse(JSON.stringify(data)))\n\nexport interface TableValue {\n _type?: 'table'\n rows?: TableRow[]\n}\n\nexport type TableProps = ObjectInputProps<TableValue>\n\nexport type TableRow = {\n _type: string\n _key: string\n cells: string[]\n}\n\n// TODO refactor deepClone stuff to use proper patches\n// TODO use callback all the things\n\nexport const TableComponent = (props: TableProps & {rowType?: string}) => {\n const {id, rowType = 'tableRow', value, onChange} = props\n const [dialog, setDialog] = useState<{\n type: string\n callback: () => void\n } | null>(null)\n\n const updateValue = (v?: Omit<TableValue, '_type'>) => {\n return onChange(set(v))\n }\n\n const resetValue = () => {\n return onChange(unset())\n }\n\n const createTable = () => {\n const newValue: Omit<TableValue, '_type'> = {\n rows: [\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n {\n _type: rowType,\n _key: uuid(),\n cells: ['', ''],\n },\n ],\n }\n return updateValue({...value, ...newValue})\n }\n\n const confirmRemoveTable = () => {\n setDialog({type: 'table', callback: removeTable})\n }\n\n const removeTable = () => {\n resetValue()\n setDialog(null)\n }\n\n const addRows = (count = 1) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n for (let i = 0; i < count; i++) {\n // Add as many cells as we have columns\n newRows.push({\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n }\n return updateValue({...value, rows: newRows})\n }\n\n const addRowAt = (index = 0) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Calculate the column count from the first row\n const columnCount = value.rows[0]?.cells.length ?? 0\n\n newRows.splice(index, 0, {\n _type: rowType,\n _key: uuid(),\n cells: Array(columnCount).fill(''),\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.splice(index, 1)\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const confirmRemoveRow = (index: number) => {\n if (!value?.rows) {\n return\n }\n if (value.rows.length <= 1) return confirmRemoveTable()\n return setDialog({type: 'row', callback: () => removeRow(index)})\n }\n\n const confirmRemoveColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n if ((value.rows[0]?.cells.length ?? 0) <= 1) return confirmRemoveTable()\n return setDialog({type: 'column', callback: () => removeColumn(index)})\n }\n\n const addColumns = (count: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n // Add a cell to each of the rows\n newRows.forEach((row) => {\n for (let j = 0; j < count; j++) {\n row.cells.push('')\n }\n })\n return updateValue({...value, rows: newRows})\n }\n\n const addColumnAt = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n\n newRows.forEach((row) => {\n row.cells.splice(index, 0, '')\n })\n\n return updateValue({...value, rows: newRows})\n }\n\n const removeColumn = (index: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n newRows.forEach((row) => {\n row.cells.splice(index, 1)\n })\n updateValue({...value, rows: newRows})\n setDialog(null)\n }\n\n const updateCell = (e: ChangeEvent<HTMLInputElement>, rowIndex: number, cellIndex: number) => {\n if (!value?.rows) {\n return\n }\n const newRows = deepClone(value.rows)\n const row = newRows[rowIndex]\n if (!row) {\n return\n }\n row.cells[cellIndex] = e.currentTarget.value\n return updateValue({...value, rows: newRows})\n }\n\n return (\n <div>\n {dialog && (\n <Dialog\n header={`Remove ${dialog.type}`}\n id={`${id}-dialog-remove`}\n onClose={() => setDialog(null)}\n zOffset={1000}\n >\n <Card padding={4}>\n <Text>Are you sure you want to remove this {dialog.type}?</Text>\n <Box marginTop={4}>\n <Inline gap={1} style={{textAlign: 'right'}}>\n <Button text=\"Cancel\" mode=\"ghost\" onClick={() => setDialog(null)} />\n <Button text=\"Confirm\" tone=\"critical\" onClick={() => dialog.callback()} />\n </Inline>\n </Box>\n </Card>\n </Dialog>\n )}\n <Box>\n <Flex justify=\"flex-end\">\n {value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add row\"\n mode=\"ghost\"\n onClick={() => addRows(1)}\n />\n <Button\n fontSize={1}\n padding={2}\n icon={AddIcon}\n text=\"Add column\"\n mode=\"ghost\"\n onClick={() => addColumns(1)}\n />\n <TableMenu\n id={id}\n addColumns={addColumns}\n addColumnAt={addColumnAt}\n addRows={addRows}\n addRowAt={addRowAt}\n remove={confirmRemoveTable}\n placement=\"left\"\n />\n </Inline>\n ) : null}\n </Flex>\n </Box>\n {value?.rows?.length ? (\n <TableInput\n rows={value.rows}\n removeRow={confirmRemoveRow}\n removeColumn={confirmRemoveColumn}\n updateCell={updateCell}\n />\n ) : null}\n {!value || !value?.rows?.length ? (\n <Inline gap={1}>\n <Button\n fontSize={1}\n padding={3}\n icon={AddIcon}\n text=\"Create Table\"\n tone=\"primary\"\n mode=\"ghost\"\n onClick={createTable}\n />\n </Inline>\n ) : null}\n </div>\n )\n}\n\nexport function createTableComponent(rowType: string) {\n return function Table(props: TableProps) {\n return <TableComponent {...props} rowType={rowType} />\n }\n}\n","export function TableIcon() {\n return (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n >\n <path d=\"M3 3h18v18H3zM21 9H3M21 15H3M12 3v18\" />\n </svg>\n )\n}\n","import {Box, Card, Grid, Inline, Label, Text} from '@sanity/ui'\nimport type {PreviewProps} from 'sanity'\n\nimport type {TableRow} from './TableComponent'\nimport {TableIcon} from './TableIcon'\n\ninterface TablePreviewProps extends PreviewProps {\n rows?: TableRow[]\n}\n\nconst Table = ({rows}: {rows: TableRow[]}) => {\n const numCols = rows[0]?.cells.length ?? 0\n\n return (\n <Grid gridTemplateColumns={numCols} padding={2}>\n {rows.map((row) =>\n row.cells.map((cell, i) => (\n // Cells are plain strings; the cell position is the only stable identity\n // eslint-disable-next-line react/no-array-index-key\n <Card key={row._key + i} padding={2} style={{outline: '1px solid #DFE2E9'}}>\n <Text textOverflow=\"ellipsis\">{cell}</Text>\n </Card>\n )),\n )}\n </Grid>\n )\n}\n\nexport const TablePreview = (props: TablePreviewProps) => {\n const {schemaType, rows = [], title} = props\n const previewTitle = schemaType?.title ?? (typeof title === 'string' ? title : 'Title missing')\n\n return (\n <>\n <Box padding={3}>\n <Inline gap={3}>\n <Card>\n <Label size={4}>\n <TableIcon />\n </Label>\n </Card>\n <Card>\n <Text>{previewTitle}</Text>\n </Card>\n </Inline>\n </Box>\n <Box padding={2}>\n {rows.length === 0 ? <Label muted>Empty Table</Label> : <Table rows={rows} />}\n </Box>\n </>\n )\n}\n","import '@sanity/ui/styles.css'\nimport {definePlugin, defineType} from 'sanity'\n\nimport {createTableComponent, TableComponent} from './components/TableComponent'\nimport {TablePreview} from './components/TablePreview'\nexport type {TableProps, TableRow, TableValue} from './components/TableComponent'\n\nexport {TableComponent, TablePreview}\n\nexport interface TableConfig {\n rowType?: string\n}\n\nexport const table = definePlugin<TableConfig | void>((config) => {\n const tableRowSchema = defineType({\n title: 'Table Row',\n name: config?.rowType || 'tableRow',\n type: 'object',\n fields: [\n {\n name: 'cells',\n type: 'array',\n of: [{type: 'string'}],\n },\n ],\n })\n\n const tableSchema = defineType({\n title: 'Table',\n name: 'table',\n type: 'object',\n fields: [\n {\n name: 'rows',\n type: 'array',\n of: [\n {\n type: tableRowSchema.name,\n },\n ],\n },\n ],\n components: {\n input: createTableComponent(tableRowSchema.name),\n preview: TablePreview,\n },\n preview: {\n select: {\n rows: 'rows',\n title: 'title',\n },\n prepare: ({title, rows = []}) => ({\n title,\n rows,\n }),\n },\n })\n\n return {\n name: 'table',\n schema: {\n types: [tableRowSchema, tableSchema],\n },\n }\n})\n"],"mappings":"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"}
\ No newline at end of file