abdul-react 0.0.24 → 0.0.26

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 (74) hide show
  1. package/lib/_virtual/index11.js +2 -2
  2. package/lib/_virtual/index9.js +2 -2
  3. package/lib/assets/icons/beautify_icon.svg.js +1 -1
  4. package/lib/assets/icons/beautify_icon.svg.js.map +1 -1
  5. package/lib/components/Checkbox/Checkbox.js +19 -61
  6. package/lib/components/Checkbox/Checkbox.js.map +1 -1
  7. package/lib/components/ConditionalDropdown/OptionsDropdown.js +1 -1
  8. package/lib/components/ConditionalDropdown/OptionsDropdown.js.map +1 -1
  9. package/lib/components/Editor/VariableDropdown.js +1 -1
  10. package/lib/components/Editor/VariableDropdown.js.map +1 -1
  11. package/lib/components/Excel/Data.d.ts +0 -8
  12. package/lib/components/Excel/Data.js +6 -48
  13. package/lib/components/Excel/Data.js.map +1 -1
  14. package/lib/components/Excel/ExcelFile/ExcelFile.js +5 -8
  15. package/lib/components/Excel/ExcelFile/ExcelFile.js.map +1 -1
  16. package/lib/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.js +22 -8
  17. package/lib/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.js.map +1 -1
  18. package/lib/components/Excel/ExcelFile/ExcelFileComponents/ColumnIndicator.js +4 -5
  19. package/lib/components/Excel/ExcelFile/ExcelFileComponents/ColumnIndicator.js.map +1 -1
  20. package/lib/components/Excel/ExcelFile/ExcelFileComponents/DataEditor.js +1 -3
  21. package/lib/components/Excel/ExcelFile/ExcelFileComponents/DataEditor.js.map +1 -1
  22. package/lib/components/Excel/ExcelFile/ExcelFileComponents/FloatingRect.js +2 -2
  23. package/lib/components/Excel/ExcelFile/ExcelFileComponents/FloatingRect.js.map +1 -1
  24. package/lib/components/Excel/ExcelFile/ExcelFileComponents/RowIndicator.js +20 -5
  25. package/lib/components/Excel/ExcelFile/ExcelFileComponents/RowIndicator.js.map +1 -1
  26. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Selected.d.ts +2 -4
  27. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Selected.js +24 -4
  28. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Selected.js.map +1 -1
  29. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.js +14 -23
  30. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.js.map +1 -1
  31. package/lib/components/Excel/ExcelFile/ExcelFileComponents/actions.d.ts +3 -2
  32. package/lib/components/Excel/ExcelFile/ExcelFileComponents/actions.js +4 -2
  33. package/lib/components/Excel/ExcelFile/ExcelFileComponents/actions.js.map +1 -1
  34. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducer.js +15 -6
  35. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducer.js.map +1 -1
  36. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.d.ts +1 -1
  37. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.js +14 -2
  38. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.js.map +1 -1
  39. package/lib/components/Excel/ExcelFile/ExcelFileComponents/types.d.ts +8 -2
  40. package/lib/components/Excel/ExcelFile/ExcelFileComponents/util.d.ts +3 -12
  41. package/lib/components/Excel/ExcelFile/ExcelFileComponents/util.js +12 -30
  42. package/lib/components/Excel/ExcelFile/ExcelFileComponents/util.js.map +1 -1
  43. package/lib/components/Excel/Types.d.ts +0 -2
  44. package/lib/components/Excel/dataConversion.js +2 -6
  45. package/lib/components/Excel/dataConversion.js.map +1 -1
  46. package/lib/components/Input/Input.js +5 -1
  47. package/lib/components/Input/Input.js.map +1 -1
  48. package/lib/components/Input/types.d.ts +1 -0
  49. package/lib/components/MachineInputField/MachineInputField.js +1 -1
  50. package/lib/components/MachineInputField/MachineInputField.js.map +1 -1
  51. package/lib/components/MenuOption/MenuOption.d.ts +1 -1
  52. package/lib/components/MenuOption/MenuOption.js +24 -13
  53. package/lib/components/MenuOption/MenuOption.js.map +1 -1
  54. package/lib/components/MenuOption/types.d.ts +3 -0
  55. package/lib/components/variableSuggestionInputDropDown/OptionsDropdown.js +1 -1
  56. package/lib/components/variableSuggestionInputDropDown/OptionsDropdown.js.map +1 -1
  57. package/lib/components/variableSuggestionInputDropDown/VariableSuggestionInputDropDown.js +15 -10
  58. package/lib/components/variableSuggestionInputDropDown/VariableSuggestionInputDropDown.js.map +1 -1
  59. package/lib/components/variableSuggestionInputDropDown/types.d.ts +1 -0
  60. package/lib/index.cjs +203 -192
  61. package/lib/index.cjs.map +1 -1
  62. package/lib/index.d.ts +5 -1
  63. package/lib/node_modules/js-beautify/js/src/css/beautifier.js +1 -1
  64. package/lib/node_modules/js-beautify/js/src/html/beautifier.js +1 -1
  65. package/lib/node_modules/js-beautify/js/src/html/index.js +1 -1
  66. package/lib/node_modules/js-beautify/js/src/html/options.js +1 -1
  67. package/lib/node_modules/js-beautify/js/src/html/tokenizer.js +1 -1
  68. package/lib/node_modules/js-beautify/js/src/javascript/beautifier.js +1 -1
  69. package/lib/node_modules/js-beautify/js/src/javascript/index.js +1 -1
  70. package/lib/node_modules/js-beautify/js/src/javascript/options.js +1 -1
  71. package/lib/node_modules/js-beautify/js/src/javascript/tokenizer.js +1 -1
  72. package/lib/styles.css +1 -1
  73. package/lib/styles.css.map +1 -1
  74. package/package.json +1 -1
package/lib/index.cjs CHANGED
@@ -218,7 +218,7 @@ const SvgExportCollectionIcon = (props) => /* @__PURE__ */ React__namespace.crea
218
218
 
