pixel-priya 1.2.2 → 1.2.5

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 (71) hide show
  1. package/lib/ComponentProps/TreeNodeProps.d.ts +1 -0
  2. package/lib/StyleGuide/ColorPalette/colorPaletteList.js +10 -0
  3. package/lib/StyleGuide/ColorPalette/colorPaletteList.js.map +1 -1
  4. package/lib/assets/icons/ai_token.svg.js +6 -0
  5. package/lib/assets/icons/ai_token.svg.js.map +1 -0
  6. package/lib/components/AppHeader/AppHeader.js +1 -1
  7. package/lib/components/AppHeader/AppHeader.js.map +1 -1
  8. package/lib/components/AttachmentButton/AttachmentButton.js +1 -1
  9. package/lib/components/AttachmentButton/AttachmentButton.js.map +1 -1
  10. package/lib/components/Comments/Comments.js +1 -1
  11. package/lib/components/Comments/Comments.js.map +1 -1
  12. package/lib/components/Comments/childComment/ChildComment.js +1 -1
  13. package/lib/components/Comments/childComment/ChildComment.js.map +1 -1
  14. package/lib/components/Drawer/Drawer.js +5 -2
  15. package/lib/components/Drawer/Drawer.js.map +1 -1
  16. package/lib/components/EditLabel/EditLabel.js +2 -1
  17. package/lib/components/EditLabel/EditLabel.js.map +1 -1
  18. package/lib/components/Excel/ExcelContextMenu/ExcelContextMenu.js +3 -1
  19. package/lib/components/Excel/ExcelContextMenu/ExcelContextMenu.js.map +1 -1
  20. package/lib/components/Excel/ExcelFile/ExcelFile.js +25 -8
  21. package/lib/components/Excel/ExcelFile/ExcelFile.js.map +1 -1
  22. package/lib/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.js +8 -3
  23. package/lib/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.js.map +1 -1
  24. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.js +1 -1
  25. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.js.map +1 -1
  26. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducer.js +14 -2
  27. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducer.js.map +1 -1
  28. package/lib/components/FileDropzone/FileDropzone.js +3 -1
  29. package/lib/components/FileDropzone/FileDropzone.js.map +1 -1
  30. package/lib/components/FileDropzone/types.d.ts +2 -0
  31. package/lib/components/Icon/iconList.js +2 -0
  32. package/lib/components/Icon/iconList.js.map +1 -1
  33. package/lib/components/Input/Input.js +12 -0
  34. package/lib/components/Input/Input.js.map +1 -1
  35. package/lib/components/InputWithDropdown/InputWithDropdown.js +11 -0
  36. package/lib/components/InputWithDropdown/InputWithDropdown.js.map +1 -1
  37. package/lib/components/MachineInputField/MachineInputField.d.ts +1 -1
  38. package/lib/components/MachineInputField/MachineInputField.js +1 -2
  39. package/lib/components/MachineInputField/MachineInputField.js.map +1 -1
  40. package/lib/components/MediaViewerModal/MediaViewerModal.js +13 -7
  41. package/lib/components/MediaViewerModal/MediaViewerModal.js.map +1 -1
  42. package/lib/components/MediaViewerModal/type.d.ts +8 -2
  43. package/lib/components/NLPInput/components/NlpDropDown/NlpDropdown.js +13 -9
  44. package/lib/components/NLPInput/components/NlpDropDown/NlpDropdown.js.map +1 -1
  45. package/lib/components/NLPInput/sampleData.js +1 -1
  46. package/lib/components/NLPInput/sampleData.js.map +1 -1
  47. package/lib/components/NoDataContent/NoDataContent.js +1 -1
  48. package/lib/components/NoDataContent/NoDataContent.js.map +1 -1
  49. package/lib/components/ProgressBar/ProgressBar.js +3 -3
  50. package/lib/components/ProgressBar/ProgressBar.js.map +1 -1
  51. package/lib/components/Search/Search.js +13 -0
  52. package/lib/components/Search/Search.js.map +1 -1
  53. package/lib/components/SequentialConnectingBranch/components/Branches/Branches.js +2 -2
  54. package/lib/components/SequentialConnectingBranch/components/Branches/Branches.js.map +1 -1
  55. package/lib/components/TextArea/Textarea.js +2 -1
  56. package/lib/components/TextArea/Textarea.js.map +1 -1
  57. package/lib/hooks/useFileDropzone.js +8 -2
  58. package/lib/hooks/useFileDropzone.js.map +1 -1
  59. package/lib/index.cjs +150 -52
  60. package/lib/index.cjs.map +1 -1
  61. package/lib/index.d.ts +13 -4
  62. package/lib/node_modules/js-beautify/js/src/css/beautifier.js +1 -1
  63. package/lib/node_modules/js-beautify/js/src/html/beautifier.js +1 -1
  64. package/lib/node_modules/js-beautify/js/src/html/options.js +1 -1
  65. package/lib/node_modules/js-beautify/js/src/javascript/options.js +1 -1
  66. package/lib/styles.css +1 -1
  67. package/lib/styles.css.map +1 -1
  68. package/lib/utils/togglePrePostCondition/togglePrePostCondition.d.ts +1 -1
  69. package/lib/utils/togglePrePostCondition/togglePrePostCondition.js +3 -2
  70. package/lib/utils/togglePrePostCondition/togglePrePostCondition.js.map +1 -1
  71. package/package.json +1 -1
