@gen-epix/ui-core-form 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +287 -0
- package/dist/@types/ui-form.d.ts +2 -0
- package/dist/@types/vite-env.d.ts +2 -0
- package/dist/@types/yup.d.ts +30 -0
- package/dist/_chunks/Autocomplete.js +229 -0
- package/dist/_chunks/Autocomplete.js.map +1 -0
- package/dist/_chunks/DatePicker.js +126 -0
- package/dist/_chunks/DatePicker.js.map +1 -0
- package/dist/_chunks/FormUtil.js +1350 -0
- package/dist/_chunks/FormUtil.js.map +1 -0
- package/dist/_chunks/RichTextEditor.js +22721 -0
- package/dist/_chunks/RichTextEditor.js.map +1 -0
- package/dist/_chunks/TransferList.js +453 -0
- package/dist/_chunks/TransferList.js.map +1 -0
- package/dist/_chunks/UploadButton.js +91 -0
- package/dist/_chunks/UploadButton.js.map +1 -0
- package/dist/_chunks/classnames.js +33 -0
- package/dist/_chunks/classnames.js.map +1 -0
- package/dist/_chunks/index.esm.js +348 -0
- package/dist/_chunks/index.esm.js.map +1 -0
- package/dist/_chunks/isEqual.js +348 -0
- package/dist/_chunks/isEqual.js.map +1 -0
- package/dist/_chunks/isObjectLike.js +304 -0
- package/dist/_chunks/isObjectLike.js.map +1 -0
- package/dist/_chunks/isValid.js +28 -0
- package/dist/_chunks/isValid.js.map +1 -0
- package/dist/_chunks/rolldown-runtime.js +13 -0
- package/dist/_chunks/sv.js +434 -0
- package/dist/_chunks/sv.js.map +1 -0
- package/dist/components/fields/Autocomplete/Autocomplete.d.ts +19 -0
- package/dist/components/fields/Autocomplete/AutocompleteSelectAllContext.d.ts +2 -0
- package/dist/components/fields/Autocomplete/AutocompleteSelectAllPaper.d.ts +2 -0
- package/dist/components/fields/Autocomplete/index.d.ts +1 -0
- package/dist/components/fields/Autocomplete/index.js +2 -0
- package/dist/components/fields/CheckboxGroup/CheckboxGroup.d.ts +18 -0
- package/dist/components/fields/CheckboxGroup/index.d.ts +1 -0
- package/dist/components/fields/CheckboxGroup/index.js +114 -0
- package/dist/components/fields/CheckboxGroup/index.js.map +1 -0
- package/dist/components/fields/DatePicker/DatePicker.d.ts +15 -0
- package/dist/components/fields/DatePicker/DatePickerInputAdornment.d.ts +8 -0
- package/dist/components/fields/DatePicker/index.d.ts +1 -0
- package/dist/components/fields/DatePicker/index.js +2 -0
- package/dist/components/fields/DateRangePicker/DateRangePicker.d.ts +17 -0
- package/dist/components/fields/DateRangePicker/index.d.ts +1 -0
- package/dist/components/fields/DateRangePicker/index.js +1648 -0
- package/dist/components/fields/DateRangePicker/index.js.map +1 -0
- package/dist/components/fields/NumberField/NumberField.d.ts +19 -0
- package/dist/components/fields/NumberField/index.d.ts +1 -0
- package/dist/components/fields/NumberField/index.js +180 -0
- package/dist/components/fields/NumberField/index.js.map +1 -0
- package/dist/components/fields/NumberRangeInput/NumberRangeInput.d.ts +15 -0
- package/dist/components/fields/NumberRangeInput/index.d.ts +1 -0
- package/dist/components/fields/NumberRangeInput/index.js +192 -0
- package/dist/components/fields/NumberRangeInput/index.js.map +1 -0
- package/dist/components/fields/RadioGroup/RadioGroup.d.ts +16 -0
- package/dist/components/fields/RadioGroup/index.d.ts +1 -0
- package/dist/components/fields/RadioGroup/index.js +72 -0
- package/dist/components/fields/RadioGroup/index.js.map +1 -0
- package/dist/components/fields/RichTextEditor/RichTextEditor.d.ts +13 -0
- package/dist/components/fields/RichTextEditor/RichTextEditorContent.d.ts +4 -0
- package/dist/components/fields/RichTextEditor/index.d.ts +2 -0
- package/dist/components/fields/RichTextEditor/index.js +2 -0
- package/dist/components/fields/RichTextEditor/useRichTextEditorExtensions.d.ts +10 -0
- package/dist/components/fields/Select/Select.d.ts +16 -0
- package/dist/components/fields/Select/index.d.ts +1 -0
- package/dist/components/fields/Select/index.js +129 -0
- package/dist/components/fields/Select/index.js.map +1 -0
- package/dist/components/fields/Switch/Switch.d.ts +13 -0
- package/dist/components/fields/Switch/index.d.ts +1 -0
- package/dist/components/fields/Switch/index.js +68 -0
- package/dist/components/fields/Switch/index.js.map +1 -0
- package/dist/components/fields/TextField/TextField.d.ts +18 -0
- package/dist/components/fields/TextField/index.d.ts +1 -0
- package/dist/components/fields/TextField/index.js +108 -0
- package/dist/components/fields/TextField/index.js.map +1 -0
- package/dist/components/fields/ToggleButtonGroup/ToggleButtonGroup.d.ts +14 -0
- package/dist/components/fields/ToggleButtonGroup/index.d.ts +1 -0
- package/dist/components/fields/ToggleButtonGroup/index.js +57 -0
- package/dist/components/fields/ToggleButtonGroup/index.js.map +1 -0
- package/dist/components/fields/TransferList/TransferList.d.ts +16 -0
- package/dist/components/fields/TransferList/index.d.ts +1 -0
- package/dist/components/fields/TransferList/index.js +2 -0
- package/dist/components/fields/UploadButton/UploadButton.d.ts +15 -0
- package/dist/components/fields/UploadButton/index.d.ts +1 -0
- package/dist/components/fields/UploadButton/index.js +2 -0
- package/dist/components/helpers/FormFieldHelperText/FormFieldHelperText.d.ts +8 -0
- package/dist/components/helpers/FormFieldHelperText/index.d.ts +1 -0
- package/dist/components/helpers/FormFieldHelperText/index.js +50 -0
- package/dist/components/helpers/FormFieldHelperText/index.js.map +1 -0
- package/dist/components/helpers/FormFieldLoadingIndicator/FormFieldLoadingIndicator.d.ts +4 -0
- package/dist/components/helpers/FormFieldLoadingIndicator/index.d.ts +1 -0
- package/dist/components/helpers/FormFieldLoadingIndicator/index.js +16 -0
- package/dist/components/helpers/FormFieldLoadingIndicator/index.js.map +1 -0
- package/dist/components/helpers/GenericForm/GenericForm.d.ts +18 -0
- package/dist/components/helpers/GenericForm/index.d.ts +1 -0
- package/dist/components/helpers/GenericForm/index.js +156 -0
- package/dist/components/helpers/GenericForm/index.js.map +1 -0
- package/dist/hooks/useIsFormFieldRequiredFromSchema/index.d.ts +1 -0
- package/dist/hooks/useIsFormFieldRequiredFromSchema/index.js +18 -0
- package/dist/hooks/useIsFormFieldRequiredFromSchema/index.js.map +1 -0
- package/dist/hooks/useIsFormFieldRequiredFromSchema/useIsFormFieldRequiredFromSchema.d.ts +4 -0
- package/dist/locale/en.json +97 -0
- package/dist/locale/nl.json +97 -0
- package/dist/models/form.d.ts +112 -0
- package/dist/models/form.js +8 -0
- package/dist/models/form.js.map +1 -0
- package/dist/setup/setup.d.ts +1 -0
- package/dist/setup/setup.js +166 -0
- package/dist/setup/setup.js.map +1 -0
- package/dist/utils/FormUtil/FormUtil.d.ts +19 -0
- package/dist/utils/FormUtil/index.d.ts +1 -0
- package/dist/utils/FormUtil/index.js +2 -0
- package/dist/utils/SchemaUtil/SchemaUtil.d.ts +9 -0
- package/dist/utils/SchemaUtil/index.d.ts +1 -0
- package/dist/utils/SchemaUtil/index.js +30 -0
- package/dist/utils/SchemaUtil/index.js.map +1 -0
- package/package.json +207 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { n as e } from "./rolldown-runtime.js";
|
|
2
|
+
import { p as t, t as n } from "./FormUtil.js";
|
|
3
|
+
import { i as r, t as i } from "./index.esm.js";
|
|
4
|
+
import { FormFieldHelperText as a } from "../components/helpers/FormFieldHelperText/index.js";
|
|
5
|
+
import { FormFieldLoadingIndicator as o } from "../components/helpers/FormFieldLoadingIndicator/index.js";
|
|
6
|
+
import { t as s } from "./classnames.js";
|
|
7
|
+
import { t as c } from "./sv.js";
|
|
8
|
+
import { DATE_FORMAT as l } from "@gen-epix/ui-core/constants/date";
|
|
9
|
+
import { useCallback as u, useMemo as d, useRef as f } from "react";
|
|
10
|
+
import { useTranslation as p } from "react-i18next";
|
|
11
|
+
import { FormControl as m, FormHelperText as h, IconButton as g, InputAdornment as _ } from "@mui/material";
|
|
12
|
+
import v from "@mui/icons-material/Clear";
|
|
13
|
+
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
14
|
+
import { TestIdUtil as x } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
15
|
+
import { DatePicker as S, DateTimePicker as C, LocalizationProvider as w } from "@mui/x-date-pickers";
|
|
16
|
+
import { AdapterDateFns as T } from "@mui/x-date-pickers/AdapterDateFns";
|
|
17
|
+
//#region src/components/fields/DatePicker/DatePickerInputAdornment.tsx
|
|
18
|
+
var E = /* @__PURE__ */ e(s(), 1), D = ({ children: e, disabled: t, loading: n, onResetButtonClickRef: r, ...i }) => {
|
|
19
|
+
let { t: a } = p();
|
|
20
|
+
return /* @__PURE__ */ b(_, {
|
|
21
|
+
...i,
|
|
22
|
+
children: [!t && !n && /* @__PURE__ */ y(g, {
|
|
23
|
+
...x.createAttributes("DatePicker-reset"),
|
|
24
|
+
"aria-label": a`Clear date field`,
|
|
25
|
+
className: "DatePicker-resetButton",
|
|
26
|
+
onClick: () => r.current(),
|
|
27
|
+
sx: { "& svg": { fontSize: "16px" } },
|
|
28
|
+
tabIndex: -1,
|
|
29
|
+
children: /* @__PURE__ */ y(v, {})
|
|
30
|
+
}), e]
|
|
31
|
+
});
|
|
32
|
+
}, O = ({ dateFormat: e = l.DATE, disabled: s = !1, infoMessage: p, label: g, loading: _ = !1, name: v, onChange: O, required: k = !1, warningMessage: A }) => {
|
|
33
|
+
let { control: j, formState: { errors: M } } = r(), N = n.getFieldErrorMessage(M, v), P = !!N, F = !!A && !P, I = f(null), L = f(() => void 0), R = u((e) => (t) => {
|
|
34
|
+
O && O(t), e(t);
|
|
35
|
+
}, [O]), z = d(() => ({
|
|
36
|
+
...t,
|
|
37
|
+
formatLong: c.formatLong
|
|
38
|
+
}), []), B = d(() => {
|
|
39
|
+
switch (e) {
|
|
40
|
+
case l.DATE:
|
|
41
|
+
case l.DATE_TIME: return;
|
|
42
|
+
case l.YEAR: return ["year"];
|
|
43
|
+
case l.YEAR_MONTH: return ["year", "month"];
|
|
44
|
+
default: throw Error(`Unsupported date format: ${e}`);
|
|
45
|
+
}
|
|
46
|
+
}, [e]), V = e === l.DATE_TIME ? C : S;
|
|
47
|
+
return /* @__PURE__ */ y(i, {
|
|
48
|
+
control: j,
|
|
49
|
+
defaultValue: "",
|
|
50
|
+
name: v,
|
|
51
|
+
render: u(({ field: { onBlur: t, onChange: n, ref: r, value: i } }) => (r({ focus: () => {
|
|
52
|
+
I?.current?.focus();
|
|
53
|
+
} }), L.current = () => {
|
|
54
|
+
n(null);
|
|
55
|
+
}, /* @__PURE__ */ b(m, {
|
|
56
|
+
...x.createAttributes("DatePicker", {
|
|
57
|
+
label: g,
|
|
58
|
+
name: v
|
|
59
|
+
}),
|
|
60
|
+
fullWidth: !0,
|
|
61
|
+
sx: {
|
|
62
|
+
"&:hover .DatePicker-resetButton, &:focus-within .DatePicker-resetButton": { display: "initial" },
|
|
63
|
+
"& .DatePicker-resetButton": { display: "none" }
|
|
64
|
+
},
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ y(w, {
|
|
67
|
+
adapterLocale: z,
|
|
68
|
+
dateAdapter: T,
|
|
69
|
+
children: /* @__PURE__ */ y(V, {
|
|
70
|
+
disabled: s || _,
|
|
71
|
+
inputRef: I,
|
|
72
|
+
label: g,
|
|
73
|
+
loading: _,
|
|
74
|
+
onChange: R(n),
|
|
75
|
+
openTo: e === l.DATE_TIME ? void 0 : "year",
|
|
76
|
+
slotProps: { textField: {
|
|
77
|
+
className: (0, E.default)({ "Mui-warning": F }),
|
|
78
|
+
error: P,
|
|
79
|
+
onBlur: t,
|
|
80
|
+
slotProps: { inputLabel: { required: k } },
|
|
81
|
+
variant: "outlined"
|
|
82
|
+
} },
|
|
83
|
+
slots: { inputAdornment: (e) => /* @__PURE__ */ y(D, {
|
|
84
|
+
...e,
|
|
85
|
+
disabled: s,
|
|
86
|
+
loading: _,
|
|
87
|
+
onResetButtonClickRef: L
|
|
88
|
+
}) },
|
|
89
|
+
value: i,
|
|
90
|
+
views: B
|
|
91
|
+
})
|
|
92
|
+
}),
|
|
93
|
+
!!_ && /* @__PURE__ */ y(o, {}),
|
|
94
|
+
/* @__PURE__ */ y(h, {
|
|
95
|
+
sx: { ml: 0 },
|
|
96
|
+
children: /* @__PURE__ */ y(a, {
|
|
97
|
+
errorMessage: N,
|
|
98
|
+
infoMessage: p,
|
|
99
|
+
noIndent: !0,
|
|
100
|
+
warningMessage: A
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
]
|
|
104
|
+
})), [
|
|
105
|
+
V,
|
|
106
|
+
z,
|
|
107
|
+
e,
|
|
108
|
+
s,
|
|
109
|
+
N,
|
|
110
|
+
P,
|
|
111
|
+
F,
|
|
112
|
+
p,
|
|
113
|
+
g,
|
|
114
|
+
_,
|
|
115
|
+
v,
|
|
116
|
+
R,
|
|
117
|
+
k,
|
|
118
|
+
B,
|
|
119
|
+
A
|
|
120
|
+
])
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
//#endregion
|
|
124
|
+
export { O as t };
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../src/components/fields/DatePicker/DatePickerInputAdornment.tsx","../../src/components/fields/DatePicker/DatePicker.tsx"],"sourcesContent":["import type { RefObject } from 'react';\nimport type { InputAdornmentProps } from '@mui/material';\nimport {\n IconButton,\n InputAdornment,\n} from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { useTranslation } from 'react-i18next';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\n\nexport type DatePickerInputAdornmentProps = {\n readonly disabled: boolean;\n readonly loading: boolean;\n readonly onResetButtonClickRef: RefObject<() => void>;\n} & InputAdornmentProps;\n\nexport const DatePickerInputAdornment = ({\n children,\n disabled,\n loading,\n onResetButtonClickRef,\n ...props\n}: DatePickerInputAdornmentProps) => {\n const { t } = useTranslation();\n return (\n <InputAdornment {...props}>\n {!disabled && !loading && (\n <IconButton\n {...TestIdUtil.createAttributes('DatePicker-reset')}\n aria-label={t`Clear date field`}\n className={'DatePicker-resetButton'}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={() => onResetButtonClickRef.current()}\n sx={{\n '& svg': {\n fontSize: '16px',\n },\n }}\n tabIndex={-1}\n >\n <ClearIcon />\n </IconButton>\n )}\n {children}\n </InputAdornment>\n );\n};\n","import type { ReactElement } from 'react';\nimport {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport {\n FormControl,\n FormHelperText,\n} from '@mui/material';\nimport type {\n ControllerRenderProps,\n FieldValues,\n Path,\n PathValue,\n UseControllerReturn,\n} from 'react-hook-form';\nimport {\n Controller,\n useFormContext,\n} from 'react-hook-form';\nimport type {\n DatePickerProps as MuiDatePickerProps,\n DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers';\nimport {\n LocalizationProvider,\n DatePicker as MuiDatePicker,\n DateTimePicker as MuiDateTimePicker,\n} from '@mui/x-date-pickers';\nimport classNames from 'classnames';\nimport type { Locale } from 'date-fns';\nimport {\n enUS,\n sv,\n} from 'date-fns/locale';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport { FormUtil } from '../../../utils/FormUtil';\nimport { FormFieldHelperText } from '../../helpers/FormFieldHelperText';\nimport { FormFieldLoadingIndicator } from '../../helpers/FormFieldLoadingIndicator';\n\nimport { DatePickerInputAdornment } from './DatePickerInputAdornment';\n\n\nexport type DatePickerProps<TFieldValues extends FieldValues, TName extends Path<TFieldValues> = Path<TFieldValues>> = {\n readonly dateFormat?: typeof DATE_FORMAT[keyof typeof DATE_FORMAT];\n readonly disabled?: boolean;\n readonly infoMessage?: string;\n readonly label: string;\n readonly loading?: boolean;\n readonly name: TName;\n readonly onChange?: (value: Date) => void;\n readonly required?: boolean;\n readonly warningMessage?: string;\n};\n\nexport const DatePicker = <TFieldValues extends FieldValues, TName extends Path<TFieldValues> = Path<TFieldValues>>({\n dateFormat = DATE_FORMAT.DATE,\n disabled = false,\n infoMessage,\n label,\n loading = false,\n name,\n onChange: onChangeProp,\n required = false,\n warningMessage,\n}: DatePickerProps<TFieldValues, TName>): ReactElement => {\n const { control, formState: { errors } } = useFormContext<TFieldValues>();\n const errorMessage = FormUtil.getFieldErrorMessage(errors, name);\n const hasError = !!errorMessage;\n const hasWarning = !!warningMessage && !hasError;\n const inputRef = useRef<HTMLInputElement>(null);\n const onResetButtonClickRef = useRef<() => void>(() => undefined);\n\n const onMuiDatePickerChange = useCallback((onChange: ControllerRenderProps<TFieldValues, TName>['onChange']) =>\n (newValue: Date) => {\n if (onChangeProp) {\n onChangeProp(newValue);\n }\n onChange(newValue);\n }\n , [onChangeProp]);\n\n const customLocale = useMemo<Locale>(() => {\n /**\n * Use everything from enUS, but format dates the Swedish way (ISO 8601)\n */\n return {\n ...enUS,\n formatLong: sv.formatLong,\n };\n }, []);\n\n const views = useMemo<MuiDateTimePickerProps['views']>(() => {\n switch (dateFormat) {\n case DATE_FORMAT.DATE:\n case DATE_FORMAT.DATE_TIME:\n return undefined;\n case DATE_FORMAT.YEAR:\n return ['year'];\n case DATE_FORMAT.YEAR_MONTH:\n return ['year', 'month'];\n default:\n throw new Error(`Unsupported date format: ${dateFormat}`);\n }\n }, [dateFormat]);\n\n const MuiComponent = dateFormat === DATE_FORMAT.DATE_TIME ? MuiDateTimePicker : MuiDatePicker;\n\n const renderController = useCallback(({ field: { onBlur, onChange, ref, value } }: UseControllerReturn<TFieldValues, TName>) => {\n ref({\n focus: () => {\n inputRef?.current?.focus();\n },\n });\n\n onResetButtonClickRef.current = () => {\n onChange(null);\n };\n\n return (\n <FormControl\n {...TestIdUtil.createAttributes('DatePicker', { label, name })}\n fullWidth\n sx={{\n '&:hover .DatePicker-resetButton, &:focus-within .DatePicker-resetButton': {\n display: 'initial',\n },\n '& .DatePicker-resetButton': {\n display: 'none',\n },\n }}\n >\n <LocalizationProvider\n adapterLocale={customLocale}\n dateAdapter={AdapterDateFns}\n >\n <MuiComponent\n disabled={disabled || loading}\n inputRef={inputRef}\n label={label}\n loading={loading}\n onChange={onMuiDatePickerChange(onChange)}\n openTo={dateFormat === DATE_FORMAT.DATE_TIME ? undefined : 'year'}\n slotProps={{\n textField: {\n className: classNames({ 'Mui-warning': hasWarning }),\n error: hasError,\n onBlur,\n slotProps: {\n inputLabel: {\n required,\n },\n },\n variant: 'outlined',\n },\n }}\n slots={{\n inputAdornment: (props) => (\n <DatePickerInputAdornment\n {...props}\n disabled={disabled}\n loading={loading}\n onResetButtonClickRef={onResetButtonClickRef}\n />\n ),\n }}\n value={value}\n views={views as MuiDatePickerProps['views']}\n />\n </LocalizationProvider>\n {!!loading && <FormFieldLoadingIndicator />}\n <FormHelperText sx={{ ml: 0 }}>\n <FormFieldHelperText\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n noIndent\n warningMessage={warningMessage}\n />\n </FormHelperText>\n </FormControl>\n );\n }, [MuiComponent, customLocale, dateFormat, disabled, errorMessage, hasError, hasWarning, infoMessage, label, loading, name, onMuiDatePickerChange, required, views, warningMessage]);\n\n return (\n <Controller\n control={control}\n defaultValue={'' as PathValue<TFieldValues, TName>}\n name={name}\n render={renderController}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;mCAgBA,KAAA,EAAA,aAAA,aAAA,YAAA,0BAAA,GAAA,QAAA;;;;;;;;;;;;;;AA8BA,GCaa,KAAuG,EAClH,gBAAa,EAAY,MACzB,cAAW,IACX,gBACA,UACA,aAAU,IACV,SACA,UAAU,GACV,cAAW,IACX,wBACwD;CACxD,IAAM,EAAE,YAAS,WAAW,EAAE,gBAAa,EAA6B,GAClE,IAAe,EAAS,qBAAqB,GAAQ,CAAI,GACzD,IAAW,CAAC,CAAC,GACb,IAAa,CAAC,CAAC,KAAkB,CAAC,GAClC,IAAW,EAAyB,IAAI,GACxC,IAAwB,QAAyB,KAAA,CAAS,GAE1D,IAAwB,GAAa,OACxC,MAAmB;EAIlB,AAHI,KACF,EAAa,CAAQ,GAEvB,EAAS,CAAQ;CACnB,GACA,CAAC,CAAY,CAAC,GAEV,IAAe,SAIZ;EACL,GAAG;EACH,YAAY,EAAG;CACjB,IACC,CAAC,CAAC,GAEC,IAAQ,QAA+C;EAC3D,QAAQ,GAAR;GACE,KAAK,EAAY;GACjB,KAAK,EAAY,WACf;GACF,KAAK,EAAY,MACf,OAAO,CAAC,MAAM;GAChB,KAAK,EAAY,YACf,OAAO,CAAC,QAAQ,OAAO;GACzB,SACE,MAAU,MAAM,4BAA4B,GAAY;EAC5D;CACF,GAAG,CAAC,CAAU,CAAC,GAET,IAAe,MAAe,EAAY,YAAY,IAAoB;CA6EhF,OACE,kBAAC,GAAD;EACW;EACT,cAAc;EACR;EACN,QAhFqB,GAAa,EAAE,OAAO,EAAE,WAAQ,aAAU,QAAK,kBACtE,EAAI,EACF,aAAa;GACX,GAAU,SAAS,MAAM;EAC3B,EACF,CAAC,GAED,EAAsB,gBAAgB;GACpC,EAAS,IAAI;EACf,GAGE,kBAAC,GAAD;GACE,GAAI,EAAW,iBAAiB,cAAc;IAAE;IAAO;GAAK,CAAC;GAC7D,WAAA;GACA,IAAI;IACF,2EAA2E,EACzE,SAAS,UACX;IACA,6BAA6B,EAC3B,SAAS,OACX;GACF;aAVF;IAYE,kBAAC,GAAD;KACE,eAAe;KACf,aAAa;eAEb,kBAAC,GAAD;MACE,UAAU,KAAY;MACZ;MACH;MACE;MACT,UAAU,EAAsB,CAAQ;MACxC,QAAQ,MAAe,EAAY,YAAY,KAAA,IAAY;MAC3D,WAAW,EACT,WAAW;OACT,YAAA,GAAA,EAAA,QAAA,CAAsB,EAAE,eAAe,EAAW,CAAC;OACnD,OAAO;OACP;OACA,WAAW,EACT,YAAY,EACV,YACF,EACF;OACA,SAAS;MACX,EACF;MACA,OAAO,EACL,iBAAiB,MACf,kBAAC,GAAD;OACE,GAAI;OACM;OACD;OACc;MACxB,CAAA,EAEL;MACO;MACA;KACR,CAAA;IACmB,CAAA;IACrB,CAAC,CAAC,KAAW,kBAAC,GAAD,CAA4B,CAAA;IAC1C,kBAAC,GAAD;KAAgB,IAAI,EAAE,IAAI,EAAE;eAC1B,kBAAC,GAAD;MACgB;MACD;MACb,UAAA;MACgB;KACjB,CAAA;IACa,CAAA;GACL;OAEd;GAAC;GAAc;GAAc;GAAY;GAAU;GAAc;GAAU;GAAY;GAAa;GAAO;GAAS;GAAM;GAAuB;GAAU;GAAO;EAAc,CAOvK;CACT,CAAA;AAEL"}
|