pixel-react 1.13.63 → 1.13.65

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 (62) hide show
  1. package/lib/_virtual/index11.js +2 -2
  2. package/lib/_virtual/index9.js +2 -2
  3. package/lib/components/Charts/BarChart/BarChart.js +1 -1
  4. package/lib/components/Charts/BarChart/BarChart.js.map +1 -1
  5. package/lib/components/Charts/MultiRadialChart/MultiRadialChart.js +73 -36
  6. package/lib/components/Charts/MultiRadialChart/MultiRadialChart.js.map +1 -1
  7. package/lib/components/Charts/MultiRadialChart/types.d.ts +1 -1
  8. package/lib/components/Comments/childComment/ChildComment.js +4 -1
  9. package/lib/components/Comments/childComment/ChildComment.js.map +1 -1
  10. package/lib/components/CreateVariable/CreateVariableSlider.js +18 -2
  11. package/lib/components/CreateVariable/CreateVariableSlider.js.map +1 -1
  12. package/lib/components/EditLabel/EditLabel.js +4 -1
  13. package/lib/components/EditLabel/EditLabel.js.map +1 -1
  14. package/lib/components/InputWithDropdown/InputWithDropdown.js +0 -6
  15. package/lib/components/InputWithDropdown/InputWithDropdown.js.map +1 -1
  16. package/lib/components/MediaPreview/MediaPreview.js +43 -12
  17. package/lib/components/MediaPreview/MediaPreview.js.map +1 -1
  18. package/lib/components/PhoneInput/PhoneInput.js +21 -6
  19. package/lib/components/PhoneInput/PhoneInput.js.map +1 -1
  20. package/lib/components/PhoneInput/types.d.ts +6 -0
  21. package/lib/components/Select/Select.js +6 -6
  22. package/lib/components/Select/Select.js.map +1 -1
  23. package/lib/components/SequentialConnectingBranch/components/Branches/Branches.js +8 -1
  24. package/lib/components/SequentialConnectingBranch/components/Branches/Branches.js.map +1 -1
  25. package/lib/components/SequentialConnectingBranch/types.d.ts +1 -1
  26. package/lib/components/StepsLandingTable/Components/handleStepCheckBox.d.ts +1 -1
  27. package/lib/components/StepsLandingTable/Components/handleStepCheckBox.js +8 -6
  28. package/lib/components/StepsLandingTable/Components/handleStepCheckBox.js.map +1 -1
  29. package/lib/components/StepsLandingTable/constant.js +3 -3
  30. package/lib/components/StepsLandingTable/constant.js.map +1 -1
  31. package/lib/components/StepsLandingTable/types.d.ts +1 -1
  32. package/lib/components/TableTree/Components/TableHead.js +1 -1
  33. package/lib/components/TableTree/Components/TableHead.js.map +1 -1
  34. package/lib/components/variableSuggestionInputDropDown/VariableSuggestionInputDropDown.js +28 -21
  35. package/lib/components/variableSuggestionInputDropDown/VariableSuggestionInputDropDown.js.map +1 -1
  36. package/lib/components/variableSuggestionInputDropDown/types.d.ts +4 -0
  37. package/lib/hooks/useConditionalLock.d.ts +2 -0
  38. package/lib/hooks/useConditionalLock.js +19 -0
  39. package/lib/hooks/useConditionalLock.js.map +1 -0
  40. package/lib/hooks/useTriggerControl.d.ts +7 -0
  41. package/lib/hooks/useTriggerControl.js +20 -0
  42. package/lib/hooks/useTriggerControl.js.map +1 -0
  43. package/lib/index.cjs +233 -99
  44. package/lib/index.cjs.map +1 -1
  45. package/lib/index.d.ts +16 -4
  46. package/lib/index.js +2 -1
  47. package/lib/index.js.map +1 -1
  48. package/lib/node_modules/js-beautify/js/src/css/beautifier.js +1 -1
  49. package/lib/node_modules/js-beautify/js/src/css/index.js +1 -1
  50. package/lib/node_modules/js-beautify/js/src/css/options.js +1 -1
  51. package/lib/node_modules/js-beautify/js/src/html/options.js +1 -1
  52. package/lib/node_modules/js-beautify/js/src/html/tokenizer.js +1 -1
  53. package/lib/node_modules/js-beautify/js/src/javascript/beautifier.js +1 -1
  54. package/lib/node_modules/js-beautify/js/src/javascript/index.js +1 -1
  55. package/lib/node_modules/js-beautify/js/src/javascript/tokenizer.js +1 -1
  56. package/lib/styles.css +1 -1
  57. package/lib/styles.css.map +1 -1
  58. package/lib/tsconfig.tsbuildinfo +1 -1
  59. package/lib/validations/regex.d.ts +2 -1
  60. package/lib/validations/regex.js +4 -2
  61. package/lib/validations/regex.js.map +1 -1
  62. package/package.json +1 -1
package/lib/index.cjs CHANGED
@@ -2419,9 +2419,11 @@ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-
2419
2419
  // HTML Tags Validation
