@1771technologies/lytenyte-pro 0.0.39

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 (168) hide show
  1. package/LICENSE +15 -0
  2. package/dist/DialogPortalContext-C2WZTqJ3.js +47 -0
  3. package/dist/InternalBackdrop-Dm9czgoC.js +6746 -0
  4. package/dist/MenuRoot-9n64jNWP.js +724 -0
  5. package/dist/anchor-context-B9sGQdR5.js +35 -0
  6. package/dist/arrow-down-icon-B-3ldODD.js +27 -0
  7. package/dist/arrow-svg-evmXDI_J.js +29 -0
  8. package/dist/column-manager.js +1241 -0
  9. package/dist/cross-icon-CEMLAlFX.js +20 -0
  10. package/dist/dialog.js +506 -0
  11. package/dist/filter-manager.js +1056 -0
  12. package/dist/getPseudoElementBounds-BSHt6WYm.js +26 -0
  13. package/dist/grid-container.js +18 -0
  14. package/dist/icons.js +512 -0
  15. package/dist/index.js +3730 -0
  16. package/dist/lytenyte-pro.css +1948 -0
  17. package/dist/manage-columns-icon-D4CElo5H.js +146 -0
  18. package/dist/menu.js +1639 -0
  19. package/dist/pill-C4Jhdf8E.js +985 -0
  20. package/dist/pill-manager.js +674 -0
  21. package/dist/plus-icon-ToqW5CC-.js +15 -0
  22. package/dist/popover.js +770 -0
  23. package/dist/row-group-icon-BOOju5Vu.js +205 -0
  24. package/dist/search-icon-CcG1lqsn.js +86 -0
  25. package/dist/select-C6xOZZLq.js +2231 -0
  26. package/dist/sort-manager.js +298 -0
  27. package/dist/tickmark-icon-CoogRMoO.js +51 -0
  28. package/dist/types/cell-selection/cell-selection-containers.d.ts +3 -0
  29. package/dist/types/cell-selection/cell-selection-driver.d.ts +1 -0
  30. package/dist/types/cell-selection/cell-style-row.d.ts +8 -0
  31. package/dist/types/column-manager/column-manager-drag-box-controls.d.ts +1 -0
  32. package/dist/types/column-manager/column-manager-drag-box-expander.d.ts +1 -0
  33. package/dist/types/column-manager/column-manager-drag-box-label.d.ts +5 -0
  34. package/dist/types/column-manager/column-manager-drag-box.d.ts +13 -0
  35. package/dist/types/column-manager/column-manager-drag-placeholder.d.ts +5 -0
  36. package/dist/types/column-manager/column-manager-drop-zone.d.ts +10 -0
  37. package/dist/types/column-manager/column-manager-impl.d.ts +36 -0
  38. package/dist/types/column-manager/column-manager-pill.d.ts +4 -0
  39. package/dist/types/column-manager/column-manager-pivot-mode-toggle.d.ts +1 -0
  40. package/dist/types/column-manager/column-manager-search.d.ts +1 -0
  41. package/dist/types/column-manager/column-manager-state.d.ts +8 -0
  42. package/dist/types/column-manager/column-manager-tree-item.d.ts +6 -0
  43. package/dist/types/column-manager/column-manager-tree.d.ts +11 -0
  44. package/dist/types/column-manager/column-manager-types.d.ts +1 -0
  45. package/dist/types/column-manager/column-manager.d.ts +1 -0
  46. package/dist/types/column-manager/column-mananger-context.d.ts +12 -0
  47. package/dist/types/column-manager/utils/all-leafs.d.ts +3 -0
  48. package/dist/types/column-manager/utils/can-hide-item.d.ts +3 -0
  49. package/dist/types/column-manager/utils/handle-item-hide.d.ts +3 -0
  50. package/dist/types/components-internal/button/button.d.ts +9 -0
  51. package/dist/types/components-internal/grid-frame/grid-frame.d.ts +11 -0
  52. package/dist/types/components-internal/radio/radio.d.ts +5 -0
  53. package/dist/types/components-internal/separator/separator.d.ts +8 -0
  54. package/dist/types/components-internal/toggle/toggle.d.ts +7 -0
  55. package/dist/types/dialog/dialog-driver.d.ts +1 -0
  56. package/dist/types/dialog/dialog-impl.d.ts +6 -0
  57. package/dist/types/dialog/dialog.d.ts +8 -0
  58. package/dist/types/dialog/use-dialog-class.d.ts +1 -0
  59. package/dist/types/external.d.ts +2 -0
  60. package/dist/types/filter-manager/combined-to-flat.d.ts +3 -0
  61. package/dist/types/filter-manager/components/apply-filter-button.d.ts +1 -0
  62. package/dist/types/filter-manager/components/clear-filter-button.d.ts +1 -0
  63. package/dist/types/filter-manager/components/flatten-tree-items.d.ts +4 -0
  64. package/dist/types/filter-manager/components/get-child-values.d.ts +2 -0
  65. package/dist/types/filter-manager/components/in-filter-container.d.ts +1 -0
  66. package/dist/types/filter-manager/components/in-filter-error.d.ts +5 -0
  67. package/dist/types/filter-manager/components/in-filter-loading.d.ts +1 -0
  68. package/dist/types/filter-manager/components/in-filter-root.d.ts +11 -0
  69. package/dist/types/filter-manager/components/in-filter-tree.d.ts +15 -0
  70. package/dist/types/filter-manager/components/simple-filter-additional-switch.d.ts +1 -0
  71. package/dist/types/filter-manager/components/simple-filter-operator/date-operator.d.ts +1 -0
  72. package/dist/types/filter-manager/components/simple-filter-operator/number-operator.d.ts +1 -0
  73. package/dist/types/filter-manager/components/simple-filter-operator/simple-filter-operator.d.ts +1 -0
  74. package/dist/types/filter-manager/components/simple-filter-operator/text-operator.d.ts +1 -0
  75. package/dist/types/filter-manager/components/simple-filter-root.d.ts +9 -0
  76. package/dist/types/filter-manager/components/simple-filter-value/date-value.d.ts +1 -0
  77. package/dist/types/filter-manager/components/simple-filter-value/number-value.d.ts +1 -0
  78. package/dist/types/filter-manager/components/simple-filter-value/simple-filter-value.d.ts +1 -0
  79. package/dist/types/filter-manager/components/simple-filter-value/text-value.d.ts +1 -0
  80. package/dist/types/filter-manager/components/use-date-filter-callbacks.d.ts +9 -0
  81. package/dist/types/filter-manager/components/use-in-filter-item-loader.d.ts +7 -0
  82. package/dist/types/filter-manager/components/use-number-filter-callbacks.d.ts +8 -0
  83. package/dist/types/filter-manager/components/use-text-filter-callbacks.d.ts +8 -0
  84. package/dist/types/filter-manager/filter-manager-impl.d.ts +27 -0
  85. package/dist/types/filter-manager/filter-manager.d.ts +1 -0
  86. package/dist/types/filter-manager/filter-state-context.d.ts +16 -0
  87. package/dist/types/filter-manager/flat-to-combined.d.ts +3 -0
  88. package/dist/types/filter-manager/flatten-combined-filter.d.ts +3 -0
  89. package/dist/types/filter-manager/is-filter-complete.d.ts +2 -0
  90. package/dist/types/filter-manager/types.d.ts +15 -0
  91. package/dist/types/filter-manager/use-in-filter.d.ts +5 -0
  92. package/dist/types/filter-manager/use-simple-filters.d.ts +8 -0
  93. package/dist/types/grid-container/grid-container-impl.d.ts +6 -0
  94. package/dist/types/grid-container/grid-container.d.ts +2 -0
  95. package/dist/types/icons.d.ts +1 -0
  96. package/dist/types/index.d.ts +7 -0
  97. package/dist/types/license.d.ts +12 -0
  98. package/dist/types/list-view/list-view-context.d.ts +21 -0
  99. package/dist/types/list-view/list-view.d.ts +26 -0
  100. package/dist/types/lytenyte-pro.d.ts +7 -0
  101. package/dist/types/menu/arrow-svg.d.ts +1 -0
  102. package/dist/types/menu/column-menu/column-menu-driver.d.ts +4 -0
  103. package/dist/types/menu/context-menu/context-menu-driver.d.ts +1 -0
  104. package/dist/types/menu/context-menu/use-context-menu-listener.d.ts +6 -0
  105. package/dist/types/menu/menu-impl.d.ts +17 -0
  106. package/dist/types/menu/menu.d.ts +18 -0
  107. package/dist/types/menu/use-menu-class-name.d.ts +1 -0
  108. package/dist/types/overlay/load-error-overlay.d.ts +1 -0
  109. package/dist/types/overlay/loading-overlay.d.ts +1 -0
  110. package/dist/types/overlay/no-data-overlay.d.ts +1 -0
  111. package/dist/types/overlay/overlay-driver.d.ts +1 -0
  112. package/dist/types/pill/pill.d.ts +5 -0
  113. package/dist/types/pill-manager/pill-manager-agg-menu.d.ts +7 -0
  114. package/dist/types/pill-manager/pill-manager-controls.d.ts +9 -0
  115. package/dist/types/pill-manager/pill-manager-drag-placeholder.d.ts +5 -0
  116. package/dist/types/pill-manager/pill-manager-expander.d.ts +1 -0
  117. package/dist/types/pill-manager/pill-manager-impl.d.ts +49 -0
  118. package/dist/types/pill-manager/pill-manager-pill.d.ts +4 -0
  119. package/dist/types/pill-manager/pill-manager-pills/pill-manager-pills.d.ts +2 -0
  120. package/dist/types/pill-manager/pill-manager-pills/use-aggregation-source.d.ts +2 -0
  121. package/dist/types/pill-manager/pill-manager-pills/use-column-pivot-source.d.ts +2 -0
  122. package/dist/types/pill-manager/pill-manager-pills/use-column-source.d.ts +2 -0
  123. package/dist/types/pill-manager/pill-manager-pills/use-measures-source.d.ts +2 -0
  124. package/dist/types/pill-manager/pill-manager-pills/use-row-groups-source.d.ts +2 -0
  125. package/dist/types/pill-manager/pill-manager-pills/utils.d.ts +3 -0
  126. package/dist/types/pill-manager/pill-manager-row-label.d.ts +22 -0
  127. package/dist/types/pill-manager/pill-manager-row.d.ts +12 -0
  128. package/dist/types/pill-manager/pill-manager-rows.d.ts +1 -0
  129. package/dist/types/pill-manager/pill-manager-separator.d.ts +1 -0
  130. package/dist/types/pill-manager/pill-manager-types.d.ts +36 -0
  131. package/dist/types/pill-manager/pill-manager.d.ts +1 -0
  132. package/dist/types/popover/anchor-context.d.ts +6 -0
  133. package/dist/types/popover/popover-driver.d.ts +1 -0
  134. package/dist/types/popover/popover-impl.d.ts +8 -0
  135. package/dist/types/popover/popover.d.ts +10 -0
  136. package/dist/types/popover/use-popover-class.d.ts +1 -0
  137. package/dist/types/select/select.d.ts +17 -0
  138. package/dist/types/sort-manager/sort-adder.d.ts +4 -0
  139. package/dist/types/sort-manager/sort-apply.d.ts +1 -0
  140. package/dist/types/sort-manager/sort-cancel.d.ts +1 -0
  141. package/dist/types/sort-manager/sort-clear.d.ts +1 -0
  142. package/dist/types/sort-manager/sort-column-select.d.ts +5 -0
  143. package/dist/types/sort-manager/sort-direction-select.d.ts +5 -0
  144. package/dist/types/sort-manager/sort-items-to-sort-model.d.ts +3 -0
  145. package/dist/types/sort-manager/sort-manager-container.d.ts +53 -0
  146. package/dist/types/sort-manager/sort-manager-context.d.ts +4 -0
  147. package/dist/types/sort-manager/sort-manager-impl.d.ts +30 -0
  148. package/dist/types/sort-manager/sort-manager.d.ts +1 -0
  149. package/dist/types/sort-manager/sort-model-to-sort-items.d.ts +4 -0
  150. package/dist/types/sort-manager/sort-remove.d.ts +4 -0
  151. package/dist/types/sort-manager/sort-sort-select.d.ts +5 -0
  152. package/dist/types/sort-manager/use-sort-state.d.ts +8 -0
  153. package/dist/types/sort-manager/use-sortable-column-items.d.ts +9 -0
  154. package/dist/types/types.d.ts +1 -0
  155. package/dist/types/use-client-data-source.d.ts +6 -0
  156. package/dist/types/use-edge-scroll.d.ts +7 -0
  157. package/dist/types/use-grid.d.ts +6 -0
  158. package/dist/types/use-lytenyte.d.ts +10 -0
  159. package/dist/types/use-tree-data-source.d.ts +3 -0
  160. package/dist/types/watermark.d.ts +3 -0
  161. package/dist/types.js +1 -0
  162. package/dist/use-grid-DKvzGZWc.js +916 -0
  163. package/dist/useAnchorPositioning-Cm44rb7y.js +252 -0
  164. package/dist/useBaseUiId-J66PFGv_.js +48 -0
  165. package/dist/useButton-Cy7tjZ__.js +183 -0
  166. package/dist/useCompositeListItem-I14CpQPi.js +51 -0
  167. package/dist/useScrollLock-D6h5lZYs.js +515 -0
  168. package/package.json +96 -0