package/lib/index.cjs CHANGED
@@ -1040,6 +1040,8 @@ const SvgEclipsePlugin = (props) => /* @__PURE__ */ React__namespace.createEleme
1040
1040
  maskType: "alpha"
1041
1041
  }, maskUnits: "userSpaceOnUse", x: 1, y: 0, width: 15, height: 15 }, /* @__PURE__ */ React__namespace.createElement("ellipse", { cx: 8.85851, cy: 7.4927, rx: 7.14146, ry: 7.10244, fill: "currentColor" })), /* @__PURE__ */ React__namespace.createElement("g", { mask: "url(#mask0_18014_12102)" }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M15.7026 9.52209C14.8245 12.4555 12.0936 14.5952 8.85889 14.5953C5.62407 14.5953 2.89333 12.4555 2.01514 9.52209H15.7026ZM1.82959 8.74182C1.87698 9.00738 1.93895 9.26762 2.01514 9.52209H1.48291V8.74182H1.82959ZM16.312 9.52209H15.7026C15.7788 9.2677 15.8398 9.00729 15.8872 8.74182H16.312V9.52209ZM15.9888 7.88342C15.9729 8.17471 15.9373 8.46091 15.8872 8.74182H1.82959C1.77946 8.46091 1.74391 8.17471 1.72803 7.88342H15.9888ZM1.72803 7.10217C1.72098 7.23146 1.71729 7.36176 1.71729 7.4928C1.71729 7.62387 1.72098 7.7541 1.72803 7.88342H1.48291V7.10217H1.72803ZM16.312 7.88342H15.9888C15.9958 7.75409 15.9995 7.62388 15.9995 7.4928C15.9995 7.36176 15.9958 7.23146 15.9888 7.10217H16.312V7.88342ZM15.8872 6.24377C15.9373 6.52469 15.9729 6.81088 15.9888 7.10217H1.72803C1.7439 6.81089 1.77947 6.52468 1.82959 6.24377H15.8872ZM2.01514 5.4635C1.93896 5.71798 1.87697 5.97822 1.82959 6.24377H1.48291V5.4635H2.01514ZM16.312 6.24377H15.8872C15.8398 5.9783 15.7788 5.7179 15.7026 5.4635H16.312V6.24377ZM8.85889 0.390259C12.0937 0.390427 14.8246 2.53 15.7026 5.4635H2.01514C2.89326 2.52999 5.62399 0.390259 8.85889 0.390259Z", fill: "currentColor" })), /* @__PURE__ */ React__namespace.createElement("path", { d: "M15 10.7166L14.4279 10.1444L13.2834 11.2887L12.7113 10.7166L13.8556 9.57213L13.2834 9L12.139 10.1444L11.5668 9.57213L10.4221 10.7166C9.73015 11.4089 9.64444 12.477 10.1649 13.2626L9 14.4274L9.57224 15L10.7371 13.835C11.5228 14.3554 12.5911 14.2701 13.2835 13.5778L14.428 12.4335L13.8556 11.8613L15 10.7166Z", fill: "currentColor" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M15.707 10.7168L14.5625 11.8613L15.1348 12.4336L13.6367 13.9316C12.8762 14.6918 11.7535 14.8634 10.8271 14.4512L9.57227 15.707L8.29297 14.4277L9.54785 13.1719C9.13614 12.2457 9.30874 11.1234 10.0684 10.3633L11.5664 8.86523L12.1387 9.4375L13.2832 8.29297L15.707 10.7168ZM12.1387 10.1445L11.5664 9.57227L10.4219 10.7168L10.2998 10.8506C9.72199 11.5412 9.6771 12.5262 10.165 13.2627L9 14.4277L9.57227 15L10.7373 13.835C11.4739 14.3228 12.4587 14.2782 13.1494 13.7002L13.2832 13.5781L14.4277 12.4336L13.8555 11.8613L15 10.7168L14.4277 10.1445L13.2832 11.2891L12.7109 10.7168L13.8555 9.57227L13.2832 9L12.1387 10.1445Z", fill: "white" }));
1042
1042
 
