@os-design/core 1.0.183 → 1.0.184
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/dist/cjs/DatePicker/index.js +7 -8
- package/dist/cjs/DatePicker/index.js.map +1 -1
- package/dist/cjs/MenuGroup/index.js +37 -16
- package/dist/cjs/MenuGroup/index.js.map +1 -1
- package/dist/cjs/Select/index.js +321 -63
- package/dist/cjs/Select/index.js.map +1 -1
- package/dist/esm/DatePicker/index.js +5 -6
- package/dist/esm/DatePicker/index.js.map +1 -1
- package/dist/esm/MenuGroup/index.js +44 -32
- package/dist/esm/MenuGroup/index.js.map +1 -1
- package/dist/esm/Select/index.js +342 -59
- package/dist/esm/Select/index.js.map +1 -1
- package/dist/types/DatePicker/index.d.ts.map +1 -1
- package/dist/types/MenuGroup/index.d.ts +13 -6
- package/dist/types/MenuGroup/index.d.ts.map +1 -1
- package/dist/types/Select/index.d.ts +65 -7
- package/dist/types/Select/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/cjs/Select/SelectList.js +0 -146
- package/dist/cjs/Select/SelectList.js.map +0 -1
- package/dist/cjs/Select/SelectToggle.js +0 -195
- package/dist/cjs/Select/SelectToggle.js.map +0 -1
- package/dist/esm/Select/SelectList.js +0 -125
- package/dist/esm/Select/SelectList.js.map +0 -1
- package/dist/esm/Select/SelectToggle.js +0 -217
- package/dist/esm/Select/SelectToggle.js.map +0 -1
- package/dist/types/Select/SelectList.d.ts +0 -22
- package/dist/types/Select/SelectList.d.ts.map +0 -1
- package/dist/types/Select/SelectToggle.d.ts +0 -73
- package/dist/types/Select/SelectToggle.d.ts.map +0 -1
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
import React, { useCallback, useMemo } from 'react';
|
|
3
|
-
import { FixedSizeList } from 'react-window';
|
|
4
|
-
import { useFontSize, useSize } from '@os-design/utils';
|
|
5
|
-
import { useTheme } from '@os-design/theming';
|
|
6
|
-
import { useIsMinWidth } from '@os-design/media';
|
|
7
|
-
import { useSelectHandler } from '@os-design/menu-utils';
|
|
8
|
-
import MenuItem from '../MenuItem';
|
|
9
|
-
import useRWLoadNext from '../List/utils/useRWLoadNext';
|
|
10
|
-
const SelectList = ({
|
|
11
|
-
searchVisible,
|
|
12
|
-
options,
|
|
13
|
-
visibleCount,
|
|
14
|
-
overscanCount,
|
|
15
|
-
threshold,
|
|
16
|
-
onLoadNext,
|
|
17
|
-
maxSelectedItems,
|
|
18
|
-
containerRef,
|
|
19
|
-
value,
|
|
20
|
-
onChange = () => {},
|
|
21
|
-
id,
|
|
22
|
-
size
|
|
23
|
-
}) => {
|
|
24
|
-
const windowSize = useSize();
|
|
25
|
-
const isMinXs = useIsMinWidth('xs');
|
|
26
|
-
const fontSize = useFontSize(document.body);
|
|
27
|
-
const {
|
|
28
|
-
theme
|
|
29
|
-
} = useTheme();
|
|
30
|
-
const scaleFactor = useMemo(() => {
|
|
31
|
-
const s = size || 'medium';
|
|
32
|
-
return ['small', 'medium', 'large'].includes(s) ? theme.sizes[s] : Number(s.replace(/^([0-9]+(\.[0-9]+)?).*/, '$1')) || 1; // Extract the number
|
|
33
|
-
}, [size, theme.sizes]);
|
|
34
|
-
const paddingBottom = useMemo(() => {
|
|
35
|
-
const paddingEm = isMinXs ? theme.menuPaddingVertical : theme.modalBodyPaddingVertical[0];
|
|
36
|
-
return paddingEm * fontSize * scaleFactor;
|
|
37
|
-
}, [isMinXs, theme.menuPaddingVertical, theme.modalBodyPaddingVertical, fontSize, scaleFactor]);
|
|
38
|
-
const paddingTop = useMemo(() => searchVisible ? 5 * scaleFactor : paddingBottom, [searchVisible, scaleFactor, paddingBottom]);
|
|
39
|
-
const searchInputHeight = useMemo(() => searchVisible ? (theme.baseHeight + theme.menuPaddingVertical) * fontSize * scaleFactor : 0, [searchVisible, theme.baseHeight, theme.menuPaddingVertical, fontSize, scaleFactor]);
|
|
40
|
-
const itemSize = useMemo(() => theme.menuItemHeight * fontSize * scaleFactor, [theme.menuItemHeight, fontSize, scaleFactor]);
|
|
41
|
-
const height = useMemo(() => {
|
|
42
|
-
// Modal
|
|
43
|
-
if (!isMinXs) {
|
|
44
|
-
const maxHeight = windowSize.height - theme.modalHeaderHeight * fontSize * scaleFactor - searchInputHeight;
|
|
45
|
-
const curHeight = options.length * itemSize + paddingTop + paddingBottom;
|
|
46
|
-
return curHeight < maxHeight ? curHeight : maxHeight;
|
|
47
|
-
}
|
|
48
|
-
// Popover
|
|
49
|
-
const count = options.length < visibleCount ? options.length : visibleCount;
|
|
50
|
-
return count * itemSize + paddingTop + paddingBottom;
|
|
51
|
-
}, [isMinXs, options.length, visibleCount, itemSize, windowSize.height, theme.modalHeaderHeight, fontSize, scaleFactor, searchInputHeight, paddingTop, paddingBottom]);
|
|
52
|
-
const scrollHandler = useRWLoadNext({
|
|
53
|
-
itemCount: options.length,
|
|
54
|
-
threshold,
|
|
55
|
-
itemSize,
|
|
56
|
-
paddingTop,
|
|
57
|
-
height,
|
|
58
|
-
onLoadNext
|
|
59
|
-
});
|
|
60
|
-
const onSelect = useSelectHandler({
|
|
61
|
-
value: value || [],
|
|
62
|
-
onChange,
|
|
63
|
-
maxSelectedItems
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
-
const InnerElement = useCallback(({
|
|
68
|
-
style,
|
|
69
|
-
...innerElementRest
|
|
70
|
-
}) => /*#__PURE__*/React.createElement("div", _extends({
|
|
71
|
-
style: {
|
|
72
|
-
...style,
|
|
73
|
-
height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`
|
|
74
|
-
},
|
|
75
|
-
role: "listbox",
|
|
76
|
-
id: id
|
|
77
|
-
}, innerElementRest)), [id, paddingBottom, paddingTop]);
|
|
78
|
-
const listItemFn = useCallback(({
|
|
79
|
-
index,
|
|
80
|
-
style
|
|
81
|
-
}) => {
|
|
82
|
-
const {
|
|
83
|
-
title: optionTitle,
|
|
84
|
-
value: optionValue,
|
|
85
|
-
onClick: optionOnClick,
|
|
86
|
-
...restOption
|
|
87
|
-
} = options[index];
|
|
88
|
-
return /*#__PURE__*/React.createElement(MenuItem, _extends({
|
|
89
|
-
style: {
|
|
90
|
-
...style,
|
|
91
|
-
top: `${parseFloat(style.top ? style.top.toString() : '0') + paddingTop}px`
|
|
92
|
-
},
|
|
93
|
-
selected: (value || []).includes(optionValue || ''),
|
|
94
|
-
onClick: e => {
|
|
95
|
-
if (!optionValue) return;
|
|
96
|
-
onSelect(optionValue);
|
|
97
|
-
|
|
98
|
-
// Focus the input.
|
|
99
|
-
// Otherwise, if the max number of selected items equals 1
|
|
100
|
-
// and the user presses enter to select an item,
|
|
101
|
-
// the input will lose focus.
|
|
102
|
-
if (containerRef.current && maxSelectedItems === 1) {
|
|
103
|
-
containerRef.current.focus();
|
|
104
|
-
}
|
|
105
|
-
if (optionOnClick) optionOnClick(e);
|
|
106
|
-
},
|
|
107
|
-
role: "option",
|
|
108
|
-
"aria-selected": (value || []).includes(optionValue || '')
|
|
109
|
-
}, restOption), optionTitle);
|
|
110
|
-
}, [containerRef, maxSelectedItems, onSelect, options, paddingTop, value]);
|
|
111
|
-
return /*#__PURE__*/React.createElement(FixedSizeList, {
|
|
112
|
-
width: "100%",
|
|
113
|
-
height: height,
|
|
114
|
-
itemSize: itemSize,
|
|
115
|
-
itemCount: options.length,
|
|
116
|
-
overscanCount: overscanCount,
|
|
117
|
-
onScroll: ({
|
|
118
|
-
scrollOffset
|
|
119
|
-
}) => scrollHandler(scrollOffset),
|
|
120
|
-
innerElementType: InnerElement
|
|
121
|
-
}, listItemFn);
|
|
122
|
-
};
|
|
123
|
-
SelectList.displayName = 'SelectList';
|
|
124
|
-
export default SelectList;
|
|
125
|
-
//# sourceMappingURL=SelectList.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectList.js","names":["React","useCallback","useMemo","FixedSizeList","useFontSize","useSize","useTheme","useIsMinWidth","useSelectHandler","MenuItem","useRWLoadNext","SelectList","searchVisible","options","visibleCount","overscanCount","threshold","onLoadNext","maxSelectedItems","containerRef","value","onChange","id","size","windowSize","isMinXs","fontSize","document","body","theme","scaleFactor","s","includes","sizes","Number","replace","paddingBottom","paddingEm","menuPaddingVertical","modalBodyPaddingVertical","paddingTop","searchInputHeight","baseHeight","itemSize","menuItemHeight","height","maxHeight","modalHeaderHeight","curHeight","length","count","scrollHandler","itemCount","onSelect","InnerElement","style","innerElementRest","parseFloat","listItemFn","index","title","optionTitle","optionValue","onClick","optionOnClick","restOption","top","toString","e","current","focus","scrollOffset","displayName"],"sources":["../../../src/Select/SelectList.tsx"],"sourcesContent":["import React, { RefObject, useCallback, useMemo } from 'react';\nimport { FixedSizeList } from 'react-window';\nimport { useFontSize, useSize } from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { useSelectHandler } from '@os-design/menu-utils';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\n\nexport interface OptionProps extends MenuItemProps {\n title?: string;\n}\n\ninterface SelectListProps extends WithSize {\n searchVisible: boolean;\n options: OptionProps[];\n visibleCount: number;\n overscanCount: number;\n threshold: number;\n onLoadNext: () => void;\n maxSelectedItems: number | 'all';\n containerRef: RefObject<HTMLDivElement>;\n value?: string[];\n onChange?: (value: string[]) => void;\n id?: string;\n}\n\nconst SelectList: React.FC<SelectListProps> = ({\n searchVisible,\n options,\n visibleCount,\n overscanCount,\n threshold,\n onLoadNext,\n maxSelectedItems,\n containerRef,\n value,\n onChange = () => {},\n id,\n size,\n}) => {\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight = options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count = options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n const onSelect = useSelectHandler({\n value: value || [],\n onChange,\n maxSelectedItems,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style, ...innerElementRest }) => (\n <div\n style={{\n ...style,\n height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`,\n }}\n role='listbox'\n id={id}\n {...innerElementRest}\n />\n ),\n [id, paddingBottom, paddingTop]\n );\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={(value || []).includes(optionValue || '')}\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if the max number of selected items equals 1\n // and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && maxSelectedItems === 1) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={(value || []).includes(optionValue || '')}\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, maxSelectedItems, onSelect, options, paddingTop, value]\n );\n\n return (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n );\n};\n\nSelectList.displayName = 'SelectList';\n\nexport default SelectList;\n"],"mappings":"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"}
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useMemo } from 'react';
|
|
2
|
-
import styled from '@emotion/styled';
|
|
3
|
-
import { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';
|
|
4
|
-
import { ellipsisStyles, resetButtonStyles, transitionStyles } from '@os-design/styles';
|
|
5
|
-
import { omitEmotionProps } from '@os-design/utils';
|
|
6
|
-
import { clr, ThemeOverrider } from '@os-design/theming';
|
|
7
|
-
import { css } from '@emotion/react';
|
|
8
|
-
import Tag from '../Tag';
|
|
9
|
-
import Button from '../Button';
|
|
10
|
-
export const Container = styled.div`
|
|
11
|
-
flex: 1;
|
|
12
|
-
display: flex;
|
|
13
|
-
align-items: center;
|
|
14
|
-
overflow: hidden;
|
|
15
|
-
`;
|
|
16
|
-
const notHasLeftStyles = p => !p.hasLeft && css`
|
|
17
|
-
padding-left: ${p.theme.inputPaddingHorizontal}em;
|
|
18
|
-
`;
|
|
19
|
-
const notHasRightStyles = p => !p.hasRight && !p.unbordered && css`
|
|
20
|
-
padding-right: ${p.theme.inputPaddingHorizontal}em;
|
|
21
|
-
`;
|
|
22
|
-
export const Content = styled('div', omitEmotionProps('hasLeft', 'hasRight', 'unbordered'))`
|
|
23
|
-
flex: 1;
|
|
24
|
-
${notHasLeftStyles};
|
|
25
|
-
${notHasRightStyles};
|
|
26
|
-
${ellipsisStyles};
|
|
27
|
-
`;
|
|
28
|
-
export const Placeholder = styled.span`
|
|
29
|
-
color: ${p => clr(p.theme.inputColorPlaceholder)};
|
|
30
|
-
${ellipsisStyles};
|
|
31
|
-
`;
|
|
32
|
-
const unborderedTitleStyles = p => p.unbordered && css`
|
|
33
|
-
font-weight: 500;
|
|
34
|
-
${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}
|
|
35
|
-
`;
|
|
36
|
-
const disabledStyles = p => p.disabled && css`
|
|
37
|
-
color: ${clr(p.theme.inputDisabledColorText)};
|
|
38
|
-
`;
|
|
39
|
-
export const Title = styled('span', omitEmotionProps('disabled', 'unbordered'))`
|
|
40
|
-
color: ${p => clr(p.theme.colorText)};
|
|
41
|
-
${unborderedTitleStyles};
|
|
42
|
-
${disabledStyles};
|
|
43
|
-
${ellipsisStyles};
|
|
44
|
-
`;
|
|
45
|
-
const ListItem = styled(Tag, omitEmotionProps('disabled'))`
|
|
46
|
-
// Reset tag styles
|
|
47
|
-
padding-top: 0;
|
|
48
|
-
padding-bottom: 0;
|
|
49
|
-
|
|
50
|
-
height: ${p => p.theme.selectToggleListItemHeight}em;
|
|
51
|
-
${disabledStyles};
|
|
52
|
-
`;
|
|
53
|
-
const List = styled.div`
|
|
54
|
-
display: flex;
|
|
55
|
-
flex-wrap: wrap;
|
|
56
|
-
overflow: hidden; // For ellipsis styles
|
|
57
|
-
|
|
58
|
-
margin: 0 ${p => p.theme.selectToggleListItemGap}em
|
|
59
|
-
${p => -p.theme.selectToggleListItemGap}em 0;
|
|
60
|
-
|
|
61
|
-
& > div {
|
|
62
|
-
margin: 0 ${p => p.theme.selectToggleListItemGap}em
|
|
63
|
-
${p => p.theme.selectToggleListItemGap}em 0;
|
|
64
|
-
}
|
|
65
|
-
`;
|
|
66
|
-
const DeleteButton = styled.button`
|
|
67
|
-
${resetButtonStyles};
|
|
68
|
-
cursor: pointer;
|
|
69
|
-
display: inherit;
|
|
70
|
-
font-size: 1em;
|
|
71
|
-
margin-left: 0.2em;
|
|
72
|
-
|
|
73
|
-
background-color: transparent;
|
|
74
|
-
color: ${p => clr(p.theme.selectToggleDeleteButtonColorIcon)};
|
|
75
|
-
|
|
76
|
-
@media (hover: hover) {
|
|
77
|
-
&:hover,
|
|
78
|
-
&:focus {
|
|
79
|
-
color: ${p => clr(p.theme.selectToggleDeleteButtonColorIconHover)};
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
${transitionStyles('color')};
|
|
84
|
-
`;
|
|
85
|
-
const unborderedIconContainerStyles = p => p.unbordered && css`
|
|
86
|
-
padding-top: 0.2em;
|
|
87
|
-
font-size: 0.8em;
|
|
88
|
-
${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}
|
|
89
|
-
`;
|
|
90
|
-
export const IconContainer = styled('span', omitEmotionProps('unbordered', 'disabled'))`
|
|
91
|
-
color: ${p => clr(p.theme.selectColorIcon)};
|
|
92
|
-
line-height: 1;
|
|
93
|
-
${unborderedIconContainerStyles};
|
|
94
|
-
`;
|
|
95
|
-
export const ClearIcon = styled(CloseCircle)`
|
|
96
|
-
transform: scale(1.2) !important;
|
|
97
|
-
`;
|
|
98
|
-
const Addon = styled('span', omitEmotionProps('hasPadding'))`
|
|
99
|
-
display: flex;
|
|
100
|
-
align-items: center;
|
|
101
|
-
user-select: none;
|
|
102
|
-
color: ${p => clr(p.theme.inputColorPlaceholder)};
|
|
103
|
-
|
|
104
|
-
svg {
|
|
105
|
-
transform: scale(1.2);
|
|
106
|
-
}
|
|
107
|
-
`;
|
|
108
|
-
export const LeftAddon = styled(Addon)`
|
|
109
|
-
padding-right: ${p => p.theme.inputAddonPaddingHorizontal}em;
|
|
110
|
-
${p => p.hasPadding && css`
|
|
111
|
-
padding-left: ${p.theme.inputPaddingHorizontal}em;
|
|
112
|
-
`}
|
|
113
|
-
`;
|
|
114
|
-
export const RightAddon = styled(Addon)`
|
|
115
|
-
padding-left: ${p => p.theme.inputAddonPaddingHorizontal}em;
|
|
116
|
-
${p => p.hasPadding && css`
|
|
117
|
-
padding-right: ${p.theme.inputPaddingHorizontal}em;
|
|
118
|
-
`}
|
|
119
|
-
`;
|
|
120
|
-
const SelectToggle = ({
|
|
121
|
-
selectedItems,
|
|
122
|
-
onDelete,
|
|
123
|
-
onClear,
|
|
124
|
-
opened,
|
|
125
|
-
multiple,
|
|
126
|
-
left,
|
|
127
|
-
leftHasPadding = false,
|
|
128
|
-
right,
|
|
129
|
-
rightHasPadding = false,
|
|
130
|
-
placeholder,
|
|
131
|
-
unbordered,
|
|
132
|
-
loading,
|
|
133
|
-
disabled,
|
|
134
|
-
clearVisible,
|
|
135
|
-
locale
|
|
136
|
-
}) => {
|
|
137
|
-
const renderContent = useCallback(() => {
|
|
138
|
-
if (selectedItems.length === 0) {
|
|
139
|
-
return /*#__PURE__*/React.createElement(Placeholder, null, placeholder);
|
|
140
|
-
}
|
|
141
|
-
if (multiple) {
|
|
142
|
-
return /*#__PURE__*/React.createElement(List, null, selectedItems.map(({
|
|
143
|
-
title,
|
|
144
|
-
value
|
|
145
|
-
}) => /*#__PURE__*/React.createElement(ListItem, {
|
|
146
|
-
key: value,
|
|
147
|
-
disabled: disabled,
|
|
148
|
-
right: !disabled ? /*#__PURE__*/React.createElement(DeleteButton, {
|
|
149
|
-
onClick: e => {
|
|
150
|
-
onDelete(value);
|
|
151
|
-
e.stopPropagation();
|
|
152
|
-
},
|
|
153
|
-
onKeyDown: e => e.stopPropagation(),
|
|
154
|
-
"aria-label": `${locale.deleteLabel} ${title}`,
|
|
155
|
-
"aria-hidden": true
|
|
156
|
-
}, /*#__PURE__*/React.createElement(Close, null)) : undefined,
|
|
157
|
-
"aria-hidden": true
|
|
158
|
-
}, title)));
|
|
159
|
-
}
|
|
160
|
-
return /*#__PURE__*/React.createElement(Title, {
|
|
161
|
-
disabled: disabled,
|
|
162
|
-
unbordered: unbordered
|
|
163
|
-
}, selectedItems[0].title);
|
|
164
|
-
}, [selectedItems, multiple, disabled, unbordered, placeholder, locale.deleteLabel, onDelete]);
|
|
165
|
-
const showClearButton = useMemo(() => clearVisible && selectedItems.length > 0, [clearVisible, selectedItems.length]);
|
|
166
|
-
const rightValue = useMemo(() => {
|
|
167
|
-
if (loading) return /*#__PURE__*/React.createElement(Loading, null);
|
|
168
|
-
if (showClearButton) {
|
|
169
|
-
return /*#__PURE__*/React.createElement(Button, {
|
|
170
|
-
type: "ghost",
|
|
171
|
-
wide: "never",
|
|
172
|
-
size: "small",
|
|
173
|
-
disabled: disabled,
|
|
174
|
-
onClick: e => {
|
|
175
|
-
onClear();
|
|
176
|
-
e.stopPropagation();
|
|
177
|
-
},
|
|
178
|
-
onKeyDown: e => {
|
|
179
|
-
if (e.key === 'Enter') onClear();
|
|
180
|
-
e.stopPropagation();
|
|
181
|
-
},
|
|
182
|
-
"aria-label": locale.clearLabel
|
|
183
|
-
}, /*#__PURE__*/React.createElement(ClearIcon, null));
|
|
184
|
-
}
|
|
185
|
-
return right || /*#__PURE__*/React.createElement(IconContainer, {
|
|
186
|
-
unbordered: unbordered,
|
|
187
|
-
disabled: disabled
|
|
188
|
-
}, opened ? /*#__PURE__*/React.createElement(Up, null) : /*#__PURE__*/React.createElement(Down, null));
|
|
189
|
-
}, [disabled, loading, locale.clearLabel, onClear, opened, right, showClearButton, unbordered]);
|
|
190
|
-
const rightHasPaddingValue = useMemo(() => {
|
|
191
|
-
if (loading) return true;
|
|
192
|
-
if (showClearButton) return false;
|
|
193
|
-
return right ? rightHasPadding : true;
|
|
194
|
-
}, [loading, right, rightHasPadding, showClearButton]);
|
|
195
|
-
return /*#__PURE__*/React.createElement(Container, null, left && /*#__PURE__*/React.createElement(ThemeOverrider, {
|
|
196
|
-
overrides: t => ({
|
|
197
|
-
buttonPaddingHorizontal: 0.8,
|
|
198
|
-
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
199
|
-
})
|
|
200
|
-
}, /*#__PURE__*/React.createElement(LeftAddon, {
|
|
201
|
-
hasPadding: leftHasPadding
|
|
202
|
-
}, left)), /*#__PURE__*/React.createElement(Content, {
|
|
203
|
-
hasLeft: !!left,
|
|
204
|
-
hasRight: !!right,
|
|
205
|
-
unbordered: unbordered
|
|
206
|
-
}, renderContent()), rightValue && /*#__PURE__*/React.createElement(ThemeOverrider, {
|
|
207
|
-
overrides: t => ({
|
|
208
|
-
buttonPaddingHorizontal: 0.8,
|
|
209
|
-
baseHeight: t.selectToggleListItemHeight / t.sizes.small
|
|
210
|
-
})
|
|
211
|
-
}, /*#__PURE__*/React.createElement(RightAddon, {
|
|
212
|
-
hasPadding: rightHasPaddingValue
|
|
213
|
-
}, rightValue)));
|
|
214
|
-
};
|
|
215
|
-
SelectToggle.displayName = 'SelectToggle';
|
|
216
|
-
export default SelectToggle;
|
|
217
|
-
//# sourceMappingURL=SelectToggle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectToggle.js","names":["React","useCallback","useMemo","styled","Up","Down","Loading","Close","CloseCircle","ellipsisStyles","resetButtonStyles","transitionStyles","omitEmotionProps","clr","ThemeOverrider","css","Tag","Button","Container","div","notHasLeftStyles","p","hasLeft","theme","inputPaddingHorizontal","notHasRightStyles","hasRight","unbordered","Content","Placeholder","span","inputColorPlaceholder","unborderedTitleStyles","disabled","colorPrimary","disabledStyles","inputDisabledColorText","Title","colorText","ListItem","selectToggleListItemHeight","List","selectToggleListItemGap","DeleteButton","button","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","unborderedIconContainerStyles","IconContainer","selectColorIcon","ClearIcon","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","SelectToggle","selectedItems","onDelete","onClear","opened","multiple","left","leftHasPadding","right","rightHasPadding","placeholder","loading","clearVisible","locale","renderContent","length","map","title","value","e","stopPropagation","deleteLabel","undefined","showClearButton","rightValue","key","clearLabel","rightHasPaddingValue","t","buttonPaddingHorizontal","baseHeight","sizes","small","displayName"],"sources":["../../../src/Select/SelectToggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport Tag from '../Tag';\nimport Button from '../Button';\nimport { SelectLocale } from './utils/defaultLocale';\n\ninterface SelectToggleProps {\n selectedItems: Array<{ title: string; value: string }>;\n onDelete: (value: string) => void;\n onClear: () => void;\n opened: boolean;\n multiple: boolean;\n left?: React.ReactNode;\n leftHasPadding?: boolean;\n right?: React.ReactNode;\n rightHasPadding?: boolean;\n placeholder?: string;\n unbordered?: boolean;\n loading?: boolean;\n disabled?: boolean;\n clearVisible?: boolean;\n locale: SelectLocale;\n}\n\nexport const Container = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n !p.unbordered &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n unbordered?: boolean;\n}\nexport const Content = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight', 'unbordered')\n)<ContentProps>`\n flex: 1;\n ${notHasLeftStyles};\n ${notHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst unborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${unborderedTitleStyles};\n ${disabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ListItemProps = Pick<SelectToggleProps, 'disabled'>;\nconst ListItem = styled(Tag, omitEmotionProps('disabled'))<ListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${disabledStyles};\n`;\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst unborderedIconContainerStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface IconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const IconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<IconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${unborderedIconContainerStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst SelectToggle: React.FC<SelectToggleProps> = ({\n selectedItems,\n onDelete,\n onClear,\n opened,\n multiple,\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n unbordered,\n loading,\n disabled,\n clearVisible,\n locale,\n}) => {\n const renderContent = useCallback(() => {\n if (selectedItems.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n if (multiple) {\n return (\n <List>\n {selectedItems.map(({ title, value }) => (\n <ListItem\n key={value}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(value);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {selectedItems[0].title}\n </Title>\n );\n }, [\n selectedItems,\n multiple,\n disabled,\n unbordered,\n placeholder,\n locale.deleteLabel,\n onDelete,\n ]);\n\n const showClearButton = useMemo(\n () => clearVisible && selectedItems.length > 0,\n [clearVisible, selectedItems.length]\n );\n\n const rightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (showClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n onClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <IconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </IconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n onClear,\n opened,\n right,\n showClearButton,\n unbordered,\n ]);\n\n const rightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (showClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, showClearButton]);\n\n return (\n <Container>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <Content hasLeft={!!left} hasRight={!!right} unbordered={unbordered}>\n {renderContent()}\n </Content>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </Container>\n );\n};\n\nSelectToggle.displayName = 'SelectToggle';\n\nexport default SelectToggle;\n"],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import React, { RefObject } from 'react';
|
|
2
|
-
import { WithSize } from '@os-design/styles';
|
|
3
|
-
import { MenuItemProps } from '../MenuItem';
|
|
4
|
-
export interface OptionProps extends MenuItemProps {
|
|
5
|
-
title?: string;
|
|
6
|
-
}
|
|
7
|
-
interface SelectListProps extends WithSize {
|
|
8
|
-
searchVisible: boolean;
|
|
9
|
-
options: OptionProps[];
|
|
10
|
-
visibleCount: number;
|
|
11
|
-
overscanCount: number;
|
|
12
|
-
threshold: number;
|
|
13
|
-
onLoadNext: () => void;
|
|
14
|
-
maxSelectedItems: number | 'all';
|
|
15
|
-
containerRef: RefObject<HTMLDivElement>;
|
|
16
|
-
value?: string[];
|
|
17
|
-
onChange?: (value: string[]) => void;
|
|
18
|
-
id?: string;
|
|
19
|
-
}
|
|
20
|
-
declare const SelectList: React.FC<SelectListProps>;
|
|
21
|
-
export default SelectList;
|
|
22
|
-
//# sourceMappingURL=SelectList.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectList.d.ts","sourceRoot":"","sources":["../../../src/Select/SelectList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAC;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAgB,SAAQ,QAAQ;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAkLzC,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { SelectLocale } from './utils/defaultLocale';
|
|
3
|
-
interface SelectToggleProps {
|
|
4
|
-
selectedItems: Array<{
|
|
5
|
-
title: string;
|
|
6
|
-
value: string;
|
|
7
|
-
}>;
|
|
8
|
-
onDelete: (value: string) => void;
|
|
9
|
-
onClear: () => void;
|
|
10
|
-
opened: boolean;
|
|
11
|
-
multiple: boolean;
|
|
12
|
-
left?: React.ReactNode;
|
|
13
|
-
leftHasPadding?: boolean;
|
|
14
|
-
right?: React.ReactNode;
|
|
15
|
-
rightHasPadding?: boolean;
|
|
16
|
-
placeholder?: string;
|
|
17
|
-
unbordered?: boolean;
|
|
18
|
-
loading?: boolean;
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
clearVisible?: boolean;
|
|
21
|
-
locale: SelectLocale;
|
|
22
|
-
}
|
|
23
|
-
export declare const Container: import("@emotion/styled").StyledComponent<{
|
|
24
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
25
|
-
as?: React.ElementType<any> | undefined;
|
|
26
|
-
}, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
27
|
-
interface ContentProps {
|
|
28
|
-
hasLeft?: boolean;
|
|
29
|
-
hasRight?: boolean;
|
|
30
|
-
unbordered?: boolean;
|
|
31
|
-
}
|
|
32
|
-
export declare const Content: import("@emotion/styled").StyledComponent<{
|
|
33
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
34
|
-
as?: React.ElementType<any> | undefined;
|
|
35
|
-
} & ContentProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
36
|
-
export declare const Placeholder: import("@emotion/styled").StyledComponent<{
|
|
37
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
38
|
-
as?: React.ElementType<any> | undefined;
|
|
39
|
-
}, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
40
|
-
type TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;
|
|
41
|
-
export declare const Title: import("@emotion/styled").StyledComponent<{
|
|
42
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
43
|
-
as?: React.ElementType<any> | undefined;
|
|
44
|
-
} & TitleProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
45
|
-
interface IconContainerProps {
|
|
46
|
-
unbordered?: boolean;
|
|
47
|
-
disabled?: boolean;
|
|
48
|
-
}
|
|
49
|
-
export declare const IconContainer: import("@emotion/styled").StyledComponent<{
|
|
50
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
51
|
-
as?: React.ElementType<any> | undefined;
|
|
52
|
-
} & IconContainerProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
53
|
-
export declare const ClearIcon: import("@emotion/styled").StyledComponent<import("@os-design/icons").IconProps & React.RefAttributes<SVGSVGElement> & {
|
|
54
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
55
|
-
}, {}, {}>;
|
|
56
|
-
interface AddonProps {
|
|
57
|
-
hasPadding: boolean;
|
|
58
|
-
}
|
|
59
|
-
export declare const LeftAddon: import("@emotion/styled").StyledComponent<{
|
|
60
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
61
|
-
as?: React.ElementType<any> | undefined;
|
|
62
|
-
} & AddonProps & React.ClassAttributes<HTMLSpanElement> & React.HTMLAttributes<HTMLSpanElement> & {
|
|
63
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
64
|
-
}, {}, {}>;
|
|
65
|
-
export declare const RightAddon: import("@emotion/styled").StyledComponent<{
|
|
66
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
67
|
-
as?: React.ElementType<any> | undefined;
|
|
68
|
-
} & AddonProps & React.ClassAttributes<HTMLSpanElement> & React.HTMLAttributes<HTMLSpanElement> & {
|
|
69
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
70
|
-
}, {}, {}>;
|
|
71
|
-
declare const SelectToggle: React.FC<SelectToggleProps>;
|
|
72
|
-
export default SelectToggle;
|
|
73
|
-
//# sourceMappingURL=SelectToggle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectToggle.d.ts","sourceRoot":"","sources":["../../../src/Select/SelectToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAapD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,UAAU,iBAAiB;IACzB,aAAa,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,eAAO,MAAM,SAAS;;;qFAKrB,CAAC;AAeF,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AACD,eAAO,MAAM,OAAO;;;oGAQnB,CAAC;AAEF,eAAO,MAAM,WAAW;;;uFAGvB,CAAC;AAeF,KAAK,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;AACrE,eAAO,MAAM,KAAK;;;oGAQjB,CAAC;AAsDF,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,eAAO,MAAM,aAAa;;;4GAOzB,CAAC;AAEF,eAAO,MAAM,SAAS;;UAErB,CAAC;AAEF,UAAU,UAAU;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAYD,eAAO,MAAM,SAAS;;;;;UAOrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;UAOtB,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqJ7C,CAAC;AAIF,eAAe,YAAY,CAAC"}
|