@_linked/shape-ui 2.0.0 → 2.2.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.
Files changed (210) hide show
  1. package/lib/esm/columns.d.ts +58 -0
  2. package/lib/esm/columns.js +173 -0
  3. package/lib/esm/columns.js.map +1 -0
  4. package/lib/esm/components/AddInstanceForms.d.ts +38 -0
  5. package/lib/esm/components/AddInstanceForms.js +143 -0
  6. package/lib/esm/components/AddInstanceForms.js.map +1 -0
  7. package/lib/esm/components/AddInstanceForms.module.css +12 -0
  8. package/lib/esm/components/BatchEditDrawer.d.ts +13 -0
  9. package/lib/esm/components/BatchEditDrawer.js +122 -0
  10. package/lib/esm/components/BatchEditDrawer.js.map +1 -0
  11. package/lib/esm/components/BatchEditDrawer.module.css +193 -0
  12. package/lib/esm/components/CustomMultiSelect.d.ts +26 -0
  13. package/lib/esm/components/CustomMultiSelect.js +344 -0
  14. package/lib/esm/components/CustomMultiSelect.js.map +1 -0
  15. package/lib/esm/components/CustomMultiSelect.module.css +291 -0
  16. package/lib/esm/components/DynamicFormField.d.ts +21 -0
  17. package/lib/esm/components/DynamicFormField.js +149 -0
  18. package/lib/esm/components/DynamicFormField.js.map +1 -0
  19. package/lib/esm/components/DynamicFormField.module.css +169 -0
  20. package/lib/esm/components/EditInstanceForms.d.ts +15 -0
  21. package/lib/esm/components/EditInstanceForms.js +118 -0
  22. package/lib/esm/components/EditInstanceForms.js.map +1 -0
  23. package/lib/esm/components/FilterBadge.d.ts +20 -0
  24. package/lib/esm/components/FilterBadge.js +26 -0
  25. package/lib/esm/components/FilterBadge.js.map +1 -0
  26. package/lib/esm/components/FilterBadge.module.css +25 -0
  27. package/lib/esm/components/FormField.d.ts +18 -0
  28. package/lib/esm/components/FormField.js +9 -0
  29. package/lib/esm/components/FormField.js.map +1 -0
  30. package/lib/esm/components/FormField.module.css +57 -0
  31. package/lib/esm/components/InstanceDeletionDialog.d.ts +17 -0
  32. package/lib/esm/components/InstanceDeletionDialog.js +83 -0
  33. package/lib/esm/components/InstanceDeletionDialog.js.map +1 -0
  34. package/lib/esm/components/InstanceDeletionDialog.module.css +59 -0
  35. package/lib/esm/components/InstanceOverview.d.ts +37 -0
  36. package/lib/esm/components/InstanceOverview.js +233 -0
  37. package/lib/esm/components/InstanceOverview.js.map +1 -0
  38. package/lib/esm/components/InstanceOverview.module.css +35 -0
  39. package/lib/esm/components/InstanceView.d.ts +29 -0
  40. package/lib/esm/components/InstanceView.js +97 -0
  41. package/lib/esm/components/InstanceView.js.map +1 -0
  42. package/lib/esm/components/InstanceView.module.css +157 -0
  43. package/lib/esm/components/NodeBadge.d.ts +25 -0
  44. package/lib/esm/components/NodeBadge.js +29 -0
  45. package/lib/esm/components/NodeBadge.js.map +1 -0
  46. package/lib/esm/components/NodeValuesEditor.d.ts +15 -0
  47. package/lib/esm/components/NodeValuesEditor.js +29 -0
  48. package/lib/esm/components/NodeValuesEditor.js.map +1 -0
  49. package/lib/esm/components/NodeValuesEditor.module.css +4 -0
  50. package/lib/esm/components/ReactTable.d.ts +50 -0
  51. package/lib/esm/components/ReactTable.js +370 -0
  52. package/lib/esm/components/ReactTable.js.map +1 -0
  53. package/lib/esm/components/ReactTable.module.css +950 -0
  54. package/lib/esm/components/TextfieldEditor.d.ts +1 -2
  55. package/lib/esm/components/TextfieldEditor.js +2 -2
  56. package/lib/esm/components/TextfieldEditor.js.map +1 -1
  57. package/lib/esm/components/forms.module.css +96 -0
  58. package/lib/esm/host.d.ts +196 -0
  59. package/lib/esm/host.js +25 -0
  60. package/lib/esm/host.js.map +1 -0
  61. package/lib/esm/hostContext.d.ts +34 -0
  62. package/lib/esm/hostContext.js +95 -0
  63. package/lib/esm/hostContext.js.map +1 -0
  64. package/lib/esm/index.d.ts +64 -10
  65. package/lib/esm/index.js +63 -14
  66. package/lib/esm/index.js.map +1 -1
  67. package/lib/esm/read.d.ts +48 -0
  68. package/lib/esm/read.js +96 -0
  69. package/lib/esm/read.js.map +1 -0
  70. package/lib/esm/search.d.ts +32 -0
  71. package/lib/esm/search.js +87 -0
  72. package/lib/esm/search.js.map +1 -0
  73. package/lib/esm/shape/contracts.d.ts +58 -0
  74. package/lib/esm/shape/contracts.js +15 -0
  75. package/lib/esm/shape/contracts.js.map +1 -0
  76. package/lib/esm/shape/naming.d.ts +30 -0
  77. package/lib/esm/shape/naming.js +52 -0
  78. package/lib/esm/shape/naming.js.map +1 -0
  79. package/lib/esm/shape/nodeDisplay.d.ts +36 -0
  80. package/lib/esm/shape/nodeDisplay.js +117 -0
  81. package/lib/esm/shape/nodeDisplay.js.map +1 -0
  82. package/lib/esm/shape/propertyTypes.d.ts +12 -0
  83. package/lib/esm/shape/propertyTypes.js +60 -0
  84. package/lib/esm/shape/propertyTypes.js.map +1 -0
  85. package/lib/esm/shape/propertyVisibility.d.ts +56 -0
  86. package/lib/esm/shape/propertyVisibility.js +112 -0
  87. package/lib/esm/shape/propertyVisibility.js.map +1 -0
  88. package/lib/esm/shape/shapeDependencies.d.ts +41 -0
  89. package/lib/esm/shape/shapeDependencies.js +141 -0
  90. package/lib/esm/shape/shapeDependencies.js.map +1 -0
  91. package/lib/esm/shape/tableFilters.d.ts +35 -0
  92. package/lib/esm/shape/tableFilters.js +171 -0
  93. package/lib/esm/shape/tableFilters.js.map +1 -0
  94. package/lib/esm/shape/useFormDependencies.d.ts +38 -0
  95. package/lib/esm/shape/useFormDependencies.js +178 -0
  96. package/lib/esm/shape/useFormDependencies.js.map +1 -0
  97. package/lib/esm/shape/validation.d.ts +15 -0
  98. package/lib/esm/shape/validation.js +106 -0
  99. package/lib/esm/shape/validation.js.map +1 -0
  100. package/lib/esm/tokens.css +25 -0
  101. package/lib/esm/types.d.ts +22 -0
  102. package/lib/esm/types.js +1 -0
  103. package/lib/esm/types.js.map +1 -0
  104. package/lib/esm/write.d.ts +51 -0
  105. package/lib/esm/write.js +99 -0
  106. package/lib/esm/write.js.map +1 -0
  107. package/package.json +44 -18
  108. package/src/backend.ts +1 -0
  109. package/src/columns.regression.test.ts +143 -0
  110. package/src/columns.test.ts +200 -0
  111. package/src/columns.ts +228 -0
  112. package/src/components/AddInstanceForms.module.css +12 -0
  113. package/src/components/AddInstanceForms.tsx +321 -0
  114. package/src/components/AvatarEditor.tsx +34 -0
  115. package/src/components/BatchEditDrawer.module.css +193 -0
  116. package/src/components/BatchEditDrawer.tsx +295 -0
  117. package/src/components/CheckboxEditor.module.css +6 -0
  118. package/src/components/CheckboxEditor.tsx +86 -0
  119. package/src/components/CustomMultiSelect.module.css +291 -0
  120. package/src/components/CustomMultiSelect.tsx +527 -0
  121. package/src/components/DateEditor.tsx +50 -0
  122. package/src/components/DynamicFormField.module.css +169 -0
  123. package/src/components/DynamicFormField.tsx +357 -0
  124. package/src/components/EditInstanceForms.tsx +260 -0
  125. package/src/components/FilterBadge.module.css +25 -0
  126. package/src/components/FilterBadge.tsx +70 -0
  127. package/src/components/FormField.module.css +57 -0
  128. package/src/components/FormField.tsx +59 -0
  129. package/src/components/ImageValueEditor.module.css +3 -0
  130. package/src/components/ImageValueEditor.tsx +82 -0
  131. package/src/components/InstanceDeletionDialog.module.css +59 -0
  132. package/src/components/InstanceDeletionDialog.tsx +175 -0
  133. package/src/components/InstanceOverview.module.css +35 -0
  134. package/src/components/InstanceOverview.tsx +374 -0
  135. package/src/components/InstanceView.module.css +157 -0
  136. package/src/components/InstanceView.tsx +212 -0
  137. package/src/components/NodeBadge.tsx +60 -0
  138. package/src/components/NodeValuesEditor.module.css +4 -0
  139. package/src/components/NodeValuesEditor.tsx +64 -0
  140. package/src/components/RadioButtonEditor.module.css +22 -0
  141. package/src/components/RadioButtonEditor.tsx +96 -0
  142. package/src/components/ReactTable.module.css +950 -0
  143. package/src/components/ReactTable.tsx +991 -0
  144. package/src/components/SelectEditor.tsx +85 -0
  145. package/src/components/ShapeTable.module.css +394 -0
  146. package/src/components/SwitchEditor.tsx +60 -0
  147. package/src/components/TextareaEditor.tsx +55 -0
  148. package/src/components/TextfieldEditor.tsx +67 -0
  149. package/src/components/ToggleEditor.tsx +63 -0
  150. package/src/components/forms.module.css +96 -0
  151. package/src/host.ts +226 -0
  152. package/src/hostContext.tsx +114 -0
  153. package/src/index.ts +99 -0
  154. package/src/package.ts +21 -0
  155. package/src/read.ts +148 -0
  156. package/src/search.test.ts +174 -0
  157. package/src/search.ts +108 -0
  158. package/src/shape/contracts.ts +66 -0
  159. package/src/shape/naming.ts +52 -0
  160. package/src/shape/nodeDisplay.ts +114 -0
  161. package/src/shape/propertyTypes.ts +86 -0
  162. package/src/shape/propertyVisibility.ts +180 -0
  163. package/src/shape/shapeDependencies.ts +183 -0
  164. package/src/shape/tableFilters.ts +223 -0
  165. package/src/shape/types.ts +1158 -0
  166. package/src/shape/useFormDependencies.ts +257 -0
  167. package/src/shape/validation.ts +121 -0
  168. package/src/tokens.css +25 -0
  169. package/src/types.ts +20 -0
  170. package/src/utils/helper.ts +35 -0
  171. package/src/write.test.ts +174 -0
  172. package/src/write.ts +114 -0
  173. package/.changeset/README.md +0 -20
  174. package/.changeset/config.json +0 -14
  175. package/.github/workflows/changeset-check.yml +0 -44
  176. package/.github/workflows/ci.yml +0 -43
  177. package/.github/workflows/publish.yml +0 -158
  178. package/CHANGELOG.md +0 -30
  179. package/lib/esm/components/AvatarEditor.d.ts +0 -20
  180. package/lib/esm/components/AvatarEditor.js +0 -7
  181. package/lib/esm/components/AvatarEditor.js.map +0 -1
  182. package/lib/esm/components/CheckboxEditor.d.ts +0 -21
  183. package/lib/esm/components/CheckboxEditor.js +0 -44
  184. package/lib/esm/components/CheckboxEditor.js.map +0 -1
  185. package/lib/esm/components/DateEditor.d.ts +0 -20
  186. package/lib/esm/components/DateEditor.js +0 -22
  187. package/lib/esm/components/DateEditor.js.map +0 -1
  188. package/lib/esm/components/RadioButtonEditor.d.ts +0 -23
  189. package/lib/esm/components/RadioButtonEditor.js +0 -41
  190. package/lib/esm/components/RadioButtonEditor.js.map +0 -1
  191. package/lib/esm/components/SelectEditor.d.ts +0 -21
  192. package/lib/esm/components/SelectEditor.js +0 -30
  193. package/lib/esm/components/SelectEditor.js.map +0 -1
  194. package/lib/esm/components/SwitchEditor.d.ts +0 -21
  195. package/lib/esm/components/SwitchEditor.js +0 -23
  196. package/lib/esm/components/SwitchEditor.js.map +0 -1
  197. package/lib/esm/components/TextareaEditor.d.ts +0 -23
  198. package/lib/esm/components/TextareaEditor.js +0 -15
  199. package/lib/esm/components/TextareaEditor.js.map +0 -1
  200. package/lib/esm/components/ToggleEditor.d.ts +0 -22
  201. package/lib/esm/components/ToggleEditor.js +0 -23
  202. package/lib/esm/components/ToggleEditor.js.map +0 -1
  203. package/lib/esm/ontologies/lincd-ui.d.ts +0 -6
  204. package/lib/esm/ontologies/lincd-ui.js +0 -18
  205. package/lib/esm/ontologies/lincd-ui.js.map +0 -1
  206. package/lib/esm/package.d.ts +0 -3
  207. package/lib/esm/package.js +0 -4
  208. package/lib/esm/package.js.map +0 -1
  209. package/tsconfig-cjs.json +0 -8
  210. package/tsconfig-esm.json +0 -9
