@vuu-ui/vuu-table 0.8.32 → 0.8.34

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 (184) hide show
  1. package/cjs/Row.css +115 -0
  2. package/cjs/Row.js +115 -0
  3. package/cjs/Row.js.map +1 -0
  4. package/cjs/Table.css +151 -0
  5. package/cjs/Table.js +276 -0
  6. package/cjs/Table.js.map +1 -0
  7. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css +5 -0
  8. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +33 -0
  9. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -0
  10. package/cjs/cell-renderers/input-cell/InputCell.css +31 -0
  11. package/cjs/cell-renderers/input-cell/InputCell.js +49 -0
  12. package/cjs/cell-renderers/input-cell/InputCell.js.map +1 -0
  13. package/cjs/cell-renderers/toggle-cell/ToggleCell.css +32 -0
  14. package/cjs/cell-renderers/toggle-cell/ToggleCell.js +59 -0
  15. package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +1 -0
  16. package/cjs/column-header-pill/ColumnHeaderPill.css +30 -0
  17. package/cjs/column-header-pill/ColumnHeaderPill.js +44 -0
  18. package/cjs/column-header-pill/ColumnHeaderPill.js.map +1 -0
  19. package/cjs/column-header-pill/GroupColumnPill.css +7 -0
  20. package/cjs/column-header-pill/GroupColumnPill.js +20 -0
  21. package/cjs/column-header-pill/GroupColumnPill.js.map +1 -0
  22. package/cjs/column-header-pill/SortIndicator.css +7 -0
  23. package/cjs/column-header-pill/SortIndicator.js +18 -0
  24. package/cjs/column-header-pill/SortIndicator.js.map +1 -0
  25. package/cjs/column-menu/ColumnMenu.css +21 -0
  26. package/cjs/column-menu/ColumnMenu.js +21 -0
  27. package/cjs/column-menu/ColumnMenu.js.map +1 -0
  28. package/cjs/column-resizing/ColumnResizer.css +28 -0
  29. package/cjs/column-resizing/ColumnResizer.js +63 -0
  30. package/cjs/column-resizing/ColumnResizer.js.map +1 -0
  31. package/cjs/column-resizing/useTableColumnResize.js +55 -0
  32. package/cjs/column-resizing/useTableColumnResize.js.map +1 -0
  33. package/cjs/context-menu/buildContextMenuDescriptors.js +214 -0
  34. package/cjs/context-menu/buildContextMenuDescriptors.js.map +1 -0
  35. package/cjs/context-menu/useHandleTableContextMenu.js +81 -0
  36. package/cjs/context-menu/useHandleTableContextMenu.js.map +1 -0
  37. package/cjs/header-cell/GroupHeaderCell.css +65 -0
  38. package/cjs/header-cell/GroupHeaderCell.js +108 -0
  39. package/cjs/header-cell/GroupHeaderCell.js.map +1 -0
  40. package/cjs/header-cell/HeaderCell.css +146 -0
  41. package/cjs/header-cell/HeaderCell.js +100 -0
  42. package/cjs/header-cell/HeaderCell.js.map +1 -0
  43. package/cjs/index.js +35 -1
  44. package/cjs/index.js.map +1 -7
  45. package/cjs/moving-window.js +61 -0
  46. package/cjs/moving-window.js.map +1 -0
  47. package/cjs/table-cell/TableCell.css +41 -0
  48. package/cjs/table-cell/TableCell.js +63 -0
  49. package/cjs/table-cell/TableCell.js.map +1 -0
  50. package/cjs/table-cell/TableGroupCell.css +26 -0
  51. package/cjs/table-cell/TableGroupCell.js +45 -0
  52. package/cjs/table-cell/TableGroupCell.js.map +1 -0
  53. package/cjs/table-config.js +25 -0
  54. package/cjs/table-config.js.map +1 -0
  55. package/cjs/table-dom-utils.js +60 -0
  56. package/cjs/table-dom-utils.js.map +1 -0
  57. package/cjs/table-header/TableHeader.js +87 -0
  58. package/cjs/table-header/TableHeader.js.map +1 -0
  59. package/cjs/table-header/useTableHeader.js +72 -0
  60. package/cjs/table-header/useTableHeader.js.map +1 -0
  61. package/cjs/useCell.js +28 -0
  62. package/cjs/useCell.js.map +1 -0
  63. package/cjs/useCellEditing.js +79 -0
  64. package/cjs/useCellEditing.js.map +1 -0
  65. package/cjs/useControlledTableNavigation.js +43 -0
  66. package/cjs/useControlledTableNavigation.js.map +1 -0
  67. package/cjs/useDataSource.js +104 -0
  68. package/cjs/useDataSource.js.map +1 -0
  69. package/cjs/useInitialValue.js +11 -0
  70. package/cjs/useInitialValue.js.map +1 -0
  71. package/cjs/useKeyboardNavigation.js +304 -0
  72. package/cjs/useKeyboardNavigation.js.map +1 -0
  73. package/cjs/useRowClassNameGenerators.js +34 -0
  74. package/cjs/useRowClassNameGenerators.js.map +1 -0
  75. package/cjs/useRowHeight.js +43 -0
  76. package/cjs/useRowHeight.js.map +1 -0
  77. package/cjs/useSelection.js +64 -0
  78. package/cjs/useSelection.js.map +1 -0
  79. package/cjs/useTable.js +553 -0
  80. package/cjs/useTable.js.map +1 -0
  81. package/cjs/useTableAndColumnSettings.js +128 -0
  82. package/cjs/useTableAndColumnSettings.js.map +1 -0
  83. package/cjs/useTableContextMenu.js +42 -0
  84. package/cjs/useTableContextMenu.js.map +1 -0
  85. package/cjs/useTableModel.js +297 -0
  86. package/cjs/useTableModel.js.map +1 -0
  87. package/cjs/useTableScroll.js +396 -0
  88. package/cjs/useTableScroll.js.map +1 -0
  89. package/cjs/useTableViewport.js +122 -0
  90. package/cjs/useTableViewport.js.map +1 -0
  91. package/esm/Row.css +115 -0
  92. package/esm/Row.js +112 -0
  93. package/esm/Row.js.map +1 -0
  94. package/esm/Table.css +151 -0
  95. package/esm/Table.js +274 -0
  96. package/esm/Table.js.map +1 -0
  97. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css +5 -0
  98. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +31 -0
  99. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +1 -0
  100. package/esm/cell-renderers/input-cell/InputCell.css +31 -0
  101. package/esm/cell-renderers/input-cell/InputCell.js +47 -0
  102. package/esm/cell-renderers/input-cell/InputCell.js.map +1 -0
  103. package/esm/cell-renderers/toggle-cell/ToggleCell.css +32 -0
  104. package/esm/cell-renderers/toggle-cell/ToggleCell.js +57 -0
  105. package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +1 -0
  106. package/esm/column-header-pill/ColumnHeaderPill.css +30 -0
  107. package/esm/column-header-pill/ColumnHeaderPill.js +42 -0
  108. package/esm/column-header-pill/ColumnHeaderPill.js.map +1 -0
  109. package/esm/column-header-pill/GroupColumnPill.css +7 -0
  110. package/esm/column-header-pill/GroupColumnPill.js +18 -0
  111. package/esm/column-header-pill/GroupColumnPill.js.map +1 -0
  112. package/esm/column-header-pill/SortIndicator.css +7 -0
  113. package/esm/column-header-pill/SortIndicator.js +16 -0
  114. package/esm/column-header-pill/SortIndicator.js.map +1 -0
  115. package/esm/column-menu/ColumnMenu.css +21 -0
  116. package/esm/column-menu/ColumnMenu.js +19 -0
  117. package/esm/column-menu/ColumnMenu.js.map +1 -0
  118. package/esm/column-resizing/ColumnResizer.css +28 -0
  119. package/esm/column-resizing/ColumnResizer.js +61 -0
  120. package/esm/column-resizing/ColumnResizer.js.map +1 -0
  121. package/esm/column-resizing/useTableColumnResize.js +53 -0
  122. package/esm/column-resizing/useTableColumnResize.js.map +1 -0
  123. package/esm/context-menu/buildContextMenuDescriptors.js +212 -0
  124. package/esm/context-menu/buildContextMenuDescriptors.js.map +1 -0
  125. package/esm/context-menu/useHandleTableContextMenu.js +79 -0
  126. package/esm/context-menu/useHandleTableContextMenu.js.map +1 -0
  127. package/esm/header-cell/GroupHeaderCell.css +65 -0
  128. package/esm/header-cell/GroupHeaderCell.js +106 -0
  129. package/esm/header-cell/GroupHeaderCell.js.map +1 -0
  130. package/esm/header-cell/HeaderCell.css +146 -0
  131. package/esm/header-cell/HeaderCell.js +98 -0
  132. package/esm/header-cell/HeaderCell.js.map +1 -0
  133. package/esm/index.js +13 -1
  134. package/esm/index.js.map +1 -7
  135. package/esm/moving-window.js +59 -0
  136. package/esm/moving-window.js.map +1 -0
  137. package/esm/table-cell/TableCell.css +41 -0
  138. package/esm/table-cell/TableCell.js +61 -0
  139. package/esm/table-cell/TableCell.js.map +1 -0
  140. package/esm/table-cell/TableGroupCell.css +26 -0
  141. package/esm/table-cell/TableGroupCell.js +43 -0
  142. package/esm/table-cell/TableGroupCell.js.map +1 -0
  143. package/esm/table-config.js +23 -0
  144. package/esm/table-config.js.map +1 -0
  145. package/esm/table-dom-utils.js +51 -0
  146. package/esm/table-dom-utils.js.map +1 -0
  147. package/esm/table-header/TableHeader.js +85 -0
  148. package/esm/table-header/TableHeader.js.map +1 -0
  149. package/esm/table-header/useTableHeader.js +70 -0
  150. package/esm/table-header/useTableHeader.js.map +1 -0
  151. package/esm/useCell.js +26 -0
  152. package/esm/useCell.js.map +1 -0
  153. package/esm/useCellEditing.js +77 -0
  154. package/esm/useCellEditing.js.map +1 -0
  155. package/esm/useControlledTableNavigation.js +41 -0
  156. package/esm/useControlledTableNavigation.js.map +1 -0
  157. package/esm/useDataSource.js +101 -0
  158. package/esm/useDataSource.js.map +1 -0
  159. package/esm/useInitialValue.js +9 -0
  160. package/esm/useInitialValue.js.map +1 -0
  161. package/esm/useKeyboardNavigation.js +300 -0
  162. package/esm/useKeyboardNavigation.js.map +1 -0
  163. package/esm/useRowClassNameGenerators.js +32 -0
  164. package/esm/useRowClassNameGenerators.js.map +1 -0
  165. package/esm/useRowHeight.js +41 -0
  166. package/esm/useRowHeight.js.map +1 -0
  167. package/esm/useSelection.js +62 -0
  168. package/esm/useSelection.js.map +1 -0
  169. package/esm/useTable.js +551 -0
  170. package/esm/useTable.js.map +1 -0
  171. package/esm/useTableAndColumnSettings.js +126 -0
  172. package/esm/useTableAndColumnSettings.js.map +1 -0
  173. package/esm/useTableContextMenu.js +40 -0
  174. package/esm/useTableContextMenu.js.map +1 -0
  175. package/esm/useTableModel.js +293 -0
  176. package/esm/useTableModel.js.map +1 -0
  177. package/esm/useTableScroll.js +393 -0
  178. package/esm/useTableScroll.js.map +1 -0
  179. package/esm/useTableViewport.js +120 -0
  180. package/esm/useTableViewport.js.map +1 -0
  181. package/package.json +12 -14
  182. package/LICENSE +0 -201
  183. package/index.css +0 -2
  184. package/index.css.map +0 -7