2420
2420
  const HTML_TAG_REGEX = /<\/?[\w\s=\"'\/\.:;#-]*>/g;
2421
2421
  // Whitespace Validation (Leading or Trailing)
2422
- const WHITESPACE_REGEX = /^\s+|\s+$/g;
2422
+ const WHITESPACE_REGEX = /^\s|\s$/;
2423
2423
  // US ZIP Code Validation (5 or 9 digits)
2424
2424
  const US_ZIP_CODE_REGEX = /^\d{5}(-\d{4})?$/;
2425
+ // start and end whitespace is valid one.
2426
+ const BIG_END_WHITESPACE = /^\s|\s$/;
2425
2427
  // Username Validation (Alphanumeric, underscores, 3-16 characters)
2426
2428
  const USERNAME_REGEX = /^[a-zA-Z0-9_]{3,16}$/;
2427
2429
  // Indian Specific Validations
@@ -4298,13 +4300,13 @@ const Select$1 = ({
4298
4300
  fromBottom: 0,
4299
4301
  width: 0
4300
4302
  });
4301
- setSearchedOption({
4302
- searchedText: getValue$1(selectedOption, valueAccessor) || '',
4303
- searchedIcon: selectedOption.iconName || ''
4304
- });
4303
+ setSelectOptionList(optionsList);
4305
4304
  if (inputRef?.current === document.activeElement) {
4306
4305
  inputRef?.current?.blur();
4307
- setSelectOptionList(optionsList);
4306
+ setSearchedOption({
4307
+ searchedText: getValue$1(selectedOption, valueAccessor) || '',
4308
+ searchedIcon: selectedOption.iconName || ''
4309
+ });
4308
4310
  setCustomRecurrence(false);
4309
4311
  onBlur();
4310
4312
  }
@@ -4441,7 +4443,7 @@ const Select$1 = ({
4441
4443
  'ff-select-labels__active': searchedText
4442
4444
  }),
4443
4445
  fontSize: searchedText || showDropdownOptions ? 10 : 12,
4444
- lineHeight: searchedText || showDropdownOptions ? '10px' : '12px',
4446
+ lineHeight: searchedText || showDropdownOptions && '12px',
4445
4447
  required: required,
4446
4448
  style: {
4447
4449
  maxWidth: `calc(${selectWidth} - 40px)`
@@ -15708,11 +15710,6 @@ const InputWithDropdown = /*#__PURE__*/React.forwardRef(({
15708
15710
  rightDropDownPositionZindex
15709
15711
  }, ref) => {
15710
15712
  const isValueFilled = !checkEmpty(value) || dropdownPosition === 'left';
15711
- const handleWheel = e => {
15712
- if (type === 'number') {
15713
- e.currentTarget.blur();
15714
- }
15715
- };
15716
15713
  return jsxRuntime.jsxs("div", {
15717
15714
  className: classNames('ff-input-with-dropdown-container', {
15718
15715
  'ff-input-with-dropdown-container--filled': isValueFilled
@@ -15772,7 +15769,6 @@ const InputWithDropdown = /*#__PURE__*/React.forwardRef(({
15772
15769
  onClick: onClick,
15773
15770
  onKeyUp: onKeyUp,
15774
15771
  onKeyDown: onKeyDown,
15775
- onWheel: handleWheel,
15776
15772
  onFocus: onFocus,
15777
15773
  className: classNames('ff-floating-input', {
15778
15774
  'ff-floating-input--filled': isValueFilled,
@@ -16296,7 +16292,7 @@ const TableHead = /*#__PURE__*/React.memo(({
16296
16292
  return jsxRuntime.jsxs("thead", {
16297
16293
  className: "ff-table-tree-head",
16298
16294
  children: [jsxRuntime.jsx("tr", {
16299
- className: "ff-table-tree-row",
16295
+ className: "ff-table-tree-row no-hover",
16300
16296
  children: columnsData.map(({
16301
16297
  name,
16302
16298
  width
@@ -16493,6 +16489,7 @@ const EditLabel = ({
16493
16489
  error: false
16494
16490
  });
16495
16491
  const [currentSelectedOption, setCurrentSelectedOption] = React.useState(selectedOption);
16492
+ const [shouldShowToast, setShouldShowToast] = React.useState(false);
16496
16493
  const containerRef = React.useRef(null);
16497
16494
  const cancelRef = React.useRef(null);
16498
16495
  const confirmRef = React.useRef(null);
@@ -16549,6 +16546,7 @@ const EditLabel = ({
16549
16546
  if (isDisable.confirm) return;
16550
16547
  const errorMessage = handleCustomError ? handleCustomError(text) : '';
16551
16548
  if (errorMessage) {
16549
+ setShouldShowToast(true);
16552
16550
  handleToastToggle('error');
16553
16551
  setShowError(errorMessage);
16554
16552
  } else {
@@ -16575,6 +16573,7 @@ const EditLabel = ({
16575
16573
  useClickOutside(containerRef, handleOutsideClick, [confirmRef, cancelRef, dropdownRef]);
16576
16574
  const handleCancel = () => {
16577
16575
  if (isDisable.cancel) return;
16576
+ setShouldShowToast(false);
16578
16577
  if (required && !value) {
16579
16578
  handleToastToggle('error');
16580
16579
  setShowError('Text is required.');
@@ -16768,7 +16767,7 @@ const EditLabel = ({
16768
16767
  fontSize: 8,
16769
16768
  className: "error-text",
16770
16769
  children: showError
16771
- }), !inlineValidationError && jsxRuntime.jsx(Toaster, {
16770
+ }), !inlineValidationError && shouldShowToast && jsxRuntime.jsx(Toaster, {
16772
16771
  isOpen: toasts.error,
16773
16772
  variant: "info",
16774
16773
  toastTitle: "Info!",
@@ -33985,7 +33984,8 @@ const Branches = ({
33985
33984
  machineInfo: {
33986
33985
  osVersion,
33987
33986
  iconName,
33988
- osName
33987
+ osName,
33988
+ hostName
33989
33989
  },
33990
33990
  deviceInfo
33991
33991
  } = machineInstance;
@@ -34000,6 +34000,12 @@ const Branches = ({
34000
34000
  label: executionEnv,
34001
34001
  type: getEnvironment(executionEnv)
34002
34002
  }];
34003
+ if (scriptType.toLowerCase() === 'manual') {
34004
+ baseOptions.push({
34005
+ label: hostName || '',
34006
+ type: 'local'
34007
+ });
34008
+ }
34003
34009
  // Web-specific options
34004
34010
  const webOptions = [{
34005
34011
  label: osVersion,
@@ -42832,6 +42838,7 @@ const VariableSuggestionInputDropDown = /*#__PURE__*/React.forwardRef(({
42832
42838
  symbol = '$',
42833
42839
  type = 'text',
42834
42840
  clearIcon = true,
42841
+ inputTitle = '',
42835
42842
  ...props
42836
42843
  }, ref) => {
42837
42844
  const [showDropdown, setShowDropdown] = React.useState(false);
@@ -42988,28 +42995,34 @@ const VariableSuggestionInputDropDown = /*#__PURE__*/React.forwardRef(({
42988
42995
  children: [jsxRuntime.jsxs("div", {
42989
42996
  className: "ff-add-variable-input",
42990
42997
  ref: containerRef,
42991
- children: [jsxRuntime.jsx(Input$1, {
42992
- ...props,
42993
- name: "add_variable",
42994
- ref: inputRef,
42995
- type: type,
42996
- value: value,
42997
- onChange: onChange,
42998
- onPaste: () => {
42999
- setShowCreateVariableIcon(true);
42998
+ children: [jsxRuntime.jsx(Tooltip, {
42999
+ title: inputTitle,
43000
+ style: {
43001
+ width: '100%'
43000
43002
  },
43001
- variant: "primary",
43002
- label: label,
43003
- placeholder: placeholder,
43004
- onClick: handleClick,
43005
- onKeyUp: handleKeyUp,
43006
- onFocus: () => setIsFocused(true),
43007
- onBlur: e => handleBlur(e),
43008
- autoComplete: autoComplete,
43009
- helperText: helperText,
43010
- error: error,
43011
- required: required,
43012
- ...formProps
43003
+ children: jsxRuntime.jsx(Input$1, {
43004
+ ...props,
43005
+ name: "add_variable",
43006
+ ref: inputRef,
43007
+ type: type,
43008
+ value: value,
43009
+ onChange: onChange,
43010
+ onPaste: () => {
43011
+ setShowCreateVariableIcon(true);
43012
+ },
43013
+ variant: "primary",
43014
+ label: label,
43015
+ placeholder: placeholder,
43016
+ onClick: handleClick,
43017
+ onKeyUp: handleKeyUp,
43018
+ onFocus: () => setIsFocused(true),
43019
+ onBlur: e => handleBlur(e),
43020
+ autoComplete: autoComplete,
43021
+ helperText: helperText,
43022
+ error: error,
43023
+ required: required,
43024
+ ...formProps
43025
+ })
43013
43026
  }), !checkEmpty(value) && !isOnlyHash && jsxRuntime.jsxs("div", {
43014
43027
  className: "ff-variable-icon-container",
43015
43028
  children: [clearIcon && jsxRuntime.jsx(Tooltip, {
@@ -43078,6 +43091,18 @@ const CreateVariableSlider = ({
43078
43091
  const [helperText, setHelperText] = React.useState('');
43079
43092
  const [hashInputValue, setHashInputValue] = React.useState();
43080
43093
  const [isSubmitting, setIsSubmitting] = React.useState(false);
43094
+ const [initialValues, setInitialValues] = React.useState({
43095
+ name: '',
43096
+ value: ''
43097
+ });
43098
+ React.useEffect(() => {
43099
+ if (isOpen && mode === 'edit') {
43100
+ setInitialValues({
43101
+ name: variableName,
43102
+ value: variableValue
43103
+ });
43104
+ }
43105
+ }, []);
43081
43106
  const getVariableNameError = value => {
43082
43107
  if (!value || value.length === 0) {
43083
43108
  return 'Variable Name is required';
@@ -43115,6 +43140,10 @@ const CreateVariableSlider = ({
43115
43140
  const isValid = isNonEmpty && matchesPattern && noWhitespaceEdges && lengthValid;
43116
43141
  return isValid;
43117
43142
  }
43143
+ const hasChanges = React.useMemo(() => {
43144
+ if (mode !== 'edit') return true;
43145
+ return variableName !== initialValues.name || variableValue !== initialValues.value;
43146
+ }, [mode, variableName, variableValue, initialValues]);
43118
43147
  const FooterContent = () => {
43119
43148
  return jsxRuntime.jsxs("div", {
43120
43149
  className: "ff-create-slider-footer",
@@ -43132,7 +43161,7 @@ const CreateVariableSlider = ({
43132
43161
  handleSubmit();
43133
43162
  }
43134
43163
  },
43135
- disabled: !isVariableNameValid(variableName) || isSubmitting
43164
+ disabled: !isVariableNameValid(variableName) || isSubmitting || mode === 'edit' && !hasChanges
43136
43165
  })]
43137
43166
  });
43138
43167
  };
@@ -43559,6 +43588,7 @@ const MediaPreview = ({
43559
43588
  isDisabled = false
43560
43589
  }) => {
43561
43590
  const [isModalOpen, setIsModalOpen] = React.useState(false);
43591
+ const videoRef = React.useRef(null);
43562
43592
  const handleExpand = () => {
43563
43593
  setIsModalOpen(true);
43564
43594
  onExpandClick && onExpandClick(fileId);
@@ -43575,6 +43605,20 @@ const MediaPreview = ({
43575
43605
  setIsModalOpen(true);
43576
43606
  }
43577
43607
  }, [previewOnly]);
43608
+ React.useEffect(() => {
43609
+ if (isModalOpen) {
43610
+ setTimeout(() => {
43611
+ if (videoRef.current) {
43612
+ const playPromise = videoRef.current.play();
43613
+ if (playPromise !== undefined) {
43614
+ playPromise.catch(error => {
43615
+ console.error('Autoplay failed:', error);
43616
+ });
43617
+ }
43618
+ }
43619
+ }, 300);
43620
+ }
43621
+ }, [isModalOpen]);
43578
43622
  return jsxRuntime.jsxs("div", {
43579
43623
  children: [!previewOnly && (isMediaIcon ? jsxRuntime.jsx(Icon, {
43580
43624
  name: iconName,
@@ -43603,16 +43647,30 @@ const MediaPreview = ({
43603
43647
  className: "media-wrapper",
43604
43648
  children: [jsxRuntime.jsxs("div", {
43605
43649
  className: "ff-expand-icons",
43606
- children: [jsxRuntime.jsx(Icon, {
43607
- name: "download_file_icon",
43608
- onClick: handleDownload,
43609
- color: "var(--icons-default-color)",
43610
- className: "header-icons"
43611
- }), jsxRuntime.jsx(Icon, {
43612
- name: "close",
43613
- onClick: handleClose,
43614
- color: "var(--icons-default-color)",
43615
- className: "header-icons"
43650
+ children: [jsxRuntime.jsx(Tooltip, {
43651
+ title: "Download File",
43652
+ children: jsxRuntime.jsx(Icon, {
43653
+ name: "download_file_icon",
43654
+ onClick: handleDownload,
43655
+ color: "var(--icons-default-color)",
43656
+ className: "header-icons"
43657
+ })
43658
+ }), jsxRuntime.jsx(Tooltip, {
43659
+ title: "Expand",
43660
+ children: jsxRuntime.jsx(Icon, {
43661
+ name: "expand",
43662
+ onClick: handleExpand,
43663
+ color: "var(--icons-default-color)",
43664
+ className: "header-icons"
43665
+ })
43666
+ }), jsxRuntime.jsx(Tooltip, {
43667
+ title: "close",
43668
+ children: jsxRuntime.jsx(Icon, {
43669
+ name: "close",
43670
+ onClick: handleClose,
43671
+ color: "var(--icons-default-color)",
43672
+ className: "header-icons"
43673
+ })
43616
43674
  })]
43617
43675
  }), mediaType === 'image' && jsxRuntime.jsx("img", {
43618
43676
  src: MediaSrc,
@@ -43623,7 +43681,8 @@ const MediaPreview = ({
43623
43681
  src: MediaSrc,
43624
43682
  controls: true,
43625
43683
  controlsList: "nodownload",
43626
- className: "ff-video-preview"
43684
+ className: "ff-video-preview",
43685
+ ref: videoRef
43627
43686
  })]
43628
43687
  })
43629
43688
  })]
@@ -50713,7 +50772,7 @@ const BarChart = ({
50713
50772
  }), normalizedData.map((item, index) => {
50714
50773
  const computedBarHeight = item.normalizedValue / maxValue * height;
50715
50774
  const minBarHeight = 2;
50716
- const barHeight = item.normalizedValue === 0 ? minBarHeight : computedBarHeight;
50775
+ const barHeight = item.normalizedValue < 1 ? minBarHeight : computedBarHeight;
50717
50776
  const barX = index * (barWidth + barGap) + leftPadding + padding;
50718
50777
  const barY = height - barHeight + topPadding;
50719
50778
  const iconWidth = iconSize || 20;
@@ -50864,9 +50923,26 @@ const MultiRadialChart = ({
50864
50923
  visible: false,
50865
50924
  x: 0,
50866
50925
  y: 0,
50867
- content: ''
50926
+ content: '',
50927
+ isArc: false
50868
50928
  });
50869
50929
  const [hoveredLegend, setHoveredLegend] = React.useState(null);
50930
+ const renderGradients = () => jsxRuntime.jsx("defs", {
50931
+ children: barValues.map((bar, i) => Array.isArray(bar.arcColor) ? jsxRuntime.jsx("linearGradient", {
50932
+ id: `gradient-${i}`,
50933
+ x1: "0%",
50934
+ y1: "0%",
50935
+ x2: "100%",
50936
+ y2: "0%",
50937
+ gradientTransform: "rotate(90)",
50938
+ children: bar.arcColor.map((color, idx) => jsxRuntime.jsx("stop", {
50939
+ offset: `${idx / (bar.arcColor.length - 1) * 100}%`,
50940
+ stopColor: color
50941
+ }, idx))
50942
+ }, `gradient-${i}`) : null)
50943
+ });
50944
+ const getArcColor = (bar, index) => Array.isArray(bar.arcColor) ? `url(#gradient-${index})` : bar.arcColor;
50945
+ const getLegendColor = bar => Array.isArray(bar.arcColor) ? bar.arcColor[0] : bar.arcColor;
50870
50946
  const parseValueToMB = value => {
50871
50947
  if (typeof value === 'string') {
50872
50948
  const match = value.trim().match(/^([\d.]+)\s*([a-zA-Z%]*)$/);
@@ -50925,17 +51001,18 @@ const MultiRadialChart = ({
50925
51001
  className: "ff-legend-item",
50926
51002
  onMouseEnter: e => {
50927
51003
  setHoveredLegend(item.barLabel || item.label);
50928
- handleMouseEnter(e, `${item.barLabel || 'Data'}: ${item.value}`);
51004
+ handleMouseEnter(e, `${item.barLabel || 'Data'}: ${item.value}`, false);
50929
51005
  },
51006
+ onMouseMove: handleMouseMove,
50930
51007
  onMouseLeave: () => {
50931
51008
  setHoveredLegend(null);
50932
- handleMouseLeave?.();
51009
+ handleMouseLeave();
50933
51010
  },
50934
51011
  children: [jsxRuntime.jsx(Typography, {
50935
51012
  fontSize: 20,
50936
51013
  fontWeight: "semi-bold",
50937
51014
  className: "ff-legend-value",
50938
- color: item.arcColor,
51015
+ color: getLegendColor(item),
50939
51016
  children: item.key.padStart(2, '0')
50940
51017
  }), jsxRuntime.jsx(Typography, {
50941
51018
  fontSize: 10,
@@ -50955,16 +51032,17 @@ const MultiRadialChart = ({
50955
51032
  className: "ff-legend-item",
50956
51033
  onMouseEnter: e => {
50957
51034
  setHoveredLegend(item.barLabel || item.label);
50958
- handleMouseEnter(e, `${item.barLabel || 'Data'}: ${item.value}`);
51035
+ handleMouseEnter(e, `${item.barLabel || 'Data'}: ${item.value}`, false);
50959
51036
  },
51037
+ onMouseMove: handleMouseMove,
50960
51038
  onMouseLeave: () => {
50961
51039
  setHoveredLegend(null);
50962
- handleMouseLeave?.();
51040
+ handleMouseLeave();
50963
51041
  },
50964
51042
  children: [jsxRuntime.jsx("span", {
50965
51043
  className: "ff-legend-capsule",
50966
51044
  style: {
50967
- backgroundColor: item.arcColor
51045
+ backgroundColor: getLegendColor(item)
50968
51046
  },
50969
51047
  children: jsxRuntime.jsx(Typography, {
50970
51048
  fontSize: 10,
@@ -50982,17 +51060,17 @@ const MultiRadialChart = ({
50982
51060
  return null;
50983
51061
  }
50984
51062
  };
50985
- const handleMouseEnter = (e, content) => {
51063
+ const handleMouseEnter = (e, content, isArc) => {
50986
51064
  const {
50987
51065
  clientX,
50988
51066
  clientY
50989
51067
  } = e;
50990
- const container = e.currentTarget.getBoundingClientRect();
50991
51068
  setTooltip({
50992
51069
  visible: true,
50993
- x: clientX - container.left,
50994
- y: clientY - container.top,
50995
- content: content
51070
+ x: clientX,
51071
+ y: clientY,
51072
+ content: content,
51073
+ isArc
50996
51074
  });
50997
51075
  };
50998
51076
  const handleMouseMove = e => {
@@ -51000,11 +51078,10 @@ const MultiRadialChart = ({
51000
51078
  clientX,
51001
51079
  clientY
51002
51080
  } = e;
51003
- const container = e.currentTarget.getBoundingClientRect();
51004
51081
  setTooltip(prev => ({
51005
51082
  ...prev,
51006
- x: clientX - container.left,
51007
- y: clientY - container.top
51083
+ x: clientX,
51084
+ y: clientY
51008
51085
  }));
51009
51086
  };
51010
51087
  const handleMouseLeave = () => {
@@ -51012,7 +51089,8 @@ const MultiRadialChart = ({
51012
51089
  visible: false,
51013
51090
  x: 0,
51014
51091
  y: 0,
51015
- content: ''
51092
+ content: '',
51093
+ isArc: false
51016
51094
  });
51017
51095
  };
51018
51096
  const textData = (text, maxLength) => {
@@ -51023,25 +51101,32 @@ const MultiRadialChart = ({
51023
51101
  const valueString = tooltip.content.split(':')[0]?.trim();
51024
51102
  if (valueString === undefined) return '';
51025
51103
  const matchingBar = normalizedBarValues.find(val => val.barLabel === valueString);
51026
- return matchingBar?.arcColor || '';
51104
+ if (!matchingBar) return '';
51105
+ const chartItem = {
51106
+ ...matchingBar,
51107
+ label: matchingBar.barLabel,
51108
+ key: matchingBar.labelValue?.toString() ?? ''
51109
+ };
51110
+ return getLegendColor(chartItem);
51027
51111
  };
51112
+ const DEFAULT_LINE_HEIGHT = 18;
51028
51113
  return jsxRuntime.jsxs("div", {
51029
51114
  className: `ff-multi-radial-chart-container ${legendType === 'numberLegend' ? 'ff-multi-radial-chart-number' : 'ff-multi-radial-chart-pill'}`,
51030
51115
  style: {
51031
51116
  gap: chartToLegendGap
51032
51117
  },
51033
- children: [jsxRuntime.jsxs("div", {
51118
+ children: [jsxRuntime.jsx("div", {
51034
51119
  className: "relative",
51035
51120
  style: {
51036
51121
  width: svgSize,
51037
51122
  height: svgSize
51038
51123
  },
51039
- children: [jsxRuntime.jsx("svg", {
51124
+ children: jsxRuntime.jsxs("svg", {
51040
51125
  width: svgSize,
51041
51126
  height: svgSize,
51042
51127
  viewBox: `0 0 ${svgSize} ${svgSize}`,
51043
51128
  className: "absolute top-0 left-0",
51044
- children: jsxRuntime.jsxs("g", {
51129
+ children: [renderGradients(), jsxRuntime.jsxs("g", {
51045
51130
  transform: `translate(${svgSize / 2 + 1}, ${svgSize / 2 + 1})`,
51046
51131
  children: [reversedBarValues.map((values, i) => {
51047
51132
  const originalIndex = normalizedBarValues.length - 1 - i;
@@ -51075,8 +51160,12 @@ const MultiRadialChart = ({
51075
51160
  cx: dotX,
51076
51161
  cy: dotY,
51077
51162
  r: lineWidth + 1,
51078
- fill: values.arcColor,
51079
- onMouseEnter: e => handleMouseEnter(e, `${values.barLabel || 'Data'}: ${values.value}`),
51163
+ fill: getArcColor({
51164
+ ...values,
51165
+ label: values.barLabel || '',
51166
+ key: values.labelValue?.toString() || ''
51167
+ }, originalIndex),
51168
+ onMouseEnter: e => handleMouseEnter(e, `${values.barLabel || 'Data'}: ${values.value}`, true),
51080
51169
  onMouseMove: handleMouseMove,
51081
51170
  onMouseLeave: handleMouseLeave,
51082
51171
  style: arcStyle
@@ -51095,10 +51184,14 @@ const MultiRadialChart = ({
51095
51184
  }), jsxRuntime.jsx("path", {
51096
51185
  d: foregroundArcPath,
51097
51186
  fill: "none",
51098
- stroke: values.arcColor,
51187
+ stroke: getArcColor({
51188
+ ...values,
51189
+ label: values.barLabel || '',
51190
+ key: values.labelValue?.toString() || ''
51191
+ }, originalIndex),
51099
51192
  strokeWidth: lineWidth,
51100
51193
  strokeLinecap: lineCap === 'square' ? 'butt' : 'round',
51101
- onMouseEnter: e => handleMouseEnter(e, `${values.barLabel || 'Data'}: ${values.value}`),
51194
+ onMouseEnter: e => handleMouseEnter(e, `${values.barLabel || 'Data'}: ${values.value}`, true),
51102
51195
  onMouseMove: handleMouseMove,
51103
51196
  onMouseLeave: handleMouseLeave,
51104
51197
  style: {
@@ -51140,7 +51233,7 @@ const MultiRadialChart = ({
51140
51233
  children: firstWord
51141
51234
  }), jsxRuntime.jsx("tspan", {
51142
51235
  x: "0",
51143
- dy: 18,
51236
+ dy: DEFAULT_LINE_HEIGHT,
51144
51237
  style: {
51145
51238
  fontSize: `${subLabelFontSize}px`
51146
51239
  },
@@ -51151,7 +51244,7 @@ const MultiRadialChart = ({
51151
51244
  }
51152
51245
  return jsxRuntime.jsx("tspan", {
51153
51246
  x: "0",
51154
- dy: index === 0 ? 0 : 18,
51247
+ dy: index === 0 ? 0 : DEFAULT_LINE_HEIGHT,
51155
51248
  className: "ff-center-text",
51156
51249
  style: {
51157
51250
  fontSize: `${subLabelFontSize}px`
@@ -51161,16 +51254,19 @@ const MultiRadialChart = ({
51161
51254
  })
51162
51255
  })
51163
51256
  })]
51164
- })
51165
- }), tooltip.visible && jsxRuntime.jsx("div", {
51166
- className: "ff-multi-radial-tooltip",
51167
- style: {
51168
- top: tooltip.y + 10,
51169
- left: tooltip.x + 100,
51170
- zIndex: 1000
51171
- },
51172
- children: tooltip.content
51173
- })]
51257
+ })]
51258
+ })
51259
+ }), tooltip.visible && jsxRuntime.jsx("div", {
51260
+ className: "ff-multi-radial-tooltip",
51261
+ style: {
51262
+ position: 'fixed',
51263
+ top: `${tooltip.y - (tooltip.isArc ? 5 : -10)}px`,
51264
+ left: `${tooltip.x + (tooltip.isArc ? 60 : 15)}px`,
51265
+ zIndex: 1000,
51266
+ transform: tooltip.isArc ? 'translateX(-50%)' : 'none',
51267
+ pointerEvents: 'none'
51268
+ },
51269
+ children: tooltip.content
51174
51270
  }), isLegendDetails && renderLegend(normalizedBarValues.map(value => ({
51175
51271
  ...value,
51176
51272
  label: value?.barLabel,
@@ -58947,12 +59043,15 @@ const ChildComment = ({
58947
59043
  })
58948
59044
  }), isEditDeleteActionAllowed && deleteEnable && jsxRuntime.jsx("div", {
58949
59045
  className: "action-icon",
58950
- onClick: () => handleDeleteNode(comment.id),
58951
59046
  children: jsxRuntime.jsx(Tooltip, {
58952
59047
  title: "Delete",
58953
59048
  children: jsxRuntime.jsx(Icon, {
58954
59049
  name: "delete",
58955
59050
  color: "var(--ff-delete-button-attachment)",
59051
+ onClick: () => {
59052
+ if (showInput) return;
59053
+ handleDeleteNode(comment.id);
59054
+ },
58956
59055
  disabled: editMode || showInput || isDisable,
58957
59056
  hoverEffect: true
58958
59057
  })
@@ -59392,6 +59491,22 @@ const Comments = ({
59392
59491
  });
59393
59492
  };
59394
59493
 
59494
+ const useTriggerControl = () => {
59495
+ const canTriggerRef = React.useRef(true);
59496
+ const canTrigger = () => canTriggerRef.current;
59497
+ const setTriggered = () => {
59498
+ canTriggerRef.current = false;
59499
+ };
59500
+ const resetTrigger = () => {
59501
+ canTriggerRef.current = true;
59502
+ };
59503
+ return {
59504
+ canTrigger,
59505
+ setTriggered,
59506
+ resetTrigger
59507
+ };
59508
+ };
59509
+
59395
59510
  const PopUpModal = ({
59396
59511
  isOpen,
59397
59512
  onClose,
@@ -72428,6 +72543,7 @@ const PhoneInputField = ({
72428
72543
  const [phone, setPhone] = React.useState(initialValue);
72429
72544
  const [isFocused, setIsFocused] = React.useState(false);
72430
72545
  const [isValid, setIsValid] = React.useState(initialIsValid);
72546
+ const [selectedCountry, setSelectedCountry] = React.useState(country);
72431
72547
  React.useEffect(() => {
72432
72548
  if (initialValue) {
72433
72549
  let formattedPhone = initialValue;
@@ -72437,12 +72553,25 @@ const PhoneInputField = ({
72437
72553
  setPhone(formattedPhone);
72438
72554
  }
72439
72555
  }, [initialValue]);
72440
- const handlePhoneChange = phone => {
72556
+ const handlePhoneChange = (phone, countryData) => {
72557
+ const newCountryCode = countryData?.countryCode?.toLowerCase();
72441
72558
  const cleanedPhone = phone.replace(/[^0-9+]/g, '');
72442
- setPhone(cleanedPhone);
72443
- onChange(cleanedPhone);
72444
- const isPhoneValid = isValidPhoneNumber(cleanedPhone);
72445
- setIsValid(isPhoneValid);
72559
+ if (selectedCountry?.toLowerCase() !== newCountryCode) {
72560
+ setPhone(countryData?.dialCode);
72561
+ onChange(countryData?.dialCode);
72562
+ setSelectedCountry(newCountryCode);
72563
+ setIsValid(true);
72564
+ return;
72565
+ }
72566
+ let formattedPhone = cleanedPhone;
72567
+ if (!formattedPhone.startsWith('+')) {
72568
+ formattedPhone = `+${formattedPhone}`;
72569
+ }
72570
+ setPhone(formattedPhone);
72571
+ onChange(formattedPhone);
72572
+ const isPhoneValid = isValidPhoneNumber(formattedPhone);
72573
+ const isOnlyCountryCode = phone && phone.replace(/[^\d]/g, '').length <= 3;
72574
+ setIsValid(isPhoneValid || isOnlyCountryCode);
72446
72575
  };
72447
72576
  const handleFocus = event => {
72448
72577
  setIsFocused(true);
@@ -72451,8 +72580,9 @@ const PhoneInputField = ({
72451
72580
  const handleBlur = event => {
72452
72581
  setIsFocused(false);
72453
72582
  if (onBlur) onBlur(event);
72583
+ const isOnlyCountryCode = phone && phone.replace(/[^\d]/g, '').length <= 3;
72454
72584
  const isPhoneValid = isValidPhoneNumber(phone);
72455
- setIsValid(isPhoneValid);
72585
+ setIsValid(isPhoneValid || isOnlyCountryCode);
72456
72586
  };
72457
72587
  return jsxRuntime.jsxs("div", {
72458
72588
  id: id,
@@ -74034,19 +74164,21 @@ function getUpdatedPartialSelect(tableData, prevPartialSelect) {
74034
74164
  return new Set([...prevPartialSelect].filter(id => allCurrentIds.has(id)));
74035
74165
  }
74036
74166
  function getUpdatedExpandedRows(tableData, prevExpandedRows, defaultExpanded) {
74037
- const needToExpand = {
74167
+ const sectionTitlesToExpand = {
74038
74168
  Steps: 'Steps',
74039
- Depends: 'Depends on Script',
74040
- PRE: "Pre conditions",
74041
- POST: "Post conditions"
74169
+ Depends: 'Depends on Scripts',
74170
+ PRE: 'Pre Conditions',
74171
+ POST: 'Post Conditions'
74042
74172
  };
74043
74173
  const newExpandedRows = {};
74044
74174
  tableData.forEach(section => {
74045
- newExpandedRows[section.title] = section.title in prevExpandedRows ? prevExpandedRows[section.title] ?? false : section.title === needToExpand[defaultExpanded];
74175
+ const title = section.title;
74176
+ const wasPreviouslyExpanded = title in prevExpandedRows;
74177
+ const shouldExpandByDefault = defaultExpanded === 'All' ? Object.values(sectionTitlesToExpand).includes(title) : title === sectionTitlesToExpand[defaultExpanded];
74178
+ newExpandedRows[title] = wasPreviouslyExpanded ? prevExpandedRows[title] ?? false : shouldExpandByDefault;
74046
74179
  });
74047
74180
  return newExpandedRows;
74048
74181
  }
74049
- //?
74050
74182
  const gettingBlockMap = (tableData, selectedRows, stepPartialSelect) => {
74051
74183
  let dynamicUpdate = getBlockMap(tableData);
74052
74184
  const updatedSelectedRows = new Set(selectedRows.Steps);
@@ -110038,6 +110170,7 @@ exports.AttachMedia = AttachMedia;
110038
110170
  exports.AttachmentButton = AttachmentButton;
110039
110171
  exports.Avatar = Avatar;
110040
110172
  exports.BASE64_REGEX = BASE64_REGEX;
110173
+ exports.BIG_END_WHITESPACE = BIG_END_WHITESPACE;
110041
110174
  exports.BINARY_NUMBER_REGEX = BINARY_NUMBER_REGEX;
110042
110175
  exports.BODY_TAG_TYPE_VALIDATION = BODY_TAG_TYPE_VALIDATION;
110043
110176
  exports.BarChart = BarChart;
@@ -110263,4 +110396,5 @@ exports.useClickOutside = useClickOutside;
110263
110396
  exports.useFileDropzone = useFileDropzone;
110264
110397
  exports.useKeyboardActions = useKeyboardActions;
110265
110398
  exports.useTheme = useTheme;
110399
+ exports.useTriggerControl = useTriggerControl;
110266
110400
  //# sourceMappingURL=index.cjs.map