@datarobot/design-system 29.1.1 → 29.2.0

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 (59) hide show
  1. package/cjs/datetime-range-picker/datetime-range-picker-panel.d.ts +2 -1
  2. package/cjs/datetime-range-picker/datetime-range-picker-panel.js +1 -0
  3. package/cjs/floating-panel/constants.js +3 -1
  4. package/cjs/floating-panel/draggable-area.d.ts +1 -0
  5. package/cjs/floating-panel/draggable-area.js +9 -46
  6. package/cjs/floating-panel/floating-panel-collapse-button.d.ts +5 -0
  7. package/cjs/floating-panel/floating-panel-collapse-button.js +36 -0
  8. package/cjs/floating-panel/floating-panel-dock-button.js +1 -0
  9. package/cjs/floating-panel/floating-panel-drag-handle.js +1 -9
  10. package/cjs/floating-panel/floating-panel-header.js +49 -20
  11. package/cjs/floating-panel/floating-panel.d.ts +8 -0
  12. package/cjs/floating-panel/floating-panel.js +8 -4
  13. package/cjs/floating-panel/types.d.ts +8 -0
  14. package/cjs/floating-panel/types.js +9 -1
  15. package/cjs/floating-panel/use-draggable-area.d.ts +17 -0
  16. package/cjs/floating-panel/use-draggable-area.js +70 -0
  17. package/cjs/floating-panel/use-floating-panel-state.d.ts +6 -2
  18. package/cjs/floating-panel/use-floating-panel-state.js +224 -84
  19. package/cjs/hooks/use-analytics/use-analytics.test.js +0 -10
  20. package/esm/datetime-range-picker/datetime-range-picker-panel.d.ts +2 -1
  21. package/esm/datetime-range-picker/datetime-range-picker-panel.js +1 -0
  22. package/esm/floating-panel/constants.js +3 -1
  23. package/esm/floating-panel/draggable-area.d.ts +1 -0
  24. package/esm/floating-panel/draggable-area.js +8 -45
  25. package/esm/floating-panel/floating-panel-collapse-button.d.ts +5 -0
  26. package/esm/floating-panel/floating-panel-collapse-button.js +29 -0
  27. package/esm/floating-panel/floating-panel-dock-button.js +2 -1
  28. package/esm/floating-panel/floating-panel-drag-handle.js +1 -9
  29. package/esm/floating-panel/floating-panel-header.js +50 -21
  30. package/esm/floating-panel/floating-panel.d.ts +8 -0
  31. package/esm/floating-panel/floating-panel.js +8 -4
  32. package/esm/floating-panel/types.d.ts +8 -0
  33. package/esm/floating-panel/types.js +7 -1
  34. package/esm/floating-panel/use-draggable-area.d.ts +17 -0
  35. package/esm/floating-panel/use-draggable-area.js +64 -0
  36. package/esm/floating-panel/use-floating-panel-state.d.ts +6 -2
  37. package/esm/floating-panel/use-floating-panel-state.js +226 -86
  38. package/esm/hooks/use-analytics/use-analytics.test.js +0 -10
  39. package/js/139/139.min.js +1 -1
  40. package/js/244/244.min.js +1 -1
  41. package/js/633/633.min.js +1 -1
  42. package/js/784/784.min.js +1 -1
  43. package/js/86/86.min.js +1 -1
  44. package/js/bundle/bundle.js +467 -191
  45. package/js/bundle/bundle.min.js +1 -1
  46. package/js/bundle/index.d.ts +18 -1
  47. package/js/src_locales_es_419_translation_json/src_locales_es_419_translation_json.js +1 -1
  48. package/js/src_locales_fr_translation_json/src_locales_fr_translation_json.js +1 -1
  49. package/js/src_locales_ja_translation_json/src_locales_ja_translation_json.js +1 -1
  50. package/js/src_locales_ko_translation_json/src_locales_ko_translation_json.js +1 -1
  51. package/js/src_locales_pt_BR_translation_json/src_locales_pt_BR_translation_json.js +1 -1
  52. package/locales/es_419/translation.json +5 -1
  53. package/locales/fr/translation.json +5 -1
  54. package/locales/ja/translation.json +5 -1
  55. package/locales/ko/translation.json +5 -1
  56. package/locales/pt_BR/translation.json +5 -1
  57. package/package.json +1 -1
  58. package/styles/index.css +1 -0
  59. package/styles/index.min.css +1 -1
@@ -48173,6 +48173,7 @@ var DATE_RANGE_ERROR_TYPES = /*#__PURE__*/function (DATE_RANGE_ERROR_TYPES) {
48173
48173
  DATE_RANGE_ERROR_TYPES["START_AFTER_MAX"] = "START_AFTER_MAX";
48174
48174
  DATE_RANGE_ERROR_TYPES["INVALID_START_DATE"] = "INVALID_START_DATE";
48175
48175
  DATE_RANGE_ERROR_TYPES["INVALID_END_DATE"] = "INVALID_END_DATE";
48176
+ DATE_RANGE_ERROR_TYPES["START_END_SAME"] = "START_END_SAME";
48176
48177
  return DATE_RANGE_ERROR_TYPES;
48177
48178
  }({});
