pixel-react 1.7.3 → 1.7.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 (163) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/lib/components/Charts/BarChart/BarChart.d.ts +1 -0
  3. package/lib/components/StatusCard/types.d.ts +7 -1
  4. package/lib/components/TableTree/TableTree copy.d.ts +25 -0
  5. package/lib/index.d.ts +8 -1
  6. package/lib/index.esm.js +263 -150
  7. package/lib/index.esm.js.map +1 -1
  8. package/lib/index.js +263 -150
  9. package/lib/index.js.map +1 -1
  10. package/lib/tsconfig.tsbuildinfo +1 -1
  11. package/package.json +1 -1
  12. package/src/assets/icons/approval_pending.svg +8 -8
  13. package/src/assets/icons/configuration.svg +3 -3
  14. package/src/assets/icons/defects.svg +8 -8
  15. package/src/assets/icons/element.svg +4 -4
  16. package/src/assets/icons/project_element.svg +4 -4
  17. package/src/assets/icons/step_group.svg +10 -10
  18. package/src/assets/icons/variable.svg +3 -3
  19. package/src/assets/icons/web_service_icon.svg +3 -3
  20. package/src/components/Charts/BarChart/BarChart.stories.tsx +3 -0
  21. package/src/components/Charts/BarChart/BarChart.tsx +7 -0
  22. package/src/components/Excel/ExcelFile/ExcelFileComponents/ColumnIndicator.tsx +1 -1
  23. package/src/components/Excel/ExcelFile/ExcelFileComponents/CornerIndicator.tsx +8 -7
  24. package/src/components/Excel/ExcelFile/ExcelFileComponents/HeaderRow.tsx +3 -1
  25. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.scss +21 -2
  26. package/src/components/MenuOption/MenuOption.tsx +29 -20
  27. package/src/components/StatusCard/StatusCard.scss +47 -4
  28. package/src/components/StatusCard/StatusCard.stories.tsx +1 -0
  29. package/src/components/StatusCard/StatusCard.tsx +28 -5
  30. package/src/components/StatusCard/types.ts +15 -10
  31. package/src/components/Toastify/Toastify.tsx +1 -0
  32. package/lib/1fb4472b34e4fe07.css +0 -1
  33. package/lib/StyleGuide/ColorPalette/ColorPalette.stories.d.ts +0 -6
  34. package/lib/StyleGuide/Typography/Typography.stories.d.ts +0 -6
  35. package/lib/components/Accordion/Accordion.stories.d.ts +0 -6
  36. package/lib/components/AddButton/AddButton.d.ts +0 -5
  37. package/lib/components/AddButton/AddButton.stories.d.ts +0 -6
  38. package/lib/components/AddButton/index.d.ts +0 -1
  39. package/lib/components/AddButton/types.d.ts +0 -4
  40. package/lib/components/AddResourceButton/AddButton.stories.d.ts +0 -8
  41. package/lib/components/AddVariables/AddVariables.d.ts +0 -5
  42. package/lib/components/AddVariables/index.d.ts +0 -1
  43. package/lib/components/AddVariables/types.d.ts +0 -35
  44. package/lib/components/AllProjectsDropdown/AllProjectsDropdown.stories.d.ts +0 -7
  45. package/lib/components/AppHeader/AppHeader.stories.d.ts +0 -7
  46. package/lib/components/AttachImage/AttachImage.stories.d.ts +0 -7
  47. package/lib/components/AttachmentButton/AttachmentButton.stories.d.ts +0 -9
  48. package/lib/components/Avatar/Avatar.stories.d.ts +0 -10
  49. package/lib/components/Button/Button.stories.d.ts +0 -13
  50. package/lib/components/Charts/BarChart/BarChart.stories.d.ts +0 -6
  51. package/lib/components/Charts/DashboardDonutChart/DashboardDonutChart.stories.d.ts +0 -7
  52. package/lib/components/Charts/DonutChart/DonutChart.stories.d.ts +0 -6
  53. package/lib/components/Charts/IconRadialChart/IconRadialChart.stories.d.ts +0 -8
  54. package/lib/components/Charts/LineChart/LineChart.stories.d.ts +0 -7
  55. package/lib/components/Charts/MultiRadialChart/MultiRadialChart.stories.d.ts +0 -8
  56. package/lib/components/Charts/PieChart/PieChart.stories.d.ts +0 -7
  57. package/lib/components/Charts/RadialChart/RadialChart.stories.d.ts +0 -6
  58. package/lib/components/Checkbox/Checkbox.stories.d.ts +0 -8
  59. package/lib/components/Chip/Chip.stories.d.ts +0 -14
  60. package/lib/components/ConnectingBranch/ConnectingBranch.stories.d.ts +0 -6
  61. package/lib/components/DatePicker/DatePicker.stories.d.ts +0 -9
  62. package/lib/components/DragAndDrop/DragAndDrop.stories.d.ts +0 -6
  63. package/lib/components/Drawer/Drawer.stories.d.ts +0 -12
  64. package/lib/components/EditTextField/EditTextField.stories.d.ts +0 -10
  65. package/lib/components/Editor/Editor.stories.d.ts +0 -6
  66. package/lib/components/Excel/ExcelFile.stories.d.ts +0 -6
  67. package/lib/components/ExcelFile/ChangeExcelStyles.d.ts +0 -14
  68. package/lib/components/ExcelFile/ColorBarSelector/ColorBarSelector.d.ts +0 -8
  69. package/lib/components/ExcelFile/ContextMenu/ContextMenu.d.ts +0 -4
  70. package/lib/components/ExcelFile/ExcelFile/Excel/ActiveCell.d.ts +0 -7
  71. package/lib/components/ExcelFile/ExcelFile/Excel/Cell.d.ts +0 -4
  72. package/lib/components/ExcelFile/ExcelFile/Excel/ColumnIndicator.d.ts +0 -5
  73. package/lib/components/ExcelFile/ExcelFile/Excel/Copied.d.ts +0 -3
  74. package/lib/components/ExcelFile/ExcelFile/Excel/CornerIndicator.d.ts +0 -5
  75. package/lib/components/ExcelFile/ExcelFile/Excel/DataEditor.d.ts +0 -5
  76. package/lib/components/ExcelFile/ExcelFile/Excel/DataViewer.d.ts +0 -8
  77. package/lib/components/ExcelFile/ExcelFile/Excel/FloatingRect.d.ts +0 -10
  78. package/lib/components/ExcelFile/ExcelFile/Excel/HeaderRow.d.ts +0 -3
  79. package/lib/components/ExcelFile/ExcelFile/Excel/Row.d.ts +0 -3
  80. package/lib/components/ExcelFile/ExcelFile/Excel/RowIndicator.d.ts +0 -5
  81. package/lib/components/ExcelFile/ExcelFile/Excel/Selected.d.ts +0 -3
  82. package/lib/components/ExcelFile/ExcelFile/Excel/Spreadsheet.d.ts +0 -80
  83. package/lib/components/ExcelFile/ExcelFile/Excel/Table.d.ts +0 -3
  84. package/lib/components/ExcelFile/ExcelFile/Excel/actions.d.ts +0 -174
  85. package/lib/components/ExcelFile/ExcelFile/Excel/areModelsEqual.d.ts +0 -1
  86. package/lib/components/ExcelFile/ExcelFile/Excel/context.d.ts +0 -8
  87. package/lib/components/ExcelFile/ExcelFile/Excel/engine/engine.d.ts +0 -22
  88. package/lib/components/ExcelFile/ExcelFile/Excel/engine/formula.d.ts +0 -17
  89. package/lib/components/ExcelFile/ExcelFile/Excel/engine/index.d.ts +0 -2
  90. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-graph.d.ts +0 -21
  91. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-hash.d.ts +0 -3
  92. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-set.d.ts +0 -24
  93. package/lib/components/ExcelFile/ExcelFile/Excel/index.d.ts +0 -13
  94. package/lib/components/ExcelFile/ExcelFile/Excel/matrix.d.ts +0 -67
  95. package/lib/components/ExcelFile/ExcelFile/Excel/point-range.d.ts +0 -22
  96. package/lib/components/ExcelFile/ExcelFile/Excel/point.d.ts +0 -11
  97. package/lib/components/ExcelFile/ExcelFile/Excel/reducer.d.ts +0 -27
  98. package/lib/components/ExcelFile/ExcelFile/Excel/selection.d.ts +0 -95
  99. package/lib/components/ExcelFile/ExcelFile/Excel/types.d.ts +0 -178
  100. package/lib/components/ExcelFile/ExcelFile/Excel/use-dispatch.d.ts +0 -3
  101. package/lib/components/ExcelFile/ExcelFile/Excel/use-selector.d.ts +0 -3
  102. package/lib/components/ExcelFile/ExcelFile/Excel/util.d.ts +0 -44
  103. package/lib/components/ExcelFile/ExcelFile/ExcelFile.d.ts +0 -19
  104. package/lib/components/ExcelFile/ExcelFile.stories.d.ts +0 -6
  105. package/lib/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.d.ts +0 -12
  106. package/lib/components/ExcelFile/ExcelToolBar/ExcelToolBar.d.ts +0 -15
  107. package/lib/components/ExcelFile/ImportExcelStyles.d.ts +0 -24
  108. package/lib/components/ExcelFile/Types.d.ts +0 -129
  109. package/lib/components/ExcelFile/index.d.ts +0 -1
  110. package/lib/components/ExpandableMenu/ExpandableMenu.stories.d.ts +0 -7
  111. package/lib/components/FF_Captcha/captcha.stories.d.ts +0 -8
  112. package/lib/components/FileDropzone/FileDropzone.stories.d.ts +0 -8
  113. package/lib/components/Form/Form.stories.d.ts +0 -7
  114. package/lib/components/GridLayout/GridLayout.stories.d.ts +0 -8
  115. package/lib/components/HighlightText/HighlightText.stories.d.ts +0 -6
  116. package/lib/components/Icon/Icon.stories.d.ts +0 -8
  117. package/lib/components/IconButton/IconButton.stories.d.ts +0 -7
  118. package/lib/components/IconRadioGroup/IconRadioGroup.stories.d.ts +0 -7
  119. package/lib/components/Input/Input.stories.d.ts +0 -9
  120. package/lib/components/InputWithDropdown/InputWithDropdown.stories.d.ts +0 -9
  121. package/lib/components/LabelEditTextField/LabelEditTextField.stories.d.ts +0 -13
  122. package/lib/components/LazyLoad/LazyLoad.stories.d.ts +0 -6
  123. package/lib/components/MachineInputField/MachineInputField.stories.d.ts +0 -6
  124. package/lib/components/MenuOption/MenuOption.stories.d.ts +0 -16
  125. package/lib/components/MiniModal/MiniModal.stories.d.ts +0 -10
  126. package/lib/components/Modal/Modal.stories.d.ts +0 -7
  127. package/lib/components/ModulesChip/ModuleChip.stories.d.ts +0 -6
  128. package/lib/components/MultiSelect/MultiSelect.stories.d.ts +0 -11
  129. package/lib/components/NLPInput/NlpInput.stories.d.ts +0 -7
  130. package/lib/components/Paper/Paper.stories.d.ts +0 -11
  131. package/lib/components/RadioButton/RadioButton.stories.d.ts +0 -10
  132. package/lib/components/RadioGroup/RadioGroup.stories.d.ts +0 -9
  133. package/lib/components/Search/Search.stories.d.ts +0 -6
  134. package/lib/components/Select/Select.stories.d.ts +0 -14
  135. package/lib/components/Select/components/Dropdown/Dropdown.d.ts +0 -4
  136. package/lib/components/Select/components/Dropdown/dropdownTypes.d.ts +0 -17
  137. package/lib/components/SequentialConnectingBranch/SequentialConnectingBranch.stories.d.ts +0 -6
  138. package/lib/components/StateDropdown/StateDropdown.stories.d.ts +0 -10
  139. package/lib/components/StatusButton/StatusButton.stories.d.ts +0 -14
  140. package/lib/components/StatusCard/StatusCard.stories.d.ts +0 -11
  141. package/lib/components/Table/Table.stories.d.ts +0 -13
  142. package/lib/components/TableTree/TableTree.stories.d.ts +0 -7
  143. package/lib/components/Tabs/Tabs.stories.d.ts +0 -9
  144. package/lib/components/TextArea/Textarea.stories.d.ts +0 -9
  145. package/lib/components/Toast/Toast.stories.d.ts +0 -6
  146. package/lib/components/Toastify/Toastify.stories.d.ts +0 -6
  147. package/lib/components/Toggle/Toggle.stories.d.ts +0 -12
  148. package/lib/components/Tooltip/Tooltip.stories.d.ts +0 -15
  149. package/lib/components/Typography/Typography.stories.d.ts +0 -10
  150. package/lib/components/VariableInput/VariableInput.stories.d.ts +0 -6
  151. package/lib/utils/checkEmpty/checkEmpty.stories.d.ts +0 -6
  152. package/lib/utils/compareArrays/compareArrays.stories.d.ts +0 -6
  153. package/lib/utils/compareObjects/compareObjects.stories.d.ts +0 -6
  154. package/lib/utils/debounce/debounce.stories.d.ts +0 -6
  155. package/lib/utils/ffID/ffID.stories.d.ts +0 -6
  156. package/lib/utils/find/findAndInsert.d.ts +0 -7
  157. package/lib/utils/find/findAndInsert.stories.d.ts +0 -7
  158. package/lib/utils/findAndInsert/findAndInsert.stories.d.ts +0 -7
  159. package/lib/utils/getEncryptedData/getEncryptedData.stories.d.ts +0 -6
  160. package/lib/utils/getExtension/getExtension.stories.d.ts +0 -6
  161. package/lib/utils/getSequentialPayload/getSequentialPayload.stories.d.ts +0 -10
  162. package/lib/utils/throttle/throttle.stories.d.ts +0 -6
  163. package/lib/utils/truncateText/truncateText.stories.d.ts +0 -6
