@lax-wp/design-system 0.13.33-beta.2 → 0.13.33-beta.3

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 (178) hide show
  1. package/dist/components/button/Button.cjs.js +5 -5
  2. package/dist/components/button/Button.cjs.js.map +1 -1
  3. package/dist/components/button/Button.es.js +18 -18
  4. package/dist/components/button/Button.es.js.map +1 -1
  5. package/dist/components/button/IconButton.cjs.js +1 -1
  6. package/dist/components/button/IconButton.cjs.js.map +1 -1
  7. package/dist/components/button/IconButton.es.js +8 -8
  8. package/dist/components/button/IconButton.es.js.map +1 -1
  9. package/dist/components/buttons/option-button/OptionButton.cjs.js +1 -1
  10. package/dist/components/buttons/option-button/OptionButton.cjs.js.map +1 -1
  11. package/dist/components/buttons/option-button/OptionButton.es.js +1 -1
  12. package/dist/components/buttons/option-button/OptionButton.es.js.map +1 -1
  13. package/dist/components/data-display/comparison/components/Header.cjs.js +1 -1
  14. package/dist/components/data-display/comparison/components/Header.cjs.js.map +1 -1
  15. package/dist/components/data-display/comparison/components/Header.es.js +13 -13
  16. package/dist/components/data-display/comparison/components/Header.es.js.map +1 -1
  17. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.cjs.js +1 -1
  18. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.cjs.js.map +1 -1
  19. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.es.js +56 -57
  20. package/dist/components/data-display/infinite-table/PendingEditsFloatingBar.es.js.map +1 -1
  21. package/dist/components/data-display/infinite-table/body/cell/ActionCell.cjs.js +1 -1
  22. package/dist/components/data-display/infinite-table/body/cell/ActionCell.cjs.js.map +1 -1
  23. package/dist/components/data-display/infinite-table/body/cell/ActionCell.es.js +11 -11
  24. package/dist/components/data-display/infinite-table/body/cell/ActionCell.es.js.map +1 -1
  25. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js +1 -1
  26. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js.map +1 -1
  27. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js +43 -44
  28. package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js.map +1 -1
  29. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
  30. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
  31. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +124 -125
  32. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
  33. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js +1 -1
  34. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js.map +1 -1
  35. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js +11 -12
  36. package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js.map +1 -1
  37. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.cjs.js +1 -1
  38. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.cjs.js.map +1 -1
  39. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.es.js +9 -9
  40. package/dist/components/data-display/infinite-table/body/cell/PendingEditCell.es.js.map +1 -1
  41. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.cjs.js +1 -1
  42. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.cjs.js.map +1 -1
  43. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.es.js +24 -24
  44. package/dist/components/data-display/infinite-table/body/cell/RowOptionsCell.es.js.map +1 -1
  45. package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.cjs.js +1 -1
  46. package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.cjs.js.map +1 -1
  47. package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.es.js +1 -1
  48. package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.es.js.map +1 -1
  49. package/dist/components/data-display/infinite-table/body/rows/row.cjs.js +1 -1
  50. package/dist/components/data-display/infinite-table/body/rows/row.cjs.js.map +1 -1
  51. package/dist/components/data-display/infinite-table/body/rows/row.es.js +2 -2
  52. package/dist/components/data-display/infinite-table/body/rows/row.es.js.map +1 -1
  53. package/dist/components/data-display/infinite-table/head/CheckAll.cjs.js +1 -1
  54. package/dist/components/data-display/infinite-table/head/CheckAll.cjs.js.map +1 -1
  55. package/dist/components/data-display/infinite-table/head/CheckAll.es.js +1 -1
  56. package/dist/components/data-display/infinite-table/head/CheckAll.es.js.map +1 -1
  57. package/dist/components/data-display/infinite-table/head/cell/index.cjs.js +1 -1
  58. package/dist/components/data-display/infinite-table/head/cell/index.cjs.js.map +1 -1
  59. package/dist/components/data-display/infinite-table/head/cell/index.es.js +36 -37
  60. package/dist/components/data-display/infinite-table/head/cell/index.es.js.map +1 -1
  61. package/dist/components/data-display/infinite-table/head/index.cjs.js +1 -1
  62. package/dist/components/data-display/infinite-table/head/index.cjs.js.map +1 -1
  63. package/dist/components/data-display/infinite-table/head/index.es.js +20 -20
  64. package/dist/components/data-display/infinite-table/head/index.es.js.map +1 -1
  65. package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
  66. package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
  67. package/dist/components/data-display/infinite-table/index.es.js +396 -397
  68. package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
  69. package/dist/components/data-display/tag/Tag.cjs.js +1 -1
  70. package/dist/components/data-display/tag/Tag.cjs.js.map +1 -1
  71. package/dist/components/data-display/tag/Tag.es.js +11 -9
  72. package/dist/components/data-display/tag/Tag.es.js.map +1 -1
  73. package/dist/components/floating-bar/FloatingBar.cjs.js +1 -1
  74. package/dist/components/floating-bar/FloatingBar.cjs.js.map +1 -1
  75. package/dist/components/floating-bar/FloatingBar.es.js +9 -9
  76. package/dist/components/floating-bar/FloatingBar.es.js.map +1 -1
  77. package/dist/components/forms/base-input-field/BaseInputField.cjs.js +2 -2
  78. package/dist/components/forms/base-input-field/BaseInputField.cjs.js.map +1 -1
  79. package/dist/components/forms/base-input-field/BaseInputField.es.js +30 -32
  80. package/dist/components/forms/base-input-field/BaseInputField.es.js.map +1 -1
  81. package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
  82. package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
  83. package/dist/components/forms/creatable-select/CreatableSelect.es.js +11 -12
  84. package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
  85. package/dist/components/forms/currency-input/CurrencyInputField.cjs.js +1 -1
  86. package/dist/components/forms/currency-input/CurrencyInputField.cjs.js.map +1 -1
  87. package/dist/components/forms/currency-input/CurrencyInputField.es.js +62 -70
  88. package/dist/components/forms/currency-input/CurrencyInputField.es.js.map +1 -1
  89. package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
  90. package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
  91. package/dist/components/forms/date-time-field/DateTimeField.es.js +32 -32
  92. package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
  93. package/dist/components/forms/debounce-input/DebounceInputField.cjs.js +1 -1
  94. package/dist/components/forms/debounce-input/DebounceInputField.cjs.js.map +1 -1
  95. package/dist/components/forms/debounce-input/DebounceInputField.es.js +2 -2
  96. package/dist/components/forms/debounce-input/DebounceInputField.es.js.map +1 -1
  97. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
  98. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
  99. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +16 -18
  100. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
  101. package/dist/components/forms/field-options/Item.cjs.js +1 -1
  102. package/dist/components/forms/field-options/Item.cjs.js.map +1 -1
  103. package/dist/components/forms/field-options/Item.es.js +5 -5
  104. package/dist/components/forms/field-options/Item.es.js.map +1 -1
  105. package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
  106. package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
  107. package/dist/components/forms/icon-picker/IconPicker.es.js +42 -57
  108. package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
  109. package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
  110. package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
  111. package/dist/components/forms/master-data-input/MasterDataInputField.es.js +33 -35
  112. package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
  113. package/dist/components/forms/md-input/RichMarkdownInput.cjs.js +3 -3
  114. package/dist/components/forms/md-input/RichMarkdownInput.cjs.js.map +1 -1
  115. package/dist/components/forms/md-input/RichMarkdownInput.es.js +63 -63
  116. package/dist/components/forms/md-input/RichMarkdownInput.es.js.map +1 -1
  117. package/dist/components/forms/number-input-field/NumberInputField.cjs.js +1 -1
  118. package/dist/components/forms/number-input-field/NumberInputField.cjs.js.map +1 -1
  119. package/dist/components/forms/number-input-field/NumberInputField.es.js +5 -5
  120. package/dist/components/forms/number-input-field/NumberInputField.es.js.map +1 -1
  121. package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +1 -1
  122. package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
  123. package/dist/components/forms/percentage-input/PercentageInputField.es.js +2 -2
  124. package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
  125. package/dist/components/forms/search-bar/SearchBar.cjs.js +1 -1
  126. package/dist/components/forms/search-bar/SearchBar.cjs.js.map +1 -1
  127. package/dist/components/forms/search-bar/SearchBar.es.js +16 -16
  128. package/dist/components/forms/search-bar/SearchBar.es.js.map +1 -1
  129. package/dist/components/forms/select-field/SelectField.cjs.js +2 -2
  130. package/dist/components/forms/select-field/SelectField.cjs.js.map +1 -1
  131. package/dist/components/forms/select-field/SelectField.d.ts +4 -0
  132. package/dist/components/forms/select-field/SelectField.es.js +202 -203
  133. package/dist/components/forms/select-field/SelectField.es.js.map +1 -1
  134. package/dist/components/forms/toggle/Toggle.cjs.js +1 -1
  135. package/dist/components/forms/toggle/Toggle.cjs.js.map +1 -1
  136. package/dist/components/forms/toggle/Toggle.es.js +15 -15
  137. package/dist/components/forms/toggle/Toggle.es.js.map +1 -1
  138. package/dist/components/navigation/accordion/Accordion.cjs.js +1 -1
  139. package/dist/components/navigation/accordion/Accordion.cjs.js.map +1 -1
  140. package/dist/components/navigation/accordion/Accordion.es.js +5 -5
  141. package/dist/components/navigation/accordion/Accordion.es.js.map +1 -1
  142. package/dist/components/navigation/stepper/Stepper.cjs.js +1 -1
  143. package/dist/components/navigation/stepper/Stepper.cjs.js.map +1 -1
  144. package/dist/components/navigation/stepper/Stepper.es.js +1 -1
  145. package/dist/components/navigation/stepper/Stepper.es.js.map +1 -1
  146. package/dist/components/navigation/tabs/TabOptions.cjs.js +1 -1
  147. package/dist/components/navigation/tabs/TabOptions.cjs.js.map +1 -1
  148. package/dist/components/navigation/tabs/TabOptions.es.js +15 -15
  149. package/dist/components/navigation/tabs/TabOptions.es.js.map +1 -1
  150. package/dist/components/navigation/tabs/TabSwitch.cjs.js +1 -1
  151. package/dist/components/navigation/tabs/TabSwitch.cjs.js.map +1 -1
  152. package/dist/components/navigation/tabs/TabSwitch.es.js +7 -7
  153. package/dist/components/navigation/tabs/TabSwitch.es.js.map +1 -1
  154. package/dist/components/navigation/tabs/Tabs.cjs.js +1 -1
  155. package/dist/components/navigation/tabs/Tabs.cjs.js.map +1 -1
  156. package/dist/components/navigation/tabs/Tabs.es.js +1 -1
  157. package/dist/components/navigation/tabs/Tabs.es.js.map +1 -1
  158. package/dist/components/tooltip/Tooltip.cjs.js +1 -1
  159. package/dist/components/tooltip/Tooltip.cjs.js.map +1 -1
  160. package/dist/components/tooltip/Tooltip.es.js +19 -19
  161. package/dist/components/tooltip/Tooltip.es.js.map +1 -1
  162. package/dist/components/user-avatar/UserAvatar.cjs.js +1 -1
  163. package/dist/components/user-avatar/UserAvatar.cjs.js.map +1 -1
  164. package/dist/components/user-avatar/UserAvatar.d.ts +1 -1
  165. package/dist/components/user-avatar/UserAvatar.es.js +40 -38
  166. package/dist/components/user-avatar/UserAvatar.es.js.map +1 -1
  167. package/dist/components/user-avatar/constants.cjs.js +1 -1
  168. package/dist/components/user-avatar/constants.cjs.js.map +1 -1
  169. package/dist/components/user-avatar/constants.d.ts +1 -0
  170. package/dist/components/user-avatar/constants.es.js +10 -9
  171. package/dist/components/user-avatar/constants.es.js.map +1 -1
  172. package/dist/design-system.css +1 -1
  173. package/package.json +2 -3
  174. package/dist/components/data-display/infinite-table/constants.cjs.js +0 -2
  175. package/dist/components/data-display/infinite-table/constants.cjs.js.map +0 -1
  176. package/dist/components/data-display/infinite-table/constants.d.ts +0 -41
  177. package/dist/components/data-display/infinite-table/constants.es.js +0 -27
  178. package/dist/components/data-display/infinite-table/constants.es.js.map +0 -1
@@ -1,58 +1,57 @@
1
1
  import { jsxs as n, jsx as t } from "react/jsx-runtime";
2
2
  import { formatDate as ne } from "../../../utils/formatters.es.js";
3
3
  import { KeyboardArrowDownRounded as oe, SearchRounded as le, CloseRounded as ie, RemoveOutlined as se, DragIndicator as ce } from "@mui/icons-material";
