@bitrise/bitkit-v2 0.3.478-beta.3034 → 0.3.478-beta.3036
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/components/BitkitCalendar/components/CalendarTrigger.js +1 -0
- package/dist/components/BitkitCalendar/components/CalendarTrigger.js.map +1 -1
- package/dist/components/BitkitFilter/BitkitFilterDateRange.js +2 -2
- package/dist/components/BitkitFilter/BitkitFilterDateRange.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ var CalendarTrigger = ({ children }) => {
|
|
|
8
8
|
const mergedProps = {
|
|
9
9
|
...childProps,
|
|
10
10
|
...triggerProps,
|
|
11
|
+
"aria-label": childProps["aria-label"] ?? triggerProps["aria-label"],
|
|
11
12
|
onClick: (event) => {
|
|
12
13
|
triggerProps.onClick?.(event);
|
|
13
14
|
childProps.onClick?.(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarTrigger.tsx"],"sourcesContent":["import { cloneElement, isValidElement, type ReactNode } from 'react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\n\nconst CalendarTrigger = ({ children }: { children: ReactNode }) => {\n const context = useDatePickerContext();\n const triggerProps = context.getTriggerProps();\n\n if (!isValidElement(children)) {\n throw new Error('CalendarTrigger children must be a valid React element');\n }\n\n const childProps = children.props as Record<string, any>;\n const mergedProps = {\n ...childProps,\n ...triggerProps,\n onClick: (event: any) => {\n triggerProps.onClick?.(event);\n childProps.onClick?.(event);\n },\n };\n\n return cloneElement(children, mergedProps as any);\n};\n\nexport default CalendarTrigger;\n"],"mappings":";;;AAIA,IAAM,mBAAmB,EAAE,eAAwC;CAEjE,MAAM,eADU,qBACK,CAAA,CAAQ,gBAAgB;CAE7C,IAAI,CAAC,eAAe,QAAQ,GAC1B,MAAM,IAAI,MAAM,wDAAwD;CAG1E,MAAM,aAAa,SAAS;CAC5B,MAAM,cAAc;EAClB,GAAG;EACH,GAAG;
|
|
1
|
+
{"version":3,"file":"CalendarTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarTrigger.tsx"],"sourcesContent":["import { cloneElement, isValidElement, type ReactNode } from 'react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\n\nconst CalendarTrigger = ({ children }: { children: ReactNode }) => {\n const context = useDatePickerContext();\n const triggerProps = context.getTriggerProps();\n\n if (!isValidElement(children)) {\n throw new Error('CalendarTrigger children must be a valid React element');\n }\n\n const childProps = children.props as Record<string, any>;\n const mergedProps = {\n ...childProps,\n ...triggerProps,\n // Zag's \"Open calendar\" only stands in for a trigger that has no name of its own.\n 'aria-label': childProps['aria-label'] ?? triggerProps['aria-label'],\n onClick: (event: any) => {\n triggerProps.onClick?.(event);\n childProps.onClick?.(event);\n },\n };\n\n return cloneElement(children, mergedProps as any);\n};\n\nexport default CalendarTrigger;\n"],"mappings":";;;AAIA,IAAM,mBAAmB,EAAE,eAAwC;CAEjE,MAAM,eADU,qBACK,CAAA,CAAQ,gBAAgB;CAE7C,IAAI,CAAC,eAAe,QAAQ,GAC1B,MAAM,IAAI,MAAM,wDAAwD;CAG1E,MAAM,aAAa,SAAS;CAC5B,MAAM,cAAc;EAClB,GAAG;EACH,GAAG;EAEH,cAAc,WAAW,iBAAiB,aAAa;EACvD,UAAU,UAAe;GACvB,aAAa,UAAU,KAAK;GAC5B,WAAW,UAAU,KAAK;EAC5B;CACF;CAEA,OAAO,aAAa,UAAU,WAAkB;AAClD"}
|
|
@@ -7,7 +7,7 @@ import FilterChip from "./components/FilterChip.js";
|
|
|
7
7
|
import FilterField from "./components/FilterField.js";
|
|
8
8
|
import FilterPanel, { FilterPanelFooter, FilterPanelHeader } from "./components/FilterPanel.js";
|
|
9
9
|
import { Box } from "@chakra-ui/react/box";
|
|
10
|
-
import { forwardRef, useState } from "react";
|
|
10
|
+
import { cloneElement, forwardRef, useState } from "react";
|
|
11
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
12
|
//#region lib/components/BitkitFilter/BitkitFilterDateRange.tsx
|
|
13
13
|
var today = () => /* @__PURE__ */ new Date();
|
|
@@ -105,7 +105,7 @@ var BitkitFilterDateRange = forwardRef((props, ref) => {
|
|
|
105
105
|
showOutsideDays: true,
|
|
106
106
|
showSelectedDate: true,
|
|
107
107
|
value: draft,
|
|
108
|
-
children: button
|
|
108
|
+
children: cloneElement(button, { "aria-label": valueText })
|
|
109
109
|
}),
|
|
110
110
|
value: valueText,
|
|
111
111
|
...rest
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitFilterDateRange.js","names":[],"sources":["../../../lib/components/BitkitFilter/BitkitFilterDateRange.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@chakra-ui/react/box';\nimport { forwardRef, useState } from 'react';\n\nimport { IconCalendar } from '../../icons';\nimport BitkitButton from '../BitkitButton/BitkitButton';\nimport BitkitCalendar, { type BitkitCalendarProps } from '../BitkitCalendar/BitkitCalendar';\nimport { useFilterContext, useFilterRegistration } from './BitkitFilter.context';\nimport { endOfDay, formatDateRange, isEqualFilterValue } from './BitkitFilter.utils';\nimport FilterChip from './components/FilterChip';\nimport FilterField from './components/FilterField';\nimport FilterPanel, { FilterPanelFooter, FilterPanelHeader } from './components/FilterPanel';\n\nexport type BitkitFilterDateRangeValue = [start: Date, end: Date] | null;\n\nexport interface BitkitFilterDateRangeProps extends Omit<BoxProps, 'children' | 'defaultValue' | 'onChange'> {\n /** Says why a day can't be picked, e.g. \"Can't select a date in the future\". Shown on hover. */\n dayTooltip?: BitkitCalendarProps['dayTooltip'];\n /** Chip text while no range is applied. Defaults to \"All dates\". */\n emptyLabel?: string;\n /** Name of the filter, shown on mobile as the field label and the title of its view. Defaults to \"Date\". */\n label?: string;\n /** Latest selectable day. Defaults to today. */\n max?: Date;\n /** Earliest selectable day. Defaults to two years before today. */\n min?: Date;\n /**\n * Called on \"Apply\" and \"Clear\". An applied range is `[start, end]`, where `start` is the first\n * day's midnight and `end` the last day's final millisecond, so the range covers both days whole.\n */\n onValueChange: (value: BitkitFilterDateRangeValue) => void;\n /** The value \"Clear filters\" restores. Defaults to no range. */\n resetValue?: BitkitFilterDateRangeValue;\n value: BitkitFilterDateRangeValue;\n}\n\nconst today = () => new Date();\n\nconst twoYearsAgo = () => {\n const date = new Date();\n date.setFullYear(date.getFullYear() - 2);\n return date;\n};\n\n/** A filter for a date range, picked on a calendar and applied with \"Apply\". */\n// The ref lands on the chip's (or on mobile the field's) button; other props on its wrapper.\nconst BitkitFilterDateRange = forwardRef<HTMLButtonElement, BitkitFilterDateRangeProps>((props, ref) => {\n const {\n dayTooltip,\n emptyLabel = 'All dates',\n label = 'Date',\n max,\n min,\n onValueChange,\n resetValue = null,\n value,\n ...rest\n } = props;\n const { isDisabled, isMobile, styles } = useFilterContext();\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<Date[] | null>(value);\n\n useFilterRegistration(value, resetValue, onValueChange);\n\n const onOpenChange = (isOpen: boolean) => {\n // The chip is only `aria-disabled` while the page loads, so the calendar refuses to open here.\n if (isOpen && isDisabled) return;\n setOpen(isOpen);\n if (isOpen) setDraft(value);\n };\n\n const apply = (next: BitkitFilterDateRangeValue) => {\n onValueChange(next);\n setOpen(false);\n };\n\n const draftRange: BitkitFilterDateRangeValue = draft?.length === 2 ? [draft[0], endOfDay(draft[1])] : null;\n const isApplyDisabled = !draftRange || isEqualFilterValue(draftRange, value);\n const valueText = value ? formatDateRange(value) : emptyLabel;\n\n if (isMobile) {\n return (\n <FilterPanel\n onOpenChange={onOpenChange}\n open={open}\n trigger={\n <FilterField\n {...rest}\n icon={IconCalendar}\n isOpen={open}\n label={label}\n onClick={() => onOpenChange(true)}\n ref={ref}\n value={valueText}\n />\n }\n >\n <FilterPanelHeader title={label} />\n <Box flex=\"1\" overflowY=\"auto\">\n <BitkitCalendar\n dayTooltip={dayTooltip}\n device=\"mobile\"\n layout=\"1-month\"\n max={max ?? today()}\n min={min ?? twoYearsAgo()}\n onValueChange={setDraft}\n showOutsideDays\n showSelectedDate\n value={draft}\n />\n </Box>\n <FilterPanelFooter\n isApplyDisabled={isApplyDisabled}\n onApply={() => apply(draftRange)}\n start={value ? { label: 'Reset', onClick: () => apply(null) } : undefined}\n />\n </FilterPanel>\n );\n }\n\n return (\n <FilterChip\n icon={IconCalendar}\n ref={ref}\n renderTrigger={(button) => (\n <BitkitCalendar\n dayTooltip={dayTooltip}\n footer={\n <Box css={styles.calendarFooter}>\n <Box flex=\"1\">\n {!!value && (\n <BitkitButton onClick={() => apply(null)} size=\"sm\" variant=\"tertiary\">\n Clear\n </BitkitButton>\n )}\n </Box>\n <BitkitButton\n onClick={() => apply(draftRange)}\n size=\"sm\"\n state={isApplyDisabled ? 'disabled' : undefined}\n >\n Apply\n </BitkitButton>\n </Box>\n }\n layout=\"1-month\"\n max={max ?? today()}\n min={min ?? twoYearsAgo()}\n onOpenChange={onOpenChange}\n onValueChange={setDraft}\n open={open}\n showOutsideDays\n showSelectedDate\n value={draft}\n >\n {button}\n </BitkitCalendar>\n )}\n value={valueText}\n {...rest}\n />\n );\n});\n\nBitkitFilterDateRange.displayName = 'BitkitFilterDateRange';\n\nexport default BitkitFilterDateRange;\n"],"mappings":";;;;;;;;;;;;AAmCA,IAAM,8BAAc,IAAI,KAAK;AAE7B,IAAM,oBAAoB;CACxB,MAAM,uBAAO,IAAI,KAAK;CACtB,KAAK,YAAY,KAAK,YAAY,IAAI,CAAC;CACvC,OAAO;AACT;;AAIA,IAAM,wBAAwB,YAA2D,OAAO,QAAQ;CACtG,MAAM,EACJ,YACA,aAAa,aACb,QAAQ,QACR,KACA,KACA,eACA,aAAa,MACb,OACA,GAAG,SACD;CACJ,MAAM,EAAE,YAAY,UAAU,WAAW,iBAAiB;CAC1D,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CACtC,MAAM,CAAC,OAAO,YAAY,SAAwB,KAAK;CAEvD,sBAAsB,OAAO,YAAY,aAAa;CAEtD,MAAM,gBAAgB,WAAoB;EAExC,IAAI,UAAU,YAAY;EAC1B,QAAQ,MAAM;EACd,IAAI,QAAQ,SAAS,KAAK;CAC5B;CAEA,MAAM,SAAS,SAAqC;EAClD,cAAc,IAAI;EAClB,QAAQ,KAAK;CACf;CAEA,MAAM,aAAyC,OAAO,WAAW,IAAI,CAAC,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC,IAAI;CACtG,MAAM,kBAAkB,CAAC,cAAc,mBAAmB,YAAY,KAAK;CAC3E,MAAM,YAAY,QAAQ,gBAAgB,KAAK,IAAI;CAEnD,IAAI,UACF,OACE,qBAAC,aAAD;EACgB;EACR;EACN,SACE,oBAAC,aAAD;GACE,GAAI;GACJ,MAAM;GACN,QAAQ;GACD;GACP,eAAe,aAAa,IAAI;GAC3B;GACL,OAAO;EACR,CAAA;EAZL,UAAA;GAeE,oBAAC,mBAAD,EAAmB,OAAO,MAAQ,CAAA;GAClC,oBAAC,KAAD;IAAK,MAAK;IAAI,WAAU;IACtB,UAAA,oBAAC,gBAAD;KACc;KACZ,QAAO;KACP,QAAO;KACP,KAAK,OAAO,MAAM;KAClB,KAAK,OAAO,YAAY;KACxB,eAAe;KACf,iBAAA;KACA,kBAAA;KACA,OAAO;IACR,CAAA;GACE,CAAA;GACL,oBAAC,mBAAD;IACmB;IACjB,eAAe,MAAM,UAAU;IAC/B,OAAO,QAAQ;KAAE,OAAO;KAAS,eAAe,MAAM,IAAI;IAAE,IAAI,KAAA;GACjE,CAAA;EACU;;CAIjB,OACE,oBAAC,YAAD;EACE,MAAM;EACD;EACL,gBAAgB,WACd,oBAAC,gBAAD;GACc;GACZ,QACE,qBAAC,KAAD;IAAK,KAAK,OAAO;IAAjB,UAAA,CACE,oBAAC,KAAD;KAAK,MAAK;KACP,UAAA,CAAC,CAAC,SACD,oBAAC,cAAD;MAAc,eAAe,MAAM,IAAI;MAAG,MAAK;MAAK,SAAQ;MAAW,UAAA;KAEzD,CAAA;IAEb,CAAA,GACL,oBAAC,cAAD;KACE,eAAe,MAAM,UAAU;KAC/B,MAAK;KACL,OAAO,kBAAkB,aAAa,KAAA;KACvC,UAAA;IAEa,CAAA,CACX;;GAEP,QAAO;GACP,KAAK,OAAO,MAAM;GAClB,KAAK,OAAO,YAAY;GACV;GACd,eAAe;GACT;GACN,iBAAA;GACA,kBAAA;GACA,OAAO;
|
|
1
|
+
{"version":3,"file":"BitkitFilterDateRange.js","names":[],"sources":["../../../lib/components/BitkitFilter/BitkitFilterDateRange.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@chakra-ui/react/box';\nimport { cloneElement, forwardRef, useState } from 'react';\n\nimport { IconCalendar } from '../../icons';\nimport BitkitButton from '../BitkitButton/BitkitButton';\nimport BitkitCalendar, { type BitkitCalendarProps } from '../BitkitCalendar/BitkitCalendar';\nimport { useFilterContext, useFilterRegistration } from './BitkitFilter.context';\nimport { endOfDay, formatDateRange, isEqualFilterValue } from './BitkitFilter.utils';\nimport FilterChip from './components/FilterChip';\nimport FilterField from './components/FilterField';\nimport FilterPanel, { FilterPanelFooter, FilterPanelHeader } from './components/FilterPanel';\n\nexport type BitkitFilterDateRangeValue = [start: Date, end: Date] | null;\n\nexport interface BitkitFilterDateRangeProps extends Omit<BoxProps, 'children' | 'defaultValue' | 'onChange'> {\n /** Says why a day can't be picked, e.g. \"Can't select a date in the future\". Shown on hover. */\n dayTooltip?: BitkitCalendarProps['dayTooltip'];\n /** Chip text while no range is applied. Defaults to \"All dates\". */\n emptyLabel?: string;\n /** Name of the filter, shown on mobile as the field label and the title of its view. Defaults to \"Date\". */\n label?: string;\n /** Latest selectable day. Defaults to today. */\n max?: Date;\n /** Earliest selectable day. Defaults to two years before today. */\n min?: Date;\n /**\n * Called on \"Apply\" and \"Clear\". An applied range is `[start, end]`, where `start` is the first\n * day's midnight and `end` the last day's final millisecond, so the range covers both days whole.\n */\n onValueChange: (value: BitkitFilterDateRangeValue) => void;\n /** The value \"Clear filters\" restores. Defaults to no range. */\n resetValue?: BitkitFilterDateRangeValue;\n value: BitkitFilterDateRangeValue;\n}\n\nconst today = () => new Date();\n\nconst twoYearsAgo = () => {\n const date = new Date();\n date.setFullYear(date.getFullYear() - 2);\n return date;\n};\n\n/** A filter for a date range, picked on a calendar and applied with \"Apply\". */\n// The ref lands on the chip's (or on mobile the field's) button; other props on its wrapper.\nconst BitkitFilterDateRange = forwardRef<HTMLButtonElement, BitkitFilterDateRangeProps>((props, ref) => {\n const {\n dayTooltip,\n emptyLabel = 'All dates',\n label = 'Date',\n max,\n min,\n onValueChange,\n resetValue = null,\n value,\n ...rest\n } = props;\n const { isDisabled, isMobile, styles } = useFilterContext();\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<Date[] | null>(value);\n\n useFilterRegistration(value, resetValue, onValueChange);\n\n const onOpenChange = (isOpen: boolean) => {\n // The chip is only `aria-disabled` while the page loads, so the calendar refuses to open here.\n if (isOpen && isDisabled) return;\n setOpen(isOpen);\n if (isOpen) setDraft(value);\n };\n\n const apply = (next: BitkitFilterDateRangeValue) => {\n onValueChange(next);\n setOpen(false);\n };\n\n const draftRange: BitkitFilterDateRangeValue = draft?.length === 2 ? [draft[0], endOfDay(draft[1])] : null;\n const isApplyDisabled = !draftRange || isEqualFilterValue(draftRange, value);\n const valueText = value ? formatDateRange(value) : emptyLabel;\n\n if (isMobile) {\n return (\n <FilterPanel\n onOpenChange={onOpenChange}\n open={open}\n trigger={\n <FilterField\n {...rest}\n icon={IconCalendar}\n isOpen={open}\n label={label}\n onClick={() => onOpenChange(true)}\n ref={ref}\n value={valueText}\n />\n }\n >\n <FilterPanelHeader title={label} />\n <Box flex=\"1\" overflowY=\"auto\">\n <BitkitCalendar\n dayTooltip={dayTooltip}\n device=\"mobile\"\n layout=\"1-month\"\n max={max ?? today()}\n min={min ?? twoYearsAgo()}\n onValueChange={setDraft}\n showOutsideDays\n showSelectedDate\n value={draft}\n />\n </Box>\n <FilterPanelFooter\n isApplyDisabled={isApplyDisabled}\n onApply={() => apply(draftRange)}\n start={value ? { label: 'Reset', onClick: () => apply(null) } : undefined}\n />\n </FilterPanel>\n );\n }\n\n return (\n <FilterChip\n icon={IconCalendar}\n ref={ref}\n renderTrigger={(button) => (\n <BitkitCalendar\n dayTooltip={dayTooltip}\n footer={\n <Box css={styles.calendarFooter}>\n <Box flex=\"1\">\n {!!value && (\n <BitkitButton onClick={() => apply(null)} size=\"sm\" variant=\"tertiary\">\n Clear\n </BitkitButton>\n )}\n </Box>\n <BitkitButton\n onClick={() => apply(draftRange)}\n size=\"sm\"\n state={isApplyDisabled ? 'disabled' : undefined}\n >\n Apply\n </BitkitButton>\n </Box>\n }\n layout=\"1-month\"\n max={max ?? today()}\n min={min ?? twoYearsAgo()}\n onOpenChange={onOpenChange}\n onValueChange={setDraft}\n open={open}\n showOutsideDays\n showSelectedDate\n value={draft}\n >\n {/* Zag names the trigger \"Open calendar\"; the chip is named by the text it shows instead. */}\n {cloneElement(button, { 'aria-label': valueText })}\n </BitkitCalendar>\n )}\n value={valueText}\n {...rest}\n />\n );\n});\n\nBitkitFilterDateRange.displayName = 'BitkitFilterDateRange';\n\nexport default BitkitFilterDateRange;\n"],"mappings":";;;;;;;;;;;;AAmCA,IAAM,8BAAc,IAAI,KAAK;AAE7B,IAAM,oBAAoB;CACxB,MAAM,uBAAO,IAAI,KAAK;CACtB,KAAK,YAAY,KAAK,YAAY,IAAI,CAAC;CACvC,OAAO;AACT;;AAIA,IAAM,wBAAwB,YAA2D,OAAO,QAAQ;CACtG,MAAM,EACJ,YACA,aAAa,aACb,QAAQ,QACR,KACA,KACA,eACA,aAAa,MACb,OACA,GAAG,SACD;CACJ,MAAM,EAAE,YAAY,UAAU,WAAW,iBAAiB;CAC1D,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CACtC,MAAM,CAAC,OAAO,YAAY,SAAwB,KAAK;CAEvD,sBAAsB,OAAO,YAAY,aAAa;CAEtD,MAAM,gBAAgB,WAAoB;EAExC,IAAI,UAAU,YAAY;EAC1B,QAAQ,MAAM;EACd,IAAI,QAAQ,SAAS,KAAK;CAC5B;CAEA,MAAM,SAAS,SAAqC;EAClD,cAAc,IAAI;EAClB,QAAQ,KAAK;CACf;CAEA,MAAM,aAAyC,OAAO,WAAW,IAAI,CAAC,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC,IAAI;CACtG,MAAM,kBAAkB,CAAC,cAAc,mBAAmB,YAAY,KAAK;CAC3E,MAAM,YAAY,QAAQ,gBAAgB,KAAK,IAAI;CAEnD,IAAI,UACF,OACE,qBAAC,aAAD;EACgB;EACR;EACN,SACE,oBAAC,aAAD;GACE,GAAI;GACJ,MAAM;GACN,QAAQ;GACD;GACP,eAAe,aAAa,IAAI;GAC3B;GACL,OAAO;EACR,CAAA;EAZL,UAAA;GAeE,oBAAC,mBAAD,EAAmB,OAAO,MAAQ,CAAA;GAClC,oBAAC,KAAD;IAAK,MAAK;IAAI,WAAU;IACtB,UAAA,oBAAC,gBAAD;KACc;KACZ,QAAO;KACP,QAAO;KACP,KAAK,OAAO,MAAM;KAClB,KAAK,OAAO,YAAY;KACxB,eAAe;KACf,iBAAA;KACA,kBAAA;KACA,OAAO;IACR,CAAA;GACE,CAAA;GACL,oBAAC,mBAAD;IACmB;IACjB,eAAe,MAAM,UAAU;IAC/B,OAAO,QAAQ;KAAE,OAAO;KAAS,eAAe,MAAM,IAAI;IAAE,IAAI,KAAA;GACjE,CAAA;EACU;;CAIjB,OACE,oBAAC,YAAD;EACE,MAAM;EACD;EACL,gBAAgB,WACd,oBAAC,gBAAD;GACc;GACZ,QACE,qBAAC,KAAD;IAAK,KAAK,OAAO;IAAjB,UAAA,CACE,oBAAC,KAAD;KAAK,MAAK;KACP,UAAA,CAAC,CAAC,SACD,oBAAC,cAAD;MAAc,eAAe,MAAM,IAAI;MAAG,MAAK;MAAK,SAAQ;MAAW,UAAA;KAEzD,CAAA;IAEb,CAAA,GACL,oBAAC,cAAD;KACE,eAAe,MAAM,UAAU;KAC/B,MAAK;KACL,OAAO,kBAAkB,aAAa,KAAA;KACvC,UAAA;IAEa,CAAA,CACX;;GAEP,QAAO;GACP,KAAK,OAAO,MAAM;GAClB,KAAK,OAAO,YAAY;GACV;GACd,eAAe;GACT;GACN,iBAAA;GACA,kBAAA;GACA,OAAO;GAGN,UAAA,aAAa,QAAQ,EAAE,cAAc,UAAU,CAAC;EACnC,CAAA;EAElB,OAAO;EACP,GAAI;CACL,CAAA;AAEL,CAAC;AAED,sBAAsB,cAAc"}
|