@darajs/ui-components 0.4.8
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/LICENSE +201 -0
- package/dist/accordion/accordion-item.d.ts +24 -0
- package/dist/accordion/accordion-item.d.ts.map +1 -0
- package/dist/accordion/accordion-item.js +92 -0
- package/dist/accordion/accordion-item.js.map +1 -0
- package/dist/accordion/accordion.d.ts +32 -0
- package/dist/accordion/accordion.d.ts.map +1 -0
- package/dist/accordion/accordion.js +87 -0
- package/dist/accordion/accordion.js.map +1 -0
- package/dist/badge/badge.d.ts +20 -0
- package/dist/badge/badge.d.ts.map +1 -0
- package/dist/badge/badge.js +42 -0
- package/dist/badge/badge.js.map +1 -0
- package/dist/button/button.d.ts +35 -0
- package/dist/button/button.d.ts.map +1 -0
- package/dist/button/button.js +169 -0
- package/dist/button/button.js.map +1 -0
- package/dist/button-bar/button-bar.d.ts +19 -0
- package/dist/button-bar/button-bar.d.ts.map +1 -0
- package/dist/button-bar/button-bar.js +124 -0
- package/dist/button-bar/button-bar.js.map +1 -0
- package/dist/carousel/carousel.d.ts +23 -0
- package/dist/carousel/carousel.d.ts.map +1 -0
- package/dist/carousel/carousel.js +178 -0
- package/dist/carousel/carousel.js.map +1 -0
- package/dist/chat/chat.d.ts +28 -0
- package/dist/chat/chat.d.ts.map +1 -0
- package/dist/chat/chat.js +182 -0
- package/dist/chat/chat.js.map +1 -0
- package/dist/chat/message.d.ts +28 -0
- package/dist/chat/message.d.ts.map +1 -0
- package/dist/chat/message.js +220 -0
- package/dist/chat/message.js.map +1 -0
- package/dist/checkbox/checkbox-group.d.ts +35 -0
- package/dist/checkbox/checkbox-group.d.ts.map +1 -0
- package/dist/checkbox/checkbox-group.js +116 -0
- package/dist/checkbox/checkbox-group.js.map +1 -0
- package/dist/checkbox/checkbox.d.ts +27 -0
- package/dist/checkbox/checkbox.d.ts.map +1 -0
- package/dist/checkbox/checkbox.js +164 -0
- package/dist/checkbox/checkbox.js.map +1 -0
- package/dist/checkbox/tri-state-checkbox.d.ts +22 -0
- package/dist/checkbox/tri-state-checkbox.d.ts.map +1 -0
- package/dist/checkbox/tri-state-checkbox.js +87 -0
- package/dist/checkbox/tri-state-checkbox.js.map +1 -0
- package/dist/code-viewer/code-viewer.d.ts +31 -0
- package/dist/code-viewer/code-viewer.d.ts.map +1 -0
- package/dist/code-viewer/code-viewer.js +115 -0
- package/dist/code-viewer/code-viewer.js.map +1 -0
- package/dist/combo-box/combo-box.d.ts +39 -0
- package/dist/combo-box/combo-box.d.ts.map +1 -0
- package/dist/combo-box/combo-box.js +176 -0
- package/dist/combo-box/combo-box.js.map +1 -0
- package/dist/component-select-list/component-select-list.d.ts +27 -0
- package/dist/component-select-list/component-select-list.d.ts.map +1 -0
- package/dist/component-select-list/component-select-list.js +131 -0
- package/dist/component-select-list/component-select-list.js.map +1 -0
- package/dist/constants.d.ts +33 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +47 -0
- package/dist/constants.js.map +1 -0
- package/dist/context-menu/context-menu.d.ts +24 -0
- package/dist/context-menu/context-menu.d.ts.map +1 -0
- package/dist/context-menu/context-menu.js +116 -0
- package/dist/context-menu/context-menu.js.map +1 -0
- package/dist/datepicker/datepicker-select.d.ts +48 -0
- package/dist/datepicker/datepicker-select.d.ts.map +1 -0
- package/dist/datepicker/datepicker-select.js +219 -0
- package/dist/datepicker/datepicker-select.js.map +1 -0
- package/dist/datepicker/datepicker.d.ts +56 -0
- package/dist/datepicker/datepicker.d.ts.map +1 -0
- package/dist/datepicker/datepicker.js +669 -0
- package/dist/datepicker/datepicker.js.map +1 -0
- package/dist/dropzone/dropzone.d.ts +21 -0
- package/dist/dropzone/dropzone.d.ts.map +1 -0
- package/dist/dropzone/dropzone.js +80 -0
- package/dist/dropzone/dropzone.js.map +1 -0
- package/dist/error-boundary/error-boundary.d.ts +33 -0
- package/dist/error-boundary/error-boundary.d.ts.map +1 -0
- package/dist/error-boundary/error-boundary.js +72 -0
- package/dist/error-boundary/error-boundary.js.map +1 -0
- package/dist/filter/categorical-filter.d.ts +26 -0
- package/dist/filter/categorical-filter.d.ts.map +1 -0
- package/dist/filter/categorical-filter.js +153 -0
- package/dist/filter/categorical-filter.js.map +1 -0
- package/dist/filter/datetime-filter.d.ts +28 -0
- package/dist/filter/datetime-filter.d.ts.map +1 -0
- package/dist/filter/datetime-filter.js +174 -0
- package/dist/filter/datetime-filter.js.map +1 -0
- package/dist/filter/numeric-filter.d.ts +24 -0
- package/dist/filter/numeric-filter.d.ts.map +1 -0
- package/dist/filter/numeric-filter.js +148 -0
- package/dist/filter/numeric-filter.js.map +1 -0
- package/dist/hierarchy-selector/hierarchy-selector.d.ts +31 -0
- package/dist/hierarchy-selector/hierarchy-selector.d.ts.map +1 -0
- package/dist/hierarchy-selector/hierarchy-selector.js +65 -0
- package/dist/hierarchy-selector/hierarchy-selector.js.map +1 -0
- package/dist/hierarchy-selector/node/branch.d.ts +47 -0
- package/dist/hierarchy-selector/node/branch.d.ts.map +1 -0
- package/dist/hierarchy-selector/node/branch.js +132 -0
- package/dist/hierarchy-selector/node/branch.js.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/input/input.d.ts +44 -0
- package/dist/input/input.d.ts.map +1 -0
- package/dist/input/input.js +91 -0
- package/dist/input/input.js.map +1 -0
- package/dist/jest-setup.d.ts +18 -0
- package/dist/jest-setup.d.ts.map +1 -0
- package/dist/jest-setup.js +18 -0
- package/dist/jest-setup.js.map +1 -0
- package/dist/markdown/markdown.d.ts +18 -0
- package/dist/markdown/markdown.d.ts.map +1 -0
- package/dist/markdown/markdown.js +356 -0
- package/dist/markdown/markdown.js.map +1 -0
- package/dist/modal/modal.d.ts +37 -0
- package/dist/modal/modal.d.ts.map +1 -0
- package/dist/modal/modal.js +121 -0
- package/dist/modal/modal.js.map +1 -0
- package/dist/multiselect/multiselect.d.ts +31 -0
- package/dist/multiselect/multiselect.d.ts.map +1 -0
- package/dist/multiselect/multiselect.js +231 -0
- package/dist/multiselect/multiselect.js.map +1 -0
- package/dist/numeric-input/input-stepper.d.ts +33 -0
- package/dist/numeric-input/input-stepper.d.ts.map +1 -0
- package/dist/numeric-input/input-stepper.js +54 -0
- package/dist/numeric-input/input-stepper.js.map +1 -0
- package/dist/numeric-input/numeric-input.d.ts +42 -0
- package/dist/numeric-input/numeric-input.d.ts.map +1 -0
- package/dist/numeric-input/numeric-input.js +234 -0
- package/dist/numeric-input/numeric-input.js.map +1 -0
- package/dist/progress-bar/progress-bar.d.ts +23 -0
- package/dist/progress-bar/progress-bar.d.ts.map +1 -0
- package/dist/progress-bar/progress-bar.js +90 -0
- package/dist/progress-bar/progress-bar.js.map +1 -0
- package/dist/radio/radio-group.d.ts +19 -0
- package/dist/radio/radio-group.d.ts.map +1 -0
- package/dist/radio/radio-group.js +160 -0
- package/dist/radio/radio-group.js.map +1 -0
- package/dist/search-bar/search-bar.d.ts +34 -0
- package/dist/search-bar/search-bar.d.ts.map +1 -0
- package/dist/search-bar/search-bar.js +39 -0
- package/dist/search-bar/search-bar.js.map +1 -0
- package/dist/sectioned-list/sectioned-list.d.ts +29 -0
- package/dist/sectioned-list/sectioned-list.d.ts.map +1 -0
- package/dist/sectioned-list/sectioned-list.js +205 -0
- package/dist/sectioned-list/sectioned-list.js.map +1 -0
- package/dist/select/select.d.ts +54 -0
- package/dist/select/select.d.ts.map +1 -0
- package/dist/select/select.js +143 -0
- package/dist/select/select.js.map +1 -0
- package/dist/shared/chevron-button.d.ts +13 -0
- package/dist/shared/chevron-button.d.ts.map +1 -0
- package/dist/shared/chevron-button.js +35 -0
- package/dist/shared/chevron-button.js.map +1 -0
- package/dist/shared/dropdown-list.d.ts +34 -0
- package/dist/shared/dropdown-list.d.ts.map +1 -0
- package/dist/shared/dropdown-list.js +33 -0
- package/dist/shared/dropdown-list.js.map +1 -0
- package/dist/shared/list-item.d.ts +35 -0
- package/dist/shared/list-item.d.ts.map +1 -0
- package/dist/shared/list-item.js +69 -0
- package/dist/shared/list-item.js.map +1 -0
- package/dist/slider/slider-inputs.d.ts +36 -0
- package/dist/slider/slider-inputs.d.ts.map +1 -0
- package/dist/slider/slider-inputs.js +88 -0
- package/dist/slider/slider-inputs.js.map +1 -0
- package/dist/slider/slider.d.ts +53 -0
- package/dist/slider/slider.d.ts.map +1 -0
- package/dist/slider/slider.js +273 -0
- package/dist/slider/slider.js.map +1 -0
- package/dist/spinner/spinner.d.ts +19 -0
- package/dist/spinner/spinner.d.ts.map +1 -0
- package/dist/spinner/spinner.js +144 -0
- package/dist/spinner/spinner.js.map +1 -0
- package/dist/switch/sun-icon.d.ts +3 -0
- package/dist/switch/sun-icon.d.ts.map +1 -0
- package/dist/switch/sun-icon.js +24 -0
- package/dist/switch/sun-icon.js.map +1 -0
- package/dist/switch/switch.d.ts +16 -0
- package/dist/switch/switch.d.ts.map +1 -0
- package/dist/switch/switch.js +92 -0
- package/dist/switch/switch.js.map +1 -0
- package/dist/table/cells/action-cell.d.ts +34 -0
- package/dist/table/cells/action-cell.d.ts.map +1 -0
- package/dist/table/cells/action-cell.js +68 -0
- package/dist/table/cells/action-cell.js.map +1 -0
- package/dist/table/cells/datetime-cell.d.ts +12 -0
- package/dist/table/cells/datetime-cell.d.ts.map +1 -0
- package/dist/table/cells/datetime-cell.js +36 -0
- package/dist/table/cells/datetime-cell.js.map +1 -0
- package/dist/table/cells/edit-cell-utils.d.ts +32 -0
- package/dist/table/cells/edit-cell-utils.d.ts.map +1 -0
- package/dist/table/cells/edit-cell-utils.js +2 -0
- package/dist/table/cells/edit-cell-utils.js.map +1 -0
- package/dist/table/cells/edit-input-cell.d.ts +10 -0
- package/dist/table/cells/edit-input-cell.d.ts.map +1 -0
- package/dist/table/cells/edit-input-cell.js +61 -0
- package/dist/table/cells/edit-input-cell.js.map +1 -0
- package/dist/table/cells/edit-select-cell.d.ts +12 -0
- package/dist/table/cells/edit-select-cell.d.ts.map +1 -0
- package/dist/table/cells/edit-select-cell.js +55 -0
- package/dist/table/cells/edit-select-cell.js.map +1 -0
- package/dist/table/filters.d.ts +46 -0
- package/dist/table/filters.d.ts.map +1 -0
- package/dist/table/filters.js +226 -0
- package/dist/table/filters.js.map +1 -0
- package/dist/table/headers/select-header.d.ts +14 -0
- package/dist/table/headers/select-header.d.ts.map +1 -0
- package/dist/table/headers/select-header.js +41 -0
- package/dist/table/headers/select-header.js.map +1 -0
- package/dist/table/options-menu.d.ts +25 -0
- package/dist/table/options-menu.d.ts.map +1 -0
- package/dist/table/options-menu.js +123 -0
- package/dist/table/options-menu.js.map +1 -0
- package/dist/table/render-row.d.ts +25 -0
- package/dist/table/render-row.d.ts.map +1 -0
- package/dist/table/render-row.js +163 -0
- package/dist/table/render-row.js.map +1 -0
- package/dist/table/table.d.ts +95 -0
- package/dist/table/table.d.ts.map +1 -0
- package/dist/table/table.js +422 -0
- package/dist/table/table.js.map +1 -0
- package/dist/table/types.d.ts +30 -0
- package/dist/table/types.d.ts.map +1 -0
- package/dist/table/types.js +2 -0
- package/dist/table/types.js.map +1 -0
- package/dist/tabs/tabs.d.ts +22 -0
- package/dist/tabs/tabs.d.ts.map +1 -0
- package/dist/tabs/tabs.js +91 -0
- package/dist/tabs/tabs.js.map +1 -0
- package/dist/textarea/textarea.d.ts +47 -0
- package/dist/textarea/textarea.d.ts.map +1 -0
- package/dist/textarea/textarea.js +121 -0
- package/dist/textarea/textarea.js.map +1 -0
- package/dist/tooltip/tooltip.d.ts +48 -0
- package/dist/tooltip/tooltip.d.ts.map +1 -0
- package/dist/tooltip/tooltip.js +116 -0
- package/dist/tooltip/tooltip.js.map +1 -0
- package/dist/types.d.ts +94 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/chevron.d.ts +34 -0
- package/dist/utils/chevron.d.ts.map +1 -0
- package/dist/utils/chevron.js +38 -0
- package/dist/utils/chevron.js.map +1 -0
- package/dist/utils/index.d.ts +22 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +22 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/label.d.ts +3 -0
- package/dist/utils/label.d.ts.map +1 -0
- package/dist/utils/label.js +24 -0
- package/dist/utils/label.js.map +1 -0
- package/dist/utils/list-styles.d.ts +8 -0
- package/dist/utils/list-styles.d.ts.map +1 -0
- package/dist/utils/list-styles.js +43 -0
- package/dist/utils/list-styles.js.map +1 -0
- package/dist/utils/match-width-to-reference.d.ts +24 -0
- package/dist/utils/match-width-to-reference.d.ts.map +1 -0
- package/dist/utils/match-width-to-reference.js +30 -0
- package/dist/utils/match-width-to-reference.js.map +1 -0
- package/dist/utils/syncKbdHighlightIdx.d.ts +23 -0
- package/dist/utils/syncKbdHighlightIdx.d.ts.map +1 -0
- package/dist/utils/syncKbdHighlightIdx.js +41 -0
- package/dist/utils/syncKbdHighlightIdx.js.map +1 -0
- package/dist/utils/use-infinite-loader.d.ts +32 -0
- package/dist/utils/use-infinite-loader.d.ts.map +1 -0
- package/dist/utils/use-infinite-loader.js +119 -0
- package/dist/utils/use-infinite-loader.js.map +1 -0
- package/dist/utils/use-on-click-outside.d.ts +3 -0
- package/dist/utils/use-on-click-outside.d.ts.map +1 -0
- package/dist/utils/use-on-click-outside.js +36 -0
- package/dist/utils/use-on-click-outside.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Impulse Innovations Limited
|
|
3
|
+
*
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { Placement } from '@floating-ui/react';
|
|
18
|
+
import * as React from 'react';
|
|
19
|
+
import { InteractiveComponentProps, Item } from '../types';
|
|
20
|
+
export interface SelectProps extends InteractiveComponentProps<Item> {
|
|
21
|
+
/** Whether to force the list to the same width as the parent, defaults to true */
|
|
22
|
+
applySameWidthModifier?: boolean;
|
|
23
|
+
/** A function taking an element for the ref of the dropdown */
|
|
24
|
+
dropdownRef?: (element: any) => void;
|
|
25
|
+
/** Whether to open the select dropdown on load or not, defaults to false */
|
|
26
|
+
initialIsOpen?: boolean;
|
|
27
|
+
/** className property to put on the select's items and the item wrapper */
|
|
28
|
+
itemClass?: string;
|
|
29
|
+
/** The items to pick from the list. Each should have a label and a value */
|
|
30
|
+
items: Array<Item>;
|
|
31
|
+
/** The maximum number of items to display, defaults to 5 */
|
|
32
|
+
maxItems?: number;
|
|
33
|
+
/** onClick event. */
|
|
34
|
+
onClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void | Promise<void>;
|
|
35
|
+
/** An optional onSelect handler for listening to changes in the selected item */
|
|
36
|
+
onSelect?: (item: Item) => void | Promise<void>;
|
|
37
|
+
/** An optional placeholder for the input field to display when nothing is selected, defaults to '' */
|
|
38
|
+
placeholder?: string;
|
|
39
|
+
/** Specify a specific placement for the list */
|
|
40
|
+
placement?: Placement;
|
|
41
|
+
/** Set the selected value to a specific value, will put the component in controlled mode. Set to `null` to reset the value */
|
|
42
|
+
selectedItem?: Item;
|
|
43
|
+
/** Font size in rem to show in the Select */
|
|
44
|
+
size?: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A single select dropdown component that has no search capability, accepts a list of items to select from and an
|
|
48
|
+
* onSelect handler to listen for changes in the selection
|
|
49
|
+
*
|
|
50
|
+
* @param {SelectProps} props - the props of the component
|
|
51
|
+
*/
|
|
52
|
+
declare function Select(props: SelectProps): JSX.Element;
|
|
53
|
+
export default Select;
|
|
54
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/select/select.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAkE,MAAM,oBAAoB,CAAC;AAE/G,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAwG3D,MAAM,WAAW,WAAY,SAAQ,yBAAyB,CAAC,IAAI,CAAC;IAChE,kFAAkF;IAClF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,sGAAsG;IACtG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8HAA8H;IAC9H,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAiG/C;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2023 Impulse Innovations Limited
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
import { autoUpdate, flip, shift, useFloating, useInteractions, useRole } from '@floating-ui/react';
|
|
19
|
+
import { useSelect } from 'downshift';
|
|
20
|
+
import * as React from 'react';
|
|
21
|
+
import ReactDOM from 'react-dom';
|
|
22
|
+
import styled from '@darajs/styled-components';
|
|
23
|
+
import DropdownList from '../shared/dropdown-list';
|
|
24
|
+
import Tooltip from '../tooltip/tooltip';
|
|
25
|
+
import { Chevron, matchWidthToReference } from '../utils';
|
|
26
|
+
import { syncKbdHighlightIdx } from '../utils/syncKbdHighlightIdx';
|
|
27
|
+
const SelectedItem = styled.div `
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
|
|
30
|
+
/* The space available is that of the wrapper minus of the chevron */
|
|
31
|
+
width: calc(100% - 1rem);
|
|
32
|
+
margin-right: 0.5rem;
|
|
33
|
+
|
|
34
|
+
font-size: ${(props) => (props.size ? `${props.size}rem` : '1rem')};
|
|
35
|
+
font-weight: 300;
|
|
36
|
+
text-align: left;
|
|
37
|
+
text-overflow: ellipsis;
|
|
38
|
+
white-space: nowrap;
|
|
39
|
+
`;
|
|
40
|
+
const Wrapper = styled.div `
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
|
|
43
|
+
width: 100%;
|
|
44
|
+
min-width: 4rem;
|
|
45
|
+
height: 2.5rem;
|
|
46
|
+
|
|
47
|
+
border-radius: ${(props) => (props.isOpen ? '0.25rem 0.25rem 0rem 0rem' : '0.25rem')};
|
|
48
|
+
|
|
49
|
+
${(props) => {
|
|
50
|
+
if (props.isDisabled) {
|
|
51
|
+
return `
|
|
52
|
+
border: 1px solid ${props.theme.colors.grey1};
|
|
53
|
+
cursor: not-allowed;
|
|
54
|
+
`;
|
|
55
|
+
}
|
|
56
|
+
if (props.isErrored) {
|
|
57
|
+
return `border: 1px solid ${props.theme.colors.error};`;
|
|
58
|
+
}
|
|
59
|
+
return `
|
|
60
|
+
border: 1px solid ${props.isOpen ? props.theme.colors.grey3 : props.theme.colors.grey1};
|
|
61
|
+
:hover {
|
|
62
|
+
border: 1px solid ${props.theme.colors.grey3};
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
`;
|
|
66
|
+
}}
|
|
67
|
+
`;
|
|
68
|
+
const SelectButton = styled.button `
|
|
69
|
+
display: inline-flex;
|
|
70
|
+
flex: 1 1 auto;
|
|
71
|
+
align-items: center;
|
|
72
|
+
justify-content: space-between;
|
|
73
|
+
|
|
74
|
+
width: 100%;
|
|
75
|
+
height: 100%;
|
|
76
|
+
padding: 0 0.5rem 0 1rem;
|
|
77
|
+
|
|
78
|
+
font-size: 1rem;
|
|
79
|
+
color: ${(props) => props.theme.colors.text};
|
|
80
|
+
|
|
81
|
+
background-color: ${(props) => props.theme.colors.grey1};
|
|
82
|
+
border: none;
|
|
83
|
+
border-radius: ${(props) => (props.isOpen ? '0.25rem 0.25rem 0rem 0rem' : '0.25rem')};
|
|
84
|
+
outline: 0;
|
|
85
|
+
|
|
86
|
+
:not(:enabled) {
|
|
87
|
+
cursor: not-allowed;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:hover:enabled {
|
|
91
|
+
background-color: ${(props) => props.theme.colors.grey2};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
svg {
|
|
95
|
+
width: 1rem !important;
|
|
96
|
+
height: 0.8rem;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:disabled {
|
|
100
|
+
color: ${(props) => props.theme.colors.grey2};
|
|
101
|
+
background-color: ${(props) => props.theme.colors.grey1};
|
|
102
|
+
|
|
103
|
+
svg {
|
|
104
|
+
color: ${(props) => props.theme.colors.grey2};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
`;
|
|
108
|
+
/**
|
|
109
|
+
* A single select dropdown component that has no search capability, accepts a list of items to select from and an
|
|
110
|
+
* onSelect handler to listen for changes in the selection
|
|
111
|
+
*
|
|
112
|
+
* @param {SelectProps} props - the props of the component
|
|
113
|
+
*/
|
|
114
|
+
function Select(props) {
|
|
115
|
+
var _a, _b, _c;
|
|
116
|
+
const { applySameWidthModifier = true } = props;
|
|
117
|
+
const [kbdHighlightIdx, setKbdHighlightIdx] = React.useState();
|
|
118
|
+
const { isOpen, selectedItem, getToggleButtonProps, getMenuProps, getItemProps } = useSelect(Object.assign(Object.assign({ initialIsOpen: props.initialIsOpen, initialSelectedItem: props.initialValue, itemToString: (item) => item.label, items: props.items, onSelectedItemChange: (changes) => {
|
|
119
|
+
var _a;
|
|
120
|
+
const selected = changes.selectedItem;
|
|
121
|
+
(_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, selected);
|
|
122
|
+
} }, syncKbdHighlightIdx(setKbdHighlightIdx)), ('selectedItem' in props && { selectedItem: props.selectedItem })));
|
|
123
|
+
const { refs, floatingStyles, context } = useFloating({
|
|
124
|
+
open: isOpen,
|
|
125
|
+
placement: props.placement || 'bottom-start',
|
|
126
|
+
middleware: [flip(), shift(), ...(applySameWidthModifier ? [matchWidthToReference(+2)] : [])],
|
|
127
|
+
whileElementsMounted: isOpen ? autoUpdate : undefined,
|
|
128
|
+
});
|
|
129
|
+
const role = useRole(context, { role: 'listbox' });
|
|
130
|
+
const { getReferenceProps, getFloatingProps } = useInteractions([role]);
|
|
131
|
+
const setFloatingRef = refs.setFloating;
|
|
132
|
+
const { dropdownRef } = props;
|
|
133
|
+
const mergedDropdownRef = React.useCallback((node) => {
|
|
134
|
+
setFloatingRef(node);
|
|
135
|
+
dropdownRef === null || dropdownRef === void 0 ? void 0 : dropdownRef(node);
|
|
136
|
+
}, [setFloatingRef, dropdownRef]);
|
|
137
|
+
const menuProps = React.useMemo(() => getMenuProps({ ref: mergedDropdownRef }), [mergedDropdownRef, getMenuProps]);
|
|
138
|
+
const toggleButtonProps = React.useMemo(() => getToggleButtonProps({ disabled: props.disabled, ref: refs.setReference }), [props.disabled, refs.setReference, getToggleButtonProps]);
|
|
139
|
+
const dropdownStyle = React.useMemo(() => (Object.assign(Object.assign({}, floatingStyles), { marginLeft: -1 })), [floatingStyles]);
|
|
140
|
+
return (_jsx(Tooltip, { content: props.errorMsg, disabled: !props.errorMsg, styling: "error", children: _jsxs(Wrapper, { className: props.className, isDisabled: props.disabled, isErrored: !!props.errorMsg, isOpen: isOpen, onClick: props.onClick, style: props.style, children: [_jsxs(SelectButton, Object.assign({ disabled: props.disabled, isOpen: isOpen }, toggleButtonProps, getReferenceProps(), { type: "button", children: [_jsx(SelectedItem, { size: props.size, children: (_b = (_a = (selectedItem === null ? props.placeholder : selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label)) !== null && _a !== void 0 ? _a : props.placeholder) !== null && _b !== void 0 ? _b : 'Select' }), _jsx(Chevron, { disabled: props.disabled, isOpen: isOpen })] })), ReactDOM.createPortal(_jsx(DropdownList, { items: props.items, getItemProps: getItemProps, getFloatingProps: getFloatingProps, style: dropdownStyle, isOpen: isOpen, getMenuProps: getMenuProps, size: props.size, ref: refs.setFloating, className: `${(_c = menuProps === null || menuProps === void 0 ? void 0 : menuProps.className) !== null && _c !== void 0 ? _c : ''} ${props.itemClass}`, itemClass: props.itemClass, maxItems: props.maxItems, selectedItem: selectedItem, kbdHighlightIdx: kbdHighlightIdx }), document.body)] }) }));
|
|
141
|
+
}
|
|
142
|
+
export default Select;
|
|
143
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select/select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetPropsCommonOptions, UseSelectGetToggleButtonPropsOptions } from 'downshift';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
type Props = {
|
|
4
|
+
/** Function to get props for the toggle button */
|
|
5
|
+
getToggleButtonProps: (options?: UseSelectGetToggleButtonPropsOptions, otherOptions?: GetPropsCommonOptions) => Record<string, unknown>;
|
|
6
|
+
/** Boolean to indicate if the button is disabled */
|
|
7
|
+
disabled: boolean;
|
|
8
|
+
/** Boolean to indicate if the dropdown is open */
|
|
9
|
+
isOpen: boolean;
|
|
10
|
+
};
|
|
11
|
+
declare const _default: React.MemoExoticComponent<({ getToggleButtonProps, disabled, isOpen, ...props }: Props) => JSX.Element>;
|
|
12
|
+
export default _default;
|
|
13
|
+
//# sourceMappingURL=chevron-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chevron-button.d.ts","sourceRoot":"","sources":["../../src/shared/chevron-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,oCAAoC,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,KAAK,KAAK,GAAG;IACT,kDAAkD;IAClD,oBAAoB,EAAE,CAClB,OAAO,CAAC,EAAE,oCAAoC,EAC9C,YAAY,CAAC,EAAE,qBAAqB,KACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;CACnB,CAAC;yGAO2E,KAAK,KAAG,GAAG,CAAC,OAAO;AAMhG,wBAAyC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import styled from '@darajs/styled-components';
|
|
15
|
+
import Button from '../button/button';
|
|
16
|
+
import { Chevron } from '../utils';
|
|
17
|
+
const StyledChevronButton = styled(Button).attrs((attrs) => (Object.assign(Object.assign({}, attrs), { styling: 'ghost' }))) `
|
|
18
|
+
min-width: 0;
|
|
19
|
+
height: auto;
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0 0.25rem;
|
|
22
|
+
|
|
23
|
+
background-color: transparent !important;
|
|
24
|
+
`;
|
|
25
|
+
/**
|
|
26
|
+
* ChevronButton component for rendering a button with a chevron icon.
|
|
27
|
+
*
|
|
28
|
+
* @param {Props} props - The props for the component
|
|
29
|
+
*/
|
|
30
|
+
const ChevronButton = (_a) => {
|
|
31
|
+
var { getToggleButtonProps, disabled, isOpen } = _a, props = __rest(_a, ["getToggleButtonProps", "disabled", "isOpen"]);
|
|
32
|
+
return (_jsx(StyledChevronButton, Object.assign({}, getToggleButtonProps(), props, { children: _jsx(Chevron, { disabled: disabled, isOpen: isOpen }) })));
|
|
33
|
+
};
|
|
34
|
+
export default React.memo(ChevronButton);
|
|
35
|
+
//# sourceMappingURL=chevron-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chevron-button.js","sourceRoot":"","sources":["../../src/shared/chevron-button.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAE/C,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,OAAO,EAAE,OAAO,IAAG,CAAC,CAAA;;;;;;;CAO5F,CAAC;AAcF;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,EAA2D,EAAe,EAAE;QAA5E,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,OAAmB,EAAd,KAAK,cAAlD,8CAAoD,CAAF;IAA2B,OAAA,CAChG,KAAC,mBAAmB,oBAAK,oBAAoB,EAAE,EAAM,KAAK,cACtD,KAAC,OAAO,IAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAI,IAC7B,CACzB,CAAA;CAAA,CAAC;AAEF,eAAe,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { GetPropsCommonOptions, UseComboboxGetItemPropsOptions, UseComboboxGetMenuPropsOptions } from 'downshift';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Item } from '../types';
|
|
4
|
+
type Props = {
|
|
5
|
+
/** Array of items to display in the dropdown */
|
|
6
|
+
items: Item[];
|
|
7
|
+
/** Function to get props for an item */
|
|
8
|
+
getItemProps: (options: UseComboboxGetItemPropsOptions<Item>) => any;
|
|
9
|
+
/** Function to get props for the floating element */
|
|
10
|
+
getFloatingProps: (userProps?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;
|
|
11
|
+
/** Style object to customize the dropdown list */
|
|
12
|
+
style: React.CSSProperties;
|
|
13
|
+
/** Boolean to indicate if the dropdown is open */
|
|
14
|
+
isOpen: boolean;
|
|
15
|
+
/** Optional size for the list items */
|
|
16
|
+
size?: number;
|
|
17
|
+
/** Function to get props for the menu. */
|
|
18
|
+
getMenuProps?: (options?: UseComboboxGetMenuPropsOptions, otherOptions?: GetPropsCommonOptions) => any;
|
|
19
|
+
/** Maximum number of items to display in the dropdown */
|
|
20
|
+
maxItems?: number;
|
|
21
|
+
/** CSS classname for individual items */
|
|
22
|
+
itemClass?: string;
|
|
23
|
+
/** CSS classname for the dropdown list */
|
|
24
|
+
className?: string;
|
|
25
|
+
/** Optional function to render custom children. By default, it renders the ListItem with the item label */
|
|
26
|
+
children?: (item: Item, index: number) => React.ReactNode;
|
|
27
|
+
/** The item to scroll into view when the menu is opened */
|
|
28
|
+
selectedItem?: Item;
|
|
29
|
+
/** The item to highlight when keyboard is used. Otherwise CSS :hover is used. */
|
|
30
|
+
kbdHighlightIdx?: number;
|
|
31
|
+
};
|
|
32
|
+
declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<Props & React.RefAttributes<any>>>;
|
|
33
|
+
export default _default;
|
|
34
|
+
//# sourceMappingURL=dropdown-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-list.d.ts","sourceRoot":"","sources":["../../src/shared/dropdown-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AAElH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAiBhC,KAAK,KAAK,GAAG;IACT,gDAAgD;IAChD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,wCAAwC;IACxC,YAAY,EAAE,CAAC,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;IACrE,qDAAqD;IACrD,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxF,kDAAkD;IAClD,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC;IAC3B,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,8BAA8B,EAAE,YAAY,CAAC,EAAE,qBAAqB,KAAK,GAAG,CAAC;IACvG,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1D,2DAA2D;IAC3D,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;;AAkEF,wBAAwC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { isEmpty } from 'lodash';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import styled from '@darajs/styled-components';
|
|
5
|
+
import { List, NoItemsLabel } from '../utils/list-styles';
|
|
6
|
+
import ListItem from './list-item';
|
|
7
|
+
const StyledDropdownList = styled(List) `
|
|
8
|
+
border-radius: 0 0 0.25rem 0.25rem;
|
|
9
|
+
outline: 0;
|
|
10
|
+
box-shadow: ${(props) => props.theme.shadow.light};
|
|
11
|
+
`;
|
|
12
|
+
const InnerItem = styled.span `
|
|
13
|
+
min-width: 0;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
text-overflow: ellipsis;
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
`;
|
|
18
|
+
/**
|
|
19
|
+
* DropdownList component to display a list of items in a dropdown.
|
|
20
|
+
*
|
|
21
|
+
* @param {Props} props - The props for the component
|
|
22
|
+
*/
|
|
23
|
+
const DropdownList = React.forwardRef(({ items, getItemProps, getFloatingProps, isOpen, getMenuProps, size, style, maxItems, itemClass, className, children, selectedItem, kbdHighlightIdx, }, ref) => (_jsx(StyledDropdownList, Object.assign({}, (getMenuProps ? getMenuProps({ ref }) : { ref }), getFloatingProps(), { isOpen: isOpen, maxItems: maxItems, style: Object.assign(Object.assign({}, style), { zIndex: 9999 }), className: className, children: !isEmpty(items) ?
|
|
24
|
+
items.map((item, index) => {
|
|
25
|
+
const isSelected = (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label) === item.label;
|
|
26
|
+
return children ?
|
|
27
|
+
children(item, index)
|
|
28
|
+
: _jsxs(ListItem, { getItemProps: getItemProps, size: size, title: item.label, item: item, index: index, itemClass: itemClass, isHighlighted: isOpen && kbdHighlightIdx !== undefined && kbdHighlightIdx === index, isSelected: isSelected, children: [_jsx(InnerItem, { children: item.label }), item.icon] }, `item-${index}-${isOpen && isSelected}`);
|
|
29
|
+
})
|
|
30
|
+
: _jsx(NoItemsLabel, { children: "No Items" }) }))));
|
|
31
|
+
DropdownList.displayName = 'DropdownList';
|
|
32
|
+
export default React.memo(DropdownList);
|
|
33
|
+
//# sourceMappingURL=dropdown-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-list.js","sourceRoot":"","sources":["../../src/shared/dropdown-list.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAG/C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;;;kBAGrB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;CACpD,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;CAK5B,CAAC;AA+BF;;;;GAIG;AACH,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CACjC,CACI,EACI,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,eAAe,GAClB,EACD,GAAG,EACQ,EAAE,CAAC,CACd,KAAC,kBAAkB,oBACX,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAChD,gBAAgB,EAAE,IACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,KAAK,kCACE,KAAK,KACR,MAAM,EAAE,IAAI,KAEhB,SAAS,EAAE,SAAS,YAEnB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACtB,MAAM,UAAU,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,MAAK,IAAI,CAAC,KAAK,CAAC;YACtD,OAAO,QAAQ,CAAC,CAAC;gBACT,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;gBACzB,CAAC,CAAG,MAAC,QAAQ,IACL,YAAY,EAAE,YAAY,EAK1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,KAAK,EACnF,UAAU,EAAE,UAAU,aAEtB,KAAC,SAAS,cAAE,IAAI,CAAC,KAAK,GAAa,EAClC,IAAI,CAAC,IAAI,KAVL,QAAQ,KAAK,IAAI,MAAM,IAAI,UAAU,EAAE,CAWrC,CAAC;QACxB,CAAC,CAAC;QACN,CAAC,CAAG,KAAC,YAAY,2BAAwB,IACxB,CACxB,CACJ,CAAC;AACF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC;AAE1C,eAAe,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { UseComboboxGetItemPropsOptions } from 'downshift';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Item } from '../types';
|
|
4
|
+
interface ListItemProps {
|
|
5
|
+
isHighlighted?: boolean;
|
|
6
|
+
isSelected?: boolean;
|
|
7
|
+
size?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const StyledListItem: import("styled-components").StyledComponent<"span", import("@darajs/styled-components").DefaultTheme, ListItemProps, never>;
|
|
10
|
+
type Props = {
|
|
11
|
+
/** Optional font size for the list item */
|
|
12
|
+
size?: number;
|
|
13
|
+
/** Title of the list item */
|
|
14
|
+
title: string;
|
|
15
|
+
/** Item data */
|
|
16
|
+
item: Item;
|
|
17
|
+
/** Index of the item in the list */
|
|
18
|
+
index: number;
|
|
19
|
+
/** Whether the item is highlighted. For example when using keyboard navigation */
|
|
20
|
+
isHighlighted?: boolean;
|
|
21
|
+
/** Whether the item is selected */
|
|
22
|
+
isSelected?: boolean;
|
|
23
|
+
/** Function to get props for the item */
|
|
24
|
+
getItemProps: (options: UseComboboxGetItemPropsOptions<Item>) => any;
|
|
25
|
+
/** Optional CSS classname for the list item */
|
|
26
|
+
itemClass?: string;
|
|
27
|
+
/** Children nodes to be rendered inside the list item */
|
|
28
|
+
children?: React.ReactNode;
|
|
29
|
+
};
|
|
30
|
+
declare const _default: React.MemoExoticComponent<{
|
|
31
|
+
({ size, title, item, index, getItemProps, itemClass, children, isHighlighted, isSelected, }: Props): JSX.Element;
|
|
32
|
+
displayName: string;
|
|
33
|
+
}>;
|
|
34
|
+
export default _default;
|
|
35
|
+
//# sourceMappingURL=list-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-item.d.ts","sourceRoot":"","sources":["../../src/shared/list-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,UAAU,aAAa;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,cAAc,6HA0C1B,CAAC;AAEF,KAAK,KAAK,GAAG;IACT,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,YAAY,EAAE,CAAC,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;IACrE,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B,CAAC;;kGAiBC,KAAK,GAAG,GAAG,CAAC,OAAO;;;AAmBtB,wBAAoC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import styled from '@darajs/styled-components';
|
|
15
|
+
export const StyledListItem = styled.span `
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
user-select: none;
|
|
18
|
+
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
|
|
21
|
+
display: flex;
|
|
22
|
+
justify-content: space-between;
|
|
23
|
+
align-items: center;
|
|
24
|
+
width: 100%;
|
|
25
|
+
min-height: 2rem;
|
|
26
|
+
padding: 0.25rem 1rem;
|
|
27
|
+
|
|
28
|
+
font-size: ${(props) => (props.size ? `${props.size}rem` : '1rem')};
|
|
29
|
+
font-weight: 300;
|
|
30
|
+
color: ${(props) => props.theme.colors.text};
|
|
31
|
+
text-overflow: ellipsis;
|
|
32
|
+
white-space: nowrap;
|
|
33
|
+
|
|
34
|
+
background-color: ${(props) => {
|
|
35
|
+
if (props.isSelected) {
|
|
36
|
+
return props.theme.colors.blue3;
|
|
37
|
+
}
|
|
38
|
+
if (props.isHighlighted) {
|
|
39
|
+
return props.theme.colors.grey2;
|
|
40
|
+
}
|
|
41
|
+
return props.theme.colors.blue1;
|
|
42
|
+
}};
|
|
43
|
+
border-bottom: 1px solid ${(props) => props.theme.colors.grey3};
|
|
44
|
+
|
|
45
|
+
:hover {
|
|
46
|
+
background-color: ${(props) => props.theme.colors.grey2};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:active {
|
|
50
|
+
color: ${(props) => props.theme.colors.blue1};
|
|
51
|
+
background-color: ${(props) => props.theme.colors.blue4};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&:last-child {
|
|
55
|
+
border-bottom: none;
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
/**
|
|
59
|
+
* ListItem component for rendering a single item in a dropdown list.
|
|
60
|
+
*
|
|
61
|
+
* @param {Props} props - The props for the component
|
|
62
|
+
* */
|
|
63
|
+
const ListItem = ({ size, title, item, index, getItemProps, itemClass, children, isHighlighted, isSelected, }) => {
|
|
64
|
+
const _a = getItemProps({ index, item }), { itemClassName } = _a, itemProps = __rest(_a, ["itemClassName"]);
|
|
65
|
+
return (_jsx(StyledListItem, Object.assign({}, itemProps, { className: itemClass ? `${itemClassName} ${itemClass}` : itemClassName, title: title, size: size, item: item, isHighlighted: isHighlighted, isSelected: isSelected, children: children })));
|
|
66
|
+
};
|
|
67
|
+
ListItem.displayName = 'ListItem';
|
|
68
|
+
export default React.memo(ListItem);
|
|
69
|
+
//# sourceMappingURL=list-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-item.js","sourceRoot":"","sources":["../../src/shared/list-item.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAU/C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAe;;;;;;;;;;;;;iBAavC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;;aAEzD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;;;;wBAIvB,CAAC,KAAK,EAAE,EAAE;IAC1B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,CAAC;+BAC0B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;4BAGtC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;;iBAI9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;4BACxB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;;;;CAM9D,CAAC;AAuBF;;;;KAIK;AACL,MAAM,QAAQ,GAAG,CAAC,EACd,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,aAAa,EACb,UAAU,GACN,EAAe,EAAE;IACrB,MAAM,KAAkC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAA/D,EAAE,aAAa,OAAgD,EAA3C,SAAS,cAA7B,iBAA+B,CAAgC,CAAC;IAEtE,OAAO,CACH,KAAC,cAAc,oBACP,SAAS,IACb,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,aAAuB,IAAI,SAAS,EAAE,CAAC,CAAC,CAAE,aAAwB,EAC5F,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,YAErB,QAAQ,IACI,CACpB,CAAC;AACN,CAAC,CAAC;AACF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,eAAe,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Impulse Innovations Limited
|
|
3
|
+
*
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { FunctionComponent } from 'react';
|
|
18
|
+
interface SliderInputsProps {
|
|
19
|
+
/** The domain defines the range of possible values that the slider can take */
|
|
20
|
+
domain: [number, number];
|
|
21
|
+
/** The error message callback for inputs when value is out of domain range */
|
|
22
|
+
getErrorMsg: (value: number, index: number) => string;
|
|
23
|
+
/** Slider Values state setter */
|
|
24
|
+
setSliderValues: React.Dispatch<React.SetStateAction<number[]>>;
|
|
25
|
+
/** Slider Values */
|
|
26
|
+
sliderValues: number[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The SliderInputs component displays the actual input values of the slider in a horizontal scrollable view
|
|
30
|
+
* that can be edited and have the changes reflected on the slider.
|
|
31
|
+
*
|
|
32
|
+
* @param {SliderInputsProps} props - the props for the component
|
|
33
|
+
*/
|
|
34
|
+
declare const SliderInputs: FunctionComponent<SliderInputsProps>;
|
|
35
|
+
export default SliderInputs;
|
|
36
|
+
//# sourceMappingURL=slider-inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-inputs.d.ts","sourceRoot":"","sources":["../../src/slider/slider-inputs.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,iBAAiB,EAAuB,MAAM,OAAO,CAAC;AAiD/D,UAAU,iBAAiB;IACvB,+EAA+E;IAC/E,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,8EAA8E;IAC9E,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtD,iCAAiC;IACjC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChE,oBAAoB;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;GAKG;AACH,QAAA,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,CA8CtD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2023 Impulse Innovations Limited
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
import { useCallback, useRef } from 'react';
|
|
19
|
+
import styled from '@darajs/styled-components';
|
|
20
|
+
import { useIntersectionObserver } from '@darajs/ui-utils';
|
|
21
|
+
import NumericInput from '../numeric-input/numeric-input';
|
|
22
|
+
const InputWrapper = styled.div `
|
|
23
|
+
position: relative;
|
|
24
|
+
display: flex;
|
|
25
|
+
flex: 1 1 auto;
|
|
26
|
+
height: 3rem;
|
|
27
|
+
|
|
28
|
+
div {
|
|
29
|
+
flex: 1 1 auto;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
input {
|
|
33
|
+
height: 100%;
|
|
34
|
+
|
|
35
|
+
::before {
|
|
36
|
+
content: ' ';
|
|
37
|
+
|
|
38
|
+
position: sticky;
|
|
39
|
+
top: 0;
|
|
40
|
+
left: 0;
|
|
41
|
+
|
|
42
|
+
width: ${(props) => (!props.firstInputVisible ? '8px' : 0)};
|
|
43
|
+
height: 2.5rem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
::after {
|
|
47
|
+
content: '';
|
|
48
|
+
|
|
49
|
+
position: sticky;
|
|
50
|
+
top: 0;
|
|
51
|
+
right: 0;
|
|
52
|
+
|
|
53
|
+
width: ${(props) => (!props.lastInputVisible ? '8px' : 0)};
|
|
54
|
+
height: 2.5rem;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
/**
|
|
59
|
+
* The SliderInputs component displays the actual input values of the slider in a horizontal scrollable view
|
|
60
|
+
* that can be edited and have the changes reflected on the slider.
|
|
61
|
+
*
|
|
62
|
+
* @param {SliderInputsProps} props - the props for the component
|
|
63
|
+
*/
|
|
64
|
+
const SliderInputs = ({ getErrorMsg, sliderValues, setSliderValues, domain, }) => {
|
|
65
|
+
const firstInputRef = useRef();
|
|
66
|
+
const lastInputRef = useRef();
|
|
67
|
+
const firstInputVisible = useIntersectionObserver(firstInputRef, '0px', 0.5);
|
|
68
|
+
const lastInputVisible = useIntersectionObserver(lastInputRef, '0px', 0.5);
|
|
69
|
+
const onInputChange = useCallback((value, index) => {
|
|
70
|
+
setSliderValues((currSliderValues) => {
|
|
71
|
+
const updatedValues = [...currSliderValues];
|
|
72
|
+
updatedValues[index] = Number.isNaN(value) ? domain[0] : value;
|
|
73
|
+
return updatedValues;
|
|
74
|
+
});
|
|
75
|
+
}, [domain, setSliderValues]);
|
|
76
|
+
return (_jsx(InputWrapper, { firstInputVisible: firstInputVisible, lastInputVisible: lastInputVisible, children: sliderValues.map((value, index) => {
|
|
77
|
+
let inputRef = null;
|
|
78
|
+
if (index === 0) {
|
|
79
|
+
inputRef = firstInputRef;
|
|
80
|
+
}
|
|
81
|
+
if (index === sliderValues.length - 1) {
|
|
82
|
+
inputRef = lastInputRef;
|
|
83
|
+
}
|
|
84
|
+
return (_jsx("div", { ref: inputRef, children: _jsx(NumericInput, { errorMsg: getErrorMsg(value, index), onChange: (val) => onInputChange(val, index), style: { height: '2rem', margin: '0.25rem 0.5rem' }, value: value }) }, index));
|
|
85
|
+
}) }));
|
|
86
|
+
};
|
|
87
|
+
export default SliderInputs;
|
|
88
|
+
//# sourceMappingURL=slider-inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-inputs.js","sourceRoot":"","sources":["../../src/slider/slider-inputs.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAqB,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAO1D,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAmB;;;;;;;;;;;;;;;;;;;;qBAoB7B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;qBAWjD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;CAIpE,CAAC;AAaF;;;;;GAKG;AACH,MAAM,YAAY,GAAyC,CAAC,EACxD,WAAW,EACX,YAAY,EACZ,eAAe,EACf,MAAM,GACT,EAAe,EAAE;IACd,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;IAE9B,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAE3E,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE;QACnC,eAAe,CAAC,CAAC,gBAAgB,EAAE,EAAE;YACjC,MAAM,aAAa,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAC5C,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/D,OAAO,aAAa,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,EACD,CAAC,MAAM,EAAE,eAAe,CAAC,CAC5B,CAAC;IAEF,OAAO,CACH,KAAC,YAAY,IAAC,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,YACjF,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACd,QAAQ,GAAG,aAAa,CAAC;YAC7B,CAAC;YACD,IAAI,KAAK,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,QAAQ,GAAG,YAAY,CAAC;YAC5B,CAAC;YACD,OAAO,CACH,cAAiB,GAAG,EAAE,QAAQ,YAC1B,KAAC,YAAY,IACT,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,EACnC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,EAC5C,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,EACnD,KAAK,EAAE,KAAK,GACd,IANI,KAAK,CAOT,CACT,CAAC;QACN,CAAC,CAAC,GACS,CAClB,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|