48178
48179
  var DATE_RANGE_INPUT_TYPES = {
@@ -56966,9 +56967,11 @@ var FloatingPanelContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.cr
56966
56967
  onDrag: function onDrag() {},
56967
56968
  onDragStart: function onDragStart() {},
56968
56969
  onDragEnd: function onDragEnd() {},
56969
- isDocked: false,
56970
56970
  isMoving: false,
56971
+ isDocked: false,
56971
56972
  setIsDocked: function setIsDocked() {},
56973
+ isCollapsed: false,
56974
+ setIsCollapsed: function setIsCollapsed() {},
56972
56975
  onMoveWithArrows: function onMoveWithArrows() {},
56973
56976
  getPosition: function getPosition() {
56974
56977
  return {
@@ -57067,17 +57070,13 @@ function getHtmlElement(anchorEl) {
57067
57070
  /* harmony export */ });
57068
57071
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
57069
57072
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
57073
+ /* harmony import */ var _use_draggable_area__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-draggable-area */ "./src/components/floating-panel/use-draggable-area.ts");
57070
57074
  var _excluded = ["areaId", "testId", "className", "onDragStart", "onDrag", "onDragEnd", "children"];
57071
57075
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
57072
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
57073
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
57074
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
57075
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
57076
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
57077
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
57078
57076
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
57079
57077
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
57080
57078
 
57079
+
57081
57080
  function DraggableArea(_ref) {
57082
57081
  var areaId = _ref.areaId,
57083
57082
  testId = _ref.testId,
@@ -57090,53 +57089,12 @@ function DraggableArea(_ref) {
57090
57089
  _ref$children = _ref.children,
57091
57090
  children = _ref$children === void 0 ? null : _ref$children,
57092
57091
  props = _objectWithoutProperties(_ref, _excluded);
57093
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
57094
- _useState2 = _slicedToArray(_useState, 2),
57095
- isDragging = _useState2[0],
57096
- setIsDragging = _useState2[1];
57097
- var onStart = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {
57098
- var draggableEvent = Object.assign(e, {
57099
- areaId: areaId
57100
- });
57101
- e.preventDefault();
57102
- setIsDragging(true);
57103
- onDragStart(draggableEvent);
57104
- }, []);
57105
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
57106
- if (!isDragging) {
57107
- return;
57108
- }
57109
- function onDragHandler(e) {
57110
- var draggableEvent = Object.assign(e, {
57111
- areaId: areaId
57112
- });
57113
- e.preventDefault();
57114
- onDrag(draggableEvent);
57115
- }
57116
- function onDragEndHandler(e) {
57117
- var draggableEvent = Object.assign(e, {
57118
- areaId: areaId
57119
- });
57120
- e.preventDefault();
57121
- removeListeners();
57122
- setIsDragging(false);
57123
- onDragEnd(draggableEvent);
57124
- }
57125
- function onDragBlurHandler() {
57126
- setIsDragging(false);
57127
- onDragEnd(areaId);
57128
- removeListeners();
57129
- }
57130
- window.addEventListener('mousemove', onDragHandler);
57131
- window.addEventListener('mouseup', onDragEndHandler);
57132
- window.addEventListener('blur', onDragBlurHandler);
57133
- function removeListeners() {
57134
- window.removeEventListener('mousemove', onDragHandler);
57135
- window.removeEventListener('mouseup', onDragEndHandler);
57136
- window.removeEventListener('blur', onDragBlurHandler);
57137
- }
57138
- return removeListeners;
57139
- }, [isDragging, onDragStart, onDrag, onDragEnd, areaId]);
57092
+ var onStart = (0,_use_draggable_area__WEBPACK_IMPORTED_MODULE_1__.useDraggableArea)({
57093
+ areaId: areaId,
57094
+ onDragStart: onDragStart,
57095
+ onDrag: onDrag,
57096
+ onDragEnd: onDragEnd
57097
+ });
57140
57098
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", _extends({
57141
57099
  className: className,
57142
57100
  onMouseDown: onStart,
@@ -57147,6 +57105,56 @@ function DraggableArea(_ref) {
57147
57105
 
57148
57106
  /***/ }),
57149
57107
 
57108
+ /***/ "./src/components/floating-panel/floating-panel-collapse-button.tsx":
57109
+ /*!**************************************************************************!*\
57110
+ !*** ./src/components/floating-panel/floating-panel-collapse-button.tsx ***!
57111
+ \**************************************************************************/
57112
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57113
+
57114
+ "use strict";
57115
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
57116
+ /* harmony export */ FloatingPanelCollapseButton: () => (/* binding */ FloatingPanelCollapseButton)
57117
+ /* harmony export */ });
57118
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
57119
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
57120
+ /* harmony import */ var _fortawesome_free_solid_svg_icons_faChevronDown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fortawesome/free-solid-svg-icons/faChevronDown */ "@fortawesome/free-solid-svg-icons/faChevronDown");
57121
+ /* harmony import */ var _fortawesome_free_solid_svg_icons_faChevronDown__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_free_solid_svg_icons_faChevronDown__WEBPACK_IMPORTED_MODULE_1__);
57122
+ /* harmony import */ var _fortawesome_free_solid_svg_icons_faChevronUp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/free-solid-svg-icons/faChevronUp */ "@fortawesome/free-solid-svg-icons/faChevronUp");
57123
+ /* harmony import */ var _fortawesome_free_solid_svg_icons_faChevronUp__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_free_solid_svg_icons_faChevronUp__WEBPACK_IMPORTED_MODULE_2__);
57124
+ /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./src/components/button/index.ts");
57125
+ /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks */ "./src/components/hooks/index.ts");
57126
+ /* harmony import */ var _font_awesome_icon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../font-awesome-icon */ "./src/components/font-awesome-icon/index.ts");
57127
+ /* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../tooltip */ "./src/components/tooltip/index.ts");
57128
+
57129
+
57130
+
57131
+
57132
+
57133
+
57134
+
57135
+ function FloatingPanelCollapseButton(_ref) {
57136
+ var isCollapsed = _ref.isCollapsed,
57137
+ setIsCollapsed = _ref.setIsCollapsed;
57138
+ var _useTranslation = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useTranslation)(),
57139
+ t = _useTranslation.t;
57140
+ var ariaLabel = isCollapsed ? t('Expand') : t('Collapse');
57141
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_button__WEBPACK_IMPORTED_MODULE_3__.Button, {
57142
+ testId: "floating-panel-collapse-button",
57143
+ accentType: _button__WEBPACK_IMPORTED_MODULE_3__.ACCENT_TYPES.ROUND_ICON,
57144
+ onClick: function onClick() {
57145
+ return setIsCollapsed(!isCollapsed);
57146
+ },
57147
+ "aria-label": ariaLabel,
57148
+ tooltipText: ariaLabel,
57149
+ tooltipPlacement: _tooltip__WEBPACK_IMPORTED_MODULE_6__.TOOLTIP_PLACEMENT_TYPES.TOP,
57150
+ tooltipDelayType: _tooltip__WEBPACK_IMPORTED_MODULE_6__.TOOLTIP_DELAY_TYPES.SLOW
57151
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_font_awesome_icon__WEBPACK_IMPORTED_MODULE_5__.FontAwesomeIcon, {
57152
+ icon: isCollapsed ? _fortawesome_free_solid_svg_icons_faChevronUp__WEBPACK_IMPORTED_MODULE_2__.faChevronUp : _fortawesome_free_solid_svg_icons_faChevronDown__WEBPACK_IMPORTED_MODULE_1__.faChevronDown
57153
+ }));
57154
+ }
57155
+
57156
+ /***/ }),
57157
+
57150
57158
  /***/ "./src/components/floating-panel/floating-panel-dock-button.tsx":