@@ -0,0 +1,916 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import React__default, { useRef, useCallback, useEffect, memo, useMemo, createContext, useContext } from "react";
3
+ import { clsx, sizeFromCoord, getClientY, getClientX, getRelativeXPosition } from "@1771technologies/js-utils";
4
+ import { refCompat, useEvent } from "@1771technologies/react-utils";
5
+ import { getHoveredRowIndex } from "@1771technologies/grid-core";
6
+ import { useDraggable } from "@1771technologies/react-dragon";
7
+ import { context } from "@1771technologies/grid-provider";
8
+ const ROW_LEAF_KIND = 1;
9
+ const ROW_GROUP_KIND = 2;
10
+ const ROW_TOTAL_KIND = 3;
11
+ const COLUMN_GROUP_ID_DELIMITER = "-->";
12
+ const ROW_DEFAULT_PATH_SEPARATOR = "-->";
13
+ const ROW_TOTAL_ID = "__lng__totals__row";
14
+ const COLUMN_EMPTY_PREFIX = "lytenyte-empty:";
15
+ const COLUMN_MARKER_ID = "lytenyte-marker-column";
16
+ const GROUP_COLUMN_PREFIX = "lytenyte-group-column:";
17
+ const GROUP_COLUMN_MULTI_PREFIX = `${GROUP_COLUMN_PREFIX}:multi:`;
18
+ const GROUP_COLUMN_SINGLE_ID = `${GROUP_COLUMN_PREFIX}:single`;
19
+ const GROUP_COLUMN_TREE_DATA = `${GROUP_COLUMN_PREFIX}:tree`;
20
+ const COLUMN_GROUP_HEADER_HEIGHT = 28;
21
+ const COLUMN_HEADER_HEIGHT = 32;
22
+ const COLUMN_SCAN_DISTANCE = 20;
23
+ const PAGINATE_PAGE_SIZE = 50;
24
+ const ROW_HEIGHT = 32;
25
+ const ROW_DETAIL_HEIGHT = 300;
26
+ const ROW_UPDATE_STACK_SIZE = 20;
27
+ const DEFAULT_MAX_WIDTH = 1e3;
28
+ const DEFAULT_MIN_WIDTH = 80;
29
+ const DEFAULT_WIDTH = 150;
30
+ const DEFAULT_SORT_CYCLE = ["asc", "desc", null];
31
+ const GRID_CELL_POSITION = 1;
32
+ const FULL_WIDTH_POSITION = 2;
33
+ const HEADER_CELL_POSITION = 3;
34
+ const HEADER_GROUP_CELL_POSITION = 4;
35
+ const FLOATING_CELL_POSITION = 5;
36
+ const FULL_ENCODING = -2;
37
+ const END_ENCODING = -1;
38
+ const transformCache = {};
39
+ function getTransform(x, y) {
40
+ transformCache[x] ??= {};
41
+ transformCache[x][y] ??= `translate3d(${x}px, ${y}px, 0px)`;
42
+ return transformCache[x][y];
43
+ }
44
+ function Checkbox({
45
+ isDisabled,
46
+ isChecked,
47
+ isDeterminate,
48
+ onCheckChange,
49
+ isLoading,
50
+ ...props
51
+ }) {
52
+ return /* @__PURE__ */ jsxs("div", { className: clsx("lng1771-checkbox", !isDisabled && "lng1771-checkbox--disabled"), children: [
53
+ /* @__PURE__ */ jsx(
54
+ "input",
55
+ {
56
+ ...props,
57
+ className: "lng1771-checkbox__input",
58
+ checked: isChecked,
59
+ onPointerDownCapture: (e) => {
60
+ e.stopPropagation();
61
+ e.preventDefault();
62
+ },
63
+ onChange: (e) => {
64
+ onCheckChange?.(e.target.checked, e);
65
+ },
66
+ type: "checkbox",
67
+ disabled: isDisabled
68
+ }
69
+ ),
70
+ /* @__PURE__ */ jsxs(
71
+ "div",
72
+ {
73
+ className: clsx(
74
+ "lng1771-checkbox__mark",
75
+ isDisabled && "lng1771-checkbox__mark--disabled",
76
+ !isDisabled && isChecked && "lng1771-checkbox__mark--checked",
77
+ isLoading && "lng1771-checkbox__mark--loading"
78
+ ),
79
+ children: [
80
+ isChecked && !isDeterminate && /* @__PURE__ */ jsx(CheckMark, {}),
81
+ isChecked && isDeterminate && /* @__PURE__ */ jsx(CheckIndeterminate, {}),
82
+ !isChecked && isDisabled && /* @__PURE__ */ jsx(CheckboxDisabled, {})
83
+ ]
84
+ }
85
+ )
86
+ ] });
87
+ }
88
+ function CheckMark() {
89
+ return /* @__PURE__ */ jsx("svg", { width: "12", height: "9", viewBox: "0 0 11 9", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx(
90
+ "path",
91
+ {
92
+ d: "M1.38721 4.34783C2.92567 5.26087 4.15644 7.08696 4.46413 8C6.00259 4.34783 8.15644 1.91304 9.38721 1",
93
+ stroke: "currentcolor",
94
+ strokeWidth: "2",
95
+ strokeLinecap: "round",
96
+ strokeLinejoin: "round"
97
+ }
98
+ ) });
99
+ }
100
+ function CheckIndeterminate() {
101
+ return /* @__PURE__ */ jsx("svg", { width: "12", height: "2", viewBox: "0 0 11 2", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx(
102
+ "path",
103
+ {
104
+ d: "M1.38721 1H9.38721",
105
+ stroke: "currentcolor",
106
+ strokeWidth: "1.8",
107
+ strokeLinecap: "round",
108
+ strokeLinejoin: "round"
109
+ }
110
+ ) });
111
+ }
112
+ function CheckboxDisabled() {
113
+ return /* @__PURE__ */ jsx("svg", { width: "15", height: "14", viewBox: "0 0 15 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx(
114
+ "path",
115
+ {
116
+ fillRule: "evenodd",
117
+ clipRule: "evenodd",
118
+ d: "M0.720459 6.99967C0.720459 10.6812 3.70564 13.6663 7.38713 13.6663C11.0686 13.6663 14.0538 10.6812 14.0538 6.99967C14.0538 3.31745 11.0686 0.333008 7.38713 0.333008C3.70564 0.333008 0.720459 3.31745 0.720459 6.99967ZM4.29527 2.84412C5.15972 2.20042 6.22713 1.81449 7.38713 1.81449C10.2508 1.81449 12.5723 4.13597 12.5723 6.99967C12.5723 8.16042 12.1871 9.22782 11.5427 10.0915L4.29527 2.84412ZM2.20194 6.99967C2.20194 5.83079 2.59379 4.75597 3.24564 3.8893L10.4975 11.1412C9.63009 11.7937 8.55527 12.1849 7.38713 12.1849C4.52342 12.1849 2.20194 9.86338 2.20194 6.99967Z",
119
+ fill: "currentcolor"
120
+ }
121
+ ) });
122
+ }
123
+ const ButtonImpl = ({
124
+ buttonRef,
125
+ ...props
126
+ }) => {
127
+ return /* @__PURE__ */ jsx(
128
+ "button",
129
+ {
130
+ tabIndex: -1,
131
+ ...props,
132
+ ref: buttonRef,
133
+ className: clsx("lng1771-icon-button", props.className),
134
+ children: props.children
135
+ }
136
+ );
137
+ };
138
+ const GridButton = refCompat(ButtonImpl, "Button");
139
+ function CollapseButton(props) {
140
+ return /* @__PURE__ */ jsx(GridButton, { ...props, children: "-" });
141
+ }
142
+ function ExpandButton(props) {
143
+ return /* @__PURE__ */ jsx(GridButton, { ...props, children: "+" });
144
+ }
145
+ function useCellFullWidthFocus(api, rowIndex) {
146
+ const ref = useRef(null);
147
+ const skipRef = useRef(false);
148
+ const onFocus = useEvent(() => {
149
+ if (skipRef.current) {
150
+ skipRef.current = false;
151
+ return;
152
+ }
153
+ api.getState().internal.navigatePosition.set({
154
+ kind: FULL_WIDTH_POSITION,
155
+ columnIndex: 0,
156
+ rowIndex
157
+ });
158
+ });
159
+ const tryFocus = useEvent((element) => {
160
+ const sx = api.getState();
161
+ const position = sx.internal.navigatePosition.peek();
162
+ if (!element || !position || position.kind !== FULL_WIDTH_POSITION) return;
163
+ const posRow = position.rowIndex;
164
+ if (rowIndex === posRow && !element.contains(document.activeElement) && element !== document.activeElement) {
165
+ api.navigateScrollIntoView(posRow);
166
+ skipRef.current = true;
167
+ element.focus();
168
+ }
169
+ });
170
+ const handleRef = useCallback(
171
+ (el) => {
172
+ tryFocus(el);
173
+ ref.current = el;
174
+ },
175
+ [tryFocus]
176
+ );
177
+ useEffect(() => {
178
+ const sx = api.getState();
179
+ const unsub = sx.internal.navigatePosition.watch(() => {
180
+ tryFocus(ref.current);
181
+ }, false);
182
+ return () => {
183
+ unsub();
184
+ };
185
+ }, [api, ref, rowIndex, tryFocus]);
186
+ return { handleRef, onFocus };
187
+ }
188
+ function handleRowSelection(api, row, bulk, meta, ignoreActivator = false, expectedActivator = "single-click") {
189
+ const sx = api.getState();
190
+ const mode = sx.rowSelectionMode.peek();
191
+ const activator = sx.rowSelectionPointerActivator.peek();
192
+ if (mode === "none" || activator !== expectedActivator && !ignoreActivator) return;
193
+ const canSelect = canSelectRow(api, row);
194
+ if (!canSelect) return;
195
+ const isSelected = sx.rowSelectionSelectedIds.peek().has(row.id);
196
+ if (mode === "single") {
197
+ api.rowSelectionClear();
198
+ if (!isSelected) api.rowSelectionSelect([row.id]);
199
+ return;
200
+ }
201
+ const pivotIndex = sx.internal.rowSelectionPivotIndex.peek();
202
+ const lastWasDeselect = sx.internal.rowSelectionLastWasDeselect.peek();
203
+ const childrenAsWell = sx.rowSelectionSelectChildren.peek();
204
+ const rowIndex = row.rowIndex;
205
+ if (bulk && pivotIndex != null) {
206
+ const idsToChange = [];
207
+ const start = Math.min(rowIndex, pivotIndex);
208
+ const end = Math.max(rowIndex, pivotIndex) + 1;
209
+ for (let i = start; i < end; i++) {
210
+ const row2 = api.rowByIndex(i);
211
+ if (!row2 || !canSelectRow(api, row2)) continue;
212
+ idsToChange.push(row2.id);
213
+ }
214
+ if (lastWasDeselect) api.rowSelectionDeselect(idsToChange, childrenAsWell);
215
+ else api.rowSelectionSelect(idsToChange, childrenAsWell);
216
+ return;
217
+ }
218
+ const additive = meta || sx.rowSelectionMultiSelectOnClick.peek();
219
+ if (additive) {
220
+ if (isSelected) api.rowSelectionDeselect([row.id], sx.rowSelectionSelectChildren.peek());
221
+ else api.rowSelectionSelect([row.id], sx.rowSelectionSelectChildren.peek());
222
+ sx.internal.rowSelectionPivotIndex.set(rowIndex);
223
+ sx.internal.rowSelectionLastWasDeselect.set(isSelected);
224
+ return;
225
+ }
226
+ sx.internal.rowSelectionPivotIndex.set(rowIndex);
227
+ sx.internal.rowSelectionLastWasDeselect.set(isSelected);
228
+ api.rowSelectionClear();
229
+ if (!isSelected) api.rowSelectionSelect([row.id]);
230
+ }
231
+ function canSelectRow(api, row) {
232
+ const predicate = api.getState().rowSelectionPredicate.peek();
233
+ const canSelect = predicate === "all" ? true : predicate === "group-only" ? api.rowIsGroup(row) : predicate === "leaf-only" ? api.rowIsLeaf(row) : predicate({ row, api });
234
+ return canSelect;
235
+ }
236
+ function useFullWidthEvents(api, row) {
237
+ const onClick = useEvent((event) => {
238
+ handleRowSelection(
239
+ api,
240
+ row,
241
+ event.shiftKey,
242
+ event.metaKey || event.ctrlKey,
243
+ false,
244
+ "single-click"
245
+ );
246
+ });
247
+ const onDoubleClick = useEvent((event) => {
248
+ handleRowSelection(
249
+ api,
250
+ row,
251
+ event.shiftKey,
252
+ event.metaKey || event.ctrlKey,
253
+ false,
254
+ "double-click"
255
+ );
256
+ });
257
+ return { onClick, onDoubleClick };
258
+ }
259
+ function CellFullWidthImpl({
260
+ row,
261
+ rowIndex,
262
+ rowPin,
263
+ colCount,
264
+ yPositions,
265
+ api,
266
+ paginateOffset
267
+ }) {
268
+ const sx = api.getState();
269
+ const width = sx.internal.viewportInnerWidth.use();
270
+ const cx = useMemo(() => {
271
+ const isTop = rowPin === "top";
272
+ const isBot = rowPin === "bottom";
273
+ const height = sizeFromCoord(rowIndex, yPositions);
274
+ const rowCount = sx.internal.rowCount.peek();
275
+ const rowTopCount = sx.internal.rowTopCount.peek();
276
+ const rowBotCount = sx.internal.rowBottomCount.peek();
277
+ const firstBotIndex = rowCount - rowBotCount;
278
+ const y = isBot ? yPositions[rowIndex] - yPositions[firstBotIndex] : isTop ? yPositions[rowIndex] : yPositions[rowIndex] - yPositions[rowTopCount] - paginateOffset;
279
+ const transform = getTransform(0, y);
280
+ return { style: { transform, height } };
281
+ }, [
282
+ paginateOffset,
283
+ rowIndex,
284
+ rowPin,
285
+ sx.internal.rowBottomCount,
286
+ sx.internal.rowCount,
287
+ sx.internal.rowTopCount,
288
+ yPositions
289
+ ]);
290
+ const Renderer = sx.rowFullWidthRenderer.use() ?? DefaultRenderer;
291
+ const selected = sx.rowSelectionSelectedIds.use();
292
+ const isSelected = selected.has(row.id);
293
+ const { handleRef, onFocus } = useCellFullWidthFocus(api, rowIndex);
294
+ const events = useFullWidthEvents(api, row);
295
+ return /* @__PURE__ */ jsx(
296
+ "div",
297
+ {
298
+ role: "gridcell",
299
+ ref: handleRef,
300
+ "aria-colindex": 1,
301
+ "aria-colspan": colCount,
302
+ "aria-rowindex": rowIndex + 1,
303
+ "aria-rowspan": 1,
304
+ "data-lng1771-rowid": row.id,
305
+ "data-lng1771-rowindex": rowIndex,
306
+ tabIndex: -1,
307
+ style: { width, ...cx.style },
308
+ ...events,
309
+ onFocus,
310
+ className: clsx(
311
+ "lng1771-cell__full-width",
312
+ rowIndex % 2 === 1 && "lng1771-cell__full-width--alternate",
313
+ isSelected && "lng1771-cell__full-width--selected"
314
+ ),
315
+ children: /* @__PURE__ */ jsx(Renderer, { api, row })
316
+ }
317
+ );
318
+ }
319
+ const CellFullWidth = memo(CellFullWidthImpl);
320
+ function DefaultRenderer() {
321
+ return /* @__PURE__ */ jsx("div", { children: "Not Implemented" });
322
+ }
323
+ function useCellStyle(api, xPositions, yPositions, columnIndex, rowIndex, columnSpan, rowSpan, column, rowPin, rowId, paginateOffset) {
324
+ const sx = api.getState();
325
+ const vpWidth = sx.internal.viewportInnerWidth.use();
326
+ const rowDetailHeight = sx.internal.rowDetailHeight.use();
327
+ const height = sizeFromCoord(rowIndex, yPositions, rowSpan) - rowDetailHeight(rowIndex);
328
+ const width = sizeFromCoord(columnIndex, xPositions, columnSpan);
329
+ const selectedIds = sx.rowSelectionSelectedIds.use();
330
+ const rtl = sx.rtl.use();
331
+ const styleAndCss = useMemo(() => {
332
+ const isStart = column.pin === "start";
333
+ const isEnd = column.pin == "end";
334
+ const isTop = rowPin === "top";
335
+ const isBot = rowPin === "bottom";
336
+ const isLastStart = sx.columnVisibleStartCount.peek() - 1 === columnIndex && columnIndex > 0;
337
+ const isFirstEnd = sx.columnVisibleCenterCount.peek() + sx.columnVisibleStartCount.peek() === columnIndex;
338
+ const rowCount = sx.internal.rowCount.peek();
339
+ const rowTopCount = sx.internal.rowTopCount.peek();
340
+ const rowBotCount = sx.internal.rowBottomCount.peek();
341
+ const firstBotIndex = rowCount - rowBotCount;
342
+ const x = isEnd ? xPositions[columnIndex] - xPositions.at(-1) + vpWidth : xPositions[columnIndex];
343
+ const y = isBot ? yPositions[rowIndex] - yPositions[firstBotIndex] : isTop ? yPositions[rowIndex] : yPositions[rowIndex] - yPositions[rowTopCount] - paginateOffset;
344
+ const transform = getTransform(x * (rtl ? -1 : 1), y);
345
+ const style = { height, width, transform };
346
+ if (isStart || isEnd) {
347
+ style.insetInlineStart = "0px";
348
+ style.position = "sticky";
349
+ style.zIndex = 2;
350
+ }
351
+ if (isTop || isBot) {
352
+ style.position = "sticky";
353
+ style.top = "0px";
354
+ style.zIndex = column.pin === "start" ? 4 : 3;
355
+ }
356
+ const selected = selectedIds.has(rowId);
357
+ const className = clsx(
358
+ selected && "lng1771-cell--selected",
359
+ isLastStart && "lng1771-cell--last-start",
360
+ isFirstEnd && "lng1771-cell--first-end"
361
+ );
362
+ return { style, className };
363
+ }, [
364
+ column.pin,
365
+ columnIndex,
366
+ height,
367
+ paginateOffset,
368
+ rowId,
369
+ rowIndex,
370
+ rowPin,
371
+ rtl,
372
+ selectedIds,
373
+ sx.columnVisibleCenterCount,
374
+ sx.columnVisibleStartCount,
375
+ sx.internal.rowBottomCount,
376
+ sx.internal.rowCount,
377
+ sx.internal.rowTopCount,
378
+ vpWidth,
379
+ width,
380
+ xPositions,
381
+ yPositions
382
+ ]);
383
+ return styleAndCss;
384
+ }
385
+ function CellRendererDefault({ api, row, column }) {
386
+ const field = api.columnField(row, column);
387
+ return /* @__PURE__ */ jsx(
388
+ "div",
389
+ {
390
+ style: {
391
+ width: "100%",
392
+ height: "100%",
393
+ boxSizing: "border-box",
394
+ display: "flex",
395
+ alignItems: "center",
396
+ paddingInline: 12,
397
+ overflow: "hidden"
398
+ },
399
+ children: /* @__PURE__ */ jsx(
400
+ "span",
401
+ {
402
+ style: {
403
+ width: "100%",
404
+ textOverflow: "ellipsis",
405
+ whiteSpace: "nowrap",
406
+ overflow: "hidden"
407
+ },
408
+ children: String(field ?? "")
409
+ }
410
+ )
411
+ }
412
+ );
413
+ }
414
+ function useDragControl(api, row) {
415
+ const draggable = useDraggable({
416
+ dragData: () => {
417
+ const sx = api.getState();
418
+ const rows = sx.rowDragMultiRow.peek() ? [row, ...api.rowSelectionGetSelected().filter((r) => r !== row)] : [row];
419
+ return { rows, api };
420
+ },
421
+ dragTags: () => {
422
+ const sx = api.getState();
423
+ const id = sx.gridId.peek();
424
+ const externalGrids = sx.rowDragExternalGrids.peek();
425
+ const externalIds = externalGrids.map((c) => c.getState().gridId.peek());
426
+ return [id, ...externalIds].map((c) => `${c}:row-drag`);
427
+ },
428
+ onDragStart: (ev) => {
429
+ const controller = new AbortController();
430
+ const startY = getClientY(ev.event);
431
+ const updates = [startY, startY];
432
+ let anim = null;
433
+ const sx = api.getState();
434
+ sx.internal.rowDragStartIndex.set(row.rowIndex);
435
+ const rows = sx.rowDragMultiRow.peek() ? [row, ...api.rowSelectionGetSelected().filter((r) => r !== row)] : [row];
436
+ const ref = {
437
+ event: ev.event,
438
+ api,
439
+ rows,
440
+ overIndex: -1
441
+ };
442
+ api.eventFire("onRowDragStart", ref);
443
+ const externalGrids = sx.rowDragExternalGrids.peek();
444
+ const apis = [api, ...externalGrids];
445
+ document.addEventListener(
446
+ "drag",
447
+ (ev2) => {
448
+ const clientX = getClientX(ev2);
449
+ const clientY = getClientY(ev2);
450
+ ev2.preventDefault();
451
+ [updates[0], updates[1]] = [updates[1], clientY];
452
+ if (updates[0] === clientY) return;
453
+ if (anim) cancelAnimationFrame(anim);
454
+ anim = requestAnimationFrame(() => {
455
+ for (let i = 0; i < apis.length; i++) {
456
+ const api2 = apis[i];
457
+ const sx2 = api2.getState();
458
+ const viewport = sx2.internal.viewport.peek();
459
+ if (!viewport) continue;
460
+ const relative = getRelativeXPosition(viewport, clientX);
461
+ const isOutOfBounds = relative.left < 0 || relative.right < 0;
462
+ const rowDragOverIndex = isOutOfBounds ? null : getHoveredRowIndex(api2, updates[0]);
463
+ ref.event = ev2;
464
+ if (rowDragOverIndex != null) {
465
+ sx2.internal.rowDragOverIndex.set(rowDragOverIndex);
466
+ ref.overIndex = rowDragOverIndex;
467
+ api2.eventFire("onRowDragMove", ref);
468
+ } else {
469
+ sx2.internal.rowDragOverIndex.set(-1);
470
+ ref.overIndex = -1;
471
+ api2.eventFire("onRowDragMove", ref);
472
+ }
473
+ }
474
+ });
475
+ },
476
+ { signal: controller.signal }
477
+ );
478
+ window.addEventListener("dragend", (event) => {
479
+ controller.abort();
480
+ const overIndex = sx.internal.rowDragOverIndex.peek();
481
+ ref.overIndex = overIndex;
482
+ ref.event = event;
483
+ const isValid = event.dataTransfer?.dropEffect !== "none";
484
+ if (!isValid) api.eventFire("onRowDragCancel", ref);
485
+ else api.eventFire("onRowDragEnd", ref);
486
+ for (const api2 of apis) {
487
+ const sx2 = api2.getState();
488
+ sx2.internal.rowDragOverIndex.set(-1);
489
+ sx2.internal.rowDragStartIndex.set(-1);
490
+ }
491
+ });
492
+ },
493
+ placeholder: () => {
494
+ const sx = api.getState();
495
+ const rows = sx.rowDragMultiRow.peek() ? [row, ...api.rowSelectionGetSelected().filter((r) => r !== row)] : [row];
496
+ return /* @__PURE__ */ jsx(DragPlaceholder, { rows });
497
+ }
498
+ });
499
+ return draggable;
500
+ }
501
+ const DragPlaceholder = (p) => {
502
+ const label = p.rows.length === 1 ? `Moving row ${p.rows[0].rowIndex}` : `Moving ${p.rows.length} rows`;
503
+ return /* @__PURE__ */ jsx("div", { className: "lng1771-drag-placeholder", children: label });
504
+ };
505
+ function DragButton({ api, row }) {
506
+ const draggable = useDragControl(api, row);
507
+ return (
508
+ // We need to stop propagation on capture to prevent other drag events like
509
+ // range cell selection from occurring.
510
+ /* @__PURE__ */ jsx(GridButton, { ...draggable, onPointerDownCapture: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx(DragDots, { width: 10, height: 10 }) })
511
+ );
512
+ }
513
+ const DragDots = (p) => {
514
+ return /* @__PURE__ */ jsxs("svg", { width: "8", height: "12", viewBox: "0 0 8 12", fill: "currentcolor", ...p, children: [
515
+ /* @__PURE__ */ jsx("circle", { cx: "1.75", cy: "1.7146", r: "1.25" }),
516
+ /* @__PURE__ */ jsx("circle", { cx: "1.75", cy: "6.2146", r: "1.25" }),
517
+ /* @__PURE__ */ jsx("circle", { cx: "1.75", cy: "10.7146", r: "1.25" }),
518
+ /* @__PURE__ */ jsx("circle", { cx: "6.25", cy: "1.7146", r: "1.25" }),
519
+ /* @__PURE__ */ jsx("circle", { cx: "6.25", cy: "6.2146", r: "1.25" }),
520
+ /* @__PURE__ */ jsx("circle", { cx: "6.25", cy: "10.7146", r: "1.25" })
521
+ ] });
522
+ };
523
+ function SelectionCheckbox({ api, row }) {
524
+ const sx = api.getState();
525
+ const isSelect = sx.rowSelectionPredicate.use();
526
+ const isSelectable = useMemo(() => {
527
+ return isSelect === "all" ? true : isSelect === "leaf-only" ? api.rowIsLeaf(row) : isSelect === "group-only" ? api.rowIsGroup(row) : isSelect({ api, row });
528
+ }, [api, isSelect, row]);
529
+ const displayMode = sx.rowSelectionCheckbox.use();
530
+ const selectedIds = sx.rowSelectionSelectedIds.use();
531
+ if (displayMode === "hide" || !isSelectable && displayMode === "hide-for-disabled") return null;
532
+ const isChecked = selectedIds.has(row.id);
533
+ const isIndeterminate = api.rowSelectionIsIndeterminate(row.id);
534
+ return /* @__PURE__ */ jsx(
535
+ Checkbox,
536
+ {
537
+ tabIndex: -1,
538
+ isChecked: isChecked || isIndeterminate,
539
+ isDeterminate: isIndeterminate,
540
+ onClick: (event) => {
541
+ handleRowSelection(api, row, event.shiftKey, true, true);
542
+ }
543
+ }
544
+ );
545
+ }
546
+ function CellMarkerRenderer({ row, api }) {
547
+ const doesRowHaveDetail = api.rowDetailRowPredicate(row.id);
548
+ const isExpanded = api.rowDetailIsExpanded(row.id);
549
+ const isRowDraggable = api.rowIsDraggable(row.id);
550
+ const toggleDetail = useEvent(() => api.rowDetailToggle(row.id));
551
+ const rowSelectionEnabled = api.getState().rowSelectionMode.use() !== "none";
552
+ return /* @__PURE__ */ jsxs("div", { className: "lng1771-cell__marker", children: [
553
+ rowSelectionEnabled && /* @__PURE__ */ jsx(SelectionCheckbox, { api, row }),
554
+ isRowDraggable && /* @__PURE__ */ jsx(DragButton, { api, row }),
555
+ doesRowHaveDetail && (isExpanded ? /* @__PURE__ */ jsx(CollapseButton, { onClick: toggleDetail }) : /* @__PURE__ */ jsx(ExpandButton, { onClick: toggleDetail }))
556
+ ] });
557
+ }
558
+ function CellGroupRendererDefault({ api, row, column }) {
559
+ if (!api.rowIsGroup(row)) {
560
+ return /* @__PURE__ */ jsx("div", {});
561
+ }
562
+ const key = row.pathKey;
563
+ const displayMode = api.getState().rowGroupDisplayMode.peek();
564
+ if (displayMode === "custom") return null;
565
+ const isMulti = displayMode === "multi-column";
566
+ const rowDepth = api.rowDepth(row.rowIndex);
567
+ const depth = isMulti ? 0 : rowDepth;
568
+ const columnDepth = Number.parseInt(column.id.split(":").pop());
569
+ if (isMulti && columnDepth !== rowDepth) {
570
+ return /* @__PURE__ */ jsx("div", {});
571
+ }
572
+ return /* @__PURE__ */ jsxs(
573
+ "div",
574
+ {
575
+ style: {
576
+ paddingInlineStart: depth * 24 + 4,
577
+ whiteSpace: "nowrap",
578
+ display: "grid",
579
+ alignItems: "center",
580
+ gridTemplateColumns: "24px 1fr",
581
+ height: "100%"
582
+ },
583
+ children: [
584
+ /* @__PURE__ */ jsx(
585
+ GridButton,
586
+ {
587
+ onClick: () => api.rowGroupToggle(row),
588
+ style: {
589
+ width: 20,
590
+ height: 20,
591
+ transform: api.rowGroupIsExpanded(row) ? "rotate(90deg)" : void 0
592
+ },
593
+ children: "›"
594
+ }
595
+ ),
596
+ /* @__PURE__ */ jsx(
597
+ "div",
598
+ {
599
+ style: {
600
+ width: "100%",
601
+ overflow: "hidden",
602
+ textOverflow: "ellipsis"
603
+ },
604
+ children: key
605
+ }
606
+ )
607
+ ]
608
+ }
609
+ );
610
+ }
611
+ function useCellRenderer(api, column) {
612
+ const renderers = api.getState().cellRenderers.peek();
613
+ const Renderer = useMemo(() => {
614
+ if (column.id === COLUMN_MARKER_ID) return CellMarkerRenderer;
615
+ const base = api.getState().columnBase.peek();
616
+ const renderKey = column.cellRenderer ?? base.cellRenderer;
617
+ if (!renderKey)
618
+ return api.columnIsGroupAutoColumn(column) ? CellGroupRendererDefault : CellRendererDefault;
619
+ if (typeof renderKey === "string") {
620
+ const El = renderers[renderKey];
621
+ if (!El) throw new Error(`Renderer with name ${renderKey} is not present in grid renderers.`);
622
+ return El;
623
+ }
624
+ return renderKey;
625
+ }, [api, column, renderers]);
626
+ return Renderer;
627
+ }
628
+ function useCellEvents(api, column, row, rowIndex, columnIndex) {
629
+ const onPointerEnter = useEvent(() => {
630
+ api.getState().internal.hoveredRow.set(rowIndex);
631
+ api.getState().internal.hoveredCol.set(columnIndex);
632
+ });
633
+ const onPointerLeave = useEvent(() => {
634
+ api.getState().internal.hoveredRow.set(null);
635
+ api.getState().internal.hoveredCol.set(null);
636
+ });
637
+ const onClick = useEvent((event) => {
638
+ handleRowSelection(
639
+ api,
640
+ row,
641
+ event.shiftKey,
642
+ event.metaKey || event.ctrlKey,
643
+ false,
644
+ "single-click"
645
+ );
646
+ });
647
+ const onDoubleClick = useEvent((event) => {
648
+ handleRowSelection(
649
+ api,
650
+ row,
651
+ event.shiftKey,
652
+ event.metaKey || event.ctrlKey,
653
+ false,
654
+ "double-click"
655
+ );
656
+ });
657
+ return { onClick, onDoubleClick, onPointerEnter, onPointerLeave };
658
+ }
659
+ function useCellPositionChange(api, rowIndex, columnIndex, rowSpan, columnSpan) {
660
+ const ref = useRef(null);
661
+ const skipRef = useRef(false);
662
+ const onFocus = useEvent(() => {
663
+ if (skipRef.current) {
664
+ skipRef.current = false;
665
+ return;
666
+ }
667
+ api.getState().internal.navigatePosition.set({
668
+ kind: GRID_CELL_POSITION,
669
+ columnIndex,
670
+ rowIndex,
671
+ root: { columnIndex, columnSpan, rowIndex, rowSpan }
672
+ });
673
+ });
674
+ const tryFocus = useEvent((element, skip = true) => {
675
+ const sx = api.getState();
676
+ const position = sx.internal.navigatePosition.peek();
677
+ if (!element || !position || position.kind !== GRID_CELL_POSITION) return;
678
+ const posRow = position.root?.rowIndex ?? position.rowIndex;
679
+ const posCol = position.root?.columnIndex ?? position.columnIndex;
680
+ if (rowIndex === posRow && posCol === columnIndex && !element.contains(document.activeElement) && element !== document.activeElement) {
681
+ api.navigateScrollIntoView(posRow, posCol);
682
+ skipRef.current = skip;
683
+ element.focus();
684
+ }
685
+ });
686
+ const handleRef = useCallback(
687
+ (el) => {
688
+ tryFocus(el);
689
+ ref.current = el;
690
+ },
691
+ [tryFocus]
692
+ );
693
+ useEffect(() => {
694
+ const sx = api.getState();
695
+ const unsub = sx.internal.navigatePosition.watch(() => {
696
+ tryFocus(ref.current);
697
+ }, false);
698
+ const unsubFocus = sx.internal.cellFocusQueue.watch(() => {
699
+ const focus = sx.internal.cellFocusQueue.peek();
700
+ if (!focus) return;
701
+ if (rowIndex === focus.rowIndex && columnIndex === focus.columnIndex) {
702
+ ref.current?.focus();
703
+ }
704
+ }, false);
705
+ return () => {
706
+ unsub();
707
+ unsubFocus();
708
+ };
709
+ }, [api, columnIndex, ref, rowIndex, tryFocus]);
710
+ return { handleRef, onFocus };
711
+ }
712
+ function CellImpl({
713
+ rowIndex,
714
+ columnIndex,
715
+ rowSpan,
716
+ colSpan,
717
+ yPositions,
718
+ xPositions,
719
+ column,
720
+ rowNode,
721
+ rowPin,
722
+ api,
723
+ paginateOffset
724
+ }) {
725
+ const Renderer = useCellRenderer(api, column);
726
+ const cx = useCellStyle(
727
+ api,
728
+ xPositions,
729
+ yPositions,
730
+ columnIndex,
731
+ rowIndex,
732
+ colSpan,
733
+ rowSpan,
734
+ column,
735
+ rowPin,
736
+ rowNode.id,
737
+ paginateOffset
738
+ );
739
+ const events = useCellEvents(api, column, rowNode, rowIndex, columnIndex);
740
+ const isGroup = api.rowIsGroup(rowNode);
741
+ const isExpanded = isGroup && api.rowGroupIsExpanded(rowNode);
742
+ const { handleRef, onFocus } = useCellPositionChange(
743
+ api,
744
+ rowIndex,
745
+ columnIndex,
746
+ rowSpan,
747
+ colSpan
748
+ );
749
+ return /* @__PURE__ */ jsx(
750
+ "div",
751
+ {
752
+ style: cx.style,
753
+ ref: handleRef,
754
+ role: "gridcell",
755
+ "aria-expanded": isGroup ? isExpanded : void 0,
756
+ "aria-rowspan": rowSpan,
757
+ "aria-colspan": colSpan,
758
+ "aria-rowindex": rowIndex + 1,
759
+ "aria-colindex": columnIndex + 1,
760
+ "data-lng1771-colid": column.id,
761
+ "data-lng1771-rowid": rowNode.id,
762
+ "data-lng1771-rowindex": rowIndex,
763
+ "data-lng1771-colindex": rowIndex,
764
+ className: clsx(
765
+ "lng1771-cell",
766
+ rowIndex % 2 === 1 && "lng1771-cell--alternate",
767
+ cx.className
768
+ ),
769
+ tabIndex: -1,
770
+ ...events,
771
+ onFocus,
772
+ children: /* @__PURE__ */ jsx(Renderer, { api, column, columnIndex, row: rowNode })
773
+ }
774
+ );
775
+ }
776
+ const Cell = memo(CellImpl);
777
+ function InputImpl({
778
+ className,
779
+ error,
780
+ small,
781
+ ghost,
782
+ disabled,
783
+ icon: Icon,
784
+ ...props
785
+ }) {
786
+ return /* @__PURE__ */ jsxs(
787
+ "div",
788
+ {
789
+ className: clsx(
790
+ "lng1771-input",
791
+ error && "lng1771-input--error",
792
+ small && "lng1771-input--small",
793
+ disabled && "lng1771-input--disabled",
794
+ ghost && "lng1771-input--ghost",
795
+ className
796
+ ),
797
+ children: [
798
+ Icon && /* @__PURE__ */ jsx(Icon, { width: small ? 16 : 20, height: small ? 16 : 20 }),
799
+ /* @__PURE__ */ jsx("input", { ...props, disabled, className: clsx("lng1771-input__inner") })
800
+ ]
801
+ }
802
+ );
803
+ }
804
+ const Input = refCompat(InputImpl, "Input");
805
+ const createStoreImpl = (createState) => {
806
+ let state;
807
+ const listeners = /* @__PURE__ */ new Set();
808
+ const setState = (partial, replace) => {
809
+ const nextState = typeof partial === "function" ? partial(state) : partial;
810
+ if (!Object.is(nextState, state)) {
811
+ const previousState = state;
812
+ state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState);
813
+ listeners.forEach((listener) => listener(state, previousState));
814
+ }
815
+ };
816
+ const getState = () => state;
817
+ const getInitialState = () => initialState;
818
+ const subscribe = (listener) => {
819
+ listeners.add(listener);
820
+ return () => listeners.delete(listener);
821
+ };
822
+ const api = { setState, getState, getInitialState, subscribe };
823
+ const initialState = state = createState(setState, getState, api);
824
+ return api;
825
+ };
826
+ const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
827
+ const identity = (arg) => arg;
828
+ function useStore(api, selector = identity) {
829
+ const slice = React__default.useSyncExternalStore(
830
+ api.subscribe,
831
+ () => selector(api.getState()),
832
+ () => selector(api.getInitialState())
833
+ );
834
+ React__default.useDebugValue(slice);
835
+ return slice;
836
+ }
837
+ const createImpl = (createState) => {
838
+ const api = createStore(createState);
839
+ const useBoundStore = (selector) => useStore(api, selector);
840
+ Object.assign(useBoundStore, api);
841
+ return useBoundStore;
842
+ };
843
+ const create = (createState) => createImpl;
844
+ const store = create()(() => {
845
+ return {
846
+ active: null,
847
+ mounted: []
848
+ };
849
+ });
850
+ const DragContext = createContext(store);
851
+ function DragProvider({ children }) {
852
+ const localStore = useRef(null);
853
+ if (!localStore.current) {
854
+ localStore.current = create()(() => {
855
+ return {
856
+ active: null,
857
+ mounted: []
858
+ };
859
+ });
860
+ }
861
+ return /* @__PURE__ */ jsx(DragContext.Provider, { value: localStore.current, children });
862
+ }
863
+ const useDragStore = () => useContext(DragContext);
864
+ const useDrag = useStore;
865
+ function useGrid() {
866
+ return useContext(context);
867
+ }
868
+ function GridProvider(p) {
869
+ return /* @__PURE__ */ jsx(context.Provider, { value: p.value, children: p.children });
870
+ }
871
+ export {
872
+ COLUMN_SCAN_DISTANCE as A,
873
+ ROW_HEIGHT as B,
874
+ Checkbox as C,
875
+ DragProvider as D,
876
+ END_ENCODING as E,
877
+ FLOATING_CELL_POSITION as F,
878
+ GridProvider as G,
879
+ HEADER_CELL_POSITION as H,
880
+ Input as I,
881
+ ROW_DETAIL_HEIGHT as J,
882
+ ROW_UPDATE_STACK_SIZE as K,
883
+ DEFAULT_MAX_WIDTH as L,
884
+ DEFAULT_MIN_WIDTH as M,
885
+ DEFAULT_WIDTH as N,
886
+ DEFAULT_SORT_CYCLE as O,
887
+ PAGINATE_PAGE_SIZE as P,
888
+ FULL_WIDTH_POSITION as Q,
889
+ ROW_LEAF_KIND as R,
890
+ useDragStore as a,
891
+ useDrag as b,
892
+ useStore as c,
893
+ CheckMark as d,
894
+ COLUMN_MARKER_ID as e,
895
+ COLUMN_EMPTY_PREFIX as f,
896
+ getTransform as g,
897
+ HEADER_GROUP_CELL_POSITION as h,
898
+ CollapseButton as i,
899
+ FULL_ENCODING as j,
900
+ CellFullWidth as k,
901
+ Cell as l,
902
+ GRID_CELL_POSITION as m,
903
+ GridButton as n,
904
+ ROW_GROUP_KIND as o,
905
+ ROW_TOTAL_KIND as p,
906
+ COLUMN_GROUP_ID_DELIMITER as q,
907
+ ROW_DEFAULT_PATH_SEPARATOR as r,
908
+ ROW_TOTAL_ID as s,
909
+ GROUP_COLUMN_PREFIX as t,
910
+ useGrid as u,
911
+ GROUP_COLUMN_MULTI_PREFIX as v,
912
+ GROUP_COLUMN_SINGLE_ID as w,
913
+ GROUP_COLUMN_TREE_DATA as x,
914
+ COLUMN_GROUP_HEADER_HEIGHT as y,
915
+ COLUMN_HEADER_HEIGHT as z
916
+ };