stargazer-ui 1.5.13 → 1.5.14
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/Bar/Bar.type.d.ts +6 -0
- package/Bar/index.js +2 -0
- package/Bar/index.js.map +1 -0
- package/Bar/package.json +1 -0
- package/Button/Button.js +15 -0
- package/Button/Button.js.map +1 -0
- package/{types/components/Button → Button}/Button.types.d.ts +1 -2
- package/Button/index.d.ts +3 -0
- package/Button/index.js +7 -0
- package/Button/index.js.map +1 -0
- package/Button/package.json +1 -0
- package/ButtonGroup/ButtonGroup.d.ts +4 -0
- package/ButtonGroup/ButtonGroup.js +11 -0
- package/ButtonGroup/ButtonGroup.js.map +1 -0
- package/ButtonGroup/ButtonGroup.types.d.ts +7 -0
- package/ButtonGroup/index.d.ts +3 -0
- package/ButtonGroup/index.js +7 -0
- package/ButtonGroup/index.js.map +1 -0
- package/ButtonGroup/package.json +1 -0
- package/{types/components/Card → Card}/Card.d.ts +12 -12
- package/Card/Card.js +42 -0
- package/Card/Card.js.map +1 -0
- package/{types/components/Card → Card}/Card.types.d.ts +3 -1
- package/Card/index.d.ts +3 -0
- package/Card/index.js +7 -0
- package/Card/index.js.map +1 -0
- package/Card/package.json +1 -0
- package/CloseButton/CloseButton.js +11 -0
- package/CloseButton/CloseButton.js.map +1 -0
- package/{types/components/CloseButton → CloseButton}/CloseButton.types.d.ts +1 -1
- package/CloseButton/index.d.ts +3 -0
- package/CloseButton/index.js +7 -0
- package/CloseButton/index.js.map +1 -0
- package/CloseButton/package.json +1 -0
- package/Dropdown/Dropdown.d.ts +135 -0
- package/Dropdown/Dropdown.js +377 -0
- package/Dropdown/Dropdown.js.map +1 -0
- package/{types/components/Dropdown → Dropdown}/Dropdown.types.d.ts +12 -11
- package/Dropdown/DropdownOld.d.ts +135 -0
- package/Dropdown/index.d.ts +4 -0
- package/Dropdown/index.js +8 -0
- package/Dropdown/index.js.map +1 -0
- package/Dropdown/package.json +1 -0
- package/FileUploadButton/FileUploadButton.d.ts +4 -0
- package/FileUploadButton/FileUploadButton.js +20 -0
- package/FileUploadButton/FileUploadButton.js.map +1 -0
- package/FileUploadButton/FileUploadButton.types.d.ts +7 -0
- package/FileUploadButton/index.d.ts +3 -0
- package/FileUploadButton/index.js +7 -0
- package/FileUploadButton/index.js.map +1 -0
- package/FileUploadButton/package.json +1 -0
- package/FloatingLabel/FloatingLabel.js +15 -0
- package/FloatingLabel/FloatingLabel.js.map +1 -0
- package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.types.d.ts +1 -1
- package/FloatingLabel/index.d.ts +3 -0
- package/FloatingLabel/index.js +7 -0
- package/FloatingLabel/index.js.map +1 -0
- package/FloatingLabel/package.json +1 -0
- package/Form/Form.d.ts +38 -0
- package/Form/Form.js +227 -0
- package/Form/Form.js.map +1 -0
- package/Form/Form.types.d.ts +159 -0
- package/Form/FormSelect.d.ts +14 -0
- package/Form/FormSelect.js +436 -0
- package/Form/FormSelect.js.map +1 -0
- package/Form/index.d.ts +4 -0
- package/Form/index.js +8 -0
- package/Form/index.js.map +1 -0
- package/Form/package.json +1 -0
- package/InputGroup/InputGroup.d.ts +7 -0
- package/InputGroup/InputGroup.js +31 -0
- package/InputGroup/InputGroup.js.map +1 -0
- package/InputGroup/InputGroup.types.d.ts +17 -0
- package/InputGroup/index.d.ts +4 -0
- package/InputGroup/index.js +7 -0
- package/InputGroup/index.js.map +1 -0
- package/InputGroup/package.json +1 -0
- package/List/List.d.ts +14 -0
- package/List/List.js +77 -0
- package/List/List.js.map +1 -0
- package/List/List.types.d.ts +28 -0
- package/List/index.d.ts +3 -0
- package/List/index.js +7 -0
- package/List/index.js.map +1 -0
- package/List/package.json +1 -0
- package/{types/components/Modal → Modal}/Modal.d.ts +19 -19
- package/Modal/Modal.js +157 -0
- package/Modal/Modal.js.map +1 -0
- package/{types/components/Modal → Modal}/Modal.types.d.ts +3 -2
- package/Modal/index.d.ts +3 -0
- package/Modal/index.js +7 -0
- package/Modal/index.js.map +1 -0
- package/Modal/package.json +1 -0
- package/{types/components/Nav → Nav}/Nav.d.ts +12 -12
- package/Nav/Nav.js +29 -0
- package/Nav/Nav.js.map +1 -0
- package/{types/components/Nav → Nav}/Nav.types.d.ts +1 -1
- package/Nav/index.d.ts +4 -0
- package/Nav/index.js +7 -0
- package/Nav/index.js.map +1 -0
- package/Nav/package.json +1 -0
- package/{types/components/NavBar → NavBar}/Navbar.d.ts +7 -8
- package/NavBar/Navbar.js +36 -0
- package/NavBar/Navbar.js.map +1 -0
- package/{types/components/NavBar → NavBar}/Navbar.types.d.ts +2 -1
- package/NavBar/index.d.ts +4 -0
- package/NavBar/index.js +8 -0
- package/NavBar/index.js.map +1 -0
- package/NavBar/package.json +1 -0
- package/NavDropdown/NavDropdown.d.ts +99 -0
- package/NavDropdown/NavDropdown.js +75 -0
- package/NavDropdown/NavDropdown.js.map +1 -0
- package/NavDropdown/index.d.ts +3 -0
- package/NavDropdown/index.js +7 -0
- package/NavDropdown/index.js.map +1 -0
- package/NavDropdown/package.json +1 -0
- package/Overlay/Overlay.d.ts +4 -0
- package/Overlay/Overlay.js +242 -0
- package/Overlay/Overlay.js.map +1 -0
- package/Overlay/Overlay.types.d.ts +22 -0
- package/{src/Overlay/index.ts → Overlay/index.d.ts} +3 -3
- package/Overlay/index.js +7 -0
- package/Overlay/index.js.map +1 -0
- package/Overlay/package.json +1 -0
- package/{types/components/Popout → Popout}/Popout.d.ts +6 -6
- package/Popout/Popout.js +111 -0
- package/Popout/Popout.js.map +1 -0
- package/{types/components/Popout → Popout}/Popout.types.d.ts +1 -1
- package/Popout/index.d.ts +3 -0
- package/Popout/index.js +7 -0
- package/Popout/index.js.map +1 -0
- package/Popout/package.json +1 -0
- package/Spinner/Spinner.js +11 -0
- package/Spinner/Spinner.js.map +1 -0
- package/Spinner/index.d.ts +3 -0
- package/Spinner/index.js +7 -0
- package/Spinner/index.js.map +1 -0
- package/Spinner/package.json +1 -0
- package/Table/Table.js +12 -0
- package/Table/Table.js.map +1 -0
- package/{types/components/Table → Table}/Table.types.d.ts +1 -1
- package/Table/index.d.ts +3 -0
- package/Table/index.js +7 -0
- package/Table/index.js.map +1 -0
- package/Table/package.json +1 -0
- package/Tabs/Tabs.js +162 -0
- package/Tabs/Tabs.js.map +1 -0
- package/{types/components/Tabs → Tabs}/Tabs.types.d.ts +12 -2
- package/Tabs/index.d.ts +3 -0
- package/Tabs/index.js +7 -0
- package/Tabs/index.js.map +1 -0
- package/Tabs/package.json +1 -0
- package/ToggleButton/ToggleButton.d.ts +4 -0
- package/ToggleButton/ToggleButton.js +18 -0
- package/ToggleButton/ToggleButton.js.map +1 -0
- package/ToggleButton/ToggleButton.types.d.ts +7 -0
- package/ToggleButton/index.d.ts +3 -0
- package/ToggleButton/index.js +7 -0
- package/ToggleButton/index.js.map +1 -0
- package/ToggleButton/package.json +1 -0
- package/{src/hooks/index.ts → hooks/index.d.ts} +6 -7
- package/hooks/index.js +7 -0
- package/hooks/index.js.map +1 -0
- package/hooks/package.json +1 -0
- package/hooks/useClassname.d.ts +2 -0
- package/hooks/useClassname.js +7 -0
- package/hooks/useClassname.js.map +1 -0
- package/hooks/useDraggable.d.ts +23 -0
- package/hooks/useDraggable.js +147 -0
- package/hooks/useDraggable.js.map +1 -0
- package/hooks/useKeepElementFocused.d.ts +2 -0
- package/hooks/useKeepElementFocused.js +37 -0
- package/hooks/useKeepElementFocused.js.map +1 -0
- package/hooks/useQueryParams.d.ts +2 -0
- package/hooks/useQueryParams.js +13 -0
- package/hooks/useQueryParams.js.map +1 -0
- package/hooks/useScreenSize.d.ts +5 -0
- package/hooks/useScreenSize.js +21 -0
- package/hooks/useScreenSize.js.map +1 -0
- package/index.d.ts +18 -0
- package/index.js +19 -0
- package/index.js.map +1 -0
- package/package.json +1 -79
- package/styles/stargazerui.css +6552 -0
- package/styles/stargazerui.css.map +1 -0
- package/{src/utils/BaseTypes.ts → utils/BaseTypes.d.ts} +25 -32
- package/utils/ContrastingColor.d.ts +1 -0
- package/utils/CreateSyntheticEvent.d.ts +2 -0
- package/utils/CreateSyntheticEvent.js +33 -0
- package/utils/CreateSyntheticEvent.js.map +1 -0
- package/utils/IsInputKey.d.ts +7 -0
- package/utils/IsInputKey.js +20 -0
- package/utils/IsInputKey.js.map +1 -0
- package/utils/MergeClassnames.d.ts +2 -0
- package/utils/MergeClassnames.js +7 -0
- package/utils/MergeClassnames.js.map +1 -0
- package/utils/MergeRefs.d.ts +1 -0
- package/utils/MergeRefs.js +16 -0
- package/utils/MergeRefs.js.map +1 -0
- package/.babelrc.json +0 -10
- package/.eslintrc.cjs +0 -18
- package/.gitattributes +0 -2
- package/LICENSE +0 -21
- package/dev/index.html +0 -12
- package/dev/index.jsx +0 -46
- package/dev/index.scss +0 -74
- package/dev/pages/ButtonPage.jsx +0 -44
- package/dev/pages/CardPage.jsx +0 -81
- package/dev/pages/DropdownPage.jsx +0 -32
- package/dev/pages/FormPage.jsx +0 -155
- package/dev/pages/ListPage.jsx +0 -52
- package/dev/pages/ModalPage.jsx +0 -38
- package/dev/pages/OverlayPage.jsx +0 -39
- package/dev/pages/components.jsx +0 -19
- package/dev/stargazerui.css +0 -3762
- package/dev/stargazerui.css.map +0 -1
- package/dev/test.jsx +0 -87
- package/rollup.config.js +0 -140
- package/scripts/writePackageJsons.js +0 -42
- package/src/Bar/Bar.tsx +0 -0
- package/src/Bar/Bar.type.ts +0 -9
- package/src/Bar/index.ts +0 -0
- package/src/Button/Button.tsx +0 -20
- package/src/Button/Button.types.ts +0 -8
- package/src/Button/index.ts +0 -3
- package/src/ButtonGroup/ButtonGroup.tsx +0 -14
- package/src/ButtonGroup/ButtonGroup.types.ts +0 -8
- package/src/ButtonGroup/index.ts +0 -3
- package/src/Card/Card.tsx +0 -70
- package/src/Card/Card.types.ts +0 -33
- package/src/Card/index.ts +0 -3
- package/src/CloseButton/CloseButton.tsx +0 -14
- package/src/CloseButton/CloseButton.types.ts +0 -6
- package/src/CloseButton/index.ts +0 -3
- package/src/Dropdown/Dropdown.tsx +0 -440
- package/src/Dropdown/Dropdown.types.ts +0 -60
- package/src/Dropdown/DropdownOld.tsx +0 -409
- package/src/Dropdown/index.ts +0 -4
- package/src/FileUploadButton/FileUploadButton.tsx +0 -27
- package/src/FileUploadButton/FileUploadButton.types.ts +0 -9
- package/src/FileUploadButton/index.ts +0 -3
- package/src/FloatingLabel/FloatingLabel.tsx +0 -22
- package/src/FloatingLabel/FloatingLabel.types.ts +0 -11
- package/src/FloatingLabel/index.ts +0 -3
- package/src/Form/Form.tsx +0 -398
- package/src/Form/Form.types.ts +0 -169
- package/src/Form/FormSelect.tsx +0 -527
- package/src/Form/index.ts +0 -4
- package/src/InputGroup/InputGroup.tsx +0 -46
- package/src/InputGroup/InputGroup.types.ts +0 -22
- package/src/InputGroup/index.ts +0 -4
- package/src/List/List.tsx +0 -112
- package/src/List/List.types.ts +0 -34
- package/src/List/index.ts +0 -4
- package/src/Modal/Modal.tsx +0 -229
- package/src/Modal/Modal.types.ts +0 -49
- package/src/Modal/index.ts +0 -4
- package/src/Nav/Nav.tsx +0 -43
- package/src/Nav/Nav.types.ts +0 -21
- package/src/Nav/index.ts +0 -4
- package/src/NavBar/Navbar.tsx +0 -57
- package/src/NavBar/Navbar.types.ts +0 -24
- package/src/NavBar/index.ts +0 -4
- package/src/NavDropdown/NavDropdown.tsx +0 -93
- package/src/NavDropdown/NavDropdown.types.ts +0 -6
- package/src/NavDropdown/index.ts +0 -3
- package/src/Overlay/Overlay.tsx +0 -309
- package/src/Overlay/Overlay.types.ts +0 -24
- package/src/Popout/Popout.tsx +0 -155
- package/src/Popout/Popout.types.ts +0 -42
- package/src/Popout/index.ts +0 -3
- package/src/Spinner/Spinner.tsx +0 -15
- package/src/Spinner/Spinner.types.ts +0 -7
- package/src/Spinner/index.ts +0 -3
- package/src/Table/Table.tsx +0 -16
- package/src/Table/Table.types.ts +0 -9
- package/src/Table/index.ts +0 -3
- package/src/Tabs/Tabs.tsx +0 -233
- package/src/Tabs/Tabs.types.ts +0 -52
- package/src/Tabs/index.ts +0 -3
- package/src/ToggleButton/ToggleButton.tsx +0 -21
- package/src/ToggleButton/ToggleButton.types.ts +0 -8
- package/src/ToggleButton/index.ts +0 -3
- package/src/assets/tooltip-pointer.svg +0 -3
- package/src/assets/warning.svg +0 -39
- package/src/hooks/useClassname.ts +0 -5
- package/src/hooks/useDraggable.ts +0 -186
- package/src/hooks/useKeepElementFocused.ts +0 -37
- package/src/hooks/useQueryParams.ts +0 -12
- package/src/hooks/useScreenSize.ts +0 -24
- package/src/index.ts +0 -21
- package/src/styles/_Card.scss +0 -166
- package/src/styles/_CloseButton.scss +0 -51
- package/src/styles/_CustomButton.scss +0 -134
- package/src/styles/_Dropdown.scss +0 -127
- package/src/styles/_FloatingLabel.scss +0 -56
- package/src/styles/_Forms.scss +0 -7
- package/src/styles/_Grid.scss +0 -178
- package/src/styles/_InputGroup.scss +0 -71
- package/src/styles/_List.scss +0 -62
- package/src/styles/_Modal.scss +0 -234
- package/src/styles/_ModalOld.scss +0 -242
- package/src/styles/_Nav.scss +0 -36
- package/src/styles/_NavBar.scss +0 -116
- package/src/styles/_NavDropdown.scss +0 -33
- package/src/styles/_OffCanvas.scss +0 -260
- package/src/styles/_OverLay.scss +0 -64
- package/src/styles/_Popout.scss +0 -75
- package/src/styles/_Spinner.scss +0 -19
- package/src/styles/_Table.scss +0 -34
- package/src/styles/_Tabs.scss +0 -129
- package/src/styles/_colors.scss +0 -510
- package/src/styles/_components.scss +0 -40
- package/src/styles/_functions.scss +0 -134
- package/src/styles/_mixins.scss +0 -26
- package/src/styles/_reset.scss +0 -237
- package/src/styles/_utilities.scss +0 -2480
- package/src/styles/_variables.scss +0 -164
- package/src/styles/forms/_FormCheck.scss +0 -270
- package/src/styles/forms/_FormControl.scss +0 -135
- package/src/styles/forms/_FormGroup.scss +0 -26
- package/src/styles/forms/_FormLabel.scss +0 -3
- package/src/styles/forms/_FormSelect.scss +0 -196
- package/src/styles/forms/_FormSlider.scss +0 -116
- package/src/styles/forms/_FormText.scss +0 -6
- package/src/utils/ContrastingColor.ts +0 -25
- package/src/utils/CreateSyntheticEvent.ts +0 -30
- package/src/utils/FileImportExport.js +0 -50
- package/src/utils/IsInputKey.ts +0 -18
- package/src/utils/MergeClassnames.ts +0 -5
- package/src/utils/MergeRefs.ts +0 -12
- package/src/vite-env.d.ts +0 -1
- package/tsconfig-build.json +0 -4
- package/tsconfig.json +0 -79
- package/tsconfig.node.json +0 -10
- package/types/BaseTypes.d.ts +0 -19
- package/types/components/Button/index.d.ts +0 -1
- package/types/components/Card/index.d.ts +0 -1
- package/types/components/CloseButton/index.d.ts +0 -1
- package/types/components/Dropdown/Dropdown.d.ts +0 -71
- package/types/components/Dropdown/index.d.ts +0 -1
- package/types/components/FloatingLabel/index.d.ts +0 -1
- package/types/components/Form/Form.d.ts +0 -17
- package/types/components/Form/Form.types.d.ts +0 -50
- package/types/components/Form/index.d.ts +0 -1
- package/types/components/InputGroup/InputGroup.d.ts +0 -6
- package/types/components/InputGroup/InputGroup.types.d.ts +0 -10
- package/types/components/InputGroup/index.d.ts +0 -1
- package/types/components/Modal/index.d.ts +0 -1
- package/types/components/Nav/index.d.ts +0 -1
- package/types/components/NavBar/index.d.ts +0 -1
- package/types/components/NavDropdown/NavDropdown.d.ts +0 -35
- package/types/components/NavDropdown/index.d.ts +0 -1
- package/types/components/Popout/index.d.ts +0 -1
- package/types/components/Spinner/index.d.ts +0 -1
- package/types/components/Table/index.d.ts +0 -1
- package/types/components/Tabs/index.d.ts +0 -1
- package/types/components/ToggleButton/ToggleButton.d.ts +0 -9
- package/types/components/ToggleButton/ToggleButton.types.d.ts +0 -0
- package/types/components/ToggleButton/index.d.ts +0 -1
- package/types/components/index.d.ts +0 -16
- package/types/index.d.ts +0 -1
- package/vite.config.js +0 -57
- package/vite.config.js.timestamp-1708777378490-e94428ceb2bf9.mjs +0 -42
- /package/{types/components/Button → Button}/Button.d.ts +0 -0
- /package/{types/components/CloseButton → CloseButton}/CloseButton.d.ts +0 -0
- /package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.d.ts +0 -0
- /package/{types/components/NavDropdown → NavDropdown}/NavDropdown.types.d.ts +0 -0
- /package/{types/components/Spinner → Spinner}/Spinner.d.ts +0 -0
- /package/{types/components/Spinner → Spinner}/Spinner.types.d.ts +0 -0
- /package/{types/components/Table → Table}/Table.d.ts +0 -0
- /package/{types/components/Tabs → Tabs}/Tabs.d.ts +0 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { createContext, forwardRef, useState, useCallback, useMemo, useRef, useEffect, useLayoutEffect, useContext } from 'react';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
5
|
+
import mergeRefs from '../utils/MergeRefs.js';
|
|
6
|
+
|
|
7
|
+
//automatic menu placement function
|
|
8
|
+
const getDropdownMenuPlacement = (controlId, drop = "down", align = "start") => {
|
|
9
|
+
const dropPossible = ["down", "up", "right", "left"];
|
|
10
|
+
const alignPossible = ["start", "end", "center"];
|
|
11
|
+
const placement = (dropPossible.find(item => item === drop) ? drop : "down") + "-" + (alignPossible.find(item => item === align) ? align : "start");
|
|
12
|
+
const button = document.getElementById(controlId);
|
|
13
|
+
const { width: buttonWidth, height: buttonHeight, x: buttonLeft, y: buttonTop } = button.getBoundingClientRect();
|
|
14
|
+
//console.log(buttonLeft)
|
|
15
|
+
const menu = document.getElementById(controlId + "-menu");
|
|
16
|
+
const { width: menuWidth, height: menuHeight } = menu.getBoundingClientRect();
|
|
17
|
+
const navbars = Array.from(document.querySelectorAll(".sg-navbar"));
|
|
18
|
+
if (navbars) {
|
|
19
|
+
for (const navbar of navbars) {
|
|
20
|
+
if (navbar.contains(button)) {
|
|
21
|
+
menu.style.setProperty("position", "absolute");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const position = {};
|
|
26
|
+
const offset = 2; //"4px"
|
|
27
|
+
switch (drop) {
|
|
28
|
+
case "down":
|
|
29
|
+
//position.top = `calc(100% + ${offset})`
|
|
30
|
+
position.top = buttonTop + buttonHeight + offset;
|
|
31
|
+
break;
|
|
32
|
+
case "up":
|
|
33
|
+
//position.bottom = `calc(100% + ${offset})`
|
|
34
|
+
position.top = buttonTop - menuHeight - offset;
|
|
35
|
+
break;
|
|
36
|
+
case "right":
|
|
37
|
+
//position.left = `calc(100% + ${offset})`
|
|
38
|
+
position.left = buttonLeft + buttonWidth + offset;
|
|
39
|
+
break;
|
|
40
|
+
case "left":
|
|
41
|
+
//position.right = `calc(100% + ${offset})`
|
|
42
|
+
position.left = buttonLeft - menuWidth - offset;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
switch (placement) {
|
|
46
|
+
case "down-start":
|
|
47
|
+
case "up-start":
|
|
48
|
+
//position.left = -2
|
|
49
|
+
position.left = buttonLeft;
|
|
50
|
+
break;
|
|
51
|
+
case "down-center":
|
|
52
|
+
case "up-center":
|
|
53
|
+
position.left = buttonLeft + -1 * (menuWidth - buttonWidth) / 2;
|
|
54
|
+
break;
|
|
55
|
+
case "down-end":
|
|
56
|
+
case "up-end":
|
|
57
|
+
position.left = buttonLeft + -1 * (menuWidth - buttonWidth);
|
|
58
|
+
break;
|
|
59
|
+
case "right-start":
|
|
60
|
+
case "left-start":
|
|
61
|
+
position.top = buttonTop;
|
|
62
|
+
break;
|
|
63
|
+
case "right-center":
|
|
64
|
+
case "left-center":
|
|
65
|
+
position.top = buttonTop + -1 * (menuHeight - buttonHeight) / 2;
|
|
66
|
+
break;
|
|
67
|
+
case "right-end":
|
|
68
|
+
case "left-end":
|
|
69
|
+
position.top = buttonTop + -1 * (menuHeight - buttonHeight);
|
|
70
|
+
}
|
|
71
|
+
return position;
|
|
72
|
+
};
|
|
73
|
+
// is click event on the menu
|
|
74
|
+
const isEventOnMenu = (event, controlId = "") => {
|
|
75
|
+
const element = event.target;
|
|
76
|
+
const eventIsOnMenu = document.getElementById(controlId + "-menu").contains(element);
|
|
77
|
+
return eventIsOnMenu;
|
|
78
|
+
};
|
|
79
|
+
const DropdownContext = createContext(null);
|
|
80
|
+
const DropdownContextProvider = ({ children, value }) => {
|
|
81
|
+
return (jsx(DropdownContext.Provider, { value: value, children: children }));
|
|
82
|
+
};
|
|
83
|
+
const useDropdownContext = () => {
|
|
84
|
+
const context = useContext(DropdownContext);
|
|
85
|
+
if (!context) {
|
|
86
|
+
throw new Error("useDropdownContext has to be used within DropdownContextProvider!");
|
|
87
|
+
}
|
|
88
|
+
return context;
|
|
89
|
+
};
|
|
90
|
+
const Dropdown = forwardRef(({ children, className, onSelect, onToggle, controlId, navDropdown = false, drop = "down", align = "start", autoClose = true, show = "default", label, as = "button", variant = "primary", menuRef, menuProps, ...restProps }, ref) => {
|
|
91
|
+
const [showInternal, setShowInternal] = useState(show === "default" ? false : show);
|
|
92
|
+
// this is an object like {index: string} because we need it to rerender even if the case is the same
|
|
93
|
+
// aka we use a "next/previous" case to navigate through the dropdown menu so need to rerender consecutive "next" cases
|
|
94
|
+
const [activeDescendant, setActiveDescendant] = useState({ case: "" });
|
|
95
|
+
const internalOnToggle = useCallback((event) => {
|
|
96
|
+
event.stopPropagation();
|
|
97
|
+
//console.log("toggle")
|
|
98
|
+
setShowInternal(prev => !prev);
|
|
99
|
+
}, []);
|
|
100
|
+
const contextValue = useMemo(() => ({
|
|
101
|
+
align,
|
|
102
|
+
drop,
|
|
103
|
+
showInternal: show != "default" && onToggle ? show : showInternal,
|
|
104
|
+
handleToggle: show != "default" && onToggle ? onToggle : internalOnToggle,
|
|
105
|
+
controlId: controlId,
|
|
106
|
+
activeDescendant,
|
|
107
|
+
setActiveDescendant,
|
|
108
|
+
navDropdown: navDropdown
|
|
109
|
+
}), [align, drop, show, showInternal, onToggle, controlId, activeDescendant, setActiveDescendant, navDropdown]);
|
|
110
|
+
let computedClassName = className ? className + " sg-dropdown" : "sg-dropdown";
|
|
111
|
+
computedClassName += navDropdown ? " sg-nav-item" : "";
|
|
112
|
+
return (jsx(DropdownContextProvider, { value: contextValue, children: jsx(Toggle, { ref: ref, className: computedClassName, label: label, "data-nav": navDropdown ? "true" : null, ...restProps, children: jsx(Menu, { ref: menuRef, ...menuProps, children: children }) }) }));
|
|
113
|
+
});
|
|
114
|
+
Dropdown.displayName = "Dropdown";
|
|
115
|
+
const Toggle = forwardRef(({ children, className, as = "button", variant = "primary", label = "add label", onClick, onBlur, ...restProps }, ref) => {
|
|
116
|
+
const internalRef = useRef(null);
|
|
117
|
+
const { controlId, handleToggle, setActiveDescendant, showInternal, navDropdown, drop } = useDropdownContext();
|
|
118
|
+
const Component = as;
|
|
119
|
+
const handleKeyPress = (event) => {
|
|
120
|
+
let flag = false;
|
|
121
|
+
switch (event.key) {
|
|
122
|
+
case "ArrowDown":
|
|
123
|
+
flag = true;
|
|
124
|
+
if (showInternal) {
|
|
125
|
+
setActiveDescendant(prev => ({ ...prev, case: "next" }));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
handleToggle(event);
|
|
129
|
+
setActiveDescendant(prev => ({ ...prev, case: "first" }));
|
|
130
|
+
}
|
|
131
|
+
break;
|
|
132
|
+
case "ArrowUp":
|
|
133
|
+
flag = true;
|
|
134
|
+
if (showInternal) {
|
|
135
|
+
setActiveDescendant(prev => ({ ...prev, case: "previous" }));
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
handleToggle(event);
|
|
139
|
+
setActiveDescendant(prev => ({ ...prev, case: "last" }));
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
case "Home":
|
|
143
|
+
flag = true;
|
|
144
|
+
if (showInternal) {
|
|
145
|
+
setActiveDescendant(prev => ({ ...prev, case: "first" }));
|
|
146
|
+
}
|
|
147
|
+
break;
|
|
148
|
+
case "End":
|
|
149
|
+
flag = true;
|
|
150
|
+
if (showInternal) {
|
|
151
|
+
setActiveDescendant(prev => ({ ...prev, case: "last" }));
|
|
152
|
+
}
|
|
153
|
+
break;
|
|
154
|
+
case "Tab":
|
|
155
|
+
if (showInternal) {
|
|
156
|
+
handleToggle(event);
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
case "Escape":
|
|
160
|
+
flag = true;
|
|
161
|
+
if (showInternal) {
|
|
162
|
+
handleToggle(event);
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
case "Enter":
|
|
166
|
+
case " ":
|
|
167
|
+
if (showInternal) {
|
|
168
|
+
flag = true;
|
|
169
|
+
const activeElement = document.querySelector(".sg-dropdown-item-visual-focus");
|
|
170
|
+
activeElement.click();
|
|
171
|
+
handleToggle(event);
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
setActiveDescendant(prev => ({ ...prev, case: "first" }));
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (flag) {
|
|
180
|
+
event.stopPropagation();
|
|
181
|
+
event.preventDefault();
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
const handleMouseUp = (event) => {
|
|
185
|
+
if (!showInternal)
|
|
186
|
+
return;
|
|
187
|
+
if (event.target.id === controlId)
|
|
188
|
+
return;
|
|
189
|
+
if (!isEventOnMenu(event, controlId)) {
|
|
190
|
+
handleToggle(event);
|
|
191
|
+
}
|
|
192
|
+
else if (isEventOnMenu(event, controlId)) {
|
|
193
|
+
event.stopPropagation();
|
|
194
|
+
handleToggle(event);
|
|
195
|
+
const toggleElement = document.getElementById(controlId);
|
|
196
|
+
toggleElement?.focus();
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
useEffect(() => {
|
|
200
|
+
const toggleElement = document.getElementById(controlId);
|
|
201
|
+
toggleElement.addEventListener("keydown", handleKeyPress, true);
|
|
202
|
+
document.addEventListener("mouseup", handleMouseUp, true);
|
|
203
|
+
return function cleanup() {
|
|
204
|
+
toggleElement.removeEventListener("keydown", handleKeyPress, true);
|
|
205
|
+
document.removeEventListener("mouseup", handleMouseUp, true);
|
|
206
|
+
};
|
|
207
|
+
}, [handleKeyPress, controlId]);
|
|
208
|
+
const toggleButtonClick = (event) => {
|
|
209
|
+
handleToggle(event);
|
|
210
|
+
if (!showInternal) {
|
|
211
|
+
setActiveDescendant(prev => ({ ...prev, case: "first" }));
|
|
212
|
+
}
|
|
213
|
+
if (onClick)
|
|
214
|
+
onClick(event);
|
|
215
|
+
};
|
|
216
|
+
const handleBlur = (event) => {
|
|
217
|
+
//handleToggle(event)
|
|
218
|
+
if (onBlur)
|
|
219
|
+
onBlur(event);
|
|
220
|
+
};
|
|
221
|
+
let classNamesComputed = `sg-button sg-button${variant ? "-" + variant : "-primary"} sg-dropdown-toggle${className ? " " + className : ""}`;
|
|
222
|
+
if (Component === "a" || navDropdown) {
|
|
223
|
+
classNamesComputed = `sg-nav-dropdown-toggle sg-dropdown-toggle${className ? " " + className : ""}`;
|
|
224
|
+
}
|
|
225
|
+
return (jsxs(Component, { tabIndex: "0", type: "button", "aria-haspopup": "true", "aria-controls": controlId + "-menu", "aria-expanded": showInternal, id: controlId, ref: mergeRefs([ref, internalRef]), className: classNamesComputed, "data-drop": drop, onClick: toggleButtonClick, onBlur: handleBlur, ...restProps, children: [label, children] }));
|
|
226
|
+
});
|
|
227
|
+
Toggle.displayName = "DropdownToggle";
|
|
228
|
+
const isValidListElement = (elementList, startIndex, direction) => {
|
|
229
|
+
let testIndex = startIndex;
|
|
230
|
+
let count = 0;
|
|
231
|
+
let stop = false;
|
|
232
|
+
while (!stop) {
|
|
233
|
+
const test1 = elementList[testIndex].children[0] ? true : false;
|
|
234
|
+
const liItem = elementList[testIndex];
|
|
235
|
+
const test2 = getComputedStyle(liItem).getPropertyValue("display") != "none";
|
|
236
|
+
const test3 = test1 ? getComputedStyle(liItem.children[0]).getPropertyValue("display") != "none" : false;
|
|
237
|
+
if (test1 && test2 && test3) {
|
|
238
|
+
stop = true;
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
if (direction === "forward" && testIndex === elementList.length - 1) {
|
|
242
|
+
testIndex = 0;
|
|
243
|
+
}
|
|
244
|
+
else if (direction === "backward" && testIndex === 0) {
|
|
245
|
+
testIndex = elementList.length - 1;
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
testIndex += direction === "forward" ? 1 : -1;
|
|
249
|
+
}
|
|
250
|
+
count += 1;
|
|
251
|
+
if (count >= 100) {
|
|
252
|
+
stop = true;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return testIndex;
|
|
256
|
+
};
|
|
257
|
+
const Menu = forwardRef(({ children, className, style = {}, ...restProps }, ref) => {
|
|
258
|
+
const { controlId, showInternal, activeDescendant, navDropdown, align, drop } = useDropdownContext();
|
|
259
|
+
const [computedStyle, setComputedStyle] = useState({});
|
|
260
|
+
useLayoutEffect(() => {
|
|
261
|
+
if (showInternal) {
|
|
262
|
+
const basePosition = getDropdownMenuPlacement(controlId, drop, align);
|
|
263
|
+
setComputedStyle(basePosition);
|
|
264
|
+
}
|
|
265
|
+
}, [showInternal, drop, align, controlId]);
|
|
266
|
+
const handleResize = (event) => {
|
|
267
|
+
const basePosition = getDropdownMenuPlacement(controlId, drop, align);
|
|
268
|
+
setComputedStyle(basePosition);
|
|
269
|
+
};
|
|
270
|
+
useEffect(() => {
|
|
271
|
+
if (showInternal) {
|
|
272
|
+
const menu = document.getElementById(controlId + "-menu");
|
|
273
|
+
const menuChildren = document.getElementById(controlId + "-menu").children;
|
|
274
|
+
const menuChildrenLast = menuChildren.length - 1;
|
|
275
|
+
const elementWithVisualFocus = document.querySelector(".sg-dropdown-item-visual-focus");
|
|
276
|
+
let currentIndex = 0, currentChild = menuChildren[0].children[0];
|
|
277
|
+
if (elementWithVisualFocus != null) {
|
|
278
|
+
elementWithVisualFocus.classList.remove("sg-dropdown-item-visual-focus");
|
|
279
|
+
for (let i = 0; i < menuChildren.length; i++) {
|
|
280
|
+
if (menuChildren[i] === elementWithVisualFocus.parentElement) {
|
|
281
|
+
currentIndex = i;
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
switch (activeDescendant.case) {
|
|
287
|
+
case "first":
|
|
288
|
+
currentIndex = isValidListElement(menuChildren, 0, "forward");
|
|
289
|
+
currentChild = menuChildren[currentIndex].children[0];
|
|
290
|
+
break;
|
|
291
|
+
case "last":
|
|
292
|
+
currentIndex = isValidListElement(menuChildren, menuChildrenLast, "backward");
|
|
293
|
+
currentChild = menuChildren[currentIndex].children[0];
|
|
294
|
+
break;
|
|
295
|
+
case "next":
|
|
296
|
+
currentIndex = isValidListElement(menuChildren, currentIndex === menuChildrenLast ? 0 : currentIndex + 1, "forward");
|
|
297
|
+
currentChild = menuChildren[currentIndex].children[0];
|
|
298
|
+
break;
|
|
299
|
+
case "previous":
|
|
300
|
+
currentIndex = isValidListElement(menuChildren, currentIndex === 0 ? menuChildrenLast : currentIndex - 1, "backward");
|
|
301
|
+
currentChild = menuChildren[currentIndex].children[0];
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
menu.setAttribute("aria-activedescendant", currentChild.id);
|
|
305
|
+
menuChildren[currentIndex].children[0].classList.add("sg-dropdown-item-visual-focus");
|
|
306
|
+
//makes it so that the menu stays with the button
|
|
307
|
+
window.addEventListener("resize", event => handleResize(), true);
|
|
308
|
+
window.addEventListener("scroll", event => handleResize(), true);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
const menu = document.getElementById(controlId + "-menu");
|
|
312
|
+
menu.setAttribute("aria-activedescendant", "");
|
|
313
|
+
}
|
|
314
|
+
return function cleanup() {
|
|
315
|
+
window.removeEventListener("resize", handleResize, true);
|
|
316
|
+
window.removeEventListener("scroll", event => handleResize(), true);
|
|
317
|
+
};
|
|
318
|
+
}, [controlId, showInternal, activeDescendant]);
|
|
319
|
+
const handleMouseOver = (event) => {
|
|
320
|
+
const target = event.target;
|
|
321
|
+
const active = target.classList.contains("sg-dropdown-item-visual-focus");
|
|
322
|
+
const menuId = controlId + "-menu";
|
|
323
|
+
const menu = document.getElementById(menuId);
|
|
324
|
+
if (active) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
document.querySelector(".sg-dropdown-item-visual-focus")?.classList.remove("sg-dropdown-item-visual-focus");
|
|
329
|
+
menu.setAttribute("aria-activedescendant", "");
|
|
330
|
+
target.classList.add("sg-dropdown-item-visual-focus");
|
|
331
|
+
menu.setAttribute("aria-activedescendant", target.id);
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
useEffect(() => {
|
|
335
|
+
const menu = document.getElementById(controlId + "-menu");
|
|
336
|
+
for (let i = 0; i < menu.children.length; i++) {
|
|
337
|
+
if (menu.children[i].children[0]) {
|
|
338
|
+
menu.children[i].addEventListener("mouseover", handleMouseOver, true);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return function cleanup() {
|
|
342
|
+
for (let i = 0; i < menu.children.length; i++) {
|
|
343
|
+
if (menu.children[i].children[0]) {
|
|
344
|
+
menu.children[i].addEventListener("mouseover", handleMouseOver, true);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
}, []);
|
|
349
|
+
return (createPortal(jsx("ul", { id: controlId + "-menu", role: "menu", tabIndex: -1, "aria-labelledby": controlId, "data-navdropdown": navDropdown ? "true" : "false", ref: ref, className: `sg-dropdown-list${className ? " " + className : ""}${showInternal ? " show" : ""}`, style: { ...computedStyle, ...style }, ...restProps, children: children }), document.body));
|
|
350
|
+
});
|
|
351
|
+
Menu.displayName = "DropdownMenu";
|
|
352
|
+
const Item = forwardRef(({ children, as = "button", className, liProps, onClick, ...restProps }, ref) => {
|
|
353
|
+
const { navDropdown, activeDescendant } = useDropdownContext();
|
|
354
|
+
const Component = navDropdown ? "a" : as;
|
|
355
|
+
const handleClick = (event) => {
|
|
356
|
+
event.stopPropagation();
|
|
357
|
+
event.preventDefault();
|
|
358
|
+
if (onClick)
|
|
359
|
+
onClick(event);
|
|
360
|
+
};
|
|
361
|
+
return (jsx("li", { role: "none", ...liProps, children: jsx(Component, { ref: ref, role: "menuitem", tabIndex: "-1", onClick: handleClick, className: `sg-dropdown-item${className ? " " + className : ""}`, ...restProps, children: children }) }));
|
|
362
|
+
});
|
|
363
|
+
Item.displayName = "DropdownItem";
|
|
364
|
+
const Divider = forwardRef(({ className = "", ...restProps }, ref) => {
|
|
365
|
+
return (jsx("hr", { ref: ref, className: `.sg-dropdown-divider${className}`, ...restProps }));
|
|
366
|
+
});
|
|
367
|
+
Divider.displayName = "DropdownDivider";
|
|
368
|
+
var Dropdown$1 = Object.assign(Dropdown, {
|
|
369
|
+
Toggle: Toggle,
|
|
370
|
+
Menu: Menu,
|
|
371
|
+
Item: Item,
|
|
372
|
+
//Text: Text,
|
|
373
|
+
Divider: Divider
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
export { Divider, DropdownContext, DropdownContextProvider, Item, Menu, Toggle, Dropdown$1 as default, useDropdownContext };
|
|
377
|
+
//# sourceMappingURL=Dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sources":["../../src/Dropdown/Dropdown.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAKA;AAEA,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAE,IAAa,GAAA,MAAM,EAAE,KAAA,GAAc,OAAO,KAAI;IAC/F,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;IACpD,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;IAChD,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC;IACnJ,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAE;IAClD,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,qBAAqB,EAAE;;IAE/G,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAC,OAAO,CAAE;AACxD,IAAA,MAAM,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAE3E,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACnE,IAAG,OAAO,EAAE;AACR,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,YAAA,IAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACxB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;;;;IAI1D,MAAM,QAAQ,GAAuB,EAAE;AAEvC,IAAA,MAAM,MAAM,GAAG,CAAC,CAAA;IAChB,QAAO,IAAI;AACP,QAAA,KAAK,MAAM;;YAEP,QAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM;YAChD;AACJ,QAAA,KAAK,IAAI;;YAEL,QAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM;YAC9C;AACJ,QAAA,KAAK,OAAO;;YAER,QAAQ,CAAC,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM;YACjD;AACJ,QAAA,KAAK,MAAM;;YAEP,QAAQ,CAAC,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM;YAC/C;;IAER,QAAQ,SAAS;AACb,QAAA,KAAK,YAAY;AACjB,QAAA,KAAK,UAAU;;AAEX,YAAA,QAAQ,CAAC,IAAI,GAAG,UAAU;YAC1B;AACJ,QAAA,KAAK,aAAa;AAClB,QAAA,KAAK,WAAW;AACZ,YAAA,QAAQ,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,IAAI,SAAS,GAAG,WAAW,CAAC,GAAC,CAAC;YAC7D;AACJ,QAAA,KAAK,UAAU;AACf,QAAA,KAAK,QAAQ;AACT,YAAA,QAAQ,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,IAAI,SAAS,GAAG,WAAW,CAAC;YAC3D;AACJ,QAAA,KAAK,aAAa;AAClB,QAAA,KAAK,YAAY;AACb,YAAA,QAAQ,CAAC,GAAG,GAAG,SAAS;YACxB;AACJ,QAAA,KAAK,cAAc;AACnB,QAAA,KAAK,aAAa;AACd,YAAA,QAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,UAAU,GAAG,YAAY,CAAC,GAAC,CAAC;YAC7D;AACJ,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,UAAU;AACX,YAAA,QAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,UAAU,GAAG,YAAY,CAAC;;AAInE,IAAA,OAAO,QAAQ;AACnB,CAAC;AACD;AACA,MAAM,aAAa,GAAG,CAAC,KAAgB,EAAE,SAAmB,GAAA,EAAE,KAAI;AAC9D,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAqB;AAC3C,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAC,OAAO,CAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;AACnF,IAAA,OAAO,aAAa;AACxB,CAAC;MAEY,eAAe,GAAG,aAAa,CAA6B,IAAI;AAChE,MAAA,uBAAuB,GAAG,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAwD,KAAI;AAChH,IAAA,QACIA,GAAA,CAAC,eAAe,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,KAAK,EAAA,QAAA,EACjC,QAAQ,EAAA,CACc;AAEnC;AACO,MAAM,kBAAkB,GAAG,MAAK;AACnC,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC;IAC3C,IAAG,CAAC,OAAO,EAAE;AACT,QAAA,MAAM,IAAI,KAAK,CACX,mEAAmE,CACtE;;AAEL,IAAA,OAAO,OAAO;AAClB;AAGA,MAAM,QAAQ,GAAG,UAAU,CAAsD,CACzE,EACI,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,GAAC,KAAK,EACrE,IAAI,GAAC,MAAM,EAAE,KAAK,GAAC,OAAO,EAAE,SAAS,GAAC,IAAI,EAAE,IAAI,GAAC,SAAS,EAC1D,KAAK,EAAE,EAAE,GAAC,QAAQ,EAAE,OAAO,GAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EACxD,GAAG,SAAS,EAChB,EAAE,GAAG,KAAI;IAEd,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAU,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,IAAe,CAAC;;;AAIvG,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAgB,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC;AAElF,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,KAAiB,KAAI;QACvD,KAAK,CAAC,eAAe,EAAE;;QAEvB,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;KACjC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAI,OAAO,CAAC,OAAO;QACjC,KAAK;QACL,IAAI;AACJ,QAAA,YAAY,EAAE,IAAI,IAAI,SAAS,IAAI,QAAQ,GAAG,IAAe,GAAG,YAAY;AAC5E,QAAA,YAAY,EAAE,IAAI,IAAI,SAAS,IAAI,QAAQ,GAAG,QAAQ,GAAG,gBAAgB;AACzE,QAAA,SAAS,EAAE,SAAS;QACpB,gBAAgB;QAChB,mBAAmB;AACnB,QAAA,WAAW,EAAC;KACf,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAE/G,IAAA,IAAI,iBAAiB,GAAG,SAAS,GAAE,SAAS,GAAC,cAAc,GAAE,aAAa;IAC1E,iBAAiB,IAAI,WAAW,GAAG,cAAc,GAAG,EAAE;IAEtD,QACIA,IAAC,uBAAuB,EAAA,EAAC,KAAK,EAAE,YAAY,EACxC,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAY,UAAA,EAAA,WAAW,GAAG,MAAM,GAAC,IAAI,EAAA,GAAM,SAAS,EAAA,QAAA,EAC5GA,GAAC,CAAA,IAAI,IAAC,GAAG,EAAE,OAAO,EAAA,GAAM,SAAS,EAAA,QAAA,EAC5B,QAAQ,EACN,CAAA,EAAA,CACF,EACa,CAAA;AAElC,CAAC,CAAC;AACF,QAAQ,CAAC,WAAW,GAAG,UAAU;AAG1B,MAAM,MAAM,GAAG,UAAU,CAA6D,CAAC,EACtF,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAC,QAAQ,EAAE,OAAO,GAAC,SAAS,EAAE,KAAK,GAAC,WAAW,EACtE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAAC,EAAE,GAAG,KACnC;AACJ,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AAChC,IAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,kBAAkB,EAAE;IAC9G,MAAM,SAAS,GAAG,EAAE;AACpB,IAAA,MAAM,cAAc,GAAG,CAAC,KAAoB,KAAI;QAC5C,IAAI,IAAI,GAAG,KAAK;AAChB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,WAAW;gBACZ,IAAI,GAAG,IAAI;gBACX,IAAG,YAAY,EAAE;AACb,oBAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC;;qBAEpD;oBACD,YAAY,CAAC,KAAK,CAAC;AACnB,oBAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,OAAO,EAAC,CAAC,CAAC;;gBAE1D;AACJ,YAAA,KAAK,SAAS;gBACV,IAAI,GAAG,IAAI;gBACX,IAAG,YAAY,EAAE;AACb,oBAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,UAAU,EAAC,CAAC,CAAC;;qBACtD;oBACH,YAAY,CAAC,KAAK,CAAC;AACnB,oBAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC;;gBAEzD;AACJ,YAAA,KAAK,MAAM;gBACP,IAAI,GAAG,IAAI;gBACX,IAAG,YAAY,EAAE;AACb,oBAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,OAAO,EAAC,CAAC,CAAC;;gBAE1D;AACJ,YAAA,KAAK,KAAK;gBACN,IAAI,GAAG,IAAI;gBACX,IAAG,YAAY,EAAE;AACb,oBAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC;;gBAEzD;AACJ,YAAA,KAAK,KAAK;gBACN,IAAG,YAAY,EAAE;oBACb,YAAY,CAAC,KAAK,CAAC;;gBAEvB;AACJ,YAAA,KAAK,QAAQ;gBACT,IAAI,GAAG,IAAI;gBACX,IAAG,YAAY,EAAE;oBACb,YAAY,CAAC,KAAK,CAAC;;gBAEvB;AACJ,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACJ,IAAG,YAAY,EAAE;oBACb,IAAI,GAAG,IAAI;oBACX,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,gCAAgC,CAAgB;oBAC7F,aAAa,CAAC,KAAK,EAAE;oBACrB,YAAY,CAAC,KAAK,CAAC;oBACnB;;qBAEC;AACD,oBAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,OAAO,EAAC,CAAC,CAAC;oBACtD;;;QAGZ,IAAG,IAAI,EAAE;YACL,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;;AAE9B,KAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAAiB,KAAI;AACxC,QAAA,IAAG,CAAC,YAAY;YAAE;AAClB,QAAA,IAAI,KAAK,CAAC,MAAsB,CAAC,EAAE,KAAK,SAAS;YAAE;QAEnD,IAAG,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;YACjC,YAAY,CAAC,KAAK,CAAC;;AAElB,aAAA,IAAG,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;YACrC,KAAK,CAAC,eAAe,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC;YACnB,MAAM,aAAa,GAAuB,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;YAC5E,aAAa,EAAE,KAAK,EAAE;;AAE9B,KAAC;IACD,SAAS,CAAC,MAAK;QACX,MAAM,aAAa,GAAgB,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAgB;QACpF,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC;QAC/D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC;AACzD,QAAA,OAAO,SAAS,OAAO,GAAA;YACnB,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC;YAClE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC;AAChE,SAAC;AACL,KAAC,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAE/B,IAAA,MAAM,iBAAiB,GAAG,CAAC,KAA2B,KAAI;QACtD,YAAY,CAAC,KAAK,CAAC;QACnB,IAAG,CAAC,YAAY,EAAE;AACd,YAAA,mBAAmB,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,OAAO,EAAC,CAAC,CAAC;;AAE1D,QAAA,IAAG,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC;AAC9B,KAAC;AACD,IAAA,MAAM,UAAU,GAAG,CAAC,KAA0B,KAAI;;AAE9C,QAAA,IAAG,MAAM;YAAE,MAAM,CAAC,KAAK,CAAC;AAC5B,KAAC;IAED,IAAI,kBAAkB,GAAG,CAAA,mBAAA,EAAsB,OAAO,GAAG,GAAG,GAAC,OAAO,GAAC,UAAU,CAAA,mBAAA,EAAsB,SAAS,GAAG,GAAG,GAAC,SAAS,GAAC,EAAE,CAAA,CAAE;AACnI,IAAA,IAAI,SAAS,KAAK,GAAG,IAAI,WAAW,EAAE;AAClC,QAAA,kBAAkB,GAAG,CAAA,yCAAA,EAA4C,SAAS,GAAG,GAAG,GAAC,SAAS,GAAC,EAAE,EAAE;;IAEnG,QACIC,IAAC,CAAA,SAAS,EAAC,EAAA,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,QAAQ,EAAe,eAAA,EAAA,MAAM,mBAAgB,SAAS,GAAC,OAAO,EAAA,eAAA,EAAiB,YAAY,EAAE,EAAE,EAAE,SAAS,EACnI,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAA,WAAA,EAAa,IAAI,EAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAM,GAAA,SAAS,EAE5D,QAAA,EAAA,CAAA,KAAK,EACL,QAAQ,CACD,EAAA,CAAA;AAEpB,CAAC;AACD,MAAM,CAAC,WAAW,GAAG,gBAAgB;AAErC,MAAM,kBAAkB,GAAG,CAAC,WAA2B,EAAE,UAAkB,EAAE,SAAiC,KAAK;IAC/G,IAAI,SAAS,GAAG,UAAU;IAE1B,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,IAAI,GAAG,KAAK;IAChB,OAAM,CAAC,IAAI,EAAE;AACT,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK;AAE/D,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC;AACrC,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,MAAM;QAC5E,MAAM,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,MAAM,GAAG,KAAK;AACxG,QAAA,IAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;YACxB,IAAI,GAAG,IAAI;YACX;;AAGJ,QAAA,IAAG,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAChE,SAAS,GAAG,CAAC;;aACV,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,CAAC,EAAE;AACpD,YAAA,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;;aAC/B;AACH,YAAA,SAAS,IAAI,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE;;QAGjD,KAAK,IAAI,CAAC;AACV,QAAA,IAAG,KAAK,IAAI,GAAG,EAAE;YACb,IAAI,GAAG,IAAI;;;AAInB,IAAA,OAAO,SAAS;AACpB,CAAC;MAEY,IAAI,GAAG,UAAU,CAAsC,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,SAAS,EAAC,EAAE,GAAG,KAAI;AACzH,IAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,EAAE;IACpG,MAAM,CAAE,aAAa,EAAE,gBAAgB,CAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACxD,eAAe,CAAC,MAAK;QACjB,IAAG,YAAY,EAAE;YACb,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC;YACrE,gBAAgB,CAAC,YAAY,CAAC;;KAErC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1C,IAAA,MAAM,YAAY,GAAG,CAAC,KAAsB,KAAI;QAC5C,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC;QACrE,gBAAgB,CAAC,YAAY,CAAC;AAClC,KAAC;IACD,SAAS,CAAC,MAAK;QACX,IAAG,YAAY,EAAE;YACb,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAC,OAAO,CAAgB;AACtE,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAC,OAAO,CAAE,CAAC,QAAQ;AACzE,YAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;YAChD,MAAM,sBAAsB,GAAG,QAAQ,CAAC,aAAa,CAAC,gCAAgC,CAAC;AACvF,YAAA,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,YAAA,IAAG,sBAAsB,IAAI,IAAI,EAAE;AAC/B,gBAAA,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,+BAA+B,CAAC;AACxE,gBAAA,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrC,IAAG,YAAY,CAAC,CAAC,CAAC,KAAK,sBAAsB,CAAC,aAAa,EAAE;wBACzD,YAAY,GAAG,CAAC;wBAChB;;;;AAIZ,YAAA,QAAQ,gBAAgB,CAAC,IAAI;AACzB,gBAAA,KAAK,OAAO;oBACR,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,CAAC;oBAC7D,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACrD;AACJ,gBAAA,KAAK,MAAM;oBACP,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,CAAC;oBAC7E,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACrD;AACJ,gBAAA,KAAK,MAAM;oBACP,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,YAAY,KAAK,gBAAgB,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,SAAS,CAAC;oBACpH,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACrD;AACJ,gBAAA,KAAK,UAAU;oBACX,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,YAAY,KAAK,CAAC,GAAG,gBAAgB,GAAG,YAAY,GAAG,CAAC,EAAE,UAAU,CAAC;oBACrH,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACrD;;YAER,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,YAAY,CAAC,EAAE,CAAC;AAC3D,YAAA,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC;;AAGrF,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI,YAAY,CAAM,CAAC,EAAE,IAAI,CAAC;AACrE,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI,YAAY,CAAM,CAAC,EAAE,IAAI,CAAC;;aAClE;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAC,OAAO,CAAgB;AACtE,YAAA,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC;;AAElD,QAAA,OAAO,SAAS,OAAO,GAAA;YACnB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AACxD,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,IAAI,YAAY,CAAM,CAAC,EAAE,IAAI,CAAC;AAC5E,SAAC;KACJ,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAE/C,IAAA,MAAM,eAAe,GAAG,CAAC,KAAiB,KAAI;AAC1C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAAC;AACzE,QAAA,MAAM,MAAM,GAAG,SAAS,GAAC,OAAO;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAgB;QAC3D,IAAG,MAAM,EAAE;YACP;;aACG;AACH,YAAA,QAAQ,CAAC,aAAa,CAAC,gCAAgC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,+BAA+B,CAAC;AAC3G,YAAA,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC;AAC9C,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC;YACrD,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,MAAM,CAAC,EAAE,CAAC;;AAE7D,KAAC;IACD,SAAS,CAAC,MAAK;QACX,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,GAAC,OAAO,CAAgB;AACtE,QAAA,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,YAAA,IAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAAG,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAiB,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC;;;AAE7H,QAAA,OAAO,SAAS,OAAO,GAAA;AACnB,YAAA,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAA,IAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAAG,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAiB,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC;;;AAEjI,SAAC;KACJ,EAAE,EAAE,CAAC;AACN,IAAA,QACI,YAAY,CACRD,GAAI,CAAA,IAAA,EAAA,EAAA,EAAE,EAAE,SAAS,GAAC,OAAO,EAAE,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAE,EAAE,EAAA,iBAAA,EAAmB,SAAS,EAAA,kBAAA,EAAoB,WAAW,GAAG,MAAM,GAAC,OAAO,EAC3H,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,mBAAmB,SAAS,GAAG,GAAG,GAAC,SAAS,GAAC,EAAE,CAAA,EAAG,YAAY,GAAG,OAAO,GAAC,EAAE,CAAE,CAAA,EAClG,KAAK,EAAE,EAAC,GAAG,aAAa,EAAE,GAAG,KAAK,EAAC,EAAM,GAAA,SAAS,EAEjD,QAAA,EAAA,QAAQ,GACR,EACP,QAAQ,CAAC,IAAI,CAAC;AAExB,CAAC;AACD,IAAI,CAAC,WAAW,GAAG,cAAc;AAGpB,MAAA,IAAI,GAAG,UAAU,CAA2D,CAAC,EAAC,QAAQ,EAAE,EAAE,GAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,EAAC,EAAE,GAAG,KAAI;IACjK,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,EAAE;IAC9D,MAAM,SAAS,GAAG,WAAW,GAAG,GAAG,GAAG,EAAE;AACxC,IAAA,MAAM,WAAW,GAAG,CAAC,KAAgF,KAAI;QACrG,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAG,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC;AAC9B,KAAC;IACD,QACIA,YAAI,IAAI,EAAC,MAAM,EAAK,GAAA,OAAO,EACvB,QAAA,EAAAA,GAAA,CAAC,SAAS,EAAA,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA,gBAAA,EAAmB,SAAS,GAAG,GAAG,GAAC,SAAS,GAAC,EAAE,CAAA,CAAE,EAAM,GAAA,SAAS,YAC/I,QAAQ,EAAA,CACA,EACZ,CAAA;AAEb,CAAC;AACD,IAAI,CAAC,WAAW,GAAG,cAAc;AAEpB,MAAA,OAAO,GAAG,UAAU,CAAsC,CAAC,EAAC,SAAS,GAAC,EAAE,EAAE,GAAG,SAAS,EAAC,EAAE,GAAG,KAAI;AACzG,IAAA,QACIA,GAAA,CAAA,IAAA,EAAA,EAAI,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA,oBAAA,EAAuB,SAAS,CAAE,CAAA,EAAA,GAAM,SAAS,EAAA,CAAO;AAEzF,CAAC;AACD,OAAO,CAAC,WAAW,GAAG,iBAAiB;AAEvC,iBAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACnC,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE,IAAI;;AAEV,IAAA,OAAO,EAAE;AACZ,CAAA,CAAC;;;;"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { BaseAnchorType, BaseButtonType, BaseUListType, BaseHrType, BaseElementType, BaseLItemType } from "../utils/BaseTypes";
|
|
3
3
|
export type DropdownContextType = {
|
|
4
4
|
align: string;
|
|
5
5
|
drop: string;
|
|
6
6
|
showInternal: boolean;
|
|
7
7
|
handleToggle: Function;
|
|
8
|
-
placement: string;
|
|
9
|
-
directionClasses?: {
|
|
10
|
-
down?: string;
|
|
11
|
-
'down-centered'?: string;
|
|
12
|
-
up?: string;
|
|
13
|
-
'up-centered'?: string;
|
|
14
|
-
end?: string;
|
|
15
|
-
start?: string;
|
|
16
|
-
};
|
|
17
8
|
controlId: string;
|
|
18
9
|
activeDescendant: {
|
|
19
10
|
case: string;
|
|
@@ -21,10 +12,12 @@ export type DropdownContextType = {
|
|
|
21
12
|
setActiveDescendant: React.Dispatch<React.SetStateAction<{
|
|
22
13
|
case: string;
|
|
23
14
|
}>>;
|
|
15
|
+
navDropdown: boolean;
|
|
24
16
|
};
|
|
25
17
|
export type DropdownType = {
|
|
26
18
|
children: ReactNode;
|
|
27
19
|
className?: string;
|
|
20
|
+
navDropdown?: boolean;
|
|
28
21
|
onSelect?: Function;
|
|
29
22
|
onToggle?: Function;
|
|
30
23
|
controlId: string;
|
|
@@ -32,13 +25,20 @@ export type DropdownType = {
|
|
|
32
25
|
align?: string;
|
|
33
26
|
autoClose?: boolean;
|
|
34
27
|
show?: boolean;
|
|
35
|
-
|
|
28
|
+
label: string;
|
|
29
|
+
as?: React.ElementType;
|
|
30
|
+
variant?: string;
|
|
31
|
+
menuRef?: any;
|
|
32
|
+
menuProps: DropdownMenuType;
|
|
33
|
+
} & (BaseAnchorType | BaseButtonType | BaseElementType);
|
|
36
34
|
export type DropdownToggleType = {
|
|
37
35
|
children: ReactNode;
|
|
38
36
|
className?: string;
|
|
37
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
39
38
|
navDropdown?: boolean;
|
|
40
39
|
as?: React.ElementType;
|
|
41
40
|
variant?: string;
|
|
41
|
+
label: string;
|
|
42
42
|
} & (BaseAnchorType | BaseButtonType | BaseElementType);
|
|
43
43
|
export type DropdownMenuType = {
|
|
44
44
|
children: ReactNode;
|
|
@@ -49,6 +49,7 @@ export type DropdownItemType = {
|
|
|
49
49
|
children: ReactNode;
|
|
50
50
|
as?: React.ElementType;
|
|
51
51
|
className?: string;
|
|
52
|
+
liProps: BaseLItemType;
|
|
52
53
|
} & (BaseAnchorType | BaseButtonType);
|
|
53
54
|
export type DropdownDividerType = {
|
|
54
55
|
className?: string;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { DropdownContextType, DropdownDividerType, DropdownMenuType } from "./Dropdown.types";
|
|
3
|
+
export declare const DropdownContext: React.Context<DropdownContextType | null>;
|
|
4
|
+
export declare const DropdownContextProvider: ({ children, value }: {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
value: DropdownContextType;
|
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const useDropdownContext: () => DropdownContextType;
|
|
9
|
+
export declare const Toggle: React.ForwardRefExoticComponent<(Omit<{
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
className?: string;
|
|
12
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
13
|
+
navDropdown?: boolean;
|
|
14
|
+
as?: React.ElementType;
|
|
15
|
+
variant?: string;
|
|
16
|
+
label: string;
|
|
17
|
+
} & React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement>, "ref"> | Omit<{
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
className?: string;
|
|
20
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
21
|
+
navDropdown?: boolean;
|
|
22
|
+
as?: React.ElementType;
|
|
23
|
+
variant?: string;
|
|
24
|
+
label: string;
|
|
25
|
+
} & React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement>, "ref"> | Omit<{
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
className?: string;
|
|
28
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
29
|
+
navDropdown?: boolean;
|
|
30
|
+
as?: React.ElementType;
|
|
31
|
+
variant?: string;
|
|
32
|
+
label: string;
|
|
33
|
+
} & React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement>, "ref">) & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
|
|
34
|
+
export declare const Menu: React.ForwardRefExoticComponent<Omit<DropdownMenuType, "ref"> & React.RefAttributes<HTMLUListElement>>;
|
|
35
|
+
export declare const Item: React.ForwardRefExoticComponent<(Omit<{
|
|
36
|
+
children: React.ReactNode;
|
|
37
|
+
as?: React.ElementType;
|
|
38
|
+
className?: string;
|
|
39
|
+
liProps: import("..").BaseLItemType;
|
|
40
|
+
} & React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement>, "ref"> | Omit<{
|
|
41
|
+
children: React.ReactNode;
|
|
42
|
+
as?: React.ElementType;
|
|
43
|
+
className?: string;
|
|
44
|
+
liProps: import("..").BaseLItemType;
|
|
45
|
+
} & React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement>, "ref">) & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
|
|
46
|
+
export declare const Divider: React.ForwardRefExoticComponent<Omit<DropdownDividerType, "ref"> & React.RefAttributes<HTMLHRElement>>;
|
|
47
|
+
declare const _default: React.ForwardRefExoticComponent<(Omit<{
|
|
48
|
+
children: React.ReactNode;
|
|
49
|
+
className?: string;
|
|
50
|
+
navDropdown?: boolean;
|
|
51
|
+
onSelect?: Function;
|
|
52
|
+
onToggle?: Function;
|
|
53
|
+
controlId: string;
|
|
54
|
+
drop?: string;
|
|
55
|
+
align?: string;
|
|
56
|
+
autoClose?: boolean;
|
|
57
|
+
show?: boolean;
|
|
58
|
+
label: string;
|
|
59
|
+
as?: React.ElementType;
|
|
60
|
+
variant?: string;
|
|
61
|
+
menuRef?: any;
|
|
62
|
+
menuProps: DropdownMenuType;
|
|
63
|
+
} & React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement>, "ref"> | Omit<{
|
|
64
|
+
children: React.ReactNode;
|
|
65
|
+
className?: string;
|
|
66
|
+
navDropdown?: boolean;
|
|
67
|
+
onSelect?: Function;
|
|
68
|
+
onToggle?: Function;
|
|
69
|
+
controlId: string;
|
|
70
|
+
drop?: string;
|
|
71
|
+
align?: string;
|
|
72
|
+
autoClose?: boolean;
|
|
73
|
+
show?: boolean;
|
|
74
|
+
label: string;
|
|
75
|
+
as?: React.ElementType;
|
|
76
|
+
variant?: string;
|
|
77
|
+
menuRef?: any;
|
|
78
|
+
menuProps: DropdownMenuType;
|
|
79
|
+
} & React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement>, "ref"> | Omit<{
|
|
80
|
+
children: React.ReactNode;
|
|
81
|
+
className?: string;
|
|
82
|
+
navDropdown?: boolean;
|
|
83
|
+
onSelect?: Function;
|
|
84
|
+
onToggle?: Function;
|
|
85
|
+
controlId: string;
|
|
86
|
+
drop?: string;
|
|
87
|
+
align?: string;
|
|
88
|
+
autoClose?: boolean;
|
|
89
|
+
show?: boolean;
|
|
90
|
+
label: string;
|
|
91
|
+
as?: React.ElementType;
|
|
92
|
+
variant?: string;
|
|
93
|
+
menuRef?: any;
|
|
94
|
+
menuProps: DropdownMenuType;
|
|
95
|
+
} & React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement>, "ref">) & React.RefAttributes<HTMLDivElement>> & {
|
|
96
|
+
Toggle: React.ForwardRefExoticComponent<(Omit<{
|
|
97
|
+
children: React.ReactNode;
|
|
98
|
+
className?: string;
|
|
99
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
100
|
+
navDropdown?: boolean;
|
|
101
|
+
as?: React.ElementType;
|
|
102
|
+
variant?: string;
|
|
103
|
+
label: string;
|
|
104
|
+
} & React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement>, "ref"> | Omit<{
|
|
105
|
+
children: React.ReactNode;
|
|
106
|
+
className?: string;
|
|
107
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
108
|
+
navDropdown?: boolean;
|
|
109
|
+
as?: React.ElementType;
|
|
110
|
+
variant?: string;
|
|
111
|
+
label: string;
|
|
112
|
+
} & React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement>, "ref"> | Omit<{
|
|
113
|
+
children: React.ReactNode;
|
|
114
|
+
className?: string;
|
|
115
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
116
|
+
navDropdown?: boolean;
|
|
117
|
+
as?: React.ElementType;
|
|
118
|
+
variant?: string;
|
|
119
|
+
label: string;
|
|
120
|
+
} & React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement>, "ref">) & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
|
|
121
|
+
Menu: React.ForwardRefExoticComponent<Omit<DropdownMenuType, "ref"> & React.RefAttributes<HTMLUListElement>>;
|
|
122
|
+
Item: React.ForwardRefExoticComponent<(Omit<{
|
|
123
|
+
children: React.ReactNode;
|
|
124
|
+
as?: React.ElementType;
|
|
125
|
+
className?: string;
|
|
126
|
+
liProps: import("..").BaseLItemType;
|
|
127
|
+
} & React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement>, "ref"> | Omit<{
|
|
128
|
+
children: React.ReactNode;
|
|
129
|
+
as?: React.ElementType;
|
|
130
|
+
className?: string;
|
|
131
|
+
liProps: import("..").BaseLItemType;
|
|
132
|
+
} & React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement>, "ref">) & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
|
|
133
|
+
Divider: React.ForwardRefExoticComponent<Omit<DropdownDividerType, "ref"> & React.RefAttributes<HTMLHRElement>>;
|
|
134
|
+
};
|
|
135
|
+
export default _default;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import Dropdown from "./Dropdown";
|
|
2
|
+
export default Dropdown;
|
|
3
|
+
export { DropdownContext, DropdownContextProvider, useDropdownContext } from "./Dropdown";
|
|
4
|
+
export type { DropdownContextType, DropdownDividerType, DropdownItemType, DropdownMenuType, DropdownToggleType, DropdownType } from "./Dropdown.types";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"stargazer-ui/Dropdown","private":false,"module":"./index.js","types":"./index.d.ts","peerDependencies":{"lodash":"^4.17.21","react":">=17.0.0","react-dom":">=17.0.0"}}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useRef } from 'react';
|
|
4
|
+
import Button from '../Button/Button.js';
|
|
5
|
+
|
|
6
|
+
const FileUploadButton = forwardRef(({ children, onClick, onFileUpload, controlId, id, ...props }, ref) => {
|
|
7
|
+
const inputRef = useRef(null);
|
|
8
|
+
const handleClick = (event) => {
|
|
9
|
+
if (!inputRef.current)
|
|
10
|
+
return;
|
|
11
|
+
inputRef.current.click();
|
|
12
|
+
if (onClick) {
|
|
13
|
+
onClick(event);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
return (jsxs(Fragment, { children: [jsx(Button, { ref: ref, id: controlId ?? id, onClick: handleClick, ...props, children: children }), jsx("input", { "aria-labelledby": controlId ?? id, ref: inputRef, className: "custom-upload", type: "file", onChange: onFileUpload })] }));
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export { FileUploadButton as default };
|
|
20
|
+
//# sourceMappingURL=FileUploadButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadButton.js","sources":["../../src/FileUploadButton/FileUploadButton.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;AAMM,MAAA,gBAAgB,GAAG,UAAU,CAA2C,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,KAAK,EAAC,EAAE,GAAG,KAAI;AAC9I,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC;AAC/C,IAAA,MAAM,WAAW,GAAG,CAAC,KAA0C,KAAI;QAC/D,IAAG,CAAC,QAAQ,CAAC,OAAO;YAAE;AACtB,QAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;QACxB,IAAG,OAAO,EAAE;YACR,OAAO,CAAC,KAAK,CAAC;;AAEtB,KAAC;IAED,QACIA,4BACIC,GAAC,CAAA,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAA,GAAM,KAAK,EAAA,QAAA,EACjE,QAAQ,EAAA,CACJ,EACTA,GAAwB,CAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAS,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAE,YAAY,EAAA,CAAU,CAC/H,EAAA,CAAA;AAEX,CAAC;;;;"}
|