57151
57159
  /*!**********************************************************************!*\
57152
57160
  !*** ./src/components/floating-panel/floating-panel-dock-button.tsx ***!
@@ -57188,7 +57196,8 @@ function FloatingPanelDockButton(_ref) {
57188
57196
  },
57189
57197
  "aria-label": ariaLabel,
57190
57198
  tooltipText: ariaLabel,
57191
- tooltipPlacement: _tooltip__WEBPACK_IMPORTED_MODULE_6__.TOOLTIP_PLACEMENT_TYPES.TOP
57199
+ tooltipPlacement: _tooltip__WEBPACK_IMPORTED_MODULE_6__.TOOLTIP_PLACEMENT_TYPES.TOP,
57200
+ tooltipDelayType: _tooltip__WEBPACK_IMPORTED_MODULE_6__.TOOLTIP_DELAY_TYPES.SLOW
57192
57201
  }, isDocked ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_font_awesome_icon__WEBPACK_IMPORTED_MODULE_5__.FontAwesomeIcon, {
57193
57202
  icon: _fortawesome_free_solid_svg_icons_faThumbtackSlash__WEBPACK_IMPORTED_MODULE_1__.faThumbtackSlash
57194
57203
  }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_font_awesome_icon__WEBPACK_IMPORTED_MODULE_5__.FontAwesomeIcon, {
@@ -57230,14 +57239,7 @@ function FloatingPanelDragHandle(_ref) {
57230
57239
  onDrag = _useContext.onDrag,
57231
57240
  onDragStart = _useContext.onDragStart,
57232
57241
  onDragEnd = _useContext.onDragEnd,
57233
- onMoveWithArrows = _useContext.onMoveWithArrows,
57234
- isDocked = _useContext.isDocked;
57235
- if (isDocked) {
57236
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
57237
- className: "drag-handle disabled",
57238
- "test-id": "floating-area-drag-handle"
57239
- }, content);
57240
- }
57242
+ onMoveWithArrows = _useContext.onMoveWithArrows;
57241
57243
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_draggable_area__WEBPACK_IMPORTED_MODULE_4__.DraggableArea, {
57242
57244
  tabIndex: 0,
57243
57245
  testId: "floating-area-drag-handle",
@@ -57273,6 +57275,12 @@ function FloatingPanelDragHandle(_ref) {
57273
57275
  /* harmony import */ var _hooks_use_translation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/use-translation */ "./src/components/hooks/use-translation/index.ts");
57274
57276
  /* harmony import */ var _floating_panel_dock_button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./floating-panel-dock-button */ "./src/components/floating-panel/floating-panel-dock-button.tsx");
57275
57277
  /* harmony import */ var _floating_panel_drag_handle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./floating-panel-drag-handle */ "./src/components/floating-panel/floating-panel-drag-handle.tsx");
57278
+ /* harmony import */ var _use_draggable_area__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./use-draggable-area */ "./src/components/floating-panel/use-draggable-area.ts");
57279
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./constants */ "./src/components/floating-panel/constants.ts");
57280
+ /* harmony import */ var _floating_panel_collapse_button__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./floating-panel-collapse-button */ "./src/components/floating-panel/floating-panel-collapse-button.tsx");
57281
+
57282
+
57283
+
57276
57284
 
57277
57285
 
57278
57286
 
@@ -57290,26 +57298,51 @@ var FloatingPanelHeader = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.for
57290
57298
  dragIcon = _ref.dragIcon;
57291
57299
  var _useTranslation = (0,_hooks_use_translation__WEBPACK_IMPORTED_MODULE_4__.useTranslation)(),
57292
57300
  t = _useTranslation.t;
57293
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("header", {
57294
- ref: ref,
57295
- className: "floating-panel-header"
57296
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_floating_panel_drag_handle__WEBPACK_IMPORTED_MODULE_6__.FloatingPanelDragHandle, {
57297
- dragIcon: dragIcon
57298
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
57299
- className: "actions"
57300
- }, actions, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_floating_panel_dock_button__WEBPACK_IMPORTED_MODULE_5__.FloatingPanelDockButton, {
57301
- isDocked: isDocked,
57302
- setIsDocked: setIsDocked
57303
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_button__WEBPACK_IMPORTED_MODULE_2__.Button, {
57304
- testId: "floating-panel-close-action",
57305
- accentType: _button__WEBPACK_IMPORTED_MODULE_2__.ACCENT_TYPES.ROUND_ICON,
57306
- onClick: function onClick() {
57307
- return onClose(getPosition());
57308
- },
57309
- "aria-label": t('Close')
57310
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_font_awesome_icon__WEBPACK_IMPORTED_MODULE_3__.FontAwesomeIcon, {
57311
- icon: _fortawesome_free_solid_svg_icons_faXmark__WEBPACK_IMPORTED_MODULE_1__.faXmark
57312
- }))));
57301
+ var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_constants__WEBPACK_IMPORTED_MODULE_8__.FloatingPanelContext),
57302
+ onDrag = _useContext.onDrag,
57303
+ onDragStart = _useContext.onDragStart,
57304
+ onDragEnd = _useContext.onDragEnd,
57305
+ isCollapsed = _useContext.isCollapsed,
57306
+ setIsCollapsed = _useContext.setIsCollapsed;
57307
+ var onStart = (0,_use_draggable_area__WEBPACK_IMPORTED_MODULE_7__.useDraggableArea)({
57308
+ areaId: 'drag-header',
57309
+ onDrag: onDrag,
57310
+ onDragStart: onDragStart,
57311
+ onDragEnd: onDragEnd
57312
+ });
57313
+ return (
57314
+ /*#__PURE__*/
57315
+ // FloatingPanelDragHandle is responsible for accessibility of the drag handle
57316
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
57317
+ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("header", {
57318
+ ref: ref,
57319
+ className: "floating-panel-header",
57320
+ onMouseDown: onStart
57321
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_floating_panel_drag_handle__WEBPACK_IMPORTED_MODULE_6__.FloatingPanelDragHandle, {
57322
+ dragIcon: dragIcon
57323
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
57324
+ className: "actions",
57325
+ onMouseDown: function onMouseDown(event) {
57326
+ // Prevent dragging when clicking on action buttons
57327
+ event.stopPropagation();
57328
+ }
57329
+ }, actions, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_floating_panel_collapse_button__WEBPACK_IMPORTED_MODULE_9__.FloatingPanelCollapseButton, {
57330
+ isCollapsed: isCollapsed,
57331
+ setIsCollapsed: setIsCollapsed
57332
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_floating_panel_dock_button__WEBPACK_IMPORTED_MODULE_5__.FloatingPanelDockButton, {
57333
+ isDocked: isDocked,
57334
+ setIsDocked: setIsDocked
57335
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_button__WEBPACK_IMPORTED_MODULE_2__.Button, {
57336
+ testId: "floating-panel-close-action",
57337
+ accentType: _button__WEBPACK_IMPORTED_MODULE_2__.ACCENT_TYPES.ROUND_ICON,
57338
+ onClick: function onClick() {
57339
+ return onClose(getPosition());
57340
+ },
57341
+ "aria-label": t('Close')
57342
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_font_awesome_icon__WEBPACK_IMPORTED_MODULE_3__.FontAwesomeIcon, {
57343
+ icon: _fortawesome_free_solid_svg_icons_faXmark__WEBPACK_IMPORTED_MODULE_1__.faXmark
57344
+ }))))
57345
+ );
57313
57346
  });