4
- import { motion as o, AnimatePresence as D } from "framer-motion";
5
- import { useState as x, useRef as p, useMemo as S, useEffect as C, useCallback as I } from "react";
6
- import { createPortal as P } from "react-dom";
7
- import { FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM as de, FLOATING_BAR_TOOLTIP_MARGIN_LEFT as ue } from "./constants.es.js";
8
- const me = {
4
+ import { motion as o, AnimatePresence as F } from "framer-motion";
5
+ import { useState as x, useRef as p, useMemo as T, useEffect as C, useCallback as M } from "react";
6
+ import { createPortal as q } from "react-dom";
7
+ const de = {
9
8
  hidden: { opacity: 0, y: -8, scale: 0.95 },
10
9
  visible: { opacity: 1, y: 0, scale: 1, transition: { type: "spring", stiffness: 400, damping: 25 } },
11
10
  exit: { opacity: 0, y: -8, scale: 0.95, transition: { duration: 0.1 } }
12
11
  }, E = {
13
12
  hidden: { opacity: 0 },
14
13
  visible: { opacity: 1, transition: { staggerChildren: 0.03, delayChildren: 0.05 } }
15
- }, M = {
14
+ }, I = {
16
15
  hidden: { opacity: 0, y: -8 },
17
16
  visible: { opacity: 1, y: 0, transition: { type: "spring", stiffness: 400, damping: 25 } }
18
- }, ve = ({
17
+ }, fe = ({
19
18
  pendingEditsCount: w,
20
19
  pendingEditsList: h,
21
20
  rowsWithPendingEdits: d,
22
21
  fieldOperationLoading: u,
23
- onClearAll: U,
24
- onSaveAll: q,
25
- onScrollToCell: J
22
+ onClearAll: G,
23
+ onSaveAll: J,
24
+ onScrollToCell: Q
26
25
  }) => {
27
- const [Q, T] = x(!1), [m, B] = x(!1), [l, $] = x(null), [i, A] = x(null), [L, _] = x(!1), [s, g] = x(""), [b, z] = x(!1), [v, Z] = x(null), y = p(null), c = p(null), k = p(null), H = p(null), F = p(null), V = p(null), W = S(() => l ? h.filter((e) => e.rowId === l) : h, [h, l]), X = S(() => {
26
+ const [Z, z] = x(!1), [m, $] = x(!1), [l, B] = x(null), [i, H] = x(null), [V, X] = x(!1), [s, g] = x(""), [b, D] = x(!1), [v, O] = x(null), y = p(null), c = p(null), k = p(null), Y = p(null), S = p(null), A = p(null), W = T(() => l ? h.filter((e) => e.rowId === l) : h, [h, l]), L = T(() => {
28
27
  if (!s) return d;
29
28
  const e = s.toLowerCase();
30
29
  return d.filter((a) => `row ${a.rowIndex + 1}`.toLowerCase().includes(e));
31
- }, [d, s]), ee = S(() => {
30
+ }, [d, s]), ee = T(() => {
32
31
  if (!l) return `All Rows (${h.length})`;
33
32
  const e = d.find((a) => a.rowId === l);
34
33
  return e ? `Row ${e.rowIndex + 1} (${e.editCount})` : `All Rows (${h.length})`;
35
34
  }, [l, d, h.length]);
36
35
  C(() => {
37
- l && !d.find((e) => e.rowId === l) && $(null);
36
+ l && !d.find((e) => e.rowId === l) && B(null);
38
37
  }, [d, l]), C(() => {
39
38
  const e = (a) => {
40
39
  const r = a.target;
41
- !H.current?.contains(r) && !V.current?.contains(r) && (z(!1), g(""));
40
+ !Y.current?.contains(r) && !A.current?.contains(r) && (D(!1), g(""));
42
41
  };
43
42
  return b && document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
44
43
  }, [b]);
45
- const Y = I(() => {
46
- y.current && (clearTimeout(y.current), y.current = null), T(!0);
47
- }, []), j = I(() => {
48
- y.current = setTimeout(() => T(!1), 300);
49
- }, []), N = I((e, a, r, R) => {
44
+ const j = M(() => {
45
+ y.current && (clearTimeout(y.current), y.current = null), z(!0);
46
+ }, []), K = M(() => {
47
+ y.current = setTimeout(() => z(!1), 300);
48
+ }, []), N = M((e, a, r, R) => {
50
49
  const f = Math.max(0, window.innerWidth - r), ae = Math.max(0, window.innerHeight - R);
51
50
  return {
52
51
  x: Math.min(Math.max(e, 0), f),
53
52
  y: Math.min(Math.max(a, 0), ae)
54
53
  };
55
- }, []), G = I((e) => {
54
+ }, []), _ = M((e) => {
56
55
  e.preventDefault();
57
56
  const a = e.currentTarget.closest(".pending-edits-floating-bar");
58
57
  if (!a) return;
@@ -64,30 +63,30 @@ const me = {
64
63
  barY: i?.y ?? r.top,
65
64
  barWidth: r.width,
66
65
  barHeight: r.height
67
- }, _(!0);
66
+ }, X(!0);
68
67
  }, [i]);
69
68
  C(() => {
70
- if (!L) return;
69
+ if (!V) return;
71
70
  const e = (r) => {
72
71
  if (!c.current) return;
73
72
  const R = c.current.barX + r.clientX - c.current.x, f = c.current.barY + r.clientY - c.current.y;
74
- A(N(R, f, c.current.barWidth, c.current.barHeight));
73
+ H(N(R, f, c.current.barWidth, c.current.barHeight));
75
74
  }, a = () => {
76
- _(!1), c.current = null;
75
+ X(!1), c.current = null;
77
76
  };
78
77
  return document.addEventListener("mousemove", e), document.addEventListener("mouseup", a), () => {
79
78
  document.removeEventListener("mousemove", e), document.removeEventListener("mouseup", a);
80
79
  };
81
- }, [L, N]), C(() => {
80
+ }, [V, N]), C(() => {
82
81
  if (!i || !k.current) return;
83
82
  const e = () => {
84
83
  if (!k.current) return;
85
84
  const a = k.current.getBoundingClientRect(), r = N(i.x, i.y, a.width, a.height);
86
- (r.x !== i.x || r.y !== i.y) && A(r);
85
+ (r.x !== i.x || r.y !== i.y) && H(r);
87
86
  };
88
87
  return e(), window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
89
88
  }, [i, N]);
90
- const O = (e, a) => {
89
+ const P = (e, a) => {
91
90
  if (typeof e == "boolean") return e ? "Yes" : "No";
92
91
  if (e == null || e === "") return "-";
93
92
  const r = String(e);
@@ -97,9 +96,9 @@ const me = {
97
96
  }
98
97
  return a ? `${r} ${a}` : r;
99
98
  }, te = (e) => {
100
- T(!1), J(e.rowId, e.columnKey, e.rowIndex);
101
- }, K = (e) => {
102
- $(e), z(!1), g("");
99
+ z(!1), Q(e.rowId, e.columnKey, e.rowIndex);
100
+ }, U = (e) => {
101
+ B(e), D(!1), g("");
103
102
  };
104
103
  if (w === 0) return null;
105
104
  const re = /* @__PURE__ */ n(
@@ -115,26 +114,26 @@ const me = {
115
114
  animate: { opacity: 1, scale: 1 },
116
115
  transition: { type: "spring", stiffness: 300, damping: 25 },
117
116
  children: [
118
- /* @__PURE__ */ t(D, { children: Q && !m && /* @__PURE__ */ t(
117
+ /* @__PURE__ */ t(F, { children: Z && !m && /* @__PURE__ */ t(
119
118
  o.div,
120
119
  {
121
120
  className: "absolute w-80",
122
- style: { bottom: "100%", left: "50%", marginLeft: ue, marginBottom: de },
121
+ style: { bottom: "100%", left: "50%", marginLeft: "-160px", marginBottom: "4px" },
123
122
  initial: { opacity: 0, y: 10, scale: 0.95 },
124
123
  animate: { opacity: 1, y: 0, scale: 1 },
125
124
  exit: { opacity: 0, y: 10, scale: 0.95 },
126
125
  transition: { type: "spring", stiffness: 300, damping: 24 },
127
- onMouseEnter: Y,
128
- onMouseLeave: j,
126
+ onMouseEnter: j,
127
+ onMouseLeave: K,
129
128
  children: /* @__PURE__ */ n("div", { className: "bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 overflow-hidden", children: [
130
129
  /* @__PURE__ */ t("div", { className: "px-3 py-1.5 text-xs font-semibold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider border-b border-neutral-100 dark:border-black-600", children: "Pending Changes" }),
131
- d.length > 1 && /* @__PURE__ */ t("div", { className: "px-3 py-2 border-b border-neutral-100 dark:border-black-600", ref: H, children: /* @__PURE__ */ n("div", { className: "relative", children: [
130
+ d.length > 1 && /* @__PURE__ */ t("div", { className: "px-3 py-2 border-b border-neutral-100 dark:border-black-600", ref: Y, children: /* @__PURE__ */ n("div", { className: "relative", children: [
132
131
  /* @__PURE__ */ n(
133
132
  "button",
134
133
  {
135
- ref: F,
134
+ ref: S,
136
135
  onClick: () => {
137
- F.current && Z(F.current.getBoundingClientRect()), z(!b);
136
+ S.current && O(S.current.getBoundingClientRect()), D(!b);
138
137
  },
139
138
  className: "w-full text-xs px-2 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-neutral-50 dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 flex items-center justify-between gap-2",
140
139
  children: [
@@ -143,14 +142,14 @@ const me = {
143
142
  ]
144
143
  }
145
144
  ),
146
- b && v && P(
147
- /* @__PURE__ */ t(D, { children: /* @__PURE__ */ n(
145
+ b && v && q(
146
+ /* @__PURE__ */ t(F, { children: /* @__PURE__ */ n(
148
147
  o.div,
149
148
  {
150
- ref: V,
149
+ ref: A,
151
150
  className: "fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 overflow-hidden",
152
151
  style: { zIndex: 2147483647, top: v.bottom + 4, left: v.left, width: v.width },
153
- variants: me,
152
+ variants: de,
154
153
  initial: "hidden",
155
154
  animate: "visible",
156
155
  exit: "exit",
@@ -161,12 +160,12 @@ const me = {
161
160
  s && /* @__PURE__ */ t("button", { onClick: () => g(""), className: "absolute right-2 z-10 text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-300", children: /* @__PURE__ */ t(ie, { sx: { fontSize: 14 } }) })
162
161
  ] }) }),
163
162
  /* @__PURE__ */ n(o.div, { className: "max-h-40 overflow-y-auto", variants: E, initial: "hidden", animate: "visible", children: [
164
- (!s || "all rows".includes(s.toLowerCase())) && /* @__PURE__ */ n(o.button, { variants: M, onClick: () => K(null), className: `w-full text-left px-3 py-2 text-xs transition-colors ${l ? "text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600" : "bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300"}`, children: [
163
+ (!s || "all rows".includes(s.toLowerCase())) && /* @__PURE__ */ n(o.button, { variants: I, onClick: () => U(null), className: `w-full text-left px-3 py-2 text-xs transition-colors ${l ? "text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600" : "bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300"}`, children: [
165
164
  "All Rows (",
166
165
  h.length,
167
166
  " changes)"
168
167
  ] }),
169
- X.map((e) => /* @__PURE__ */ n(o.button, { variants: M, onClick: () => K(e.rowId), className: `w-full text-left px-3 py-2 text-xs transition-colors ${l === e.rowId ? "bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300" : "text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600"}`, children: [
168
+ L.map((e) => /* @__PURE__ */ n(o.button, { variants: I, onClick: () => U(e.rowId), className: `w-full text-left px-3 py-2 text-xs transition-colors ${l === e.rowId ? "bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300" : "text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600"}`, children: [
170
169
  "Row ",
171
170
  e.rowIndex + 1,
172
171
  " (",
@@ -175,7 +174,7 @@ const me = {
175
174
  e.editCount === 1 ? "change" : "changes",
176
175
  ")"
177
176
  ] }, e.rowId)),
178
- X.length === 0 && s && !"all rows".includes(s.toLowerCase()) && /* @__PURE__ */ t(o.div, { variants: M, className: "px-3 py-2 text-xs text-neutral-500 dark:text-neutral-400", children: "No rows found" })
177
+ L.length === 0 && s && !"all rows".includes(s.toLowerCase()) && /* @__PURE__ */ t(o.div, { variants: I, className: "px-3 py-2 text-xs text-neutral-500 dark:text-neutral-400", children: "No rows found" })
179
178
  ] })
180
179
  ]
181
180
  }
@@ -183,7 +182,7 @@ const me = {
183
182
  document.body
184
183
  )
185
184
  ] }) }),
186
- /* @__PURE__ */ t(o.div, { className: "max-h-52 overflow-y-auto", variants: E, initial: "hidden", animate: "visible", children: W?.map((e, a) => /* @__PURE__ */ n(o.button, { variants: M, onClick: () => te(e), className: "w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors", whileHover: { backgroundColor: "rgba(0,0,0,0.03)" }, whileTap: { scale: 0.98 }, children: [
185
+ /* @__PURE__ */ t(o.div, { className: "max-h-52 overflow-y-auto", variants: E, initial: "hidden", animate: "visible", children: W?.map((e, a) => /* @__PURE__ */ n(o.button, { variants: I, onClick: () => te(e), className: "w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors", whileHover: { backgroundColor: "rgba(0,0,0,0.03)" }, whileTap: { scale: 0.98 }, children: [
187
186
  /* @__PURE__ */ n("div", { className: "text-xs font-bold text-neutral-700 dark:text-neutral-300 mb-1", children: [
188
187
  e.fieldName,
189
188
  " ",
@@ -194,9 +193,9 @@ const me = {
194
193
  ] })
195
194
  ] }),
196
195
  /* @__PURE__ */ n("div", { className: "flex items-center gap-1.5 text-sm", children: [
197
- /* @__PURE__ */ t("span", { className: "text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[100px]", children: O(e.originalValue, e.originalMeta?.currency_code) }),
196
+ /* @__PURE__ */ t("span", { className: "text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[100px]", children: P(e.originalValue, e.originalMeta?.currency_code) }),
198
197
  /* @__PURE__ */ t("span", { className: "text-neutral-400 dark:text-neutral-500 flex-shrink-0", children: "→" }),
199
- /* @__PURE__ */ t("span", { className: "text-primary-600 dark:text-primary-400 font-medium truncate max-w-[100px]", children: O(e.value, e.meta?.currency_code) })
198
+ /* @__PURE__ */ t("span", { className: "text-primary-600 dark:text-primary-400 font-medium truncate max-w-[100px]", children: P(e.value, e.meta?.currency_code) })
200
199
  ] })
201
200
  ] }, `${e.rowId}-${e.columnKey}-${a}`)) })
202
201
  ] })
@@ -209,14 +208,14 @@ const me = {
209
208
  animate: { padding: m ? "8px" : "12px 16px", gap: m ? "0px" : "12px", borderRadius: m ? "9999px" : "8px" },
210
209
  transition: { type: "spring", stiffness: 300, damping: 25 },
211
210
  children: [
212
- /* @__PURE__ */ t(D, { mode: "wait", children: m ? /* @__PURE__ */ t(
211
+ /* @__PURE__ */ t(F, { mode: "wait", children: m ? /* @__PURE__ */ t(
213
212
  o.div,
214
213
  {
215
214
  initial: { opacity: 0, scale: 0.8 },
216
215
  animate: { opacity: 1, scale: 1 },
217
216
  exit: { opacity: 0, scale: 0.8 },
218
- onMouseDown: G,
219
- onClick: () => B(!1),
217
+ onMouseDown: _,
218
+ onClick: () => $(!1),
220
219
  className: "flex items-center justify-center cursor-grab active:cursor-grabbing flex-shrink-0",
221
220
  style: { width: "32px", height: "32px", borderRadius: "9999px", backgroundColor: "var(--color-primary-600)", color: "white" },
222
221
  title: "Drag to move / Click to expand",
@@ -231,7 +230,7 @@ const me = {
231
230
  initial: { opacity: 0, scale: 0.8 },
232
231
  animate: { opacity: 1, scale: 1 },
233
232
  exit: { opacity: 0, scale: 0.8 },
234
- onClick: () => B(!0),
233
+ onClick: () => $(!0),
235
234
  className: "flex items-center justify-center flex-shrink-0",
236
235
  style: { width: "24px", height: "24px", borderRadius: "4px", backgroundColor: "transparent", color: "var(--color-neutral-400)" },
237
236
  title: "Minimize",
@@ -249,8 +248,8 @@ const me = {
249
248
  transition: { type: "spring", stiffness: 300, damping: 25 },
250
249
  style: { overflow: "hidden", pointerEvents: m ? "none" : "auto" },
251
250
  children: [
252
- /* @__PURE__ */ t("div", { onMouseDown: G, className: "cursor-grab active:cursor-grabbing text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 flex items-center", title: "Drag to move", children: /* @__PURE__ */ t(ce, { sx: { fontSize: 18 } }) }),
253
- /* @__PURE__ */ t("div", { className: "relative", onMouseEnter: Y, onMouseLeave: j, children: /* @__PURE__ */ n("span", { className: "text-sm font-medium text-neutral-700 dark:text-neutral-200 cursor-pointer hover:text-primary-600 dark:hover:text-primary-400 whitespace-nowrap", children: [
251
+ /* @__PURE__ */ t("div", { onMouseDown: _, className: "cursor-grab active:cursor-grabbing text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 flex items-center", title: "Drag to move", children: /* @__PURE__ */ t(ce, { sx: { fontSize: 18 } }) }),
252
+ /* @__PURE__ */ t("div", { className: "relative", onMouseEnter: j, onMouseLeave: K, children: /* @__PURE__ */ n("span", { className: "text-sm font-medium text-neutral-700 dark:text-neutral-200 cursor-pointer hover:text-primary-600 dark:hover:text-primary-400 whitespace-nowrap", children: [
254
253
  w,
255
254
  " unsaved ",
256
255
  w === 1 ? "change" : "changes"
@@ -259,7 +258,7 @@ const me = {
259
258
  /* @__PURE__ */ t(
260
259
  o.button,
261
260
  {
262
- onClick: U,
261
+ onClick: G,
263
262
  disabled: !!u,
264
263
  className: `px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${u ? "text-neutral-400 dark:text-neutral-500 cursor-not-allowed" : "text-neutral-600 dark:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-black-600"}`,
265
264
  whileHover: u ? void 0 : { scale: 1.02 },
@@ -270,7 +269,7 @@ const me = {
270
269
  /* @__PURE__ */ t(
271
270
  o.button,
272
271
  {
273
- onClick: q,
272
+ onClick: J,
274
273
  disabled: !!u,
275
274
  className: `px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${u ? "text-white bg-primary-400 cursor-not-allowed" : "text-white bg-primary-600 hover:bg-primary-700"}`,
276
275
  whileHover: u ? void 0 : { scale: 1.02 },
@@ -287,9 +286,9 @@ const me = {
287
286
  ]
288
287
  }
289
288
  );
290
- return P(re, document.body);
289
+ return q(re, document.body);
291
290
  };
292
291
  export {
293
- ve as PendingEditsFloatingBar
292
+ fe as PendingEditsFloatingBar
294
293
  };
295
294
  //# sourceMappingURL=PendingEditsFloatingBar.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PendingEditsFloatingBar.es.js","sources":["../../../../src/components/data-display/infinite-table/PendingEditsFloatingBar.tsx"],"sourcesContent":["import { formatDate } from '../../../utils/formatters';\nimport { CloseRounded, DragIndicator, KeyboardArrowDownRounded, RemoveOutlined, SearchRounded } from '@mui/icons-material';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM, FLOATING_BAR_TOOLTIP_MARGIN_LEFT } from './constants';\n\ninterface PendingEdit {\n rowId: string;\n columnKey: string;\n fieldName: string;\n value: unknown;\n originalValue: unknown;\n meta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n originalMeta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n rowIndex: number;\n}\n\ninterface RowWithPendingEdits {\n rowId: string;\n rowIndex: number;\n editCount: number;\n}\n\ninterface PendingEditsFloatingBarProps {\n pendingEditsCount: number;\n pendingEditsList: PendingEdit[];\n rowsWithPendingEdits: RowWithPendingEdits[];\n fieldOperationLoading: string | null;\n onClearAll: () => void;\n onSaveAll: () => void;\n onScrollToCell: (rowId: string, columnKey: string, rowIndex: number) => void;\n}\n\nconst rowFilterDropdownVariants = {\n hidden: { opacity: 0, y: -8, scale: 0.95 },\n visible: { opacity: 1, y: 0, scale: 1, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n exit: { opacity: 0, y: -8, scale: 0.95, transition: { duration: 0.1 } },\n};\n\nconst listContainerVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { staggerChildren: 0.03, delayChildren: 0.05 } },\n};\n\nconst listItemVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: { opacity: 1, y: 0, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n};\n\nexport const PendingEditsFloatingBar: React.FC<PendingEditsFloatingBarProps> = ({\n pendingEditsCount, pendingEditsList, rowsWithPendingEdits, fieldOperationLoading, onClearAll, onSaveAll, onScrollToCell,\n}) => {\n const [showDropdown, setShowDropdown] = useState(false);\n const [isMinimized, setIsMinimized] = useState(false);\n const [rowFilter, setRowFilter] = useState<string | null>(null);\n const [position, setPosition] = useState<{ x: number; y: number } | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [rowFilterSearch, setRowFilterSearch] = useState('');\n const [showRowFilterDropdown, setShowRowFilterDropdown] = useState(false);\n const [rowFilterButtonRect, setRowFilterButtonRect] = useState<DOMRect | null>(null);\n\n const dropdownTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const dragStartRef = useRef<{ x: number; y: number; barX: number; barY: number; barWidth: number; barHeight: number } | null>(null);\n const floatingBarRef = useRef<HTMLDivElement>(null);\n const rowFilterRef = useRef<HTMLDivElement>(null);\n const rowFilterButtonRef = useRef<HTMLButtonElement>(null);\n const rowFilterDropdownRef = useRef<HTMLDivElement>(null);\n\n const filteredPendingEditsList = useMemo(() => {\n if (!rowFilter) return pendingEditsList;\n return pendingEditsList.filter((edit) => edit.rowId === rowFilter);\n }, [pendingEditsList, rowFilter]);\n\n const filteredRowOptions = useMemo(() => {\n if (!rowFilterSearch) return rowsWithPendingEdits;\n const searchLower = rowFilterSearch.toLowerCase();\n return rowsWithPendingEdits.filter((row) => `row ${row.rowIndex + 1}`.toLowerCase().includes(searchLower));\n }, [rowsWithPendingEdits, rowFilterSearch]);\n\n const selectedRowLabel = useMemo(() => {\n if (!rowFilter) return `All Rows (${pendingEditsList.length})`;\n const row = rowsWithPendingEdits.find((r) => r.rowId === rowFilter);\n if (!row) return `All Rows (${pendingEditsList.length})`;\n return `Row ${row.rowIndex + 1} (${row.editCount})`;\n }, [rowFilter, rowsWithPendingEdits, pendingEditsList.length]);\n\n useEffect(() => {\n if (rowFilter && !rowsWithPendingEdits.find((row) => row.rowId === rowFilter)) setRowFilter(null);\n }, [rowsWithPendingEdits, rowFilter]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (!rowFilterRef.current?.contains(target) && !rowFilterDropdownRef.current?.contains(target)) {\n setShowRowFilterDropdown(false);\n setRowFilterSearch('');\n }\n };\n if (showRowFilterDropdown) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showRowFilterDropdown]);\n\n const handleMouseEnter = useCallback(() => {\n if (dropdownTimeoutRef.current) { clearTimeout(dropdownTimeoutRef.current); dropdownTimeoutRef.current = null; }\n setShowDropdown(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n dropdownTimeoutRef.current = setTimeout(() => setShowDropdown(false), 300);\n }, []);\n\n const clampPositionToViewport = useCallback((nextX: number, nextY: number, barWidth: number, barHeight: number) => {\n const maxX = Math.max(0, window.innerWidth - barWidth);\n const maxY = Math.max(0, window.innerHeight - barHeight);\n\n return {\n x: Math.min(Math.max(nextX, 0), maxX),\n y: Math.min(Math.max(nextY, 0), maxY),\n };\n }, []);\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n const barElement = e.currentTarget.closest('.pending-edits-floating-bar') as HTMLElement;\n if (!barElement) return;\n const rect = barElement.getBoundingClientRect();\n dragStartRef.current = {\n x: e.clientX,\n y: e.clientY,\n barX: position?.x ?? rect.left,\n barY: position?.y ?? rect.top,\n barWidth: rect.width,\n barHeight: rect.height,\n };\n setIsDragging(true);\n }, [position]);\n\n useEffect(() => {\n if (!isDragging) return;\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragStartRef.current) return;\n const nextX = dragStartRef.current.barX + e.clientX - dragStartRef.current.x;\n const nextY = dragStartRef.current.barY + e.clientY - dragStartRef.current.y;\n setPosition(clampPositionToViewport(nextX, nextY, dragStartRef.current.barWidth, dragStartRef.current.barHeight));\n };\n const handleMouseUp = () => { setIsDragging(false); dragStartRef.current = null; };\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => { document.removeEventListener('mousemove', handleMouseMove); document.removeEventListener('mouseup', handleMouseUp); };\n }, [isDragging, clampPositionToViewport]);\n\n useEffect(() => {\n if (!position || !floatingBarRef.current) return;\n\n const keepBarInViewport = () => {\n if (!floatingBarRef.current) return;\n const rect = floatingBarRef.current.getBoundingClientRect();\n const clampedPosition = clampPositionToViewport(position.x, position.y, rect.width, rect.height);\n if (clampedPosition.x !== position.x || clampedPosition.y !== position.y) {\n setPosition(clampedPosition);\n }\n };\n\n keepBarInViewport();\n window.addEventListener('resize', keepBarInViewport);\n return () => window.removeEventListener('resize', keepBarInViewport);\n }, [position, clampPositionToViewport]);\n\n const formatValue = (val: unknown, currencyCode?: string | null): string => {\n if (typeof val === 'boolean') return val ? 'Yes' : 'No';\n if (val === null || val === undefined || val === '') return '-';\n const strVal = String(val);\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?)?/;\n if (dateRegex.test(strVal)) {\n const hasTime = strVal.includes('T');\n return formatDate(strVal, { withTime: hasTime, skipTimezone: true }) || strVal;\n }\n if (currencyCode) return `${strVal} ${currencyCode}`;\n return strVal;\n };\n\n const handleCellClick = (edit: PendingEdit) => { setShowDropdown(false); onScrollToCell(edit.rowId, edit.columnKey, edit.rowIndex); };\n const handleRowFilterSelect = (rowId: string | null) => { setRowFilter(rowId); setShowRowFilterDropdown(false); setRowFilterSearch(''); };\n\n if (pendingEditsCount === 0) return null;\n\n const floatingBar = (\n <motion.div\n ref={floatingBarRef}\n className='pending-edits-floating-bar fixed z-[9999]'\n style={{\n zIndex: 2147483646,\n ...(position ? { left: position.x, top: position.y } : { bottom: 24, left: '50%', transform: 'translateX(-50%)' }),\n }}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence>\n {showDropdown && !isMinimized && (\n <motion.div\n className='absolute w-80'\n style={{ bottom: '100%', left: '50%', marginLeft: FLOATING_BAR_TOOLTIP_MARGIN_LEFT, marginBottom: FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM }}\n initial={{ opacity: 0, y: 10, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 10, scale: 0.95 }}\n transition={{ type: 'spring', stiffness: 300, damping: 24 }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className='bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 overflow-hidden'>\n <div className='px-3 py-1.5 text-xs font-semibold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider border-b border-neutral-100 dark:border-black-600'>Pending Changes</div>\n {rowsWithPendingEdits.length > 1 && (\n <div className='px-3 py-2 border-b border-neutral-100 dark:border-black-600' ref={rowFilterRef}>\n <div className='relative'>\n <button\n ref={rowFilterButtonRef}\n onClick={() => { if (rowFilterButtonRef.current) setRowFilterButtonRect(rowFilterButtonRef.current.getBoundingClientRect()); setShowRowFilterDropdown(!showRowFilterDropdown); }}\n className='w-full text-xs px-2 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-neutral-50 dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 flex items-center justify-between gap-2'\n >\n <span className='truncate'>{selectedRowLabel}</span>\n <motion.div animate={{ rotate: showRowFilterDropdown ? 180 : 0 }} transition={{ duration: 0.2 }}>\n <KeyboardArrowDownRounded sx={{ fontSize: 16 }} className='text-neutral-400' />\n </motion.div>\n </button>\n {showRowFilterDropdown && rowFilterButtonRect && createPortal(\n <AnimatePresence>\n <motion.div\n ref={rowFilterDropdownRef}\n className='fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 overflow-hidden'\n style={{ zIndex: 2147483647, top: rowFilterButtonRect.bottom + 4, left: rowFilterButtonRect.left, width: rowFilterButtonRect.width }}\n variants={rowFilterDropdownVariants}\n initial='hidden' animate='visible' exit='exit'\n >\n <div className='p-2 border-b border-neutral-100 dark:border-black-600'>\n <div className='relative flex items-center'>\n <SearchRounded sx={{ fontSize: 14 }} className='absolute left-2 text-neutral-400 dark:text-neutral-500 z-10 pointer-events-none' />\n <input type='text' value={rowFilterSearch} onChange={(e) => setRowFilterSearch(e.target.value)} placeholder='Search rows...' className='w-full text-xs pl-7 pr-7 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-white dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 placeholder:text-neutral-400' autoFocus />\n {rowFilterSearch && <button onClick={() => setRowFilterSearch('')} className='absolute right-2 z-10 text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-300'><CloseRounded sx={{ fontSize: 14 }} /></button>}\n </div>\n </div>\n <motion.div className='max-h-40 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {(!rowFilterSearch || 'all rows'.includes(rowFilterSearch.toLowerCase())) && (\n <motion.button variants={listItemVariants} onClick={() => handleRowFilterSelect(null)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${!rowFilter ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n All Rows ({pendingEditsList.length} changes)\n </motion.button>\n )}\n {filteredRowOptions.map((row) => (\n <motion.button key={row.rowId} variants={listItemVariants} onClick={() => handleRowFilterSelect(row.rowId)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${rowFilter === row.rowId ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n Row {row.rowIndex + 1} ({row.editCount} {row.editCount === 1 ? 'change' : 'changes'})\n </motion.button>\n ))}\n {filteredRowOptions.length === 0 && rowFilterSearch && !'all rows'.includes(rowFilterSearch.toLowerCase()) && (\n <motion.div variants={listItemVariants} className='px-3 py-2 text-xs text-neutral-500 dark:text-neutral-400'>No rows found</motion.div>\n )}\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n document.body,\n )}\n </div>\n </div>\n )}\n <motion.div className='max-h-52 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {filteredPendingEditsList?.map((edit, idx) => (\n <motion.button key={`${edit.rowId}-${edit.columnKey}-${idx}`} variants={listItemVariants} onClick={() => handleCellClick(edit)} className='w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors' whileHover={{ backgroundColor: 'rgba(0,0,0,0.03)' }} whileTap={{ scale: 0.98 }}>\n <div className='text-xs font-bold text-neutral-700 dark:text-neutral-300 mb-1'>\n {edit.fieldName} {!rowFilter && <span className='font-normal text-neutral-500 dark:text-neutral-400'>(Row {edit.rowIndex + 1})</span>}\n </div>\n <div className='flex items-center gap-1.5 text-sm'>\n <span className='text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[100px]'>{formatValue(edit.originalValue, edit.originalMeta?.currency_code)}</span>\n <span className='text-neutral-400 dark:text-neutral-500 flex-shrink-0'>→</span>\n <span className='text-primary-600 dark:text-primary-400 font-medium truncate max-w-[100px]'>{formatValue(edit.value, edit.meta?.currency_code)}</span>\n </div>\n </motion.button>\n ))}\n </motion.div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <motion.div\n className='flex items-center bg-white dark:bg-black-700 shadow-lg border border-neutral-200 dark:border-black-600 overflow-hidden'\n animate={{ padding: isMinimized ? '8px' : '12px 16px', gap: isMinimized ? '0px' : '12px', borderRadius: isMinimized ? '9999px' : '8px' }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence mode='wait'>\n {isMinimized ? (\n <motion.div key='minimized' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onMouseDown={handleMouseDown} onClick={() => setIsMinimized(false)}\n className='flex items-center justify-center cursor-grab active:cursor-grabbing flex-shrink-0'\n style={{ width: '32px', height: '32px', borderRadius: '9999px', backgroundColor: 'var(--color-primary-600)', color: 'white' }}\n title='Drag to move / Click to expand' whileHover={{ backgroundColor: 'var(--color-primary-700)', scale: 1.05 }} whileTap={{ scale: 0.95 }}\n >\n <span className='text-xs font-bold'>{pendingEditsCount}</span>\n </motion.div>\n ) : (\n <motion.button key='minimize-btn' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onClick={() => setIsMinimized(true)} className='flex items-center justify-center flex-shrink-0'\n style={{ width: '24px', height: '24px', borderRadius: '4px', backgroundColor: 'transparent', color: 'var(--color-neutral-400)' }}\n title='Minimize' whileHover={{ backgroundColor: 'var(--color-neutral-100)', color: 'var(--color-neutral-600)' }} whileTap={{ scale: 0.9 }}\n >\n <RemoveOutlined sx={{ fontSize: 16 }} />\n </motion.button>\n )}\n </AnimatePresence>\n\n <motion.div className='flex items-center gap-3' animate={{ width: isMinimized ? 0 : 'auto', opacity: isMinimized ? 0 : 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }} style={{ overflow: 'hidden', pointerEvents: isMinimized ? 'none' : 'auto' }}\n >\n <div onMouseDown={handleMouseDown} className='cursor-grab active:cursor-grabbing text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 flex items-center' title='Drag to move'>\n <DragIndicator sx={{ fontSize: 18 }} />\n </div>\n <div className='relative' onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <span className='text-sm font-medium text-neutral-700 dark:text-neutral-200 cursor-pointer hover:text-primary-600 dark:hover:text-primary-400 whitespace-nowrap'>\n {pendingEditsCount} unsaved {pendingEditsCount === 1 ? 'change' : 'changes'}\n </span>\n </div>\n <div className='h-4 w-px bg-neutral-200 dark:bg-black-600 flex-shrink-0' />\n <motion.button onClick={onClearAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-neutral-400 dark:text-neutral-500 cursor-not-allowed' : 'text-neutral-600 dark:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-black-600'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Cancel\n </motion.button>\n <motion.button onClick={onSaveAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-white bg-primary-400 cursor-not-allowed' : 'text-white bg-primary-600 hover:bg-primary-700'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Save All\n </motion.button>\n </motion.div>\n </motion.div>\n </motion.div>\n );\n\n return createPortal(floatingBar, document.body);\n};\n"],"names":["rowFilterDropdownVariants","listContainerVariants","listItemVariants","PendingEditsFloatingBar","pendingEditsCount","pendingEditsList","rowsWithPendingEdits","fieldOperationLoading","onClearAll","onSaveAll","onScrollToCell","showDropdown","setShowDropdown","useState","isMinimized","setIsMinimized","rowFilter","setRowFilter","position","setPosition","isDragging","setIsDragging","rowFilterSearch","setRowFilterSearch","showRowFilterDropdown","setShowRowFilterDropdown","rowFilterButtonRect","setRowFilterButtonRect","dropdownTimeoutRef","useRef","dragStartRef","floatingBarRef","rowFilterRef","rowFilterButtonRef","rowFilterDropdownRef","filteredPendingEditsList","useMemo","edit","filteredRowOptions","searchLower","row","selectedRowLabel","r","useEffect","handleClickOutside","e","target","handleMouseEnter","useCallback","handleMouseLeave","clampPositionToViewport","nextX","nextY","barWidth","barHeight","maxX","maxY","handleMouseDown","barElement","rect","handleMouseMove","handleMouseUp","keepBarInViewport","clampedPosition","formatValue","val","currencyCode","strVal","hasTime","formatDate","handleCellClick","handleRowFilterSelect","rowId","floatingBar","jsxs","motion","jsx","AnimatePresence","FLOATING_BAR_TOOLTIP_MARGIN_LEFT","FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM","KeyboardArrowDownRounded","createPortal","SearchRounded","CloseRounded","idx","RemoveOutlined","DragIndicator"],"mappings":"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"}
1
+ {"version":3,"file":"PendingEditsFloatingBar.es.js","sources":["../../../../src/components/data-display/infinite-table/PendingEditsFloatingBar.tsx"],"sourcesContent":["import { formatDate } from '../../../utils/formatters';\nimport { CloseRounded, DragIndicator, KeyboardArrowDownRounded, RemoveOutlined, SearchRounded } from '@mui/icons-material';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface PendingEdit {\n rowId: string;\n columnKey: string;\n fieldName: string;\n value: unknown;\n originalValue: unknown;\n meta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n originalMeta?: { currency_code?: string | null; [key: string]: unknown | null } | null;\n rowIndex: number;\n}\n\ninterface RowWithPendingEdits {\n rowId: string;\n rowIndex: number;\n editCount: number;\n}\n\ninterface PendingEditsFloatingBarProps {\n pendingEditsCount: number;\n pendingEditsList: PendingEdit[];\n rowsWithPendingEdits: RowWithPendingEdits[];\n fieldOperationLoading: string | null;\n onClearAll: () => void;\n onSaveAll: () => void;\n onScrollToCell: (rowId: string, columnKey: string, rowIndex: number) => void;\n}\n\nconst rowFilterDropdownVariants = {\n hidden: { opacity: 0, y: -8, scale: 0.95 },\n visible: { opacity: 1, y: 0, scale: 1, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n exit: { opacity: 0, y: -8, scale: 0.95, transition: { duration: 0.1 } },\n};\n\nconst listContainerVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { staggerChildren: 0.03, delayChildren: 0.05 } },\n};\n\nconst listItemVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: { opacity: 1, y: 0, transition: { type: 'spring' as const, stiffness: 400, damping: 25 } },\n};\n\nexport const PendingEditsFloatingBar: React.FC<PendingEditsFloatingBarProps> = ({\n pendingEditsCount, pendingEditsList, rowsWithPendingEdits, fieldOperationLoading, onClearAll, onSaveAll, onScrollToCell,\n}) => {\n const [showDropdown, setShowDropdown] = useState(false);\n const [isMinimized, setIsMinimized] = useState(false);\n const [rowFilter, setRowFilter] = useState<string | null>(null);\n const [position, setPosition] = useState<{ x: number; y: number } | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [rowFilterSearch, setRowFilterSearch] = useState('');\n const [showRowFilterDropdown, setShowRowFilterDropdown] = useState(false);\n const [rowFilterButtonRect, setRowFilterButtonRect] = useState<DOMRect | null>(null);\n\n const dropdownTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const dragStartRef = useRef<{ x: number; y: number; barX: number; barY: number; barWidth: number; barHeight: number } | null>(null);\n const floatingBarRef = useRef<HTMLDivElement>(null);\n const rowFilterRef = useRef<HTMLDivElement>(null);\n const rowFilterButtonRef = useRef<HTMLButtonElement>(null);\n const rowFilterDropdownRef = useRef<HTMLDivElement>(null);\n\n const filteredPendingEditsList = useMemo(() => {\n if (!rowFilter) return pendingEditsList;\n return pendingEditsList.filter((edit) => edit.rowId === rowFilter);\n }, [pendingEditsList, rowFilter]);\n\n const filteredRowOptions = useMemo(() => {\n if (!rowFilterSearch) return rowsWithPendingEdits;\n const searchLower = rowFilterSearch.toLowerCase();\n return rowsWithPendingEdits.filter((row) => `row ${row.rowIndex + 1}`.toLowerCase().includes(searchLower));\n }, [rowsWithPendingEdits, rowFilterSearch]);\n\n const selectedRowLabel = useMemo(() => {\n if (!rowFilter) return `All Rows (${pendingEditsList.length})`;\n const row = rowsWithPendingEdits.find((r) => r.rowId === rowFilter);\n if (!row) return `All Rows (${pendingEditsList.length})`;\n return `Row ${row.rowIndex + 1} (${row.editCount})`;\n }, [rowFilter, rowsWithPendingEdits, pendingEditsList.length]);\n\n useEffect(() => {\n if (rowFilter && !rowsWithPendingEdits.find((row) => row.rowId === rowFilter)) setRowFilter(null);\n }, [rowsWithPendingEdits, rowFilter]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (!rowFilterRef.current?.contains(target) && !rowFilterDropdownRef.current?.contains(target)) {\n setShowRowFilterDropdown(false);\n setRowFilterSearch('');\n }\n };\n if (showRowFilterDropdown) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showRowFilterDropdown]);\n\n const handleMouseEnter = useCallback(() => {\n if (dropdownTimeoutRef.current) { clearTimeout(dropdownTimeoutRef.current); dropdownTimeoutRef.current = null; }\n setShowDropdown(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n dropdownTimeoutRef.current = setTimeout(() => setShowDropdown(false), 300);\n }, []);\n\n const clampPositionToViewport = useCallback((nextX: number, nextY: number, barWidth: number, barHeight: number) => {\n const maxX = Math.max(0, window.innerWidth - barWidth);\n const maxY = Math.max(0, window.innerHeight - barHeight);\n\n return {\n x: Math.min(Math.max(nextX, 0), maxX),\n y: Math.min(Math.max(nextY, 0), maxY),\n };\n }, []);\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n const barElement = e.currentTarget.closest('.pending-edits-floating-bar') as HTMLElement;\n if (!barElement) return;\n const rect = barElement.getBoundingClientRect();\n dragStartRef.current = {\n x: e.clientX,\n y: e.clientY,\n barX: position?.x ?? rect.left,\n barY: position?.y ?? rect.top,\n barWidth: rect.width,\n barHeight: rect.height,\n };\n setIsDragging(true);\n }, [position]);\n\n useEffect(() => {\n if (!isDragging) return;\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragStartRef.current) return;\n const nextX = dragStartRef.current.barX + e.clientX - dragStartRef.current.x;\n const nextY = dragStartRef.current.barY + e.clientY - dragStartRef.current.y;\n setPosition(clampPositionToViewport(nextX, nextY, dragStartRef.current.barWidth, dragStartRef.current.barHeight));\n };\n const handleMouseUp = () => { setIsDragging(false); dragStartRef.current = null; };\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => { document.removeEventListener('mousemove', handleMouseMove); document.removeEventListener('mouseup', handleMouseUp); };\n }, [isDragging, clampPositionToViewport]);\n\n useEffect(() => {\n if (!position || !floatingBarRef.current) return;\n\n const keepBarInViewport = () => {\n if (!floatingBarRef.current) return;\n const rect = floatingBarRef.current.getBoundingClientRect();\n const clampedPosition = clampPositionToViewport(position.x, position.y, rect.width, rect.height);\n if (clampedPosition.x !== position.x || clampedPosition.y !== position.y) {\n setPosition(clampedPosition);\n }\n };\n\n keepBarInViewport();\n window.addEventListener('resize', keepBarInViewport);\n return () => window.removeEventListener('resize', keepBarInViewport);\n }, [position, clampPositionToViewport]);\n\n const formatValue = (val: unknown, currencyCode?: string | null): string => {\n if (typeof val === 'boolean') return val ? 'Yes' : 'No';\n if (val === null || val === undefined || val === '') return '-';\n const strVal = String(val);\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?)?/;\n if (dateRegex.test(strVal)) {\n const hasTime = strVal.includes('T');\n return formatDate(strVal, { withTime: hasTime, skipTimezone: true }) || strVal;\n }\n if (currencyCode) return `${strVal} ${currencyCode}`;\n return strVal;\n };\n\n const handleCellClick = (edit: PendingEdit) => { setShowDropdown(false); onScrollToCell(edit.rowId, edit.columnKey, edit.rowIndex); };\n const handleRowFilterSelect = (rowId: string | null) => { setRowFilter(rowId); setShowRowFilterDropdown(false); setRowFilterSearch(''); };\n\n if (pendingEditsCount === 0) return null;\n\n const floatingBar = (\n <motion.div\n ref={floatingBarRef}\n className='pending-edits-floating-bar fixed z-[9999]'\n style={{\n zIndex: 2147483646,\n ...(position ? { left: position.x, top: position.y } : { bottom: 24, left: '50%', transform: 'translateX(-50%)' }),\n }}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence>\n {showDropdown && !isMinimized && (\n <motion.div\n className='absolute w-80'\n style={{ bottom: '100%', left: '50%', marginLeft: '-160px', marginBottom: '4px' }}\n initial={{ opacity: 0, y: 10, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 10, scale: 0.95 }}\n transition={{ type: 'spring', stiffness: 300, damping: 24 }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <div className='bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 py-2 overflow-hidden'>\n <div className='px-3 py-1.5 text-xs font-semibold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider border-b border-neutral-100 dark:border-black-600'>Pending Changes</div>\n {rowsWithPendingEdits.length > 1 && (\n <div className='px-3 py-2 border-b border-neutral-100 dark:border-black-600' ref={rowFilterRef}>\n <div className='relative'>\n <button\n ref={rowFilterButtonRef}\n onClick={() => { if (rowFilterButtonRef.current) setRowFilterButtonRect(rowFilterButtonRef.current.getBoundingClientRect()); setShowRowFilterDropdown(!showRowFilterDropdown); }}\n className='w-full text-xs px-2 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-neutral-50 dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 flex items-center justify-between gap-2'\n >\n <span className='truncate'>{selectedRowLabel}</span>\n <motion.div animate={{ rotate: showRowFilterDropdown ? 180 : 0 }} transition={{ duration: 0.2 }}>\n <KeyboardArrowDownRounded sx={{ fontSize: 16 }} className='text-neutral-400' />\n </motion.div>\n </button>\n {showRowFilterDropdown && rowFilterButtonRect && createPortal(\n <AnimatePresence>\n <motion.div\n ref={rowFilterDropdownRef}\n className='fixed bg-white dark:bg-black-700 rounded-lg shadow-xl border border-neutral-200 dark:border-black-600 overflow-hidden'\n style={{ zIndex: 2147483647, top: rowFilterButtonRect.bottom + 4, left: rowFilterButtonRect.left, width: rowFilterButtonRect.width }}\n variants={rowFilterDropdownVariants}\n initial='hidden' animate='visible' exit='exit'\n >\n <div className='p-2 border-b border-neutral-100 dark:border-black-600'>\n <div className='relative flex items-center'>\n <SearchRounded sx={{ fontSize: 14 }} className='absolute left-2 text-neutral-400 dark:text-neutral-500 z-10 pointer-events-none' />\n <input type='text' value={rowFilterSearch} onChange={(e) => setRowFilterSearch(e.target.value)} placeholder='Search rows...' className='w-full text-xs pl-7 pr-7 py-1.5 rounded border border-neutral-200 dark:border-black-500 bg-white dark:bg-black-600 text-neutral-700 dark:text-neutral-200 focus:outline-none focus:ring-1 focus:ring-primary-500 placeholder:text-neutral-400' autoFocus />\n {rowFilterSearch && <button onClick={() => setRowFilterSearch('')} className='absolute right-2 z-10 text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-300'><CloseRounded sx={{ fontSize: 14 }} /></button>}\n </div>\n </div>\n <motion.div className='max-h-40 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {(!rowFilterSearch || 'all rows'.includes(rowFilterSearch.toLowerCase())) && (\n <motion.button variants={listItemVariants} onClick={() => handleRowFilterSelect(null)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${!rowFilter ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n All Rows ({pendingEditsList.length} changes)\n </motion.button>\n )}\n {filteredRowOptions.map((row) => (\n <motion.button key={row.rowId} variants={listItemVariants} onClick={() => handleRowFilterSelect(row.rowId)} className={`w-full text-left px-3 py-2 text-xs transition-colors ${rowFilter === row.rowId ? 'bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300' : 'text-neutral-700 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-black-600'}`}>\n Row {row.rowIndex + 1} ({row.editCount} {row.editCount === 1 ? 'change' : 'changes'})\n </motion.button>\n ))}\n {filteredRowOptions.length === 0 && rowFilterSearch && !'all rows'.includes(rowFilterSearch.toLowerCase()) && (\n <motion.div variants={listItemVariants} className='px-3 py-2 text-xs text-neutral-500 dark:text-neutral-400'>No rows found</motion.div>\n )}\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n document.body,\n )}\n </div>\n </div>\n )}\n <motion.div className='max-h-52 overflow-y-auto' variants={listContainerVariants} initial='hidden' animate='visible'>\n {filteredPendingEditsList?.map((edit, idx) => (\n <motion.button key={`${edit.rowId}-${edit.columnKey}-${idx}`} variants={listItemVariants} onClick={() => handleCellClick(edit)} className='w-full px-3 py-2 text-left hover:bg-neutral-50 dark:hover:bg-black-600 transition-colors' whileHover={{ backgroundColor: 'rgba(0,0,0,0.03)' }} whileTap={{ scale: 0.98 }}>\n <div className='text-xs font-bold text-neutral-700 dark:text-neutral-300 mb-1'>\n {edit.fieldName} {!rowFilter && <span className='font-normal text-neutral-500 dark:text-neutral-400'>(Row {edit.rowIndex + 1})</span>}\n </div>\n <div className='flex items-center gap-1.5 text-sm'>\n <span className='text-neutral-400 dark:text-neutral-500 line-through truncate max-w-[100px]'>{formatValue(edit.originalValue, edit.originalMeta?.currency_code)}</span>\n <span className='text-neutral-400 dark:text-neutral-500 flex-shrink-0'>→</span>\n <span className='text-primary-600 dark:text-primary-400 font-medium truncate max-w-[100px]'>{formatValue(edit.value, edit.meta?.currency_code)}</span>\n </div>\n </motion.button>\n ))}\n </motion.div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <motion.div\n className='flex items-center bg-white dark:bg-black-700 shadow-lg border border-neutral-200 dark:border-black-600 overflow-hidden'\n animate={{ padding: isMinimized ? '8px' : '12px 16px', gap: isMinimized ? '0px' : '12px', borderRadius: isMinimized ? '9999px' : '8px' }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }}\n >\n <AnimatePresence mode='wait'>\n {isMinimized ? (\n <motion.div key='minimized' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onMouseDown={handleMouseDown} onClick={() => setIsMinimized(false)}\n className='flex items-center justify-center cursor-grab active:cursor-grabbing flex-shrink-0'\n style={{ width: '32px', height: '32px', borderRadius: '9999px', backgroundColor: 'var(--color-primary-600)', color: 'white' }}\n title='Drag to move / Click to expand' whileHover={{ backgroundColor: 'var(--color-primary-700)', scale: 1.05 }} whileTap={{ scale: 0.95 }}\n >\n <span className='text-xs font-bold'>{pendingEditsCount}</span>\n </motion.div>\n ) : (\n <motion.button key='minimize-btn' initial={{ opacity: 0, scale: 0.8 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.8 }}\n onClick={() => setIsMinimized(true)} className='flex items-center justify-center flex-shrink-0'\n style={{ width: '24px', height: '24px', borderRadius: '4px', backgroundColor: 'transparent', color: 'var(--color-neutral-400)' }}\n title='Minimize' whileHover={{ backgroundColor: 'var(--color-neutral-100)', color: 'var(--color-neutral-600)' }} whileTap={{ scale: 0.9 }}\n >\n <RemoveOutlined sx={{ fontSize: 16 }} />\n </motion.button>\n )}\n </AnimatePresence>\n\n <motion.div className='flex items-center gap-3' animate={{ width: isMinimized ? 0 : 'auto', opacity: isMinimized ? 0 : 1 }}\n transition={{ type: 'spring', stiffness: 300, damping: 25 }} style={{ overflow: 'hidden', pointerEvents: isMinimized ? 'none' : 'auto' }}\n >\n <div onMouseDown={handleMouseDown} className='cursor-grab active:cursor-grabbing text-neutral-400 dark:text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300 flex items-center' title='Drag to move'>\n <DragIndicator sx={{ fontSize: 18 }} />\n </div>\n <div className='relative' onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <span className='text-sm font-medium text-neutral-700 dark:text-neutral-200 cursor-pointer hover:text-primary-600 dark:hover:text-primary-400 whitespace-nowrap'>\n {pendingEditsCount} unsaved {pendingEditsCount === 1 ? 'change' : 'changes'}\n </span>\n </div>\n <div className='h-4 w-px bg-neutral-200 dark:bg-black-600 flex-shrink-0' />\n <motion.button onClick={onClearAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-neutral-400 dark:text-neutral-500 cursor-not-allowed' : 'text-neutral-600 dark:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-black-600'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Cancel\n </motion.button>\n <motion.button onClick={onSaveAll} disabled={!!fieldOperationLoading}\n className={`px-3 py-1.5 text-sm font-medium rounded-md whitespace-nowrap flex-shrink-0 ${fieldOperationLoading ? 'text-white bg-primary-400 cursor-not-allowed' : 'text-white bg-primary-600 hover:bg-primary-700'}`}\n whileHover={!fieldOperationLoading ? { scale: 1.02 } : undefined} whileTap={!fieldOperationLoading ? { scale: 0.98 } : undefined}\n >\n Save All\n </motion.button>\n </motion.div>\n </motion.div>\n </motion.div>\n );\n\n return createPortal(floatingBar, document.body);\n};\n"],"names":["rowFilterDropdownVariants","listContainerVariants","listItemVariants","PendingEditsFloatingBar","pendingEditsCount","pendingEditsList","rowsWithPendingEdits","fieldOperationLoading","onClearAll","onSaveAll","onScrollToCell","showDropdown","setShowDropdown","useState","isMinimized","setIsMinimized","rowFilter","setRowFilter","position","setPosition","isDragging","setIsDragging","rowFilterSearch","setRowFilterSearch","showRowFilterDropdown","setShowRowFilterDropdown","rowFilterButtonRect","setRowFilterButtonRect","dropdownTimeoutRef","useRef","dragStartRef","floatingBarRef","rowFilterRef","rowFilterButtonRef","rowFilterDropdownRef","filteredPendingEditsList","useMemo","edit","filteredRowOptions","searchLower","row","selectedRowLabel","r","useEffect","handleClickOutside","e","target","handleMouseEnter","useCallback","handleMouseLeave","clampPositionToViewport","nextX","nextY","barWidth","barHeight","maxX","maxY","handleMouseDown","barElement","rect","handleMouseMove","handleMouseUp","keepBarInViewport","clampedPosition","formatValue","val","currencyCode","strVal","hasTime","formatDate","handleCellClick","handleRowFilterSelect","rowId","floatingBar","jsxs","motion","jsx","AnimatePresence","KeyboardArrowDownRounded","createPortal","SearchRounded","CloseRounded","idx","RemoveOutlined","DragIndicator"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),S=require("../../../../tooltip/Tooltip.cjs.js"),r=require("react"),C=require("../../../../../providers/design-system-provider/hooks.cjs.js"),y=({rowHovering:f,level:a,totalWidth:c,isCheckbox:s,id:i,onClick:l,cells:m,isRoot:b,name:u,uploadCell:j,row:d,disabled:t,disabledTooltip:x})=>{const p=C.useTableConfig(),o=d?.name?.props,g=r.useCallback(()=>o?.text&&o.text==="+ New Line Item"?"new-line-item":`id-${Math.random().toString(36).substring(2,15)}`,[o?.text]),w=r.useMemo(()=>g(),[g]),N=r.useCallback(n=>{t||l&&l(n)},[l,t]),h=r.useMemo(()=>m.filter(n=>n?.column?.visible!==!1)?.length-(s?1:0),[m,s]),k=r.useMemo(()=>a>0?a*16:0,[a]);if(j&&p?.renderUploadAttachmentRow)return e.jsx(e.Fragment,{children:p.renderUploadAttachmentRow({data:d,colSpan:h+2,totalWidth:c})});const v=t&&x?e.jsx(S,{title:x,placement:"top",children:e.jsx("span",{className:t?"text-neutral-400":"text-primary-600",children:u})}):e.jsx("span",{className:t?"text-neutral-400":"text-primary-600",children:u});return e.jsxs("div",{className:"relative dark:bg-black-800",children:[s&&e.jsx("td",{className:`min-w-[40px] ${f===i?"bg-neutral-100 dark:bg-black-700":""}`}),e.jsxs("td",{id:String(w)||String(i),onClick:N,className:`relative w-full h-row overflow-x-hidden ${t?"cursor-not-allowed":"cursor-pointer"}`,colSpan:h,style:{paddingLeft:k,width:c},children:[!b&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-1/2 border-l border-neutral-300 ml-2 dark:border-black-700"}),e.jsx("div",{className:"ml-2 w-2.5 h-px bg-neutral-300 dark:bg-black-700"})]}),e.jsx("div",{className:"px-6 w-full absolute h-row top-0 flex items-center",children:v})]})]})},A=r.memo(y);exports.ActionCell=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),S=require("../../../../tooltip/Tooltip.cjs.js"),r=require("react"),C=require("../../../../../providers/design-system-provider/hooks.cjs.js"),y=({rowHovering:f,level:a,totalWidth:c,isCheckbox:s,id:i,onClick:l,cells:m,isRoot:b,name:u,uploadCell:j,row:d,disabled:t,disabledTooltip:x})=>{const p=C.useTableConfig(),o=d?.name?.props,g=r.useCallback(()=>o?.text&&o.text==="+ New Line Item"?"new-line-item":`id-${Math.random().toString(36).substring(2,15)}`,[o?.text]),w=r.useMemo(()=>g(),[g]),N=r.useCallback(n=>{t||l&&l(n)},[l,t]),h=r.useMemo(()=>m.filter(n=>n?.column?.visible!==!1)?.length-(s?1:0),[m,s]),k=r.useMemo(()=>a>0?a*16:0,[a]);if(j&&p?.renderUploadAttachmentRow)return e.jsx(e.Fragment,{children:p.renderUploadAttachmentRow({data:d,colSpan:h+2,totalWidth:c})});const v=t&&x?e.jsx(S,{title:x,placement:"top",children:e.jsx("span",{className:t?"text-neutral-400":"text-primary-600",children:u})}):e.jsx("span",{className:t?"text-neutral-400":"text-primary-600",children:u});return e.jsxs("div",{className:"relative dark:bg-black-800",children:[s&&e.jsx("td",{className:`min-w-[40px] ${f===i?"bg-neutral-100 dark:bg-black-700":""}`}),e.jsxs("td",{id:String(w)||String(i),onClick:N,className:`relative w-full h-10 overflow-x-hidden ${t?"cursor-not-allowed":"cursor-pointer"}`,colSpan:h,style:{paddingLeft:k,width:c},children:[!b&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-1/2 border-l border-neutral-300 ml-2 dark:border-black-700"}),e.jsx("div",{className:"ml-2 w-2.5 h-px bg-neutral-300 dark:bg-black-700"})]}),e.jsx("div",{className:"px-6 w-full absolute h-10 top-0 flex items-center",children:v})]})]})},A=r.memo(y);exports.ActionCell=A;
2
2
  //# sourceMappingURL=ActionCell.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/ActionCell.tsx"],"sourcesContent":["import Tooltip from '../../../../tooltip/Tooltip';\nimport React, { useCallback, useMemo } from 'react';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\n\ntype CellProps = {\n rowHovering: number | string;\n level: number;\n totalWidth: number;\n isCheckbox: boolean;\n id: number | string;\n onClick: (e?: React.MouseEvent<HTMLTableCellElement>) => void;\n cells: Array<{ column?: { visible?: boolean; [k: string]: unknown }; [k: string]: unknown }>;\n isRoot: boolean;\n name: string;\n uploadCell?: boolean;\n row?: Record<string, unknown>;\n disabled?: boolean;\n disabledTooltip?: string;\n};\n\nconst ActionCellInner: React.FC<CellProps> = ({\n rowHovering,\n level,\n totalWidth,\n isCheckbox,\n id,\n onClick,\n cells,\n isRoot,\n name,\n uploadCell,\n row,\n disabled,\n disabledTooltip,\n}) => {\n const tableConfig = useTableConfig();\n\n const rowNameProps = (row?.name as { props?: { text?: string } } | undefined)?.props;\n const generateId = useCallback(() => {\n if (rowNameProps?.text && rowNameProps.text === '+ New Line Item') {\n return 'new-line-item';\n } else {\n const formatted = Math.random().toString(36).substring(2, 15);\n return `id-${formatted}`;\n }\n }, [rowNameProps?.text]);\n const currentId = useMemo(() => generateId(), [generateId]);\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n if (disabled) return;\n if (onClick) onClick(e);\n },\n [onClick, disabled],\n );\n\n const colSpan = useMemo(() => cells.filter((cell) => cell?.column?.visible !== false)?.length - (isCheckbox ? 1 : 0), [cells, isCheckbox]);\n const paddingLeft = useMemo(() => (level > 0 ? level * 16 : 0), [level]);\n\n if (uploadCell && tableConfig?.renderUploadAttachmentRow) {\n return <>{tableConfig.renderUploadAttachmentRow({ data: row, colSpan: colSpan + 2, totalWidth })}</>;\n }\n\n const nameContent =\n disabled && disabledTooltip ? (\n <Tooltip title={disabledTooltip} placement='top'>\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n </Tooltip>\n ) : (\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n );\n\n return (\n <div className='relative dark:bg-black-800'>\n {isCheckbox && <td className={`min-w-[40px] ${rowHovering === id ? 'bg-neutral-100 dark:bg-black-700' : ''}`} />}\n <td\n id={String(currentId) || String(id)}\n onClick={handleClick}\n className={`relative w-full h-row overflow-x-hidden ${disabled ? 'cursor-not-allowed' : 'cursor-pointer'}`}\n colSpan={colSpan}\n style={{ paddingLeft, width: totalWidth }}\n >\n {!isRoot && (\n <>\n <div className='h-1/2 border-l border-neutral-300 ml-2 dark:border-black-700' />\n <div className='ml-2 w-2.5 h-px bg-neutral-300 dark:bg-black-700' />\n </>\n )}\n <div className='px-6 w-full absolute h-row top-0 flex items-center'>{nameContent}</div>\n </td>\n </div>\n );\n};\n\nexport const ActionCell = React.memo(ActionCellInner);\n"],"names":["ActionCellInner","rowHovering","level","totalWidth","isCheckbox","id","onClick","cells","isRoot","name","uploadCell","row","disabled","disabledTooltip","tableConfig","useTableConfig","rowNameProps","generateId","useCallback","currentId","useMemo","handleClick","e","colSpan","cell","paddingLeft","jsx","Fragment","nameContent","Tooltip","jsxs","ActionCell","React"],"mappings":"kQAoBMA,EAAuC,CAAC,CAC5C,YAAAC,EACA,MAAAC,EACA,WAAAC,EACA,WAAAC,EACA,GAAAC,EACA,QAAAC,EACA,MAAAC,EACA,OAAAC,EACA,KAAAC,EACA,WAAAC,EACA,IAAAC,EACA,SAAAC,EACA,gBAAAC,CACF,IAAM,CACJ,MAAMC,EAAcC,EAAAA,eAAA,EAEdC,EAAgBL,GAAK,MAAoD,MACzEM,EAAaC,EAAAA,YAAY,IACzBF,GAAc,MAAQA,EAAa,OAAS,kBACvC,gBAGA,MADW,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,CACtC,GAEvB,CAACA,GAAc,IAAI,CAAC,EACjBG,EAAYC,EAAAA,QAAQ,IAAMH,IAAc,CAACA,CAAU,CAAC,EACpDI,EAAcH,EAAAA,YACjBI,GAA8C,CACzCV,GACAN,KAAiBgB,CAAC,CACxB,EACA,CAAChB,EAASM,CAAQ,CAAA,EAGdW,EAAUH,EAAAA,QAAQ,IAAMb,EAAM,OAAQiB,GAASA,GAAM,QAAQ,UAAY,EAAK,GAAG,QAAUpB,EAAa,EAAI,GAAI,CAACG,EAAOH,CAAU,CAAC,EACnIqB,EAAcL,UAAQ,IAAOlB,EAAQ,EAAIA,EAAQ,GAAK,EAAI,CAACA,CAAK,CAAC,EAEvE,GAAIQ,GAAcI,GAAa,0BAC7B,OAAOY,EAAAA,IAAAC,EAAAA,SAAA,CAAG,SAAAb,EAAY,0BAA0B,CAAE,KAAMH,EAAK,QAASY,EAAU,EAAG,WAAApB,CAAA,CAAY,CAAA,CAAE,EAGnG,MAAMyB,EACJhB,GAAYC,EACVa,EAAAA,IAACG,EAAA,CAAQ,MAAOhB,EAAiB,UAAU,MACzC,SAAAa,EAAAA,IAAC,OAAA,CAAK,UAAWd,EAAW,mBAAqB,mBAAqB,SAAAH,CAAA,CAAK,CAAA,CAC7E,EAEAiB,EAAAA,IAAC,QAAK,UAAWd,EAAW,mBAAqB,mBAAqB,SAAAH,CAAA,CAAK,EAG/E,OACEqB,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACZ,SAAA,CAAA1B,GAAcsB,EAAAA,IAAC,MAAG,UAAW,gBAAgBzB,IAAgBI,EAAK,mCAAqC,EAAE,EAAA,CAAI,EAC9GyB,EAAAA,KAAC,KAAA,CACC,GAAI,OAAOX,CAAS,GAAK,OAAOd,CAAE,EAClC,QAASgB,EACT,UAAW,2CAA2CT,EAAW,qBAAuB,gBAAgB,GACxG,QAAAW,EACA,MAAO,CAAE,YAAAE,EAAa,MAAOtB,CAAA,EAE5B,SAAA,CAAA,CAACK,GACAsB,EAAAA,KAAAH,EAAAA,SAAA,CACE,SAAA,CAAAD,EAAAA,IAAC,MAAA,CAAI,UAAU,8DAAA,CAA+D,EAC9EA,EAAAA,IAAC,MAAA,CAAI,UAAU,kDAAA,CAAmD,CAAA,EACpE,EAEFA,EAAAA,IAAC,MAAA,CAAI,UAAU,qDAAsD,SAAAE,CAAA,CAAY,CAAA,CAAA,CAAA,CACnF,EACF,CAEJ,EAEaG,EAAaC,EAAM,KAAKhC,CAAe"}
1
+ {"version":3,"file":"ActionCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/ActionCell.tsx"],"sourcesContent":["import Tooltip from '../../../../tooltip/Tooltip';\nimport React, { useCallback, useMemo } from 'react';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\n\ntype CellProps = {\n rowHovering: number | string;\n level: number;\n totalWidth: number;\n isCheckbox: boolean;\n id: number | string;\n onClick: (e?: React.MouseEvent<HTMLTableCellElement>) => void;\n cells: Array<{ column?: { visible?: boolean; [k: string]: unknown }; [k: string]: unknown }>;\n isRoot: boolean;\n name: string;\n uploadCell?: boolean;\n row?: Record<string, unknown>;\n disabled?: boolean;\n disabledTooltip?: string;\n};\n\nconst ActionCellInner: React.FC<CellProps> = ({\n rowHovering,\n level,\n totalWidth,\n isCheckbox,\n id,\n onClick,\n cells,\n isRoot,\n name,\n uploadCell,\n row,\n disabled,\n disabledTooltip,\n}) => {\n const tableConfig = useTableConfig();\n\n const rowNameProps = (row?.name as { props?: { text?: string } } | undefined)?.props;\n const generateId = useCallback(() => {\n if (rowNameProps?.text && rowNameProps.text === '+ New Line Item') {\n return 'new-line-item';\n } else {\n const formatted = Math.random().toString(36).substring(2, 15);\n return `id-${formatted}`;\n }\n }, [rowNameProps?.text]);\n const currentId = useMemo(() => generateId(), [generateId]);\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n if (disabled) return;\n if (onClick) onClick(e);\n },\n [onClick, disabled],\n );\n\n const colSpan = useMemo(() => cells.filter((cell) => cell?.column?.visible !== false)?.length - (isCheckbox ? 1 : 0), [cells, isCheckbox]);\n const paddingLeft = useMemo(() => (level > 0 ? level * 16 : 0), [level]);\n\n if (uploadCell && tableConfig?.renderUploadAttachmentRow) {\n return <>{tableConfig.renderUploadAttachmentRow({ data: row, colSpan: colSpan + 2, totalWidth })}</>;\n }\n\n const nameContent =\n disabled && disabledTooltip ? (\n <Tooltip title={disabledTooltip} placement='top'>\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n </Tooltip>\n ) : (\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n );\n\n return (\n <div className='relative dark:bg-black-800'>\n {isCheckbox && <td className={`min-w-[40px] ${rowHovering === id ? 'bg-neutral-100 dark:bg-black-700' : ''}`} />}\n <td\n id={String(currentId) || String(id)}\n onClick={handleClick}\n className={`relative w-full h-10 overflow-x-hidden ${disabled ? 'cursor-not-allowed' : 'cursor-pointer'}`}\n colSpan={colSpan}\n style={{ paddingLeft, width: totalWidth }}\n >\n {!isRoot && (\n <>\n <div className='h-1/2 border-l border-neutral-300 ml-2 dark:border-black-700' />\n <div className='ml-2 w-2.5 h-px bg-neutral-300 dark:bg-black-700' />\n </>\n )}\n <div className='px-6 w-full absolute h-10 top-0 flex items-center'>{nameContent}</div>\n </td>\n </div>\n );\n};\n\nexport const ActionCell = React.memo(ActionCellInner);\n"],"names":["ActionCellInner","rowHovering","level","totalWidth","isCheckbox","id","onClick","cells","isRoot","name","uploadCell","row","disabled","disabledTooltip","tableConfig","useTableConfig","rowNameProps","generateId","useCallback","currentId","useMemo","handleClick","e","colSpan","cell","paddingLeft","jsx","Fragment","nameContent","Tooltip","jsxs","ActionCell","React"],"mappings":"kQAoBMA,EAAuC,CAAC,CAC5C,YAAAC,EACA,MAAAC,EACA,WAAAC,EACA,WAAAC,EACA,GAAAC,EACA,QAAAC,EACA,MAAAC,EACA,OAAAC,EACA,KAAAC,EACA,WAAAC,EACA,IAAAC,EACA,SAAAC,EACA,gBAAAC,CACF,IAAM,CACJ,MAAMC,EAAcC,EAAAA,eAAA,EAEdC,EAAgBL,GAAK,MAAoD,MACzEM,EAAaC,EAAAA,YAAY,IACzBF,GAAc,MAAQA,EAAa,OAAS,kBACvC,gBAGA,MADW,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,CACtC,GAEvB,CAACA,GAAc,IAAI,CAAC,EACjBG,EAAYC,EAAAA,QAAQ,IAAMH,IAAc,CAACA,CAAU,CAAC,EACpDI,EAAcH,EAAAA,YACjBI,GAA8C,CACzCV,GACAN,KAAiBgB,CAAC,CACxB,EACA,CAAChB,EAASM,CAAQ,CAAA,EAGdW,EAAUH,EAAAA,QAAQ,IAAMb,EAAM,OAAQiB,GAASA,GAAM,QAAQ,UAAY,EAAK,GAAG,QAAUpB,EAAa,EAAI,GAAI,CAACG,EAAOH,CAAU,CAAC,EACnIqB,EAAcL,UAAQ,IAAOlB,EAAQ,EAAIA,EAAQ,GAAK,EAAI,CAACA,CAAK,CAAC,EAEvE,GAAIQ,GAAcI,GAAa,0BAC7B,OAAOY,EAAAA,IAAAC,EAAAA,SAAA,CAAG,SAAAb,EAAY,0BAA0B,CAAE,KAAMH,EAAK,QAASY,EAAU,EAAG,WAAApB,CAAA,CAAY,CAAA,CAAE,EAGnG,MAAMyB,EACJhB,GAAYC,EACVa,EAAAA,IAACG,EAAA,CAAQ,MAAOhB,EAAiB,UAAU,MACzC,SAAAa,EAAAA,IAAC,OAAA,CAAK,UAAWd,EAAW,mBAAqB,mBAAqB,SAAAH,CAAA,CAAK,CAAA,CAC7E,EAEAiB,EAAAA,IAAC,QAAK,UAAWd,EAAW,mBAAqB,mBAAqB,SAAAH,CAAA,CAAK,EAG/E,OACEqB,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACZ,SAAA,CAAA1B,GAAcsB,EAAAA,IAAC,MAAG,UAAW,gBAAgBzB,IAAgBI,EAAK,mCAAqC,EAAE,EAAA,CAAI,EAC9GyB,EAAAA,KAAC,KAAA,CACC,GAAI,OAAOX,CAAS,GAAK,OAAOd,CAAE,EAClC,QAASgB,EACT,UAAW,0CAA0CT,EAAW,qBAAuB,gBAAgB,GACvG,QAAAW,EACA,MAAO,CAAE,YAAAE,EAAa,MAAOtB,CAAA,EAE5B,SAAA,CAAA,CAACK,GACAsB,EAAAA,KAAAH,EAAAA,SAAA,CACE,SAAA,CAAAD,EAAAA,IAAC,MAAA,CAAI,UAAU,8DAAA,CAA+D,EAC9EA,EAAAA,IAAC,MAAA,CAAI,UAAU,kDAAA,CAAmD,CAAA,EACpE,EAEFA,EAAAA,IAAC,MAAA,CAAI,UAAU,oDAAqD,SAAAE,CAAA,CAAY,CAAA,CAAA,CAAA,CAClF,EACF,CAEJ,EAEaG,EAAaC,EAAM,KAAKhC,CAAe"}
@@ -1,4 +1,4 @@
1
- import { jsx as t, Fragment as x, jsxs as c } from "react/jsx-runtime";
1
+ import { jsx as t, Fragment as w, jsxs as c } from "react/jsx-runtime";
2
2
  import y from "../../../../tooltip/Tooltip.es.js";
3
3
  import R, { useCallback as b, useMemo as s } from "react";
4
4
  import { useTableConfig as $ } from "../../../../../providers/design-system-provider/hooks.es.js";
@@ -8,7 +8,7 @@ const j = ({
8
8
  totalWidth: i,
9
9
  isCheckbox: a,
10
10
  id: m,
11
- onClick: o,
11
+ onClick: l,
12
12
  cells: d,
13
13
  isRoot: k,
14
14
  name: p,
@@ -17,14 +17,14 @@ const j = ({
17
17
  disabled: e,
18
18
  disabledTooltip: f
19
19
  }) => {
20
- const h = $(), l = u?.name?.props, g = b(() => l?.text && l.text === "+ New Line Item" ? "new-line-item" : `id-${Math.random().toString(36).substring(2, 15)}`, [l?.text]), S = s(() => g(), [g]), A = b(
20
+ const h = $(), o = u?.name?.props, g = b(() => o?.text && o.text === "+ New Line Item" ? "new-line-item" : `id-${Math.random().toString(36).substring(2, 15)}`, [o?.text]), S = s(() => g(), [g]), A = b(
21
21
  (r) => {
22
- e || o && o(r);
22
+ e || l && l(r);
23
23
  },
24
- [o, e]
25
- ), w = s(() => d.filter((r) => r?.column?.visible !== !1)?.length - (a ? 1 : 0), [d, a]), C = s(() => n > 0 ? n * 16 : 0, [n]);
24
+ [l, e]
25
+ ), x = s(() => d.filter((r) => r?.column?.visible !== !1)?.length - (a ? 1 : 0), [d, a]), C = s(() => n > 0 ? n * 16 : 0, [n]);
26
26
  if (v && h?.renderUploadAttachmentRow)
27
- return /* @__PURE__ */ t(x, { children: h.renderUploadAttachmentRow({ data: u, colSpan: w + 2, totalWidth: i }) });
27
+ return /* @__PURE__ */ t(w, { children: h.renderUploadAttachmentRow({ data: u, colSpan: x + 2, totalWidth: i }) });
28
28
  const I = e && f ? /* @__PURE__ */ t(y, { title: f, placement: "top", children: /* @__PURE__ */ t("span", { className: e ? "text-neutral-400" : "text-primary-600", children: p }) }) : /* @__PURE__ */ t("span", { className: e ? "text-neutral-400" : "text-primary-600", children: p });
29
29
  return /* @__PURE__ */ c("div", { className: "relative dark:bg-black-800", children: [
30
30
  a && /* @__PURE__ */ t("td", { className: `min-w-[40px] ${N === m ? "bg-neutral-100 dark:bg-black-700" : ""}` }),
@@ -33,15 +33,15 @@ const j = ({
33
33
  {
34
34
  id: String(S) || String(m),
35
35
  onClick: A,
36
- className: `relative w-full h-row overflow-x-hidden ${e ? "cursor-not-allowed" : "cursor-pointer"}`,
37
- colSpan: w,
36
+ className: `relative w-full h-10 overflow-x-hidden ${e ? "cursor-not-allowed" : "cursor-pointer"}`,
37
+ colSpan: x,
38
38
  style: { paddingLeft: C, width: i },
39
39
  children: [
40
- !k && /* @__PURE__ */ c(x, { children: [
40
+ !k && /* @__PURE__ */ c(w, { children: [
41
41
  /* @__PURE__ */ t("div", { className: "h-1/2 border-l border-neutral-300 ml-2 dark:border-black-700" }),
42
42
  /* @__PURE__ */ t("div", { className: "ml-2 w-2.5 h-px bg-neutral-300 dark:bg-black-700" })
43
43
  ] }),
44
- /* @__PURE__ */ t("div", { className: "px-6 w-full absolute h-row top-0 flex items-center", children: I })
44
+ /* @__PURE__ */ t("div", { className: "px-6 w-full absolute h-10 top-0 flex items-center", children: I })
45
45
  ]
46
46
  }
47
47
  )
@@ -1 +1 @@
1
- {"version":3,"file":"ActionCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/ActionCell.tsx"],"sourcesContent":["import Tooltip from '../../../../tooltip/Tooltip';\nimport React, { useCallback, useMemo } from 'react';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\n\ntype CellProps = {\n rowHovering: number | string;\n level: number;\n totalWidth: number;\n isCheckbox: boolean;\n id: number | string;\n onClick: (e?: React.MouseEvent<HTMLTableCellElement>) => void;\n cells: Array<{ column?: { visible?: boolean; [k: string]: unknown }; [k: string]: unknown }>;\n isRoot: boolean;\n name: string;\n uploadCell?: boolean;\n row?: Record<string, unknown>;\n disabled?: boolean;\n disabledTooltip?: string;\n};\n\nconst ActionCellInner: React.FC<CellProps> = ({\n rowHovering,\n level,\n totalWidth,\n isCheckbox,\n id,\n onClick,\n cells,\n isRoot,\n name,\n uploadCell,\n row,\n disabled,\n disabledTooltip,\n}) => {\n const tableConfig = useTableConfig();\n\n const rowNameProps = (row?.name as { props?: { text?: string } } | undefined)?.props;\n const generateId = useCallback(() => {\n if (rowNameProps?.text && rowNameProps.text === '+ New Line Item') {\n return 'new-line-item';\n } else {\n const formatted = Math.random().toString(36).substring(2, 15);\n return `id-${formatted}`;\n }\n }, [rowNameProps?.text]);\n const currentId = useMemo(() => generateId(), [generateId]);\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n if (disabled) return;\n if (onClick) onClick(e);\n },\n [onClick, disabled],\n );\n\n const colSpan = useMemo(() => cells.filter((cell) => cell?.column?.visible !== false)?.length - (isCheckbox ? 1 : 0), [cells, isCheckbox]);\n const paddingLeft = useMemo(() => (level > 0 ? level * 16 : 0), [level]);\n\n if (uploadCell && tableConfig?.renderUploadAttachmentRow) {\n return <>{tableConfig.renderUploadAttachmentRow({ data: row, colSpan: colSpan + 2, totalWidth })}</>;\n }\n\n const nameContent =\n disabled && disabledTooltip ? (\n <Tooltip title={disabledTooltip} placement='top'>\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n </Tooltip>\n ) : (\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n );\n\n return (\n <div className='relative dark:bg-black-800'>\n {isCheckbox && <td className={`min-w-[40px] ${rowHovering === id ? 'bg-neutral-100 dark:bg-black-700' : ''}`} />}\n <td\n id={String(currentId) || String(id)}\n onClick={handleClick}\n className={`relative w-full h-row overflow-x-hidden ${disabled ? 'cursor-not-allowed' : 'cursor-pointer'}`}\n colSpan={colSpan}\n style={{ paddingLeft, width: totalWidth }}\n >\n {!isRoot && (\n <>\n <div className='h-1/2 border-l border-neutral-300 ml-2 dark:border-black-700' />\n <div className='ml-2 w-2.5 h-px bg-neutral-300 dark:bg-black-700' />\n </>\n )}\n <div className='px-6 w-full absolute h-row top-0 flex items-center'>{nameContent}</div>\n </td>\n </div>\n );\n};\n\nexport const ActionCell = React.memo(ActionCellInner);\n"],"names":["ActionCellInner","rowHovering","level","totalWidth","isCheckbox","id","onClick","cells","isRoot","name","uploadCell","row","disabled","disabledTooltip","tableConfig","useTableConfig","rowNameProps","generateId","useCallback","currentId","useMemo","handleClick","e","colSpan","cell","paddingLeft","jsx","Fragment","nameContent","Tooltip","jsxs","ActionCell","React"],"mappings":";;;;AAoBA,MAAMA,IAAuC,CAAC;AAAA,EAC5C,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,IAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,KAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AACF,MAAM;AACJ,QAAMC,IAAcC,EAAA,GAEdC,IAAgBL,GAAK,MAAoD,OACzEM,IAAaC,EAAY,MACzBF,GAAc,QAAQA,EAAa,SAAS,oBACvC,kBAGA,MADW,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE,CACtC,IAEvB,CAACA,GAAc,IAAI,CAAC,GACjBG,IAAYC,EAAQ,MAAMH,KAAc,CAACA,CAAU,CAAC,GACpDI,IAAcH;AAAA,IAClB,CAACI,MAA8C;AAC7C,MAAIV,KACAN,OAAiBgB,CAAC;AAAA,IACxB;AAAA,IACA,CAAChB,GAASM,CAAQ;AAAA,EAAA,GAGdW,IAAUH,EAAQ,MAAMb,EAAM,OAAO,CAACiB,MAASA,GAAM,QAAQ,YAAY,EAAK,GAAG,UAAUpB,IAAa,IAAI,IAAI,CAACG,GAAOH,CAAU,CAAC,GACnIqB,IAAcL,EAAQ,MAAOlB,IAAQ,IAAIA,IAAQ,KAAK,GAAI,CAACA,CAAK,CAAC;AAEvE,MAAIQ,KAAcI,GAAa;AAC7B,WAAO,gBAAAY,EAAAC,GAAA,EAAG,UAAAb,EAAY,0BAA0B,EAAE,MAAMH,GAAK,SAASY,IAAU,GAAG,YAAApB,EAAA,CAAY,EAAA,CAAE;AAGnG,QAAMyB,IACJhB,KAAYC,IACV,gBAAAa,EAACG,GAAA,EAAQ,OAAOhB,GAAiB,WAAU,OACzC,UAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWd,IAAW,qBAAqB,oBAAqB,UAAAH,EAAA,CAAK,EAAA,CAC7E,IAEA,gBAAAiB,EAAC,UAAK,WAAWd,IAAW,qBAAqB,oBAAqB,UAAAH,EAAA,CAAK;AAG/E,SACE,gBAAAqB,EAAC,OAAA,EAAI,WAAU,8BACZ,UAAA;AAAA,IAAA1B,KAAc,gBAAAsB,EAAC,QAAG,WAAW,gBAAgBzB,MAAgBI,IAAK,qCAAqC,EAAE,GAAA,CAAI;AAAA,IAC9G,gBAAAyB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI,OAAOX,CAAS,KAAK,OAAOd,CAAE;AAAA,QAClC,SAASgB;AAAA,QACT,WAAW,2CAA2CT,IAAW,uBAAuB,gBAAgB;AAAA,QACxG,SAAAW;AAAA,QACA,OAAO,EAAE,aAAAE,GAAa,OAAOtB,EAAA;AAAA,QAE5B,UAAA;AAAA,UAAA,CAACK,KACA,gBAAAsB,EAAAH,GAAA,EACE,UAAA;AAAA,YAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,+DAAA,CAA+D;AAAA,YAC9E,gBAAAA,EAAC,OAAA,EAAI,WAAU,mDAAA,CAAmD;AAAA,UAAA,GACpE;AAAA,UAEF,gBAAAA,EAAC,OAAA,EAAI,WAAU,sDAAsD,UAAAE,EAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACnF,GACF;AAEJ,GAEaG,IAAaC,EAAM,KAAKhC,CAAe;"}
1
+ {"version":3,"file":"ActionCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/ActionCell.tsx"],"sourcesContent":["import Tooltip from '../../../../tooltip/Tooltip';\nimport React, { useCallback, useMemo } from 'react';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\n\ntype CellProps = {\n rowHovering: number | string;\n level: number;\n totalWidth: number;\n isCheckbox: boolean;\n id: number | string;\n onClick: (e?: React.MouseEvent<HTMLTableCellElement>) => void;\n cells: Array<{ column?: { visible?: boolean; [k: string]: unknown }; [k: string]: unknown }>;\n isRoot: boolean;\n name: string;\n uploadCell?: boolean;\n row?: Record<string, unknown>;\n disabled?: boolean;\n disabledTooltip?: string;\n};\n\nconst ActionCellInner: React.FC<CellProps> = ({\n rowHovering,\n level,\n totalWidth,\n isCheckbox,\n id,\n onClick,\n cells,\n isRoot,\n name,\n uploadCell,\n row,\n disabled,\n disabledTooltip,\n}) => {\n const tableConfig = useTableConfig();\n\n const rowNameProps = (row?.name as { props?: { text?: string } } | undefined)?.props;\n const generateId = useCallback(() => {\n if (rowNameProps?.text && rowNameProps.text === '+ New Line Item') {\n return 'new-line-item';\n } else {\n const formatted = Math.random().toString(36).substring(2, 15);\n return `id-${formatted}`;\n }\n }, [rowNameProps?.text]);\n const currentId = useMemo(() => generateId(), [generateId]);\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n if (disabled) return;\n if (onClick) onClick(e);\n },\n [onClick, disabled],\n );\n\n const colSpan = useMemo(() => cells.filter((cell) => cell?.column?.visible !== false)?.length - (isCheckbox ? 1 : 0), [cells, isCheckbox]);\n const paddingLeft = useMemo(() => (level > 0 ? level * 16 : 0), [level]);\n\n if (uploadCell && tableConfig?.renderUploadAttachmentRow) {\n return <>{tableConfig.renderUploadAttachmentRow({ data: row, colSpan: colSpan + 2, totalWidth })}</>;\n }\n\n const nameContent =\n disabled && disabledTooltip ? (\n <Tooltip title={disabledTooltip} placement='top'>\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n </Tooltip>\n ) : (\n <span className={disabled ? 'text-neutral-400' : 'text-primary-600'}>{name}</span>\n );\n\n return (\n <div className='relative dark:bg-black-800'>\n {isCheckbox && <td className={`min-w-[40px] ${rowHovering === id ? 'bg-neutral-100 dark:bg-black-700' : ''}`} />}\n <td\n id={String(currentId) || String(id)}\n onClick={handleClick}\n className={`relative w-full h-10 overflow-x-hidden ${disabled ? 'cursor-not-allowed' : 'cursor-pointer'}`}\n colSpan={colSpan}\n style={{ paddingLeft, width: totalWidth }}\n >\n {!isRoot && (\n <>\n <div className='h-1/2 border-l border-neutral-300 ml-2 dark:border-black-700' />\n <div className='ml-2 w-2.5 h-px bg-neutral-300 dark:bg-black-700' />\n </>\n )}\n <div className='px-6 w-full absolute h-10 top-0 flex items-center'>{nameContent}</div>\n </td>\n </div>\n );\n};\n\nexport const ActionCell = React.memo(ActionCellInner);\n"],"names":["ActionCellInner","rowHovering","level","totalWidth","isCheckbox","id","onClick","cells","isRoot","name","uploadCell","row","disabled","disabledTooltip","tableConfig","useTableConfig","rowNameProps","generateId","useCallback","currentId","useMemo","handleClick","e","colSpan","cell","paddingLeft","jsx","Fragment","nameContent","Tooltip","jsxs","ActionCell","React"],"mappings":";;;;AAoBA,MAAMA,IAAuC,CAAC;AAAA,EAC5C,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,IAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,KAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AACF,MAAM;AACJ,QAAMC,IAAcC,EAAA,GAEdC,IAAgBL,GAAK,MAAoD,OACzEM,IAAaC,EAAY,MACzBF,GAAc,QAAQA,EAAa,SAAS,oBACvC,kBAGA,MADW,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE,CACtC,IAEvB,CAACA,GAAc,IAAI,CAAC,GACjBG,IAAYC,EAAQ,MAAMH,KAAc,CAACA,CAAU,CAAC,GACpDI,IAAcH;AAAA,IAClB,CAACI,MAA8C;AAC7C,MAAIV,KACAN,OAAiBgB,CAAC;AAAA,IACxB;AAAA,IACA,CAAChB,GAASM,CAAQ;AAAA,EAAA,GAGdW,IAAUH,EAAQ,MAAMb,EAAM,OAAO,CAACiB,MAASA,GAAM,QAAQ,YAAY,EAAK,GAAG,UAAUpB,IAAa,IAAI,IAAI,CAACG,GAAOH,CAAU,CAAC,GACnIqB,IAAcL,EAAQ,MAAOlB,IAAQ,IAAIA,IAAQ,KAAK,GAAI,CAACA,CAAK,CAAC;AAEvE,MAAIQ,KAAcI,GAAa;AAC7B,WAAO,gBAAAY,EAAAC,GAAA,EAAG,UAAAb,EAAY,0BAA0B,EAAE,MAAMH,GAAK,SAASY,IAAU,GAAG,YAAApB,EAAA,CAAY,EAAA,CAAE;AAGnG,QAAMyB,IACJhB,KAAYC,IACV,gBAAAa,EAACG,GAAA,EAAQ,OAAOhB,GAAiB,WAAU,OACzC,UAAA,gBAAAa,EAAC,QAAA,EAAK,WAAWd,IAAW,qBAAqB,oBAAqB,UAAAH,EAAA,CAAK,EAAA,CAC7E,IAEA,gBAAAiB,EAAC,UAAK,WAAWd,IAAW,qBAAqB,oBAAqB,UAAAH,EAAA,CAAK;AAG/E,SACE,gBAAAqB,EAAC,OAAA,EAAI,WAAU,8BACZ,UAAA;AAAA,IAAA1B,KAAc,gBAAAsB,EAAC,QAAG,WAAW,gBAAgBzB,MAAgBI,IAAK,qCAAqC,EAAE,GAAA,CAAI;AAAA,IAC9G,gBAAAyB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI,OAAOX,CAAS,KAAK,OAAOd,CAAE;AAAA,QAClC,SAASgB;AAAA,QACT,WAAW,0CAA0CT,IAAW,uBAAuB,gBAAgB;AAAA,QACvG,SAAAW;AAAA,QACA,OAAO,EAAE,aAAAE,GAAa,OAAOtB,EAAA;AAAA,QAE5B,UAAA;AAAA,UAAA,CAACK,KACA,gBAAAsB,EAAAH,GAAA,EACE,UAAA;AAAA,YAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,+DAAA,CAA+D;AAAA,YAC9E,gBAAAA,EAAC,OAAA,EAAI,WAAU,mDAAA,CAAmD;AAAA,UAAA,GACpE;AAAA,UAEF,gBAAAA,EAAC,OAAA,EAAI,WAAU,qDAAqD,UAAAE,EAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAClF,GACF;AAEJ,GAEaG,IAAaC,EAAM,KAAKhC,CAAe;"}