1043
+ const SvgAiToken = (props) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M12 1.5C6.21 1.5 1.5 6.21 1.5 12C1.5 17.79 6.21 22.5 12 22.5C17.79 22.5 22.5 17.79 22.5 12C22.5 6.21 17.79 1.5 12 1.5ZM12 19.5C7.8645 19.5 4.5 16.1355 4.5 12C4.5 7.8645 7.8645 4.5 12 4.5C16.1355 4.5 19.5 7.8645 19.5 12C19.5 16.1355 16.1355 19.5 12 19.5Z", fill: "#FBC34E" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M12 4.5C7.8645 4.5 4.5 7.8645 4.5 12C4.5 16.1355 7.8645 19.5 12 19.5C16.1355 19.5 19.5 16.1355 19.5 12C19.5 7.8645 16.1355 4.5 12 4.5ZM15.183 12.954L14.3205 13.4235C13.9425 13.6298 13.6327 13.9387 13.4257 14.316L12.9525 15.1755C12.7613 15.5235 12.3967 15.7388 12 15.7388C11.6033 15.7388 11.2387 15.5227 11.0475 15.1755L10.575 14.3153C10.3673 13.9373 10.0575 13.6283 9.67875 13.422L8.81775 12.9532C8.46675 12.7642 8.25 12.3983 8.25 12C8.25 11.6017 8.46675 11.2357 8.817 11.046L9.6795 10.5765C10.0575 10.3703 10.3672 10.0612 10.5743 9.684L11.0475 8.8245C11.2387 8.4765 11.6033 8.26125 12 8.26125C12.3967 8.26125 12.7613 8.47725 12.9525 8.8245L13.425 9.68475C13.6327 10.062 13.9425 10.371 14.3205 10.5772L15.1823 11.046C15.5332 11.2357 15.75 11.6017 15.75 12C15.75 12.3983 15.5332 12.7642 15.183 12.954Z", fill: "#E5A533" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M15.1823 11.0452L14.3205 10.5765C13.9425 10.3702 13.6327 10.0612 13.425 9.684L12.9525 8.82375C12.7613 8.4765 12.3967 8.2605 12 8.2605C11.6033 8.2605 11.2387 8.4765 11.0475 8.82375L10.575 9.68325C10.368 10.0612 10.0582 10.3702 9.68025 10.5757L8.81775 11.0452C8.46675 11.2357 8.25 11.6017 8.25 12C8.25 12.3982 8.46675 12.7642 8.81775 12.9547L9.67875 13.4235C10.0575 13.6297 10.3673 13.9387 10.575 14.3167L11.0475 15.177C11.2387 15.5242 11.6033 15.7402 12 15.7402C12.3967 15.7402 12.7613 15.5242 12.9525 15.177L13.4257 14.3175C13.6327 13.9395 13.9425 13.6305 14.3205 13.425L15.183 12.9555C15.5332 12.7642 15.75 12.3982 15.75 12C15.75 11.6017 15.5332 11.2357 15.1823 11.0452Z", fill: "#E4EDF2" }));
1044
+
1043
1045
  let Components = {};
1044
1046
  Components['success'] = SvgSuccess;
1045
1047
  Components['setting_icon'] = SvgSettingIcon;
@@ -1480,6 +1482,7 @@ Components['ai_approved'] = SvgAiApproved;
1480
1482
  Components['video_live_icon'] = SvgVideoRecording;
1481
1483
  Components['screen_capture_icon'] = SvgCaptureImage;
1482
1484
  Components['eclipse_plugin'] = SvgEclipsePlugin;
1485
+ Components['ai_token'] = SvgAiToken;
1483
1486
 