57314
57347
  FloatingPanelHeader.displayName = 'FloatingPanelHeader';
57315
57348
 
@@ -57384,7 +57417,7 @@ var noop = function noop() {
57384
57417
  * @alpine-light-supported
57385
57418
  */
57386
57419
  function FloatingPanel(_ref) {
57387
- var _props$isDocked, _props$setIsDocked;
57420
+ var _props$isDocked, _props$setIsDocked, _props$isCollapsed, _props$setIsCollapsed;
57388
57421
  var children = _ref.children,
57389
57422
  _ref$minHeight = _ref.minHeight,
57390
57423
  minHeight = _ref$minHeight === void 0 ? 648 : _ref$minHeight,
@@ -57422,6 +57455,8 @@ function FloatingPanel(_ref) {
57422
57455
  initialState: initialState,
57423
57456
  isDocked: (_props$isDocked = props.isDocked) !== null && _props$isDocked !== void 0 ? _props$isDocked : false,
57424
57457
  setIsDocked: (_props$setIsDocked = props.setIsDocked) !== null && _props$setIsDocked !== void 0 ? _props$setIsDocked : noop,
57458
+ isCollapsed: (_props$isCollapsed = props.isCollapsed) !== null && _props$isCollapsed !== void 0 ? _props$isCollapsed : false,
57459
+ setIsCollapsed: (_props$setIsCollapsed = props.setIsCollapsed) !== null && _props$setIsCollapsed !== void 0 ? _props$setIsCollapsed : noop,
57425
57460
  containerElement: containerElement,
57426
57461
  pageContentElement: (0,_constants__WEBPACK_IMPORTED_MODULE_7__.getHtmlElement)(pageContentEl)
57427
57462
  }),
@@ -57431,8 +57466,9 @@ function FloatingPanel(_ref) {
57431
57466
  onResize = _useFloatingPanelStat.onResize,
57432
57467
  onMovementStart = _useFloatingPanelStat.onMovementStart,
57433
57468
  onResizeEnd = _useFloatingPanelStat.onResizeEnd,
57434
- setState = _useFloatingPanelStat.setState,
57469
+ setPosition = _useFloatingPanelStat.setPosition,
57435
57470
  isDocked = _useFloatingPanelStat.isDocked,
57471
+ isCollapsed = _useFloatingPanelStat.isCollapsed,
57436
57472
  setIsDocked = _useFloatingPanelStat.setIsDocked,
57437
57473
  getPosition = _useFloatingPanelStat.getPosition,
57438
57474
  context = _useFloatingPanelStat.context;
@@ -57445,7 +57481,7 @@ function FloatingPanel(_ref) {
57445
57481
  panelRef.current.focus();
57446
57482
  if (initialState && !initialStateAppliedOnce.current) {
57447
57483
  initialStateAppliedOnce.current = true;
57448
- return setState(initialState);
57484
+ return setPosition(initialState);
57449
57485
  }
57450
57486
  if (!anchorEl) {
57451
57487
  return;
@@ -57458,7 +57494,7 @@ function FloatingPanel(_ref) {
57458
57494
  var _getBoundingClientRec = panelRef.current.getBoundingClientRect(),
57459
57495
  left = _getBoundingClientRec.left,
57460
57496
  top = _getBoundingClientRec.top;
57461
- setState(function (state) {
57497
+ setPosition(function (state) {
57462
57498
  return _objectSpread(_objectSpread({}, state), {}, {
57463
57499
  left: left,
57464
57500
  top: top
@@ -57474,7 +57510,8 @@ function FloatingPanel(_ref) {
57474
57510
  ref: panelRef,
57475
57511
  "test-id": testId,
57476
57512
  className: classnames__WEBPACK_IMPORTED_MODULE_2___default()('floating-panel', {
57477
- docked: isDocked
57513
+ docked: isDocked,
57514
+ collapsed: isCollapsed
57478
57515
  })
57479
57516
  /* eslint-disable-next-line react/forbid-dom-props */,
57480
57517
  style: style,
@@ -57524,6 +57561,115 @@ function FloatingPanel(_ref) {
57524
57561
 
57525
57562
 
57526
57563
 
57564
+ /***/ }),
57565
+
57566
+ /***/ "./src/components/floating-panel/types.ts":
57567
+ /*!************************************************!*\
57568
+ !*** ./src/components/floating-panel/types.ts ***!
57569
+ \************************************************/
57570
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57571
+
57572
+ "use strict";
57573
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
57574
+ /* harmony export */ PANEL_STATE: () => (/* binding */ PANEL_STATE)
57575
+ /* harmony export */ });
57576
+ var PANEL_STATE = /*#__PURE__*/function (PANEL_STATE) {
57577
+ PANEL_STATE["FLOATING"] = "floating";
57578
+ PANEL_STATE["COLLAPSED"] = "collapsed";
57579
+ PANEL_STATE["DOCKED"] = "docked";
57580
+ PANEL_STATE["TO_BE_DOCKED"] = "to-be-docked";
57581
+ return PANEL_STATE;
57582
+ }({});
57583
+
57584
+ /***/ }),
57585
+
57586
+ /***/ "./src/components/floating-panel/use-draggable-area.ts":
57587
+ /*!*************************************************************!*\
57588
+ !*** ./src/components/floating-panel/use-draggable-area.ts ***!
57589
+ \*************************************************************/
57590
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57591
+
57592
+ "use strict";
57593
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
57594
+ /* harmony export */ useDraggableArea: () => (/* binding */ useDraggableArea)
57595
+ /* harmony export */ });
57596
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
57597
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
57598
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
57599
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
57600
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
57601
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
57602
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
57603
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
57604
+
57605
+ /**
57606
+ *
57607
+ * @param areaId
57608
+ * @param onDragStart
57609
+ * @param onDrag
57610
+ * @param onDragEnd
57611
+ * @returns onStart function to be used in onMouseDown event
57612
+ */
57613
+ function useDraggableArea(_ref) {
57614
+ var areaId = _ref.areaId,
57615
+ _ref$onDragStart = _ref.onDragStart,
57616
+ onDragStart = _ref$onDragStart === void 0 ? function () {} : _ref$onDragStart,
57617
+ onDrag = _ref.onDrag,
57618
+ _ref$onDragEnd = _ref.onDragEnd,
57619
+ onDragEnd = _ref$onDragEnd === void 0 ? function () {} : _ref$onDragEnd;
57620
+ var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
57621
+ _useState2 = _slicedToArray(_useState, 2),
57622
+ isDragging = _useState2[0],
57623
+ setIsDragging = _useState2[1];
57624
+ var onStart = function onStart(e) {
57625
+ var draggableEvent = Object.assign(e, {
57626
+ areaId: areaId
57627
+ });
57628
+ e.preventDefault();
57629
+ e.stopPropagation();
57630
+ setIsDragging(true);
57631
+ onDragStart(draggableEvent);
57632
+ };
57633
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
57634
+ if (!isDragging) {
57635
+ return;
57636
+ }
57637
+ function onDragHandler(e) {
57638
+ var draggableEvent = Object.assign(e, {
57639
+ areaId: areaId
57640
+ });
57641
+ e.preventDefault();
57642
+ e.stopPropagation();
57643
+ onDrag(draggableEvent);
57644
+ }
57645
+ function onDragEndHandler(e) {
57646
+ var draggableEvent = Object.assign(e, {
57647
+ areaId: areaId
57648
+ });
57649
+ e.preventDefault();
57650
+ e.stopPropagation();
57651
+ removeListeners();
57652
+ setIsDragging(false);
57653
+ onDragEnd(draggableEvent);
57654
+ }
57655
+ function onDragBlurHandler() {
57656
+ setIsDragging(false);
57657
+ onDragEnd(areaId);
57658
+ removeListeners();
57659
+ }
57660
+ window.addEventListener('mousemove', onDragHandler);
57661
+ window.addEventListener('mouseup', onDragEndHandler);
57662
+ window.addEventListener('blur', onDragBlurHandler);
57663
+ function removeListeners() {
57664
+ window.removeEventListener('mousemove', onDragHandler);
57665
+ window.removeEventListener('mouseup', onDragEndHandler);
57666
+ window.removeEventListener('blur', onDragBlurHandler);
57667
+ }
57668
+ return removeListeners;
57669
+ }, [isDragging, onDragStart, onDrag, onDragEnd, areaId]);
57670
+ return onStart;
57671
+ }
57672
+
57527
57673
  /***/ }),
57528
57674
 
57529
57675
  /***/ "./src/components/floating-panel/use-floating-panel-root.ts":
@@ -57579,7 +57725,8 @@ function useFloatingPanelRoot(_ref) {
57579
57725
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
57580
57726
  /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../hooks */ "./src/components/hooks/index.ts");
57581
57727
  /* harmony import */ var _use_floating_panel_root__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-floating-panel-root */ "./src/components/floating-panel/use-floating-panel-root.ts");
