@chayns-components/core 5.0.0-beta.1004 → 5.0.0-beta.1005
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.
- package/lib/cjs/components/accordion/Accordion.js +30 -30
- package/lib/cjs/components/accordion/Accordion.js.map +1 -1
- package/lib/cjs/components/accordion/Accordion.styles.js +22 -21
- package/lib/cjs/components/accordion/Accordion.styles.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js +2 -2
- package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js +16 -16
- package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.js +26 -26
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js +11 -11
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
- package/lib/cjs/components/amount-control/AmountControl.js +31 -31
- package/lib/cjs/components/amount-control/AmountControl.js.map +1 -1
- package/lib/cjs/components/amount-control/AmountControl.styles.js +2 -2
- package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/cjs/components/button/Button.js +12 -12
- package/lib/cjs/components/button/Button.js.map +1 -1
- package/lib/cjs/components/button/Button.styles.js +4 -4
- package/lib/cjs/components/button/Button.styles.js.map +1 -1
- package/lib/cjs/components/combobox/ComboBox.js +48 -48
- package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
- package/lib/cjs/components/combobox/ComboBox.styles.js +2 -2
- package/lib/cjs/components/combobox/ComboBox.styles.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.js +23 -23
- package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.styles.js +2 -2
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.styles.js.map +1 -1
- package/lib/cjs/components/expandable-content/ExpandableContent.js +4 -4
- package/lib/cjs/components/expandable-content/ExpandableContent.js.map +1 -1
- package/lib/cjs/components/expandable-content/ExpandableContent.styles.js +2 -2
- package/lib/cjs/components/expandable-content/ExpandableContent.styles.js.map +1 -1
- package/lib/cjs/components/file-input/FileInput.js +27 -27
- package/lib/cjs/components/file-input/FileInput.js.map +1 -1
- package/lib/cjs/components/file-input/FileInput.styles.js +2 -2
- package/lib/cjs/components/file-input/FileInput.styles.js.map +1 -1
- package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js +2 -2
- package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
- package/lib/cjs/components/input/Input.styles.js +4 -4
- package/lib/cjs/components/input/Input.styles.js.map +1 -1
- package/lib/cjs/components/list/List.js +11 -11
- package/lib/cjs/components/list/List.js.map +1 -1
- package/lib/cjs/components/list/list-item/ListItem.js +17 -17
- package/lib/cjs/components/list/list-item/ListItem.js.map +1 -1
- package/lib/cjs/components/list/list-item/ListItem.styles.js +2 -2
- package/lib/cjs/components/list/list-item/ListItem.styles.js.map +1 -1
- package/lib/cjs/components/list/list-item/list-item-body/ListItemBody.styles.js +2 -2
- package/lib/cjs/components/list/list-item/list-item-body/ListItemBody.styles.js.map +1 -1
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js +5 -5
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
- package/lib/cjs/components/mention-finder/MentionFinder.js +17 -17
- package/lib/cjs/components/mention-finder/MentionFinder.js.map +1 -1
- package/lib/cjs/components/mention-finder/MentionFinder.styles.js +2 -2
- package/lib/cjs/components/mention-finder/MentionFinder.styles.js.map +1 -1
- package/lib/cjs/components/popup/Popup.js +34 -34
- package/lib/cjs/components/popup/Popup.js.map +1 -1
- package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js +2 -2
- package/lib/cjs/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js.map +1 -1
- package/lib/cjs/components/progress-bar/ProgressBar.styles.js +2 -2
- package/lib/cjs/components/progress-bar/ProgressBar.styles.js.map +1 -1
- package/lib/cjs/components/radio-button/RadioButton.js +17 -17
- package/lib/cjs/components/radio-button/RadioButton.js.map +1 -1
- package/lib/cjs/components/radio-button/RadioButton.styles.js +2 -2
- package/lib/cjs/components/radio-button/RadioButton.styles.js.map +1 -1
- package/lib/cjs/components/search-box/SearchBox.js +64 -64
- package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
- package/lib/cjs/components/search-box/SearchBox.styles.js +2 -2
- package/lib/cjs/components/search-box/SearchBox.styles.js.map +1 -1
- package/lib/cjs/components/search-box/search-box-body/SearchBoxBody.styles.js +2 -2
- package/lib/cjs/components/search-box/search-box-body/SearchBoxBody.styles.js.map +1 -1
- package/lib/cjs/components/search-input/SearchInput.js +16 -16
- package/lib/cjs/components/search-input/SearchInput.js.map +1 -1
- package/lib/cjs/components/search-input/SearchInput.styles.js +3 -3
- package/lib/cjs/components/search-input/SearchInput.styles.js.map +1 -1
- package/lib/cjs/components/slider/Slider.styles.js +2 -2
- package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.js +44 -44
- package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.styles.js +2 -2
- package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
- package/lib/cjs/components/truncation/Truncation.styles.js +2 -2
- package/lib/cjs/components/truncation/Truncation.styles.js.map +1 -1
- package/lib/cjs/utils/sliderButton.js.map +1 -1
- package/lib/esm/components/accordion/Accordion.js +1 -1
- package/lib/esm/components/accordion/Accordion.js.map +1 -1
- package/lib/esm/components/accordion/Accordion.styles.js +21 -20
- package/lib/esm/components/accordion/Accordion.styles.js.map +1 -1
- package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js +1 -1
- package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
- package/lib/esm/components/accordion/accordion-group/AccordionGroup.js +1 -1
- package/lib/esm/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
- package/lib/esm/components/amount-control/AmountControl.js +2 -2
- package/lib/esm/components/amount-control/AmountControl.js.map +1 -1
- package/lib/esm/components/amount-control/AmountControl.styles.js +1 -1
- package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/esm/components/button/Button.js +1 -1
- package/lib/esm/components/button/Button.js.map +1 -1
- package/lib/esm/components/button/Button.styles.js +1 -1
- package/lib/esm/components/button/Button.styles.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.js +1 -1
- package/lib/esm/components/combobox/ComboBox.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.styles.js +1 -1
- package/lib/esm/components/combobox/ComboBox.styles.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.js +1 -1
- package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.styles.js +1 -1
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.styles.js.map +1 -1
- package/lib/esm/components/expandable-content/ExpandableContent.js +1 -1
- package/lib/esm/components/expandable-content/ExpandableContent.js.map +1 -1
- package/lib/esm/components/expandable-content/ExpandableContent.styles.js +1 -1
- package/lib/esm/components/expandable-content/ExpandableContent.styles.js.map +1 -1
- package/lib/esm/components/file-input/FileInput.js +1 -1
- package/lib/esm/components/file-input/FileInput.js.map +1 -1
- package/lib/esm/components/file-input/FileInput.styles.js +1 -1
- package/lib/esm/components/file-input/FileInput.styles.js.map +1 -1
- package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js +1 -1
- package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
- package/lib/esm/components/input/Input.styles.js +1 -1
- package/lib/esm/components/input/Input.styles.js.map +1 -1
- package/lib/esm/components/list/List.js +1 -1
- package/lib/esm/components/list/List.js.map +1 -1
- package/lib/esm/components/list/list-item/ListItem.js +1 -1
- package/lib/esm/components/list/list-item/ListItem.js.map +1 -1
- package/lib/esm/components/list/list-item/ListItem.styles.js +1 -1
- package/lib/esm/components/list/list-item/ListItem.styles.js.map +1 -1
- package/lib/esm/components/list/list-item/list-item-body/ListItemBody.styles.js +1 -1
- package/lib/esm/components/list/list-item/list-item-body/ListItemBody.styles.js.map +1 -1
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js +1 -1
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
- package/lib/esm/components/mention-finder/MentionFinder.js +1 -1
- package/lib/esm/components/mention-finder/MentionFinder.js.map +1 -1
- package/lib/esm/components/mention-finder/MentionFinder.styles.js +1 -1
- package/lib/esm/components/mention-finder/MentionFinder.styles.js.map +1 -1
- package/lib/esm/components/popup/Popup.js +1 -1
- package/lib/esm/components/popup/Popup.js.map +1 -1
- package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js +1 -1
- package/lib/esm/components/popup/popup-content-wrapper/PopupContentWrapper.styles.js.map +1 -1
- package/lib/esm/components/progress-bar/ProgressBar.styles.js +1 -1
- package/lib/esm/components/progress-bar/ProgressBar.styles.js.map +1 -1
- package/lib/esm/components/radio-button/RadioButton.js +2 -2
- package/lib/esm/components/radio-button/RadioButton.js.map +1 -1
- package/lib/esm/components/radio-button/RadioButton.styles.js +1 -1
- package/lib/esm/components/radio-button/RadioButton.styles.js.map +1 -1
- package/lib/esm/components/search-box/SearchBox.js +1 -1
- package/lib/esm/components/search-box/SearchBox.js.map +1 -1
- package/lib/esm/components/search-box/SearchBox.styles.js +1 -1
- package/lib/esm/components/search-box/SearchBox.styles.js.map +1 -1
- package/lib/esm/components/search-box/search-box-body/SearchBoxBody.styles.js +1 -1
- package/lib/esm/components/search-box/search-box-body/SearchBoxBody.styles.js.map +1 -1
- package/lib/esm/components/search-input/SearchInput.js +1 -1
- package/lib/esm/components/search-input/SearchInput.js.map +1 -1
- package/lib/esm/components/search-input/SearchInput.styles.js +1 -1
- package/lib/esm/components/search-input/SearchInput.styles.js.map +1 -1
- package/lib/esm/components/slider/Slider.styles.js +1 -1
- package/lib/esm/components/slider/Slider.styles.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.js +1 -1
- package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.styles.js +1 -1
- package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
- package/lib/esm/components/truncation/Truncation.styles.js +1 -1
- package/lib/esm/components/truncation/Truncation.styles.js.map +1 -1
- package/lib/esm/utils/sliderButton.js.map +1 -1
- package/lib/types/components/accordion/Accordion.styles.d.ts +2 -263
- package/lib/types/components/accordion/accordion-body/AccordionBody.styles.d.ts +2 -263
- package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +20 -2660
- package/lib/types/components/amount-control/AmountControl.styles.d.ts +2 -273
- package/lib/types/components/button/Button.styles.d.ts +6 -799
- package/lib/types/components/combobox/ComboBox.styles.d.ts +2 -263
- package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +2 -263
- package/lib/types/components/expandable-content/ExpandableContent.styles.d.ts +2 -263
- package/lib/types/components/file-input/FileInput.styles.d.ts +2 -263
- package/lib/types/components/filter-buttons/filter-button/FilterButton.styles.d.ts +2 -263
- package/lib/types/components/input/Input.styles.d.ts +6 -791
- package/lib/types/components/list/list-item/ListItem.styles.d.ts +2 -263
- package/lib/types/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +2 -263
- package/lib/types/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +8 -1052
- package/lib/types/components/mention-finder/MentionFinder.styles.d.ts +2 -263
- package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.styles.d.ts +2 -263
- package/lib/types/components/progress-bar/ProgressBar.styles.d.ts +2 -263
- package/lib/types/components/radio-button/RadioButton.styles.d.ts +3 -264
- package/lib/types/components/search-box/SearchBox.styles.d.ts +2 -263
- package/lib/types/components/search-box/search-box-body/SearchBoxBody.styles.d.ts +2 -263
- package/lib/types/components/search-input/SearchInput.styles.d.ts +4 -526
- package/lib/types/components/slider/Slider.styles.d.ts +3 -585
- package/lib/types/components/slider-button/SliderButton.styles.d.ts +2 -263
- package/lib/types/components/truncation/Truncation.styles.d.ts +2 -263
- package/lib/types/utils/sliderButton.d.ts +1 -1
- package/package.json +3 -3
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _chaynsApi = require("chayns-api");
|
|
8
|
-
var
|
|
9
|
-
var
|
|
8
|
+
var _react = require("motion/react");
|
|
9
|
+
var _react2 = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _reactDom = require("react-dom");
|
|
11
11
|
var _styledComponents = require("styled-components");
|
|
12
12
|
var _calculate = require("../../utils/calculate");
|
|
@@ -21,7 +21,7 @@ var _SearchBox = require("./SearchBox.styles");
|
|
|
21
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
22
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
23
23
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
24
|
-
const SearchBox = /*#__PURE__*/(0,
|
|
24
|
+
const SearchBox = /*#__PURE__*/(0, _react2.forwardRef)(({
|
|
25
25
|
placeholder,
|
|
26
26
|
leftIcons,
|
|
27
27
|
lists,
|
|
@@ -37,45 +37,45 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
37
37
|
shouldAddInputToList = true,
|
|
38
38
|
shouldShowToggleIcon = false
|
|
39
39
|
}, ref) => {
|
|
40
|
-
const [matchingListsItems, setMatchingListsItems] = (0,
|
|
41
|
-
const [selectedImage, setSelectedImage] = (0,
|
|
42
|
-
const [value, setValue] = (0,
|
|
43
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
44
|
-
const [height, setHeight] = (0,
|
|
45
|
-
const [width, setWidth] = (0,
|
|
46
|
-
const [focusedIndex, setFocusedIndex] = (0,
|
|
47
|
-
const [hasMultipleGroups, setHasMultipleGroups] = (0,
|
|
48
|
-
const [filteredChildrenArray, setFilteredChildrenArray] = (0,
|
|
49
|
-
const [inputToListValue, setInputToListValue] = (0,
|
|
50
|
-
const [groups, setGroups] = (0,
|
|
51
|
-
const [portal, setPortal] = (0,
|
|
52
|
-
const [internalCoordinates, setInternalCoordinates] = (0,
|
|
40
|
+
const [matchingListsItems, setMatchingListsItems] = (0, _react2.useState)(lists);
|
|
41
|
+
const [selectedImage, setSelectedImage] = (0, _react2.useState)();
|
|
42
|
+
const [value, setValue] = (0, _react2.useState)('');
|
|
43
|
+
const [isAnimating, setIsAnimating] = (0, _react2.useState)(false);
|
|
44
|
+
const [height, setHeight] = (0, _react2.useState)(0);
|
|
45
|
+
const [width, setWidth] = (0, _react2.useState)(0);
|
|
46
|
+
const [focusedIndex, setFocusedIndex] = (0, _react2.useState)(null);
|
|
47
|
+
const [hasMultipleGroups, setHasMultipleGroups] = (0, _react2.useState)(lists.length > 1);
|
|
48
|
+
const [filteredChildrenArray, setFilteredChildrenArray] = (0, _react2.useState)();
|
|
49
|
+
const [inputToListValue, setInputToListValue] = (0, _react2.useState)('');
|
|
50
|
+
const [groups, setGroups] = (0, _react2.useState)(['all']);
|
|
51
|
+
const [portal, setPortal] = (0, _react2.useState)();
|
|
52
|
+
const [internalCoordinates, setInternalCoordinates] = (0, _react2.useState)({
|
|
53
53
|
x: 0,
|
|
54
54
|
y: 0
|
|
55
55
|
});
|
|
56
|
-
const [newContainer, setNewContainer] = (0,
|
|
57
|
-
const boxRef = (0,
|
|
58
|
-
const contentRef = (0,
|
|
59
|
-
const inputRef = (0,
|
|
60
|
-
const hasFocusRef = (0,
|
|
61
|
-
const isAnimatingRef = (0,
|
|
56
|
+
const [newContainer, setNewContainer] = (0, _react2.useState)(container ?? null);
|
|
57
|
+
const boxRef = (0, _react2.useRef)(null);
|
|
58
|
+
const contentRef = (0, _react2.useRef)(null);
|
|
59
|
+
const inputRef = (0, _react2.useRef)(null);
|
|
60
|
+
const hasFocusRef = (0, _react2.useRef)(false);
|
|
61
|
+
const isAnimatingRef = (0, _react2.useRef)(false);
|
|
62
62
|
const theme = (0, _styledComponents.useTheme)();
|
|
63
63
|
const {
|
|
64
64
|
browser
|
|
65
65
|
} = (0, _chaynsApi.getDevice)();
|
|
66
|
-
(0,
|
|
66
|
+
(0, _react2.useEffect)(() => {
|
|
67
67
|
if (boxRef.current && !container) {
|
|
68
68
|
const el = boxRef.current;
|
|
69
69
|
const element = el.closest('.dialog-inner') || el.closest('body');
|
|
70
70
|
setNewContainer(element);
|
|
71
71
|
}
|
|
72
72
|
}, [container]);
|
|
73
|
-
(0,
|
|
73
|
+
(0, _react2.useEffect)(() => {
|
|
74
74
|
if (container instanceof Element) {
|
|
75
75
|
setNewContainer(container);
|
|
76
76
|
}
|
|
77
77
|
}, [container]);
|
|
78
|
-
(0,
|
|
78
|
+
(0, _react2.useEffect)(() => {
|
|
79
79
|
if (boxRef.current) {
|
|
80
80
|
const {
|
|
81
81
|
x,
|
|
@@ -91,10 +91,10 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
91
91
|
/**
|
|
92
92
|
* Checks if Lists are smaller then 1
|
|
93
93
|
*/
|
|
94
|
-
(0,
|
|
94
|
+
(0, _react2.useEffect)(() => {
|
|
95
95
|
setHasMultipleGroups(lists.length > 1);
|
|
96
96
|
}, [lists]);
|
|
97
|
-
const filterButtons = (0,
|
|
97
|
+
const filterButtons = (0, _react2.useMemo)(() => {
|
|
98
98
|
const items = [];
|
|
99
99
|
if (lists.length <= 1) {
|
|
100
100
|
return items;
|
|
@@ -115,7 +115,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
115
115
|
/**
|
|
116
116
|
* Filters the lists by the FilterButtons
|
|
117
117
|
*/
|
|
118
|
-
const activeList = (0,
|
|
118
|
+
const activeList = (0, _react2.useMemo)(() => {
|
|
119
119
|
let newLists = [];
|
|
120
120
|
if (groups[0] === 'all') {
|
|
121
121
|
newLists = lists;
|
|
@@ -158,7 +158,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
158
158
|
setMatchingListsItems(filteredMatchingListItems);
|
|
159
159
|
return newLists;
|
|
160
160
|
}, [groups, lists, shouldAddInputToList, value]);
|
|
161
|
-
const handleOpen = (0,
|
|
161
|
+
const handleOpen = (0, _react2.useCallback)(() => {
|
|
162
162
|
if (boxRef.current) {
|
|
163
163
|
const {
|
|
164
164
|
x,
|
|
@@ -172,7 +172,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
172
172
|
setIsAnimating(true);
|
|
173
173
|
}
|
|
174
174
|
}, []);
|
|
175
|
-
const handleClose = (0,
|
|
175
|
+
const handleClose = (0, _react2.useCallback)(() => {
|
|
176
176
|
setIsAnimating(false);
|
|
177
177
|
}, []);
|
|
178
178
|
const handleFilterButtonsGroupSelect = keys => {
|
|
@@ -182,7 +182,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
182
182
|
/**
|
|
183
183
|
* This function closes the list of items
|
|
184
184
|
*/
|
|
185
|
-
const handleOutsideClick = (0,
|
|
185
|
+
const handleOutsideClick = (0, _react2.useCallback)(event => {
|
|
186
186
|
if (boxRef.current && !boxRef.current.contains(event.target) && contentRef.current && !contentRef.current.contains(event.target)) {
|
|
187
187
|
handleClose();
|
|
188
188
|
}
|
|
@@ -191,7 +191,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
191
191
|
/**
|
|
192
192
|
* This hook listens for clicks
|
|
193
193
|
*/
|
|
194
|
-
(0,
|
|
194
|
+
(0, _react2.useEffect)(() => {
|
|
195
195
|
document.addEventListener('click', handleOutsideClick);
|
|
196
196
|
window.addEventListener('blur', () => handleClose());
|
|
197
197
|
return () => {
|
|
@@ -203,7 +203,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
203
203
|
/**
|
|
204
204
|
* This hook calculates the height
|
|
205
205
|
*/
|
|
206
|
-
(0,
|
|
206
|
+
(0, _react2.useEffect)(() => {
|
|
207
207
|
const textArray = [];
|
|
208
208
|
activeList.forEach(({
|
|
209
209
|
list,
|
|
@@ -226,7 +226,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
226
226
|
/**
|
|
227
227
|
* This hook calculates the width
|
|
228
228
|
*/
|
|
229
|
-
(0,
|
|
229
|
+
(0, _react2.useEffect)(() => {
|
|
230
230
|
const input = document.getElementById('search_box_input');
|
|
231
231
|
const getInputWidth = () => {
|
|
232
232
|
if (input) {
|
|
@@ -237,7 +237,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
237
237
|
new ResizeObserver(getInputWidth).observe(input);
|
|
238
238
|
}
|
|
239
239
|
}, []);
|
|
240
|
-
(0,
|
|
240
|
+
(0, _react2.useEffect)(() => {
|
|
241
241
|
if (selectedId) {
|
|
242
242
|
activeList.forEach(({
|
|
243
243
|
list
|
|
@@ -248,7 +248,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
248
248
|
if (selectedItem) {
|
|
249
249
|
setValue(selectedItem.text);
|
|
250
250
|
if (selectedItem.imageUrl) {
|
|
251
|
-
setSelectedImage(/*#__PURE__*/
|
|
251
|
+
setSelectedImage(/*#__PURE__*/_react2.default.createElement(_SearchBoxItem2.StyledSearchBoxItemImage, {
|
|
252
252
|
src: selectedItem.imageUrl,
|
|
253
253
|
$shouldShowRoundImage: shouldShowRoundImage
|
|
254
254
|
}));
|
|
@@ -262,15 +262,15 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
262
262
|
* This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value
|
|
263
263
|
* should not be reset if the list changes and the selectedId is still undefined.
|
|
264
264
|
*/
|
|
265
|
-
(0,
|
|
265
|
+
(0, _react2.useEffect)(() => {
|
|
266
266
|
if (!selectedId) {
|
|
267
267
|
setValue('');
|
|
268
268
|
}
|
|
269
269
|
}, [selectedId]);
|
|
270
|
-
(0,
|
|
270
|
+
(0, _react2.useEffect)(() => {
|
|
271
271
|
isAnimatingRef.current = isAnimating;
|
|
272
272
|
}, [isAnimating]);
|
|
273
|
-
(0,
|
|
273
|
+
(0, _react2.useEffect)(() => {
|
|
274
274
|
if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {
|
|
275
275
|
handleOpen();
|
|
276
276
|
}
|
|
@@ -279,7 +279,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
279
279
|
/**
|
|
280
280
|
* This function sets the items on focus if shouldShowContentOnEmptyInput
|
|
281
281
|
*/
|
|
282
|
-
const handleFocus = (0,
|
|
282
|
+
const handleFocus = (0, _react2.useCallback)(() => {
|
|
283
283
|
hasFocusRef.current = true;
|
|
284
284
|
if (shouldShowContentOnEmptyInput) {
|
|
285
285
|
const newMatchingItems = [];
|
|
@@ -322,7 +322,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
322
322
|
* This function filters the lists by input
|
|
323
323
|
*/
|
|
324
324
|
|
|
325
|
-
(0,
|
|
325
|
+
(0, _react2.useEffect)(() => {
|
|
326
326
|
const newMatchingItems = [];
|
|
327
327
|
activeList.forEach(({
|
|
328
328
|
list,
|
|
@@ -359,32 +359,32 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
359
359
|
});
|
|
360
360
|
}
|
|
361
361
|
}, [inputToListValue, activeList, shouldAddInputToList, shouldShowContentOnEmptyInput, value]);
|
|
362
|
-
const handleClick = (0,
|
|
362
|
+
const handleClick = (0, _react2.useCallback)(() => {
|
|
363
363
|
if (isAnimating) {
|
|
364
364
|
handleClose();
|
|
365
365
|
} else {
|
|
366
366
|
handleOpen();
|
|
367
367
|
}
|
|
368
368
|
}, [handleClose, handleOpen, isAnimating]);
|
|
369
|
-
const rightElement = (0,
|
|
369
|
+
const rightElement = (0, _react2.useMemo)(() => {
|
|
370
370
|
if (!shouldShowToggleIcon) {
|
|
371
371
|
return undefined;
|
|
372
372
|
}
|
|
373
|
-
return /*#__PURE__*/
|
|
373
|
+
return /*#__PURE__*/_react2.default.createElement(_SearchBox.StyledSearchBoxIcon, {
|
|
374
374
|
onClick: handleClick
|
|
375
|
-
}, /*#__PURE__*/
|
|
375
|
+
}, /*#__PURE__*/_react2.default.createElement(_Icon.default, {
|
|
376
376
|
icons: ['fa fa-chevron-down'],
|
|
377
377
|
color: theme['006']
|
|
378
378
|
}));
|
|
379
379
|
}, [handleClick, shouldShowToggleIcon, theme]);
|
|
380
|
-
const leftElement = (0,
|
|
380
|
+
const leftElement = (0, _react2.useMemo)(() => /*#__PURE__*/_react2.default.createElement(_SearchBox.StyledSearchBoxLeftWrapper, null, leftIcons && /*#__PURE__*/_react2.default.createElement(_Icon.default, {
|
|
381
381
|
icons: leftIcons
|
|
382
382
|
}), selectedImage && selectedImage), [leftIcons, selectedImage]);
|
|
383
383
|
|
|
384
384
|
/**
|
|
385
385
|
* This function handles changes of the input
|
|
386
386
|
*/
|
|
387
|
-
const handleChange = (0,
|
|
387
|
+
const handleChange = (0, _react2.useCallback)(event => {
|
|
388
388
|
const filteredLists = [];
|
|
389
389
|
activeList.forEach(({
|
|
390
390
|
list,
|
|
@@ -426,7 +426,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
426
426
|
/**
|
|
427
427
|
* This function handles the blur event of the input
|
|
428
428
|
*/
|
|
429
|
-
const handleBlur = (0,
|
|
429
|
+
const handleBlur = (0, _react2.useCallback)(event => {
|
|
430
430
|
hasFocusRef.current = false;
|
|
431
431
|
if (typeof onBlur === 'function') {
|
|
432
432
|
onBlur(event);
|
|
@@ -436,14 +436,14 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
436
436
|
/**
|
|
437
437
|
* This function handles the item selection
|
|
438
438
|
*/
|
|
439
|
-
const handleSelect = (0,
|
|
439
|
+
const handleSelect = (0, _react2.useCallback)(item => {
|
|
440
440
|
const newItem = {
|
|
441
441
|
...item,
|
|
442
442
|
text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', '')
|
|
443
443
|
};
|
|
444
444
|
setValue(newItem.text);
|
|
445
445
|
handleClose();
|
|
446
|
-
setSelectedImage(newItem.imageUrl ? /*#__PURE__*/
|
|
446
|
+
setSelectedImage(newItem.imageUrl ? /*#__PURE__*/_react2.default.createElement(_SearchBoxItem2.StyledSearchBoxItemImage, {
|
|
447
447
|
src: newItem.imageUrl,
|
|
448
448
|
$shouldShowRoundImage: shouldShowRoundImage
|
|
449
449
|
}) : undefined);
|
|
@@ -452,7 +452,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
452
452
|
onSelect(newItem);
|
|
453
453
|
}
|
|
454
454
|
}, [handleClose, onSelect, shouldShowRoundImage]);
|
|
455
|
-
const content = (0,
|
|
455
|
+
const content = (0, _react2.useMemo)(() => {
|
|
456
456
|
const items = [];
|
|
457
457
|
matchingListsItems.forEach(({
|
|
458
458
|
groupName,
|
|
@@ -463,7 +463,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
463
463
|
return;
|
|
464
464
|
}
|
|
465
465
|
if (index !== 0) {
|
|
466
|
-
items.push(/*#__PURE__*/
|
|
466
|
+
items.push(/*#__PURE__*/_react2.default.createElement(_GroupName.default, {
|
|
467
467
|
key: groupName,
|
|
468
468
|
name: groupName ?? ''
|
|
469
469
|
}));
|
|
@@ -474,7 +474,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
474
474
|
text,
|
|
475
475
|
imageUrl
|
|
476
476
|
}) => {
|
|
477
|
-
items.push(/*#__PURE__*/
|
|
477
|
+
items.push(/*#__PURE__*/_react2.default.createElement(_SearchBoxItem.default, {
|
|
478
478
|
key: `${id}_${groupName ?? ''}`,
|
|
479
479
|
id: id,
|
|
480
480
|
text: text,
|
|
@@ -486,7 +486,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
486
486
|
});
|
|
487
487
|
});
|
|
488
488
|
if (shouldAddInputToList && inputToListValue !== '') {
|
|
489
|
-
items.push(/*#__PURE__*/
|
|
489
|
+
items.push(/*#__PURE__*/_react2.default.createElement(_SearchBoxItem.default, {
|
|
490
490
|
id: "input-value",
|
|
491
491
|
onSelect: handleSelect,
|
|
492
492
|
text: `<b>${inputToListValue}</b`
|
|
@@ -494,7 +494,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
494
494
|
}
|
|
495
495
|
return items;
|
|
496
496
|
}, [matchingListsItems, shouldAddInputToList, inputToListValue, hasMultipleGroups, shouldShowRoundImage, handleSelect]);
|
|
497
|
-
(0,
|
|
497
|
+
(0, _react2.useEffect)(() => {
|
|
498
498
|
const handleKeyDown = e => {
|
|
499
499
|
if (!isAnimating || matchingListsItems.length === 0) {
|
|
500
500
|
return;
|
|
@@ -557,27 +557,27 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
557
557
|
document.removeEventListener('keydown', handleKeyDown);
|
|
558
558
|
};
|
|
559
559
|
}, [filteredChildrenArray, focusedIndex, handleSelect, isAnimating, matchingListsItems.length]);
|
|
560
|
-
const handleKeyPress = (0,
|
|
560
|
+
const handleKeyPress = (0, _react2.useCallback)(event => {
|
|
561
561
|
if (event.keyCode === 27) {
|
|
562
562
|
setMatchingListsItems([]);
|
|
563
563
|
}
|
|
564
564
|
}, []);
|
|
565
|
-
(0,
|
|
565
|
+
(0, _react2.useImperativeHandle)(ref, () => ({
|
|
566
566
|
clear: () => setValue('')
|
|
567
567
|
}), []);
|
|
568
|
-
(0,
|
|
568
|
+
(0, _react2.useEffect)(() => {
|
|
569
569
|
document.addEventListener('keydown', handleKeyPress);
|
|
570
570
|
return () => {
|
|
571
571
|
document.addEventListener('keydown', handleKeyPress);
|
|
572
572
|
};
|
|
573
573
|
}, [handleKeyPress]);
|
|
574
|
-
(0,
|
|
574
|
+
(0, _react2.useEffect)(() => {
|
|
575
575
|
if (!newContainer) {
|
|
576
576
|
return;
|
|
577
577
|
}
|
|
578
|
-
setPortal(() => /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/
|
|
578
|
+
setPortal(() => /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/_react2.default.createElement(_react.AnimatePresence, {
|
|
579
579
|
initial: false
|
|
580
|
-
}, isAnimating && matchingListsItems.length !== 0 && (value.trim() !== '' || shouldShowContentOnEmptyInput) && /*#__PURE__*/
|
|
580
|
+
}, isAnimating && matchingListsItems.length !== 0 && (value.trim() !== '' || shouldShowContentOnEmptyInput) && /*#__PURE__*/_react2.default.createElement(_SearchBoxBody.default, {
|
|
581
581
|
filterButtons: filterButtons,
|
|
582
582
|
selectedGroups: groups,
|
|
583
583
|
width: width,
|
|
@@ -589,11 +589,11 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
589
589
|
shouldHideFilterButtons: shouldHideFilterButtons
|
|
590
590
|
}, content)), newContainer));
|
|
591
591
|
}, [browser === null || browser === void 0 ? void 0 : browser.name, newContainer, content, filterButtons, groups, height, internalCoordinates, isAnimating, width, shouldHideFilterButtons, matchingListsItems.length, value, shouldShowContentOnEmptyInput]);
|
|
592
|
-
return (0,
|
|
592
|
+
return (0, _react2.useMemo)(() => /*#__PURE__*/_react2.default.createElement(_SearchBox.StyledSearchBox, {
|
|
593
593
|
ref: boxRef
|
|
594
|
-
}, /*#__PURE__*/
|
|
594
|
+
}, /*#__PURE__*/_react2.default.createElement("div", {
|
|
595
595
|
id: "search_box_input"
|
|
596
|
-
}, /*#__PURE__*/
|
|
596
|
+
}, /*#__PURE__*/_react2.default.createElement(_Input.default, {
|
|
597
597
|
ref: inputRef,
|
|
598
598
|
onChange: handleChange,
|
|
599
599
|
onBlur: handleBlur,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBox.js","names":["_chaynsApi","require","_framerMotion","_react","_interopRequireWildcard","_reactDom","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SearchBox","forwardRef","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","theme","useTheme","browser","getDevice","useEffect","current","el","element","closest","Element","getBoundingClientRect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","useCallback","bodyHeight","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","calculateContentHeight","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","handleFocus","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","filteredLists","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","textContent","attributes","_element$children$2","nodeValue","handleKeyPress","keyCode","useImperativeHandle","clear","createPortal","AnimatePresence","initial","trim","selectedGroups","coordinates","onGroupSelect","StyledSearchBox","onFocus","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'framer-motion';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport { BrowserName } from '../../types/chayns';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState('');\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current) {\n const { x, y, height: bodyHeight } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById('search_box_input');\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, []);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = isAnimating;\n }, [isAnimating]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [activeList, handleOpen, shouldAddInputToList, shouldShowContentOnEmptyInput, value]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput) && (\n <SearchBoxBody\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name as BrowserName}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n value,\n shouldShowContentOnEmptyInput,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef}>\n <div id=\"search_box_input\">\n <Input\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SearchBox.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SearchBox","forwardRef","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","theme","useTheme","browser","getDevice","useEffect","current","el","element","closest","Element","getBoundingClientRect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","useCallback","bodyHeight","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","calculateContentHeight","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","handleFocus","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","filteredLists","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","textContent","attributes","_element$children$2","nodeValue","handleKeyPress","keyCode","useImperativeHandle","clear","createPortal","AnimatePresence","initial","trim","selectedGroups","coordinates","onGroupSelect","StyledSearchBox","onFocus","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport { BrowserName } from '../../types/chayns';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState('');\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current) {\n const { x, y, height: bodyHeight } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById('search_box_input');\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, []);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = isAnimating;\n }, [isAnimating]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [activeList, handleOpen, shouldAddInputToList, shouldShowContentOnEmptyInput, value]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput) && (\n <SearchBoxBody\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name as BrowserName}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n value,\n shouldShowContentOnEmptyInput,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef}>\n <div id=\"search_box_input\">\n <Input\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAC,uBAAA,CAAAH,OAAA;AAiBA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AAIA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AAEA,IAAAQ,KAAA,GAAAC,sBAAA,CAAAT,OAAA;AACA,IAAAU,MAAA,GAAAD,sBAAA,CAAAT,OAAA;AACA,IAAAW,UAAA,GAAAF,sBAAA,CAAAT,OAAA;AACA,IAAAY,cAAA,GAAAH,sBAAA,CAAAT,OAAA;AACA,IAAAa,cAAA,GAAAJ,sBAAA,CAAAT,OAAA;AACA,IAAAc,eAAA,GAAAd,OAAA;AACA,IAAAe,UAAA,GAAAf,OAAA;AAI4B,SAAAS,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAb,wBAAAa,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAiE5B,MAAMW,SAA6B,gBAAG,IAAAC,kBAAU,EAC5C,CACI;EACIC,WAAW;EACXC,SAAS;EACTC,KAAK;EACLC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,uBAAuB,GAAG,KAAK;EAC/BC,oBAAoB;EACpBC,6BAA6B,GAAG,IAAI;EACpCC,oBAAoB,GAAG,IAAI;EAC3BC,oBAAoB,GAAG;AAC3B,CAAC,EACDC,GAAG,KACF;EACD,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAG,IAAAC,gBAAQ,EAAoBf,KAAK,CAAC;EACtF,MAAM,CAACgB,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAF,gBAAQ,EAAe,CAAC;EAClE,MAAM,CAACG,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAJ,gBAAQ,EAAC,EAAE,CAAC;EACtC,MAAM,CAACK,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAN,gBAAQ,EAAC,KAAK,CAAC;EACrD,MAAM,CAACO,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAR,gBAAQ,EAAS,CAAC,CAAC;EAC/C,MAAM,CAACS,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAV,gBAAQ,EAAC,CAAC,CAAC;EACrC,MAAM,CAACW,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAZ,gBAAQ,EAAgB,IAAI,CAAC;EACrE,MAAM,CAACa,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG,IAAAd,gBAAQ,EAAUf,KAAK,CAAC8B,MAAM,GAAG,CAAC,CAAC;EACrF,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAG,IAAAjB,gBAAQ,EAAY,CAAC;EAC/E,MAAM,CAACkB,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG,IAAAnB,gBAAQ,EAAS,EAAE,CAAC;EACpE,MAAM,CAACoB,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAArB,gBAAQ,EAAW,CAAC,KAAK,CAAC,CAAC;EACvD,MAAM,CAACsB,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAvB,gBAAQ,EAAc,CAAC;EACnD,MAAM,CAACwB,mBAAmB,EAAEC,sBAAsB,CAAC,GAAG,IAAAzB,gBAAQ,EAAyB;IACnF0B,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE;EACP,CAAC,CAAC;EACF,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAA7B,gBAAQ,EAAiBT,SAAS,IAAI,IAAI,CAAC;EAEnF,MAAMuC,MAAM,GAAG,IAAAC,cAAM,EAAiB,IAAI,CAAC;EAC3C,MAAMC,UAAU,GAAG,IAAAD,cAAM,EAAiB,IAAI,CAAC;EAC/C,MAAME,QAAQ,GAAG,IAAAF,cAAM,EAA0B,IAAI,CAAC;EAEtD,MAAMG,WAAW,GAAG,IAAAH,cAAM,EAAU,KAAK,CAAC;EAC1C,MAAMI,cAAc,GAAG,IAAAJ,cAAM,EAAU,KAAK,CAAC;EAE7C,MAAMK,KAAK,GAAG,IAAAC,0BAAQ,EAAC,CAAC;EAExB,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,oBAAS,EAAC,CAAC;EAE/B,IAAAC,iBAAS,EAAC,MAAM;IACZ,IAAIV,MAAM,CAACW,OAAO,IAAI,CAAClD,SAAS,EAAE;MAC9B,MAAMmD,EAAE,GAAGZ,MAAM,CAACW,OAAsB;MAExC,MAAME,OAAO,GAAGD,EAAE,CAACE,OAAO,CAAC,eAAe,CAAC,IAAIF,EAAE,CAACE,OAAO,CAAC,MAAM,CAAC;MAEjEf,eAAe,CAACc,OAAO,CAAC;IAC5B;EACJ,CAAC,EAAE,CAACpD,SAAS,CAAC,CAAC;EAEf,IAAAiD,iBAAS,EAAC,MAAM;IACZ,IAAIjD,SAAS,YAAYsD,OAAO,EAAE;MAC9BhB,eAAe,CAACtC,SAAS,CAAC;IAC9B;EACJ,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,IAAAiD,iBAAS,EAAC,MAAM;IACZ,IAAIV,MAAM,CAACW,OAAO,EAAE;MAChB,MAAM;QAAEf,CAAC;QAAEC;MAAE,CAAC,GAAGG,MAAM,CAACW,OAAO,CAACK,qBAAqB,CAAC,CAAC;MAEvDrB,sBAAsB,CAAC;QACnBC,CAAC;QACDC;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,EAAE,CAAC;;EAEN;AACR;AACA;EACQ,IAAAa,iBAAS,EAAC,MAAM;IACZ1B,oBAAoB,CAAC7B,KAAK,CAAC8B,MAAM,GAAG,CAAC,CAAC;EAC1C,CAAC,EAAE,CAAC9B,KAAK,CAAC,CAAC;EAEX,MAAM8D,aAAa,GAAG,IAAAC,eAAO,EAAC,MAAM;IAChC,MAAMC,KAA0B,GAAG,EAAE;IAErC,IAAIhE,KAAK,CAAC8B,MAAM,IAAI,CAAC,EAAE;MACnB,OAAOkC,KAAK;IAChB;IAEAhE,KAAK,CAACiE,OAAO,CAAC,CAAC;MAAEC;IAAU,CAAC,KAAK;MAC7B,IAAIA,SAAS,EAAE;QACXF,KAAK,CAACG,IAAI,CAAC;UACPC,EAAE,EAAEF,SAAS;UACbG,IAAI,EAAEH;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB,CAAC,EAAE,CAAChE,KAAK,CAAC,CAAC;;EAEX;AACR;AACA;EACQ,MAAMsE,UAAU,GAAG,IAAAP,eAAO,EAAC,MAAM;IAC7B,IAAIQ,QAA2B,GAAG,EAAE;IAEpC,IAAIpC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;MACrBoC,QAAQ,GAAGvE,KAAK;IACpB,CAAC,MAAM;MACHA,KAAK,CAACiE,OAAO,CAAEO,IAAI,IAAK;QACpB,IAAIA,IAAI,CAACN,SAAS,IAAI/B,MAAM,CAACsC,QAAQ,CAACD,IAAI,CAACN,SAAS,CAAC,EAAE;UACnDK,QAAQ,CAACJ,IAAI,CAACK,IAAI,CAAC;QACvB;MACJ,CAAC,CAAC;IACN;IAEA,MAAME,gBAAmC,GAAG,EAAE;IAE9CH,QAAQ,CAACN,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACtC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;QAAEZ,KAAK,EAAEQ,IAAI;QAAEK,YAAY,EAAE3D;MAAM,CAAC,CAAC;MAEhE,IAAIyD,OAAO,CAAC7C,MAAM,GAAG,CAAC,EAAE;QACpB4C,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAAC5C,MAAM,KAAK,CAAC,IAAIpB,oBAAoB,EAAE;MACvDgE,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEY,SAAS;QACpBN,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,MAAMO,yBAAyB,GAAGL,gBAAgB,CAACM,GAAG,CAAC,CAAC;MAAER,IAAI;MAAEN;IAAU,CAAC,MAAM;MAC7EA,SAAS;MACTM,IAAI,EAAEA,IAAI,CAACS,MAAM,CACZC,IAAI,IAAK,EAAER,gBAAgB,CAAC5C,MAAM,KAAK,CAAC,IAAIoD,IAAI,CAACb,IAAI,KAAKnD,KAAK,CACpE;IACJ,CAAC,CAAC,CAAC;IAEHJ,qBAAqB,CAACiE,yBAAyB,CAAC;IAEhD,OAAOR,QAAQ;EACnB,CAAC,EAAE,CAACpC,MAAM,EAAEnC,KAAK,EAAEU,oBAAoB,EAAEQ,KAAK,CAAC,CAAC;EAEhD,MAAMiE,UAAU,GAAG,IAAAC,mBAAW,EAAC,MAAM;IACjC,IAAIvC,MAAM,CAACW,OAAO,EAAE;MAChB,MAAM;QAAEf,CAAC;QAAEC,CAAC;QAAEpB,MAAM,EAAE+D;MAAW,CAAC,GAAGxC,MAAM,CAACW,OAAO,CAACK,qBAAqB,CAAC,CAAC;MAE3ErB,sBAAsB,CAAC;QACnBC,CAAC;QACDC,CAAC,EAAEA,CAAC,GAAG2C;MACX,CAAC,CAAC;MAEFhE,cAAc,CAAC,IAAI,CAAC;IACxB;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMiE,WAAW,GAAG,IAAAF,mBAAW,EAAC,MAAM;IAClC/D,cAAc,CAAC,KAAK,CAAC;EACzB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMkE,8BAA8B,GAAIC,IAAc,IAAK;IACvDpD,SAAS,CAACoD,IAAI,CAAC1D,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG0D,IAAI,CAAC;EACjD,CAAC;;EAED;AACR;AACA;EACQ,MAAMC,kBAAkB,GAAG,IAAAL,mBAAW,EACjCM,KAAiB,IAAK;IACnB,IACI7C,MAAM,CAACW,OAAO,IACd,CAACX,MAAM,CAACW,OAAO,CAACmC,QAAQ,CAACD,KAAK,CAACE,MAAc,CAAC,IAC9C7C,UAAU,CAACS,OAAO,IAClB,CAACT,UAAU,CAACS,OAAO,CAACmC,QAAQ,CAACD,KAAK,CAACE,MAAc,CAAC,EACpD;MACEN,WAAW,CAAC,CAAC;IACjB;EACJ,CAAC,EACD,CAACA,WAAW,CAChB,CAAC;;EAED;AACR;AACA;EACQ,IAAA/B,iBAAS,EAAC,MAAM;IACZsC,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAEL,kBAAkB,CAAC;IACtDM,MAAM,CAACD,gBAAgB,CAAC,MAAM,EAAE,MAAMR,WAAW,CAAC,CAAC,CAAC;IAEpD,OAAO,MAAM;MACTO,QAAQ,CAACG,mBAAmB,CAAC,OAAO,EAAEP,kBAAkB,CAAC;MACzDM,MAAM,CAACD,gBAAgB,CAAC,MAAM,EAAE,MAAMR,WAAW,CAAC,CAAC,CAAC;IACxD,CAAC;EACL,CAAC,EAAE,CAACG,kBAAkB,EAAE5C,MAAM,EAAEyC,WAAW,CAAC,CAAC;;EAE7C;AACR;AACA;EACQ,IAAA/B,iBAAS,EAAC,MAAM;IACZ,MAAM0C,SAAmB,GAAG,EAAE;IAE9B3B,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxCM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEI;MAAK,CAAC,KAAK4B,SAAS,CAAC9B,IAAI,CAACE,IAAI,CAAC,CAAC;MAChD,IAAI,CAACH,SAAS,EAAE;QACZ;MACJ;MACA+B,SAAS,CAAC9B,IAAI,CAACD,SAAS,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAIxD,oBAAoB,IAAIuB,gBAAgB,KAAK,EAAE,EAAE;MACjDgE,SAAS,CAAC9B,IAAI,CAAClC,gBAAgB,CAAC;IACpC;IAEAV,SAAS,CAAC,IAAA2E,iCAAsB,EAACD,SAAS,CAAC,CAAC;EAChD,CAAC,EAAE,CAAChE,gBAAgB,EAAEqC,UAAU,EAAExE,WAAW,EAAEY,oBAAoB,CAAC,CAAC;;EAErE;AACR;AACA;EACQ,IAAA6C,iBAAS,EAAC,MAAM;IACZ,MAAM4C,KAAK,GAAGN,QAAQ,CAACO,cAAc,CAAC,kBAAkB,CAAC;IAEzD,MAAMC,aAAa,GAAGA,CAAA,KAAM;MACxB,IAAIF,KAAK,EAAE;QACP1E,QAAQ,CAAC0E,KAAK,CAACG,WAAW,CAAC;MAC/B;IACJ,CAAC;IAED,IAAIH,KAAK,EAAE;MACP,IAAII,cAAc,CAACF,aAAa,CAAC,CAACG,OAAO,CAACL,KAAK,CAAC;IACpD;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,IAAA5C,iBAAS,EAAC,MAAM;IACZ,IAAIlD,UAAU,EAAE;MACZiE,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QAC7B,MAAMiC,YAAY,GAAGjC,IAAI,CAACkC,IAAI,CAAC,CAAC;UAAEtC;QAAG,CAAC,KAAKA,EAAE,KAAK/D,UAAU,CAAC;QAC7D,IAAIoG,YAAY,EAAE;UACdtF,QAAQ,CAACsF,YAAY,CAACpC,IAAI,CAAC;UAE3B,IAAIoC,YAAY,CAACE,QAAQ,EAAE;YACvB1F,gBAAgB,cACZvD,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACtI,eAAA,CAAAuI,wBAAwB;cACrBC,GAAG,EAAEL,YAAY,CAACE,QAAS;cAC3BI,qBAAqB,EAAEvG;YAAqB,CAC/C,CACL,CAAC;UACL;QACJ;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CAAC8D,UAAU,EAAEjE,UAAU,EAAEG,oBAAoB,CAAC,CAAC;;EAElD;AACR;AACA;AACA;EACQ,IAAA+C,iBAAS,EAAC,MAAM;IACZ,IAAI,CAAClD,UAAU,EAAE;MACbc,QAAQ,CAAC,EAAE,CAAC;IAChB;EACJ,CAAC,EAAE,CAACd,UAAU,CAAC,CAAC;EAEhB,IAAAkD,iBAAS,EAAC,MAAM;IACZL,cAAc,CAACM,OAAO,GAAGpC,WAAW;EACxC,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,IAAAmC,iBAAS,EAAC,MAAM;IACZ,IAAI1C,kBAAkB,CAACiB,MAAM,KAAK,CAAC,IAAI,CAACoB,cAAc,CAACM,OAAO,IAAIP,WAAW,CAACO,OAAO,EAAE;MACnF2B,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACA,UAAU,EAAEtE,kBAAkB,CAACiB,MAAM,CAAC,CAAC;;EAE3C;AACR;AACA;EACQ,MAAMkF,WAAW,GAAG,IAAA5B,mBAAW,EAAC,MAAM;IAClCnC,WAAW,CAACO,OAAO,GAAG,IAAI;IAE1B,IAAI/C,6BAA6B,EAAE;MAC/B,MAAMiE,gBAAmC,GAAG,EAAE;MAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO,IAAI;QAAEN;MAAU,CAAC,KAAK;QACxC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;UAAEZ,KAAK,EAAEQ,IAAI;UAAEK,YAAY,EAAE3D;QAAM,CAAC,CAAC;QAEhE,IAAIyD,OAAO,CAAC7C,MAAM,GAAG,CAAC,EAAE;UACpB4C,gBAAgB,CAACP,IAAI,CAAC;YAClBD,SAAS;YACTM,IAAI,EAAEG;UACV,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;MAEF,IAAID,gBAAgB,CAAC5C,MAAM,KAAK,CAAC,IAAIpB,oBAAoB,EAAE;QACvDgE,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS,EAAEY,SAAS;UACpBN,IAAI,EAAE;QACV,CAAC,CAAC;MACN;MAEA,MAAMO,yBAAyB,GAAGL,gBAAgB,CAACM,GAAG,CAAC,CAAC;QAAER,IAAI;QAAEN;MAAU,CAAC,MAAM;QAC7EA,SAAS;QACTM,IAAI,EAAEA,IAAI,CAACS,MAAM,CACZC,IAAI,IAAK,EAAER,gBAAgB,CAAC5C,MAAM,KAAK,CAAC,IAAIoD,IAAI,CAACb,IAAI,KAAKnD,KAAK,CACpE;MACJ,CAAC,CAAC,CAAC;MAEHJ,qBAAqB,CAACiE,yBAAyB,CAAC;MAEhD,IAAIA,yBAAyB,CAACjD,MAAM,KAAK,CAAC,EAAE;QACxCqD,UAAU,CAAC,CAAC;MAChB;IACJ;EACJ,CAAC,EAAE,CAACb,UAAU,EAAEa,UAAU,EAAEzE,oBAAoB,EAAED,6BAA6B,EAAES,KAAK,CAAC,CAAC;;EAExF;AACR;AACA;;EAEQ,IAAAqC,iBAAS,EAAC,MAAM;IACZ,MAAMmB,gBAAmC,GAAG,EAAE;IAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;QAAEZ,KAAK,EAAEQ,IAAI;QAAEK,YAAY,EAAE3D;MAAM,CAAC,CAAC;MAEhE,IAAIyD,OAAO,CAAC7C,MAAM,GAAG,CAAC,EAAE;QACpB4C,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAAC5C,MAAM,KAAK,CAAC,IAAIpB,oBAAoB,EAAE;MACvDgE,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEY,SAAS;QACpBN,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,IAAI9D,oBAAoB,IAAIuB,gBAAgB,KAAK,EAAE,EAAE;MACjDyC,gBAAgB,CAACT,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QACnCA,IAAI,CAACP,OAAO,CAAC,CAAC;UAAEI;QAAK,CAAC,KAAK;UACvB,IAAIA,IAAI,CAAC4C,WAAW,CAAC,CAAC,KAAKhF,gBAAgB,CAACgF,WAAW,CAAC,CAAC,EAAE;YACvD/E,mBAAmB,CAAC,EAAE,CAAC;UAC3B;QACJ,CAAC,CAAC;MACN,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CACCD,gBAAgB,EAChBqC,UAAU,EACV5D,oBAAoB,EACpBD,6BAA6B,EAC7BS,KAAK,CACR,CAAC;EAEF,MAAMgG,WAAW,GAAG,IAAA9B,mBAAW,EAAC,MAAM;IAClC,IAAIhE,WAAW,EAAE;MACbkE,WAAW,CAAC,CAAC;IACjB,CAAC,MAAM;MACHH,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACG,WAAW,EAAEH,UAAU,EAAE/D,WAAW,CAAC,CAAC;EAE1C,MAAM+F,YAAY,GAAG,IAAApD,eAAO,EAAC,MAAM;IAC/B,IAAI,CAACpD,oBAAoB,EAAE;MACvB,OAAOmE,SAAS;IACpB;IAEA,oBACIpH,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACrI,UAAA,CAAA6I,mBAAmB;MAACC,OAAO,EAAEH;IAAY,gBACtCxJ,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAAC5I,KAAA,CAAAU,OAAI;MAAC4I,KAAK,EAAE,CAAC,oBAAoB,CAAE;MAACC,KAAK,EAAEpE,KAAK,CAAC,KAAK;IAAY,CAAE,CACpD,CAAC;EAE9B,CAAC,EAAE,CAAC+D,WAAW,EAAEvG,oBAAoB,EAAEwC,KAAK,CAAC,CAAC;EAE9C,MAAMqE,WAAW,GAAG,IAAAzD,eAAO,EACvB,mBACIrG,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACrI,UAAA,CAAAkJ,0BAA0B,QACtB1H,SAAS,iBAAIrC,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAAC5I,KAAA,CAAAU,OAAI;IAAC4I,KAAK,EAAEvH;EAAU,CAAE,CAAC,EACvCiB,aAAa,IAAIA,aACM,CAC/B,EACD,CAACjB,SAAS,EAAEiB,aAAa,CAC7B,CAAC;;EAED;AACR;AACA;EACQ,MAAM0G,YAAY,GAAG,IAAAtC,mBAAW,EAC3BM,KAAoC,IAAK;IACtC,MAAMiC,aAAgC,GAAG,EAAE;IAE3CrD,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAG,IAAAC,qBAAU,EAAC;QAAEZ,KAAK,EAAEQ,IAAI;QAAEK,YAAY,EAAEa,KAAK,CAACE,MAAM,CAAC1E;MAAM,CAAC,CAAC;MAE7E,IAAIyD,OAAO,CAAC7C,MAAM,GAAG,CAAC,EAAE;QACpB6F,aAAa,CAACxD,IAAI,CAAC;UACfD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAIgD,aAAa,CAAC7F,MAAM,KAAK,CAAC,IAAIpB,oBAAoB,EAAE;MACpDiH,aAAa,CAACxD,IAAI,CAAC;QACfD,SAAS,EAAEY,SAAS;QACpBN,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEAvD,gBAAgB,CAAC6D,SAAS,CAAC;IAE3B,IAAI,CAACrE,6BAA6B,IAAI,CAACiF,KAAK,CAACE,MAAM,CAAC1E,KAAK,EAAE;MACvDJ,qBAAqB,CAAC,EAAE,CAAC;IAC7B,CAAC,MAAM;MACHA,qBAAqB,CAAC6G,aAAa,CAAC;IACxC;IAEA,IAAIA,aAAa,CAAC7F,MAAM,KAAK,CAAC,EAAE;MAC5BqD,UAAU,CAAC,CAAC;IAChB;IAEAhE,QAAQ,CAACuE,KAAK,CAACE,MAAM,CAAC1E,KAAK,CAAC;IAC5BgB,mBAAmB,CAACwD,KAAK,CAACE,MAAM,CAAC1E,KAAK,CAAC;IAEvC,IAAI,OAAOjB,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACyF,KAAK,CAAC;IACnB;EACJ,CAAC,EACD,CAACpB,UAAU,EAAEa,UAAU,EAAElF,QAAQ,EAAES,oBAAoB,EAAED,6BAA6B,CAC1F,CAAC;;EAED;AACR;AACA;EACQ,MAAMmH,UAAU,GAAG,IAAAxC,mBAAW,EACzBM,KAAmC,IAAK;IACrCzC,WAAW,CAACO,OAAO,GAAG,KAAK;IAE3B,IAAI,OAAOtD,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAACwF,KAAK,CAAC;IACjB;EACJ,CAAC,EACD,CAACxF,MAAM,CACX,CAAC;;EAED;AACR;AACA;EACQ,MAAM2H,YAAY,GAAG,IAAAzC,mBAAW,EAC3BF,IAAoB,IAAK;IACtB,MAAM4C,OAAO,GAAG;MACZ,GAAG5C,IAAI;MACPb,IAAI,EAAEa,IAAI,CAACb,IAAI,CAAC0D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE;IAC5E,CAAC;IAED5G,QAAQ,CAAC2G,OAAO,CAACzD,IAAI,CAAC;IACtBiB,WAAW,CAAC,CAAC;IAEbrE,gBAAgB,CACZ6G,OAAO,CAACnB,QAAQ,gBACZjJ,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACtI,eAAA,CAAAuI,wBAAwB;MACrBC,GAAG,EAAEgB,OAAO,CAACnB,QAAS;MACtBI,qBAAqB,EAAEvG;IAAqB,CAC/C,CAAC,GACFsE,SACR,CAAC;IAEDhE,qBAAqB,CAAC,EAAE,CAAC;IAEzB,IAAI,OAAOX,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAAC2H,OAAO,CAAC;IACrB;EACJ,CAAC,EACD,CAACxC,WAAW,EAAEnF,QAAQ,EAAEK,oBAAoB,CAChD,CAAC;EAED,MAAMwH,OAAO,GAAG,IAAAjE,eAAO,EAAC,MAAM;IAC1B,MAAMC,KAAqB,GAAG,EAAE;IAEhCnD,kBAAkB,CAACoD,OAAO,CAAC,CAAC;MAAEC,SAAS;MAAEM;IAAK,CAAC,EAAEyD,KAAK,KAAK;MACvD,IAAIrG,iBAAiB,EAAE;QACnB,IAAI4C,IAAI,CAAC1C,MAAM,IAAI,CAAC,EAAE;UAClB;QACJ;QAEA,IAAImG,KAAK,KAAK,CAAC,EAAE;UACbjE,KAAK,CAACG,IAAI,cAACzG,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACzI,UAAA,CAAAO,OAAS;YAACwJ,GAAG,EAAEhE,SAAU;YAACiE,IAAI,EAAEjE,SAAS,IAAI;UAAG,CAAE,CAAC,CAAC;QACpE;MACJ;MAEAM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEG,EAAE;QAAEC,IAAI;QAAEsC;MAAS,CAAC,KAAK;QACrC3C,KAAK,CAACG,IAAI,cACNzG,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACvI,cAAA,CAAAK,OAAa;UACVwJ,GAAG,EAAE,GAAG9D,EAAE,IAAIF,SAAS,IAAI,EAAE,EAAG;UAChCE,EAAE,EAAEA,EAAG;UACPC,IAAI,EAAEA,IAAK;UACXsC,QAAQ,EAAEA,QAAS;UACnBnG,oBAAoB,EAAEA,oBAAqB;UAC3CL,QAAQ,EAAE0H,YAAa;UACvB3D,SAAS,EAAEA;QAAU,CACxB,CACL,CAAC;MACL,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAIxD,oBAAoB,IAAIuB,gBAAgB,KAAK,EAAE,EAAE;MACjD+B,KAAK,CAACG,IAAI,cACNzG,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACvI,cAAA,CAAAK,OAAa;QACV0F,EAAE,EAAC,aAAa;QAChBjE,QAAQ,EAAE0H,YAAa;QACvBxD,IAAI,EAAE,MAAMpC,gBAAgB;MAAM,CACrC,CACL,CAAC;IACL;IAEA,OAAO+B,KAAK;EAChB,CAAC,EAAE,CACCnD,kBAAkB,EAClBH,oBAAoB,EACpBuB,gBAAgB,EAChBL,iBAAiB,EACjBpB,oBAAoB,EACpBqH,YAAY,CACf,CAAC;EAEF,IAAAtE,iBAAS,EAAC,MAAM;IACZ,MAAM6E,aAAa,GAAI5J,CAAgB,IAAK;MACxC,IAAI,CAAC4C,WAAW,IAAIP,kBAAkB,CAACiB,MAAM,KAAK,CAAC,EAAE;QACjD;MACJ;MAEA,IAAItD,CAAC,CAAC0J,GAAG,KAAK,SAAS,IAAI1J,CAAC,CAAC0J,GAAG,KAAK,WAAW,EAAE;QAAA,IAAAG,mBAAA,EAAAC,mBAAA;QAC9C9J,CAAC,CAAC+J,cAAc,CAAC,CAAC;QAClB,MAAMC,QAAQ,IAAAH,mBAAA,GAAGtF,UAAU,CAACS,OAAO,cAAA6E,mBAAA,uBAAlBA,mBAAA,CAAoBG,QAAQ;QAE7C,IAAI,CAACA,QAAQ,EAAE;UACX;QACJ;QAEA,MAAMC,aAAa,GAAGC,KAAK,CAACC,IAAI,CAACH,QAAQ,CAAC;QAE1C,MAAMI,WAAW,IAAAN,mBAAA,GAAGG,aAAa,CAAC/B,IAAI,CAAEmC,KAAK,IACzCA,KAAK,CAACzE,EAAE,CAAC0E,UAAU,CAAC,qBAAqB,CAC7C,CAAC,cAAAR,mBAAA,uBAFmBA,mBAAA,CAEjBE,QAAQ;QAEX,IAAII,WAAW,IAAIA,WAAW,CAAC9G,MAAM,GAAG,CAAC,EAAE;UACvC,MAAMiH,gBAAgB,GAAGL,KAAK,CAACC,IAAI,CAACC,WAAW,CAAC,CAAC3D,MAAM,CAClD4D,KAAK,IAAMA,KAAK,CAAiBG,OAAO,CAACC,WAAW,KAAK,MAC9D,CAAC;UACDjH,wBAAwB,CAAC+G,gBAAgB,CAAC;UAE1C,MAAMG,QAAQ,GACVxH,YAAY,KAAK,IAAI,GACf,CAACA,YAAY,IACRlD,CAAC,CAAC0J,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAC9Ba,gBAAgB,CAACjH,MAAM,IAC3BiH,gBAAgB,CAACjH,MAAM,GACvB,CAAC;UAEX,IAAIJ,YAAY,KAAK,IAAI,EAAE;YACvB,MAAMyH,WAAW,GAAGJ,gBAAgB,CAACrH,YAAY,CAAmB;YACpEyH,WAAW,CAACC,QAAQ,GAAG,CAAC,CAAC;UAC7B;UAEAzH,eAAe,CAACuH,QAAQ,CAAC;UAEzB,MAAMG,UAAU,GAAGN,gBAAgB,CAACG,QAAQ,CAAmB;UAC/DG,UAAU,CAACD,QAAQ,GAAG,CAAC;UACvBC,UAAU,CAACC,KAAK,CAAC,CAAC;QACtB;MACJ,CAAC,MAAM,IAAI9K,CAAC,CAAC0J,GAAG,KAAK,OAAO,IAAIxG,YAAY,KAAK,IAAI,EAAE;QACnD,IAAIK,qBAAqB,EAAE;UAAA,IAAAwH,kBAAA;UACvB,MAAM7F,OAAO,GAAG3B,qBAAqB,CAACL,YAAY,CAAC;UAEnD,IAAI,CAACgC,OAAO,EAAE;YACV;UACJ;UAEA,MAAM;YAAEU,EAAE;YAAEoF;UAAY,CAAC,GAAG9F,OAAO;UAEnC,IAAIiD,QAA4B;;UAEhC;UACA;UACA;UACA,KAAA4C,kBAAA,GAAI7F,OAAO,CAAC8E,QAAQ,CAAC,CAAC,CAAC,cAAAe,kBAAA,eAAnBA,kBAAA,CAAqBE,UAAU,CAAC3C,GAAG,EAAE;YAAA,IAAA4C,mBAAA;YACrC;YACA;YACA;YACA/C,QAAQ,IAAA+C,mBAAA,GAAGhG,OAAO,CAAC8E,QAAQ,CAAC,CAAC,CAAC,cAAAkB,mBAAA,uBAAnBA,mBAAA,CAAqBD,UAAU,CAAC3C,GAAG,CAAC6C,SAAmB;UACtE;UAEA9B,YAAY,CAAC;YACTzD,EAAE,EAAEA,EAAE,CAAC2D,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACvC1D,IAAI,EAAEmF,WAAW,IAAI,EAAE;YACvB7C;UACJ,CAAC,CAAC;QACN;MACJ;IACJ,CAAC;IAEDd,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEsC,aAAa,CAAC;IAEnD,OAAO,MAAM;MACTvC,QAAQ,CAACG,mBAAmB,CAAC,SAAS,EAAEoC,aAAa,CAAC;IAC1D,CAAC;EACL,CAAC,EAAE,CACCrG,qBAAqB,EACrBL,YAAY,EACZmG,YAAY,EACZzG,WAAW,EACXP,kBAAkB,CAACiB,MAAM,CAC5B,CAAC;EAEF,MAAM8H,cAAc,GAAG,IAAAxE,mBAAW,EAAEM,KAAoB,IAAK;IACzD,IAAIA,KAAK,CAACmE,OAAO,KAAK,EAAE,EAAE;MACtB/I,qBAAqB,CAAC,EAAE,CAAC;IAC7B;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAgJ,2BAAmB,EACflJ,GAAG,EACH,OAAO;IACHmJ,KAAK,EAAEA,CAAA,KAAM5I,QAAQ,CAAC,EAAE;EAC5B,CAAC,CAAC,EACF,EACJ,CAAC;EAED,IAAAoC,iBAAS,EAAC,MAAM;IACZsC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE8D,cAAc,CAAC;IAEpD,OAAO,MAAM;MACT/D,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE8D,cAAc,CAAC;IACxD,CAAC;EACL,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,IAAArG,iBAAS,EAAC,MAAM;IACZ,IAAI,CAACZ,YAAY,EAAE;MACf;IACJ;IAEAL,SAAS,CAAC,mBACN,IAAA0H,sBAAY,eACRtM,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACnJ,MAAA,CAAAwM,eAAe;MAACC,OAAO,EAAE;IAAM,GAC3B9I,WAAW,IACRP,kBAAkB,CAACiB,MAAM,KAAK,CAAC,KAC9BZ,KAAK,CAACiJ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI1J,6BAA6B,CAAC,iBAClD/C,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACxI,cAAA,CAAAM,OAAa;MACVoF,aAAa,EAAEA,aAAc;MAC7BsG,cAAc,EAAEjI,MAAO;MACvBX,KAAK,EAAEA,KAAM;MACb6I,WAAW,EAAE9H,mBAAoB;MACjCc,OAAO,EAAEA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE8E,IAAoB;MACtC7G,MAAM,EAAEA,MAAO;MACfV,GAAG,EAAEmC,UAAW;MAChBuH,aAAa,EAAE/E,8BAA+B;MAC9ChF,uBAAuB,EAAEA;IAAwB,GAEhDyH,OACU,CAEV,CAAC,EAClBrF,YACJ,CACJ,CAAC;EACL,CAAC,EAAE,CACCU,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE8E,IAAI,EACbxF,YAAY,EACZqF,OAAO,EACPlE,aAAa,EACb3B,MAAM,EACNb,MAAM,EACNiB,mBAAmB,EACnBnB,WAAW,EACXI,KAAK,EACLjB,uBAAuB,EACvBM,kBAAkB,CAACiB,MAAM,EACzBZ,KAAK,EACLT,6BAA6B,CAChC,CAAC;EAEF,OAAO,IAAAsD,eAAO,EACV,mBACIrG,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAACrI,UAAA,CAAAgM,eAAe;IAAC3J,GAAG,EAAEiC;EAAO,gBACzBnF,OAAA,CAAAgB,OAAA,CAAAkI,aAAA;IAAKxC,EAAE,EAAC;EAAkB,gBACtB1G,OAAA,CAAAgB,OAAA,CAAAkI,aAAA,CAAC1I,MAAA,CAAAQ,OAAK;IACFkC,GAAG,EAAEoC,QAAS;IACd/C,QAAQ,EAAEyH,YAAa;IACvBxH,MAAM,EAAE0H,UAAW;IACnB4C,OAAO,EAAExD,WAAY;IACrBlH,WAAW,EAAEA,WAAY;IACzBM,SAAS,EAAEA,SAAU;IACrBoH,WAAW,EAAEA,WAAY;IACzBL,YAAY,EAAEA,YAAa;IAC3BjG,KAAK,EAAEA;EAAM,CAChB,CACA,CAAC,EACLmB,MACY,CACpB,EACD,CACIuF,UAAU,EACVF,YAAY,EACZV,WAAW,EACXQ,WAAW,EACXpH,SAAS,EACTN,WAAW,EACXuC,MAAM,EACN8E,YAAY,EACZjG,KAAK,CAEb,CAAC;AACL,CACJ,CAAC;AAEDtB,SAAS,CAAC6K,WAAW,GAAG,WAAW;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAjM,OAAA,GAErBkB,SAAS","ignoreList":[]}
|