1484
1487
  const Icon = /*#__PURE__*/React.forwardRef(({
1485
1488
  name,
@@ -1983,8 +1986,11 @@ const Drawer = ({
1983
1986
  }, [isOpen]);
1984
1987
  React.useEffect(() => {
1985
1988
  const handleKeyDown = e => {
1986
- if (e.key === 'Enter' && isOpen && primaryButtonProps?.onClick) {
1987
- console.log('Enter key pressed — triggering primary button action');
1989
+ if (e.key === 'Enter' && isOpen && primaryButtonProps?.onClick && !primaryButtonProps.disabled) {
1990
+ const activeElement = document.activeElement;
1991
+ if (activeElement && activeElement.tagName === 'INPUT') {
1992
+ return;
1993
+ }
1988
1994
  primaryButtonProps.onClick();
1989
1995
  }
1990
1996
  };
@@ -3680,6 +3686,17 @@ const Input$1 = /*#__PURE__*/React.forwardRef(({
3680
3686
  }
3681
3687
  onBlur?.(e);
3682
3688
  };
3689
+ const handleWheel = e => {
3690
+ if (type === 'number') {
3691
+ const input = e.currentTarget;
3692
+ const currentValue = parseFloat(input.value);
3693
+ const isScrollDown = e.deltaY > 0;
3694
+ if (!isNaN(currentValue) && currentValue <= 0 && isScrollDown) {
3695
+ input.blur();
3696
+ setTimeout(() => input.focus(), 0);
3697
+ }
3698
+ }
3699
+ };
3683
3700
  return jsxRuntime.jsx("fieldset", {
3684
3701
  className: classNames('ff-input-fieldset', {
3685
3702
  'ff-input-fieldset--disabled': disabled
@@ -3740,6 +3757,7 @@ const Input$1 = /*#__PURE__*/React.forwardRef(({
3740
3757
  onClick: onClick,
3741
3758
  onKeyUp: onKeyUp,
3742
3759
  onKeyDown: handleKeyDown,
3760
+ onWheel: handleWheel,
3743
3761
  ...props
3744
3762
  }), type === 'number' && jsxRuntime.jsxs("div", {
3745
3763
  className: classNames('arrow-container', {
@@ -4581,7 +4599,8 @@ const Textarea = ({
4581
4599
  ...props
4582
4600
  }) => {
4583
4601
  const labelClasses = classNames('ff-textarea-label ff-textarea-label--' + variant, {
4584
- 'ff-textarea-label--danger': error
4602
+ 'ff-textarea-label--danger': error,
4603
+ 'ff-textarea-label--disabled': disabled
4585
4604
  });
4586
4605
  const textareaClasses = classNames(`ff-textarea ff-textarea--${variant}`, className, {
4587
4606
  'ff-textarea--danger': error,
@@ -10447,10 +10466,13 @@ const useFileDropzone = options => {
10447
10466
  invalidFileMessage,
10448
10467
  fileExistMessage,
10449
10468
  validateMIMEType = false,
10450
- isApiResponseError
10469
+ isApiResponseError,
10470
+ selectedFile,
10471
+ setSelectedFile
10451
10472
  } = options;
10473
+ const file = !selectedFile ? [] : [selectedFile];
10452
10474
  const [files, setFiles] = React.useState({
10453
- accepted: [],
10475
+ accepted: file,
10454
10476
  rejected: []
10455
10477
  });
10456
10478
  const [isDragActive, setIsDragActive] = React.useState(false);
@@ -10499,6 +10521,9 @@ const useFileDropzone = options => {
10499
10521
  setFiles(prevFiles => {
10500
10522
  const updatedAccepted = prevFiles.accepted.filter(file => file.name !== fileToReplace.name);
10501
10523
  const updatedRejected = prevFiles.rejected.filter(rejection => rejection.file.name !== fileToReplace.name);
10524
+ if (!checkEmpty(errors) && newFile && setSelectedFile) {
10525
+ setSelectedFile([...updatedAccepted, newFile]);
10526
+ }
10502
10527
  return {
10503
10528
  accepted: !checkEmpty(errors) ? updatedAccepted : [...updatedAccepted, newFile],
10504
10529
  rejected: !checkEmpty(errors) ? [...updatedRejected, {
@@ -11047,7 +11072,9 @@ const FileDropzone = ({
11047
11072
  invalidFileMessage,
11048
11073
  fileExistMessage,
11049
11074
  validateMIMEType,
11050
- isApiResponseError
11075
+ isApiResponseError,
11076
+ selectedFile,
11077
+ setSelectedFile
11051
11078
  // onDrop: (accepted, rejected, event) => {}, //onDrop function to handle dropped or selected files explicitly.
11052
11079
  });
11053
11080
  React.useEffect(() => {
@@ -15772,6 +15799,16 @@ const InputWithDropdown = /*#__PURE__*/React.forwardRef(({
15772
15799
  rightDropDownPositionZindex
15773
15800
  }, ref) => {
15774
15801
  const isValueFilled = !checkEmpty(value) || dropdownPosition === 'left';
15802
+ const handleWheel = e => {
15803
+ if (type !== 'number') return;
15804
+ const input = e.currentTarget;
15805
+ const currentValue = parseFloat(input.value);
15806
+ const isScrollDown = e.deltaY > 0;
15807
+ if (!isNaN(currentValue) && currentValue <= 0 && isScrollDown) {
15808
+ input.blur();
15809
+ setTimeout(() => input.focus(), 0);
15810
+ }
15811
+ };
15775
15812
  return jsxRuntime.jsxs("div", {
15776
15813
  className: classNames('ff-input-with-dropdown-container', {
15777
15814
  'ff-input-with-dropdown-container--filled': isValueFilled
@@ -15831,6 +15868,7 @@ const InputWithDropdown = /*#__PURE__*/React.forwardRef(({
15831
15868
  onClick: onClick,
15832
15869
  onKeyUp: onKeyUp,
15833
15870
  onKeyDown: onKeyDown,
15871
+ onWheel: handleWheel,
15834
15872
  onFocus: onFocus,
15835
15873
  className: classNames('ff-floating-input', {
15836
15874
  'ff-floating-input--filled': isValueFilled,
@@ -16651,8 +16689,9 @@ const EditLabel = ({
16651
16689
  setIsEditable && setIsEditable(null);
16652
16690
  };
16653
16691
  const handleKeyDown = event => {
16654
- if (event.key === 'Enter') {
16692
+ if (event.key === 'Enter' && inputRef.current === document.activeElement) {
16655
16693
  handleConfirm();
16694
+ event.stopPropagation();
16656
16695
  } else if (event.key === 'Escape') {
16657
16696
  handleCancel();
16658
16697
  }
@@ -17694,6 +17733,19 @@ const Search = ({
17694
17733
  onSearch(data);
17695
17734
  }
17696
17735
  };
17736
+ React.useEffect(() => {
17737
+ const handleKeyDown = e => {
17738
+ if (e.key === 'Enter' && isExpand && inputRef.current === document.activeElement) {
17739
+ if (searchValue.trim().length < minLength && showToaster) {
17740
+ toast.info(helperText);
17741
+ } else if (!checkEmpty(searchValue.trim())) {
17742
+ onSearch(searchValue.trim());
17743
+ }
17744
+ }
17745
+ };
17746
+ document.addEventListener('keydown', handleKeyDown);
17747
+ return () => document.removeEventListener('keydown', handleKeyDown);
17748
+ }, [isExpand, onClose, searchValue, minLength, showToaster, helperText, onSearch]);
17697
17749
  return jsxRuntime.jsx("div", {
17698
17750
  className: classNames('ff-gradient-border-container', {
17699
17751
  'ai-search-active': isAISearchClicked && isExpand
@@ -30375,7 +30427,7 @@ const AppHeader = ({
30375
30427
  }));
30376
30428
  return jsxRuntime.jsxs("div", {
30377
30429
  className: classNames('ff-app-header-quickmenu-container', subMenuItem.quickMenuItems?.length ? 'visible' : ''),
30378
- children: [!checkEmpty(quickMenuHiddenItemsArray) && jsxRuntime.jsx("div", {
30430
+ children: [!checkEmpty(quickMenuItemsArray) && jsxRuntime.jsx("div", {
30379
30431
  children: jsxRuntime.jsx(Icon, {
30380
30432
  name: "vertical_separator"
30381
30433
  })
@@ -33421,6 +33473,9 @@ const NlpDropdown = ({
33421
33473
  } else if (nlpType === 'PROGRAM_ELEMENTS') {
33422
33474
  label = 'PE';
33423
33475
  className = 'ff-pe';
33476
+ } else if (nlpType === 'WORKBENCH_REQUEST') {
33477
+ label = 'WS';
33478
+ className = 'ff-ws';
33424
33479
  } else {
33425
33480
  label = '--';
33426
33481
  className = 'nlp-default';
@@ -33456,13 +33511,7 @@ const NlpDropdown = ({
33456
33511
  });
33457
33512
  } else if (platform === 'Generic') {
33458
33513
  return jsxRuntime.jsx(Icon, {
33459
- name: "generic_nlp",
33460
- height: 10,
33461
- width: 10
33462
- });
33463
- } else if (platform === 'Webservice') {
33464
- return jsxRuntime.jsx(Icon, {
33465
- name: "web_service_icon",
33514
+ name: "mobile_icon",
33466
33515
  height: 10,
33467
33516
  width: 10
33468
33517
  });
@@ -33473,9 +33522,16 @@ const NlpDropdown = ({
33473
33522
  width: 10
33474
33523
  });
33475
33524
  }
33476
- } else {
33477
- return jsxRuntime.jsx(jsxRuntime.Fragment, {});
33525
+ } else if (nlpType === 'WORKBENCH_REQUEST') {
33526
+ if (platform === 'Webservice') {
33527
+ return jsxRuntime.jsx(Icon, {
33528
+ name: "web_service_icon",
33529
+ height: 8,
33530
+ width: 8
33531
+ });
33532
+ }
33478
33533
  }
33534
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
33479
33535
  };
33480
33536
  useIntersectionObserver(['ff-nlp-dropdown-pagination'], {
33481
33537
  root: document.getElementById('ff-nlp-dropdown-options-wrapper'),
@@ -34191,7 +34247,6 @@ const IconRadioGroup = ({
34191
34247
  };
34192
34248
 
34193
34249
  const MachineInputField = ({
34194
- width = '',
34195
34250
  options = [],
34196
34251
  runCount = 0,
34197
34252
  className = '',
@@ -34226,7 +34281,7 @@ const MachineInputField = ({
34226
34281
  return jsxRuntime.jsxs("div", {
34227
34282
  id: modalId,
34228
34283
  style: {
34229
- width: width
34284
+ width: '100%'
34230
34285
  },
34231
34286
  className: classNames('ff-machine-input-field-wrapper', className, {
34232
34287
  'cursor-event-none': runCount !== 1 && scriptType == 'Automation'
@@ -34349,9 +34404,9 @@ const Branches = ({
34349
34404
  const showMiddleArrow = index => machineInstances.length - 1 !== index && machineColumnCount > 1;
34350
34405
  const getGridTemplateColumnStyle = () => {
34351
34406
  if (machineColumnCount === 1) {
34352
- return `24px ${machineColumnWidth}px 24px`;
34407
+ return `24px auto 24px`;
34353
34408
  }
34354
- return `24px ${machineColumnWidth}px repeat(${machineColumnCount - 1}, 40px ${machineColumnWidth}px) 24px`;
34409
+ return `24px minmax(180px, auto) repeat(${machineColumnCount - 1}, 40px minmax(180px, auto)) 24px`;
34355
34410
  };
34356
34411
  const getMachineLabelOptionList = (type = '', machineInstance) => {
34357
34412
  const {
@@ -34955,7 +35010,7 @@ const AttachmentButton = ({
34955
35010
  }), fileError && jsxRuntime.jsx(Toaster, {
34956
35011
  isOpen: !!fileError,
34957
35012
  variant: "info",
34958
- toastTitle: "Error",
35013
+ toastTitle: "Information",
34959
35014
  toastMessage: fileError,
34960
35015
  zIndex: 10000000
34961
35016
  }), showSelectedFiles && selectedFiles.map((file, index) => jsxRuntime.jsxs("div", {
@@ -37892,12 +37947,24 @@ function reducer(state, action) {
37892
37947
  updatedData.splice(selectedRow, 1);
37893
37948
  const updatedModel = new Model(model.createFormulaParser, updatedData);
37894
37949
  let newSelectedRow = selectedRow > 0 ? selectedRow - 1 : 0;
37895
- let newSelectedColumn = !checkEmpty(selectedColumn) ? selectedColumn : 0;
37950
+ const newSelectedColumn = selectedColumn !== null ? selectedColumn : 0;
37951
+ const newActive = updatedData.length > 0 ? {
37952
+ row: newSelectedRow,
37953
+ column: newSelectedColumn
37954
+ } : null;
37955
+ const newSelected = updatedData.length > 0 ? new EntireRowsSelection(newSelectedRow, newSelectedRow) : new EmptySelection();
37956
+ const {
37957
+ [selectedRow]: _,
37958
+ ...cleanedRowDimensions
37959
+ } = state.rowDimensions;
37896
37960
  return {
37897
37961
  ...state,
37898
37962
  model: updatedModel,
37899
37963
  selectedRow: newSelectedRow,
37900
- selectedColumn: newSelectedColumn
37964
+ selectedColumn: newSelectedColumn,
37965
+ selected: newSelected,
37966
+ active: newActive,
37967
+ rowDimensions: cleanedRowDimensions
37901
37968
  };
37902
37969
  }
37903
37970
  case DELETE_COLUMN:
@@ -40381,9 +40448,14 @@ const ActiveCell = props => {
40381
40448
  if (actionType === 'ADD' && cell?.inputType?.type === 'file') {
40382
40449
  const parsedFiles = !checkEmpty(cell.value) ? JSON.parse(cell.value) : [];
40383
40450
  for (const file of selected) {
40384
- const response = await props.attachmentAction?.addAttachment(file);
40385
- if (!checkEmpty(response)) {
40386
- parsedFiles.push(JSON.parse(response));
40451
+ const isDuplicate = parsedFiles.some(existing => existing?.name.split('*')[0] === file?.name);
40452
+ if (isDuplicate) {
40453
+ toast.warning(`Duplicate attachments not allowed within the same row`);
40454
+ } else {
40455
+ const response = await props.attachmentAction?.addAttachment(file);
40456
+ if (!checkEmpty(response)) {
40457
+ parsedFiles.push(JSON.parse(response));
40458
+ }
40387
40459
  }
40388
40460
  }
40389
40461
  handleChange({
@@ -41384,7 +41456,7 @@ const Spreadsheet = props => {
41384
41456
  resizeObserver.observe(table);
41385
41457
  };
41386
41458
  const removeSelection = () => {
41387
- if (!(state.selectedColumn !== null || state.selectedRow !== null)) {
41459
+ if ((state.selectedColumn === null || state.selectedRow === null) && !state.autoFill.open) {
41388
41460
  removeSelect();
41389
41461
  }
41390
41462
  };
@@ -41580,7 +41652,9 @@ const ExcelContextMenu = ({
41580
41652
  className: "ff-excel-menu",
41581
41653
  style: {
41582
41654
  left: position.x,
41583
- top: position.y
41655
+ top: position.y,
41656
+ position: 'absolute',
41657
+ zIndex: 9999999999
41584
41658
  },
41585
41659
  children: contextMenu.options.map(option => {
41586
41660
  if (!option.disable && (!checkDelete(option.label) || !disableDeleteOption)) {
@@ -42013,10 +42087,28 @@ const ExcelFile = ({
42013
42087
  const rect = sheetRef.current?.parentElement?.getBoundingClientRect();
42014
42088
  const xOffset = window.scrollX;
42015
42089
  const yOffset = window.scrollY;
42016
- let sheetRefX = event.clientX - (rect?.left || 0) + xOffset + 10;
42017
- let sheetRefY = event.clientY - (rect?.top || 0) + yOffset - 5;
42090
+ let sheetRefX = event.clientX - (rect?.left || 0) + xOffset;
42091
+ let sheetRefY = event.clientY - (rect?.top || 0) + yOffset;
42018
42092
  const menuWidth = 300;
42019
- let menuHeight = 200;
42093
+ const menuHeight = 200;
42094
+ const windowWidth = window.innerWidth;
42095
+ const windowHeight = window.innerHeight;
42096
+ const spaceOnRight = windowWidth - event.clientX;
42097
+ const spaceOnLeft = event.clientX;
42098
+ const spaceBelow = windowHeight - event.clientY;
42099
+ const spaceAbove = event.clientY;
42100
+ // Horizontal positioning: left if no space on right
42101
+ if (spaceOnRight < menuWidth && spaceOnLeft >= menuWidth) {
42102
+ sheetRefX = event.clientX - (rect?.left || 0) + xOffset - 150;
42103
+ } else {
42104
+ sheetRefX += 2;
42105
+ }
42106
+ // Vertical positioning: above if no space below
42107
+ if (spaceBelow < menuHeight && spaceAbove >= menuHeight) {
42108
+ sheetRefY = event.clientY - (rect?.top || 0) + yOffset - 20;
42109
+ } else {
42110
+ sheetRefY += 2;
42111
+ }
42020
42112
  if (event.target.classList.contains('ff-excel-tab-list')) {
42021
42113
  setPosition({
42022
42114
  x: sheetRefX,
@@ -42024,13 +42116,12 @@ const ExcelFile = ({
42024
42116
  });
42025
42117
  return;
42026
42118
  }
42027
- const windowWidth = window.innerWidth;
42028
- const windowHeight = window.innerHeight;
42119
+ // Ensure menu stays within window bounds
42029
42120
  if (sheetRefX + menuWidth > windowWidth) {
42030
- sheetRefX = windowWidth - menuWidth - 100;
42121
+ sheetRefX = windowWidth - menuWidth - 2;
42031
42122
  }
42032
- if (sheetRefY + menuHeight > windowHeight) {
42033
- sheetRefY = windowHeight - menuHeight - 100;
42123
+ if (sheetRefX < 0) {
42124
+ sheetRefX = 2; // Prevent clipping off left edge
42034
42125
  }
42035
42126
  setPosition({
42036
42127
  x: sheetRefX + contextWidthPositioning,
@@ -43853,15 +43944,15 @@ const ProgressBar = ({
43853
43944
  children: `${Math.round(validProgress)}%`
43854
43945
  })
43855
43946
  })
43856
- }), computedLabel && jsxRuntime.jsxs(Typography, {
43947
+ }), computedLabel && jsxRuntime.jsx(Typography, {
43857
43948
  as: "div",
43858
43949
  className: "ff-progress-bar-label",
43859
43950
  fontSize: labelFontSize,
43860
43951
  color: labelTextColor,
43861
- children: [jsxRuntime.jsx(Tooltip, {
43952
+ children: jsxRuntime.jsx(Tooltip, {
43862
43953
  title: isTextTruncated(computedLabel, 10, 'count') ? computedLabel : '',
43863
43954
  children: truncateText(computedLabel, 10, 'count')
43864
- }), computedLabel]
43955
+ })
43865
43956
  })]
43866
43957
  });
43867
43958
  };
@@ -45243,7 +45334,13 @@ const MediaViewerModal = ({
45243
45334
  src,
45244
45335
  headerTitle,
45245
45336
  onDownload,
45246
- onExpand
45337
+ onExpand,
45338
+ showHeader = true,
45339
+ showDownload = true,
45340
+ showExpand = true,
45341
+ width = '800px',
45342
+ height = '432px',
45343
+ showControls = true
45247
45344
  }) => {
45248
45345
  const videoRef = React.useRef(null);
45249
45346
  const [currentTime, setCurrentTime] = React.useState(0);
@@ -45291,7 +45388,7 @@ const MediaViewerModal = ({
45291
45388
  isOpen: isOpen,
45292
45389
  onClose: onClose,
45293
45390
  isMaximized: false,
45294
- showHeader: true,
45391
+ showHeader: showHeader,
45295
45392
  downloadHandler: () => console.log('Download clicked'),
45296
45393
  header: jsxRuntime.jsxs("div", {
45297
45394
  className: "ff-header-content",
@@ -45312,8 +45409,8 @@ const MediaViewerModal = ({
45312
45409
  name: "close",
45313
45410
  onClick: onClose
45314
45411
  }),
45315
- width: "620px",
45316
- height: "336px",
45412
+ width: width,
45413
+ height: height,
45317
45414
  zIndex: 999,
45318
45415
  children: jsxRuntime.jsxs("div", {
45319
45416
  className: "ff-video-wrapper",
@@ -45330,20 +45427,20 @@ const MediaViewerModal = ({
45330
45427
  className: "ff-media-image"
45331
45428
  }), jsxRuntime.jsxs("div", {
45332
45429
  className: "ff-top-right-icons",
45333
- children: [jsxRuntime.jsx(Icon, {
45430
+ children: [showDownload && jsxRuntime.jsx(Icon, {
45334
45431
  width: 20,
45335
45432
  height: 23,
45336
45433
  name: "download_file",
45337
45434
  color: "white",
45338
45435
  onClick: onDownload
45339
- }), jsxRuntime.jsx(Icon, {
45436
+ }), showExpand && jsxRuntime.jsx(Icon, {
45340
45437
  width: 20,
45341
45438
  height: 23,
45342
45439
  name: "expand_icon",
45343
45440
  color: "white",
45344
45441
  onClick: onExpand
45345
45442
  })]
45346
- }), mediaType === 'video' && jsxRuntime.jsxs("div", {
45443
+ }), mediaType === 'video' && showControls && jsxRuntime.jsxs("div", {
45347
45444
  className: "ff-media-controls",
45348
45445
  children: [jsxRuntime.jsx("button", {
45349
45446
  onClick: onTogglePlay,
@@ -59285,7 +59382,7 @@ const ChildComment = ({
59285
59382
  if (mentionNameMatch) {
59286
59383
  const mentionNameStart = textBeforeCaret.lastIndexOf(mentionNameMatch[1] || '');
59287
59384
  const remainder = input.slice(caretPosition);
59288
- const mentionedUserName = `@${name.replace(/\s+/g, '')}`;
59385
+ const mentionedUserName = `@${name.replace(/\s+/g, '')} `;
59289
59386
  const newText = input.slice(0, mentionNameStart) + mentionedUserName + remainder;
59290
59387
  setInput(newText);
59291
59388
  setHasAtSymbol(false);
@@ -59789,7 +59886,7 @@ const Comments = ({
59789
59886
  if (mentionNameMatch) {
59790
59887
  const mentionNameStart = textBeforeCaret.lastIndexOf(mentionNameMatch[1] ?? '');
59791
59888
  const remainingText = input.slice(caretPosition);
59792
- const mentionedUserName = `@${name.replace(/\s+/g, '')}`;
59889
+ const mentionedUserName = `@${name.replace(/\s+/g, '')} `;
59793
59890
  const newText = input.slice(0, mentionNameStart) + mentionedUserName + remainingText;
59794
59891
  setInput(newText);
59795
59892
  setHasAtSymbol(false);
@@ -108811,7 +108908,7 @@ const NoDataContent = ({
108811
108908
  }), jsxRuntime.jsx(Typography, {
108812
108909
  fontSize: textFontSize,
108813
108910
  lineHeight: "36px",
108814
- fontWeight: "bold",
108911
+ fontWeight: "semi-bold",
108815
108912
  children: text
108816
108913
  })]
108817
108914
  });
@@ -108980,11 +109077,12 @@ const handleTreeExpandAllCollapseAll = (data, key, rootNode, isExpanded, treeAct
108980
109077
  };
108981
109078
  };
108982
109079
 
108983
- function togglePrePostConditions(data, isHide) {
109080
+ function togglePrePostConditions(data, isHide, isScript) {
108984
109081
  if (!Array.isArray(data)) {
108985
109082
  throw new Error('Input data must be an array of TreeNode objects.');
108986
109083
  }
108987
- return data.map(node => ['PRE', 'POST'].includes(node.entityType ?? '') ? {
109084
+ const hideTypeArray = isScript ? ['Script'] : ['PRE', 'POST'];
109085
+ return data.map(node => hideTypeArray.includes(node.entityType ?? '') ? {
108988
109086
  ...node,
108989
109087
  hide: isHide
108990
109088
  } : node);