57582
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./src/components/floating-panel/constants.ts");
57728
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./src/components/floating-panel/types.ts");
57729
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ "./src/components/floating-panel/constants.ts");
57583
57730
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
57584
57731
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
57585
57732
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -57596,18 +57743,19 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
57596
57743
 
57597
57744
 
57598
57745
 
57746
+
57599
57747
  var step = 80;
57600
57748
  var dockAreaWidth = 26;
57601
- var delta = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, _constants__WEBPACK_IMPORTED_MODULE_3__.MOVE_KEYS.UP, {
57749
+ var delta = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, _constants__WEBPACK_IMPORTED_MODULE_4__.MOVE_KEYS.UP, {
57602
57750
  dx: 0,
57603
57751
  dy: -step
57604
- }), _constants__WEBPACK_IMPORTED_MODULE_3__.MOVE_KEYS.RIGHT, {
57752
+ }), _constants__WEBPACK_IMPORTED_MODULE_4__.MOVE_KEYS.RIGHT, {
57605
57753
  dx: step,
57606
57754
  dy: 0
57607
- }), _constants__WEBPACK_IMPORTED_MODULE_3__.MOVE_KEYS.DOWN, {
57755
+ }), _constants__WEBPACK_IMPORTED_MODULE_4__.MOVE_KEYS.DOWN, {
57608
57756
  dx: 0,
57609
57757
  dy: step
57610
- }), _constants__WEBPACK_IMPORTED_MODULE_3__.MOVE_KEYS.LEFT, {
57758
+ }), _constants__WEBPACK_IMPORTED_MODULE_4__.MOVE_KEYS.LEFT, {
57611
57759
  dx: -step,
57612
57760
  dy: 0
57613
57761
  });
@@ -57618,35 +57766,34 @@ function useFloatingPanelState(_ref) {
57618
57766
  maxHeight = _ref.maxHeight,
57619
57767
  isDockedExternal = _ref.isDocked,
57620
57768
  setIsDockedExternal = _ref.setIsDocked,
57769
+ isCollapsedExternal = _ref.isCollapsed,
57770
+ setIsCollapsedExternal = _ref.setIsCollapsed,
57621
57771
  initialState = _ref.initialState,
57622
57772
  containerElement = _ref.containerElement,
57623
57773
  pageContentElement = _ref.pageContentElement;
57624
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(isDockedExternal),
57774
+ var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {
57775
+ if (isDockedExternal) {
57776
+ return _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED;
57777
+ }
57778
+ if (isCollapsedExternal) {
57779
+ return _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED;
57780
+ }
57781
+ return _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING;
57782
+ }),
57625
57783
  _useState2 = _slicedToArray(_useState, 2),
57626
- isDocked = _useState2[0],
57627
- setIsDocked = _useState2[1];
57784
+ state = _useState2[0],
57785
+ setState = _useState2[1];
57628
57786
  var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
57629
57787
  _useState4 = _slicedToArray(_useState3, 2),
57630
57788
  isMoving = _useState4[0],
57631
57789
  setIsMoving = _useState4[1];
57632
- var animationRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
57633
- var headerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
57634
- var headerHeightRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(36);
57635
- var panelRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
57636
- var dragStartPositionsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
57637
- var isDockHighlightedRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
57638
- var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(containerElement);
57639
- var lastPositionRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({
57640
- top: 0,
57641
- left: 0,
57642
- width: 0,
57643
- height: 0
57644
- });
57790
+ var isDocked = state === _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED;
57791
+ var isCollapsed = state === _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED;
57645
57792
  var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialState ? {
57646
- top: initialState.top || lastPositionRef.current.top,
57647
- left: initialState.left || lastPositionRef.current.left,
57648
- width: between(initialState.width || lastPositionRef.current.width, minWidth, maxWidth),
57649
- height: between(initialState.height || lastPositionRef.current.height, minHeight, maxHeight)
57793
+ top: initialState.top,
57794
+ left: initialState.left,
57795
+ width: between(initialState.width, minWidth, maxWidth),
57796
+ height: between(initialState.height, minHeight, maxHeight)
57650
57797
  } : {
57651
57798
  top: 0,
57652
57799
  left: 0,
@@ -57654,17 +57801,80 @@ function useFloatingPanelState(_ref) {
57654
57801
  height: minHeight
57655
57802
  }),
57656
57803
  _useState6 = _slicedToArray(_useState5, 2),