package/lib/index.js CHANGED
@@ -3200,9 +3200,9 @@ const OptionCard = ({
3200
3200
  const optionCardRef = React.useRef(null);
3201
3201
  React.useEffect(() => {
3202
3202
  if (optionCardRef?.current) {
3203
- const rect = optionCardRef?.current?.getBoundingClientRect();
3204
- setOptionsHeight(rect?.height);
3205
- setOptionsWidth(rect?.width);
3203
+ const rect = optionCardRef.current.getBoundingClientRect();
3204
+ setOptionsHeight(rect.height);
3205
+ setOptionsWidth(rect.width);
3206
3206
  }
3207
3207
  }, []);
3208
3208
  useClickOutside(menuRef, closeDropdown, [optionCardRef]);
@@ -3215,7 +3215,7 @@ const OptionCard = ({
3215
3215
  };
3216
3216
  case 'down':
3217
3217
  return {
3218
- top: menuPosition.top + 20,
3218
+ top: menuPosition.top + menuPosition.height + 7,
3219
3219
  left: menuPosition.left - 4
3220
3220
  };
3221
3221
  case 'left':
@@ -3226,23 +3226,25 @@ const OptionCard = ({
3226
3226
  case 'right':
3227
3227
  return {
3228
3228
  top: menuPosition.top - 4,
3229
- left: menuPosition.left + 20
3229
+ left: menuPosition.left + menuPosition.height + 20
3230
3230
  };
3231
3231
  default:
3232
3232
  return {
3233
- top: menuPosition.bottom,
3234
- left: menuPosition.rightSpaceAvailable + 12
3233
+ top: menuPosition.top,
3234
+ left: menuPosition.left
3235
3235
  };
3236
3236
  }
3237
3237
  })();
3238
+ const adjustedStyle = {
3239
+ top: Math.min(Math.max(style.top, 0), window.innerHeight - optionsHeight),
3240
+ left: Math.min(Math.max(style.left, 0), window.innerWidth - optionsWidth),
3241
+ zIndex
3242
+ };
3238
3243
  return /*#__PURE__*/reactDom.createPortal(jsxRuntime.jsx("div", {
3239
3244
  className: classNames('ff-option-card', [{
3240
3245
  'ff-option-card--primary': variant === 'primary'
3241
3246
  }], currentTheme),
3242
- style: {
3243
- ...style,
3244
- zIndex
3245
- },
3247
+ style: adjustedStyle,
3246
3248
  ref: optionCardRef,
3247
3249
  children: options.map(opt => jsxRuntime.jsx(Option$1, {
3248
3250
  option: opt,
@@ -3276,26 +3278,28 @@ const MenuOption = ({
3276
3278
  right: 0
3277
3279
  });
3278
3280
  const closeDropDown = () => setIsClicked(false);
3279
- const onIconClickHandler = () => {
3280
- onClick();
3281
- calculateDims();
3282
- setIsClicked(prev => !prev);
3283
- };
3284
- const handleOptionClick = option => {
3285
- onOptionClick(option);
3286
- closeDropDown();
3287
- };
3288
3281
  const calculateDims = () => {
3289
3282
  if (targetRef?.current) {
3290
3283
  const rect = targetRef.current.getBoundingClientRect();
3284
+ const containerScrollTop = targetRef.current?.offsetParent?.scrollTop || 0;
3285
+ const containerScrollLeft = targetRef.current?.offsetParent?.scrollLeft || 0;
3291
3286
  setMenuPosition({
3292
- top: rect.top + window.scrollY,
3293
- left: rect.left + window.scrollX,
3287
+ top: rect.top + window.scrollY - containerScrollTop,
3288
+ left: rect.left + window.scrollX - containerScrollLeft,
3294
3289
  height: rect.height,
3295
3290
  right: rect.right
3296
3291
  });
3297
3292
  }
3298
3293
  };
3294
+ const onIconClickHandler = () => {
3295
+ onClick();
3296
+ calculateDims();
3297
+ setIsClicked(prev => !prev);
3298
+ };
3299
+ const handleOptionClick = option => {
3300
+ onOptionClick(option);
3301
+ closeDropDown();
3302
+ };
3299
3303
  return jsxRuntime.jsxs("div", {
3300
3304
  className: "ff-menu-option-container",
3301
3305
  ref: menuRef,
@@ -8002,7 +8006,7 @@ function createFormControl(props = {}) {
8002
8006
  timer = setTimeout(callback, wait);
8003
8007
  };
8004
8008
  const _updateValid = async (shouldUpdateValid) => {
8005
- if (!props.disabled && (_proxyFormState.isValid || shouldUpdateValid)) {
8009
+ if (!_options.disabled && (_proxyFormState.isValid || shouldUpdateValid)) {
8006
8010
  const isValid = _options.resolver
8007
8011
  ? isEmptyObject((await _executeSchema()).errors)
8008
8012
  : await executeBuiltInValidation(_fields, true);
@@ -8014,7 +8018,7 @@ function createFormControl(props = {}) {
8014
8018
  }
8015
8019
  };
8016
8020
  const _updateIsValidating = (names, isValidating) => {
8017
- if (!props.disabled &&
8021
+ if (!_options.disabled &&
8018
8022
  (_proxyFormState.isValidating || _proxyFormState.validatingFields)) {
8019
8023
  (names || Array.from(_names.mount)).forEach((name) => {
8020
8024
  if (name) {
@@ -8030,7 +8034,7 @@ function createFormControl(props = {}) {
8030
8034
  }
8031
8035
  };
8032
8036
  const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {
8033
- if (args && method && !props.disabled) {
8037
+ if (args && method && !_options.disabled) {
8034
8038
  _state.action = true;
8035
8039
  if (shouldUpdateFieldsAndState && Array.isArray(get$1(_fields, name))) {
8036
8040
  const fieldValues = method(get$1(_fields, name), args.argA, args.argB);
@@ -8094,7 +8098,7 @@ function createFormControl(props = {}) {
8094
8098
  const output = {
8095
8099
  name,
8096
8100
  };
8097
- if (!props.disabled) {
8101
+ if (!_options.disabled) {
8098
8102
  const disabledField = !!(get$1(_fields, name) &&
8099
8103
  get$1(_fields, name)._f &&
8100
8104
  get$1(_fields, name)._f.disabled);
@@ -8230,7 +8234,7 @@ function createFormControl(props = {}) {
8230
8234
  }
8231
8235
  _names.unMount = new Set();
8232
8236
  };
8233
- const _getDirty = (name, data) => !props.disabled &&
8237
+ const _getDirty = (name, data) => !_options.disabled &&
8234
8238
  (name && data && set$1(_formValues, name, data),
8235
8239
  !deepEqual(getValues(), _defaultValues));
8236
8240
  const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {
@@ -8546,7 +8550,7 @@ function createFormControl(props = {}) {
8546
8550
  };
8547
8551
  const register = (name, options = {}) => {
8548
8552
  let field = get$1(_fields, name);
8549
- const disabledIsDefined = isBoolean(options.disabled) || isBoolean(props.disabled);
8553
+ const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);
8550
8554
  set$1(_fields, name, {
8551
8555
  ...(field || {}),
8552
8556
  _f: {
@@ -8562,7 +8566,7 @@ function createFormControl(props = {}) {
8562
8566
  field,
8563
8567
  disabled: isBoolean(options.disabled)
8564
8568
  ? options.disabled
8565
- : props.disabled,
8569
+ : _options.disabled,
8566
8570
  name,
8567
8571
  value: options.value,
8568
8572
  });
@@ -8572,7 +8576,7 @@ function createFormControl(props = {}) {
8572
8576
  }
8573
8577
  return {
8574
8578
  ...(disabledIsDefined
8575
- ? { disabled: options.disabled || props.disabled }
8579
+ ? { disabled: options.disabled || _options.disabled }
8576
8580
  : {}),
8577
8581
  ...(_options.progressive
8578
8582
  ? {
@@ -8656,6 +8660,12 @@ function createFormControl(props = {}) {
8656
8660
  e.preventDefault && e.preventDefault();
8657
8661
  e.persist && e.persist();
8658
8662
  }
8663
+ if (_options.disabled) {
8664
+ if (onInvalid) {
8665
+ await onInvalid({ ..._formState.errors }, e);
8666
+ }
8667
+ return;
8668
+ }
8659
8669
  let fieldValues = cloneObject(_formValues);
8660
8670
  _subjects.state.next({
8661
8671
  isSubmitting: true,
@@ -8834,7 +8844,9 @@ function createFormControl(props = {}) {
8834
8844
  : fieldReference.ref;
8835
8845
  if (fieldRef.focus) {
8836
8846
  fieldRef.focus();
8837
- options.shouldSelect && fieldRef.select();
8847
+ options.shouldSelect &&
8848
+ isFunction$1(fieldRef.select) &&
8849
+ fieldRef.select();
8838
8850
  }
8839
8851
  }
8840
8852
  };
@@ -9035,11 +9047,6 @@ function useForm(props = {}) {
9035
9047
  values: control._getWatch(),
9036
9048
  });
9037
9049
  }, [props.shouldUnregister, control]);
9038
- React.useEffect(() => {
9039
- if (_formControl.current) {
9040
- _formControl.current.watch = _formControl.current.watch.bind({});
9041
- }
9042
- }, [formState]);
9043
9050
  _formControl.current.formState = getProxyFormState(formState, control);
9044
9051
  return _formControl.current;
9045
9052
  }
@@ -13252,6 +13259,53 @@ function setYear(date, year, options) {
13252
13259
  return date_;
13253
13260
  }
13254
13261
 
13262
+ const FIVE_WEEKS = 5;
13263
+ const FOUR_WEEKS = 4;
13264
+ /**
13265
+ * Return the number of weeks to display in the broadcast calendar.
13266
+ *
13267
+ * @since 9.4.0
13268
+ */
13269
+ function getBroadcastWeeksInMonth(month, dateLib) {
13270
+ // Get the first day of the month
13271
+ const firstDayOfMonth = dateLib.startOfMonth(month);
13272
+ // Get the day of the week for the first day of the month (1-7, where 1 is Monday)
13273
+ const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;
13274
+ const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);
13275
+ const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);
13276
+ const numberOfWeeks = month.getMonth() === lastDateOfLastWeek.getMonth() ? FIVE_WEEKS : FOUR_WEEKS;
13277
+ return numberOfWeeks;
13278
+ }
13279
+
13280
+ /**
13281
+ * Return the start date of the week in the broadcast calendar.
13282
+ *
13283
+ * @since 9.4.0
13284
+ */
13285
+ function startOfBroadcastWeek(date, dateLib) {
13286
+ const firstOfMonth = dateLib.startOfMonth(date);
13287
+ const dayOfWeek = firstOfMonth.getDay();
13288
+ if (dayOfWeek === 1) {
13289
+ return firstOfMonth;
13290
+ } else if (dayOfWeek === 0) {
13291
+ return dateLib.addDays(firstOfMonth, -1 * 6);
13292
+ } else {
13293
+ return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));
13294
+ }
13295
+ }
13296
+
13297
+ /**
13298
+ * Return the end date of the week in the broadcast calendar.
13299
+ *
13300
+ * @since 9.4.0
13301
+ */
13302
+ function endOfBroadcastWeek(date, dateLib) {
13303
+ const startDate = startOfBroadcastWeek(date, dateLib);
13304
+ const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);
13305
+ const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);
13306
+ return endDate;
13307
+ }
13308
+
13255
13309
  /**
13256
13310
  * A wrapper class around [date-fns](http://date-fns.org) sharing the same
13257
13311
  * options. Methods of this class can be overridden using the
@@ -13332,6 +13386,15 @@ class DateLib {
13332
13386
  this.differenceInCalendarMonths = (dateLeft, dateRight) => {
13333
13387
  return this.overrides?.differenceInCalendarMonths ? this.overrides.differenceInCalendarMonths(dateLeft, dateRight) : differenceInCalendarMonths(dateLeft, dateRight);
13334
13388
  };
13389
+ /**
13390
+ * Returns the end of the broadcast week for the given date.
13391
+ *
13392
+ * @param date The original date.
13393
+ * @returns The end of the broadcast week.
13394
+ */
13395
+ this.endOfBroadcastWeek = date => {
13396
+ return this.overrides?.endOfBroadcastWeek ? this.overrides.endOfBroadcastWeek(date, this) : endOfBroadcastWeek(date, this);
13397
+ };
13335
13398
  /**
13336
13399
  * Returns the end of the ISO week for the given date.
13337
13400
  *
@@ -13493,6 +13556,15 @@ class DateLib {
13493
13556
  this.setYear = (date, year) => {
13494
13557
  return this.overrides?.setYear ? this.overrides.setYear(date, year) : setYear(date, year);
13495
13558
  };
13559
+ /**
13560
+ * Returns the start of the broadcast week for the given date.
13561
+ *
13562
+ * @param date The original date.
13563
+ * @returns The start of the broadcast week.
13564
+ */
13565
+ this.startOfBroadcastWeek = date => {
13566
+ return this.overrides?.startOfBroadcastWeek ? this.overrides.startOfBroadcastWeek(date, this) : startOfBroadcastWeek(date, this);
13567
+ };
13496
13568
  /**
13497
13569
  * Returns the start of the day for the given date.
13498
13570
  *
@@ -14078,7 +14150,8 @@ function getDataAttributes(props) {
14078
14150
  "data-mode": props.mode ?? undefined,
14079
14151
  "data-required": "required" in props ? props.required : undefined,
14080
14152
  "data-multiple-months": props.numberOfMonths && props.numberOfMonths > 1 || undefined,
14081
- "data-week-numbers": props.showWeekNumber || undefined
14153
+ "data-week-numbers": props.showWeekNumber || undefined,
14154
+ "data-broadcast-calendar": props.broadcastCalendar || undefined
14082
14155
  };
14083
14156
  Object.entries(props).forEach(([key, val]) => {
14084
14157
  if (key.startsWith("data-")) {
@@ -14144,7 +14217,7 @@ function formatDay(date, options, dateLib) {
14144
14217
  */
14145
14218
  function formatMonthDropdown(/** The month number to format. */
14146
14219
  monthNumber, /** The locale to use for formatting. */
14147
- locale = enUS) {
14220
+ locale) {
14148
14221
  return locale.localize?.month(monthNumber);
14149
14222
  }
14150
14223
 
@@ -14248,7 +14321,7 @@ function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {
14248
14321
  return a - b;
14249
14322
  });
14250
14323
  const options = sortedMonths.map(value => {
14251
- const label = formatters.formatMonthDropdown(value, dateLib.options.locale);
14324
+ const label = formatters.formatMonthDropdown(value, dateLib.options.locale ?? enUS);
14252
14325
  const month = dateLib.Date ? new dateLib.Date(year, value) : new Date(year, value);
14253
14326
  const disabled = navStart && month < startOfMonth(navStart) || navEnd && month > startOfMonth(navEnd) || false;
14254
14327
  return {
@@ -14623,7 +14696,8 @@ function tzName(tz, date) {
14623
14696
  */
14624
14697
  function getWeekdays(/** The date library. */
14625
14698
  dateLib, /** Use ISOWeek instead of locale/ */
14626
- ISOWeek, timeZone) {
14699
+ ISOWeek, timeZone, /** @since 9.4.0 */
14700
+ broadcastCalendar) {
14627
14701
  const date = timeZone ? TZDate.tz(timeZone) : dateLib.Date ? new dateLib.Date() : new Date();
14628
14702
  const start = ISOWeek ? dateLib.startOfISOWeek(date) : dateLib.startOfWeek(date);
14629
14703
  const days = [];
@@ -14826,29 +14900,30 @@ var defaultLabels = /*#__PURE__*/Object.freeze({
14826
14900
  labelYearDropdown: labelYearDropdown
14827
14901
  });
14828
14902
 
14829
- /** The number of days in a month when having 6 weeks. */
14830
- const NrOfDaysWithFixedWeeks = 42;
14831
14903
  /** Return all the dates to display in the calendar. */
14832
14904
  function getDates(displayMonths, maxDate, props, dateLib) {
14833
14905
  const firstMonth = displayMonths[0];
14834
14906
  const lastMonth = displayMonths[displayMonths.length - 1];
14835
14907
  const {
14836
14908
  ISOWeek,
14837
- fixedWeeks
14909
+ fixedWeeks,
14910
+ broadcastCalendar
14838
14911
  } = props ?? {};
14839
14912
  const {
14840
- startOfWeek,
14841
- endOfWeek,
14842
- startOfISOWeek,
14843
- endOfISOWeek,
14844
14913
  addDays,
14845
14914
  differenceInCalendarDays,
14846
14915
  differenceInCalendarMonths,
14916
+ endOfBroadcastWeek,
14917
+ endOfISOWeek,
14918
+ endOfMonth,
14919
+ endOfWeek,
14847
14920
  isAfter,
14848
- endOfMonth
14921
+ startOfBroadcastWeek,
14922
+ startOfISOWeek,
14923
+ startOfWeek
14849
14924
  } = dateLib;
14850
- const startWeekFirstDate = ISOWeek ? startOfISOWeek(firstMonth) : startOfWeek(firstMonth);
14851
- const endWeekLastDate = ISOWeek ? endOfISOWeek(endOfMonth(lastMonth)) : endOfWeek(endOfMonth(lastMonth));
14925
+ const startWeekFirstDate = broadcastCalendar ? startOfBroadcastWeek(firstMonth, dateLib) : ISOWeek ? startOfISOWeek(firstMonth) : startOfWeek(firstMonth);
14926
+ const endWeekLastDate = broadcastCalendar ? endOfBroadcastWeek(lastMonth, dateLib) : ISOWeek ? endOfISOWeek(endOfMonth(lastMonth)) : endOfWeek(endOfMonth(lastMonth));
14852
14927
  const nOfDays = differenceInCalendarDays(endWeekLastDate, startWeekFirstDate);
14853
14928
  const nOfMonths = differenceInCalendarMonths(lastMonth, firstMonth) + 1;
14854
14929
  const dates = [];
@@ -14860,9 +14935,11 @@ function getDates(displayMonths, maxDate, props, dateLib) {
14860
14935
  dates.push(date);
14861
14936
  }
14862
14937
  // If fixed weeks is enabled, add the extra dates to the array
14863
- const extraDates = NrOfDaysWithFixedWeeks * nOfMonths;
14938
+ const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;
14939
+ const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;
14864
14940
  if (fixedWeeks && dates.length < extraDates) {
14865
- for (let i = 0; i < 7; i++) {
14941
+ const daysToAdd = extraDates - dates.length;
14942
+ for (let i = 0; i < daysToAdd; i++) {
14866
14943
  const date = addDays(dates[dates.length - 1], 1);
14867
14944
  dates.push(date);
14868
14945
  }
@@ -14973,25 +15050,29 @@ displayMonths, /** The dates to display in the calendar. */
14973
15050
  dates, /** Options from the props context. */
14974
15051
  props, dateLib) {
14975
15052
  const {
14976
- startOfWeek,
14977
- endOfWeek,
14978
- startOfISOWeek,
15053
+ addDays,
15054
+ endOfBroadcastWeek,
14979
15055
  endOfISOWeek,
14980
15056
  endOfMonth,
14981
- addDays,
15057
+ endOfWeek,
15058
+ getISOWeek,
14982
15059
  getWeek,
14983
- getISOWeek
15060
+ startOfBroadcastWeek,
15061
+ startOfISOWeek,
15062
+ startOfWeek
14984
15063
  } = dateLib;
14985
15064
  const dayPickerMonths = displayMonths.reduce((months, month) => {
14986
- const firstDateOfFirstWeek = props.ISOWeek ? startOfISOWeek(month) : startOfWeek(month);
14987
- const lastDateOfLastWeek = props.ISOWeek ? endOfISOWeek(endOfMonth(month)) : endOfWeek(endOfMonth(month));
15065
+ const firstDateOfFirstWeek = props.broadcastCalendar ? startOfBroadcastWeek(month, dateLib) : props.ISOWeek ? startOfISOWeek(month) : startOfWeek(month);
15066
+ const lastDateOfLastWeek = props.broadcastCalendar ? endOfBroadcastWeek(month, dateLib) : props.ISOWeek ? endOfISOWeek(endOfMonth(month)) : endOfWeek(endOfMonth(month));
14988
15067
  /** The dates to display in the month. */
14989
15068
  const monthDates = dates.filter(date => {
14990
15069
  return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;
14991
15070
  });
14992
- if (props.fixedWeeks && monthDates.length < 42) {
15071
+ const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;
15072
+ if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {
14993
15073
  const extraDates = dates.filter(date => {
14994
- return date > lastDateOfLastWeek && date <= addDays(lastDateOfLastWeek, 7);
15074
+ const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;
15075
+ return date > lastDateOfLastWeek && date <= addDays(lastDateOfLastWeek, daysToAdd);
14995
15076
  });
14996
15077
  monthDates.push(...extraDates);
14997
15078
  }
@@ -15429,27 +15510,30 @@ function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {
15429
15510
  /** Return the next date that should be focused. */
15430
15511
  function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {
15431
15512
  const {
15432
- ISOWeek
15513
+ ISOWeek,
15514
+ broadcastCalendar
15433
15515
  } = props;
15434
15516
  const {
15435
15517
  addDays,
15436
15518
  addMonths,
15437
- addYears,
15438
15519
  addWeeks,
15439
- startOfISOWeek,
15520
+ addYears,
15521
+ endOfBroadcastWeek,
15440
15522
  endOfISOWeek,
15441
- startOfWeek,
15442
15523
  endOfWeek,
15443
15524
  max,
15444
- min
15525
+ min,
15526
+ startOfBroadcastWeek,
15527
+ startOfISOWeek,
15528
+ startOfWeek
15445
15529
  } = dateLib;
15446
15530
  const moveFns = {
15447
15531
  day: addDays,
15448
15532
  week: addWeeks,
15449
15533
  month: addMonths,
15450
15534
  year: addYears,
15451
- startOfWeek: date => ISOWeek ? startOfISOWeek(date) : startOfWeek(date),
15452
- endOfWeek: date => ISOWeek ? endOfISOWeek(date) : endOfWeek(date)
15535
+ startOfWeek: date => broadcastCalendar ? startOfBroadcastWeek(date, dateLib) : ISOWeek ? startOfISOWeek(date) : startOfWeek(date),
15536
+ endOfWeek: date => broadcastCalendar ? endOfBroadcastWeek(date, dateLib) : ISOWeek ? endOfISOWeek(date) : endOfWeek(date)
15453
15537
  };
15454
15538
  let focusableDate = moveFns[moveBy](refDate, moveDir === "after" ? 1 : -1);
15455
15539
  if (moveDir === "before" && navStart) {
@@ -15515,6 +15599,8 @@ function useFocus(props, calendar, getModifiers, isSelected, dateLib) {
15515
15599
  /**
15516
15600
  * Return a function to get the modifiers for a given day.
15517
15601
  *
15602
+ * NOTE: this is not an hook, but a factory for `getModifiers`.
15603
+ *
15518
15604
  * @private
15519
15605
  */
15520
15606
  function useGetModifiers(days, props, dateLib) {
@@ -15523,12 +15609,19 @@ function useGetModifiers(days, props, dateLib) {
15523
15609
  hidden,
15524
15610
  modifiers,
15525
15611
  showOutsideDays,
15612
+ broadcastCalendar,
15526
15613
  today
15527
15614
  } = props;
15528
15615
  const {
15529
15616
  isSameDay,
15530
- isSameMonth
15617
+ isSameMonth,
15618
+ startOfMonth,
15619
+ isBefore,
15620
+ endOfMonth,
15621
+ isAfter
15531
15622
  } = dateLib;
15623
+ const startMonth = props.startMonth && startOfMonth(props.startMonth);
15624
+ const endMonth = props.endMonth && endOfMonth(props.endMonth);
15532
15625
  const internalModifiersMap = {
15533
15626
  [DayFlag.focused]: [],
15534
15627
  [DayFlag.outside]: [],
@@ -15537,20 +15630,18 @@ function useGetModifiers(days, props, dateLib) {
15537
15630
  [DayFlag.today]: []
15538
15631
  };
15539
15632
  const customModifiersMap = {};
15540
- const selectionModifiersMap = {
15541
- [SelectionState.range_end]: [],
15542
- [SelectionState.range_middle]: [],
15543
- [SelectionState.range_start]: [],
15544
- [SelectionState.selected]: []
15545
- };
15546
15633
  for (const day of days) {
15547
15634
  const {
15548
15635
  date,
15549
15636
  displayMonth
15550
15637
  } = day;
15551
15638
  const isOutside = Boolean(displayMonth && !isSameMonth(date, displayMonth));
15639
+ const isBeforeStartMonth = Boolean(startMonth && isBefore(date, startMonth));
15640
+ const isAfterEndMonth = Boolean(endMonth && isAfter(date, endMonth));
15552
15641
  const isDisabled = Boolean(disabled && dateMatchModifiers(date, disabled, dateLib));
15553
- const isHidden = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) || !showOutsideDays && isOutside;
15642
+ const isHidden = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) || isBeforeStartMonth || isAfterEndMonth ||
15643
+ // Broadcast calendar will show outside days as default
15644
+ !broadcastCalendar && !showOutsideDays && isOutside || broadcastCalendar && showOutsideDays === false && isOutside;
15554
15645
  const isToday = isSameDay(date, today ?? (props.timeZone ? TZDate.tz(props.timeZone) : dateLib.Date ? new dateLib.Date() : new Date()));
15555
15646
  if (isOutside) internalModifiersMap.outside.push(day);
15556
15647
  if (isDisabled) internalModifiersMap.disabled.push(day);
@@ -15579,27 +15670,16 @@ function useGetModifiers(days, props, dateLib) {
15579
15670
  [DayFlag.outside]: false,
15580
15671
  [DayFlag.today]: false
15581
15672
  };
15582
- const selectionStates = {
15583
- [SelectionState.range_end]: false,
15584
- [SelectionState.range_middle]: false,
15585
- [SelectionState.range_start]: false,
15586
- [SelectionState.selected]: false
15587
- };
15588
15673
  const customModifiers = {};
15589
15674
  // Find the modifiers for the given day
15590
15675
  for (const name in internalModifiersMap) {
15591
15676
  const days = internalModifiersMap[name];
15592
15677
  dayFlags[name] = days.some(d => d === day);
15593
15678
  }
15594
- for (const name in selectionModifiersMap) {
15595
- const days = selectionModifiersMap[name];
15596
- selectionStates[name] = days.some(d => d === day);
15597
- }
15598
15679
  for (const name in customModifiersMap) {
15599
15680
  customModifiers[name] = customModifiersMap[name].some(d => d === day);
15600
15681
  }
15601
15682
  return {
15602
- ...selectionStates,
15603
15683
  ...dayFlags,
15604
15684
  // custom modifiers should override all the previous ones
15605
15685
  ...customModifiers
@@ -16004,7 +16084,7 @@ function DayPicker(props) {
16004
16084
  };
16005
16085
  const dateLib = new DateLib({
16006
16086
  locale,
16007
- weekStartsOn: props.weekStartsOn,
16087
+ weekStartsOn: props.broadcastCalendar ? 1 : props.weekStartsOn,
16008
16088
  firstWeekContainsDate: props.firstWeekContainsDate,
16009
16089
  useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,
16010
16090
  useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens
@@ -16023,7 +16103,7 @@ function DayPicker(props) {
16023
16103
  ...props.classNames
16024
16104
  }
16025
16105
  };
16026
- }, [props.classNames, props.components, props.dateLib, props.firstWeekContainsDate, props.formatters, props.labels, props.locale, props.useAdditionalDayOfYearTokens, props.useAdditionalWeekYearTokens, props.weekStartsOn]);
16106
+ }, [props.classNames, props.components, props.dateLib, props.firstWeekContainsDate, props.formatters, props.labels, props.locale, props.useAdditionalDayOfYearTokens, props.useAdditionalWeekYearTokens, props.weekStartsOn, props.broadcastCalendar]);
16027
16107
  const {
16028
16108
  captionLayout,
16029
16109
  mode,
@@ -18801,6 +18881,8 @@ function LiveRegion(_ref) {
18801
18881
  // Hide element visually but keep it readable by screen readers
18802
18882
  const visuallyHidden = {
18803
18883
  position: 'fixed',
18884
+ top: 0,
18885
+ left: 0,
18804
18886
  width: 1,
18805
18887
  height: 1,
18806
18888
  margin: -1,
@@ -20093,6 +20175,9 @@ class AbstractPointerSensor {
20093
20175
  passive: false
20094
20176
  });
20095
20177
  this.listeners.add(events.end.name, this.handleEnd);
20178
+ if (events.cancel) {
20179
+ this.listeners.add(events.cancel.name, this.handleCancel);
20180
+ }
20096
20181
  this.windowListeners.add(EventName.Resize, this.handleCancel);
20097
20182
  this.windowListeners.add(EventName.DragStart, preventDefault);
20098
20183
  this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);
@@ -20212,6 +20297,9 @@ class AbstractPointerSensor {
20212
20297
  }
20213
20298
  }
20214
20299
  const events = {
20300
+ cancel: {
20301
+ name: 'pointercancel'
20302
+ },
20215
20303
  move: {
20216
20304
  name: 'pointermove'
20217
20305
  },
@@ -20284,6 +20372,9 @@ MouseSensor.activators = [{
20284
20372
  }
20285
20373
  }];
20286
20374
  const events$2 = {
20375
+ cancel: {
20376
+ name: 'touchcancel'
20377
+ },
20287
20378
  move: {
20288
20379
  name: 'touchmove'
20289
20380
  },
@@ -20485,11 +20576,11 @@ function useScrollIntent(_ref2) {
20485
20576
  }, [disabled, delta, previousDelta]);
20486
20577
  }
20487
20578
  function useCachedNode(draggableNodes, id) {
20488
- const draggableNode = id !== null ? draggableNodes.get(id) : undefined;
20579
+ const draggableNode = id != null ? draggableNodes.get(id) : undefined;
20489
20580
  const node = draggableNode ? draggableNode.node.current : null;
20490
20581
  return useLazyMemo(cachedNode => {
20491
20582
  var _ref;
20492
- if (id === null) {
20583
+ if (id == null) {
20493
20584
  return null;
20494
20585
  } // In some cases, the draggable node can unmount while dragging
20495
20586
  // This is the case for virtualized lists. In those situations,
@@ -20697,7 +20788,26 @@ function useRect(element, measure, fallbackRect) {
20697
20788
  if (measure === void 0) {
20698
20789
  measure = defaultMeasure;
20699
20790
  }
20700
- const [rect, measureRect] = React.useReducer(reducer, null);
20791
+ const [rect, setRect] = React.useState(null);
20792
+ function measureRect() {
20793
+ setRect(currentRect => {
20794
+ if (!element) {
20795
+ return null;
20796
+ }
20797
+ if (element.isConnected === false) {
20798
+ var _ref;
20799
+
20800
+ // Fall back to last rect we measured if the element is
20801
+ // no longer connected to the DOM.
20802
+ return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;
20803
+ }
20804
+ const newRect = measure(element);
20805
+ if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {
20806
+ return currentRect;
20807
+ }
20808
+ return newRect;
20809
+ });
20810
+ }
20701
20811
  const mutationObserver = useMutationObserver({
20702
20812
  callback(records) {
20703
20813
  if (!element) {
@@ -20732,23 +20842,6 @@ function useRect(element, measure, fallbackRect) {
20732
20842
  }
20733
20843
  }, [element]);
20734
20844
  return rect;
20735
- function reducer(currentRect) {
20736
- if (!element) {
20737
- return null;
20738
- }
20739
- if (element.isConnected === false) {
20740
- var _ref;
20741
-
20742
- // Fall back to last rect we measured if the element is
20743
- // no longer connected to the DOM.
20744
- return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;
20745
- }
20746
- const newRect = measure(element);
20747
- if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {
20748
- return currentRect;
20749
- }
20750
- return newRect;
20751
- }
20752
20845
  }
20753
20846
  function useRectDelta(rect) {
20754
20847
  const initialRect = useInitialValue(rect);
@@ -20894,28 +20987,24 @@ function useRects(elements, measure) {
20894
20987
  }
20895
20988
  const [firstElement] = elements;
20896
20989
  const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);
20897
- const [rects, measureRects] = React.useReducer(reducer, defaultValue$2);
20990
+ const [rects, setRects] = React.useState(defaultValue$2);
20991
+ function measureRects() {
20992
+ setRects(() => {
20993
+ if (!elements.length) {
20994
+ return defaultValue$2;
20995
+ }
20996
+ return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));
20997
+ });
20998
+ }
20898
20999
  const resizeObserver = useResizeObserver({
20899
21000
  callback: measureRects
20900
21001
  });
20901
- if (elements.length > 0 && rects === defaultValue$2) {
20902
- measureRects();
20903
- }
20904
21002
  useIsomorphicLayoutEffect$1(() => {
20905
- if (elements.length) {
20906
- elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));
20907
- } else {
20908
- resizeObserver == null ? void 0 : resizeObserver.disconnect();
20909
- measureRects();
20910
- }
21003
+ resizeObserver == null ? void 0 : resizeObserver.disconnect();
21004
+ measureRects();
21005
+ elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));
20911
21006
  }, [elements]);
20912
21007
  return rects;
20913
- function reducer() {
20914
- if (!elements.length) {
20915
- return defaultValue$2;
20916
- }
20917
- return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));
20918
- }
20919
21008
  }
20920
21009
  function getMeasurableNode(node) {
20921
21010
  if (!node) {
@@ -21082,7 +21171,7 @@ function reducer$1(state, action) {
21082
21171
  }
21083
21172
  };
21084
21173
  case Action.DragMove:
21085
- if (!state.draggable.active) {
21174
+ if (state.draggable.active == null) {
21086
21175
  return state;
21087
21176
  }
21088
21177
  return {
@@ -21354,7 +21443,7 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21354
21443
  containers: droppableContainers
21355
21444
  }
21356
21445
  } = state;
21357
- const node = activeId ? draggableNodes.get(activeId) : null;
21446
+ const node = activeId != null ? draggableNodes.get(activeId) : null;
21358
21447
  const activeRects = React.useRef({
21359
21448
  initial: null,
21360
21449
  translated: null
@@ -21389,7 +21478,7 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21389
21478
  const autoScrollOptions = getAutoScrollerOptions();
21390
21479
  const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);
21391
21480
  useLayoutShiftScrollCompensation({
21392
- activeNode: activeId ? draggableNodes.get(activeId) : null,
21481
+ activeNode: activeId != null ? draggableNodes.get(activeId) : null,
21393
21482
  config: autoScrollOptions.layoutShiftCompensation,
21394
21483
  initialRect: initialActiveNodeRect,
21395
21484
  measure: measuringConfiguration.draggable.measure
@@ -21467,6 +21556,7 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21467
21556
 
21468
21557
  const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);
21469
21558
  const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);
21559
+ const activeSensorRef = React.useRef(null);
21470
21560
  const instantiateSensor = React.useCallback((event, _ref2) => {
21471
21561
  let {
21472
21562
  sensor: Sensor,
@@ -21501,6 +21591,7 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21501
21591
  onDragStart
21502
21592
  } = latestProps.current;
21503
21593
  const event = {
21594
+ activatorEvent,
21504
21595
  active: {
21505
21596
  id,
21506
21597
  data: draggableNode.data,
@@ -21519,6 +21610,8 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21519
21610
  type: 'onDragStart',
21520
21611
  event
21521
21612
  });
21613
+ setActiveSensor(activeSensorRef.current);
21614
+ setActivatorEvent(activatorEvent);
21522
21615
  });
21523
21616
  },
21524
21617
  onMove(coordinates) {
@@ -21530,10 +21623,7 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21530
21623
  onEnd: createHandler(Action.DragEnd),
21531
21624
  onCancel: createHandler(Action.DragCancel)
21532
21625
  });
21533
- reactDom.unstable_batchedUpdates(() => {
21534
- setActiveSensor(sensorInstance);
21535
- setActivatorEvent(event.nativeEvent);
21536
- });
21626
+ activeSensorRef.current = sensorInstance;
21537
21627
  function createHandler(type) {
21538
21628
  return async function handler() {
21539
21629
  const {
@@ -21570,6 +21660,7 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21570
21660
  setOver(null);
21571
21661
  setActiveSensor(null);
21572
21662
  setActivatorEvent(null);
21663
+ activeSensorRef.current = null;
21573
21664
  const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';
21574
21665
  if (event) {
21575
21666
  const handler = latestProps.current[eventName];
@@ -21791,7 +21882,7 @@ const DndContext = /*#__PURE__*/React.memo(function DndContext(_ref) {
21791
21882
  });
21792
21883
  const NullContext = /*#__PURE__*/React.createContext(null);
21793
21884
  const defaultRole = 'button';
21794
- const ID_PREFIX$1 = 'Droppable';
21885
+ const ID_PREFIX$1 = 'Draggable';
21795
21886
  function useDraggable(_ref) {
21796
21887
  let {
21797
21888
  id,
@@ -21938,7 +22029,7 @@ function useDroppable(_ref) {
21938
22029
  resizeObserverConnected.current = false;
21939
22030
  resizeObserver.observe(nodeRef.current);
21940
22031
  }, [nodeRef, resizeObserver]);
21941
- useIsomorphicLayoutEffect$1(() => {
22032
+ React.useEffect(() => {
21942
22033
  dispatch({
21943
22034
  type: Action.RegisterDroppable,
21944
22035
  element: {
@@ -22353,6 +22444,7 @@ var DNDCore = /*#__PURE__*/Object.freeze({
22353
22444
  defaultCoordinates: defaultCoordinates,
22354
22445
  defaultDropAnimation: defaultDropAnimationConfiguration,
22355
22446
  defaultDropAnimationSideEffects: defaultDropAnimationSideEffects,
22447
+ defaultKeyboardCoordinateGetter: defaultKeyboardCoordinateGetter,
22356
22448
  defaultScreenReaderInstructions: defaultScreenReaderInstructions,
22357
22449
  getClientRect: getClientRect,
22358
22450
  getFirstCollision: getFirstCollision,
@@ -27249,7 +27341,8 @@ const Toastify = () => {
27249
27341
  isOpen: toastProps.isOpen,
27250
27342
  variant: toastProps.variant,
27251
27343
  toastTitle: toastProps.toastTitle,
27252
- toastMessage: toastProps.toastMessage
27344
+ toastMessage: toastProps.toastMessage,
27345
+ zIndex: 1000000000
27253
27346
  });
27254
27347
  };
27255
27348
  // Utility to trigger toast messages outside of the Toastify component
@@ -31384,6 +31477,7 @@ const Row = props => jsxRuntime.jsx("tr", {
31384
31477
  });
31385
31478
 
31386
31479
  const HeaderRow = props => jsxRuntime.jsx("tr", {
31480
+ className: "ff-spreadsheet-row-header",
31387
31481
  ...props
31388
31482
  });
31389
31483
 
@@ -31403,14 +31497,17 @@ const CornerIndicator = ({
31403
31497
  onSelect();
31404
31498
  }, [onSelect]);
31405
31499
  return jsxRuntime.jsx("th", {
31406
- className: classNames('ff-spreadsheet-header ff-spreadsheet-corner-header', {
31407
- 'ff-spreadsheet-header--selected': selected
31408
- }),
31500
+ className: 'ff-spreadsheet-corner-header',
31409
31501
  onClick: handleClick,
31410
31502
  tabIndex: 0,
31411
- children: jsxRuntime.jsx(Icon, {
31412
- variant: selected ? 'dark' : 'light',
31413
- name: "excel_corner_menu"
31503
+ children: jsxRuntime.jsx("div", {
31504
+ className: classNames('corner-header', {
31505
+ 'ff-spreadsheet-header--selected': selected
31506
+ }),
31507
+ children: jsxRuntime.jsx(Icon, {
31508
+ variant: selected ? 'dark' : 'light',
31509
+ name: "excel_corner_menu"
31510
+ })
31414
31511
  })
31415
31512
  });
31416
31513
  };
@@ -31492,7 +31589,7 @@ const ColumnIndicator = ({
31492
31589
  return jsxRuntime.jsxs("th", {
31493
31590
  style: {
31494
31591
  minWidth: `${columnWidth}px`,
31495
- position: 'relative'
31592
+ position: 'sticky'
31496
31593
  },
31497
31594
  className: classNames('ff-spreadsheet-header', {
31498
31595
  'ff-spreadsheet-header--selected': selected
@@ -32025,7 +32122,7 @@ const Copied = () => {
32025
32122
  });
32026
32123
  };
32027
32124
 
32028
- var css_248z$n = ".fontXs {\n font-family: \"Poppins\";\n font-size: 10px;\n}\n\n.fontSm {\n font-family: \"Poppins\";\n font-size: 12px;\n}\n\n.fontMd {\n font-family: \"Poppins\";\n font-size: 14px;\n}\n\n.fontLg {\n font-family: \"Poppins\";\n font-size: 16px;\n}\n\n.fontXL {\n font-family: \"Poppins\";\n font-size: 18px;\n}\n\n.font2Xl {\n font-family: \"Poppins\";\n font-size: 24px;\n}\n\n.font-size-8 {\n font-family: \"Poppins\";\n font-size: 8px;\n}\n\n.font-size-20 {\n font-family: \"Poppins\";\n font-size: 20px;\n}\n\n.font-size-32 {\n font-family: \"Poppins\";\n font-size: 32px;\n}\n\n.font-size-80 {\n font-family: \"Poppins\";\n font-size: 80px;\n}\n\n.ff-excel {\n display: flex;\n flex-direction: column;\n}\n.ff-excel .ff-excel-toolbar-container {\n position: relative;\n top: 0;\n background-color: var(--excel-toolbar-bg);\n padding: 4px 8px;\n margin-bottom: 20px;\n}\n.ff-excel .ff-spreadsheet {\n --background-color: var(--drawer-footer-bg);\n --text-color: var(--text-color);\n --readonly-text-color: var(--toggle-strip-active);\n --outline-color: var(--toggle-strip-active);\n --outline-background-color: var(--overlay-bg);\n --border-color: var(--excel-sheet-border);\n --header-background-color: var(--excel-header-bg);\n --elevation: var(--brand-color);\n position: relative;\n overflow: scroll;\n background: var(--background-color);\n color: var(--text-color);\n scrollbar-width: none;\n display: inline-block;\n}\n.ff-excel .ff-spreadsheet-active-cell {\n position: absolute;\n border: 2px solid var(--outline-color);\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-active-cell--edit {\n background: var(--background-color);\n box-shadow: var(--elevation);\n}\n.ff-excel .ff-spreadsheet-table {\n overflow: scroll;\n top: 0;\n left: 0;\n margin: 0;\n position: relative;\n border-collapse: collapse;\n table-layout: fixed;\n}\n.ff-excel .ff-spreadsheet-table::-webkit-scrollbar {\n height: 0px;\n}\n.ff-excel .ff-spreadsheet-cell {\n outline: none;\n position: relative;\n z-index: 0;\n}\n.ff-excel .ff-spreadsheet-active-cell .select_dot {\n background-color: var(--elevation);\n height: 10px;\n width: 10px;\n border-radius: 50%;\n position: absolute;\n bottom: -5px;\n right: -5px;\n cursor: crosshair;\n z-index: 1000;\n}\n.ff-excel .ff-spreadsheet-cell--readonly {\n color: var(--readonly-text-color);\n}\n.ff-excel .ff-spreadsheet-cell,\n.ff-excel .ff-spreadsheet-header {\n border: 0.1px solid var(--border-color);\n overflow: hidden;\n word-break: keep-all;\n white-space: nowrap;\n text-align: left;\n box-sizing: border-box;\n user-select: none;\n}\n.ff-excel .ff-spreadsheet-header {\n border: 0.1px solid var(--border-color);\n background-color: var(--header-background-color);\n color: var(--readonly-text-color);\n text-align: center;\n z-index: 1000;\n}\n.ff-excel .ff-spreadsheet-corner-header {\n padding-left: 20px;\n z-index: 1100;\n}\n.ff-excel .ff-spreadsheet-header--selected {\n background: var(--brand-color);\n color: var(--tooltip-text-color);\n}\n.ff-excel .ff-spreadsheet-data-viewer,\n.ff-excel .ff-spreadsheet-data-editor input {\n padding: 4px;\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-header {\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-data-viewer--preserve-breaks {\n white-space: pre-wrap;\n}\n.ff-excel .ff-spreadsheet-data-editor,\n.ff-excel .ff-spreadsheet-data-editor input {\n width: 100%;\n height: 100%;\n}\n.ff-excel .ff-spreadsheet-data-editor input {\n font: inherit;\n color: inherit;\n background: none;\n border: none;\n outline: none;\n margin: 0;\n}\n.ff-excel .ff-spreadsheet-data-viewer--boolean {\n text-align: center;\n}\n.ff-excel .ff-spreadsheet-floating-rect {\n position: absolute;\n pointer-events: none;\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-floating-rect--hidden {\n display: none;\n}\n.ff-excel .ff-spreadsheet-floating-rect--selected {\n background: var(--outline-background-color);\n border: 2px var(--outline-color) solid;\n}\n.ff-excel .ff-spreadsheet-floating-rect--dragging {\n border: none;\n}\n.ff-excel .ff-spreadsheet-floating-rect--copied {\n border: 2px var(--outline-color) dashed;\n}";
32125
+ var css_248z$n = ".fontXs {\n font-family: \"Poppins\";\n font-size: 10px;\n}\n\n.fontSm {\n font-family: \"Poppins\";\n font-size: 12px;\n}\n\n.fontMd {\n font-family: \"Poppins\";\n font-size: 14px;\n}\n\n.fontLg {\n font-family: \"Poppins\";\n font-size: 16px;\n}\n\n.fontXL {\n font-family: \"Poppins\";\n font-size: 18px;\n}\n\n.font2Xl {\n font-family: \"Poppins\";\n font-size: 24px;\n}\n\n.font-size-8 {\n font-family: \"Poppins\";\n font-size: 8px;\n}\n\n.font-size-20 {\n font-family: \"Poppins\";\n font-size: 20px;\n}\n\n.font-size-32 {\n font-family: \"Poppins\";\n font-size: 32px;\n}\n\n.font-size-80 {\n font-family: \"Poppins\";\n font-size: 80px;\n}\n\n.ff-excel {\n display: flex;\n flex-direction: column;\n}\n.ff-excel .ff-excel-toolbar-container {\n position: relative;\n top: 0;\n background-color: var(--excel-toolbar-bg);\n padding: 4px 8px;\n margin-bottom: 20px;\n}\n.ff-excel .ff-spreadsheet {\n --background-color: var(--drawer-footer-bg);\n --text-color: var(--text-color);\n --readonly-text-color: var(--toggle-strip-active);\n --outline-color: var(--toggle-strip-active);\n --outline-background-color: var(--overlay-bg);\n --border-color: var(--excel-sheet-border);\n --header-background-color: var(--excel-header-bg);\n --elevation: var(--brand-color);\n position: relative;\n overflow: scroll;\n background: var(--background-color);\n color: var(--text-color);\n scrollbar-width: none;\n display: inline-block;\n}\n.ff-excel .ff-spreadsheet-active-cell {\n position: absolute;\n border: 2px solid var(--outline-color);\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-active-cell--edit {\n background: var(--background-color);\n box-shadow: var(--elevation);\n}\n.ff-excel .ff-spreadsheet-table {\n overflow: scroll;\n top: 0;\n left: 0;\n margin: 0;\n position: relative;\n border-collapse: collapse;\n table-layout: fixed;\n}\n.ff-excel .ff-spreadsheet-table::-webkit-scrollbar {\n height: 0px;\n}\n.ff-excel .ff-spreadsheet-cell {\n outline: none;\n position: relative;\n z-index: 0;\n}\n.ff-excel .ff-spreadsheet-active-cell .select_dot {\n background-color: var(--elevation);\n height: 10px;\n width: 10px;\n border-radius: 50%;\n position: absolute;\n bottom: -5px;\n right: -5px;\n cursor: crosshair;\n z-index: 1000;\n}\n.ff-excel .ff-spreadsheet-cell--readonly {\n color: var(--readonly-text-color);\n}\n.ff-excel .ff-spreadsheet-cell,\n.ff-excel .ff-spreadsheet-header {\n border: 0.1px solid var(--border-color);\n overflow: hidden;\n word-break: keep-all;\n white-space: nowrap;\n text-align: left;\n box-sizing: border-box;\n user-select: none;\n}\n.ff-excel .ff-spreadsheet-header {\n border: 0.1px solid var(--border-color);\n background-color: var(--header-background-color);\n color: var(--readonly-text-color);\n text-align: center;\n z-index: 1000;\n position: sticky;\n}\n.ff-excel .ff-spreadsheet-corner-header {\n position: fixed;\n z-index: 2000;\n}\n.ff-excel .ff-spreadsheet-row-header {\n height: 34px;\n}\n.ff-excel .corner-header {\n border: 0.1px solid var(--border-color);\n background-color: var(--header-background-color);\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1100;\n top: -1px;\n width: 60px;\n height: 34px;\n left: -1px;\n}\n.ff-excel .ff-spreadsheet-header--selected {\n background: var(--brand-color);\n color: var(--tooltip-text-color);\n}\n.ff-excel .ff-spreadsheet-data-viewer,\n.ff-excel .ff-spreadsheet-data-editor input {\n padding: 4px;\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-header {\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-data-viewer--preserve-breaks {\n white-space: pre-wrap;\n}\n.ff-excel .ff-spreadsheet-data-editor,\n.ff-excel .ff-spreadsheet-data-editor input {\n width: 100%;\n height: 100%;\n}\n.ff-excel .ff-spreadsheet-data-editor input {\n font: inherit;\n color: inherit;\n background: none;\n border: none;\n outline: none;\n margin: 0;\n}\n.ff-excel .ff-spreadsheet-data-viewer--boolean {\n text-align: center;\n}\n.ff-excel .ff-spreadsheet-floating-rect {\n position: absolute;\n pointer-events: none;\n box-sizing: border-box;\n}\n.ff-excel .ff-spreadsheet-floating-rect--hidden {\n display: none;\n}\n.ff-excel .ff-spreadsheet-floating-rect--selected {\n background: var(--outline-background-color);\n border: 2px var(--outline-color) solid;\n}\n.ff-excel .ff-spreadsheet-floating-rect--dragging {\n border: none;\n}\n.ff-excel .ff-spreadsheet-floating-rect--copied {\n border: 2px var(--outline-color) dashed;\n}";
32029
32126
  styleInject(css_248z$n);
32030
32127
 
32031
32128
  var css_248z$m = ".ff-excel-toolbar {\n display: flex;\n height: 32px;\n align-items: center;\n}\n.ff-excel-toolbar .ff-excel-toolbar-divider {\n width: 1px;\n height: 24px;\n background-color: var(--excel-toolbar-divider);\n margin: 0 24px;\n border-radius: 1px;\n z-index: 1000;\n}\n.ff-excel-toolbar .ff-excel-toolbar-font {\n display: flex;\n gap: 8px;\n justify-content: space-between;\n}\n.ff-excel-toolbar .ff-excel-toolbar-font .ff-excel-toolbar-font-family {\n width: 120px;\n}\n.ff-excel-toolbar .ff-excel-toolbar-font .ff-excel-toolbar-font-size {\n width: 56px;\n}\n.ff-excel-toolbar .ff-excel-toolbar-text {\n width: 100px;\n height: 24px;\n display: flex;\n gap: 8px;\n justify-content: space-between;\n}\n.ff-excel-toolbar .ff-excel-toolbar-text .ff-excel-toolbar-icon-underline {\n display: flex;\n align-items: center;\n}\n.ff-excel-toolbar .ff-excel-toolbar-icon {\n width: 88px;\n height: 24px;\n display: flex;\n gap: 8px;\n justify-content: space-between;\n}\n.ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color {\n width: 24px;\n height: 24px;\n border-radius: 4px;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color:hover {\n border-radius: 4px;\n background-color: var(--icon-hover-color);\n}\n.ff-icon-dark .ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color {\n background-color: var(--brand-color);\n}\n.ff-icon-dark .ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color.ff-icon-click:hover {\n background-color: var(--primary-button-text-color);\n}\n.ff-icon-dark .ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color.ff-icon-click:hover svg path {\n fill: var(--brand-color);\n}\n.ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color:hover {\n border-radius: 4px;\n background-color: var(--icon-hover-color);\n}\n.ff-icon-dark .ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color {\n background-color: var(--brand-color);\n}\n.ff-icon-dark .ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color.ff-icon-click:hover {\n background-color: var(--primary-button-text-color);\n}\n.ff-icon-dark .ff-excel-toolbar .ff-excel-toolbar-icon .ff-excel-toolbar-icon-color.ff-icon-click:hover svg path {\n fill: var(--brand-color);\n}\n.ff-excel-toolbar .ff-excel-toolbar-menu {\n display: flex;\n align-items: center;\n width: 36px;\n height: 24px;\n}\n.ff-excel-toolbar .ff-excel-toolbar-menu .ff-excel-toolbar-menu-option {\n display: flex;\n align-items: center;\n}";
@@ -33531,17 +33628,28 @@ const AttachImage = ({
33531
33628
  });
33532
33629
  };
33533
33630
 
33534
- var css_248z$f = ".ff-card-container {\n width: 120px;\n height: 93px;\n display: flex;\n align-items: center;\n border: 1px solid var(--border-color);\n border-radius: 4px;\n overflow: hidden;\n cursor: pointer;\n}\n.ff-card-container:hover.passed {\n border-color: var(--ff-card-passed-status-bg-color);\n}\n.ff-card-container:hover.failed {\n border-color: var(--ff-card-failed-status-bg-color);\n}\n.ff-card-container:hover.warning {\n border-color: var(--ff-card-warning-status-bg-color);\n}\n.ff-card-container:hover.skipped {\n border-color: var(--ff-card-skipped-status-bg-color);\n}\n.ff-card-container:hover.flaky {\n border-color: var(--ff-card-flaky-status-bg-color);\n}\n.ff-card-container .ff-status-bar {\n width: 24px;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: center;\n border-right: 1px solid var(--border-color);\n gap: 30px;\n}\n.ff-card-container .ff-status-bar .ff-status-text {\n transform: rotate(-90deg);\n transform-origin: center;\n display: inline-block;\n}\n.ff-card-container.passed .ff-status-bar {\n background-color: var(--ff-card-passed-status-bg-color);\n}\n.ff-card-container.failed .ff-status-bar {\n background-color: var(--ff-card-failed-status-bg-color);\n}\n.ff-card-container.warning .ff-status-bar {\n background-color: var(--ff-card-warning-status-bg-color);\n}\n.ff-card-container.skipped .ff-status-bar {\n background-color: var(--ff-card-skipped-status-bg-color);\n}\n.ff-card-container.flaky .ff-status-bar {\n background-color: var(--ff-card-flaky-status-bg-color);\n}\n.ff-card-container .ff-content {\n flex: 1;\n padding: 8px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.ff-card-container .ff-content .ff-number {\n margin-bottom: 4px;\n color: inherit;\n}\n.ff-card-container.passed .ff-number {\n color: var(--ff-card-passed-status-bg-color);\n}\n.ff-card-container.failed .ff-number {\n color: var(--ff-card-failed-status-bg-color);\n}\n.ff-card-container.warning .ff-number {\n color: var(--ff-card-warning-status-bg-color);\n}\n.ff-card-container.skipped .ff-number {\n color: var(--ff-card-skipped-status-bg-color);\n}\n.ff-card-container.flaky .ff-number {\n color: var(--ff-card-flaky-status-bg-color);\n}";
33631
+ var css_248z$f = ".ff-card-container {\n height: 78px;\n display: flex;\n align-items: center;\n border: 1px solid var(--border-color);\n border-radius: 4px;\n overflow: hidden;\n cursor: pointer;\n}\n.ff-card-container:hover.passed {\n border-color: var(--ff-card-passed-status-bg-color);\n}\n.ff-card-container:hover.failed {\n border-color: var(--ff-card-failed-status-bg-color);\n}\n.ff-card-container:hover.warning {\n border-color: var(--ff-card-warning-status-bg-color);\n}\n.ff-card-container:hover.skipped {\n border-color: var(--ff-card-skipped-status-bg-color);\n}\n.ff-card-container:hover.flaky {\n border-color: var(--ff-card-flaky-status-bg-color);\n}\n.ff-card-container .ff-status-bar {\n width: 12%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: start;\n align-items: center;\n border-right: 1px solid var(--border-color);\n gap: 17px;\n}\n.ff-card-container .ff-status-bar .ff-status-text {\n transform: rotate(-90deg);\n transform-origin: center;\n display: inline-block;\n}\n.ff-card-container.passed .ff-status-bar {\n background-color: var(--ff-card-passed-status-bg-color);\n color: var(--base-bg-color);\n}\n.ff-card-container.failed .ff-status-bar {\n background-color: var(--ff-card-failed-status-bg-color);\n color: var(--base-bg-color);\n}\n.ff-card-container.warning .ff-status-bar {\n background-color: var(--ff-card-warning-status-bg-color);\n color: var(--base-bg-color);\n}\n.ff-card-container.skipped .ff-status-bar {\n background-color: var(--ff-card-skipped-status-bg-color);\n color: var(--base-bg-color);\n}\n.ff-card-container.flaky .ff-status-bar {\n background-color: var(--ff-card-flaky-status-bg-color);\n color: var(--base-bg-color);\n}\n.ff-card-container .ff-content {\n flex: 1;\n padding: 8px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.ff-card-container .ff-content .ff-number {\n margin-bottom: 4px;\n color: inherit;\n}\n.ff-card-container.passed .ff-number {\n color: var(--ff-card-passed-status-bg-color);\n}\n.ff-card-container.failed .ff-number {\n color: var(--ff-card-failed-status-bg-color);\n}\n.ff-card-container.warning .ff-number {\n color: var(--ff-card-warning-status-bg-color);\n}\n.ff-card-container.skipped .ff-number {\n color: var(--ff-card-skipped-status-bg-color);\n}\n.ff-card-container.flaky .ff-number {\n color: var(--ff-card-flaky-status-bg-color);\n}\n.ff-card-container.toggled.passed .ff-status-bar {\n background-color: var(--base-bg-color);\n color: var(--ff-card-passed-status-bg-color);\n}\n.ff-card-container.toggled.failed .ff-status-bar {\n background-color: var(--base-bg-color);\n color: var(--ff-card-failed-status-bg-color);\n}\n.ff-card-container.toggled.warning .ff-status-bar {\n background-color: var(--base-bg-color);\n color: var(--ff-card-warning-status-bg-color);\n}\n.ff-card-container.toggled.skipped .ff-status-bar {\n background-color: var(--base-bg-color);\n color: var(--ff-card-skipped-status-bg-color);\n}\n.ff-card-container.toggled.flaky .ff-status-bar {\n background-color: var(--base-bg-color);\n color: var(--ff-card-flaky-status-bg-color);\n}\n.ff-card-container.toggled.passed .ff-content {\n background-color: var(--ff-card-passed-status-bg-color);\n}\n.ff-card-container.toggled.failed .ff-content {\n background-color: var(--ff-card-failed-status-bg-color);\n}\n.ff-card-container.toggled.warning .ff-content {\n background-color: var(--ff-card-warning-status-bg-color);\n}\n.ff-card-container.toggled.skipped .ff-content {\n background-color: var(--ff-card-skipped-status-bg-color);\n}\n.ff-card-container.toggled.flaky .ff-content {\n background-color: var(--ff-card-flaky-status-bg-color);\n}";
33535
33632
  styleInject(css_248z$f);
33536
33633
 
33537
33634
  const StatusCard = ({
33538
33635
  icon,
33539
33636
  status,
33540
33637
  count,
33541
- text
33638
+ text,
33639
+ style = {
33640
+ width: '196.4px'
33641
+ },
33642
+ onSelectedStatus = _status => {}
33542
33643
  }) => {
33644
+ const [isToggled, setIsToggled] = React.useState(false);
33645
+ const handleSelectStatus = status => {
33646
+ setIsToggled(true);
33647
+ onSelectedStatus(status);
33648
+ };
33543
33649
  return jsxRuntime.jsxs("div", {
33544
- className: `ff-card-container ${status.toLowerCase()}`,
33650
+ className: `ff-card-container ${status.toLowerCase()} ${isToggled ? 'toggled' : ''}`,
33651
+ style: style,
33652
+ onClick: () => handleSelectStatus(status),
33545
33653
  children: [jsxRuntime.jsxs("div", {
33546
33654
  className: "ff-status-bar",
33547
33655
  children: [jsxRuntime.jsx("div", {
@@ -33554,7 +33662,6 @@ const StatusCard = ({
33554
33662
  }), jsxRuntime.jsx(Typography, {
33555
33663
  fontWeight: "semi-bold",
33556
33664
  fontSize: "10px",
33557
- color: "var(--ff-status-card-text-color)",
33558
33665
  textAlign: "center",
33559
33666
  lineHeight: "15px",
33560
33667
  className: "ff-status-text",
@@ -33568,13 +33675,14 @@ const StatusCard = ({
33568
33675
  fontSize: "24px",
33569
33676
  className: "ff-number",
33570
33677
  lineHeight: "36px",
33678
+ color: isToggled ? 'var(--base-bg-color)' : '',
33571
33679
  children: count
33572
33680
  }), jsxRuntime.jsx(Typography, {
33573
33681
  fontWeight: "regular",
33574
33682
  fontSize: "10px",
33575
33683
  className: "ff-text",
33576
33684
  lineHeight: "15px",
33577
- color: "var(--ff-card-status-text-color)",
33685
+ color: isToggled ? 'var(--base-bg-color)' : 'var(--ff-card-status-text-color)',
33578
33686
  children: text
33579
33687
  })]
33580
33688
  })]
@@ -39635,7 +39743,8 @@ const BarChart = ({
39635
39743
  icons = [],
39636
39744
  iconSize,
39637
39745
  legendPosition = 'bottom',
39638
- legendGap = 5
39746
+ legendGap = 5,
39747
+ onSelectedBar = _label => {}
39639
39748
  }) => {
39640
39749
  const [tooltip, setTooltip] = React.useState({
39641
39750
  visible: false,
@@ -39693,6 +39802,9 @@ const BarChart = ({
39693
39802
  borderColor: 'transparent'
39694
39803
  });
39695
39804
  };
39805
+ const handleSelectLabel = label => {
39806
+ onSelectedBar(label);
39807
+ };
39696
39808
  return jsxRuntime.jsxs("div", {
39697
39809
  className: "ff-bar-chart-container",
39698
39810
  style: {
@@ -39767,7 +39879,8 @@ const BarChart = ({
39767
39879
  ry: barBorderRadius,
39768
39880
  onMouseEnter: e => handleMouseEnter(e, item.label, item.value, getBorderColor(index)),
39769
39881
  onMouseMove: handleMouseMove,
39770
- onMouseLeave: handleMouseLeave
39882
+ onMouseLeave: handleMouseLeave,
39883
+ onClick: () => handleSelectLabel(item.label)
39771
39884
  }), showXAxisLabels && jsxRuntime.jsx("text", {
39772
39885
  x: barX + barWidth / 2,
39773
39886
  y: height + topPadding + 15,