219
219
  const SvgRunIcon = (props) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "1em", height: "1em", viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ React__namespace.createElement("g", { clipPath: "url(#clip0_5151_106068)" }, /* @__PURE__ */ React__namespace.createElement("g", { filter: "url(#filter0_d_5151_106068)" }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M24.8701 12C24.8701 18.6274 19.4975 24 12.8701 24C6.2427 24 0.870117 18.6274 0.870117 12C0.870117 5.37258 6.2427 0 12.8701 0C19.4975 0 24.8701 5.37258 24.8701 12Z", fill: "url(#paint0_linear_5151_106068)" })), /* @__PURE__ */ React__namespace.createElement("path", { d: "M11.2033 15.7503L16.2033 12.0003L11.2033 8.25032V15.7503ZM12.87 3.66699C11.2218 3.66699 9.61061 4.15573 8.24021 5.07141C6.8698 5.98709 5.80169 7.28858 5.17096 8.8113C4.54023 10.334 4.3752 12.0096 4.69675 13.6261C5.01829 15.2426 5.81196 16.7274 6.9774 17.8929C8.14284 19.0583 9.6277 19.852 11.2442 20.1735C12.8607 20.4951 14.5363 20.33 16.059 19.6993C17.5817 19.0686 18.8832 18.0005 19.7989 16.6301C20.7145 15.2597 21.2033 13.6485 21.2033 12.0003C21.2033 9.79019 20.3253 7.67057 18.7625 6.10777C17.1997 4.54497 15.0801 3.66699 12.87 3.66699ZM12.87 18.667C11.5514 18.667 10.2625 18.276 9.16616 17.5435C8.06983 16.8109 7.21535 15.7697 6.71076 14.5515C6.20618 13.3334 6.07415 11.9929 6.33139 10.6997C6.58862 9.40652 7.22356 8.21863 8.15591 7.28628C9.08826 6.35393 10.2761 5.71899 11.5694 5.46176C12.8626 5.20452 14.203 5.33654 15.4212 5.84113C16.6394 6.34571 17.6805 7.2002 18.4131 8.29652C19.1456 9.39285 19.5366 10.6818 19.5366 12.0003C19.5344 13.7678 18.8313 15.4622 17.5816 16.7119C16.3318 17.9617 14.6374 18.6648 12.87 18.667Z", fill: "currentColor" })), /* @__PURE__ */ React__namespace.createElement("defs", null, /* @__PURE__ */ React__namespace.createElement("filter", { id: "filter0_d_5151_106068", x: -0.129883, y: -3, width: 28, height: 28, filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB" }, /* @__PURE__ */ React__namespace.createElement("feFlood", { floodOpacity: 0, result: "BackgroundImageFix" }), /* @__PURE__ */ React__namespace.createElement("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }), /* @__PURE__ */ React__namespace.createElement("feOffset", { dx: 1, dy: -1 }), /* @__PURE__ */ React__namespace.createElement("feGaussianBlur", { stdDeviation: 1 }), /* @__PURE__ */ React__namespace.createElement("feColorMatrix", { type: "matrix", values: "0 0 0 0 0.141176 0 0 0 0 0.0745098 0 0 0 0 0.196078 0 0 0 0.1 0" }), /* @__PURE__ */ React__namespace.createElement("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_5151_106068" }), /* @__PURE__ */ React__namespace.createElement("feBlend", { mode: "normal", in: "SourceGraphic", in2: "effect1_dropShadow_5151_106068", result: "shape" })), /* @__PURE__ */ React__namespace.createElement("linearGradient", { id: "paint0_linear_5151_106068", x1: 2.59783, y1: 2.34599, x2: 24.8701, y2: 24, gradientUnits: "userSpaceOnUse" }, /* @__PURE__ */ React__namespace.createElement("stop", { offset: 1, stopColor: "#2A6F09" }), /* @__PURE__ */ React__namespace.createElement("stop", { stopColor: "#44B002" })), /* @__PURE__ */ React__namespace.createElement("clipPath", { id: "clip0_5151_106068" }, /* @__PURE__ */ React__namespace.createElement("rect", { width: 24, height: 24, fill: "currentColor", transform: "translate(0.870117)" }))));
220
220
 
221
- const SvgBeautifyIcon = (props) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "1em", height: "1em", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ React__namespace.createElement("rect", { x: 0.5, y: 0.5, width: 16, height: 16, rx: 4.5, stroke: "currentColor" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M10 15.2402H3V14.2402H10V15.2402ZM10 13.2402H3V12.2402H10V13.2402ZM14.7998 11.04H4.56055V9.75977H14.7998V11.04ZM12.2402 8.48047H4.56055V7.2002H12.2402V8.48047ZM14.4082 8.48047H12.5605V7.2002H14.4082V8.48047ZM10 6H3V5H10V6ZM10 4H3V3H10V4Z", fill: "currentColor" }), /* @__PURE__ */ React__namespace.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M13.2786 2.22236C13.249 2.0923 13.1334 2 13 2C12.8666 2 12.751 2.0923 12.7214 2.22236L12.5633 2.91756C12.4902 3.23911 12.2391 3.4902 11.9176 3.56331L11.2224 3.7214C11.0923 3.75097 11 3.86661 11 4C11 4.13339 11.0923 4.24903 11.2224 4.2786L11.9176 4.43669C12.2391 4.5098 12.4902 4.76089 12.5633 5.08244L12.7214 5.77764C12.751 5.9077 12.8666 6 13 6C13.1334 6 13.249 5.9077 13.2786 5.77764L13.4367 5.08244C13.5098 4.76089 13.7609 4.5098 14.0824 4.43669L14.7776 4.2786C14.9077 4.24903 15 4.13339 15 4C15 3.86661 14.9077 3.75097 14.7776 3.7214L14.0824 3.56331C13.7609 3.4902 13.5098 3.23911 13.4367 2.91756L13.2786 2.22236ZM12.3769 4C12.6449 3.86324 12.8632 3.64489 13 3.37691C13.1368 3.64489 13.3551 3.86324 13.6231 4C13.3551 4.13676 13.1368 4.35511 13 4.62309C12.8632 4.35511 12.6449 4.13676 12.3769 4Z", fill: "currentColor" }));
221
+ const SvgBeautifyIcon = (props) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "1em", height: "1em", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ React__namespace.createElement("rect", { x: 0.5, y: 0.5, width: 17, height: 17, rx: 4.5, stroke: "#71347B" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M10 15.2402H3V14.2402H10V15.2402ZM10 13.2402H3V12.2402H10V13.2402ZM14.7998 11.04H4.56055V9.75977H14.7998V11.04ZM12.2402 8.48047H4.56055V7.2002H12.2402V8.48047ZM14.4082 8.48047H12.5605V7.2002H14.4082V8.48047ZM10 6H3V5H10V6ZM10 4H3V3H10V4Z", fill: "#71347B" }), /* @__PURE__ */ React__namespace.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M13.2786 2.22236C13.249 2.0923 13.1334 2 13 2C12.8666 2 12.751 2.0923 12.7214 2.22236L12.5633 2.91756C12.4902 3.23911 12.2391 3.4902 11.9176 3.56331L11.2224 3.7214C11.0923 3.75097 11 3.86661 11 4C11 4.13339 11.0923 4.24903 11.2224 4.2786L11.9176 4.43669C12.2391 4.5098 12.4902 4.76089 12.5633 5.08244L12.7214 5.77764C12.751 5.9077 12.8666 6 13 6C13.1334 6 13.249 5.9077 13.2786 5.77764L13.4367 5.08244C13.5098 4.76089 13.7609 4.5098 14.0824 4.43669L14.7776 4.2786C14.9077 4.24903 15 4.13339 15 4C15 3.86661 14.9077 3.75097 14.7776 3.7214L14.0824 3.56331C13.7609 3.4902 13.5098 3.23911 13.4367 2.91756L13.2786 2.22236ZM12.3769 4C12.6449 3.86324 12.8632 3.64489 13 3.37691C13.1368 3.64489 13.3551 3.86324 13.6231 4C13.3551 4.13676 13.1368 4.35511 13 4.62309C12.8632 4.35511 12.6449 4.13676 12.3769 4Z", fill: "#71347B" }));
222
222
 
223
223
  const SvgAddVariableIcon = (props) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "1em", height: "1em", viewBox: "0 0 16 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M14.9799 1.39074L14.98 1.39066C14.7152 1.10024 14.2958 0.91202 13.667 0.901363L13.6603 0.901248L13.6603 0.901202C12.7479 0.873384 11.9951 1.10031 11.384 1.55729C10.8289 1.97239 10.3593 2.60115 10.001 3.47483C10.1534 3.44887 10.311 3.43399 10.4753 3.43399C10.7848 3.43399 11.4004 3.4707 11.7695 3.94829L11.7739 3.95398L11.7738 3.95401C12.0596 4.33506 12.0442 4.83443 11.9167 5.28791L11.9148 5.29459L11.9148 5.29458C11.8487 5.5177 11.679 5.86554 11.4767 6.23962C11.2662 6.62901 10.996 7.09066 10.702 7.55973L10.6993 7.56416L10.6992 7.56414C10.3347 8.13251 10.0495 8.55478 9.83621 8.83812C9.73082 8.9781 9.63297 9.09769 9.54476 9.18669C9.50132 9.23051 9.44774 9.27975 9.3864 9.32131C9.33933 9.3532 9.21625 9.43126 9.04751 9.43126H9.03969L9.03189 9.43102C8.86024 9.42565 8.74138 9.34197 8.68565 9.29502C8.62506 9.24396 8.58139 9.18766 8.55261 9.14632C8.49422 9.06244 8.44439 8.96269 8.40245 8.86844C8.31617 8.6746 8.22417 8.41394 8.13119 8.12159C7.94369 7.5321 7.73346 6.75358 7.53672 5.98052C7.33946 5.20536 7.15363 4.42727 7.01499 3.8353C6.94564 3.53916 6.88802 3.28929 6.84663 3.10947L6.79742 2.89575C6.78998 2.86356 6.7853 2.8436 6.78273 2.83267C6.78085 2.82467 6.78011 2.82151 6.78026 2.82195C6.57968 2.09733 6.4571 1.68312 6.26635 1.42424C6.18505 1.31391 6.0959 1.24128 5.9786 1.19094C5.85381 1.13739 5.67159 1.09837 5.39186 1.09837C5.26627 1.09837 5.03076 1.1623 4.67253 1.3451C4.32974 1.52003 3.92898 1.77495 3.49123 2.08709C2.6167 2.71068 1.63791 3.53124 0.748646 4.31012L0.746028 4.31241L0.74602 4.3124L0.529348 4.49953L0.770345 4.803C1.04584 4.59868 1.33341 4.39361 1.60844 4.23668C1.8837 4.07963 2.21683 3.9283 2.55433 3.92635C3.08046 3.91574 3.42074 4.32093 3.64468 4.72599C3.88424 5.15933 4.10594 5.79526 4.33533 6.63214C4.78297 8.25095 5.33179 9.99936 5.93252 11.3357C6.23406 12.0064 6.53701 12.5465 6.83047 12.9111C7.13988 13.2955 7.35241 13.3793 7.4597 13.3793C8.04015 13.3793 8.72417 13.1366 9.55755 12.509C10.3917 11.8809 11.3418 10.8921 12.4423 9.46323L14.9799 1.39074ZM14.9799 1.39074L14.9874 1.39862M14.9799 1.39074L14.9874 1.39862M14.9874 1.39862C15.338 1.76673 15.549 2.45607 15.4903 3.5376L15.4902 3.5376M14.9874 1.39862L15.4902 3.5376M15.4902 3.5376L15.4899 3.54442M15.4902 3.5376L15.4899 3.54442M15.4899 3.54442C15.4633 4.19952 15.2114 5.02391 14.6981 6.02812M15.4899 3.54442L14.6981 6.02812M14.6981 6.02812C14.1875 7.02705 13.4345 8.17281 12.4424 9.46314L14.6981 6.02812Z", fill: "currentColor", stroke: "currentColor" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M13.4708 9.75072H15.8999V11.1833H13.4708H13.3708V11.2833V13.7793H11.8044V11.2833V11.1833H11.7044H9.27529V9.75072H11.7044H11.8044V9.65072V7.15469H13.3708V9.65072V9.75072H13.4708Z", fill: "currentColor", stroke: "white", strokeWidth: 0.2 }));
224
224
 
@@ -2371,75 +2371,33 @@ const dropdownDefaultCSSData$1 = {
2371
2371
  maxDropdownHeight: 160
2372
2372
  };
2373
2373
 
2374
- const Checkbox = props => {
2375
- const {
2376
- id,
2377
- name,
2378
- label,
2379
- disabled = false,
2380
- checked: controlledChecked,
2381
- partial = false,
2382
- onChange,
2383
- variant,
2384
- isDefaultHover = false,
2385
- labelFontSize = 12
2386
- } = props;
2387
- // Detect controlled vs uncontrolled mode
2388
- const isControlled = Object.prototype.hasOwnProperty.call(props, 'checked') && typeof controlledChecked !== 'undefined';
2389
- const [checked, setChecked] = React.useState(!!controlledChecked);
2390
- const inputRef = React.useRef(null);
2391
- // Keep internal state in sync when controlled
2392
- React.useEffect(() => {
2393
- if (isControlled) setChecked(!!controlledChecked);
2394
- }, [controlledChecked, isControlled]);
2395
- // Apply native indeterminate for partial state
2374
+ const Checkbox = ({
2375
+ id,
2376
+ name,
2377
+ label,
2378
+ disabled = false,
2379
+ checked: initialChecked = false,
2380
+ partial = false,
2381
+ onChange,
2382
+ variant,
2383
+ isDefaultHover = false,
2384
+ labelFontSize = 12
2385
+ }) => {
2386
+ const [checked, setChecked] = React.useState(initialChecked);
2396
2387
  React.useEffect(() => {
2397
- if (inputRef.current) {
2398
- inputRef.current.indeterminate = partial && !checked;
2399
- }
2400
- }, [partial, checked]);
2401
- // Stop the grid/excel selection from hijacking events
2402
- const stopAllCapture = e => {
2403
- e.stopPropagation();
2404
- if (e.nativeEvent?.stopImmediatePropagation) {
2405
- // prevents other React and non-React listeners from firing
2406
- e.nativeEvent.stopImmediatePropagation();
2407
- }
2408
- };
2409
- const handleChange = e => {
2410
- if (!isControlled) {
2411
- setChecked(e.target.checked); // keep UI responsive even if parent doesn't update
2412
- }
2413
- onChange?.(e); // still notify parent
2414
- };
2388
+ setChecked(initialChecked);
2389
+ }, [initialChecked]);
2415
2390
  return jsxRuntime.jsxs("label", {
2416
2391
  className: "ff-checkbox--overlay",
2417
2392
  htmlFor: id,
2418
- // Shield at capture phase so document/grid listeners don't see these
2419
- onPointerDownCapture: stopAllCapture,
2420
- onMouseDownCapture: stopAllCapture,
2421
- onClickCapture: stopAllCapture,
2422
- // Small z-index bump helps if a low z-index overlay exists
2423
- style: {
2424
- position: 'relative',
2425
- zIndex: 2
2426
- },
2427
- "data-ff-checkbox-root": true,
2428
2393
  children: [jsxRuntime.jsx("input", {
2429
- ref: inputRef,
2430
2394
  type: "checkbox",
2431
2395
  className: "ff-checkbox-input",
2432
2396
  id: id,
2433
2397
  name: name,
2434
- checked: !!checked,
2435
- onChange: handleChange,
2436
- disabled: disabled,
2437
- "aria-checked": partial ? 'mixed' : checked,
2438
- "aria-disabled": disabled,
2439
- // Also shield on the input itself
2440
- onPointerDownCapture: stopAllCapture,
2441
- onMouseDownCapture: stopAllCapture,
2442
- onClickCapture: stopAllCapture
2398
+ checked: checked,
2399
+ onChange: onChange,
2400
+ disabled: disabled
2443
2401
  }), jsxRuntime.jsx("span", {
2444
2402
  className: classNames('ff-checkbox-custom', {
2445
2403
  'ff-checkbox-checked': checked,
@@ -3757,6 +3715,7 @@ const Input$1 = /*#__PURE__*/React.forwardRef(({
3757
3715
  disableAfterMaxValueReached = false,
3758
3716
  pattern,
3759
3717
  background,
3718
+ helperTextWidth,
3760
3719
  ...props
3761
3720
  }, ref) => {
3762
3721
  const isValueFilled = !checkEmpty(value) || type === 'password' && value?.length > 0;
@@ -3990,10 +3949,13 @@ const Input$1 = /*#__PURE__*/React.forwardRef(({
3990
3949
  }),
3991
3950
  children: (displayErrorImmediately || touched) && (error || isHelperTextRequired) ? helperText : ''
3992
3951
  }), !reserveHelperTextSpace && (displayErrorImmediately || touched) && helperText && (error || isHelperTextRequired) && jsxRuntime.jsx("span", {
3993
- className: classNames('ff-input-message', {
3952
+ className: classNames(helperTextWidth ? 'ff-input-width' : 'ff-input-message', {
3994
3953
  'ff-input-message--showHelperText': !!isHelperTextRequired,
3995
3954
  'ff-input-message--danger': !!error
3996
3955
  }),
3956
+ style: {
3957
+ width: typeof helperTextWidth === 'number' ? `${helperTextWidth}px` : helperTextWidth || ''
3958
+ },
3997
3959
  children: helperText
3998
3960
  })]
3999
3961
  })
@@ -6952,7 +6914,8 @@ const OptionCard = ({
6952
6914
  dropdownPlacement,
6953
6915
  variant,
6954
6916
  isAddResourceButton,
6955
- alignOption
6917
+ alignOption,
6918
+ ownerId
6956
6919
  }) => {
6957
6920
  const themeContext = React.useContext(ThemeContext);
6958
6921
  const currentTheme = themeContext?.currentTheme;
@@ -6973,6 +6936,7 @@ const OptionCard = ({
6973
6936
  }, {
6974
6937
  'ff-option-card--default': variant === 'default'
6975
6938
  }, currentTheme),
6939
+ "data-owner-id": ownerId,
6976
6940
  style: {
6977
6941
  ...style,
6978
6942
  zIndex,
@@ -7010,9 +6974,12 @@ const MenuOption = ({
7010
6974
  isAddResourceButton,
7011
6975
  disabled,
7012
6976
  alignOption = 'left',
7013
- displayCard = true
6977
+ displayCard = true,
6978
+ didMouseEntered,
6979
+ tableMenu = false
7014
6980
  }) => {
7015
6981
  const [isClicked, setIsClicked] = React.useState(false);
6982
+ const [isHovered, setIsHovered] = React.useState(false);
7016
6983
  const menuRef = React.useRef(null);
7017
6984
  const menuIconRef = React.useRef(null);
7018
6985
  const [menuPosition, setMenuPosition] = React.useState({
@@ -7022,19 +6989,19 @@ const MenuOption = ({
7022
6989
  right: 0,
7023
6990
  width: 0
7024
6991
  });
6992
+ const getTargetElement = React.useCallback(() => {
6993
+ if (!targetRef) return null;
6994
+ return typeof targetRef === 'string' ? document.getElementById(targetRef) : getAnchorElement(targetRef);
6995
+ }, [targetRef]);
7025
6996
  const closeDropDown = () => setIsClicked(false);
7026
6997
  React.useEffect(() => {
7027
- if (targetRef && !checkEmpty(options)) {
7028
- const parentDom = getAnchorElement(targetRef);
7029
- parentDom?.classList.toggle('menu-hover-active', isClicked);
7030
- }
6998
+ const targetElement = getTargetElement();
6999
+ if (!targetElement || checkEmpty(options)) return;
7000
+ targetElement.classList.toggle('menu-hover-active', isHovered || isClicked);
7031
7001
  return () => {
7032
- if (targetRef) {
7033
- const parentDom = getAnchorElement(targetRef);
7034
- parentDom?.classList.remove('menu-hover-active');
7035
- }
7002
+ targetElement.classList.remove('menu-hover-active');
7036
7003
  };
7037
- }, [isClicked, targetRef, options]);
7004
+ }, [isHovered, isClicked, targetRef, options, getTargetElement]);
7038
7005
  const getScrollableParent = element => {
7039
7006
  if (!element) return null;
7040
7007
  let parent = element.parentElement;
@@ -7073,6 +7040,9 @@ const MenuOption = ({
7073
7040
  }, []);
7074
7041
  const onIconClickHandler = () => {
7075
7042
  if (disabled) return;
7043
+ if (didMouseEntered) {
7044
+ didMouseEntered();
7045
+ }
7076
7046
  onClick();
7077
7047
  calculateDims();
7078
7048
  setIsClicked(prev => !prev);
@@ -7110,6 +7080,8 @@ const MenuOption = ({
7110
7080
  }),
7111
7081
  ref: menuIconRef,
7112
7082
  onClick: onIconClickHandler,
7083
+ onMouseEnter: () => tableMenu && !disabled && setIsHovered(true),
7084
+ onMouseLeave: () => tableMenu && setIsHovered(false),
7113
7085
  style: {
7114
7086
  width: `${iconButtonSize}px`,
7115
7087
  height: `${iconButtonSize}px`,
@@ -7137,7 +7109,8 @@ const MenuOption = ({
7137
7109
  dropdownPlacement: dropdownPlacement,
7138
7110
  variant: optionCardVariant,
7139
7111
  isAddResourceButton: isAddResourceButton,
7140
- alignOption: alignOption
7112
+ alignOption: alignOption,
7113
+ ownerId: typeof targetRef !== 'string' && targetRef?.current?.id || treeRowRef?.current?.id
7141
7114
  })]
7142
7115
  });
7143
7116
  };
@@ -34716,7 +34689,7 @@ const MachineInputField = ({
34716
34689
  const getIcon = {
34717
34690
  local: 'local',
34718
34691
  browserstack: 'browserstack_icon',
34719
- saucelabs: 'sause_lab',
34692
+ saucelabs: 'sause_lab_icon',
34720
34693
  lambdatest: 'lambda_icon',
34721
34694
  mac: 'mac_icon',
34722
34695
  mac_icon: 'mac_icon',
@@ -36228,15 +36201,17 @@ function addRowBottom(row) {
36228
36201
  row
36229
36202
  };
36230
36203
  }
36231
- function addColumnLeft(column) {
36204
+ function addColumnLeft(columnWidth, column) {
36232
36205
  return {
36233
36206
  type: ADD_COLUMN_LEFT,
36207
+ columnWidth,
36234
36208
  column
36235
36209
  };
36236
36210
  }
36237
- function addColumnRight(column) {
36211
+ function addColumnRight(columnWidth, column) {
36238
36212
  return {
36239
36213
  type: ADD_COLUMN_RIGHT,
36214
+ columnWidth,
36240
36215
  column
36241
36216
  };
36242
36217
  }
@@ -37075,20 +37050,16 @@ function deleteColumnDimension(columns, deleteIndex) {
37075
37050
  return updated;
37076
37051
  }
37077
37052
  /** Get the dimensions of cell at point from state */
37078
- function getCellDimensions(point, rowDimensions, columnDimensions, visibleRange) {
37053
+ function getCellDimensions(point, rowDimensions, columnDimensions) {
37079
37054
  const DEFAULT_ROW_HEIGHT = 32;
37080
- const DEFAULT_COLUMN_WIDTH = 100;
37081
- const HEADER_HEIGHT = 32;
37082
- const ROW_INDICATOR_WIDTH = 60;
37055
+ const DEFAULT_COLUMN_WIDTH = 100; // Use your minimumColumnWidth or a default value; adjust based on props if needed
37056
+ const HEADER_HEIGHT = 32; // Adjust based on your header row height (e.g., from CSS or measured)
37057
+ const ROW_INDICATOR_WIDTH = 60; // From your RowIndicator minWidth style
37083
37058
  let top = HEADER_HEIGHT;
37084
37059
  for (let r = 0; r < point.row; r++) {
37085
37060
  top += (rowDimensions?.[r] ? rowDimensions?.[r]?.height : DEFAULT_ROW_HEIGHT) || DEFAULT_ROW_HEIGHT;
37086
37061
  }
37087
37062
  const height = (rowDimensions?.[point.row] ? rowDimensions?.[point.row]?.height : DEFAULT_ROW_HEIGHT) || DEFAULT_ROW_HEIGHT;
37088
- if (visibleRange && rowDimensions && rowDimensions[visibleRange.start]) {
37089
- const visibleTop = rowDimensions[visibleRange.start]?.top || HEADER_HEIGHT;
37090
- top = top - visibleTop + HEADER_HEIGHT;
37091
- }
37092
37063
  let left = ROW_INDICATOR_WIDTH;
37093
37064
  for (let c = 0; c < point.column; c++) {
37094
37065
  left += (columnDimensions?.[c] ? columnDimensions?.[c]?.width : DEFAULT_COLUMN_WIDTH) || DEFAULT_COLUMN_WIDTH;
@@ -37102,20 +37073,16 @@ function getCellDimensions(point, rowDimensions, columnDimensions, visibleRange)
37102
37073
  };
37103
37074
  }
37104
37075
  /** Get the dimensions of customized cell at point from state */
37105
- function getScrollCellDimensions(point, rowDimensions, columnDimensions, visibleRange) {
37076
+ function getScrollCellDimensions(point, rowDimensions, columnDimensions) {
37106
37077
  const DEFAULT_ROW_HEIGHT = 32;
37107
- const DEFAULT_COLUMN_WIDTH = 100;
37108
- const HEADER_HEIGHT = 32;
37078
+ const DEFAULT_COLUMN_WIDTH = 100; // Use your minimumColumnWidth or a default value
37079
+ const HEADER_HEIGHT = 32; // Adjust as needed
37109
37080
  const ROW_INDICATOR_WIDTH = 60;
37110
- let top = HEADER_HEIGHT;
37081
+ let top = HEADER_HEIGHT + 4000; // Preserve your fixed top for scrolling, but add header offset
37111
37082
  for (let r = 0; r < point.row; r++) {
37112
37083
  top += (rowDimensions?.[r] ? rowDimensions?.[r]?.height : DEFAULT_ROW_HEIGHT) || DEFAULT_ROW_HEIGHT;
37113
37084
  }
37114
37085
  const height = (rowDimensions?.[point.row] ? rowDimensions?.[point.row]?.height : DEFAULT_ROW_HEIGHT) || DEFAULT_ROW_HEIGHT;
37115
- if (visibleRange && rowDimensions && rowDimensions[visibleRange.start]) {
37116
- const visibleTop = rowDimensions[visibleRange.start]?.top || HEADER_HEIGHT;
37117
- top = top - visibleTop + HEADER_HEIGHT;
37118
- }
37119
37086
  let left = ROW_INDICATOR_WIDTH;
37120
37087
  for (let c = 0; c < point.column; c++) {
37121
37088
  left += (columnDimensions?.[c] ? columnDimensions?.[c]?.width : DEFAULT_COLUMN_WIDTH) || DEFAULT_COLUMN_WIDTH;
@@ -37139,24 +37106,14 @@ function getRangeDimensions(rowDimensions, columnDimensions, range) {
37139
37106
  width: endDimensions.left + endDimensions.width - startDimensions.left,
37140
37107
  height: endDimensions.top + endDimensions.height - startDimensions.top,
37141
37108
  top: startDimensions.top + 1,
37142
- left: startDimensions.left + 1
37109
+ // Note: +1 Because of Active cell width is 2px
37110
+ left: startDimensions.left + 1 // Note: +1 Because of Active cell width is 2px
37143
37111
  };
37144
37112
  }
37145
37113
  /** Get the dimensions of selected */
37146
- function getSelectedDimensions(rowDimensions, columnDimensions, data, selected, visibleRange) {
37114
+ function getSelectedDimensions(rowDimensions, columnDimensions, data, selected) {
37147
37115
  const range = selected.toRange(data);
37148
- if (!range) return undefined;
37149
- let startDimensions = getCellDimensions(range.start, rowDimensions, columnDimensions, visibleRange);
37150
- let endDimensions = getCellDimensions(range.end, rowDimensions, columnDimensions, visibleRange);
37151
- if (endDimensions === undefined) {
37152
- endDimensions = getScrollCellDimensions(range.end, rowDimensions, columnDimensions, visibleRange);
37153
- }
37154
- return startDimensions && endDimensions && {
37155
- width: endDimensions.left + endDimensions.width - startDimensions.left,
37156
- height: endDimensions.top + endDimensions.height - startDimensions.top,
37157
- top: startDimensions.top + 1,
37158
- left: startDimensions.left + 1
37159
- };
37116
+ return range ? getRangeDimensions(rowDimensions, columnDimensions, range) : undefined;
37160
37117
  }
37161
37118
  /** Get given data as CSV */
37162
37119
  function getCSV(data) {
@@ -38151,7 +38108,7 @@ function dragEndFormatePainter(currentData, selectedRange, formattedStyle) {
38151
38108
  }
38152
38109
  return updatedData;
38153
38110
  }
38154
- function dragEndAutoFill(currentData, selectedRange, cellValue, activeCell) {
38111
+ function dragEndAutoFill(currentData, selectedRange, cellValue, activeCell, control) {
38155
38112
  if (!selectedRange) {
38156
38113
  return currentData;
38157
38114
  }
@@ -38189,6 +38146,8 @@ function dragEndAutoFill(currentData, selectedRange, cellValue, activeCell) {
38189
38146
  };
38190
38147
  }
38191
38148
  let updatedData = currentData;
38149
+ const matches = [...cellValue.value.matchAll(/(\d+)/g)];
38150
+ const hasNumbers = matches.length > 0;
38192
38151
  for (let row = startPoint.row; row <= endPoint.row; row++) {
38193
38152
  for (let col = startPoint.column; col <= endPoint.column; col++) {
38194
38153
  const currentCell = get$1({
@@ -38198,10 +38157,20 @@ function dragEndAutoFill(currentData, selectedRange, cellValue, activeCell) {
38198
38157
  if (!currentCell || currentCell.readOnly || ['file'].includes(currentCell?.inputType?.type || '')) {
38199
38158
  continue;
38200
38159
  }
38160
+ let newValue = cellValue.value;
38161
+ if (!control && hasNumbers) {
38162
+ const step = (row - startPoint.row) * (endPoint.column - startPoint.column + 1) + (col - startPoint.column);
38163
+ let index = 0;
38164
+ newValue = newValue.replace(/(\d+)/g, () => {
38165
+ const originalNum = parseInt(matches[index][0], 10);
38166
+ index++;
38167
+ return (originalNum + step).toString();
38168
+ });
38169
+ }
38201
38170
  const updatedCell = {
38202
38171
  ...currentCell,
38203
38172
  style: cellValue.style,
38204
- value: cellValue.value,
38173
+ value: newValue,
38205
38174
  inputType: cellValue.inputType
38206
38175
  };
38207
38176
  updatedData = set$1({
@@ -38542,7 +38511,8 @@ const INITIAL_STATE = {
38542
38511
  open: false,
38543
38512
  style: undefined
38544
38513
  },
38545
- editable: false
38514
+ editable: false,
38515
+ ctrl: true
38546
38516
  };
38547
38517
  function reducer(state, action) {
38548
38518
  switch (action.type) {
@@ -38640,7 +38610,8 @@ function reducer(state, action) {
38640
38610
  columnDimensions
38641
38611
  } = state;
38642
38612
  const {
38643
- column
38613
+ column,
38614
+ columnWidth = 100
38644
38615
  } = action;
38645
38616
  if (checkEmpty(column ?? selectedColumn)) {
38646
38617
  return state;
@@ -38656,7 +38627,7 @@ function reducer(state, action) {
38656
38627
  model: updatedModel,
38657
38628
  selectedRow: selectedRow,
38658
38629
  selectedColumn: insertIndex,
38659
- columnDimensions: insertColumnDimension(columnDimensions, insertIndex, 150)
38630
+ columnDimensions: insertColumnDimension(columnDimensions, insertIndex, columnWidth)
38660
38631
  };
38661
38632
  }
38662
38633
  case ADD_COLUMN_RIGHT:
@@ -38668,7 +38639,8 @@ function reducer(state, action) {
38668
38639
  columnDimensions
38669
38640
  } = state;
38670
38641
  const {
38671
- column
38642
+ column,
38643
+ columnWidth = 100
38672
38644
  } = action;
38673
38645
  if (checkEmpty(column ?? selectedColumn)) {
38674
38646
  return state;
@@ -38684,7 +38656,7 @@ function reducer(state, action) {
38684
38656
  model: updatedModel,
38685
38657
  selectedRow: selectedRow,
38686
38658
  selectedColumn: (column ?? selectedColumn) + 1,
38687
- columnDimensions: insertColumnDimension(columnDimensions, (column ?? selectedColumn) + 1, 150)
38659
+ columnDimensions: insertColumnDimension(columnDimensions, (column ?? selectedColumn) + 1, columnWidth)
38688
38660
  };
38689
38661
  }
38690
38662
  case DELETE_ROW:
@@ -39195,6 +39167,12 @@ function reducer(state, action) {
39195
39167
  const {
39196
39168
  event
39197
39169
  } = action.payload;
39170
+ if (event.ctrlKey) {
39171
+ return {
39172
+ ...state,
39173
+ ctrl: !state.ctrl
39174
+ };
39175
+ }
39198
39176
  if (isActiveReadOnly(state) || event.metaKey || !state.editable) {
39199
39177
  return state;
39200
39178
  }
@@ -39281,7 +39259,7 @@ function reducer(state, action) {
39281
39259
  updatedData = dragEndFormatePainter(state.model.data, selectedRange, state.formattedStyle);
39282
39260
  }
39283
39261
  if (state.autoFill.open && state.editable && selectedRange) {
39284
- updatedData = dragEndAutoFill(state.model.data, selectedRange, state.autoFill.cellValue, activeCell);
39262
+ updatedData = dragEndAutoFill(state.model.data, selectedRange, state.autoFill.cellValue, activeCell, state.ctrl);
39285
39263
  let {
39286
39264
  start,
39287
39265
  end
@@ -40711,17 +40689,17 @@ const ColumnIndicator = ({
40711
40689
  }) => {
40712
40690
  const dispatch = useDispatch();
40713
40691
  const minColumnWidth = minimumColumnWidth;
40692
+ const columnWidth = useSelector(state => state.columnDimensions[column]?.width || minColumnWidth);
40714
40693
  const matrixData = useSelector(state => state.model.data);
40715
40694
  const {
40716
40695
  columnCount
40717
40696
  } = getMatrixDimensions(matrixData);
40718
- const columnWidth = useSelector(state => matrixData?.[0]?.[column]?.style?.width ?? (state.columnDimensions[column]?.width || minColumnWidth));
40719
40697
  const options = React.useMemo(() => {
40720
40698
  return [{
40721
40699
  label: 'Add Column Left',
40722
40700
  value: 'Add Column Left',
40723
40701
  iconName: 'plus_icon',
40724
- action: () => addColumnLeft(),
40702
+ action: () => addColumnLeft(minColumnWidth),
40725
40703
  disableTooltip: 'Column limit reached',
40726
40704
  visible: cell?.contextDisable?.['Add Column Left'] ?? false,
40727
40705
  disable: columnCount >= maxColLimit
@@ -40729,7 +40707,7 @@ const ColumnIndicator = ({
40729
40707
  label: 'Add Column Right',
40730
40708
  value: 'Add Column Right',
40731
40709
  iconName: 'plus_icon',
40732
- action: () => addColumnRight(),
40710
+ action: () => addColumnRight(minColumnWidth),
40733
40711
  disableTooltip: 'Column limit reached',
40734
40712
  visible: cell?.contextDisable?.['Add Column Right'] ?? false,
40735
40713
  disable: columnCount >= maxColLimit
@@ -40748,7 +40726,7 @@ const ColumnIndicator = ({
40748
40726
  const targetColumn = Math.max(getTargetColumn, 0);
40749
40727
  onSelect(targetColumn, event.shiftKey);
40750
40728
  const startX = event.clientX;
40751
- const initialWidth = Number(columnWidth);
40729
+ const initialWidth = columnWidth;
40752
40730
  const onMouseMove = moveEvent => {
40753
40731
  const newWidth = Math.max(minColumnWidth, initialWidth + (moveEvent.clientX - startX));
40754
40732
  dispatch(setColumnPosition(targetColumn, newWidth));
@@ -40783,7 +40761,6 @@ const ColumnIndicator = ({
40783
40761
  options
40784
40762
  }));
40785
40763
  }
40786
- document.body.style.pointerEvents = 'auto';
40787
40764
  }, [column, selectedColumn, columnContextEnable, options, contextMenu?.contextType]);
40788
40765
  return jsxRuntime.jsxs("th", {
40789
40766
  className: classNames('ff-spreadsheet-header', {
@@ -40858,7 +40835,8 @@ const RowIndicator = ({
40858
40835
  cell,
40859
40836
  maxRowLimit,
40860
40837
  disableDeleteOption,
40861
- contextMenu
40838
+ contextMenu,
40839
+ setVisibleRange
40862
40840
  }) => {
40863
40841
  const dispatch = useDispatch();
40864
40842
  const rowHeight = useSelector(state => state.rowDimensions[row]?.height || 32);
@@ -40866,12 +40844,21 @@ const RowIndicator = ({
40866
40844
  const {
40867
40845
  rowCount
40868
40846
  } = getMatrixDimensions(matrixData);
40847
+ const updateVisibleRangeEnd = action => {
40848
+ setVisibleRange(prev => ({
40849
+ ...prev,
40850
+ end: action === 'increment' ? prev.end + 1 : prev.end - 1
40851
+ }));
40852
+ };
40869
40853
  const options = React__namespace.useMemo(() => {
40870
40854
  return [{
40871
40855
  label: 'Add Row Top',
40872
40856
  value: 'Add Row Top',
40873
40857
  iconName: 'plus_icon',
40874
- action: () => addRowTop(),
40858
+ action: () => {
40859
+ updateVisibleRangeEnd('increment');
40860
+ addRowTop();
40861
+ },
40875
40862
  disableTooltip: 'Row limit reached',
40876
40863
  visible: cell?.contextDisable?.['Add Row Top'] ?? false,
40877
40864
  disable: rowCount >= maxRowLimit
@@ -40879,7 +40866,10 @@ const RowIndicator = ({
40879
40866
  label: 'Add Row Bottom',
40880
40867
  value: 'Add Row Bottom',
40881
40868
  iconName: 'plus_icon',
40882
- action: () => addRowBottom(),
40869
+ action: () => {
40870
+ updateVisibleRangeEnd('increment');
40871
+ addRowBottom();
40872
+ },
40883
40873
  disableTooltip: 'Row limit reached',
40884
40874
  visible: cell?.contextDisable?.['Add Row Bottom'] ?? false,
40885
40875
  disable: rowCount >= maxRowLimit
@@ -40887,7 +40877,10 @@ const RowIndicator = ({
40887
40877
  label: 'Delete Row',
40888
40878
  value: 'Delete Row',
40889
40879
  iconName: 'delete',
40890
- action: () => deleteRow(),
40880
+ action: () => {
40881
+ updateVisibleRangeEnd('decrement');
40882
+ deleteRow();
40883
+ },
40891
40884
  disableTooltip: '',
40892
40885
  visible: cell?.contextDisable?.['Delete Row'] ?? false,
40893
40886
  disable: false
@@ -40933,7 +40926,6 @@ const RowIndicator = ({
40933
40926
  options
40934
40927
  }));
40935
40928
  }
40936
- document.body.style.pointerEvents = 'auto';
40937
40929
  }, [row, rowContextEnable, options, selectedRow, contextMenu?.contextType]);
40938
40930
  return jsxRuntime.jsxs("th", {
40939
40931
  className: classNames('ff-spreadsheet-header', {
@@ -41176,9 +41168,7 @@ const DataEditor = ({
41176
41168
  children: jsxRuntime.jsx("textarea", {
41177
41169
  className: "ff-spreadsheet-cell-textarea",
41178
41170
  style: {
41179
- ...cell?.style,
41180
- width: '100%',
41181
- height: '100%'
41171
+ ...cell?.style
41182
41172
  },
41183
41173
  ref: inputRef,
41184
41174
  onChange: handleChange,
@@ -41200,20 +41190,36 @@ const ActiveCell = props => {
41200
41190
  const view = React__namespace.useCallback(() => {
41201
41191
  dispatch(view$1());
41202
41192
  }, [dispatch]);
41193
+ const rowDimensions = useSelector(state => state.rowDimensions);
41203
41194
  const active = useSelector(state => state.active);
41204
41195
  const mode = useSelector(state => state.mode);
41205
41196
  const cell = useSelector(state => state.active ? get$1(state.active, state.model.data) : undefined);
41206
41197
  const dimensions = useSelector(state => {
41207
- let dimensionValue = active ? getCellDimensions(active, state.rowDimensions, state.columnDimensions, props.visibleRange) : undefined;
41198
+ let dimensionValue = active ? getCellDimensions(active, state.rowDimensions, state.columnDimensions) : undefined;
41208
41199
  dimensionValue = {
41209
- top: dimensionValue?.top ? dimensionValue?.top + 1 : 0,
41210
- height: dimensionValue?.height ? dimensionValue?.height - 2 : 0,
41211
- left: dimensionValue?.left ? dimensionValue?.left + 1 : 0,
41200
+ top: dimensionValue?.top ? dimensionValue?.top : 0,
41201
+ height: dimensionValue?.height ? dimensionValue?.height : 0,
41202
+ left: dimensionValue?.left ? dimensionValue?.left : 0,
41212
41203
  // Note: +1 Because of Active cell width is 2px
41213
- width: dimensionValue?.width ? dimensionValue?.width - 2 : 0
41204
+ width: dimensionValue?.width ? dimensionValue?.width : 0
41214
41205
  };
41215
41206
  return dimensionValue;
41216
41207
  });
41208
+ const offset = React__namespace.useMemo(() => {
41209
+ let sum = 0;
41210
+ const DEFAULT_ROW_HEIGHT = 32;
41211
+ for (let r = 0; r < props.visibleRange.start; r++) {
41212
+ sum += rowDimensions[r]?.height || DEFAULT_ROW_HEIGHT;
41213
+ }
41214
+ return sum;
41215
+ }, [rowDimensions, props.visibleRange.start]);
41216
+ const adjustedDimensions = React__namespace.useMemo(() => {
41217
+ if (!dimensions) return undefined;
41218
+ return {
41219
+ ...dimensions,
41220
+ top: dimensions.top - offset
41221
+ };
41222
+ }, [dimensions, offset]);
41217
41223
  const hidden = React__namespace.useMemo(() => !active || !dimensions, [active, dimensions]);
41218
41224
  const initialCellRef = React__namespace.useRef(undefined);
41219
41225
  const prevActiveRef = React__namespace.useRef(null);
@@ -41574,7 +41580,7 @@ const ActiveCell = props => {
41574
41580
  return jsxRuntime.jsxs("div", {
41575
41581
  ref: rootRef,
41576
41582
  className: classNames('ff-spreadsheet-active-cell', `ff-spreadsheet-active-cell--${mode}`),
41577
- style: dimensions,
41583
+ style: adjustedDimensions,
41578
41584
  onContextMenu: contextClick,
41579
41585
  onClick: mode === 'view' && !readOnly ? edit : undefined,
41580
41586
  tabIndex: 0,
@@ -41627,8 +41633,6 @@ const ActiveCell = props => {
41627
41633
  className: "ff-spreadsheet-cell-textarea",
41628
41634
  style: {
41629
41635
  ...cell?.style,
41630
- height: '100%',
41631
- width: '100%',
41632
41636
  textDecoration: 'normal',
41633
41637
  borderTop: '',
41634
41638
  borderBottom: '',
@@ -41679,8 +41683,8 @@ const FloatingRect = ({
41679
41683
  'ff-spreadsheet-floating-rect--hidden': hidden
41680
41684
  }),
41681
41685
  style: {
41682
- width: adjustedWidth ? adjustedWidth - 2 : 0,
41683
- height: adjustedHeight ? adjustedHeight - 2 : 0,
41686
+ width: (adjustedWidth ?? 0) + 1,
41687
+ height: (adjustedHeight ?? 0) + 1,
41684
41688
  top,
41685
41689
  left
41686
41690
  }
@@ -41691,14 +41695,33 @@ const Selected = ({
41691
41695
  visibleRange
41692
41696
  }) => {
41693
41697
  const selected = useSelector(state => state.selected);
41694
- const dimensions = useSelector(state => {
41695
- return selected && getSelectedDimensions(state.rowDimensions, state.columnDimensions, state.model.data, state.selected, visibleRange);
41696
- });
41698
+ const rowDimensions = useSelector(state => state.rowDimensions);
41697
41699
  const dragging = useSelector(state => state.dragging);
41698
41700
  const hidden = useSelector(state => state.selected.size(state.model.data) < 2);
41701
+ const dimensions = useSelector(state => {
41702
+ return selected && getSelectedDimensions(state.rowDimensions, state.columnDimensions, state.model.data, state.selected);
41703
+ });
41704
+ const offset = React__namespace.useMemo(() => {
41705
+ let sum = 0;
41706
+ const DEFAULT_ROW_HEIGHT = 32;
41707
+ for (let r = 0; r < visibleRange.start; r++) {
41708
+ sum += rowDimensions[r]?.height || DEFAULT_ROW_HEIGHT;
41709
+ }
41710
+ return sum;
41711
+ }, [rowDimensions, visibleRange.start]);
41712
+ const adjustedDimensions = React__namespace.useMemo(() => {
41713
+ if (!dimensions) return undefined;
41714
+ return {
41715
+ ...dimensions,
41716
+ top: dimensions.top - offset - 1,
41717
+ left: dimensions.left - 1,
41718
+ height: dimensions.height + 2,
41719
+ width: dimensions.width + 2
41720
+ };
41721
+ }, [dimensions, offset]);
41699
41722
  return jsxRuntime.jsx(FloatingRect, {
41700
41723
  variant: "selected",
41701
- dimensions: dimensions,
41724
+ dimensions: adjustedDimensions,
41702
41725
  dragging: dragging,
41703
41726
  hidden: hidden
41704
41727
  });
@@ -41823,9 +41846,7 @@ function convertStyleToFrontend(backendStyle) {
41823
41846
  borderRight: borderRight,
41824
41847
  borderBottom: borderBottom,
41825
41848
  borderLeft: borderLeft,
41826
- textAlign: getTextAlignment(backendStyle.alignment.horizontal),
41827
- height: backendStyle.height ?? 32,
41828
- width: backendStyle.width ?? 150
41849
+ textAlign: getTextAlignment(backendStyle.alignment.horizontal)
41829
41850
  };
41830
41851
  }
41831
41852
  const getBorderStyle = border => {
@@ -41861,9 +41882,7 @@ const convertStyleToBackend = frontendStyle => {
41861
41882
  horizontal: getTextAlignmentBack(frontendStyle.textAlign),
41862
41883
  vertical: 'BOTTOM',
41863
41884
  wrapText: false
41864
- },
41865
- width: frontendStyle.width || 150,
41866
- height: frontendStyle.height || 32
41885
+ }
41867
41886
  };
41868
41887
  };
41869
41888
 
@@ -42355,19 +42374,6 @@ const Spreadsheet = props => {
42355
42374
  }
42356
42375
  prevEvaluatedDataRef.current = state.model.evaluatedData;
42357
42376
  }, [state?.model?.evaluatedData, onEvaluatedDataChange]);
42358
- React__namespace.useEffect(() => {
42359
- if (size.rows < 100) {
42360
- setVisibleRange({
42361
- start: 0,
42362
- end: size.rows
42363
- });
42364
- } else {
42365
- setVisibleRange({
42366
- start: 0,
42367
- end: 100
42368
- });
42369
- }
42370
- }, [sheetChange, size.rows]);
42371
42377
  const prevSelectedRef = React__namespace.useRef(state.selected);
42372
42378
  React__namespace.useEffect(() => {
42373
42379
  if (!state.selected.equals(prevSelectedRef.current)) {
@@ -42393,7 +42399,7 @@ const Spreadsheet = props => {
42393
42399
  setData$1(props.data);
42394
42400
  }
42395
42401
  prevDataPropRef.current = props.data;
42396
- }, [props.data, setData$1]);
42402
+ }, [props.data, setData$1, editable$1]);
42397
42403
  const prevCreateFormulaParserPropRef = React__namespace.useRef(props.createFormulaParser);
42398
42404
  React__namespace.useEffect(() => {
42399
42405
  if (props.createFormulaParser !== prevCreateFormulaParserPropRef.current && props.createFormulaParser) setCreateFormulaParser$1(props.createFormulaParser);
@@ -42481,7 +42487,7 @@ const Spreadsheet = props => {
42481
42487
  const Cell$1 = React__namespace.useMemo(() => {
42482
42488
  // @ts-ignore
42483
42489
  return enhance(props.Cell || Cell);
42484
- }, [props.Cell, sheetChange]);
42490
+ }, [props.Cell, sheetChange, editable$1]);
42485
42491
  const CornerIndicator$1 = React__namespace.useMemo(() => enhance$3(props.CornerIndicator || CornerIndicator), [props.CornerIndicator, sheetChange]);
42486
42492
  const RowIndicator$1 = React__namespace.useMemo(() => enhance$1(props.RowIndicator || RowIndicator), [props.RowIndicator, sheetChange]);
42487
42493
  const ColumnIndicator = React__namespace.useMemo(() => enhance$2(props.ColumnIndicator || EnhancedColumnIndicator), [props.ColumnIndicator, sheetChange]);
@@ -42512,12 +42518,14 @@ const Spreadsheet = props => {
42512
42518
  end: newEnd
42513
42519
  });
42514
42520
  // Wait until next frame to scroll
42515
- requestAnimationFrame(() => {
42516
- rootRef.current?.scrollTo({
42517
- top: 1300,
42518
- behavior: 'instant'
42521
+ if (size.rows > 100) {
42522
+ requestAnimationFrame(() => {
42523
+ rootRef.current?.scrollTo({
42524
+ top: 1300,
42525
+ behavior: 'instant'
42526
+ });
42519
42527
  });
42520
- });
42528
+ }
42521
42529
  removeSelection();
42522
42530
  };
42523
42531
  const throttledHandleScroll = React__namespace.useMemo(() => throttle(e => {
@@ -42532,7 +42540,7 @@ const Spreadsheet = props => {
42532
42540
  const rowHeight = 50;
42533
42541
  const totalScroll = Math.ceil((size.rows - visibleRows) / rowHeight);
42534
42542
  const dynamicScroll = scrollHeight - offsetHeight;
42535
- if (size.rows < 100) {
42543
+ if (size.rows < visibleRows) {
42536
42544
  updateVisibleRange(0, size.rows, 0);
42537
42545
  setScrollCount(0);
42538
42546
  } else if (scrollTop === 0 && scrollCount !== 0) {
@@ -42611,7 +42619,8 @@ const Spreadsheet = props => {
42611
42619
  rowContextEnable: props.rowContextEnable,
42612
42620
  maxRowLimit: maxRowLimit,
42613
42621
  disableDeleteOption: disableDeleteOption,
42614
- contextMenu: contextMenu
42622
+ contextMenu: contextMenu,
42623
+ setVisibleRange: setVisibleRange
42615
42624
  }, rowNumber) : jsxRuntime.jsx(RowIndicator$1, {
42616
42625
  row: rowNumber,
42617
42626
  addRowTop: addRowTop$1,
@@ -42621,7 +42630,8 @@ const Spreadsheet = props => {
42621
42630
  rowContextEnable: props.rowContextEnable,
42622
42631
  maxRowLimit: maxRowLimit,
42623
42632
  disableDeleteOption: disableDeleteOption,
42624
- contextMenu: contextMenu
42633
+ contextMenu: contextMenu,
42634
+ setVisibleRange: setVisibleRange
42625
42635
  }, rowNumber), range(size.columns).map(columnNumber => jsxRuntime.jsx(Cell$1, {
42626
42636
  row: rowNumber,
42627
42637
  column: columnNumber,
@@ -43130,8 +43140,6 @@ const ExcelFile = ({
43130
43140
  const target = event.target;
43131
43141
  if (!(target.closest('.ff-excel-tab-list') || target.closest('.ff-excel-sheet')) || isLeftClick) {
43132
43142
  if (contextMenu.open) {
43133
- event.preventDefault();
43134
- event.stopPropagation();
43135
43143
  setContextMenu({
43136
43144
  open: false,
43137
43145
  contextType: null,
@@ -43145,6 +43153,10 @@ const ExcelFile = ({
43145
43153
  disable: false
43146
43154
  }]
43147
43155
  });
43156
+ if (!isLeftClick) {
43157
+ event.preventDefault();
43158
+ event.stopPropagation();
43159
+ }
43148
43160
  }
43149
43161
  }
43150
43162
  }, [contextMenu.open]);
@@ -43153,7 +43165,7 @@ const ExcelFile = ({
43153
43165
  document.addEventListener('click', e => handleClickOutside(e, true));
43154
43166
  return () => {
43155
43167
  document.removeEventListener('contextmenu', handleClickOutside);
43156
- document.addEventListener('click', e => handleClickOutside(e, true));
43168
+ document.removeEventListener('click', e => handleClickOutside(e, true));
43157
43169
  };
43158
43170
  }, [handleClickOutside]);
43159
43171
  const contextClick = (event, name, index) => {
@@ -43228,11 +43240,6 @@ const ExcelFile = ({
43228
43240
  y: sheetRefY + contextHeightPositioning
43229
43241
  });
43230
43242
  };
43231
- React.useEffect(() => {
43232
- return () => {
43233
- document.body.style.pointerEvents = 'auto';
43234
- };
43235
- }, []);
43236
43243
  const unsetContextPosition = e => {
43237
43244
  e.stopPropagation();
43238
43245
  if (contextMenu.open) {
@@ -46952,7 +46959,7 @@ const VariableDropdown = ({
46952
46959
  overscan: 10,
46953
46960
  fixedItemHeight: itemHeight
46954
46961
  }) : jsxRuntime.jsx("div", {
46955
- className: "ff-variable-option",
46962
+ className: "ff-variable-option ff-variable-option-no-data",
46956
46963
  children: jsxRuntime.jsx(Typography, {
46957
46964
  as: "span",
46958
46965
  fontSize: 12,
@@ -47597,7 +47604,7 @@ const OptionsDropdown$1 = ({
47597
47604
  })
47598
47605
  }, option?.id);
47599
47606
  }) : jsxRuntime.jsx("div", {
47600
- className: "ff-variable-option",
47607
+ className: "ff-variable-option no-data",
47601
47608
  children: jsxRuntime.jsx(Typography, {
47602
47609
  as: "div",
47603
47610
  children: "No Option",
@@ -47637,6 +47644,7 @@ const VariableSuggestionInputDropDown = /*#__PURE__*/React.forwardRef(({
47637
47644
  clearIcon = true,
47638
47645
  inputTitle = '',
47639
47646
  onBlur,
47647
+ helperTextWidth,
47640
47648
  ...props
47641
47649
  }, ref) => {
47642
47650
  const [showDropdown, setShowDropdown] = React.useState(false);
@@ -47800,12 +47808,12 @@ const VariableSuggestionInputDropDown = /*#__PURE__*/React.forwardRef(({
47800
47808
  children: [jsxRuntime.jsxs("div", {
47801
47809
  className: "ff-add-variable-input",
47802
47810
  ref: containerRef,
47803
- children: [jsxRuntime.jsx(Tooltip, {
47811
+ children: [jsxRuntime.jsxs(Tooltip, {
47804
47812
  title: inputTitle,
47805
47813
  style: {
47806
47814
  width: '100%'
47807
47815
  },
47808
- children: jsxRuntime.jsx(Input$1, {
47816
+ children: [jsxRuntime.jsx(Input$1, {
47809
47817
  ...props,
47810
47818
  name: "add_variable",
47811
47819
  ref: inputRef,
@@ -47830,8 +47838,18 @@ const VariableSuggestionInputDropDown = /*#__PURE__*/React.forwardRef(({
47830
47838
  helperText: helperText,
47831
47839
  error: error,
47832
47840
  required: required,
47841
+ helperTextWidth: helperTextWidth,
47833
47842
  ...formProps
47834
- })
47843
+ }), !checkEmpty(value) && showCreateVariableIcon && showAddVariableIcon && jsxRuntime.jsx("div", {
47844
+ className: "ff-create-variable-container",
47845
+ onClick: onCreateVariableClick,
47846
+ children: jsxRuntime.jsx(Typography, {
47847
+ fontWeight: "regular",
47848
+ fontSize: "10px",
47849
+ color: 'var(--brand-color)',
47850
+ children: "Create Variable"
47851
+ })
47852
+ })]
47835
47853
  }), !checkEmpty(value) && !isOnlyHash && jsxRuntime.jsx("div", {
47836
47854
  className: "ff-cancel-icon-container",
47837
47855
  children: clearIcon && jsxRuntime.jsx(Tooltip, {
@@ -47848,13 +47866,6 @@ const VariableSuggestionInputDropDown = /*#__PURE__*/React.forwardRef(({
47848
47866
  })
47849
47867
  })
47850
47868
  })]
47851
- }), !checkEmpty(value) && showCreateVariableIcon && showAddVariableIcon && jsxRuntime.jsx("div", {
47852
- className: "ff-create-variable-container",
47853
- onClick: onCreateVariableClick,
47854
- children: jsxRuntime.jsx(Tooltip, {
47855
- title: "Create as Variable",
47856
- children: "Create Variable"
47857
- })
47858
47869
  }), result?.showDropdown && isFocused && jsxRuntime.jsx(VariableDropdown, {
47859
47870
  position: "absolute",
47860
47871
  zIndex: zIndex,
@@ -65353,7 +65364,7 @@ const OptionsDropdown = ({
65353
65364
  })
65354
65365
  }, option?.id);
65355
65366
  }), filteredOptions?.length === 0 && jsxRuntime.jsx("div", {
65356
- className: "ff-variable-option",
65367
+ className: "ff-variable-option .ff-variable-option-no-data ",
65357
65368
  children: jsxRuntime.jsx(Typography, {
65358
65369
  as: "span",
65359
65370
  fontSize: 14,