57657
- state = _useState6[0],
57658
- setState = _useState6[1];
57659
- lastPositionRef.current = state;
57804
+ position = _useState6[0],
57805
+ setPosition = _useState6[1];
57806
+ var animationRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
57807
+ var headerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
57808
+ var headerHeightRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(36);
57809
+ var lastActiveElementRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
57810
+ var panelRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
57811
+ var dragStartPositionsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({
57812
+ width: minWidth,
57813
+ height: minHeight,
57814
+ left: 0,
57815
+ top: 0,
57816
+ mouseX: 0,
57817
+ mouseY: 0
57818
+ });
57819
+ var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(containerElement);
57820
+ var lastPositionRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(position);
57821
+ var lastExpandedPositionRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(position);
57822
+ var stateRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(state);
57823
+ stateRef.current = state;
57824
+ lastPositionRef.current = position;
57660
57825
  containerRef.current = containerElement;
57661
57826
  var style = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
57662
57827
  return isDocked ? {} : {
57663
- transform: "translate3d(".concat(state.left, "px, ").concat(state.top, "px, 0px)"),
57664
- width: "".concat(state.width, "px"),
57665
- height: "".concat(state.height, "px")
57828
+ transform: "translate3d(".concat(position.left, "px, ").concat(position.top, "px, 0px)"),
57829
+ width: "".concat(position.width, "px"),
57830
+ height: "".concat(position.height, "px")
57831
+ };
57832
+ }, [position, isDocked]);
57833
+ var runStateTransition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (nextState) {
57834
+ setState(nextState);
57835
+ var getKey = function getKey(from, to) {
57836
+ return "".concat(from, "->").concat(to);
57666
57837
  };
57667
- }, [state, isDocked]);
57838
+ var transitionPairs = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED), function () {
57839
+ setIsCollapsedExternal(true);
57840
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING), function () {
57841
+ setIsCollapsedExternal(false);
57842
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED), function () {
57843
+ setIsDockedExternal(true);
57844
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING), function () {
57845
+ setIsDockedExternal(false);
57846
+ setPosition(function (state) {
57847
+ var _dragStartPositionsRe, _dragStartPositionsRe2;
57848
+ return _objectSpread(_objectSpread({}, state), {}, {
57849
+ top: (_dragStartPositionsRe = dragStartPositionsRef.current) === null || _dragStartPositionsRe === void 0 ? void 0 : _dragStartPositionsRe.top,
57850
+ left: (_dragStartPositionsRe2 = dragStartPositionsRef.current) === null || _dragStartPositionsRe2 === void 0 ? void 0 : _dragStartPositionsRe2.left,
57851
+ width: lastPositionRef.current.width,
57852
+ height: lastPositionRef.current.height
57853
+ });
57854
+ });
57855
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED), function () {
57856
+ setIsCollapsedExternal(false);
57857
+ setIsDockedExternal(true);
57858
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED), function () {
57859
+ setIsCollapsedExternal(true);
57860
+ setIsDockedExternal(false);
57861
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.TO_BE_DOCKED), function () {
57862
+ toggleDockHighlight(true, containerRef.current);
57863
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.TO_BE_DOCKED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING), function () {
57864
+ toggleDockHighlight(false, containerRef.current);
57865
+ setIsDockedExternal(false);
57866
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.TO_BE_DOCKED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED), function () {
57867
+ setIsDockedExternal(true);
57868
+ toggleDockHighlight(false, containerRef.current);
57869
+ }), getKey(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.TO_BE_DOCKED), function () {
57870
+ setIsDockedExternal(false);
57871
+ toggleDockHighlight(true, containerRef.current);
57872
+ });
57873
+ var transition = transitionPairs[getKey(stateRef.current, nextState)];
57874
+ if (transition) {
57875
+ transition();
57876
+ }
57877
+ }, [setIsCollapsedExternal, setIsDockedExternal]);
57668
57878
  var onDrag = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (event) {
57669
57879
  if (animationRef.current) {
57670
57880
  return;
@@ -57675,18 +57885,11 @@ function useFloatingPanelState(_ref) {
57675
57885
  var maxTop = window.innerHeight - headerHeightRef.current;
57676
57886
  var nextLeft = event.clientX - (start.mouseX - start.left);
57677
57887
  var nextTop = event.clientY - (start.mouseY - start.top);
57678
- setState(function (state) {
57679
- var nextState = _objectSpread(_objectSpread({}, state), {}, {
57888
+ setPosition(function (position) {
57889
+ return _objectSpread(_objectSpread({}, position), {}, {
57680
57890
  top: between(nextTop, 0, maxTop),
57681
57891
  left: between(nextLeft, 0, maxLeft)
57682
57892
  });
57683
- var nextIsDockHighlighted = isInDockArea(nextState);
57684
- // DOM manipulation, not state
57685
- if (nextIsDockHighlighted !== isDockHighlightedRef.current) {
57686
- toggleDockHighlight(nextIsDockHighlighted, containerRef.current);
57687
- isDockHighlightedRef.current = nextIsDockHighlighted;
57688
- }
57689
- return nextState;
57690
57893
  });
57691
57894
  animationRef.current = null;
57692
57895
  });
@@ -57704,26 +57907,17 @@ function useFloatingPanelState(_ref) {
57704
57907
  mouseX: mouseX,
57705
57908
  mouseY: mouseY
57706
57909
  });
57707
- lastPositionRef.current = dragStartPositionsRef.current;
57708
57910
  setIsMoving(true);
57709
- }, []);
57911
+ if (!isCollapsed) {
57912
+ lastExpandedPositionRef.current = dragStartPositionsRef.current;
57913
+ }
57914
+ }, [isCollapsed]);
57710
57915
  var onDragEnd = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
57711
- if (isDockHighlightedRef.current) {
57712
- var position = dragStartPositionsRef.current;
57713
- setIsDocked(true);
57714
- setIsDockedExternal(true);
57715
- setState(function (state) {
57716
- var nextState = _objectSpread(_objectSpread({}, state), {}, {
57717
- left: window.innerWidth - position.width - dockAreaWidth * 2
57718
- });
57719
- lastPositionRef.current = nextState;
57720
- return nextState;
57721
- });
57722
- isDockHighlightedRef.current = false;
57723
- toggleDockHighlight(false, containerRef.current);
57916
+ if (state === _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.TO_BE_DOCKED) {
57917
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED);
57724
57918
  }
57725
57919
  setIsMoving(false);