@@ -0,0 +1,146 @@
1
+ .vuuTableGroupHeaderCell,
2
+ .vuuTableHeaderCell {
3
+ --cell-align: 'flex-start';
4
+ --vuuColumnHeaderPill-margin: 0;
5
+ --vuuColumnHeaderPill-flex: 0 0 24px;
6
+
7
+ align-items: center;
8
+ background-color: var(--vuuTableHeaderCell-background, inherit);
9
+ border-bottom: 1px solid #ccc;
10
+ border-right-color: var(--cell-borderColor);
11
+ border-right-style: solid;
12
+ border-right-width: 1px;
13
+ box-sizing: border-box;
14
+ cursor: default;
15
+ display: inline-flex;
16
+ gap: 4px;
17
+ height: var(--header-height);
18
+ padding: 0 12px 0 4px;
19
+ position: relative;
20
+ vertical-align: top;
21
+ }
22
+
23
+ .vuuTableHeaderCell:focus {
24
+ outline: var(--vuuTableCell-outline, solid var(--salt-focused-outlineColor) 2px);
25
+ outline-offset: -3px;
26
+ }
27
+
28
+ .vuuTableHeaderCell-right {
29
+ --columnResizer-left: 0;
30
+ --vuuTable-columnMenu-margin: 0;
31
+ --vuuColumnHeaderPill-margin: 0 3px 0 0;
32
+ --column-menu-left: 2px;
33
+ justify-content: flex-end;
34
+ padding: 0 3px 0 12px;
35
+ }
36
+
37
+ .vuuTableHeaderCell-noMenu {
38
+ padding-left: var(--salt-spacing-300)
39
+ }
40
+
41
+ .vuuTableHeaderCell-label {
42
+ flex: 0 1 auto;
43
+ line-height: calc(var(--header-height) - 1px);
44
+ overflow: hidden;
45
+ text-overflow: ellipsis;
46
+ white-space: nowrap;
47
+ }
48
+
49
+ .vuuTableHeaderCell-right .vuuTableHeaderCell-label {
50
+ text-align: right;
51
+ }
52
+
53
+ .vuuTableHeaderCell-resizing {
54
+ --columnResizeThumb-color: var(--vuu-color-purple-10);
55
+ --columnResizer-color: var(--vuu-color-purple-10);
56
+ --columnResizer-height: var(--table-height);
57
+ }
58
+
59
+ .vuuTableHeaderCell.vuuPinLeft {
60
+ padding-left: 2px;
61
+ }
62
+
63
+ .vuuTableHeaderCell.vuuPinLeft.vuuEndPin .vuuColumnResizer:before {
64
+ --height: calc(var(--table-height) - var(--horizontal-scrollbar-height));
65
+ --inset-r: calc(var(--pin-width) - 2px);
66
+ --inset-b: calc(var(--height) - 2px);
67
+ --clip-path: polygon(
68
+ 0% 0%,
69
+ 0% 120%,
70
+ 2px 120%,
71
+ 2px 2px,
72
+ var(--inset-r) 2px,
73
+ var(--inset-r) var(--inset-b),
74
+ 2px var(--inset-b),
75
+ 2px 120%,
76
+ 120% 120%,
77
+ 120% 0%
78
+ );
79
+ background-color: transparent;
80
+ border-color: var(--vuuTablePinnedColumn-borderColor, var(--salt-container-primary-borderColor));
81
+ border-width: 1px;
82
+ border-style: solid solid solid solid;
83
+ /* border-radius: 0 6px 6px 0; */
84
+ border-radius: 4px;
85
+ box-shadow: 2px 1px 4px 0px rgba(0, 0, 0, 0.10);
86
+ /* clip-path: inset(10px 10px 10px 10px); */
87
+ clip-path: var(--clip-path);
88
+ content: '';
89
+ position: absolute;
90
+ width: var(--pin-width);
91
+ top:0;
92
+ bottom:0;
93
+ right: 3px;
94
+ height: var(--height);
95
+ z-index: -5;
96
+ }
97
+
98
+ .vuuTableHeaderCell.vuuPinRight.vuuEndPin .vuuColumnResizer:before {
99
+ --height: calc(var(--table-height) - var(--horizontal-scrollbar-height));
100
+ --inset-r: calc(var(--pin-width) - 2px);
101
+ --inset-b: calc(var(--height) - 2px);
102
+ --clip-path: polygon(
103
+ -20% 0%,
104
+ -20% 120%,
105
+ 2px 120%,
106
+ 2px 2px,
107
+ var(--inset-r) 2px,
108
+ var(--inset-r) var(--inset-b),
109
+ 2px var(--inset-b),
110
+ 2px 120%,
111
+ 120% 120%,
112
+ 120% 0%
113
+ );
114
+ background-color: transparent;
115
+ border-color: #A9AAAD;
116
+ border-width: 1px;
117
+ border-style: solid solid solid solid;
118
+ /* border-radius: 0 6px 6px 0; */
119
+ border-radius: 4px;
120
+ box-shadow: -2px 1px 4px 0px rgba(0, 0, 0, 0.10);
121
+ /* clip-path: inset(10px 10px 10px 10px); */
122
+ clip-path: var(--clip-path);
123
+ content: '';
124
+ position: absolute;
125
+ width: var(--pin-width);
126
+ top:0;
127
+ bottom:0;
128
+ right: 0px;
129
+ height: var(--height);
130
+ z-index: -5;
131
+ }
132
+
133
+ .vuuTableHeaderCell.vuuDraggable-dragAway {
134
+ display: none;
135
+ }
136
+
137
+ .vuuTable-headingCell {
138
+ background: var(--dataTable-background);
139
+ border-color: var(--salt-separable-tertiary-borderColor);
140
+ border-style: solid solid solid none;
141
+ border-width: 1px;
142
+ color: var(--salt-text-secondary-foreground);
143
+ display: inline-block;
144
+ height: var(--header-height);
145
+ padding: 0 !important;
146
+ }
@@ -0,0 +1,100 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var vuuPopups = require('@vuu-ui/vuu-popups');
5
+ var cx = require('clsx');
6
+ var react = require('react');
7
+ var SortIndicator = require('../column-header-pill/SortIndicator.js');
8
+ var ColumnMenu = require('../column-menu/ColumnMenu.js');
9
+ var ColumnResizer = require('../column-resizing/ColumnResizer.js');
10
+ var useTableColumnResize = require('../column-resizing/useTableColumnResize.js');
11
+ var useCell = require('../useCell.js');
12
+
13
+ const classBase = "vuuTableHeaderCell";
14
+ const HeaderCell = ({
15
+ className: classNameProp,
16
+ column,
17
+ onClick,
18
+ onResize,
19
+ showMenu = true,
20
+ ...htmlAttributes
21
+ }) => {
22
+ const { HeaderCellContentRenderer, HeaderCellLabelRenderer } = column;
23
+ const rootRef = react.useRef(null);
24
+ const { isResizing, ...resizeProps } = useTableColumnResize.useTableColumnResize({
25
+ column,
26
+ onResize,
27
+ rootRef
28
+ });
29
+ const [showContextMenu] = vuuPopups.useContextMenu();
30
+ const handleContextMenu = react.useMemo(() => {
31
+ if (showMenu) {
32
+ return void 0;
33
+ } else {
34
+ return (e) => showContextMenu(e, "column-menu", { column });
35
+ }
36
+ }, [column, showContextMenu, showMenu]);
37
+ const headerItems = react.useMemo(() => {
38
+ const sortIndicator = /* @__PURE__ */ jsxRuntime.jsx(SortIndicator.SortIndicator, { column });
39
+ const columnLabel = HeaderCellLabelRenderer ? /* @__PURE__ */ jsxRuntime.jsx(
40
+ HeaderCellLabelRenderer,
41
+ {
42
+ className: `${classBase}-label`,
43
+ column
44
+ }
45
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${classBase}-label`, children: column.label ?? column.name });
46
+ const columnContent = HeaderCellContentRenderer ? [/* @__PURE__ */ jsxRuntime.jsx(HeaderCellContentRenderer, { column }, "content")] : [];
47
+ if (showMenu) {
48
+ const columnMenu = /* @__PURE__ */ jsxRuntime.jsx(ColumnMenu.ColumnMenu, { column });
49
+ if (column.align === "right") {
50
+ return [sortIndicator, columnLabel, columnContent, columnMenu];
51
+ } else {
52
+ return [columnMenu, columnLabel, sortIndicator, columnContent];
53
+ }
54
+ } else {
55
+ if (column.align === "right") {
56
+ return [sortIndicator, columnLabel, columnContent];
57
+ } else {
58
+ return [columnLabel, sortIndicator, columnContent];
59
+ }
60
+ }
61
+ }, [HeaderCellContentRenderer, HeaderCellLabelRenderer, column, showMenu]);
62
+ const handleClick = react.useCallback(
63
+ (evt) => {
64
+ !isResizing && onClick?.(evt);
65
+ },
66
+ [isResizing, onClick]
67
+ );
68
+ const handleKeyDown = react.useCallback(
69
+ (evt) => {
70
+ if (evt.key === "Enter") {
71
+ onClick?.(evt);
72
+ }
73
+ },
74
+ [onClick]
75
+ );
76
+ const { className, style } = useCell.useCell(column, classBase, true);
77
+ return /* @__PURE__ */ jsxRuntime.jsxs(
78
+ "div",
79
+ {
80
+ ...htmlAttributes,
81
+ className: cx(className, classNameProp, {
82
+ [`${classBase}-resizing`]: isResizing,
83
+ [`${classBase}-noMenu`]: showMenu === false
84
+ }),
85
+ onClick: handleClick,
86
+ onContextMenu: handleContextMenu,
87
+ onKeyDown: handleKeyDown,
88
+ ref: rootRef,
89
+ role: "columnheader",
90
+ style,
91
+ children: [
92
+ ...headerItems,
93
+ column.resizeable !== false ? /* @__PURE__ */ jsxRuntime.jsx(ColumnResizer.ColumnResizer, { ...resizeProps }) : null
94
+ ]
95
+ }
96
+ );
97
+ };
98
+
99
+ exports.HeaderCell = HeaderCell;
100
+ //# sourceMappingURL=HeaderCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderCell.js","sources":["../../src/header-cell/HeaderCell.tsx"],"sourcesContent":["import { useContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { HeaderCellProps } from \"@vuu-ui/vuu-table-types\";\nimport cx from \"clsx\";\nimport {\n KeyboardEventHandler,\n MouseEvent,\n MouseEventHandler,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { SortIndicator } from \"../column-header-pill\";\nimport { ColumnMenu } from \"../column-menu\";\nimport { ColumnResizer, useTableColumnResize } from \"../column-resizing\";\nimport { useCell } from \"../useCell\";\n\nimport \"./HeaderCell.css\";\n\nconst classBase = \"vuuTableHeaderCell\";\n\nexport const HeaderCell = ({\n className: classNameProp,\n column,\n onClick,\n onResize,\n showMenu = true,\n ...htmlAttributes\n}: HeaderCellProps) => {\n const { HeaderCellContentRenderer, HeaderCellLabelRenderer } = column;\n const rootRef = useRef<HTMLDivElement>(null);\n const { isResizing, ...resizeProps } = useTableColumnResize({\n column,\n onResize,\n rootRef,\n });\n\n const [showContextMenu] = useContextMenu();\n\n const handleContextMenu = useMemo(() => {\n if (showMenu) {\n return undefined;\n } else {\n return (e: MouseEvent) => showContextMenu(e, \"column-menu\", { column });\n }\n }, [column, showContextMenu, showMenu]);\n\n const headerItems = useMemo(() => {\n const sortIndicator = <SortIndicator column={column} />;\n const columnLabel = HeaderCellLabelRenderer ? (\n <HeaderCellLabelRenderer\n className={`${classBase}-label`}\n column={column}\n />\n ) : (\n <div className={`${classBase}-label`}>{column.label ?? column.name}</div>\n );\n const columnContent = HeaderCellContentRenderer\n ? [<HeaderCellContentRenderer column={column} key=\"content\" />]\n : [];\n\n if (showMenu) {\n const columnMenu = <ColumnMenu column={column} />;\n\n if (column.align === \"right\") {\n return [sortIndicator, columnLabel, columnContent, columnMenu];\n } else {\n return [columnMenu, columnLabel, sortIndicator, columnContent];\n }\n } else {\n if (column.align === \"right\") {\n return [sortIndicator, columnLabel, columnContent];\n } else {\n return [columnLabel, sortIndicator, columnContent];\n }\n }\n }, [HeaderCellContentRenderer, HeaderCellLabelRenderer, column, showMenu]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (evt) => {\n !isResizing && onClick?.(evt);\n },\n [isResizing, onClick]\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (evt) => {\n if (evt.key === \"Enter\") {\n onClick?.(evt);\n }\n },\n [onClick]\n );\n\n const { className, style } = useCell(column, classBase, true);\n\n return (\n <div\n {...htmlAttributes}\n className={cx(className, classNameProp, {\n [`${classBase}-resizing`]: isResizing,\n [`${classBase}-noMenu`]: showMenu === false,\n })}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n onKeyDown={handleKeyDown}\n ref={rootRef}\n role=\"columnheader\"\n style={style}\n >\n {...headerItems}\n {column.resizeable !== false ? <ColumnResizer {...resizeProps} /> : null}\n </div>\n );\n};\n"],"names":["useRef","useTableColumnResize","useContextMenu","useMemo","jsx","SortIndicator","ColumnMenu","useCallback","useCell","jsxs","ColumnResizer"],"mappings":";;;;;;;;;;;;AAkBA,MAAM,SAAY,GAAA,oBAAA,CAAA;AAEX,MAAM,aAAa,CAAC;AAAA,EACzB,SAAW,EAAA,aAAA;AAAA,EACX,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAA,IAAA;AAAA,EACX,GAAG,cAAA;AACL,CAAuB,KAAA;AACrB,EAAM,MAAA,EAAE,yBAA2B,EAAA,uBAAA,EAA4B,GAAA,MAAA,CAAA;AAC/D,EAAM,MAAA,OAAA,GAAUA,aAAuB,IAAI,CAAA,CAAA;AAC3C,EAAA,MAAM,EAAE,UAAA,EAAY,GAAG,WAAA,KAAgBC,yCAAqB,CAAA;AAAA,IAC1D,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,CAAC,eAAe,CAAA,GAAIC,wBAAe,EAAA,CAAA;AAEzC,EAAM,MAAA,iBAAA,GAAoBC,cAAQ,MAAM;AACtC,IAAA,IAAI,QAAU,EAAA;AACZ,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAA,OAAO,CAAC,CAAkB,KAAA,eAAA,CAAgB,GAAG,aAAe,EAAA,EAAE,QAAQ,CAAA,CAAA;AAAA,KACxE;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,eAAA,EAAiB,QAAQ,CAAC,CAAA,CAAA;AAEtC,EAAM,MAAA,WAAA,GAAcA,cAAQ,MAAM;AAChC,IAAM,MAAA,aAAA,mBAAiBC,cAAA,CAAAC,2BAAA,EAAA,EAAc,MAAgB,EAAA,CAAA,CAAA;AACrD,IAAA,MAAM,cAAc,uBAClB,mBAAAD,cAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,SAAS,CAAA,MAAA,CAAA;AAAA,QACvB,MAAA;AAAA,OAAA;AAAA,KACF,mBAECA,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,SAAS,CAAW,MAAA,CAAA,EAAA,QAAA,EAAA,MAAA,CAAO,KAAS,IAAA,MAAA,CAAO,IAAK,EAAA,CAAA,CAAA;AAErE,IAAM,MAAA,aAAA,GAAgB,4BAClB,iBAACA,cAAA,CAAC,6BAA0B,MAAoB,EAAA,EAAA,SAAU,CAAE,CAAA,GAC5D,EAAC,CAAA;AAEL,IAAA,IAAI,QAAU,EAAA;AACZ,MAAM,MAAA,UAAA,mBAAcA,cAAA,CAAAE,qBAAA,EAAA,EAAW,MAAgB,EAAA,CAAA,CAAA;AAE/C,MAAI,IAAA,MAAA,CAAO,UAAU,OAAS,EAAA;AAC5B,QAAA,OAAO,CAAC,aAAA,EAAe,WAAa,EAAA,aAAA,EAAe,UAAU,CAAA,CAAA;AAAA,OACxD,MAAA;AACL,QAAA,OAAO,CAAC,UAAA,EAAY,WAAa,EAAA,aAAA,EAAe,aAAa,CAAA,CAAA;AAAA,OAC/D;AAAA,KACK,MAAA;AACL,MAAI,IAAA,MAAA,CAAO,UAAU,OAAS,EAAA;AAC5B,QAAO,OAAA,CAAC,aAAe,EAAA,WAAA,EAAa,aAAa,CAAA,CAAA;AAAA,OAC5C,MAAA;AACL,QAAO,OAAA,CAAC,WAAa,EAAA,aAAA,EAAe,aAAa,CAAA,CAAA;AAAA,OACnD;AAAA,KACF;AAAA,KACC,CAAC,yBAAA,EAA2B,uBAAyB,EAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA,CAAA;AAEzE,EAAA,MAAM,WAAc,GAAAC,iBAAA;AAAA,IAClB,CAAC,GAAQ,KAAA;AACP,MAAC,CAAA,UAAA,IAAc,UAAU,GAAG,CAAA,CAAA;AAAA,KAC9B;AAAA,IACA,CAAC,YAAY,OAAO,CAAA;AAAA,GACtB,CAAA;AAEA,EAAA,MAAM,aAAgB,GAAAA,iBAAA;AAAA,IACpB,CAAC,GAAQ,KAAA;AACP,MAAI,IAAA,GAAA,CAAI,QAAQ,OAAS,EAAA;AACvB,QAAA,OAAA,GAAU,GAAG,CAAA,CAAA;AAAA,OACf;AAAA,KACF;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACV,CAAA;AAEA,EAAA,MAAM,EAAE,SAAW,EAAA,KAAA,KAAUC,eAAQ,CAAA,MAAA,EAAQ,WAAW,IAAI,CAAA,CAAA;AAE5D,EACE,uBAAAC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,aAAe,EAAA;AAAA,QACtC,CAAC,CAAA,EAAG,SAAS,CAAA,SAAA,CAAW,GAAG,UAAA;AAAA,QAC3B,CAAC,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,QAAa,KAAA,KAAA;AAAA,OACvC,CAAA;AAAA,MACD,OAAS,EAAA,WAAA;AAAA,MACT,aAAe,EAAA,iBAAA;AAAA,MACf,SAAW,EAAA,aAAA;AAAA,MACX,GAAK,EAAA,OAAA;AAAA,MACL,IAAK,EAAA,cAAA;AAAA,MACL,KAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAG,GAAA,WAAA;AAAA,QACH,OAAO,UAAe,KAAA,KAAA,kCAASC,2BAAe,EAAA,EAAA,GAAG,aAAa,CAAK,GAAA,IAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACtE,CAAA;AAEJ;;;;"}
package/cjs/index.js CHANGED
@@ -1,2 +1,36 @@
1
- "use strict";var dr=Object.create;var Ye=Object.defineProperty;var pr=Object.getOwnPropertyDescriptor;var br=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,gr=Object.prototype.hasOwnProperty;var Cr=(e,o)=>{for(var t in o)Ye(e,t,{get:o[t],enumerable:!0})},rt=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of br(o))!gr.call(e,n)&&n!==t&&Ye(e,n,{get:()=>o[n],enumerable:!(r=pr(o,n))||r.enumerable});return e};var be=(e,o,t)=>(t=e!=null?dr(fr(e)):{},rt(o||!e||!e.__esModule?Ye(t,"default",{value:e,enumerable:!0}):t,e)),vr=e=>rt(Ye({},"__esModule",{value:!0}),e);var Rl={};Cr(Rl,{CheckboxCell:()=>_o,GroupHeaderCell:()=>oo,GroupHeaderCellNext:()=>oo,HeaderCell:()=>wo,InputCell:()=>In,Table:()=>hl,TableCell:()=>Ro,TableGroupCell:()=>Do,ToggleCell:()=>Gn,isShowColumnSettings:()=>Go,isShowTableSettings:()=>Oo,noScrolling:()=>pn,updateTableConfig:()=>Lo,useControlledTableNavigation:()=>Tl,useTableModel:()=>$o,useTableScroll:()=>Bo,useTableViewport:()=>Vo});module.exports=vr(Rl);var ft=require("@vuu-ui/vuu-ui-controls"),gt=require("@vuu-ui/vuu-utils"),Ct=be(require("clsx")),Ge=require("react");var it=be(require("clsx")),at=require("react");var je=require("react/jsx-runtime"),lt="vuuColumnHeaderPill",ze=({children:e,className:o,column:t,onRemove:r,removable:n,...l})=>{if(n&&typeof r!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let a=(0,at.useCallback)(i=>{i.preventDefault(),i.stopPropagation(),r==null||r(t)},[t,r]);return(0,je.jsxs)("div",{...l,className:(0,it.default)(lt,o),children:[e,n?(0,je.jsx)("span",{className:`${lt}-removeButton`,role:"button","data-icon":"cross",onClick:a}):null]})};var Ne=require("react/jsx-runtime"),st=({column:e,...o})=>{let{name:t,sorted:r}=e,n=typeof r=="number"?r<0?"arrow-down":"arrow-up":r==="A"?"arrow-up":r==="D"?"arrow-down":void 0;return(0,Ne.jsxs)(ze,{...o,column:e,children:[(0,Ne.jsx)("span",{className:"vuuGroupColumnPill-label",children:t}),n!==void 0?(0,Ne.jsx)("span",{"data-icon":n}):null,typeof r=="number"?(0,Ne.jsx)("span",{className:"vuuSortPosition",children:Math.abs(r)}):null]})};var Xe=require("react/jsx-runtime"),ut=({column:e})=>{if(!e.sorted)return null;let o=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return(0,Xe.jsxs)(ze,{column:e,children:[(0,Xe.jsx)("span",{"data-icon":o}),typeof e.sorted=="number"?(0,Xe.jsx)("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};var Ke=require("react");var mt=require("react/jsx-runtime"),ct=()=>{},hr="vuuColumnResizer",qe=({onDrag:e,onDragEnd:o=ct,onDragStart:t=ct})=>{let r=(0,Ke.useRef)({start:0,now:0}),n=(0,Ke.useCallback)(i=>{i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault();let{current:s}=r,u=Math.round(i.clientX),m=u-s.now,c=s.now-s.start;r.current.now=u,m!==0&&e(i,m,c)},[e]),l=(0,Ke.useCallback)(i=>{window.removeEventListener("mouseup",l),window.removeEventListener("mousemove",n);let{current:s}=r,u=s.now-s.start;o(i,u)},[o,n]),a=(0,Ke.useCallback)(i=>{let{current:s}=r;t(i),s.now=s.start=Math.round(i.clientX),window.addEventListener("mouseup",l),window.addEventListener("mousemove",n),i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault()},[t,n,l]);return(0,mt.jsx)("div",{className:hr,onMouseDown:a})};var xe=require("react"),eo=({column:e,onResize:o,rootRef:t})=>{let r=(0,xe.useRef)({start:0,now:0}),[n,l]=(0,xe.useState)(!1),{name:a}=e,i=(0,xe.useCallback)(()=>{if(o&&t.current){let{current:m}=r,{width:c}=t.current.getBoundingClientRect();m.start=m.now=Math.round(c),l(!0),o==null||o("begin",a)}},[a,o,t]),s=(0,xe.useCallback)((m,c,b)=>{if(t.current&&o){let{current:v}=r,w=v.start+b;w!==v.now&&w>0&&(o("resize",a,w),v.now=w)}},[a,o,t]),u=(0,xe.useCallback)(()=>{if(o){let{current:m}=r;o("end",a,m.now),setTimeout(()=>{l(!1)},80)}},[a,o]);return{isResizing:n,onDrag:s,onDragStart:i,onDragEnd:u}};var dt=require("@vuu-ui/vuu-utils"),pt=be(require("clsx")),bt=require("react"),Te=(e,o,t)=>(0,bt.useMemo)(()=>{let r=(0,pt.default)(o,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:t&&e.endPin,[`${o}-editable`]:e.editable,[`${o}-right`]:e.align==="right"}),n=(0,dt.getColumnStyle)(e);return{className:r,style:n}},[e,o,t]);var Fe=require("react/jsx-runtime"),vt=require("react"),ho="vuuTableGroupHeaderCell",wr=(e,o)=>e===o?e:o,oo=({column:e,className:o,onMoveColumn:t,onRemoveColumn:r,onResize:n,...l})=>{let a=(0,Ge.useRef)(null),{isResizing:i,...s}=eo({column:e,onResize:n,rootRef:a}),[u,m]=(0,Ge.useState)(e.columns),{className:c,style:b}=Te(e,ho,!0),v=u.length>1?{removable:!0,onRemove:r}:void 0,w=(0,Ge.useCallback)((T,d)=>{m(g=>{let h=g.slice(),[E]=h.splice(T,1);if(d===-1){let y=h.concat(E);return t==null||t(y),y}else return h.splice(d,0,E),t==null||t(h),h})},[t]);return(0,gt.useLayoutEffectSkipFirst)(()=>{m(T=>wr(T,e.columns))},[e.columns]),(0,Fe.jsxs)("div",{...l,className:(0,Ct.default)(c,o,{[`${ho}-pending`]:e.groupConfirmed===!1}),ref:a,role:"columnheader",style:b,children:[(0,Fe.jsx)(ft.OverflowContainer,{allowDragDrop:!0,className:`${ho}-inner`,onMoveItem:w,overflowPosition:"start",children:u.map(T=>(0,vt.createElement)(st,{...v,column:T,key:T.name}))}),(0,Fe.jsx)(ze,{column:e,removable:!0,onRemove:r}),e.resizeable!==!1?(0,Fe.jsx)(qe,{...s}):null]})};var Rt=require("@vuu-ui/vuu-popups"),yt=be(require("clsx")),Re=require("react");var ht=require("@vuu-ui/vuu-popups"),wt=be(require("clsx"));var Tt=require("react/jsx-runtime"),xr="vuuColumnMenu",xt=({className:e,column:o})=>(0,Tt.jsx)(ht.PopupMenu,{className:(0,wt.default)(xr,e),"data-embedded":!0,menuLocation:"column-menu",menuOptions:{column:o}});var Ce=require("react/jsx-runtime"),Qe="vuuTableHeaderCell",wo=({className:e,column:o,onClick:t,onResize:r,showMenu:n=!0,...l})=>{let{HeaderCellContentRenderer:a,HeaderCellLabelRenderer:i}=o,s=(0,Re.useRef)(null),{isResizing:u,...m}=eo({column:o,onResize:r,rootRef:s}),[c]=(0,Rt.useContextMenu)(),b=(0,Re.useMemo)(()=>{if(!n)return h=>c(h,"column-menu",{column:o})},[o,c,n]),v=(0,Re.useMemo)(()=>{var P;let h=(0,Ce.jsx)(ut,{column:o}),E=i?(0,Ce.jsx)(i,{className:`${Qe}-label`,column:o}):(0,Ce.jsx)("div",{className:`${Qe}-label`,children:(P=o.label)!=null?P:o.name}),y=a?[(0,Ce.jsx)(a,{column:o},"content")]:[];if(n){let I=(0,Ce.jsx)(xt,{column:o});return o.align==="right"?[h,E,y,I]:[I,E,h,y]}else return o.align==="right"?[h,E,y]:[E,h,y]},[a,i,o,n]),w=(0,Re.useCallback)(h=>{!u&&(t==null||t(h))},[u,t]),T=(0,Re.useCallback)(h=>{h.key==="Enter"&&(t==null||t(h))},[t]),{className:d,style:g}=Te(o,Qe,!0);return(0,Ce.jsxs)("div",{...l,className:(0,yt.default)(d,e,{[`${Qe}-resizing`]:u,[`${Qe}-noMenu`]:n===!1}),onClick:w,onContextMenu:b,onKeyDown:T,ref:s,role:"columnheader",style:g,children:[...v,o.resizeable!==!1?(0,Ce.jsx)(qe,{...m}):null]})};var Hn=require("@vuu-ui/vuu-popups"),Mn=require("@vuu-ui/vuu-ui-controls"),so=require("@vuu-ui/vuu-utils"),Pn=require("@salt-ds/core"),Wo=be(require("clsx")),We=require("react");var re=require("@vuu-ui/vuu-utils"),Ho=be(require("clsx")),Se=require("react");var Dt=require("@vuu-ui/vuu-utils"),xo=require("react");var To=require("react/jsx-runtime"),Tr="vuuTableCell",Ro=({column:e,columnMap:o,onClick:t,onDataEdited:r,row:n})=>{let{className:l,style:a}=Te(e,Tr),{CellRenderer:i,index:s,name:u,valueFormatter:m}=e,c=o[u],b=(0,xo.useCallback)(w=>{if(r){let T=w;return(0,Dt.isNumericColumn)(e)&&typeof w=="string"&&(T=e.serverDataType==="double"?parseFloat(w):parseInt(w)),r==null?void 0:r(n,u,T)}else throw Error("TableCell onDataEdited prop not supplied for an editable cell")},[e,u,r,n]),v=(0,xo.useCallback)(w=>{t==null||t(w,e)},[e,t]);return(0,To.jsx)("div",{"aria-colindex":s,className:l,onClick:t?v:void 0,role:"cell",style:a,children:i?(0,To.jsx)(i,{column:e,columnMap:o,onCommit:b,row:n}):m(n[c])})};var to=require("@vuu-ui/vuu-utils"),Ht=require("react");var Mt=be(require("clsx"));var Oe=require("react/jsx-runtime"),{IS_LEAF:Rr}=to.metadataKeys,yo="vuuTableGroupCell",Do=({column:e,columnMap:o,onClick:t,row:r})=>{let{columns:n}=e,[l,a]=(0,to.getGroupValueAndOffset)(n,r,o),{className:i,style:s}=Te(e,yo),u=(0,Ht.useCallback)(b=>{t==null||t(b,e)},[e,t]),m=r[Rr],c=Array(a).fill(0).map((b,v)=>(0,Oe.jsx)("span",{className:`${yo}-spacer`},v));return(0,Oe.jsxs)("div",{className:(0,Mt.default)(i,"vuuTableCell"),role:"cell",style:s,onClick:m?void 0:u,children:[c,m?null:(0,Oe.jsx)("span",{className:`${yo}-toggle`,"data-icon":"triangle-right"}),(0,Oe.jsx)("span",{children:l})]})};var ye=require("react/jsx-runtime"),{IDX:yr,IS_EXPANDED:Dr,SELECTED:Hr}=re.metadataKeys,fe="vuuTableRow",Pt=(0,Se.forwardRef)(function({height:o},t){return(0,ye.jsx)("div",{"aria-hidden":!0,className:(0,Ho.default)(fe,`${fe}-proxy`),ref:t,style:{height:o}})}),Mo=(0,Se.memo)(({className:e,classNameGenerator:o,columnMap:t,columns:r,highlighted:n,row:l,offset:a,onClick:i,onDataEdited:s,onToggleGroup:u,virtualColSpan:m=0,zebraStripes:c=!1,...b})=>{let{[yr]:v,[Dr]:w,[Hr]:T}=l,d=(0,Se.useCallback)(S=>{let K=S.shiftKey,z=S.ctrlKey||S.metaKey;i==null||i(S,l,K,z)},[i,l]),{True:g,First:h,Last:E}=re.RowSelected,y=(0,Ho.default)(fe,e,o==null?void 0:o(l,t),{[`${fe}-even`]:c&&v%2===0,[`${fe}-expanded`]:w,[`${fe}-highlighted`]:n,[`${fe}-selected`]:T&g,[`${fe}-selectedStart`]:T&h,[`${fe}-selectedEnd`]:T&E}),P={transform:`translate3d(0px, ${a}px, 0px)`},I=(0,Se.useCallback)((S,K)=>{((0,re.isGroupColumn)(K)||(0,re.isJsonGroup)(K,l,t))&&(S.stopPropagation(),u==null||u(l,K))},[t,u,l]);return(0,ye.jsxs)("div",{...b,role:"row",className:y,onClick:d,style:P,children:[(0,ye.jsx)("span",{className:`${fe}-selectionDecorator vuuStickyLeft`}),m>0?(0,ye.jsx)("div",{className:"vuuTableCell",style:{width:m}}):null,r.filter(re.isNotHidden).map(S=>{let K=(0,re.isGroupColumn)(S),z=(0,re.isJsonColumn)(S);return(0,ye.jsx)(K?Do:Ro,{column:S,columnMap:t,onClick:K||z?I:void 0,onDataEdited:s,row:l},S.name)}),(0,ye.jsx)("span",{className:`${fe}-selectionDecorator vuuStickyRight`})]})});Mo.displayName="Row";var no=require("@vuu-ui/vuu-utils"),kt=be(require("clsx")),At=require("react");var Et=require("@vuu-ui/vuu-ui-controls"),De=require("@vuu-ui/vuu-utils"),ke=require("react"),St=({columns:e,onMoveColumn:o,onSortColumn:t,tableConfig:r})=>{let n=(0,ke.useRef)(null),l=(0,ke.useRef)(null),a=(0,ke.useCallback)(b=>{n.current=b,b?l.current=b.closest(".vuuTable-contentContainer"):l.current=null},[]),i=(0,ke.useCallback)(({fromIndex:b,toIndex:v})=>{let w=e[b],T=(0,De.moveColumnTo)(e,w,v),d=({name:y})=>P=>P.name===y,g=T.findIndex(d(w)),h=T[g+1],E=h?r.columns.findIndex(d(h)):-1;v>b&&E!==-1?o((0,De.moveColumnTo)(r.columns,w,E-1)):o((0,De.moveColumnTo)(r.columns,w,E))},[e,o,r.columns]),s=(0,ke.useCallback)(b=>{var g;let v=(0,De.queryClosest)(b.target,".vuuTableHeaderCell"),w=parseInt((g=v==null?void 0:v.dataset.index)!=null?g:"-1"),T=(0,De.visibleColumnAtIndex)(e,w),d=b.shiftKey;T&&t(T,d)},[e,t]),{onMouseDown:u,draggable:m,...c}=(0,Et.useDragDrop)({allowDragDrop:!0,containerRef:n,draggableClassName:"vuuTable",itemQuery:".vuuTableHeaderCell",onDrop:i,orientation:"horizontal",scrollingContainerRef:l});return{draggableColumn:m,draggedColumnIndex:c.draggedItemIndex,onClick:s,onMouseDown:u,setContainerRef:a}};var ve=require("react/jsx-runtime"),Po=(0,At.memo)(({classBase:e="vuuTable",columns:o,headings:t,onMoveColumn:r,onMoveGroupColumn:n,onRemoveGroupColumn:l,onResizeColumn:a,onSortColumn:i,showColumnHeaderMenus:s,tableConfig:u,tableId:m,virtualColSpan:c=0})=>{let{draggableColumn:b,draggedColumnIndex:v,onClick:w,onMouseDown:T,setContainerRef:d}=St({columns:o,onMoveColumn:r,onSortColumn:i,tableConfig:u});return(0,ve.jsxs)("div",{className:`${e}-col-headings`,ref:d,children:[t.map((g,h)=>(0,ve.jsx)("div",{className:"vuuTable-heading",children:g.map(({label:E,width:y},P)=>(0,ve.jsx)("div",{className:"vuuTable-headingCell",style:{width:y},children:E},P))},h)),(0,ve.jsxs)("div",{className:`${e}-col-headers`,role:"row",children:[c>0?(0,ve.jsx)("div",{role:"cell",className:"vuuTableCell",style:{width:c}}):null,o.filter(no.isNotHidden).map((g,h)=>(0,no.isGroupColumn)(g)?(0,ve.jsx)(oo,{"aria-colindex":g.index,column:g,"data-index":h,onMoveColumn:n,onRemoveColumn:l,onResize:a},g.name):(0,ve.jsx)(wo,{"aria-colindex":g.index,className:(0,kt.default)({"vuuDraggable-dragAway":h===v}),column:g,"data-index":h,id:`${m}-col-${h}`,onClick:w,onMouseDown:T,onResize:a,showMenu:s},g.name)),b]})]})});Po.displayName="TableHeader";var Tn=require("@vuu-ui/vuu-ui-controls"),B=require("@vuu-ui/vuu-utils"),M=require("react");var Lt=require("@vuu-ui/vuu-utils"),It=e=>(o,t)=>{let r=[];return e===void 0||(o==="header"||o==="column-menu")&&(r.push(...Mr(t,e)),r.push(...Sr(t,e)),r.push(...Pr(t,e)),r.push(...Er(t)),r.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t}),r.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:t})),r};function Mr(e,{sort:{sortDefs:o}}){let{column:t}=e,r=[];if(t===void 0)return r;let n=o.length>0;return t.sorted==="A"?r.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):t.sorted==="D"?r.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof t.sorted=="number"?(t.sorted>0?r.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):r.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),n&&Math.abs(t.sorted)<o.length&&r.push({label:"Remove from sort",action:"sort-remove",options:e}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):n?(r.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),r}function Pr(e,o){let{column:t}=e;if(t===void 0||o.groupBy.length===0)return[];let{name:r,label:n=r}=t;return[{label:`Aggregate ${n}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat((0,Lt.isNumericColumn)(t)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var Ao=(e,o)=>({label:`Pin ${o}`,action:`column-pin-${o}`,options:e}),Eo=e=>Ao(e,"left"),So=e=>Ao(e,"floating"),ko=e=>Ao(e,"right");function Er(e){let{column:o}=e;if(o===void 0)return[];let{pin:t}=o,r=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return t===void 0?r.push({label:"Pin column",children:[Eo(e),So(e),ko(e)]}):t==="left"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[So(e),ko(e)]}):t==="right"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Eo(e),So(e)]}):t==="floating"&&r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Eo(e),ko(e)]}),r}function Sr(e,{groupBy:o}){let{column:t}=e,r=[];if(t===void 0)return r;let{name:n,label:l=n}=t;return o.length===0?r.push({label:`Group by ${l}`,action:"group",options:e}):r.push({label:`Add ${l} to group by`,action:"group-add",options:e}),r}var zt=require("@vuu-ui/vuu-utils"),U=require("@vuu-ui/vuu-utils"),kr=(e,o)=>{if(e.filterStruct&&o){let[t,r]=(0,zt.removeColumnFromFilter)(o,e.filterStruct);return{filter:r,filterStruct:t}}else return e},{Average:Ar,Count:Lr,Distinct:Ir,High:zr,Low:Nr,Sum:Kr}=U.AggregationType,Nt=({dataSource:e,onPersistentColumnOperation:o})=>r=>{let n=r.options;if(n.column&&e){let{column:l}=n;switch(r.menuId){case"sort-asc":return e.sort=(0,U.setSortColumn)(e.sort,l,"A"),!0;case"sort-dsc":return e.sort=(0,U.setSortColumn)(e.sort,l,"D"),!0;case"sort-add-asc":return e.sort=(0,U.addSortColumn)(e.sort,l,"A"),!0;case"sort-add-dsc":return e.sort=(0,U.addSortColumn)(e.sort,l,"D"),!0;case"group":return e.groupBy=(0,U.addGroupColumn)(e.groupBy,l),!0;case"group-add":return e.groupBy=(0,U.addGroupColumn)(e.groupBy,l),!0;case"column-hide":return o({type:"hideColumns",columns:[l]}),!0;case"column-remove":return e.columns=e.columns.filter(a=>a!==l.name),!0;case"filter-remove-column":return e.filter=kr(e.filter,l),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Ar),!0;case"agg-high":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,zr),!0;case"agg-low":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Nr),!0;case"agg-count":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Lr),!0;case"agg-distinct":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Ir),!0;case"agg-sum":return e.aggregations=(0,U.setAggregations)(e.aggregations,l,Kr),!0;case"column-pin-floating":return o({type:"pinColumn",column:l,pin:"floating"}),!0;case"column-pin-left":return o({type:"pinColumn",column:l,pin:"left"}),!0;case"column-pin-right":return o({type:"pinColumn",column:l,pin:"right"}),!0;case"column-unpin":return o({type:"pinColumn",column:l,pin:void 0}),!0;case"column-settings":return o({type:"columnSettings",column:l}),!0;case"table-settings":return o({type:"tableSettings"}),!0;default:}}return!1};var Lo=(e,o)=>{switch(o.type){case"col-size":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,width:o.width}:t)};case"column-prop":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,[o.property]:o.value}:t)};default:return e}};var $t=require("@vuu-ui/vuu-utils"),He=require("react");var Io=e=>`.vuuTable-col-headers .vuuTableHeaderCell:nth-child(${e})`,zo=(e,o)=>`.vuuTable-body > [aria-rowindex='${e+1}'] > [role='cell']:nth-child(${o+1})`,Kt=(e,[o,t])=>{var l;let r=o===-1?Io(t):zo(o,t),n=(l=e.current)==null?void 0:l.querySelector(r);return Fr(n)&&n.querySelector("button")||n},Fr=e=>e==null?void 0:e.classList.contains("vuuTableCell-editable"),Ft=e=>e.querySelector(".vuuTableInputCell")!==null;function Gr(e){if(e){let o=e.ariaRowIndex;if(o!==null)return parseInt(o,10)-1}return-1}var Or=e=>e.closest('[role="row"]'),Gt=e=>Gr(Or(e)),$r=[void 0,void 0],Ot=(e,o,t=e.closest(".vuuTable-contentContainer"))=>{if(t){let r=t==null?void 0:t.getBoundingClientRect(),n=r.top+o,l=e.getBoundingClientRect();if(l)return l.bottom>r.bottom?["down",l.bottom-r.bottom]:l.top<n?["up",l.top-n]:$r;throw Error("Whats going on, row not found")}else throw Error("Whats going on, scrollbar container not found")};var Bt=({navigate:e})=>{let o=(0,He.useCallback)(()=>{e()},[e]),t=(0,He.useCallback)(s=>{let u=s.target,m=u.matches("input")?u:u.querySelector("input");m&&(m.focus(),m.select())},[]),r=(0,He.useCallback)(s=>{let m=s.target.querySelector("input");m&&(m.focus(),m.select())},[]),n=(0,He.useCallback)(s=>{let u=s.target;Ft(u)&&((0,$t.isCharacterKey)(s.key)?t(s):s.key==="Enter"&&r(s))},[t,r]),l=(0,He.useCallback)(s=>{let u=s.target;(u.matches("input")||u.querySelector("input"))&&(t(s),s.stopPropagation())},[t]),a=(0,He.useCallback)(s=>{s.target.removeEventListener("vuu-commit",o,!0)},[o]),i=(0,He.useCallback)(s=>{s.target.addEventListener("vuu-commit",o,!0)},[o]);return{onBlur:a,onDoubleClick:l,onFocus:i,onKeyDown:n}};var Me=require("@vuu-ui/vuu-utils"),X=require("react");var $e=require("@vuu-ui/vuu-utils"),{SELECTED:No}=$e.metadataKeys,ro=class{constructor({from:o,to:t}){this.rowCount=0;this.setRowCount=o=>{o<this.data.length&&(this.data.length=o),this.rowCount=o};this.range=new $e.WindowRange(o,t),this.data=new Array(Math.max(0,t-o)),this.rowCount=0}add(o){let[t]=o;if(this.isWithinRange(t)){let r=t-this.range.from;if(this.data[r]=o,o[No]){let n=this.data[r-1];(0,$e.isRowSelectedLast)(n)&&(this.data[r-1]=n.slice(),this.data[r-1][No]-=4)}}}getAtIndex(o){return this.range.isWithin(o)&&this.data[o-this.range.from]!=null?this.data[o-this.range.from]:void 0}isWithinRange(o){return this.range.isWithin(o)}setRange({from:o,to:t}){if(o!==this.range.from||t!==this.range.to){let[r,n]=this.range.overlap(o,t),l=new Array(Math.max(0,t-o));for(let a=r;a<n;a++){let i=this.getAtIndex(a);if(i){let s=a-o;l[s]=i}}this.data=l,this.range.from=o,this.range.to=t}}getSelectedRows(){return this.data.filter(o=>o[No]!==0)}};var Br=e=>e.type==="vuu-link-created"||e.type==="vuu-link-removed",Vt=({dataSource:e,onFeatureInvocation:o,onSizeChange:t,onSubscribed:r,range:n=Me.NULL_RANGE,renderBufferSize:l=0})=>{let[,a]=(0,X.useState)(null),i=(0,X.useRef)([]),s=(0,X.useRef)(!0),u=(0,X.useRef)(!1),m=(0,X.useRef)(n),c=(0,X.useMemo)(()=>new ro((0,Me.getFullRange)(n,l)),[]),b=(0,X.useCallback)(d=>{for(let g of d)c.add(g);i.current=c.data,s.current&&a({})},[c]),v=(0,X.useCallback)(d=>{d.type==="subscribed"?r==null||r(d):d.type==="viewport-update"?(typeof d.size=="number"&&(t==null||t(d.size),c.setRowCount(d.size)),d.rows?b(d.rows):typeof d.size=="number"&&(i.current=c.data,u.current=!0)):Br(d)?o==null||o(d):console.log(`useDataSource unexpected message ${d.type}`)},[c,o,t,r,b]),w=(0,X.useCallback)(()=>c.getSelectedRows(),[c]);(0,X.useEffect)(()=>{var d;return s.current=!0,(d=e.resume)==null||d.call(e),()=>{var g;s.current=!1,(g=e.suspend)==null||g.call(e)}},[e]),(0,X.useEffect)(()=>{var d;e.status==="disabled"?(d=e.enable)==null||d.call(e,v):e==null||e.subscribe({range:(0,Me.getFullRange)(n,l)},v)},[e,v,n,l]);let T=(0,X.useCallback)(d=>{if(!(0,Me.rangesAreSame)(d,m.current)){let g=(0,Me.getFullRange)(d,l);c.setRange(g),e.range=m.current=g,e.emit("range",d)}},[e,c,l]);return{data:i.current,dataRef:i,getSelectedRows:w,range:m.current,setRange:T}};var lo=require("react"),Wt=e=>{let o=(0,lo.useRef)(e);return(0,lo.useMemo)(()=>o.current,[])};var Xt=require("@vuu-ui/vuu-utils"),Qt=require("@salt-ds/core"),$=require("react");var Jt=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),Ko=new Set(Jt);Ko.add("ArrowLeft");Ko.add("ArrowRight");var Vr=(e,o)=>{switch(o){case"cell":return Ko.has(e);case"row":return Jt.has(e);default:return!1}},Wr=["Home","End","PageUp","PageDown"],Ut=e=>Wr.includes(e),Ur=[-1,-1];function _t(e,[o,t],r,n){return e==="ArrowUp"?o>-1?[o-1,t]:[o,t]:e==="ArrowDown"?o===-1?[0,t]:o===n-1?[o,t]:[o+1,t]:e==="ArrowRight"?t<r?[o,t+1]:[o,t]:e==="ArrowLeft"?t>1?[o,t-1]:[o,t]:[o,t]}var Zt=({columnCount:e=0,containerRef:o,disableFocus:t=!1,defaultHighlightedIndex:r,disableHighlightOnFocus:n,highlightedIndex:l,navigationStyle:a,requestScroll:i,onHighlight:s,rowCount:u=0,viewportRowCount:m})=>{var de;let c=(0,$.useRef)([-1,-1]),b=(0,$.useRef)(),v=(0,$.useRef)([-1,0]),w=(0,$.useRef)(),[T,d]=(0,Qt.useControlled)({controlled:l,default:r,name:"UseKeyboardNavigation"});w.current=T;let g=(0,$.useCallback)((f,x=!1)=>{s==null||s(f),d(f)},[s,d]),h=f=>f==null?void 0:f.closest("[role='columnHeader'],[role='cell']"),E=f=>{var x;if(f.role==="columnHeader")return[-1,parseInt((x=f.dataset.idx)!=null?x:"-1",10)];{let D=f.closest("[role='row']");if(D){let V=(0,Xt.getIndexFromRowElement)(D),C=Array.from(D.childNodes).indexOf(f);return[V,C]}}return Ur},y=(0,$.useCallback)(f=>{var x;if(o.current){let D=Kt(o,f);D&&(D!==b.current&&((x=b.current)==null||x.removeAttribute("tabindex"),b.current=D,D.setAttribute("tabindex","0")),i==null||i({type:"scroll-row",rowIndex:f[0]}),D.focus({preventScroll:!0}))}},[o,i]),P=(0,$.useCallback)((f,x,D=!1)=>{let V=[f,x];v.current=V,a==="row"?d(f):y(V),D&&(c.current=V)},[y,a,d]),I=(0,$.useCallback)((f,[x,D])=>new Promise(V=>{let C=x;switch(f){case"PageDown":{C=Math.min(u-1,x+m),C!==x&&(i==null||i({type:"scroll-page",direction:"down"}));break}case"PageUp":{C=Math.max(0,x-m),C!==x&&(i==null||i({type:"scroll-page",direction:"up"}));break}case"Home":{C=0,C!==x&&(i==null||i({type:"scroll-end",direction:"home"}));break}case"End":{C=u-1,C!==x&&(i==null||i({type:"scroll-end",direction:"end"}));break}}setTimeout(()=>{V([C,D])},35)}),[i,u,m]),S=(0,$.useCallback)(()=>{var f;if(n!==!0&&(f=o.current)!=null&&f.contains(document.activeElement)){let x=h(document.activeElement);x&&(c.current=E(x),a==="row"&&d(c.current[0]))}},[n,o,a,d]),K=(0,$.useCallback)(async f=>{let[x,D]=Ut(f)?await I(f,v.current):_t(f,v.current,e,u),[V,C]=v.current;(x!==V||D!==C)&&P(x,D,!0)},[e,I,u,P]),z=(0,$.useCallback)(f=>{i==null||i({type:"scroll-row",rowIndex:f})},[i]),Z=(0,$.useCallback)(async f=>{let{current:x}=w,[D]=Ut(f)?await I(f,[x!=null?x:-1,0]):_t(f,[x!=null?x:-1,0],e,u);D!==x&&(g(D),z(D))},[e,I,u,z,g]);(0,$.useEffect)(()=>{l!==void 0&&l!==-1&&z(l)},[l,z]);let oe=(0,$.useCallback)(f=>{u>0&&Vr(f.key,a)&&(f.preventDefault(),f.stopPropagation(),a==="row"?Z(f.key):K(f.key))},[u,a,Z,K]),j=(0,$.useCallback)(f=>{let x=f.target,D=h(x);if(D){let[V,C]=E(D);P(V,C)}},[P]),te=(0,$.useCallback)(()=>{g(-1)},[g]),F=(0,$.useCallback)(f=>{let x=Gt(f.target);x!==-1&&x!==w.current&&g(x)},[g]),A=(0,$.useCallback)(()=>{K("ArrowDown")},[K]),me=((de=o.current)==null?void 0:de.firstChild)!=null;return(0,$.useEffect)(()=>{if(me&&b.current===void 0&&!t){let{current:f}=o,x=(f==null?void 0:f.querySelector(Io(0)))||(f==null?void 0:f.querySelector(zo(0,0)));x&&(x.setAttribute("tabindex","0"),b.current=x)}},[o,t,me]),{highlightedIndexRef:w,navigate:A,onClick:j,onFocus:S,onKeyDown:oe,onMouseLeave:a==="row"?te:void 0,onMouseMove:a==="row"?F:void 0}};var le=require("@vuu-ui/vuu-utils"),Ae=require("react"),{IDX:_r}=le.metadataKeys,Xr=[],Qr=["Enter"," "],Yt=({highlightedIndexRef:e,selectionKeys:o=Qr,selectionModel:t,onSelect:r,onSelectionChange:n})=>{let l=(0,Ae.useRef)(-1),a=(0,Ae.useRef)(Xr),i=(0,Ae.useCallback)(m=>o.includes(m.key),[o]),s=(0,Ae.useCallback)((m,c,b,v)=>{let{[_r]:w}=c,{current:T}=l,{current:d}=a,g=(0,le.isRowSelected)(c)?le.deselectItem:le.selectItem,h=g(t,d,w,b,v,T);a.current=h,l.current=w,r==null||r(g===le.selectItem?c:null),n==null||n(h)},[r,n,t]);return{onKeyDown:(0,Ae.useCallback)(m=>{if(i(m)){let{current:c}=e;if(c!==void 0&&c!==-1){let b=(0,le.getRowElementAtIndex)(m.target,c);b&&(0,le.dispatchMouseEvent)(b,"click")}}},[e,i]),onRowClick:s}};var jt=require("@vuu-ui/vuu-popups"),io=require("@vuu-ui/vuu-utils"),qt=require("react"),Jr=[],en=({columns:e,data:o,dataSource:t,getSelectedRows:r})=>{let[n]=(0,jt.useContextMenu)();return(0,qt.useCallback)(a=>{let i=a.target,s=i==null?void 0:i.closest("div[role='cell']"),u=i==null?void 0:i.closest("div[role='row']");if(s&&u){let{selectedRowsCount:m}=t,c=(0,io.buildColumnMap)(e),b=(0,io.getIndexFromRowElement)(u),v=Array.from(u.childNodes).indexOf(s),w=o.find(([d])=>d===b),T=e[v];n(a,"grid",{columnMap:c,columnName:T,row:w,selectedRows:m===0?Jr:r(),viewport:t.viewport})}},[e,o,t,r,n])};var R=require("@vuu-ui/vuu-utils"),on=require("@vuu-ui/vuu-ui-controls"),tn=require("react"),{info:Fo}=(0,R.logger)("useTableModel"),Zr=100,Yr=({serverDataType:e})=>e===void 0,nn=(e,o)=>{let t=o==null?void 0:o.columns.find(({name:r})=>r===e.name);return t?t.serverDataType:e.serverDataType},jr=["int","long","double"],rn=e=>e===void 0?void 0:jr.includes(e)?"right":"left",Go=e=>e.type==="columnSettings",Oo=e=>e.type==="tableSettings",qr=(e,o)=>{switch(Fo==null||Fo(`TableModelReducer ${o.type}`),o.type){case"init":return ln(o);case"moveColumn":return ol(e,o);case"resizeColumn":return rl(e,o);case"setTableSchema":return ll(e,o);case"hideColumns":return tl(e,o);case"showColumns":return nl(e,o);case"pinColumn":return il(e,o);case"updateColumnProp":return Be(e,o);case"tableConfig":return sn(e,o);default:return console.log(`unhandled action ${o.type}`),e}},$o=(e,o)=>{let[t,r]=(0,tn.useReducer)(qr,{tableConfig:e,dataSource:o},ln),{columns:n,headings:l,tableConfig:a,...i}=t;return{columns:n,dispatchTableModelAction:r,headings:l,tableAttributes:i,tableConfig:a}};function ln({dataSource:e,tableConfig:o}){let{columns:t,...r}=o,{config:n,tableSchema:l}=e,a=t.filter((0,R.subscribedOnly)(n==null?void 0:n.columns)).map(an(r,l)),i=a.some(R.isPinned)?(0,R.sortPinnedColumns)(a):a,s={columns:i,headings:(0,R.getTableHeadings)(i),tableConfig:o,...r};if(n){let{columns:u,...m}=n;s=sn(s,{type:"tableConfig",...m})}return s}var el=(e,o)=>o==="uppercase"?e.toUpperCase():o==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,an=(e,o)=>(t,r)=>{let{columnDefaultWidth:n=Zr,columnFormatHeader:l}=e,a=nn(t,o),{align:i=rn(a),name:s,label:u=(0,R.getColumnLabel)(t),width:m=n,...c}=t,b={...c,align:i,CellRenderer:(0,R.getCellRenderer)(t),HeaderCellContentRenderer:(0,R.getColumnHeaderContentRenderer)(t),HeaderCellLabelRenderer:(0,R.getColumnHeaderLabelRenderer)(t),clientSideEditValidationCheck:(0,R.hasValidationRules)(t.type)?(0,on.buildValidationChecker)(t.type.renderer.rules):void 0,index:r+1,label:el(u,l),name:s,originalIdx:r,serverDataType:a,valueFormatter:(0,R.getValueFormatter)(t,a),width:m};return(0,R.isGroupColumn)(b)&&(b.columns=b.columns.map(v=>an(e)(v,r))),b};function ol(e,{column:o,moveBy:t}){let{columns:r}=e;if(typeof t=="number"){let n=r.indexOf(o),l=r.slice(),[a]=l.splice(n,1);return l.splice(n+t,0,a),{...e,columns:l}}return e}function tl(e,{columns:o}){return o.some(t=>t.hidden!==!0)?o.reduce((t,r)=>r.hidden!==!0?Be(t,{type:"updateColumnProp",column:r,hidden:!0}):t,e):e}function nl(e,{columns:o}){return o.some(t=>t.hidden)?o.reduce((t,r)=>r.hidden?Be(t,{type:"updateColumnProp",column:r,hidden:!1}):t,e):e}function rl(e,{column:o,phase:t,width:r}){let n="updateColumnProp",l=t!=="end";switch(t){case"begin":return Be(e,{type:n,column:o,resizing:l});case"end":return Be(e,{type:n,column:o,resizing:l,width:r});case"resize":return Be(e,{type:n,column:o,width:r});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function ll(e,{tableSchema:o}){let{columns:t}=e;if(t.some(Yr)){let r=t.map(n=>{var a;let l=nn(n,o);return{...n,align:(a=n.align)!=null?a:rn(l),serverDataType:l}});return{...e,columns:r}}else return e}function il(e,o){let{columns:t}=e,{column:r,pin:n}=o,l=t.find(a=>a.name===r.name);return l?(t=(0,R.replaceColumn)(t,{...l,pin:n}),t=(0,R.sortPinnedColumns)(t),{...e,columns:t}):e}function Be(e,o){let{columns:t,tableConfig:r}=e,{align:n,column:l,hidden:a,label:i,resizing:s,width:u}=o,m=t.find(c=>c.name===l.name);if(m&&((n==="left"||n==="right")&&(t=(0,R.replaceColumn)(t,{...m,align:n})),typeof i=="string"&&(t=(0,R.replaceColumn)(t,{...m,label:i})),typeof s=="boolean"&&(t=(0,R.replaceColumn)(t,{...m,resizing:s})),typeof a=="boolean"&&(t=(0,R.replaceColumn)(t,{...m,hidden:a})),typeof u=="number")){t=(0,R.replaceColumn)(t,{...m,width:u});let c=r.columns.find(b=>b.name===l.name);c&&(r={...r,columns:(0,R.replaceColumn)(r.columns,{...c,width:u})})}return{...e,columns:t,tableConfig:r}}function sn(e,{confirmed:o,filter:t,groupBy:r,sort:n}){let l=r!==void 0,a=typeof(t==null?void 0:t.filter)=="string",i=n&&n.sortDefs.length>0,s=e;return l&&(s={...e,columns:(0,R.applyGroupByToColumns)(s.columns,r,o)}),i?s={...e,columns:(0,R.applySortToColumns)(s.columns,n)}:(0,R.existingSort)(s.columns)&&(s={...e,columns:(0,R.removeSort)(s.columns)}),a?s={...e,columns:(0,R.applyFilterToColumns)(s.columns,t)}:s.columns.some(R.isFilteredColumn)&&(s={...e,columns:(0,R.stripFilterFromColumns)(s.columns)}),s}var Le=require("@vuu-ui/vuu-utils"),H=require("react");var al=100,un=200,cn=e=>{let{clientHeight:o,clientWidth:t,scrollHeight:r,scrollWidth:n}=e;return[n-t,r-o]},sl=(e,o)=>{if(e!==void 0){let{scrollTop:t}=e;return o>t?"fwd":"bwd"}},mn=(e,o)=>{let{clientHeight:t,clientWidth:r,scrollHeight:n,scrollLeft:l,scrollTop:a,scrollWidth:i}=e,s=i-r,u=l/(i-r),m=n-t,c=a/(n-t),b=sl(o,a);return b==="fwd"&&c>.99?c=1:b==="bwd"&&c<.02&&(c=0),[l,u,s,a,c,m]},pn={scrollToIndex:()=>{},scrollToKey:()=>{}},dn=({onAttach:e,onDetach:o})=>{let t=(0,H.useRef)(null);return(0,H.useCallback)(n=>{if(n)t.current=n,e==null||e(n);else if(t.current){let{current:l}=t;t.current=n,o==null||o(l)}},[e,o])},Bo=({columns:e,getRowAtPosition:o,onHorizontalScroll:t,onVerticalScroll:r,onVerticalScrollInSitu:n,rowHeight:l,scrollingApiRef:a,setRange:i,viewportMeasurements:s})=>{let u=(0,H.useRef)(0),m=(0,H.useRef)(l),c=(0,H.useRef)(!1),b=(0,H.useRef)({scrollTop:0,scrollLeft:0}),v=(0,H.useRef)(!1),w=(0,H.useRef)({scrollTop:0,scrollLeft:0}),T=(0,H.useRef)(null),d=(0,H.useRef)(null),g=(0,H.useRef)(0),{appliedPageSize:h,isVirtualScroll:E,rowCount:y,totalHeaderHeight:P,viewportWidth:I}=s,S=(0,H.useRef)([]),[,K]=(0,H.useState)({}),z=(0,H.useRef)(0);(0,H.useMemo)(()=>{let[C,k]=(0,Le.getColumnsInViewport)(e,b.current.scrollLeft,b.current.scrollLeft+I+un);z.current=k,S.current=C},[I,e]);let Z=(0,H.useCallback)(C=>{if(b.current.scrollLeft=C,t==null||t(C),Math.abs(C-g.current)>al){g.current=C;let[k,W]=(0,Le.getColumnsInViewport)(e,C,C+I+un);(0,Le.itemsChanged)(S.current,k)&&(z.current=W,S.current=k,K({}))}},[e,t,I]),oe=(0,H.useCallback)((C,k)=>{b.current.scrollTop=C,r==null||r(C,k);let W=o(C);W!==u.current&&(u.current=W,i({from:W,to:W+y})),n==null||n(0)},[o,r,n,i,y]),j=(0,H.useCallback)(()=>{let{current:C}=d,{current:k}=T,{current:W}=c,{current:q}=w;if(W)c.current=!1;else if(C&&k){v.current=!0;let[Y,pe,,Q,O]=mn(k,q);q.scrollLeft=Y,q.scrollTop=Q;let[G,J]=cn(k),ae=Math.round(pe*G),ee=O*J;C.scrollTo({left:ae,top:ee,behavior:"auto"})}n==null||n(0)},[n]),te=(0,H.useCallback)(()=>{let{current:C}=v,{current:k}=d,{current:W}=T,{current:q}=b;if(k&&W){let[Y,pe,Q,O,G,J]=mn(k);c.current=!0,C?v.current=!1:(W.scrollLeft=Math.round(pe*Q),W.scrollTop=G*J),q.scrollTop!==O&&oe(O,G),q.scrollLeft!==Y&&Z(Y)}},[oe,Z]),F=(0,H.useCallback)(C=>{T.current=C,C.addEventListener("scroll",j,{passive:!0})},[j]),A=(0,H.useCallback)(C=>{T.current=null,C.removeEventListener("scroll",j)},[j]),me=(0,H.useCallback)(C=>{d.current=C,C.addEventListener("scroll",te,{passive:!0})},[te]),de=(0,H.useCallback)(C=>{d.current=null,C.removeEventListener("scroll",te)},[te]),f=dn({onAttach:me,onDetach:de}),x=dn({onAttach:F,onDetach:A}),D=(0,H.useCallback)(C=>{let{current:k}=d;if(k){let[W,q]=cn(k),{scrollLeft:Y,scrollTop:pe}=k;if(c.current=!1,C.type==="scroll-row"){let Q=(0,Le.getRowElementAtIndex)(k,C.rowIndex);if(Q!==null){let[O,G]=Ot(Q,P);if(console.log(`outside viewport ? ${O} ${G}`),O&&G)if(E){let J=O==="down"?1:-1;n==null||n(J);let ae=u.current+J;u.current=ae,i({from:ae,to:ae+y})}else{let J=Y,ae=pe;O==="up"||O==="down"?ae=Math.min(Math.max(0,pe+G),q):J=Math.min(Math.max(0,Y+G),W),k.scrollTo({top:ae,left:J,behavior:"smooth"})}}}else if(C.type==="scroll-page"){let{direction:Q}=C;if(E){let O=Q==="down"?y:-y;n==null||n(O);let G=u.current+O;u.current=G,i({from:G,to:G+y})}else{let O=Q==="down"?h:-h,G=Math.min(Math.max(0,pe+O),q);k.scrollTo({top:G,left:Y,behavior:"auto"})}}else if(C.type==="scroll-end"){let{direction:Q}=C,O=Q==="end"?q:0;k.scrollTo({top:O,left:k.scrollLeft,behavior:"auto"})}}},[h,E,n,i,P,y]),V=(0,H.useMemo)(()=>({scrollToIndex:C=>{if(T.current){let k=(C-30)*20;T.current.scrollTop=k}},scrollToKey:C=>{console.log(`scrollToKey ${C}`)}}),[]);return(0,H.useImperativeHandle)(a,()=>T.current?V:pn,[V]),(0,H.useEffect)(()=>{if(l!==m.current)m.current=l,b.current.scrollTop>0&&d.current&&(d.current.scrollTop=0);else{let{current:C}=u,k={from:C,to:C+y};i(k)}},[l,i,y]),{columnsWithinViewport:S.current,scrollbarContainerRef:x,contentContainerRef:f,requestScroll:D,virtualColSpan:z.current}};var Ve=require("@vuu-ui/vuu-utils"),ue=require("react"),ul=1e7,cl={appliedPageSize:0,contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,isVirtualScroll:!1,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setInSituRowOffset:()=>{},setScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0,viewportWidth:0},Vo=({columns:e,headerHeight:o,headings:t,rowCount:r,rowHeight:n,selectionEndSize:l=4,size:a})=>{let i=(0,ue.useRef)(0),s=(0,ue.useRef)(0),u=Math.min(n*r,ul),m=r*n,c=m-u,{pinnedWidthLeft:b,pinnedWidthRight:v,unpinnedWidth:w}=(0,ue.useMemo)(()=>(0,Ve.measurePinnedColumns)(e,l),[e,l]),T=(0,ue.useRef)(o);(0,ue.useMemo)(()=>{T.current=o*(1+t.length)},[o,t.length]);let[d,g,h]=(0,ue.useMemo)(()=>{if(c){let[P,I,S]=(0,Ve.virtualRowPositioning)(n,c,s);return[z=>P(z,i.current),I,S]}else return(0,Ve.actualRowPositioning)(n)},[c,n]),E=(0,ue.useCallback)((P,I)=>{s.current=I},[]),y=(0,ue.useCallback)(P=>{P===0?i.current=0:i.current=Math.max(0,i.current+P)},[]);return(0,ue.useMemo)(()=>{if(a){let{current:P}=T,I=15,S=b+w+v,K=S>a.width?I:0,z=(a.height-o)/n,Z=Number.isInteger(z)?z:Math.ceil(z),oe=a.height-P,j=u>oe?I:0,te=Z*n*(u/m),F=a.width;return{appliedPageSize:te,contentHeight:u,contentWidth:S,getRowAtPosition:g,getRowOffset:d,isVirtualScroll:h,horizontalScrollbarHeight:K,pinnedWidthLeft:b,pinnedWidthRight:v,rowCount:Z,setInSituRowOffset:y,setScrollTop:E,totalHeaderHeight:P,verticalScrollbarWidth:j,viewportBodyHeight:oe,viewportWidth:F}}else return cl},[g,d,o,h,b,w,v,u,n,y,E,a,m])};var bn=require("@vuu-ui/vuu-layout"),fn=require("@vuu-ui/vuu-utils"),ce=require("react"),gn=({availableColumns:e,onAvailableColumnsChange:o,onConfigChange:t,onCreateCalculatedColumn:r,onDataSourceConfigChange:n,tableConfig:l})=>{let a=(0,bn.useLayoutProviderDispatch)(),i=(0,ce.useRef)(),[s,u]=(0,ce.useState)(e),m=(0,ce.useCallback)((d,g,h)=>{a({type:"set-props",path:"#context-panel",props:{expanded:!0,content:{type:d,props:h},title:g}})},[a]),c=(0,ce.useCallback)(()=>{requestAnimationFrame(()=>{var d;(d=i.current)==null||d.call(i)})},[]),b=(0,ce.useCallback)(d=>{let g=s.concat({name:d.name,serverDataType:(0,fn.getCalculatedColumnType)(d)});u(g),o==null||o(g),requestAnimationFrame(()=>{var h;(h=i.current)==null||h.call(i)}),r(d)},[s,o,r]),v=(0,ce.useCallback)(d=>{m("ColumnSettings","Column Settings",{column:d.column,onCancelCreateColumn:c,onConfigChange:t,onCreateCalculatedColumn:b,tableConfig:l,vuuTable:d.vuuTable})},[c,b,t,m,l]),w=(0,ce.useCallback)(()=>{v({column:{name:"::",serverDataType:"string"},type:"columnSettings",vuuTable:{module:"SIMUL",table:"instruments"}})},[v]),T=(0,ce.useCallback)(d=>{let g=l.columns.find(h=>h.name===d);g&&v({type:"columnSettings",column:g,vuuTable:{module:"SIMUL",table:"instruments"}})},[v,l.columns]);return i.current=(0,ce.useCallback)(()=>{m("TableSettings","DataGrid Settings",{availableColumns:s!=null?s:l.columns.map(({name:d,serverDataType:g})=>({name:d,serverDataType:g})),onAddCalculatedColumn:w,onConfigChange:t,onDataSourceConfigChange:n,onNavigateToColumn:T,tableConfig:l})},[s,w,T,t,n,m,l]),{showColumnSettingsPanel:v,showTableSettingsPanel:i.current}};var Cn=require("@vuu-ui/vuu-utils"),vn=require("react"),ml=e=>{let o=[];return e==null||e.forEach(t=>{let r=(0,Cn.getRowClassNameGenerator)(t);r&&o.push(r.fn)}),(t,r)=>{let n=[];return o==null||o.forEach(l=>{let a=l(t,r);a&&n.push(a)}),n.join(" ")}},hn=({rowClassNameGenerators:e})=>(0,vn.useMemo)(()=>ml(e),[e]);var ao=e=>e,{KEY:dl,IS_EXPANDED:wn,IS_LEAF:xn}=B.metadataKeys,pl={draggable:void 0,onMouseDown:void 0},bl=()=>pl,fl=(e,o)=>({...e,columns:e.columns.concat(o)}),Rn=({allowDragDrop:e=!1,availableColumns:o,config:t,containerRef:r,dataSource:n,disableFocus:l,headerHeight:a=25,highlightedIndex:i,id:s,navigationStyle:u="cell",onAvailableColumnsChange:m,onConfigChange:c,onDragStart:b,onDrop:v,onFeatureInvocation:w,onHighlight:T,onRowClick:d,onSelect:g,onSelectionChange:h,renderBufferSize:E=0,rowHeight:y=20,scrollingApiRef:P,selectionModel:I,size:S})=>{let[K,z]=(0,M.useState)(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let Z=hn(t),oe=e?Tn.useDragDrop:bl,j=(0,M.useMemo)(()=>It(n),[n]),te=(0,M.useCallback)(p=>{z(p)},[]),{columns:F,dispatchTableModelAction:A,headings:me,tableAttributes:de,tableConfig:f}=$o(t,n);(0,B.useLayoutEffectSkipFirst)(()=>{A({type:"init",tableConfig:t,dataSource:n})},[t,n,A]);let x=(0,M.useCallback)(p=>{A({type:"init",tableConfig:p,dataSource:n}),c==null||c(ao(p))},[n,A,c]),D=(0,M.useMemo)(()=>(0,B.buildColumnMap)(n.columns),[n.columns]),V=(0,M.useCallback)(({tableSchema:p})=>{p?A({type:"setTableSchema",tableSchema:p}):console.log("subscription message with no schema")},[A]),{getRowAtPosition:C,getRowOffset:k,setInSituRowOffset:W,setScrollTop:q,...Y}=Vo({columns:F,headerHeight:a,headings:me,rowCount:K,rowHeight:y,size:S}),pe=Wt({from:0,to:Y.rowCount}),{data:Q,dataRef:O,getSelectedRows:G,range:J,setRange:ae}=Vt({dataSource:n,onFeatureInvocation:w,renderBufferSize:E,onSizeChange:te,onSubscribed:V,range:pe}),{requestScroll:ee,...fo}=Bo({columns:F,getRowAtPosition:C,rowHeight:y,scrollingApiRef:P,setRange:ae,onVerticalScroll:q,onVerticalScrollInSitu:W,viewportMeasurements:Y}),go=(0,M.useCallback)(p=>{A({type:"init",tableConfig:p,dataSource:n}),c==null||c(ao(p))},[n,A,c]),Ze=(0,M.useCallback)(p=>{n.config={...n.config,...p}},[n]);(0,M.useEffect)(()=>{n.on("config",(p,L,N)=>{((N==null?void 0:N.filterChanged)||(N==null?void 0:N.groupByChanged))&&n.range.from>0&&ee({type:"scroll-end",direction:"home"}),A({type:"tableConfig",...p,confirmed:L})})},[n,A,ee]);let Ee=(0,M.useCallback)(p=>{n.columns=n.columns.concat(p.name),x(fl(f,p))},[n,f,x]),Xo=(0,M.useCallback)(p=>{let{columns:L}=p,N=L.map(ne=>ne.name),_={...f,columns:f.columns.map(ne=>N.includes(ne.name)?{...ne,hidden:!0}:ne)};x(_)},[f,x]),Qo=(0,M.useCallback)(p=>{x({...f,columns:(0,B.updateColumn)(f.columns,{...p.column,pin:p.pin})})},[f,x]),{showColumnSettingsPanel:Jo,showTableSettingsPanel:Zo}=gn({availableColumns:o!=null?o:f.columns.map(({name:p,serverDataType:L="string"})=>({name:p,serverDataType:L})),onAvailableColumnsChange:m,onConfigChange:go,onCreateCalculatedColumn:Ee,onDataSourceConfigChange:Ze,tableConfig:f}),Vn=(0,M.useCallback)(p=>{if(Go(p))Jo(p);else if(Oo(p))Zo();else switch(p.type){case"hideColumns":return Xo(p);case"pinColumn":return Qo(p);default:A(p)}},[A,Xo,Qo,Jo,Zo]),Wn=Nt({dataSource:n,onPersistentColumnOperation:Vn}),Un=(0,M.useCallback)((p,L=!1,N)=>{n&&(n.sort=(0,B.toggleOrApplySort)(n.sort,p,L,N))},[n]),Co=(0,M.useRef)(),_n=(0,M.useCallback)((p,L,N)=>{var ne,_e,we;let _=F.find(se=>se.name===L);if(_)if(p==="resize")(ne=Co.current)==null||ne.forEach(se=>{se.style.width=`${N}px`});else if(p==="end")Co.current=void 0,(0,B.isValidNumber)(N)&&(A({type:"resizeColumn",phase:p,column:_,width:N}),c==null||c(ao(Lo(f,{type:"col-size",column:_,width:N}))));else{let se=`[aria-colindex='${_.index}']`;Co.current=Array.from((we=(_e=r.current)==null?void 0:_e.querySelectorAll(`.vuuTableCell${se},.vuuTableHeaderCell${se}`))!=null?we:[]),A({type:"resizeColumn",phase:p,column:_,width:N})}else throw Error(`useDataTable.handleColumnResize, column ${L} not found`)},[F,A,c,f,r]),Xn=(0,M.useCallback)((p,L)=>{var ne,_e;let N=(0,B.isJsonGroup)(L,p,D),_=p[dl];if(p[wn]){if(n.closeTreeNode(_,!0),N){let we=F.indexOf(L),se=(ne=n.getRowsAtDepth)==null?void 0:ne.call(n,we+1);se&&!se.some(Ie=>Ie[wn]||Ie[xn])&&A({type:"hideColumns",columns:F.slice(we+2)})}}else if(n.openTreeNode(_),N){let we=(_e=n.getChildRows)==null?void 0:_e.call(n,_),se=F.indexOf(L)+1,Ie=[F[se]];we&&we.some(vo=>vo[xn])&&Ie.push(F[se+1]),Ie.some(vo=>vo.hidden)&&A({type:"showColumns",columns:Ie})}},[D,F,n,A]),{highlightedIndexRef:Yo,navigate:Qn,onFocus:jo,onKeyDown:qo,...Jn}=Zt({columnCount:F.filter(p=>p.hidden!==!0).length,containerRef:r,disableFocus:l,highlightedIndex:i,navigationStyle:u,requestScroll:ee,rowCount:n==null?void 0:n.size,onHighlight:T,viewportRange:J,viewportRowCount:Y.rowCount}),{onBlur:Zn,onDoubleClick:Yn,onKeyDown:et,onFocus:ot}=Bt({navigate:Qn}),jn=(0,M.useCallback)(p=>{jo(),p.defaultPrevented||ot(p)},[ot,jo]),qn=en({columns:F,data:Q,dataSource:n,getSelectedRows:G}),er=(0,M.useCallback)(p=>{n.groupBy=p.map(L=>L.name)},[n]),or=(0,M.useCallback)(p=>{(0,B.isGroupColumn)(p)?n.groupBy=[]:n&&n.groupBy.includes(p.name)&&(n.groupBy=n.groupBy.filter(L=>L!==p.name))},[n]),tr=(0,M.useCallback)(p=>{n.select(p),h==null||h(p)},[n,h]),nr=(0,M.useCallback)(p=>{g&&g(p===null?null:(0,B.asDataSourceRowObject)(p,D))},[D,g]),{onKeyDown:tt,onRowClick:nt}=Yt({highlightedIndexRef:Yo,onSelect:nr,onSelectionChange:tr,selectionModel:I}),rr=(0,M.useCallback)((p,L,N,_)=>{nt(p,L,N,_),d==null||d(p,(0,B.asDataSourceRowObject)(L,D))},[D,d,nt]),lr=(0,M.useCallback)(p=>{qo(p),p.defaultPrevented||et(p),p.defaultPrevented||tt(p)},[qo,et,tt]),ir=(0,M.useCallback)(p=>{let L={...f,columns:p};A({type:"init",tableConfig:L,dataSource:n}),c==null||c(ao(L))},[n,A,c,f]),ar=(0,M.useCallback)(p=>{v==null||v(p)},[v]),sr=(0,M.useCallback)(async(p,L,N)=>n.applyEdit(p,L,N),[n]),ur=(0,M.useCallback)(p=>{let{initialDragElement:L}=p,N=(0,B.getIndexFromRowElement)(L),_=O.current.find(ne=>ne[0]===N);_&&p.setPayload(_),b==null||b(p)},[O,b]),{onMouseDown:cr,draggable:mr}=oe({allowDragDrop:e,containerRef:r,draggableClassName:"vuuTable",id:s,onDragStart:ur,onDrop:ar,orientation:"vertical",itemQuery:".vuuTableRow"});return{...Jn,"aria-rowcount":n.size,rowClassNameGenerator:Z,draggableRow:mr,onBlur:Zn,onDoubleClick:Yn,onFocus:jn,onKeyDown:lr,onMouseDown:cr,columnMap:D,columns:F,data:Q,getRowOffset:k,handleContextMenuAction:Wn,headings:me,highlightedIndex:Yo.current,menuBuilder:j,onContextMenu:qn,onDataEdited:sr,onMoveColumn:ir,onMoveGroupColumn:er,onRemoveGroupColumn:or,onRowClick:rr,onSortColumn:Un,onResizeColumn:_n,onToggleGroup:Xn,scrollProps:fo,tableAttributes:de,tableConfig:f,viewportMeasurements:Y}};var yn=require("@vuu-ui/vuu-utils"),Pe=require("react"),Dn=({rowHeight:e=0})=>{let[o,t]=(0,Pe.useState)(e),r=(0,Pe.useRef)(o),n=(0,Pe.useMemo)(()=>new ResizeObserver(a=>{for(let i of a){let[{blockSize:s}]=i.borderBoxSize,u=Math.round(s);(0,yn.isValidNumber)(u)&&r.current!==u&&(r.current=u,t(u))}}),[]),l=(0,Pe.useCallback)(a=>{if(a){if(e===0){let{height:i}=a.getBoundingClientRect();console.log({boundingClientHeight:i}),console.log(`measured rowHeight = ${i} (${e})`),n.observe(a),t(i)}}else n.disconnect()},[n,e]);return{rowHeight:o,rowRef:l}};var ie=require("react/jsx-runtime"),he="vuuTable",{IDX:gl,RENDER_IDX:Cl}=so.metadataKeys,vl=({Row:e=Mo,allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:a=!1,highlightedIndex:i,id:s,navigationStyle:u="cell",onAvailableColumnsChange:m,onConfigChange:c,onDragStart:b,onDrop:v,onFeatureInvocation:w,onHighlight:T,onRowClick:d,onSelect:g,onSelectionChange:h,renderBufferSize:E=5,rowHeight:y,scrollingApiRef:P,selectionModel:I="extended",showColumnHeaders:S=!0,showColumnHeaderMenus:K=!0,headerHeight:z=S?y*1.25:0,size:Z})=>{let oe=(0,so.useId)(s),{columnMap:j,columns:te,data:F,draggableRow:A,getRowOffset:me,handleContextMenuAction:de,headings:f,highlightedIndex:x,menuBuilder:D,onDataEdited:V,onMoveColumn:C,onMoveGroupColumn:k,onRemoveGroupColumn:W,onResizeColumn:q,onRowClick:Y,onSortColumn:pe,onToggleGroup:Q,rowClassNameGenerator:O,scrollProps:G,tableAttributes:J,tableConfig:ae,viewportMeasurements:ee,...fo}=Rn({allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:a,headerHeight:z,highlightedIndex:i,id:oe,navigationStyle:u,onAvailableColumnsChange:m,onConfigChange:c,onDragStart:b,onDrop:v,onFeatureInvocation:w,onHighlight:T,onRowClick:d,onSelect:g,onSelectionChange:h,renderBufferSize:Math.max(5,E),rowHeight:y,scrollingApiRef:P,selectionModel:I,size:Z}),go=(0,Wo.default)(`${he}-contentContainer`,{[`${he}-colLines`]:J.columnSeparators,[`${he}-rowLines`]:J.rowSeparators,[`${he}-zebra`]:J.zebraStripes}),Ze={"--content-height":`${ee.contentHeight}px`,"--content-width":`${ee.contentWidth}px`,"--horizontal-scrollbar-height":`${ee.horizontalScrollbarHeight}px`,"--pinned-width-left":`${ee.pinnedWidthLeft}px`,"--pinned-width-right":`${ee.pinnedWidthRight}px`,"--header-height":`${z}px`,"--row-height-prop":`${y}px`,"--total-header-height":`${ee.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${ee.verticalScrollbarWidth}px`,"--viewport-body-height":`${ee.viewportBodyHeight}px`};return(0,ie.jsxs)(Hn.ContextMenuProvider,{menuActionHandler:de,menuBuilder:D,children:[(0,ie.jsx)("div",{className:`${he}-scrollbarContainer`,ref:G.scrollbarContainerRef,style:Ze,children:(0,ie.jsx)("div",{className:`${he}-scrollbarContent`})}),(0,ie.jsx)("div",{className:go,ref:G.contentContainerRef,style:Ze,children:(0,ie.jsxs)("div",{...fo,className:`${he}-table`,role:"table",tabIndex:a?void 0:-1,children:[S?(0,ie.jsx)(Po,{columns:G.columnsWithinViewport,headings:f,onMoveColumn:C,onMoveGroupColumn:k,onRemoveGroupColumn:W,onResizeColumn:q,onSortColumn:pe,showColumnHeaderMenus:K,tableConfig:ae,tableId:oe,virtualColSpan:G.virtualColSpan}):null,(0,ie.jsx)("div",{className:`${he}-body`,children:F.map(Ee=>(0,ie.jsx)(e,{"aria-rowindex":Ee[0]+1,classNameGenerator:O,columnMap:j,columns:G.columnsWithinViewport,highlighted:x===Ee[gl],onClick:Y,onDataEdited:V,row:Ee,offset:me(Ee),onToggleGroup:Q,virtualColSpan:G.virtualColSpan,zebraStripes:J.zebraStripes},Ee[Cl]))})]})}),A]})},hl=(0,We.forwardRef)(function({Row:o,allowDragDrop:t,availableColumns:r,className:n,config:l,dataSource:a,disableFocus:i,highlightedIndex:s,id:u,navigationStyle:m,onAvailableColumnsChange:c,onConfigChange:b,onDragStart:v,onDrop:w,onFeatureInvocation:T,onHighlight:d,onRowClick:g,onSelect:h,onSelectionChange:E,renderBufferSize:y,rowHeight:P,scrollingApiRef:I,selectionModel:S,showColumnHeaders:K,showColumnHeaderMenus:z,headerHeight:Z,style:oe,...j},te){let F=(0,We.useRef)(null),[A,me]=(0,We.useState)(),{rowHeight:de,rowRef:f}=Dn({rowHeight:P});if(l===void 0)throw Error("vuu Table requires config prop. Minimum config is list of Column Descriptors");if(a===void 0)throw Error("vuu Table requires dataSource prop");return(0,ie.jsxs)(Mn.MeasuredContainer,{...j,className:(0,Wo.default)(he,n),id:u,onResize:me,ref:(0,Pn.useForkRef)(F,te),children:[(0,ie.jsx)(Pt,{ref:f,height:P}),A&&de?(0,ie.jsx)(vl,{Row:o,allowDragDrop:t,availableColumns:r,config:l,containerRef:F,dataSource:a,disableFocus:i,headerHeight:Z,highlightedIndex:s,id:u,navigationStyle:m,onAvailableColumnsChange:c,onConfigChange:b,onDragStart:v,onDrop:w,onFeatureInvocation:T,onHighlight:d,onRowClick:g,onSelect:h,onSelectionChange:E,renderBufferSize:y,rowHeight:de,scrollingApiRef:I,selectionModel:S,showColumnHeaders:K,showColumnHeaderMenus:z,size:A}):null]})});var uo=require("react"),co=require("@vuu-ui/vuu-ui-controls"),En=require("@salt-ds/core"),Ue=require("@vuu-ui/vuu-utils");var Uo=require("react/jsx-runtime"),_o=(0,uo.memo)(({column:e,columnMap:o,onCommit:t=co.WarnCommit,row:r})=>{let n=o[e.name],l=!!r[n],a=(0,uo.useCallback)(i=>async s=>{let u=await t(i);return u===!0&&(0,Ue.dispatchCustomEvent)(s.target,"vuu-commit"),u},[t]);return e.editable?(0,Uo.jsx)(En.Checkbox,{checked:l,onClick:a(!l)}):(0,Uo.jsx)(co.CheckboxIcon,{checked:l,disabled:!0})},Ue.dataColumnAndKeyUnchanged);_o.displayName="CheckboxCell";(0,Ue.registerComponent)("checkbox-cell",_o,"cell-renderer",{serverDataType:"boolean"});var Sn=require("@vuu-ui/vuu-utils"),kn=require("@salt-ds/core"),An=require("@vuu-ui/vuu-ui-controls"),Ln=be(require("clsx"));var po=require("react/jsx-runtime"),mo="vuuTableInputCell",wl=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),Promise.resolve(!0)),In=({column:e,columnMap:o,onCommit:t=wl,row:r})=>{let n=o[e.name],l=r[n],{align:a="left",clientSideEditValidationCheck:i}=e,{warningMessage:s,...u}=(0,An.useEditableText)({initialValue:l,onCommit:t,clientSideEditValidationCheck:i}),m=s&&a==="left"?(0,po.jsx)("span",{className:`${mo}-icon`,"data-icon":"error"}):void 0,c=s&&a==="right"?(0,po.jsx)("span",{className:`${mo}-icon`,"data-icon":"error"}):void 0;return(0,po.jsx)(kn.Input,{...u,className:(0,Ln.default)(mo,{[`${mo}-error`]:s!==void 0}),endAdornment:m,startAdornment:c})};(0,Sn.registerComponent)("input-cell",In,"cell-renderer",{userCanAssign:!1});var Nn=require("@vuu-ui/vuu-ui-controls"),ge=require("@vuu-ui/vuu-utils"),Kn=be(require("clsx")),bo=require("react"),Fn=require("@vuu-ui/vuu-ui-controls");var On=require("react/jsx-runtime"),zn="vuuTableToggleCell",xl=({name:e,type:o})=>{if((0,ge.isTypeDescriptor)(o)&&(0,ge.isValueListRenderer)(o.renderer))return o.renderer.values;throw Error(`useLookupValues column ${e} has not been configured with a values list`)},Gn=(0,bo.memo)(function({column:o,columnMap:t,onCommit:r=Nn.WarnCommit,row:n}){let l=xl(o),a=t[o.name],i=n[a],s=(0,bo.useCallback)((u,m)=>r(m).then(c=>(c===!0&&(0,ge.dispatchCustomEvent)(u.target,"vuu-commit"),c)),[r]);return(0,On.jsx)(Fn.CycleStateButton,{className:(0,Kn.default)(zn,`${zn}-${o.name}`),onCommit:s,value:i,values:l,variant:"cta",children:i})},ge.dataColumnAndKeyUnchanged);(0,ge.registerComponent)("toggle-cell",Gn,"cell-renderer",{userCanAssign:!1});var $n=require("@vuu-ui/vuu-ui-controls"),Bn=require("@vuu-ui/vuu-utils"),Je=require("react"),Tl=(e,o)=>{let t=(0,Je.useRef)(null),[r,n]=(0,$n.useStateRef)(e),l=(0,Je.useCallback)(i=>{var s;if(i.key==="ArrowDown")n((u=-1)=>Math.min(o-1,u+1));else if(i.key==="ArrowUp")n((u=-1)=>Math.max(0,u-1));else if(i.key==="Enter"||i.key===" "){let{current:u}=r,m=(s=t.current)==null?void 0:s.querySelector(`[aria-rowindex="${u}"]`);m&&(0,Bn.dispatchMouseEvent)(m,"click")}},[r,o,n]),a=(0,Je.useCallback)(i=>{n(i)},[n]);return{highlightedIndexRef:r,onHighlight:a,onKeyDown:l,tableRef:t}};
1
+ 'use strict';
2
+
3
+ var GroupHeaderCell = require('./header-cell/GroupHeaderCell.js');
4
+ var HeaderCell = require('./header-cell/HeaderCell.js');
5
+ var Table = require('./Table.js');
6
+ var TableCell = require('./table-cell/TableCell.js');
7
+ var TableGroupCell = require('./table-cell/TableGroupCell.js');
8
+ var tableConfig = require('./table-config.js');
9
+ var CheckboxCell = require('./cell-renderers/checkbox-cell/CheckboxCell.js');
10
+ var InputCell = require('./cell-renderers/input-cell/InputCell.js');
11
+ var ToggleCell = require('./cell-renderers/toggle-cell/ToggleCell.js');
12
+ var useControlledTableNavigation = require('./useControlledTableNavigation.js');
13
+ var useTableModel = require('./useTableModel.js');
14
+ var useTableScroll = require('./useTableScroll.js');
15
+ var useTableViewport = require('./useTableViewport.js');
16
+
17
+
18
+
19
+ exports.GroupHeaderCell = GroupHeaderCell.GroupHeaderCell;
20
+ exports.GroupHeaderCellNext = GroupHeaderCell.GroupHeaderCell;
21
+ exports.HeaderCell = HeaderCell.HeaderCell;
22
+ exports.Table = Table.Table;
23
+ exports.TableCell = TableCell.TableCell;
24
+ exports.TableGroupCell = TableGroupCell.TableGroupCell;
25
+ exports.updateTableConfig = tableConfig.updateTableConfig;
26
+ exports.CheckboxCell = CheckboxCell.CheckboxCell;
27
+ exports.InputCell = InputCell.InputCell;
28
+ exports.ToggleCell = ToggleCell.ToggleCell;
29
+ exports.useControlledTableNavigation = useControlledTableNavigation.useControlledTableNavigation;
30
+ exports.isShowColumnSettings = useTableModel.isShowColumnSettings;
31
+ exports.isShowTableSettings = useTableModel.isShowTableSettings;
32
+ exports.useTableModel = useTableModel.useTableModel;
33
+ exports.noScrolling = useTableScroll.noScrolling;
34
+ exports.useTableScroll = useTableScroll.useTableScroll;
35
+ exports.useTableViewport = useTableViewport.useTableViewport;
2
36
  //# sourceMappingURL=index.js.map