@@ -0,0 +1,15 @@
1
+ import type { PropertyShapeWire, NodeShapeWire } from '@_linked/core/shapes/nodeShapeWire';
2
+ interface NodeValuesEditorProps {
3
+ property: PropertyShapeWire;
4
+ of: any;
5
+ /**
6
+ * The shape being edited. Passed down rather than read from the route: the picker needs
7
+ * it to say which shape the answer belongs to, and the form above already knows.
8
+ */
9
+ sourceShape?: NodeShapeWire;
10
+ onBeforeNavigate?: () => Promise<string | void> | string | void;
11
+ narrowedIds?: string[] | null;
12
+ isNarrowing?: boolean;
13
+ }
14
+ declare const NodeValuesEditor: ({ property, of, sourceShape, onBeforeNavigate, narrowedIds, isNarrowing }: NodeValuesEditorProps) => import("react").JSX.Element;
15
+ export default NodeValuesEditor;
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import CustomMultiSelect from './CustomMultiSelect.js';
3
+ import style from './NodeValuesEditor.module.css';
4
+ const NodeValuesEditor = ({ property, of, sourceShape, onBeforeNavigate, narrowedIds, isNarrowing }) => {
5
+ let valueShape = property.valueShape;
6
+ // let shapeClass = getShapeClass(of.targetClass);
7
+ if (!valueShape) {
8
+ // valueShape = Thing;
9
+ }
10
+ else {
11
+ }
12
+ // let instanceValues = (
13
+ // getShapeClass(valueShape.namedNode) as any
14
+ // ).getLocalInstances();
15
+ const values = of[property.label];
16
+ // let potentialValues = property.inList;
17
+ return (_jsx("div", { className: style.Root, children: _jsx(CustomMultiSelect, { values: values, property: property, sourceShape: sourceShape, onBeforeNavigate: onBeforeNavigate, narrowedIds: narrowedIds, isNarrowing: isNarrowing, onChange: (selected) => {
18
+ // Write back to form data object (same mutation pattern as DynamicFormField)
19
+ // Include label so draft restore can display friendly names
20
+ of[property.label] =
21
+ selected.length === 0
22
+ ? undefined
23
+ : property.maxCount === 1
24
+ ? { id: selected[0].id, label: selected[0].label }
25
+ : selected.map((v) => ({ id: v.id, label: v.label }));
26
+ } }) }));
27
+ };
28
+ export default NodeValuesEditor;
29
+ //# sourceMappingURL=NodeValuesEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeValuesEditor.js","sourceRoot":"","sources":["../../../src/components/NodeValuesEditor.tsx"],"names":[],"mappings":";AACA,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,MAAM,+BAA+B,CAAC;AAqBlD,MAAM,gBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAyB,EAAE,EAAE;IAC5H,IAAI,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACrC,kDAAkD;IAElD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,sBAAsB;IACxB,CAAC;SAAM,CAAC;IACR,CAAC;IACD,yBAAyB;IACzB,+CAA+C;IAC/C,yBAAyB;IAEzB,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,yCAAyC;IAGzC,OAAO,CACL,cAAK,SAAS,EAAE,KAAK,CAAC,IAAI,YACxB,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACrB,6EAA6E;gBAC7E,4DAA4D;gBAC5D,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAChB,QAAQ,CAAC,MAAM,KAAK,CAAC;wBACnB,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;4BACvB,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;4BAClD,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC,GACD,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ .Root {
2
+ display: block;
3
+ width: 100%;
4
+ }
@@ -0,0 +1,50 @@
1
+ import { ColumnDef } from '@tanstack/react-table';
2
+ import type { ShapeInstancesQueryConfig } from '../shape/contracts.js';
3
+ import type { PropertyShapeWire, NodeShapeWire } from '@_linked/core/shapes/nodeShapeWire';
4
+ import { ShapeSet } from '@_linked/core/collections/ShapeSet';
5
+ import React from 'react';
6
+ import type { TableMode } from '../columns.js';
7
+ import type { BatchResult } from './InstanceOverview.js';
8
+ import { type InstanceDeletionDialogProps } from './InstanceDeletionDialog.js';
9
+ export interface ReactTableProps {
10
+ data: any[] | ShapeSet<any>;
11
+ columns: ColumnDef<any>[];
12
+ toggleSelectAll: () => void;
13
+ isRowSelected: (uri: string) => boolean;
14
+ selectedUris: Set<string>;
15
+ toggleRowSelection: (uri: string) => void;
16
+ clearSelection: () => void;
17
+ removeFromSelection: (uris: string[]) => void;
18
+ hasSelection: boolean;
19
+ shape: NodeShapeWire;
20
+ properties?: Record<string, PropertyShapeWire>;
21
+ isLoading?: boolean;
22
+ config: ShapeInstancesQueryConfig;
23
+ setConfig: (updated: ShapeInstancesQueryConfig) => void;
24
+ isPickMode?: boolean;
25
+ onPickInstance?: (instance: {
26
+ id: string;
27
+ label: string;
28
+ image?: string;
29
+ }) => void;
30
+ onPickInstances?: (instances: {
31
+ id: string;
32
+ label: string;
33
+ image?: string;
34
+ }[]) => void;
35
+ pickMaxCount?: number;
36
+ pickAlreadySelected?: {
37
+ id: string;
38
+ label: string;
39
+ image?: string;
40
+ }[];
41
+ deletionProjectId?: string;
42
+ previewDeletion?: InstanceDeletionDialogProps['previewDeletion'];
43
+ executeDeletion?: InstanceDeletionDialogProps['executeDeletion'];
44
+ onInstancesDeleted?: (uris: string[]) => void;
45
+ onBatchUpdate?: (changes: Record<string, any>, uris: string[]) => Promise<BatchResult>;
46
+ tableMode?: TableMode;
47
+ onTableModeChange?: (mode: TableMode) => void;
48
+ }
49
+ declare function ReactTable({ data, columns, toggleSelectAll, isRowSelected, selectedUris, toggleRowSelection, clearSelection, removeFromSelection, hasSelection, shape, properties: propertiesMap, isLoading, config, setConfig, isPickMode, onPickInstance, onPickInstances, pickMaxCount, pickAlreadySelected, deletionProjectId, previewDeletion, executeDeletion, onInstancesDeleted, onBatchUpdate, tableMode, onTableModeChange, }: ReactTableProps): React.JSX.Element;
50
+ export default ReactTable;
@@ -0,0 +1,370 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from '@tanstack/react-table';
3
+ import { AnimatePresence, motion } from 'framer-motion';
4
+ import { Button } from '@_linked/primitives/components/Button';
5
+ import { Checkbox } from '@_linked/primitives/components/Checkbox';
6
+ import { Drawer } from '@_linked/primitives/components/Drawer';
7
+ import { IconButton } from '@_linked/primitives/components/IconButton';
8
+ import { Input } from '@_linked/primitives/components/Input';
9
+ import { Label } from '@_linked/primitives/components/Label';
10
+ import { Select } from '@_linked/primitives/components/Select';
11
+ import { Typography } from '@_linked/primitives/components/Typography';
12
+ import { cl } from '@_linked/react/utils/ClassNames';
13
+ import React from 'react';
14
+ import { getNodeDisplay, humanizeEnumLabel, enumOptions } from '../shape/nodeDisplay.js';
15
+ import { formatShapeLabel } from '../shape/naming.js';
16
+ import { tableStaggerContainer, tableRowItem, useReducedMotion, } from '@_linked/primitives/motion';
17
+ import { Icons } from '@_linked/icons';
18
+ import { Spinner } from '@_linked/primitives/components/Spinner';
19
+ import { FilterBadge } from './FilterBadge.js';
20
+ import { TableRowSkeleton } from '@_linked/primitives/components/SkeletonLoader';
21
+ import { TruncatedText } from '@_linked/primitives/components/TruncatedText';
22
+ import { applyAllFilters, generateFilterId, getOperatorsForProperty, formatFilterLabel, } from '../shape/tableFilters.js';
23
+ import { getPropertyUiType } from '../shape/propertyTypes.js';
24
+ import { useDataManagerHost } from '../hostContext.js';
25
+ import BatchEditDrawer from './BatchEditDrawer.js';
26
+ import { InstanceDeletionDialog } from './InstanceDeletionDialog.js';
27
+ import style from './ReactTable.module.css';
28
+ function ReactTable({ data, columns, toggleSelectAll, isRowSelected, selectedUris, toggleRowSelection, clearSelection, removeFromSelection, hasSelection, shape, properties: propertiesMap, isLoading = false, config, setConfig, isPickMode = false, onPickInstance, onPickInstances, pickMaxCount, pickAlreadySelected, deletionProjectId, previewDeletion, executeDeletion, onInstancesDeleted, onBatchUpdate, tableMode, onTableModeChange, }) {
29
+ var _a;
30
+ // ─── Filter state ──────────────────────────────────────────────────
31
+ const [filters, setFilters] = React.useState([]);
32
+ const [selectedColumn, setSelectedColumn] = React.useState('');
33
+ const [selectedOperator, setSelectedOperator] = React.useState('');
34
+ const [filterValue, setFilterValue] = React.useState('');
35
+ const [enumSelections, setEnumSelections] = React.useState([]);
36
+ const reducedMotion = useReducedMotion();
37
+ // Row actions go through the host. Building `${ROUTES.data.path}/…/edit?s0=…` here
38
+ // assumed CN's URL layout; where "edit this row" leads is the host's decision.
39
+ const host = useDataManagerHost();
40
+ // Deletion needs THREE things, not one: somewhere to scope the impact query, a way to
41
+ // preview the cascade, and a way to perform it. Gating the affordance on the project id
42
+ // alone offered a Delete button whose dialog then called an undefined `previewDeletion`
43
+ // — which is exactly what the overview page did, because it passed the id and neither
44
+ // callback. An affordance that cannot complete should not be offered.
45
+ const canDelete = Boolean(deletionProjectId && previewDeletion && executeDeletion);
46
+ // ─── Batch operation state ─────────────────────────────────────────
47
+ const [batchEditOpen, setBatchEditOpen] = React.useState(false);
48
+ const [batchOperationPending, setBatchOperationPending] = React.useState(false);
49
+ const [batchResult, setBatchResult] = React.useState(null);
50
+ // Build a map of column IDs to property details for filter type detection.
51
+ const propertyMap = React.useMemo(() => {
52
+ if (propertiesMap)
53
+ return propertiesMap;
54
+ const map = {};
55
+ if (shape === null || shape === void 0 ? void 0 : shape.propertyShapes) {
56
+ for (const prop of shape.propertyShapes) {
57
+ map[prop.label] = prop;
58
+ }
59
+ }
60
+ return map;
61
+ }, [propertiesMap, shape === null || shape === void 0 ? void 0 : shape.propertyShapes]);
62
+ // Get available operators when column changes
63
+ const selectedProperty = selectedColumn ? propertyMap[selectedColumn] || null : null;
64
+ const availableOperators = selectedProperty
65
+ ? getOperatorsForProperty(selectedProperty)
66
+ : [];
67
+ const selectedUiType = selectedProperty ? getPropertyUiType(selectedProperty) : null;
68
+ const isEnumColumn = selectedUiType === 'enum-literal' || selectedUiType === 'enum-iri';
69
+ // Reset operator/value when column changes
70
+ React.useEffect(() => {
71
+ if (availableOperators.length > 0) {
72
+ setSelectedOperator(availableOperators[0].value);
73
+ }
74
+ else {
75
+ setSelectedOperator('');
76
+ }
77
+ setFilterValue('');
78
+ setEnumSelections([]);
79
+ }, [selectedColumn]);
80
+ // Apply filters to data (client-side)
81
+ const filteredData = React.useMemo(() => {
82
+ const activeFilters = filters.filter((f) => f.isActive);
83
+ if (activeFilters.length === 0)
84
+ return data;
85
+ return data.filter((row) => applyAllFilters(row, activeFilters));
86
+ }, [data, filters]);
87
+ const setPagination = (updater) => {
88
+ // react-table passes a functional updater; resolve it against the current config.
89
+ const newVal = typeof updater === 'function' ? updater(config) : updater;
90
+ // Skip no-op pagination updates. react-table re-fires onPaginationChange whenever
91
+ // the data changes; propagating an identical-but-new config object would change
92
+ // `tableConfig` and re-trigger the parent's fetch effect — an infinite refetch loop.
93
+ if (newVal &&
94
+ newVal.pageIndex === config.pageIndex &&
95
+ newVal.pageSize === config.pageSize) {
96
+ return;
97
+ }
98
+ setConfig(newVal);
99
+ };
100
+ const table = useReactTable({
101
+ columns,
102
+ data: filteredData,
103
+ getCoreRowModel: getCoreRowModel(),
104
+ getSortedRowModel: getSortedRowModel(),
105
+ getFilteredRowModel: getFilteredRowModel(),
106
+ getPaginationRowModel: getPaginationRowModel(),
107
+ onPaginationChange: setPagination,
108
+ state: {
109
+ pagination: config,
110
+ },
111
+ });
112
+ // Compute whether we've hit the maxCount limit for pick mode
113
+ const pickLimitReached = isPickMode && pickMaxCount != null && selectedUris.size >= pickMaxCount;
114
+ const handleFilterSubmit = () => {
115
+ if (!selectedColumn || !selectedOperator)
116
+ return;
117
+ const value = isEnumColumn && selectedOperator === 'in'
118
+ ? enumSelections
119
+ : filterValue.trim();
120
+ if (Array.isArray(value) ? value.length === 0 : !value)
121
+ return;
122
+ const newFilter = {
123
+ id: generateFilterId(),
124
+ columnId: selectedColumn,
125
+ columnLabel: selectedColumn
126
+ .replace(/([A-Z])/g, ' $1')
127
+ .replace(/_/g, ' ')
128
+ .replace(/^./, (c) => c.toUpperCase()),
129
+ operator: selectedOperator,
130
+ value,
131
+ isActive: true,
132
+ };
133
+ setFilters([...filters, newFilter]);
134
+ setFilterValue('');
135
+ setEnumSelections([]);
136
+ };
137
+ const handleFilterToggle = (index) => {
138
+ setFilters(filters.map((filter, i) => i === index ? { ...filter, isActive: !filter.isActive } : filter));
139
+ };
140
+ const handleFilterRemove = (index) => {
141
+ setFilters(filters.filter((_, i) => i !== index));
142
+ };
143
+ const rowToPickInstance = (row) => {
144
+ var _a;
145
+ const original = row.original;
146
+ const labelKey = Object.keys(original).find((k) => k !== 'id' && original[k]);
147
+ const rawLabel = labelKey ? original[labelKey] : original.id;
148
+ const label = typeof rawLabel === 'object' && (rawLabel === null || rawLabel === void 0 ? void 0 : rawLabel.label)
149
+ ? rawLabel.label
150
+ : typeof rawLabel === 'string'
151
+ ? rawLabel
152
+ : String(original.id || '');
153
+ const image = ((_a = original.image) === null || _a === void 0 ? void 0 : _a.contentUrl) || original.image;
154
+ return {
155
+ id: original.id,
156
+ label,
157
+ ...(typeof image === 'string' ? { image } : {}),
158
+ };
159
+ };
160
+ const handlePick = (row) => {
161
+ if (!onPickInstance)
162
+ return;
163
+ onPickInstance(rowToPickInstance(row));
164
+ };
165
+ const handlePickSelected = () => {
166
+ const rows = table.getRowModel().rows;
167
+ const picked = rows
168
+ .filter((r) => { var _a; return selectedUris.has((_a = r.original) === null || _a === void 0 ? void 0 : _a.id); })
169
+ .map(rowToPickInstance);
170
+ if (picked.length === 1 && onPickInstance) {
171
+ onPickInstance(picked[0]);
172
+ }
173
+ else if (picked.length > 0 && onPickInstances) {
174
+ onPickInstances(picked);
175
+ }
176
+ else if (picked.length > 0 && onPickInstance) {
177
+ onPickInstance(picked[0]);
178
+ }
179
+ };
180
+ const handleEdit = (row) => {
181
+ var _a;
182
+ // Single-instance edit: always `s0` (the edit page reads `s0`). `row.id` is
183
+ // react-table's row index, not a query-subject index — using it produced
184
+ // `?s1=` for later rows, which the edit page couldn't read ("Missing instance id").
185
+ const subject = row.original.id;
186
+ (_a = host.navigate) === null || _a === void 0 ? void 0 : _a.toEdit(shape === null || shape === void 0 ? void 0 : shape.id, subject);
187
+ };
188
+ const handleView = (row) => {
189
+ var _a;
190
+ const subject = row.original.id;
191
+ (_a = host.navigate) === null || _a === void 0 ? void 0 : _a.toInstance(shape === null || shape === void 0 ? void 0 : shape.id, subject);
192
+ };
193
+ // ─── Preview-required instance deletion ────────────────────────────
194
+ const [deletionTarget, setDeletionTarget] = React.useState(null);
195
+ const handleDelete = (row) => {
196
+ var _a, _b, _c;
197
+ const uri = (_a = row.original) === null || _a === void 0 ? void 0 : _a.id;
198
+ const label = ((_b = row.original) === null || _b === void 0 ? void 0 : _b.label) || ((_c = row.original) === null || _c === void 0 ? void 0 : _c.name) || getNodeDisplay(row.original) || '';
199
+ setDeletionTarget({
200
+ kind: 'single',
201
+ targets: [{ instanceId: uri, shapeIri: shape.id }],
202
+ labels: { [uri]: label },
203
+ });
204
+ };
205
+ // ─── Batch delete ──────────────────────────────────────────────────
206
+ const handleDeleteCollectively = () => {
207
+ if (!canDelete || selectedUris.size === 0)
208
+ return;
209
+ const uris = Array.from(selectedUris);
210
+ const labels = {};
211
+ for (const row of data) {
212
+ if (selectedUris.has(row === null || row === void 0 ? void 0 : row.id)) {
213
+ labels[row.id] = row.label || row.name || getNodeDisplay(row) || row.id;
214
+ }
215
+ }
216
+ setDeletionTarget({
217
+ kind: 'batch',
218
+ targets: uris.map((instanceId) => ({ instanceId, shapeIri: shape.id })),
219
+ labels,
220
+ });
221
+ };
222
+ const handleDeletionCompleted = (result) => {
223
+ if (!deletionTarget)
224
+ return;
225
+ const requested = deletionTarget.targets.map(({ instanceId }) => instanceId);
226
+ const deleted = result.deleted.map(({ instanceId }) => instanceId);
227
+ const deletedSet = new Set(deleted);
228
+ const failed = requested.filter((uri) => !deletedSet.has(uri));
229
+ onInstancesDeleted === null || onInstancesDeleted === void 0 ? void 0 : onInstancesDeleted(deleted);
230
+ if (deletionTarget.kind === 'batch') {
231
+ if (failed.length > 0) {
232
+ removeFromSelection(deleted);
233
+ setBatchResult({
234
+ message: `Deleted ${deleted.length} of ${requested.length}. ${failed.length} failed and remain selected.`,
235
+ isError: true,
236
+ });
237
+ }
238
+ else {
239
+ clearSelection();
240
+ setBatchResult({
241
+ message: `Successfully deleted ${deleted.length} items.`,
242
+ isError: false,
243
+ });
244
+ }
245
+ }
246
+ };
247
+ // ─── Batch edit ────────────────────────────────────────────────────
248
+ const handleBatchApply = async (changes) => {
249
+ if (!onBatchUpdate)
250
+ return;
251
+ const uris = Array.from(selectedUris);
252
+ setBatchOperationPending(true);
253
+ setBatchResult(null);
254
+ try {
255
+ const result = await onBatchUpdate(changes, uris);
256
+ setBatchEditOpen(false);
257
+ if (result.failed.length > 0) {
258
+ removeFromSelection(result.succeeded);
259
+ setBatchResult({
260
+ message: `Updated ${result.succeeded.length} of ${uris.length}. ${result.failed.length} failed.`,
261
+ isError: true,
262
+ });
263
+ }
264
+ else {
265
+ clearSelection();
266
+ setBatchResult({
267
+ message: `Successfully updated ${result.succeeded.length} items.`,
268
+ isError: false,
269
+ });
270
+ }
271
+ }
272
+ catch (err) {
273
+ setBatchResult({
274
+ message: `Batch update failed: ${err instanceof Error ? err.message : String(err)}`,
275
+ isError: true,
276
+ });
277
+ }
278
+ finally {
279
+ setBatchOperationPending(false);
280
+ }
281
+ };
282
+ // Auto-clear result message after 5 seconds
283
+ React.useEffect(() => {
284
+ if (!batchResult)
285
+ return;
286
+ const timer = setTimeout(() => setBatchResult(null), 5000);
287
+ return () => clearTimeout(timer);
288
+ }, [batchResult]);
289
+ const getCellStyle = (cell) => {
290
+ const value = cell.getValue();
291
+ if (value === 'Yes') {
292
+ return style.green;
293
+ }
294
+ return '';
295
+ };
296
+ const renderCellContent = (cell) => {
297
+ const value = cell.getValue();
298
+ if (typeof value === 'string' && value.length > 80) {
299
+ return _jsx(TruncatedText, { text: value, maxLength: 50 });
300
+ }
301
+ return flexRender(cell.column.columnDef.cell, cell.getContext());
302
+ };
303
+ const hasFilters = filters.length > 0;
304
+ const selectionCount = selectedUris.size;
305
+ return (_jsxs("div", { className: style.tableWrapper, children: [_jsxs("div", { className: cl(style.action, !hasFilters && !hasSelection && style.withBorder), children: [_jsxs(Button, { size: "small", onClick: () => { var _a; return (shape === null || shape === void 0 ? void 0 : shape.id) && ((_a = host.navigate) === null || _a === void 0 ? void 0 : _a.toAdd(shape.id)); }, disabled: !(shape === null || shape === void 0 ? void 0 : shape.id) || !host.navigate, children: [_jsx(Icons.UserPlus, { width: 18, height: 18 }), "New ", shape ? formatShapeLabel(shape.label) : ''] }), _jsxs(Drawer.Root, { direction: "right", handleOnly: true, children: [_jsx(Drawer.Trigger, { asChild: true, children: _jsx(IconButton, { size: "small", variant: "outline", "aria-label": "Open filters", children: _jsx(Icons.ListFilter, { width: 20, height: 20 }) }) }), _jsx(Drawer.Content, { hideHandle: true, className: style.filterDrawer, children: _jsxs("div", { className: style.filterDrawerContent, children: [_jsxs(Drawer.Header, { className: style.filterDrawerHeader, children: [_jsx(Drawer.Title, { children: "Filters" }), _jsx(Drawer.Description, { children: filters.length > 0
306
+ ? `${filters.length} filter${filters.length > 1 ? 's' : ''} applied`
307
+ : 'No filters applied' })] }), _jsxs("div", { className: style.filterDrawerBody, children: [_jsxs("div", { className: style.form, children: [_jsxs("div", { className: style.formSection, children: [_jsx(Label, { children: "Column" }), _jsxs(Select.Root, { value: selectedColumn, onValueChange: setSelectedColumn, children: [_jsx(Select.Trigger, { "aria-label": "Select Column", children: _jsx(Select.Value, { placeholder: "Select column..." }) }), _jsx(Select.Content, { children: _jsx(Select.Group, { children: (_a = shape === null || shape === void 0 ? void 0 : shape.propertyShapes) === null || _a === void 0 ? void 0 : _a.filter((p) => p.label !== 'id').map((prop) => (_jsx(Select.Item, { value: prop.label, children: prop.label
308
+ .replace(/([A-Z])/g, ' $1')
309
+ .replace(/_/g, ' ')
310
+ .replace(/^./, (c) => c.toUpperCase()) }, prop.label))) }) })] })] }), selectedColumn && availableOperators.length > 0 && (_jsxs("div", { className: style.formSection, children: [_jsx(Label, { children: "Operator" }), _jsxs(Select.Root, { value: selectedOperator, onValueChange: (val) => setSelectedOperator(val), children: [_jsx(Select.Trigger, { "aria-label": "Select Operator", children: _jsx(Select.Value, { placeholder: "Select operator..." }) }), _jsx(Select.Content, { children: _jsx(Select.Group, { children: availableOperators.map((op) => (_jsx(Select.Item, { value: op.value, children: op.label }, op.value))) }) })] })] })), selectedColumn && selectedOperator && (_jsxs("div", { className: style.formSection, children: [_jsx(Label, { children: "Value" }), isEnumColumn &&
311
+ selectedOperator === 'in' &&
312
+ selectedProperty &&
313
+ enumOptions(selectedProperty).length > 0 ? (_jsx("div", { className: style.enumCheckboxes, children: enumOptions(selectedProperty).map((item) => {
314
+ const val = item.id;
315
+ const checked = enumSelections.includes(val);
316
+ return (_jsxs("label", { className: style.enumCheckboxLabel, children: [_jsx(Checkbox, { checked: checked, onCheckedChange: () => {
317
+ setEnumSelections((prev) => checked
318
+ ? prev.filter((v) => v !== val)
319
+ : [...prev, val]);
320
+ } }), _jsx("span", { children: humanizeEnumLabel(val) })] }, val));
321
+ }) })) : selectedUiType === 'boolean' ? (_jsxs(Select.Root, { value: filterValue, onValueChange: setFilterValue, children: [_jsx(Select.Trigger, { "aria-label": "Select Value", children: _jsx(Select.Value, { placeholder: "Select..." }) }), _jsx(Select.Content, { children: _jsxs(Select.Group, { children: [_jsx(Select.Item, { value: "true", children: "Yes" }), _jsx(Select.Item, { value: "false", children: "No" })] }) })] })) : (_jsx(Input, { name: "filterValue", type: selectedUiType === 'number' ? 'number' : selectedUiType === 'date' || selectedUiType === 'datetime' ? 'date' : 'text', placeholder: "Enter value...", value: filterValue, onChange: (e) => setFilterValue(e.target.value), onKeyDown: (e) => {
322
+ if (e.key === 'Enter')
323
+ handleFilterSubmit();
324
+ } }))] }))] }), _jsx(Typography, { className: style.filterNotice, children: "Filters apply to loaded rows only" })] }), _jsxs(Drawer.Footer, { className: style.filterDrawerFooter, children: [_jsx(Drawer.Close, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Cancel" }) }), _jsx(Drawer.Close, { asChild: true, children: _jsx(Button, { onClick: handleFilterSubmit, children: "Apply Filter" }) })] })] }) })] }), tableMode && onTableModeChange && (_jsxs("div", { className: style.tableModeToggle, children: [_jsx(Button, { size: "small", variant: tableMode === 'auto' ? 'solid' : 'outline', onClick: () => onTableModeChange('auto'), children: "Smart" }), _jsx(Button, { size: "small", variant: tableMode === 'full' ? 'solid' : 'outline', onClick: () => onTableModeChange('full'), children: "All" })] })), isPickMode && selectionCount > 0 && (_jsxs(Button, { size: "small", onClick: handlePickSelected, style: { marginLeft: 'auto' }, children: [_jsx(Icons.Check, { width: "16", height: "16" }), "Use Selected (", selectionCount, pickMaxCount != null ? ` / ${pickMaxCount}` : '', ")"] }))] }), _jsx(AnimatePresence, { children: hasSelection && !isPickMode && (_jsxs(motion.div, { className: style.selectionBar, initial: { opacity: 0, height: 0 }, animate: { opacity: 1, height: 'auto' }, exit: { opacity: 0, height: 0 }, transition: { duration: reducedMotion ? 0 : 0.2, ease: [0.4, 0, 0.2, 1] }, children: [_jsxs("span", { className: style.selectionCount, children: [selectionCount, " selected"] }), _jsxs("div", { className: style.selectionActions, children: [_jsx(Button, { size: "small", variant: "ghost", onClick: clearSelection, disabled: batchOperationPending, children: "Clear" }), onBatchUpdate && (_jsxs(Button, { size: "small", onClick: () => setBatchEditOpen(true), disabled: batchOperationPending, children: [_jsx(Icons.Pencil, { width: 16, height: 16 }), "Edit Selected (", selectionCount, ")"] })), canDelete && (_jsxs(Button, { size: "small", variant: "outline", className: style.deleteDataButton, onClick: handleDeleteCollectively, disabled: batchOperationPending, children: [batchOperationPending ? _jsx(Spinner, { size: "small" }) : _jsx(Icons.Trash2, { width: 16, height: 16 }), "Delete (", selectionCount, ")"] }))] })] })) }), _jsx(AnimatePresence, { children: batchResult && (_jsxs(motion.div, { className: cl(style.batchResultBar, batchResult.isError && style.batchResultError), initial: { opacity: 0, height: 0 }, animate: { opacity: 1, height: 'auto' }, exit: { opacity: 0, height: 0 }, transition: { duration: reducedMotion ? 0 : 0.2 }, children: [batchResult.message, _jsx("button", { className: style.batchResultDismiss, onClick: () => setBatchResult(null), children: _jsx(Icons.X, { width: 14, height: 14 }) })] })) }), _jsx(AnimatePresence, { children: filters.length > 0 && (_jsx(motion.div, { className: style.tableBar, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, exit: { opacity: 0, x: -20 }, transition: {
325
+ duration: reducedMotion ? 0 : 0.25,
326
+ ease: [0.4, 0, 0.2, 1],
327
+ }, children: _jsx("div", { className: style.filterBar, children: _jsxs(_Fragment, { children: [_jsx(motion.div, { initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, transition: {
328
+ duration: reducedMotion ? 0 : 0.2,
329
+ ease: [0.4, 0, 0.2, 1],
330
+ }, children: _jsxs(Typography, { className: style.filterLabel, children: ["Filters (", filteredData.length, " of ", data.length, "):"] }) }), filters.map((filter, index) => (_jsx(motion.div, { initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, exit: { opacity: 0, x: -10, scale: 0.9 }, transition: {
331
+ duration: reducedMotion ? 0 : 0.2,
332
+ delay: reducedMotion ? 0 : 0.1 + index * 0.05,
333
+ ease: [0.4, 0, 0.2, 1],
334
+ }, children: _jsx(FilterBadge, { label: formatFilterLabel(filter), isActive: filter.isActive, onToggle: () => handleFilterToggle(index), onRemove: () => handleFilterRemove(index) }) }, filter.id))), filters.length > 1 && (_jsx(Button, { size: "small", variant: "ghost", onClick: () => setFilters([]), children: "Clear all" }))] }) }) })) }), _jsx("div", { className: style.tableContainer, children: _jsxs("table", { className: style.table, children: [_jsx("thead", { children: table.getHeaderGroups().map((headerGroup) => (_jsxs("tr", { className: style.tr, children: [_jsx("th", { className: cl(style.th, style.sticky, style.stickyLeft), children: _jsx(Checkbox, { onCheckedChange: toggleSelectAll }) }), headerGroup.headers.map((header, index) => {
335
+ var _a;
336
+ return (_jsx("th", { colSpan: header.colSpan, className: style.th, children: index === 0 ? (_jsx("div", { children: flexRender(header.column.columnDef.header, header.getContext()) })) : (_jsxs("div", { className: header.column.getCanSort()
337
+ ? style.canSort
338
+ : '',
339
+ onClick: header.column.getToggleSortingHandler(), children: [flexRender(header.column.columnDef.header, header.getContext()), (_a = {
340
+ asc: _jsx(Icons.ChevronUp, { width: 14, height: 14 }),
341
+ desc: _jsx(Icons.ChevronDown, { width: 14, height: 14 }),
342
+ }[header.column.getIsSorted()]) !== null && _a !== void 0 ? _a : (_jsx(Icons.ChevronsLeftRight, { width: 14, height: 14 }))] })) }, header.id));
343
+ }), _jsx("th", { className: cl(style.th, style.sticky, style.stickyRight), children: "Actions" })] }, headerGroup.id))) }), _jsx(motion.tbody, { variants: tableStaggerContainer, initial: "initial", animate: "animate", children: isLoading
344
+ ? Array.from({ length: config.pageSize }, (_, index) => (_jsx(TableRowSkeleton, { columns: 1 }, `skeleton-${index}`)))
345
+ : table.getRowModel().rows.map((row) => {
346
+ var _a;
347
+ const rowUri = (_a = row.original) === null || _a === void 0 ? void 0 : _a.id;
348
+ const rowSelected = rowUri ? isRowSelected(rowUri) : false;
349
+ return (_jsxs(motion.tr, { className: cl(style.tr, isPickMode && style.pickableRow, isPickMode && pickLimitReached && !rowSelected && style.pickDisabledRow), variants: reducedMotion ? undefined : tableRowItem, layout: true, onClick: isPickMode ? () => {
350
+ if (!rowUri)
351
+ return;
352
+ if (pickLimitReached && !rowSelected)
353
+ return;
354
+ toggleRowSelection(rowUri);
355
+ } : undefined, style: isPickMode ? { cursor: pickLimitReached && !rowSelected ? 'not-allowed' : 'pointer' } : undefined, children: [_jsx("td", { className: cl(style.td, style.sticky, style.stickyLeft), onClick: isPickMode ? (e) => e.stopPropagation() : undefined, children: _jsx(Checkbox, { onCheckedChange: () => {
356
+ if (!rowUri)
357
+ return;
358
+ if (isPickMode && pickLimitReached && !rowSelected)
359
+ return;
360
+ toggleRowSelection(rowUri);
361
+ }, checked: rowSelected, disabled: isPickMode && pickLimitReached && !rowSelected }) }), row.getVisibleCells().map((cell) => {
362
+ return (_jsx("td", { className: cl(style.td, getCellStyle(cell)), children: renderCellContent(cell) }, cell.id));
363
+ }), _jsx("td", { className: cl(style.td, style.sticky, style.stickyRight), children: isPickMode ? (_jsxs(Button, { size: "small", onClick: () => handlePick(row), disabled: pickLimitReached && !rowSelected, children: [_jsx(Icons.Check, { width: "16", height: "16" }), "Select"] })) : (_jsxs("div", { className: style.actionButtons, children: [_jsx(IconButton, { size: "small", variant: "ghost", "aria-label": "View", className: cl(style.actionTableButton, style.viewAction), onClick: () => handleView(row), children: _jsx(Icons.Eye, { width: 16, height: 16 }) }), _jsx(IconButton, { size: "small", variant: "ghost", "aria-label": "Edit", className: cl(style.actionTableButton, style.editAction), onClick: () => handleEdit(row), children: _jsx(Icons.Pencil, { width: 16, height: 16 }) }), canDelete && (_jsx(IconButton, { size: "small", variant: "ghost", "aria-label": "Delete", className: cl(style.actionTableButton, style.removeAction), onClick: () => handleDelete(row), children: _jsx(Icons.Trash2, { width: 16, height: 16 }) }))] })) })] }, row.id));
364
+ }) })] }) }), _jsxs("div", { className: style.pagination, children: [_jsxs(Typography, { className: style.pageInfo, children: ["Page", ' ', _jsxs("strong", { children: [table.getState().pagination.pageIndex + 1, " of", ' ', table.getPageCount().toLocaleString()] })] }), _jsx("div", { className: style.pageInput, children: _jsx(Input, { size: "small", type: "number", className: style.goToPageForm, value: table.getState().pagination.pageIndex + 1, onChange: (e) => {
365
+ const page = e.target.value ? Number(e.target.value) - 1 : 0;
366
+ table.setPageIndex(page);
367
+ } }) }), _jsx("div", { className: style.pageShowItem, children: _jsxs(Select.Root, { value: table.getState().pagination.pageSize.toString(), onValueChange: (value) => table.setPageSize(Number(value)), children: [_jsx(Select.Trigger, { size: "small", children: _jsx(Select.Value, { placeholder: "Show Rows" }) }), _jsx(Select.Content, { children: _jsx(Select.Group, { children: [10, 20, 30, 40, 50].map((pageSize) => (_jsxs(Select.Item, { value: pageSize.toString(), children: ["Show ", pageSize] }, pageSize))) }) })] }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.firstPage(), disabled: !table.getCanPreviousPage(), children: _jsx(Icons.ChevronsLeft, { width: 18, height: 18 }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: _jsx(Icons.ChevronLeft, { width: 18, height: 18 }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: _jsx(Icons.ChevronRight, { width: 18, height: 18 }) }), _jsx(IconButton, { size: "small", variant: "outline", className: style.paginationButton, onClick: () => table.lastPage(), disabled: !table.getCanNextPage(), children: _jsx(Icons.ChevronsRight, { width: 18, height: 18 }) })] }), deletionTarget && canDelete && (_jsx(InstanceDeletionDialog, { isOpen: true, projectId: deletionProjectId, targets: deletionTarget.targets, labels: deletionTarget.labels, onClose: () => setDeletionTarget(null), onDeleted: handleDeletionCompleted, previewDeletion: previewDeletion, executeDeletion: executeDeletion })), onBatchUpdate && propertiesMap && (_jsx(BatchEditDrawer, { isOpen: batchEditOpen, onClose: () => setBatchEditOpen(false), shape: shape, properties: propertiesMap, selectedCount: selectionCount, onApply: handleBatchApply, isLoading: batchOperationPending }))] }));
368
+ }
369
+ export default ReactTable;
370
+ //# sourceMappingURL=ReactTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactTable.js","sourceRoot":"","sources":["../../../src/components/ReactTable.tsx"],"names":[],"mappings":"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"}