57726
- }, []);
57920
+ }, [state, runStateTransition]);
57727
57921
  var onResize = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {
57728
57922
  if (animationRef.current) {
57729
57923
  return;
@@ -57731,7 +57925,7 @@ function useFloatingPanelState(_ref) {
57731
57925
  animationRef.current = requestAnimationFrame(function () {
57732
57926
  var start = dragStartPositionsRef.current;
57733
57927
  var statePatch = {};
57734
- var resize = _constants__WEBPACK_IMPORTED_MODULE_3__.resizeHandlesMap.get(e.areaId);
57928
+ var resize = _constants__WEBPACK_IMPORTED_MODULE_4__.resizeHandlesMap.get(e.areaId);
57735
57929
  if (resize !== null && resize !== void 0 && resize.right) {
57736
57930
  var width = between(start.width + (e.pageX - start.mouseX), minWidth, maxWidth);
57737
57931
  if (width !== start.width) {
@@ -57747,9 +57941,10 @@ function useFloatingPanelState(_ref) {
57747
57941
  if (resize !== null && resize !== void 0 && resize.top) {
57748
57942
  var _height = start.height - (e.pageY - start.mouseY);
57749
57943
  var nextTop = start.top + (e.pageY - start.mouseY);
57750
- if (_height > minHeight && _height <= maxHeight && nextTop > 0) {
57944
+ var nextTopLimited = between(0, nextTop, window.innerHeight - headerHeightRef.current);
57945
+ if (_height > minHeight && _height <= maxHeight && nextTopLimited > 0) {
57751
57946
  statePatch.height = _height;
57752
- statePatch.top = nextTop;
57947
+ statePatch.top = nextTopLimited;
57753
57948
  }
57754
57949
  }
57755
57950
  if (resize !== null && resize !== void 0 && resize.left) {
@@ -57760,8 +57955,8 @@ function useFloatingPanelState(_ref) {
57760
57955
  }
57761
57956
  }
57762
57957
  if (Object.keys(statePatch).length) {
57763
- setState(function (state) {
57764
- return _objectSpread(_objectSpread({}, state), statePatch);
57958
+ setPosition(function (position) {
57959
+ return _objectSpread(_objectSpread({}, position), statePatch);
57765
57960
  });
57766
57961
  }
57767
57962
  animationRef.current = null;
@@ -57769,23 +57964,44 @@ function useFloatingPanelState(_ref) {
57769
57964
  }, [minWidth, minHeight, maxWidth, maxHeight]);
57770
57965
  var onResizeEnd = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
57771
57966
  setIsMoving(false);
57772
- }, []);
57773
- var setIsDockedHandler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (docked) {
57774
- var element = panelRef.current;
57775
- if (!element || docked === isDocked) {
57776
- return;
57967
+ var nextIsDockHighlighted = isInDockArea(_objectSpread({}, lastPositionRef.current));
57968
+ if (nextIsDockHighlighted && state !== _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED) {
57969
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED);
57777
57970
  }
57971
+ }, [state]);
57972
+ var setIsDockedHandler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (docked) {
57778
57973
  if (docked) {
57779
- setIsDocked(true);
57974
+ var element = panelRef.current;
57975
+ dragStartPositionsRef.current = _objectSpread(_objectSpread({}, getPanelStateFromElement(element)), {}, {
57976
+ mouseX: 0,
57977
+ mouseY: 0
57978
+ });
57979
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED);
57780
57980
  } else {
57781
- setIsDocked(false);
57981
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING);
57982
+ }
57983
+ }, [runStateTransition]);
57984
+ var setIsCollapsedHandler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (collapsed) {
57985
+ if (collapsed === isCollapsed) {
57986
+ return;
57987
+ }
57988
+ if (collapsed && !isDocked) {
57989
+ lastExpandedPositionRef.current = getPanelStateFromElement(panelRef.current);
57782
57990
  }
57783
- if (isDockedExternal !== docked) {
57784
- setIsDockedExternal(docked);
57991
+ if (collapsed) {
57992
+ setPosition(function (position) {
57993
+ return _objectSpread(_objectSpread({}, position), {}, {
57994
+ top: window.innerHeight - headerHeightRef.current
57995
+ });
57996
+ });
57997
+ } else {
57998
+ setPosition(function (position) {
57999
+ return _objectSpread(_objectSpread({}, position), lastExpandedPositionRef.current);
58000
+ });
57785
58001
  }
57786
- }, [isDockedExternal, isDocked, setIsDockedExternal]);
57787
- var onMoveWithArrows = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (event) {
57788
- if (!_constants__WEBPACK_IMPORTED_MODULE_3__.MOVE_KEYS_VALUES.includes(event.key)) {
58002
+ }, [isCollapsed, isDocked]);
58003
+ var onMoveWithArrows = function onMoveWithArrows(event) {
58004
+ if (!_constants__WEBPACK_IMPORTED_MODULE_4__.MOVE_KEYS_VALUES.includes(event.key)) {
57789
58005
  return;
57790
58006
  }
57791
58007
  var element = panelRef.current;
@@ -57799,38 +58015,72 @@ function useFloatingPanelState(_ref) {
57799
58015
  var maxTop = window.innerHeight - headerHeightRef.current;
57800
58016
  var nextLeft = currentState.left + dx;
57801
58017
  var nextTop = currentState.top + dy;
57802
- var shouldDockInsteadOfMove = false;
57803
- var nextState = _objectSpread(_objectSpread({}, state), {}, {
58018
+ var nextState = _objectSpread(_objectSpread({}, position), {}, {
57804
58019
  top: between(nextTop, 0, maxTop),
57805
58020
  left: between(nextLeft, 0, maxLeft)
57806
58021
  });
57807
- shouldDockInsteadOfMove = isInDockArea(nextState) !== isDocked;
57808
- if (shouldDockInsteadOfMove) {
57809
- setIsDocked(true);
57810
- setIsDockedExternal(true);
58022
+ if (nextState.top === lastPositionRef.current.top && nextState.left === lastPositionRef.current.left) {
58023
+ return;
58024
+ }
58025
+ var nextDocked = isInDockArea(nextState);
58026
+ if (isDocked && nextDocked === isDocked) {
58027
+ return;
58028
+ }
58029
+ if (nextDocked && !isDocked) {
58030
+ dragStartPositionsRef.current = _objectSpread(_objectSpread({}, currentState), {}, {
58031
+ mouseX: 0,
58032
+ mouseY: 0
58033
+ });
58034
+ lastExpandedPositionRef.current = dragStartPositionsRef.current;
58035
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED);
57811
58036
  } else {
57812
- setState(nextState);
58037
+ setPosition(nextState);
57813
58038
  }
57814
- }, [isDocked, state, setIsDockedExternal]);
58039
+ };
57815
58040
  var getPosition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
57816
58041
  return lastPositionRef.current;
57817
58042
  }, []);
58043
+
58044
+ // state transition based on position
58045
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
58046
+ var nextCollapsed = isCollapsedPosition(position, headerHeightRef.current);
58047
+ var nextIsDockHighlighted = isInDockArea(position);
58048
+ if (nextCollapsed && state !== _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED) {
58049
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.COLLAPSED);
58050
+ } else if (nextIsDockHighlighted && ![_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.TO_BE_DOCKED, _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.DOCKED].includes(state)) {
58051
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.TO_BE_DOCKED);
58052
+ } else if (!nextCollapsed && !nextIsDockHighlighted && state !== _types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING) {
58053
+ runStateTransition(_types__WEBPACK_IMPORTED_MODULE_3__.PANEL_STATE.FLOATING);
58054
+ }
58055
+ }, [position]);
58056
+
58057
+ // sync up with external state changes
57818
58058
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
57819
58059
  if (isDockedExternal !== isDocked) {
57820
58060
  setIsDockedHandler(isDockedExternal);
57821
58061
  }
57822
58062
  }, [isDockedExternal]);
58063
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
58064
+ if (isCollapsedExternal !== isCollapsed) {
58065
+ setIsCollapsedHandler(isCollapsedExternal);
58066
+ }
58067
+ }, [isCollapsedExternal]);
57823
58068
 
57824
58069
  // update position on window resize
58070
+ // initialise position and sizes
57825
58071
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
57826
58072
  var header = headerRef.current;
57827
58073
  headerHeightRef.current = header.getBoundingClientRect().height;
58074
+ dragStartPositionsRef.current = _objectSpread(_objectSpread({}, getPanelStateFromElement(panelRef.current)), {}, {
58075
+ mouseX: 0,
58076
+ mouseY: 0
58077
+ });
57828
58078
  var onResizeHandler = function onResizeHandler() {
57829
58079
  var start = lastPositionRef.current;
57830
58080
  var maxLeft = window.innerWidth - start.width;
57831
58081
  var maxTop = window.innerHeight - headerHeightRef.current;
57832
58082
  if (start.left > maxLeft || start.top > maxTop) {
57833
- setState(function (state) {
58083
+ setPosition(function (state) {
57834
58084
  return _objectSpread(_objectSpread({}, state), {}, {
57835
58085
  top: between(start.top, 0, maxTop),
57836
58086
  left: between(start.left, 0, maxLeft)
@@ -57847,42 +58097,65 @@ function useFloatingPanelState(_ref) {
57847
58097
  }
57848
58098
  };
57849
58099
  }, []);
58100
+
58101
+ // this allows to return focus to the last active element
58102
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(function () {
58103
+ lastActiveElementRef.current = document.activeElement;
58104
+ var onEscapeHandler = function onEscapeHandler(e) {
58105
+ if (e.key === 'Escape') {
58106
+ (lastActiveElementRef.current || document.body).focus();
58107
+ }
58108
+ };
58109
+ window.addEventListener('keydown', onEscapeHandler);
58110
+ return function () {
58111
+ window.addEventListener('keydown', onEscapeHandler);
58112
+ };
58113
+ }, []);
57850
58114
  (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useFocusTrap)(panelRef);
57851
58115
  // update style according to content and header height
57852
58116
  (0,_use_floating_panel_root__WEBPACK_IMPORTED_MODULE_2__.useFloatingPanelRoot)({
57853
58117
  containerElement: containerElement,
57854
58118
  pageContentElement: pageContentElement
57855
58119
  });
57856
- var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
57857
- return {
57858
- onDrag: onDrag,
57859
- onDragStart: onMovementStart,
57860
- onDragEnd: onDragEnd,
57861
- onMoveWithArrows: onMoveWithArrows,
57862
- isDocked: isDocked,
57863
- setIsDocked: setIsDockedHandler,
57864
- getPosition: getPosition,
57865
- isMoving: isMoving
57866
- };
57867
- }, [isDocked, setIsDockedHandler, onDrag, onDragEnd, onMovementStart, onMoveWithArrows, getPosition, isMoving]);
57868
- var api = {
58120
+ var context = {
58121
+ onDrag: onDrag,
58122
+ onDragStart: onMovementStart,
58123
+ onDragEnd: onDragEnd,
58124
+ onMoveWithArrows: onMoveWithArrows,
58125
+ isDocked: isDocked,
58126
+ setIsDocked: setIsDockedHandler,
58127
+ isCollapsed: isCollapsed,
58128
+ setIsCollapsed: setIsCollapsedHandler,
58129
+ getPosition: getPosition,
58130
+ isMoving: isMoving
58131
+ };
58132
+ return {
57869
58133
  style: style,
57870
58134
  panelRef: panelRef,
57871
58135
  headerRef: headerRef,
57872
58136
  onResize: onResize,
57873
58137
  onMovementStart: onMovementStart,
57874
58138
  onResizeEnd: onResizeEnd,
57875
- setState: setState,
57876
- context: context,
58139
+ setPosition: setPosition,
58140
+ context: (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
58141
+ return context;
58142
+ }, Object.values(context)),
57877
58143
  isDocked: isDocked,
57878
58144
  setIsDocked: setIsDockedHandler,
58145
+ isCollapsed: isCollapsed,
58146
+ setIsCollapsed: setIsCollapsedHandler,
57879
58147
  getPosition: getPosition
57880
58148
  };
57881
- return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
57882
- return api;
57883
- }, Object.values(api));
57884
58149
  }
57885
58150
  function getPanelStateFromElement(element) {
58151
+ if (!element) {
58152
+ return {
58153
+ width: 0,
58154
+ height: 0,
58155
+ left: 0,
58156
+ top: 0
58157
+ };
58158
+ }
57886
58159
  var bbox = element.getBoundingClientRect();
57887
58160
  return {
57888
58161
  width: bbox.width,
@@ -57894,14 +58167,17 @@ function getPanelStateFromElement(element) {
57894
58167
  function isInDockArea(panelPosition) {
57895
58168
  return panelPosition.left + panelPosition.width > window.innerWidth - dockAreaWidth;
57896
58169
  }
58170
+ function isCollapsedPosition(panelPosition, headerHeight) {
58171
+ return window.innerHeight - panelPosition.top <= headerHeight;
58172
+ }
57897
58173
  function toggleDockHighlight(isDockHighlighted, element) {
57898
58174
  if (!element) {
57899
58175
  return;
57900
58176
  }
57901
58177
  if (isDockHighlighted) {
57902
- element.classList.add(_constants__WEBPACK_IMPORTED_MODULE_3__.HIGHLIGHTED_CLASSNAME);
58178
+ element.classList.add(_constants__WEBPACK_IMPORTED_MODULE_4__.HIGHLIGHTED_CLASSNAME);
57903
58179
  } else {
57904
- element.classList.remove(_constants__WEBPACK_IMPORTED_MODULE_3__.HIGHLIGHTED_CLASSNAME);
58180
+ element.classList.remove(_constants__WEBPACK_IMPORTED_MODULE_4__.HIGHLIGHTED_CLASSNAME);
57905
58181
  }
57906
58182
  }
57907
58183
  function between(value, min, max) {