@northlight/ui 2.42.2 → 2.42.4

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.
Files changed (34) hide show
  1. package/dist/es/northlight.js +3 -7
  2. package/dist/es/northlight.js.map +1 -1
  3. package/dist/sandbox/index.js +3 -7
  4. package/dist/sandbox/index.js.map +1 -1
  5. package/dist/umd/northlight.cjs +2 -6
  6. package/dist/umd/northlight.cjs.map +1 -1
  7. package/dist/umd/northlight.min.cjs +3 -3
  8. package/dist/umd/northlight.min.cjs.map +1 -1
  9. package/lib/components/date-picker/date-picker/date-range-picker.tsx +15 -23
  10. package/package.json +3 -2
  11. package/sandbox/bin/sandbox.ts +2 -0
  12. package/sandbox/node_modules/.yarn-integrity +38 -0
  13. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/LICENSE +127 -0
  14. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/README.md +50 -0
  15. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/filter.d.ts +2 -0
  16. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/filter.js +39 -0
  17. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/filter.js.map +1 -0
  18. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/index.d.ts +11 -0
  19. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/index.js +78 -0
  20. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/index.js.map +1 -0
  21. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/lib.d.ts +6 -0
  22. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/lib.js +79 -0
  23. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/lib/lib.js.map +1 -0
  24. package/sandbox/node_modules/@originjs/vite-plugin-commonjs/package.json +34 -0
  25. package/sandbox/node_modules/esbuild/LICENSE.md +21 -0
  26. package/sandbox/node_modules/esbuild/README.md +3 -0
  27. package/sandbox/node_modules/esbuild/bin/esbuild +178 -0
  28. package/sandbox/node_modules/esbuild/install.js +244 -0
  29. package/sandbox/node_modules/esbuild/lib/main.d.ts +602 -0
  30. package/sandbox/node_modules/esbuild/lib/main.js +2332 -0
  31. package/sandbox/node_modules/esbuild/package.json +41 -0
  32. package/sandbox/node_modules/esbuild-linux-64/README.md +3 -0
  33. package/sandbox/node_modules/esbuild-linux-64/bin/esbuild +0 -0
  34. package/sandbox/node_modules/esbuild-linux-64/package.json +17 -0
@@ -1 +1 @@
1
- {"version":3,"file":"northlight.min.cjs","sources":["../../lib/components/accordion/accordion.tsx","../../lib/components/accordion/accordion-button.tsx","../../lib/components/accordion/accordion-panel.tsx","../../lib/components/accordion/accordion-item.tsx","../../lib/hooks/use-debounce/index.ts","../../lib/hooks/use-loading-message/index.ts","../../lib/hooks/use-scroll-to-bottom/utils/smooth-scroll-to-bottom.ts","../../lib/hooks/use-scroll-to-bottom/index.ts","../../lib/hooks/use-arrow-focus/index.ts","../../lib/hooks/use-select-callbacks/use-select-callbacks.ts","../../lib/hooks/use-outside-rect-click/index.ts","../../lib/hooks/use-screen-size/index.ts","../../lib/hooks/use-did-update-effect/index.ts","../../lib/utils/luminosity/index.ts","../../lib/utils/get-contrast-color/index.ts","../../lib/utils/ring/index.ts","../../lib/utils/highlight/index.ts","../../lib/utils/get-shades/index.ts","../../lib/utils/get-initials/index.ts","../../lib/utils/get-field-error/index.ts","../../lib/utils/get-children-with-props/pass-props-to-child.ts","../../lib/utils/get-children-with-props/index.ts","../../lib/utils/add-alpha/index.ts","../../lib/utils/debounce/create-debounce-function-instance.ts","../../lib/utils/use-current-theme/index.ts","../../lib/utils/clamp/index.ts","../../lib/utils/get-consistent-random-color-from-string/index.ts","../../lib/hooks/use-resize-width/index.ts","../../lib/theme/components/select/custom-select.ts","../../lib/components/tags-input/tags-input-styles.ts","../../lib/theme/global/scrollbar.ts","../../lib/theme/components/breadcrumb/index.ts","../../lib/theme/components/button/index.ts","../../lib/theme/components/blinker/index.ts","../../lib/theme/components/checkbox/index.ts","../../lib/theme/components/input/index.ts","../../lib/theme/components/pin-input/index.ts","../../lib/theme/components/select/index.ts","../../lib/theme/components/radio/index.ts","../../lib/theme/components/tabs/index.ts","../../lib/theme/components/textarea/index.ts","../../lib/theme/components/link/index.ts","../../lib/theme/components/switch/index.ts","../../lib/theme/process-color-scheme-based-on-theme.ts","../../lib/theme/components/tag/index.ts","../../lib/theme/components/alert/index.ts","../../lib/theme/components/number-input/index.ts","../../lib/theme/components/notification-icon-button/index.ts","../../lib/theme/components/calendar/index.ts","../../lib/theme/components/drag-and-drop/index.ts","../../lib/theme/components/date-picker/index.ts","../../lib/theme/components/flip-button/index.ts","../../lib/theme/components/spinner/index.ts","../../lib/theme/components/avatar/get-avatar-bg-color.ts","../../lib/theme/components/avatar/index.ts","../../lib/theme/components/close-button/index.ts","../../lib/theme/components/modal/index.ts","../../lib/theme/components/tooltip/index.ts","../../lib/theme/components/icon/index.ts","../../lib/theme/components/clipboard-input/index.ts","../../lib/theme/components/color-picker/index.ts","../../lib/theme/components/steps/step/index.ts","../../lib/theme/components/steps/step-list/index.ts","../../lib/theme/components/typography/headings/h1.ts","../../lib/theme/components/typography/headings/h2.ts","../../lib/theme/components/typography/headings/h3.ts","../../lib/theme/components/typography/headings/h4.ts","../../lib/theme/components/typography/headings/h5.ts","../../lib/theme/components/typography/headings/h6.ts","../../lib/theme/components/typography/stylized/blockquote.ts","../../lib/theme/components/typography/stylized/tiny.ts","../../lib/theme/components/typography/stylized/capitalized.ts","../../lib/theme/components/typography/stylized/lead.ts","../../lib/theme/components/typography/stylized/small.ts","../../lib/theme/components/typography/body/p.ts","../../lib/theme/components/typography/labels/label.ts","../../lib/theme/components/typography/numvals/numval.ts","../../lib/theme/components/split-pane/index.ts","../../lib/theme/components/carousel/index.ts","../../lib/theme/components/editable-text/index.ts","../../lib/theme/components/toolbox/index.ts","../../lib/theme/components/file-picker/index.ts","../../lib/theme/components/badge/index.ts","../../lib/theme/components/menu/index.ts","../../lib/theme/components/popover/index.ts","../../lib/theme/components/progress-bar/index.ts","../../lib/theme/components/table/index.ts","../../lib/theme/skins/webapp/index.ts","../../lib/theme/skins/tott/index.ts","../../lib/theme/skins/camphouse-light/index.ts","../../lib/theme/index.ts","../../lib/components/tags-input/tags-input.tsx","../../lib/components/organization-logo/organization-logo.tsx","../../lib/components/alert/alert.tsx","../../lib/components/aspect-ratio/aspect-ratio.tsx","../../lib/components/icon/icon.tsx","../../lib/components/avatar/avatar-badge.tsx","../../lib/components/avatar/avatar.tsx","../../lib/components/typography/headings/h1.tsx","../../lib/components/typography/headings/h2.tsx","../../lib/components/typography/headings/h3.tsx","../../lib/components/typography/headings/h4.tsx","../../lib/components/typography/headings/h5.tsx","../../lib/components/typography/headings/h6.tsx","../../lib/components/typography/body/p.tsx","../../lib/components/typography/stylized/blockquote.tsx","../../lib/components/typography/stylized/capitalized.tsx","../../lib/components/typography/stylized/lead.tsx","../../lib/components/typography/stylized/small.tsx","../../lib/components/typography/stylized/tiny.tsx","../../lib/components/typography/labels/label.tsx","../../lib/components/typography/numvals/numval.tsx","../../lib/components/overflow-group/overflow-group.tsx","../../lib/components/overflow-group/use-overflow-group.ts","../../lib/components/avatar/avatar-group.tsx","../../lib/components/badge/badge.tsx","../../lib/components/blinker/blinker.tsx","../../lib/components/spinner/spinner.tsx","../../lib/components/button/button.tsx","../../lib/components/checkbox/checkbox.tsx","../../lib/components/form/trim-form-values.ts","../../lib/components/form/form.tsx","../../lib/components/form-control/form-label.tsx","../../lib/components/form/field.tsx","../../lib/components/form/use-set-value-refreshed.ts","../../lib/components/checkbox/checkbox-field.tsx","../../lib/components/checkbox/checkbox-group-field.tsx","../../lib/components/icon-button/icon-button.tsx","../../lib/components/color-picker/constants.ts","../../lib/components/color-picker/color-button.tsx","../../lib/components/popover/popover.tsx","../../lib/components/color-picker/colors-expand-button.tsx","../../lib/components/portal/render-in-portal.tsx","../../lib/components/color-picker/color-picker.tsx","../../lib/components/color-picker/color-picker-field.tsx","../../lib/components/flip-button/utils.ts","../../lib/components/flip-button/flip-button.tsx","../../lib/components/flip-button/flip-button-group.tsx","../../lib/components/flip-button/flip-button-group-field.tsx","../../lib/components/resize-handle/resize-handle.tsx","../../lib/components/date-picker/components/date-field/trigger.tsx","../../lib/components/date-picker/components/date-field/date-segment.tsx","../../lib/components/date-picker/components/date-field/utils.ts","../../lib/components/date-picker/components/date-field/date-field.tsx","../../lib/components/date-picker/components/date-field/styled-field.tsx","../../lib/components/table/table.tsx","../../lib/components/date-picker/components/calendar/components/calendar-cell.tsx","../../lib/components/date-picker/components/calendar/components/day-labels.tsx","../../lib/components/date-picker/components/calendar/components/utils.ts","../../lib/components/date-picker/components/calendar/components/calendar-grid.tsx","../../lib/components/date-picker/components/calendar/components/month-button.tsx","../../lib/components/date-picker/components/calendar/constants.ts","../../lib/components/date-picker/components/calendar/date-select/month-select.tsx","../../lib/components/date-picker/components/calendar/date-select/year-select.tsx","../../lib/components/date-picker/components/calendar/date-select/utils.ts","../../lib/components/date-picker/components/calendar/date-select/year-select-calendar.tsx","../../lib/components/date-picker/components/calendar/date-select/year-select-range-calendar.tsx","../../lib/components/date-picker/components/calendar/components/get-week-number-start-of-month.ts","../../lib/components/date-picker/components/calendar/components/range-cell.tsx","../../lib/components/date-picker/components/calendar/components/standalone-calendar-grid.tsx","../../lib/components/date-picker/components/calendar/calendar.tsx","../../lib/components/date-picker/date-picker/date-picker-locale-wrapper.tsx","../../lib/components/date-picker/date-picker/date-picker.tsx","../../lib/components/clickable/clickable.tsx","../../lib/components/date-picker/components/calendar/quick-navigation/date-button.tsx","../../lib/components/date-picker/components/calendar/quick-navigation/utils.ts","../../lib/components/date-picker/components/calendar/quick-navigation/get-quick-select-options.ts","../../lib/components/date-picker/components/calendar/quick-navigation/quick-select.tsx","../../lib/components/date-picker/components/calendar/range-calendar.tsx","../../lib/components/date-picker/date-picker-field/utils.ts","../../lib/components/types/tooltipIconMap/index.ts","../../lib/components/tooltip/tooltip.tsx","../../lib/components/date-picker/date-picker/date-range-picker.tsx","../../lib/internal-components/input-group-wrapper/input-group-wrapper.tsx","../../lib/components/date-picker/date-picker-field/date-picker-field.tsx","../../lib/components/date-picker/date-picker-field/date-range-picker-field.tsx","../../lib/components/intent-button/timeout-progress-circle.tsx","../../lib/components/intent-button/intent-button.tsx","../../lib/components/transitions/constants.ts","../../lib/components/transitions/utils.ts","../../lib/components/transitions/fade.tsx","../../lib/components/transitions/scale-fade.tsx","../../lib/components/transitions/slide.tsx","../../lib/components/transitions/slide-fade.tsx","../../lib/components/transitions/collapse.tsx","../../lib/components/toolbox/toolbox.tsx","../../lib/components/toolbox/toolbox-header.tsx","../../lib/components/toolbox/toolbox-content.tsx","../../lib/components/toolbox/toolbox-footer.tsx","../../lib/components/radio/radio.tsx","../../lib/components/radio/radio-group.tsx","../../lib/components/radio/radio-group-field.tsx","../../lib/components/carousel/constants.ts","../../lib/components/carousel/carousel-item.tsx","../../lib/components/carousel/carousel-arrow.tsx","../../lib/components/carousel/carousel.tsx","../../lib/components/search-bar/styles.ts","../../lib/components/search-bar/get-components.tsx","../../lib/components/search-bar/search-bar.tsx","../../lib/components/search-bar/search-bar-field.tsx","../../lib/components/drag-and-drop/drag-and-drop.tsx","../../lib/components/tag/tag.tsx","../../lib/components/tag/overflow-indicator.tsx","../../lib/components/tag/tag-group.tsx","../../lib/components/drag-and-drop/drag-item.tsx","../../lib/components/drag-and-drop/draggable.tsx","../../lib/components/drag-and-drop/droppable.tsx","../../lib/components/drag-and-drop/sortable.tsx","../../lib/components/drag-and-drop/sortable-item.tsx","../../lib/components/drag-and-drop/drag-handle.tsx","../../lib/components/drag-and-drop/drop-zone.tsx","../../lib/components/drag-and-drop/multi-sort.tsx","../../lib/components/drag-and-drop/sortable-list.tsx","../../lib/components/drag-and-drop/sortable-container.tsx","../../lib/components/fast-list/fast-list.tsx","../../lib/components/fast-grid/fast-grid.tsx","../../lib/components/editable-text/editable-controls.tsx","../../lib/components/editable-text/editable-text.tsx","../../lib/components/modal/modal-base.tsx","../../lib/components/modal/modal.tsx","../../lib/components/modal/modal-body.tsx","../../lib/components/file-picker/file-editor-modal.tsx","../../lib/components/file-picker/confirm-delete-modal.tsx","../../lib/components/progress/constants.ts","../../lib/components/progress/progress-bar.tsx","../../lib/components/progress/utils.ts","../../lib/components/progress/loading-bar.tsx","../../lib/components/file-picker/constants.ts","../../lib/components/file-picker/utils.ts","../../lib/components/file-picker/file-icon-button.tsx","../../lib/components/file-picker/file-picker.tsx","../../lib/components/file-picker/file-picker-field.tsx","../../lib/components/file-picker/multi-file-uploader.tsx","../../lib/components/file-picker/file-item.tsx","../../lib/components/file-picker/multi-file-list.tsx","../../lib/components/file-picker/multi-file-picker.tsx","../../lib/components/file-picker/multi-file-picker-field.tsx","../../lib/components/mediatool-theme-provider/mediatool-theme-provider.tsx","../../lib/components/menu/menu.tsx","../../lib/components/number-input/number-input-stepper.tsx","../../lib/components/number-input/advanced-parse-float.ts","../../lib/components/number-input/number-input.tsx","../../lib/components/number-input/number-input-field.tsx","../../lib/components/notification-icon-button/notification-icon-button.tsx","../../lib/components/pin-input/pin-input.tsx","../../lib/components/select/get-matching-value.ts","../../lib/components/select/select.tsx","../../lib/components/select/select-field.tsx","../../lib/components/select/sortable-select-values.tsx","../../lib/components/select/sortable-select.tsx","../../lib/components/switch/switch.tsx","../../lib/components/switch/switch-field.tsx","../../lib/components/tabs/tab.tsx","../../lib/components/tabs/tab-panel.tsx","../../lib/components/tabs/tabs.tsx","../../lib/components/textarea/textarea.tsx","../../lib/components/textarea/textarea-field.tsx","../../lib/components/text-field/round-to-precision.ts","../../lib/components/text-field/formatted-number-input.tsx","../../lib/components/text-field/formatted-number-input-field.tsx","../../lib/components/text-field/masked-text-input.tsx","../../lib/components/text-field/text-field.tsx","../../lib/components/types/toastIconMap/index.ts","../../lib/components/toast/toast.tsx","../../lib/components/toast/use-toast.tsx","../../lib/components/status-pin/pin-variant-map.ts","../../lib/components/status-pin/pin-size-map.ts","../../lib/components/status-pin/status-pin.tsx","../../lib/components/async-error/async-error.tsx","../../lib/components/steps/step-panel.tsx","../../lib/components/steps/steps.tsx","../../lib/components/steps/step.tsx","../../lib/components/steps/step-list.tsx","../../lib/components/clipboard-input/clipboard-input.tsx","../../lib/components/split-pane/split-pane.tsx","../../lib/components/split-pane/pane-item.tsx","../../lib/components/split-pane/pane-divider.tsx","../../lib/components/step-stack/step-stack.tsx","../../lib/components/createable-select-dropdown/custom-components.tsx","../../lib/components/createable-select-dropdown/createable-select-dropdown.tsx","../../lib/components/combo-picker/combo-picker.tsx","../../lib/components/combo-picker/combo-picker-field.tsx"],"sourcesContent":["import React from 'react'\nimport { AccordionProps, Accordion as ChakraAccordion } from '@chakra-ui/react'\n\n/**\n * The wrapper that uses cloneElement to pass props to AccordionItem children.\n * @see {@link https::/northlight.dev/reference/accordion}\n *\n * @example\n * (?\n * <Accordion>\n <AccordionItem>\n <H2>\n <AccordionButton>\n <Box as=\"span\" flex='1' textAlign='left'>\n Section 1 title\n </Box>\n <AccordionIcon />\n </AccordionButton>\n </H2>\n <AccordionPanel pb={4}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim\n veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea\n commodo consequat.\n </AccordionPanel>\n </AccordionItem>\n\n <AccordionItem>\n <H2>\n <AccordionButton>\n <Box as=\"span\" flex='1' textAlign='left'>\n Section 2 title\n </Box>\n <AccordionIcon />\n </AccordionButton>\n </H2>\n <AccordionPanel pb={4}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim\n veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea\n commodo consequat.\n </AccordionPanel>\n </AccordionItem>\n</Accordion>\n * ?)\n */\nexport const Accordion = (props: AccordionProps) => (\n <ChakraAccordion { ...props } />\n)\n","import React from 'react'\nimport { AccordionButtonProps, AccordionButton as ChakraAccordionButton } from '@chakra-ui/react'\n\n/**\n * The button that toggles the expand/collapse state of the accordion item.\n * This button must be wrapped in an element with role heading.\n * @see Accordion\n * @see AcordionItem\n * @see {@link https://northlight.dev/reference/accordion-button}\n * @example\n * (Needs to be wrapped around AccordionItem and\n * Accordion context)\n * (?\n * <Accordion>\n * <AccordionItem>\n * <AccordionButton>Content</AccordionButton>\n * </AccordionItem>\n * </Accordion>\n * ?)\n */\nexport const AccordionButton = (props: AccordionButtonProps) => (\n <ChakraAccordionButton { ...props } />\n)\n","import React from 'react'\nimport {\n AccordionPanelProps,\n AccordionPanel as ChakraAccordionPanel,\n} from '@chakra-ui/react'\n\n/**\n * The container for the details to be revealed.\n * @see {@link htpts://northlight.dev/reference/accordion-panel}\n */\nexport const AccordionPanel = (props: AccordionPanelProps) => (\n <ChakraAccordionPanel { ...props } />\n)\n","import React from 'react'\nimport {\n AccordionItemProps,\n AccordionItem as ChakraAccordionItem,\n} from '@chakra-ui/react'\n\nexport const AccordionItem = (props: AccordionItemProps) => (\n <ChakraAccordionItem { ...props } />\n)\n","import { useEffect, useState } from 'react'\n\nexport const useDebounce = <T>(value: T, delay: number) => {\n const [ debouncedValue, setDebouncedValue ] = useState<T>(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n return () => {\n clearTimeout(handler)\n }\n }, [ value, delay ])\n\n return debouncedValue\n}\n","import { useState } from 'react'\nimport { useInterval } from '../use-interval'\n\nexport const useLoadingMessage = (prefix: string = '', delay: number = 300) => {\n const [ dots, setDots ] = useState('.')\n\n useInterval(() => {\n if (dots.length === 3) {\n setDots('.')\n } else {\n setDots(`${dots}.`)\n }\n }, delay)\n return `${prefix}${dots}`\n}\n","export const smoothScrollToBottom = (div: HTMLDivElement) => {\n const totalSteps = 50\n let currentStep = 0\n const targetScrollTop = div.scrollHeight - div.clientHeight\n const originalScrollTop = div.scrollTop\n const scrollInterval = setInterval(() => {\n if (currentStep >= totalSteps) {\n clearInterval(scrollInterval)\n } else {\n currentStep += 1\n const scrollProgress = currentStep / totalSteps\n const easing = 1 - (1 - scrollProgress) * (1 - scrollProgress) // quadratic ease out\n // eslint-disable-next-line no-param-reassign\n div.scrollTop = originalScrollTop + ((targetScrollTop - originalScrollTop) * easing)\n }\n }, 20)\n}\n","import { RefObject, useEffect } from 'react'\nimport { smoothScrollToBottom } from './utils/smooth-scroll-to-bottom'\n\nexport interface Message {\n content: string\n role: string\n type?: string\n data?: string\n}\n\nexport const useScrollToBottom = (scrollView: RefObject<HTMLDivElement>, messages: Message[]) => {\n useEffect(() => {\n const div = scrollView.current\n if (div) {\n smoothScrollToBottom(div)\n }\n }, [ messages ])\n}\n","import { useFocusManager } from '@react-aria/focus'\n\nexport const useArrowFocus = (columns: number) => {\n const {\n focusNext: next,\n focusPrevious: previous,\n focusFirst,\n focusLast,\n } = useFocusManager()\n\n const defaultOpts = {\n ArrowRight: {\n wrap: true,\n repeat: 1,\n },\n ArrowLeft: {\n wrap: true,\n repeat: 1,\n },\n ArrowDown: {\n wrap: false,\n repeat: columns,\n },\n ArrowUp: {\n wrap: false,\n repeat: columns,\n },\n }\n\n const focusPrevious = ({\n repeat,\n wrap,\n } = defaultOpts.ArrowLeft) => {\n for (let i = 0; i < repeat; i += 1) {\n previous({ wrap })\n }\n }\n\n const focusNext = ({\n repeat,\n wrap,\n } = defaultOpts.ArrowRight) => {\n for (let i = 0; i < repeat; i += 1) {\n next({ wrap })\n }\n }\n\n const defaultArrows = (e: any) => {\n switch (e.key) {\n case 'ArrowRight':\n focusNext(defaultOpts.ArrowRight)\n break\n case 'ArrowLeft':\n focusPrevious(defaultOpts.ArrowLeft)\n break\n case 'ArrowDown':\n e.preventDefault()\n focusNext(defaultOpts.ArrowDown)\n break\n case 'ArrowUp':\n e.preventDefault()\n focusPrevious(defaultOpts.ArrowUp)\n break\n default:\n break\n }\n }\n\n return {\n defaultArrows,\n focusPrevious,\n focusNext,\n focusFirst,\n focusLast,\n }\n}\n","import { ActionMeta, MultiValue, SingleValue } from 'chakra-react-select'\nimport { difference, isNil, last, map, prop } from 'ramda'\nimport { useRef } from 'react'\nimport { BasicOption, UseSelectCallbacksProps } from './types'\n\nexport const useSelectCallbacks = <\n T extends BasicOption,\n K extends boolean = false\n>({\n onChange,\n onAdd,\n onRemove,\n isMulti = false,\n value,\n }: UseSelectCallbacksProps<T, K>) => {\n const items = useRef<MultiValue<T> | SingleValue<T>>(value)\n\n const handleChange = (\n val: K extends true ? MultiValue<T> : SingleValue<T>,\n event: ActionMeta<T>\n ) => {\n onChange(val, event)\n if (!isMulti && !isNil(val)) {\n onAdd((val as T).value)\n } else if (\n !isNil(val) &&\n (val as T[]).length > (items.current as T[]).length\n ) {\n onAdd(last(val as T[])?.value)\n } else {\n const removedItems = map(\n prop('value'),\n difference(\n isMulti ? (items.current as T[]) : ([ items.current ] as T[]),\n val as T[]\n )\n )\n onRemove(removedItems.length === 1 ? removedItems[0] : removedItems)\n }\n items.current = val\n }\n return handleChange\n}\n","import { isNil } from 'ramda'\nimport { MutableRefObject, useEffect, useRef } from 'react'\n\nconst isBetween = (point: number, min: number, max: number) => (point >= min && point <= max)\n\nconst isEventInsideRect = (\n ref:MutableRefObject<HTMLElement>,\n event: MouseEvent | TouchEvent\n) => {\n let clientX\n let clientY\n\n if (event instanceof MouseEvent) {\n clientX = event.clientX\n clientY = event.clientY\n } else if (event instanceof TouchEvent && event.changedTouches[0]) {\n clientX = event.changedTouches[0].clientX\n clientY = event.changedTouches[0].clientY\n }\n\n if (isNil(clientX) || isNil(clientY)) return true\n\n const {\n top,\n right,\n left,\n bottom,\n } = ref.current.getBoundingClientRect()\n\n return isBetween(clientX, left, right) && isBetween(clientY, top, bottom)\n}\n\nconst isHtmlElementRef =\n (ref: MutableRefObject<HTMLElement | null>): ref is MutableRefObject<HTMLElement> =>\n !isNil(ref.current)\n\nexport const useOutsideRectClick =\n(ref: MutableRefObject<HTMLElement | null>, callback: (event: MouseEvent | TouchEvent) => void) => {\n const stateRef = useRef({\n isPointerDownOutsideRect: false,\n ignoreEmulatedMouseEvents: false,\n })\n\n const state = stateRef.current\n\n useEffect(() => {\n const handleMouseClick = (event: MouseEvent | TouchEvent) => {\n if (!isHtmlElementRef(ref)) {\n return\n }\n const isInBound = isEventInsideRect(ref, event)\n\n if (isInBound) return\n callback(event)\n }\n\n const onPointerDown: any = (event: MouseEvent | TouchEvent) => {\n if (!isHtmlElementRef(ref)) {\n return\n }\n if (!isEventInsideRect(ref, event)) {\n state.isPointerDownOutsideRect = true\n }\n }\n\n const onMouseUp: any = (event: MouseEvent) => {\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false\n return\n }\n\n if (state.isPointerDownOutsideRect) {\n state.isPointerDownOutsideRect = false\n handleMouseClick(event)\n }\n }\n\n const onTouchEnd = (event: TouchEvent) => {\n state.ignoreEmulatedMouseEvents = true\n if (state.isPointerDownOutsideRect) {\n state.isPointerDownOutsideRect = false\n handleMouseClick(event)\n }\n }\n\n document.addEventListener('mousedown', onPointerDown, true)\n document.addEventListener('mouseup', onMouseUp, true)\n document.addEventListener('touchstart', onPointerDown, true)\n document.addEventListener('touchend', onTouchEnd, true)\n\n return () => {\n document.removeEventListener('mousedown', onPointerDown, true)\n document.removeEventListener('mouseup', onMouseUp, true)\n document.removeEventListener('touchstart', onPointerDown, true)\n document.removeEventListener('touchend', onTouchEnd, true)\n }\n }, [ callback ])\n}\n","import { useMediaQuery } from '../use-media-query'\n\nexport const useScreenSize = () => {\n const screenSizes = useMediaQuery([ '(min-width: 1280px)', '(min-width: 1024px)' ])\n if (screenSizes[0]) {\n return 'lg'\n }\n if (screenSizes[1]) {\n return 'md'\n }\n return 'sm'\n}\n","import { DependencyList, EffectCallback, useEffect, useRef } from 'react'\n\nexport const useDidUpdateEffect = (effect: EffectCallback, dependencies: DependencyList) => {\n const didMountRef = useRef(false)\n\n useEffect(() => {\n if (didMountRef.current) {\n effect()\n }\n didMountRef.current = true\n }, dependencies)\n}\n","export const luminosity = (hexcolor: string) => {\n if (!hexcolor || typeof hexcolor !== 'string') return Number.NaN\n\n let color = hexcolor.trim()\n\n if (!/^#?[0-9a-f]{3}([0-9a-f]{3})?$/i.test(color)) {\n return Number.NaN\n }\n\n if (color[0] === '#') color = color.slice(1)\n if (color.length === 3) {\n color = color.split('').map((h) => h + h).join('')\n }\n\n const r = parseInt(color.substring(0, 2), 16)\n const g = parseInt(color.substring(2, 4), 16)\n const b = parseInt(color.substring(4, 6), 16)\n\n const brightness = (r * 299 + g * 587 + b * 114) / 1000\n return brightness\n}\n","import { useToken } from '@chakra-ui/system'\nimport { luminosity } from '../luminosity'\n\nfunction safeUseToken (tokenOrValue: string): string {\n try {\n return useToken('colors', tokenOrValue)\n } catch {\n return tokenOrValue\n }\n}\n\nexport const getContrastColor = (color: string) => {\n const textDefault = useToken('colors', 'text.default') // dark\n const textInverted = useToken('colors', 'text.inverted') // light\n\n const normalized = typeof color === 'string' ? color.trim() : (color as unknown as string)\n\n // If a concrete hex is passed, use it directly; else try token resolution.\n const isHex = /^#?[0-9a-f]{3}([0-9a-f]{3})?$/i.test(normalized)\n const bgResolved = isHex\n ? (normalized[0] === '#' ? normalized : `#${normalized}`)\n : safeUseToken(normalized)\n\n const lInverted = luminosity(textInverted)\n const lDefault = luminosity(textDefault)\n const threshold = (lInverted + lDefault) / 2\n const brightColor = lInverted > lDefault ? textInverted : textDefault\n const darkColor = lInverted > lDefault ? textDefault : textInverted\n\n const lBg = luminosity(bgResolved)\n if (Number.isNaN(lBg)) return undefined\n\n return lBg >= threshold ? darkColor : brightColor\n}\n","import { CSSObject } from '@emotion/react'\n\nexport const ring:CSSObject = {\n _focusVisible: {\n outline: 'none',\n ring: '2px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n },\n}\n","import { CSSObject } from '@emotion/react'\n\nexport const highlight:CSSObject = {\n px: '1',\n py: '0.5',\n rounded: '6',\n bg: 'teal.100',\n fontWeight: 'bold',\n}\n","import { palette } from '@northlight/tokens'\nimport { Color, ColorGrade } from '../../types'\n\nexport const getShades = (startShade: number, endShade?: number) => {\n let start: number\n let end: number\n if (!endShade) {\n start = startShade\n end = startShade\n } else if (endShade > startShade) {\n start = startShade\n end = endShade\n } else {\n start = endShade\n end = startShade\n }\n\n return (\n Object.keys(palette).reduce((colors, color) => {\n if (color === 'mono') return colors\n return colors.concat(\n Object.keys(palette[color as Color])\n .filter((value) =>\n parseInt(value, 10) >= start\n && parseInt(value, 10) <= end\n )\n .map((shade) => palette[color as Color][shade as unknown as ColorGrade])\n )\n }, [] as string[])\n )\n}\n","export const getInitials = (name: string) => {\n const [ firstName, lastName ] = name.toUpperCase().split(' ')\n return firstName && lastName\n ? `${firstName[0]}${lastName[0]}`\n : firstName[0]\n}\n","import { path, replace, split } from 'ramda'\nimport { FieldErrorsImpl, FieldValues } from 'react-hook-form'\nimport { FieldErrorType } from '../../components/form/types'\n\nexport function getFieldError<T extends FieldValues> (name: string, errors: FieldErrorsImpl<T>) {\n const nameWithoutRightBracket = replace(/]/g, '', name)\n const leftBracketAndDot = /[.[\\]]/g\n const fieldErrorPath = split(leftBracketAndDot, nameWithoutRightBracket)\n\n const fieldError: FieldErrorType<T> = path(fieldErrorPath, errors)\n return fieldError\n}\n","import React, { cloneElement, isValidElement } from 'react'\nimport { CSSObject } from '@emotion/react'\n\nexport const passPropsToChild = (child: React.ReactNode, styles: CSSObject) => (\n isValidElement(child)\n ? cloneElement(child, {\n ...styles,\n })\n : child\n)\n","import React, { Children } from 'react'\nimport { T } from 'ramda'\nimport { passPropsToChild } from './pass-props-to-child'\n\nexport const getChildrenWithProps = (\n children: React.ReactNode | React.ReactNode[],\n styles: Record<string, any>,\n predicate: (child: React.ReactNode, index: number) => boolean = T\n) => {\n const childrenAsArr = Children.toArray(children)\n const childrenWithoutFocus = childrenAsArr.map((child, i) => (\n predicate(child, i)\n ? passPropsToChild(child, { ...styles })\n : child\n ))\n return childrenWithoutFocus\n}\n","import { useToken } from '@chakra-ui/system'\n\nexport const addAlpha = (color: string, alpha: number = 1) => {\n const colorInHex = useToken('colors', color)\n\n const limitAlpha = Math.min(Math.max(alpha, 0), 1)\n const opacity = Math.round(limitAlpha * 255)\n\n return `${colorInHex}${opacity.toString(16).toUpperCase()}`\n}\n","/** A debounce function to be used together with Async select in SearchBar.\n * The reason to why the usual debounce hook does not work is because we\n * don't control the loadOptions call ourselves.\n *\n * Important to note is that the timeout here needs to NOT be reinstantiated\n * every render, otherwise it defeats the purpose as a new timeout will be\n * created every time the component re-renders.\n*/\nexport const createDebounceFunctionInstance = (delay: number) => {\n let timeout: any\n\n return (fn: any) => (...args: any) => {\n clearTimeout(timeout)\n timeout = setTimeout(() => {\n fn(...args)\n }, delay)\n }\n}\n","import { createContext, useContext } from 'react'\n\nexport type CurrentTheme = 'webappTheme' | 'tottTheme' | 'camphouseLightTheme'\n\nexport const CustomTheme = createContext<CurrentTheme>('webappTheme')\n\nexport const useCurrentTheme = () => {\n const theme = useContext(CustomTheme)\n return theme\n}\n","export const clamp = (minValue: number, maxValue: number, value: number) =>\n Math.min(Math.max(value, minValue), maxValue)\n","/* eslint-disable no-bitwise */\nimport { keys, omit } from 'ramda'\nimport { palette } from '@northlight/tokens'\n\nconst availableColorSchemes = keys(omit([ 'mono' ], palette))\n\nconst djb2Hash = (str: string, colors: string[]) => {\n let hash = 5381\n\n for (let i = 0; i < str.length; i += 1) {\n const char = str.charCodeAt(i)\n hash = (hash << 5) + hash + char\n\n hash &= hash\n }\n\n return (Math.abs(hash) % colors.length)\n}\n\nexport const getConsistentRandomColorFromString = (\n str: string,\n colors: string[] = availableColorSchemes\n) => {\n const index = djb2Hash(str, colors)\n return colors[index]\n}\n","import { MouseEvent, useState } from 'react'\nimport { clamp } from '../../utils'\n\ninterface UseResizeWidthProps {\n stationaryEdge?: 'left' | 'right'\n minWidthPx?: number\n maxWidthPx?: number\n defaultWidthPx: number\n}\n\nexport const useResizeWidth = ({\n stationaryEdge = 'left',\n minWidthPx = 0,\n maxWidthPx = Number.MAX_SAFE_INTEGER,\n defaultWidthPx,\n}: UseResizeWidthProps) => {\n const [ adjustableWidth, setAdjustableWidth ] = useState(defaultWidthPx)\n\n const resizeProps = {\n onMouseDown: (e: MouseEvent<unknown>) => {\n e.preventDefault()\n const startX = e.clientX\n const onMouseMove = (event: { clientX: number }) => {\n const newWidth =\n stationaryEdge === 'left'\n ? adjustableWidth + (event.clientX - startX)\n : adjustableWidth - (event.clientX - startX)\n setAdjustableWidth(clamp(minWidthPx, maxWidthPx, newWidth))\n }\n const onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove)\n document.removeEventListener('mouseup', onMouseUp)\n }\n document.addEventListener('mousemove', onMouseMove)\n document.addEventListener('mouseup', onMouseUp)\n },\n }\n\n return {\n adjustableWidth,\n setAdjustableWidth,\n resizeProps,\n }\n}\n","import { ChakraStylesConfig } from 'chakra-react-select'\nimport { getContrastColor } from '../../../utils'\n\nexport const customSelectStyles: ChakraStylesConfig<any> = {\n container: (provided) => ({\n ...provided,\n width: '100%',\n color: 'text.default',\n }),\n option: (provided, state) => ({\n ...provided,\n background: state.isFocused && 'background.select.option-focus',\n overflowWrap: 'anywhere',\n _active: {\n background: 'background.select.option-active',\n },\n }),\n valueContainer: (provided) => ({\n ...provided,\n paddingInlineStart: 'padding-inline.select.default',\n }),\n downChevron: (provided) => ({\n ...provided,\n color: 'icon.select.default',\n }),\n placeholder: (provided) => ({\n ...provided,\n color: 'text.select.placeholder',\n }),\n multiValue: (provided, state) => {\n const background = state.data.isFixed\n ? 'background.select.option-disabled'\n : state.data.color ?? provided.bgColor\n return ({\n ...provided,\n bgColor: background,\n color: getContrastColor(background),\n })\n },\n menuList: (provided) => ({\n ...provided,\n bgColor: 'background.default',\n }),\n}\n","import { ChakraStylesConfig } from 'chakra-react-select'\nimport { customSelectStyles } from '../../theme/components/select/custom-select'\n\nexport const tagsInputStyles = (\n isFocused: boolean,\n borderColor: string\n): ChakraStylesConfig<any> => ({\n ...customSelectStyles,\n container: (provided) => ({\n ...provided,\n w: 'full',\n height: '100%',\n resize: 'vertical',\n overflow: 'auto',\n minHeight: '20',\n borderColor: 'select.default',\n borderRadius: 'select.default',\n transitionDuration: 'normal',\n transitionProperty: 'box-shadow',\n color: 'text.default',\n boxShadow: isFocused ? `0 0 0 1px ${borderColor}` : 'none',\n }),\n control: (provided) => ({\n ...provided,\n minHeight: '20',\n height: '100%',\n alignItems: 'start',\n }),\n valueContainer: (provided) => ({\n ...provided,\n paddingInlineStart: 'padding-inline.select.default',\n overflowY: 'auto',\n maxH: '100%',\n }),\n})\n","export const scrollbarStyles = {\n '::-webkit-scrollbar': {\n width: '8px',\n height: '8px',\n },\n '::-webkit-scrollbar-track': {\n background: 'background.scrollbar.track',\n },\n '::-webkit-scrollbar-thumb': {\n borderRadius: 'scrollbar.thumb',\n border: '2px solid',\n borderColor: 'border.scrollbar.thumb',\n backgroundClip: 'padding-box !important',\n background: 'background.scrollbar.thumb',\n },\n '::-webkit-scrollbar-thumb:hover': {\n borderRadius: 'scrollbar.thumb',\n border: '1px solid ',\n borderColor: 'border.scrollbar.thumb',\n backgroundClip: 'padding-box !important',\n background: 'background.scrollbar.thumb',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Breadcrumb: ComponentMultiStyleConfig = {\n parts: [ 'link', 'separator' ],\n baseStyle: {\n link: {\n padding: [ 0.5, 1 ],\n color: 'text.default',\n fontWeight: 'semibold',\n fontSize: 'md',\n _hover: {\n bg: 'brand-alt',\n borderRadius: 'base',\n textDecor: 'none',\n },\n },\n separator: {\n color: 'subdued',\n fontSize: 'sm',\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Button: ComponentSingleStyleConfig = {\n sizes: {\n xs: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.xs,\n minWidth: sizing.button.xs,\n paddingInlineStart: spacing['padding-inline'].button.xs,\n paddingInlineEnd: spacing['padding-inline'].button.xs,\n }),\n sm: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n paddingInlineStart: spacing['padding-inline'].button.md,\n paddingInlineEnd: spacing['padding-inline'].button.md,\n }),\n md: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.md,\n minWidth: sizing.button.md,\n paddingInlineStart: spacing['padding-inline'].button.md,\n paddingInlineEnd: spacing['padding-inline'].button.md,\n }),\n lg: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.lg,\n minWidth: sizing.button.lg,\n paddingInlineStart: spacing['padding-inline'].button.lg,\n paddingInlineEnd: spacing['padding-inline'].button.lg,\n }),\n },\n baseStyle: ({ theme: { colors: color, radii: borderRadius } }) => ({\n color: color.text.default,\n borderRadius: borderRadius.button.default,\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n }),\n variants: {\n default: ({ theme: { colors: color } }) => ({\n bgColor: color.background.button.default,\n color: color.text.button.default,\n _hover: {\n bgColor: color.background.button['default-hover'],\n },\n _active: {\n bgColor: color.background.button['default-active'],\n },\n }),\n danger: ({ theme: { colors: color } }) => ({\n bgColor: color.background.button.danger,\n color: color.text.button.danger,\n _hover: {\n bg: color.background.button['danger-hover'],\n _disabled: {\n bgColor: color.background.button.danger,\n },\n },\n _active: {\n bgColor: color.background.button['danger-active'],\n },\n }),\n success: ({ theme: { colors: color } }) => ({\n bgColor: color.background.button.success,\n color: color.text.button.success,\n _hover: {\n bg: color.background.button['success-hover'],\n _disabled: {\n bgColor: color.background.button.success,\n },\n },\n _active: {\n bgColor: color.background.button['success-active'],\n },\n }),\n brand: ({ theme: { colors: color } }) => ({\n color: color.text.inverted,\n bgColor: color.background.button.brand,\n _hover: {\n bg: color.background.button['brand-hover'],\n _disabled: {\n bgColor: color.background.button.brand,\n },\n },\n _active: {\n bgColor: color.background.button['brand-active'],\n },\n }),\n brandSubdued: ({ theme: { colors: color } }) => ({\n color: color.text.button.brandSubdued,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button.brand,\n color: color.text.inverted,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.text.button.brandSubdued,\n },\n },\n _active: {\n bg: color.background.button['brand-hover'],\n color: color.text.inverted,\n },\n }),\n link: ({ theme: { colors: color } }) => ({\n textDecoration: 'underline',\n color: color.text.button.link,\n bgColor: color.background.button.link,\n _hover: {\n color: color.text.button['link-hover'],\n bgColor: color.background.button['link-hover'],\n },\n _active: {\n color: color.text.button['link-hover'],\n bgColor: color.background.button['link-active'],\n },\n }),\n outline: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n _hover: {\n bg: color.background.button['ghost-hover'],\n },\n _active: {\n bg: color.background.button['ghost-active'],\n },\n }),\n ghost: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button['ghost-hover'],\n _disabled: {\n bgColor: color.background.button.ghost,\n },\n },\n _active: {\n bgColor: color.background.button['ghost-active'],\n },\n }),\n ai: ({ theme: { colors: color } }) => ({\n color: color.text.inverted,\n bgColor: color.bg.ai.default,\n _hover: {\n bgColor: color.bg.ai.hover,\n _disabled: {\n bgColor: color.bg.ai.default,\n },\n },\n _active: {\n bgColor: color.bg.ai.active,\n },\n }),\n aiSubdued: ({ theme: { colors: color } }) => ({\n color: color.ai,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.bg.ai.default,\n color: color.text.inverted,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.ai,\n },\n },\n _active: {\n bg: color.bg.ai.hover,\n color: color.text.inverted,\n },\n }),\n accent: ({ theme: { colors: color } }) => ({\n color: color.text.button.accent,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button['ghost-active'],\n color: color.text.button.accent,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.text.button.accent,\n },\n },\n _active: {\n bg: color.background.button['ghost-active'],\n color: color.text.button.accent,\n },\n }),\n sidebar: ({ theme: { colors: color } }) => ({\n color: color.text.button.sidebar,\n bgColor: color.background.button.sidebar,\n _hover: {\n bg: color.background.button['sidebar-hover'],\n color: color.text.button.sidebar,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.text.button.sidebar,\n },\n },\n _active: {\n bg: color.background.button['sidebar-active'],\n color: color.text.button['sidebar-active'],\n },\n }),\n },\n defaultProps: {\n size: 'md',\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { keyframes } from '@emotion/react'\n\nconst pulseRing = keyframes`\n0% {\n transform: scale(0.33);\n}\n30% {\n transform: scale(0.66);\n},\n40%,\n50% {\n opacity: 0;\n}\n100% {\n opacity: 0;\n}\n`\n\nexport const Blinker: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: palette }, color, isBlinking }) => ({\n position: 'relative',\n borderRadius: '50%',\n bgColor: color === '' ? palette.blue['500'] : color,\n _before: isBlinking\n ? {\n content: \"''\",\n position: 'absolute',\n display: 'block',\n width: '300%',\n height: '300%',\n marginLeft: '-100%',\n marginTop: '-100%',\n borderRadius: '50%',\n bgColor: color === '' ? 'blue.500' : color,\n animation: `2.25s ${pulseRing} cubic-bezier(0.455, 0.03, 0.515, 0.955) -0.4s infinite`,\n zIndex: 'base',\n }\n : {},\n }),\n sizes: {\n '2xs': ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker['2xs'],\n width: sizing.blinker['2xs'],\n }),\n xs: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.xs,\n width: sizing.blinker.xs,\n }),\n sm: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.sm,\n width: sizing.blinker.sm,\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.md,\n width: sizing.blinker.md,\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.lg,\n width: sizing.blinker.lg,\n }),\n },\n defaultProps: {\n size: 'md',\n color: 'blue.500',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Checkbox: ComponentMultiStyleConfig = {\n parts: [ 'control', 'label' ],\n sizes: {\n sm: {\n control: {\n fontSize: 5,\n },\n },\n md: {\n control: {\n fontSize: 7,\n },\n },\n lg: {\n control: {\n fontSize: 8,\n },\n },\n },\n baseStyle: ({ theme: { colors: color, opacity } }) => ({\n control: {\n borderColor: color.border.checkbox.default,\n bg: color.background.checkbox.default,\n borderWidth: 2,\n _checked: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n _hover: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n },\n },\n _invalid: {\n borderColor: color.border.checkbox.error,\n bg: color.background.checkbox.default,\n _checked: {\n bg: color.background.checkbox.error,\n },\n _hover: {\n borderColor: color.border.checkbox.error,\n bg: color.background.checkbox.default,\n },\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n _hover: {\n borderColor: color.border.checkbox['default-hover'],\n bg: color.background.checkbox.default,\n },\n _disabled: {\n borderColor: color.border.checkbox.disabled,\n bg: color.background.checkbox.disabled,\n opacity: opacity.checkbox.disabled,\n _checked: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n opacity: opacity.checkbox.disabled,\n color: 'white',\n _hover: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n opacity: opacity.checkbox.disabled,\n },\n },\n _hover: {\n borderColor: color.border.checkbox.disabled,\n bg: color.background.checkbox.disabled,\n opacity: opacity.checkbox.disabled,\n },\n },\n },\n }),\n variants: {\n default: ({ theme: { radii: borderRadius } }) => ({\n control: {\n borderRadius: borderRadius.checkbox.default,\n },\n }),\n rounded: ({ theme: { radii: borderRadius } }) => ({\n control: {\n borderRadius: borderRadius.checkbox.full,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Input: ComponentMultiStyleConfig = {\n parts: [ 'field', 'addon' ],\n baseStyle: ({ theme: { colors: color } }) => ({\n field: {\n color: color.text.default,\n _placeholder: {\n color: color.text.input.placeholder,\n opacity: 1,\n },\n },\n }),\n variants: {\n outline: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n bgColor: color.background.input['outline-default'],\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n _focusVisible: {\n bgColor: color.background.input['outline-focus'],\n borderColor: color.border.input.focus,\n boxShadow: `inset 0 0 0 1px ${color.border.input.focus}`,\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n },\n _hover: {\n bgColor: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _invalid: {\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n },\n _disabled: {\n bgColor: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n addon: {\n border: 'none',\n background: 'none',\n color: color.text.default,\n },\n }),\n filled: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n borderRadius: borderRadius.input.filled,\n borderWidth: borderWidth.input.default,\n bgColor: color.background.input['filled-default'],\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n bgColor: color.background.input['filled-default'],\n },\n },\n _hover: {\n bgColor: color.background.input['filled-hover'],\n },\n _focusVisible: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.focus}`,\n borderColor: color.border.input.focus,\n bgColor: color.background.input['filled-focus'],\n _readOnly: {\n bgColor: color.background.input['filled-default'],\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['filled-error'],\n borderColor: color.border.input.error,\n },\n _disabled: {\n bgColor: color.background.input['filled-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n }),\n flushed: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.flushed,\n paddingInlineEnd: spacing['padding-inline'].input.flushed,\n bgColor: color.background.input['flushed-default'],\n borderRadius: borderRadius.input.flushed,\n borderBottomWidth: borderWidth.input.default,\n borderBottomColor: color.border.input.default,\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n _hover: {\n bgColor: color.background.input['flushed-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _focusVisible: {\n _hover: {\n boxShadow: `0 1px 0 0 ${color.border.input.focus}`,\n borderColor: color.border.input.focus,\n },\n _invalid: {\n boxShadow: `0 1px 0 0 ${color.border.input.error}`,\n borderColor: color.border.input.error,\n bgColor: color.background.input['flushed-error'],\n },\n },\n _invalid: {\n _hover: {\n boxShadow: `0 1px 0 0 ${color.border.input.error}`,\n borderColor: color.border.input.error,\n },\n bgColor: color.background.input['flushed-error'],\n },\n _disabled: {\n bgColor: color.background.input['flushed-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n }),\n ai: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n bgColor: color.background.input['outline-default'],\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n _focusVisible: {\n bgColor: color.background.input['outline-focus'],\n _hover: {\n boxShadow: `inset 0 0 0 1px ${color.border.ai}`,\n borderColor: color.border.ai,\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n },\n _hover: {\n bgColor: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _invalid: {\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n _disabled: {\n bgColor: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n addon: {\n border: 'none',\n background: 'none',\n color: color.text.default,\n },\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const PinInput: ComponentSingleStyleConfig = {\n variants: {\n outline: ({ theme: {\n radii: borderRadius,\n borders: borderWidth,\n colors: color,\n space: spacing,\n opacity,\n } }) => ({\n borderColor: color.border.input.default,\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n bg: color.background.input['outline-default'],\n color: color.text.default,\n paddingInline: spacing['padding-inline'].input.default,\n _hover: {\n bg: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _focus: {\n borderColor: color.border.input.focus,\n bg: color.background.input['outline-focus'],\n boxShadow: 'none',\n borderWidth: borderWidth.sm,\n },\n _invalid: {\n bg: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n _placeholder: {\n color: 'transparent',\n },\n },\n _disabled: {\n bg: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n _hover: {\n bg: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n },\n },\n _placeholder: {\n color: color.text.input.placeholder,\n },\n _readonly: {\n borderColor: color.border.input.readonly,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Select: ComponentMultiStyleConfig = {\n parts: [ 'field', 'icon' ],\n baseStyle: ({ theme: {\n radii: borderRadius,\n borders: borderWidth,\n colors: color,\n space: spacing,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].select.default,\n paddingInlineEnd: spacing['padding-inline'].select.default,\n borderWidth: borderWidth.select,\n color: color.text.default,\n borderColor: color.border.select.default,\n borderRadius: borderRadius.select.default,\n _hover: {\n borderColor: color.border.select['default-hover'],\n },\n _focusVisible: {\n borderColor: color.border.select.focus,\n boxShadow: `0 0 0 1px ${color.border.select.focus}`,\n },\n _invalid: {\n borderColor: color.border.select.error,\n boxShadow: 'none',\n },\n _readOnly: {\n borderWidth: borderWidth.select,\n borderColor: color.border.select.readonly,\n _focusVisible: {\n borderColor: color.border.select.readonly,\n },\n },\n _disabled: {\n borderColor: color.border.select.disabled,\n bg: color.background.select.disabled,\n _hover: {\n borderColor: color.border.select.disabled,\n },\n },\n _placeholder: {\n color: color.text.select.placeholder,\n },\n },\n icon: {\n color: color.icon.select.default,\n },\n }),\n variants: {\n outline: {},\n ai: ({ theme: { colors: color } }) => ({\n field: {\n _focusVisible: {\n borderColor: color.border.ai,\n boxShadow: `0 0 0 1px ${color.border.ai}`,\n },\n\n },\n\n }),\n\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Radio: ComponentMultiStyleConfig = {\n parts: [ 'control', 'label', 'container' ],\n sizes: {\n sm: ({ theme: { borders: borderWidth } }) => ({\n control: {\n _checked: {\n borderWidth: borderWidth.radio['checked-sm'],\n },\n },\n }),\n md: ({ theme: { borders: borderWidth } }) => ({\n control: {\n _checked: {\n borderWidth: borderWidth.radio['checked-md'],\n },\n },\n }),\n lg: ({ theme: { borders: borderWidth } }) => ({\n control: {\n _checked: {\n borderWidth: borderWidth.radio['checked-lg'],\n },\n },\n }),\n },\n baseStyle: ({ theme: { borders: borderWidth, colors: color } }) => ({\n control: {\n borderColor: color.border.radio.default,\n bg: color.background.radio.default,\n borderWidth: borderWidth.radio.default,\n _checked: {\n borderColor: color.border.radio.checked,\n bg: color.background.radio.checked,\n _hover: {\n borderColor: color.border.radio.checked,\n bg: color.background.radio.checked,\n },\n },\n _hover: {\n borderColor: color.border.radio['default-hover'],\n bg: color.background.radio.default,\n },\n _disabled: {\n borderColor: color.border.radio.disabled,\n bg: color.background.radio.disabled,\n _hover: {\n borderColor: color.border.radio.disabled,\n bg: color.background.radio.disabled,\n },\n },\n _invalid: {\n borderColor: color.border.radio.error,\n bg: color.background.radio.error,\n borderWidth: borderWidth.radio.default,\n _hover: {\n borderColor: color.border.radio.error,\n bg: color.background.radio.error,\n borderWidth: borderWidth.radio.default,\n },\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n defaultProps: {\n size: 'md',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Tabs: ComponentMultiStyleConfig = {\n parts: [ 'tab' ],\n baseStyle: ({ theme: { fontWeights: coreFontWeight } }) => ({\n tab: {\n fontWeight: coreFontWeight.semiBold,\n },\n }),\n variants: {\n 'soft-rounded': ({ theme: { colors: color } }) => ({\n tab: {\n borderRadius: 999,\n color: color.text.subdued,\n _selected: {\n bg: color.background.tabs['soft-rounded-active'],\n color: color.text.tabs['soft-rounded-active'],\n },\n _hover: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n rounded: ({ theme: { colors: color, radii: borderRadius } }) => ({\n tab: {\n color: color.text.subdued,\n borderRadius: borderRadius.button.default,\n _selected: {\n bg: color.background.tabs['soft-rounded-active'],\n color: color.text.tabs['soft-rounded-active'],\n },\n _hover: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n ai: ({ theme: { colors: color } }) => ({\n tab: {\n borderRadius: 999,\n _selected: {\n bgColor: color.bg.ai.default,\n color: color.text.inverted,\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n line: ({ theme: { colors: color } }) => ({\n tab: {\n color: color.text.subdued,\n _selected: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _hover: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _active: {\n bg: color.mono.transparent,\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n piped: ({ theme: { colors: color } }) => ({\n tab: {\n position: 'relative',\n color: color.text.default,\n paddingLeft: 4,\n opacity: 0.5,\n transition: 'opacity 0.2s ease-in-out',\n _before: {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n width: '7px',\n height: '70%',\n borderRadius: 999,\n bgColor: 'brand',\n },\n _selected: {\n opacity: 1,\n _hover: {\n opacity: 1,\n },\n },\n _hover: {\n opacity: 0.7,\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Textarea: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: {\n space: spacing,\n colors: color,\n borders: borderWidth,\n radii: borderRadius,\n } }) => ({\n paddingInlineStart: spacing['padding-inline'].textarea.default,\n paddingInlineEnd: spacing['padding-inline'].textarea.default,\n borderRadius: borderRadius.textarea.default,\n borderWidth: borderWidth.textarea.default,\n borderColor: color.border.textarea.default,\n color: color.text.default,\n bgColor: color.background.textarea.default,\n _hover: {\n borderColor: color.border.textarea['default-hover'],\n bgColor: color.background.textarea.hover,\n },\n _focusVisible: {\n borderColor: color.border.textarea.focus,\n boxShadow: `0 0 0 1px ${color.border.textarea.focus}`,\n bgColor: color.background.textarea.active,\n },\n _invalid: {\n boxShadow: 'none',\n borderColor: color.border.textarea.error,\n bgColor: color.background.textarea.error,\n },\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.textarea.readonly,\n bgColor: color.background.textarea.default,\n },\n _hover: {\n borderColor: color.border.textarea.readonly,\n },\n },\n _disabled: {\n bgColor: color.background.textarea.disabled,\n _hover: {\n borderColor: color.border.textarea.default,\n },\n },\n _placeholder: {\n color: color.text.textarea.placeholder,\n },\n }),\n variants: {\n outline: {},\n ai: ({ theme: { colors: color } }) => ({\n _focusVisible: {\n _hover: {\n boxShadow: `0 0 0 1px ${color.border.ai}`,\n borderColor: color.border.ai,\n },\n },\n }),\n\n },\n}\n","import {\n ComponentSingleStyleConfig,\n} from '@chakra-ui/react'\n\nexport const Link: ComponentSingleStyleConfig = {\n baseStyle: ({ colorScheme }) => ({\n _focus: {\n ring: '2px',\n ringColor: `${colorScheme}.100`,\n ringOffset: '1px',\n },\n }),\n defaultProps: {\n colorScheme: 'mediatoolBlue',\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Switch: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color, opacity } }) => ({\n _disabled: {\n opacity: opacity.switch.disabled,\n },\n track: {\n bgColor: color.background.switch.default,\n _checked: {\n bgColor: color.background.switch['default-checked'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n thumb: {\n bgColor: color.background.switch.thumb,\n },\n }),\n}\n","import { path } from 'ramda'\nimport type { CurrentTheme } from '../utils'\n\nconst themeMap: Record<CurrentTheme, Record<string, string>> = {\n camphouseLightTheme: {\n green: 'moss',\n pink: 'rose',\n orange: 'coral',\n gray: 'smoke',\n },\n webappTheme: {},\n tottTheme: {},\n}\n\nexport interface ProcessColorSchemeBasedOnThemeProps {\n currentTheme: CurrentTheme\n colorScheme: string\n}\n\nexport const processColorSchemeBasedOnTheme = ({\n currentTheme,\n colorScheme,\n}: ProcessColorSchemeBasedOnThemeProps) =>\n path<string>([ currentTheme, colorScheme ], themeMap) ?? colorScheme\n","import { ComponentMultiStyleConfig, useToken } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\nimport { processColorSchemeBasedOnTheme } from '../../process-color-scheme-based-on-theme'\n\nexport const Tag: ComponentMultiStyleConfig = {\n parts: [ 'container' ],\n baseStyle: {\n container: {\n fontWeight: 'semibold',\n },\n },\n sizes: {\n sm: {\n container: {\n borderRadius: 'tag.default',\n },\n },\n md: {\n container: {\n borderRadius: 'tag.default',\n },\n },\n lg: {\n container: {\n borderRadius: 'tag.default',\n },\n },\n },\n variants: {\n solid: ({ theme: { colors }, bgColor, colorScheme, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const tagBgColorRaw =\n bgColor ??\n (colors[processedColorScheme] && colors[processedColorScheme][500]\n ? colors[processedColorScheme][500]\n : processedColorScheme)\n\n const tagBgColor = typeof tagBgColorRaw === 'string' ? tagBgColorRaw.trim() : tagBgColorRaw\n\n const tagColor = getContrastColor(useToken('colors', tagBgColor))\n\n return {\n container: {\n bgColor: tagBgColor,\n color: tagColor,\n },\n }\n },\n subtle: ({ theme: { colors }, colorScheme, bgColor, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const tagBgColorRaw =\n bgColor ??\n (colors[processedColorScheme] && colors[processedColorScheme][100]\n ? colors[processedColorScheme][100]\n : processedColorScheme)\n\n const tagBgColor = typeof tagBgColorRaw === 'string' ? tagBgColorRaw.trim() : tagBgColorRaw\n\n const tagColor = getContrastColor(useToken('colors', tagBgColor))\n\n return {\n container: {\n bgColor: tagBgColor,\n color: tagColor,\n },\n }\n },\n ai: {\n container: {\n bgColor: 'bg.ai.default',\n color: 'text.inverted',\n },\n },\n },\n defaultProps: {\n size: 'md',\n colorScheme: 'background.tag.default',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Alert: ComponentMultiStyleConfig = {\n parts: [ 'container', 'title', 'description', 'icon' ],\n baseStyle: ({ theme: {\n radii: borderRadius,\n colors: color,\n space: coreSpacing,\n } }) => ({\n container: {\n borderRadius: borderRadius.toast.default,\n color: color.text.default,\n paddingEnd: coreSpacing[8],\n width: 'auto',\n display: 'flex',\n },\n title: {\n lineHeight: '1.25',\n overflowWrap: 'break-word',\n },\n description: {\n lineHeight: '1.25',\n overflowWrap: 'break-word',\n },\n icon: {\n boxSize: 6,\n },\n }),\n variants: {\n success: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.success,\n },\n icon: {\n color: color.icon.toast.success,\n },\n }),\n warning: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.warning,\n },\n icon: {\n color: color.icon.toast.warning,\n },\n }),\n info: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.info,\n },\n icon: {\n color: color.icon.toast.info,\n },\n }),\n error: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.error,\n color: color.text.toast.error,\n },\n icon: {\n color: color.icon.toast.error,\n },\n }),\n ai: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.bg.ai.default,\n color: color.text.inverted,\n },\n icon: {\n color: color.icon.toast.ai,\n },\n }),\n default: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.bg.layer,\n color: color.text.default,\n },\n icon: {\n color: color.icon.toast.default,\n },\n }),\n ghost: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.bg.base,\n color: color.text.default,\n borderWidth: 'xs',\n borderColor: color.border.default,\n borderStyle: 'solid',\n },\n icon: {\n color: color.icon.toast.ghost,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const NumberInput: ComponentMultiStyleConfig = {\n parts: [ 'root', 'field', 'stepper', 'stepperGroup' ],\n sizes: {\n sm: ({ theme: { radii: borderRadius, sizes: sizing } }) => ({\n field: {\n borderRadius: borderRadius.input.outline,\n },\n stepperGroup: {\n height: sizing['8'],\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n stepperGroup: {\n height: sizing['10'],\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n stepperGroup: {\n height: sizing['12'],\n },\n }),\n },\n baseStyle: ({ theme: {\n sizes: sizing,\n space: spacing,\n colors: color,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n }, isReadOnly, minWidth, minW }) => ({\n root: {\n borderRadius: borderRadius.input.outline,\n },\n field: {\n minWidth: minWidth ?? minW ?? sizing['44'],\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n WebkitPaddingStart: spacing['padding-inline'].input.default,\n WebkitPaddingEnd: spacing['padding-inline'].input.default,\n color: color.text.default,\n bg: color.background.input['outline-default'],\n\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n paddingRight: spacing.paddingRight['number-input'].field,\n _hover: {\n bg: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _focusVisible: {\n bg: color.background.input['outline-focus'],\n borderColor: color.border.input.focus,\n boxShadow: `inset 0 0 0 1px ${color.border.textarea.focus}`,\n },\n _invalid: {\n bg: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n },\n _disabled: {\n bg: color.background.input['outline-disabled'],\n opacity: opacity.input.disabled,\n borderColor: color.border.input.disabled,\n },\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n boxShadow: 'none',\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n },\n stepperGroup: {\n width: 'auto',\n paddingRight: spacing.paddingRight['number-input'].stepper,\n },\n stepper: {\n _first: {\n border: 'none',\n borderTopRightRadius: borderRadius['input-stepper'].default,\n borderRadius: borderRadius['input-stepper'].default,\n bg: color.background['input-stepper'].default,\n opacity: isReadOnly ? opacity.input.disabled : 'auto',\n _hover: {\n bg: isReadOnly ? 'none' : color.background['input-stepper'].hover,\n },\n _active: {\n bg: color.background['input-stepper'].active,\n },\n _disabled: {\n bg: color.background['input-stepper'].disabled,\n color: color.icon['input-stepper'].disabled,\n },\n },\n _last: {\n border: 'none',\n bg: color.background['input-stepper'].default,\n borderBottomRightRadius: borderRadius['input-stepper'].default,\n borderRadius: borderRadius['input-stepper'].default,\n opacity: isReadOnly ? opacity.input.disabled : 'auto',\n _hover: {\n bg: isReadOnly ? 'none' : color.background['input-stepper'].hover,\n },\n _active: {\n bg: color.background['input-stepper'].active,\n },\n _disabled: {\n bg: color.background['input-stepper'].disabled,\n color: color.icon['input-stepper'].disabled,\n },\n },\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const NotificationIconButton: ComponentMultiStyleConfig = {\n parts: [ 'container', 'notifier' ],\n sizes: {\n xs: {\n notifier: {\n top: '0.5',\n right: '0.5',\n },\n },\n sm: {\n notifier: {\n top: '0.5',\n right: '0.5',\n },\n },\n md: {\n notifier: {\n top: '1',\n right: '1',\n },\n },\n lg: {\n notifier: {\n top: '2',\n right: '2',\n },\n },\n },\n variants: {\n link: {\n notifier: {\n position: 'absolute',\n top: '0',\n right: '0',\n zIndex: 'base',\n },\n },\n },\n baseStyle: () => ({\n container: {\n position: 'relative',\n },\n notifier: {\n position: 'absolute',\n top: '1',\n right: '1',\n zIndex: 'base',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { ring } from '../../../utils'\n\nexport const Calendar: ComponentMultiStyleConfig = {\n parts: [ 'container', 'dateSelect', 'dayLabel', 'rangeCalendarContainer' ],\n baseStyle: ({ theme: {\n space: spacing,\n sizes: sizing,\n colors: color,\n } }) => ({\n container: {\n p: spacing[2],\n w: sizing[64],\n bgColor: 'background.default',\n border: '1px solid',\n borderColor: 'border.input.default',\n borderRadius: 'input.outline',\n },\n rangeCalendarContainer: {\n p: '3',\n w: '128',\n bgColor: 'background.default',\n borderRadius: 'input.outline',\n },\n dateSelect: {\n fontWeight: 'semibold',\n border: 'none',\n padding: '1',\n borderRadius: 'md',\n color: color.text.default,\n bgColor: color.background.button.ghost,\n _hover: {\n cursor: 'pointer',\n bgColor: color.background.button['ghost-hover'],\n },\n _active: {\n bgColor: color.background.button['ghost-active'],\n },\n ...ring,\n },\n dayLabel: {\n color: color.gray[600],\n fontSize: 'xs',\n p: spacing[2],\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const DragAndDrop: ComponentMultiStyleConfig = {\n parts: [ 'dropZone' ],\n baseStyle: ({ sx }) => ({\n dropZone: merge({\n borderWidth: 'sm',\n borderStyle: 'dashed',\n borderColor: 'border.default',\n padding: '4',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '4',\n justifyContent: 'center',\n textAlign: 'center',\n minH: '56',\n minW: '56',\n bgColor: 'bg.filled',\n }, sx),\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const DatePicker: ComponentMultiStyleConfig = {\n parts: [ 'group', 'styledField', 'dateField', 'dateSegment' ],\n baseStyle: ({ theme: { colors: color, opacity } }) => ({\n group: {\n position: 'relative',\n alignItems: 'center',\n flex: 1,\n },\n styledField: {\n bgColor: 'background.default',\n _focusWithin: {\n bgColor: color.background.input['outline-focus'],\n borderColor: color.border.textarea.focus,\n boxShadow: `inset 0 0 0 1px ${color.border.textarea.focus}`,\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n borderColor: color.border.input.error,\n },\n _disabled: {\n bgColor: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n dateField: {\n width: '100%',\n height: '100%',\n alignItems: 'center',\n },\n dateSegment: {\n caretColor: 'transparent',\n boxSizing: 'content-box',\n textAlign: 'center',\n outline: 'none',\n rounded: 'md',\n _focus: {\n bgColor: 'bg.brand.default',\n color: color.text.inverted,\n },\n _placeholder: {\n color: 'destructive',\n },\n },\n }),\n variants: {\n outline: ({\n theme: { colors: color, radii: borderRadius, borders: borderWidth },\n }) => ({\n styledField: {\n bgColor: color.background.input['outline-default'],\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n },\n }),\n filled: ({\n theme: { colors: color, radii: borderRadius, borders: borderWidth },\n }) => ({\n styledField: {\n bgColor: color.background.input['filled-default'],\n borderRadius: borderRadius.input.filled,\n borderWidth: borderWidth.input.default,\n borderColor: color.background.input['filled-default'],\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const FlipButton: ComponentMultiStyleConfig = {\n parts: [ 'container', 'button', 'buttonIcon' ],\n sizes: {\n xs: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].xs,\n minWidth: sizing['flip-button'].xs,\n paddingInlineStart: spacing['padding-inline']['flip-button'].xs,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].xs,\n fontSize: 'xs',\n },\n buttonIcon: {\n boxSize: sizing.icon.xs,\n },\n }),\n sm: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].sm,\n minWidth: sizing['flip-button'].sm,\n paddingInlineStart: spacing['padding-inline']['flip-button'].md,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].md,\n fontSize: 'sm',\n buttonIcon: {\n boxSize: sizing.icon.sm,\n },\n },\n }),\n md: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].md,\n minWidth: sizing['flip-button'].md,\n paddingInlineStart: spacing['padding-inline']['flip-button'].md,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].md,\n fontSize: 'md',\n buttonIcon: {\n boxSize: sizing.icon.md,\n },\n },\n }),\n lg: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].lg,\n minWidth: sizing['flip-button'].lg,\n paddingInlineStart: spacing['padding-inline']['flip-button'].lg,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].lg,\n fontSize: 'lg',\n buttonIcon: {\n boxSize: sizing.icon.lg,\n },\n },\n }),\n },\n baseStyle: ({ theme: {\n space: spacing,\n sizes: sizing,\n colors: color,\n opacity,\n radii: borderRadius,\n fontWeights: coreFontWeight,\n }, numberOfButtons }) => ({\n container: {\n borderRadius: borderRadius['flip-button'].default,\n paddingInlineStart: spacing['padding-inline']['flip-button-group'].default,\n paddingInlineEnd: spacing['padding-inline']['flip-button-group'].default,\n paddingY: spacing.paddingY['flip-button-group'].default,\n disply: 'grid',\n width: '100%',\n gap: spacing['padding-inline']['flip-button'].gap,\n gridTemplateColumns: `repeat(${numberOfButtons}, minmax(${sizing[32]}, 1fr))`,\n gridTemplateRows: '1fr',\n overflowX: 'auto',\n },\n button: {\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n color: color.text['flip-button'].default,\n cursor: 'pointer',\n borderRadius: borderRadius['flip-button'].default,\n fontWeight: coreFontWeight.semiBold,\n _disabled: {\n opacity: opacity['flip-button'].disabled,\n },\n _checked: {\n color: color.text['flip-button'].inverted,\n },\n },\n }),\n variants: {\n default: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color.background['flip-button']['default-deselected-blue'],\n }, sx),\n button: {\n bgColor: color.background['flip-button']['default-deselected-blue'],\n _hover: {\n bgColor: color.background['flip-button']['hover-deselected-blue'],\n },\n _checked: {\n bgColor: color.background['flip-button']['default-selected-blue'],\n _hover: {\n bgColor: color.background['flip-button']['default-selected-blue'],\n },\n },\n },\n }),\n brand: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color.background['flip-button']['default-deselected-brand'],\n }, sx),\n button: {\n bgColor: color.background['flip-button']['default-deselected-brand'],\n _hover: {\n bgColor: color.background['flip-button']['hover-deselected-brand'],\n },\n _checked: {\n bgColor: color.background['flip-button']['default-selected-brand'],\n _hover: {\n bgColor: color.background['flip-button']['default-selected-brand'],\n },\n },\n },\n }),\n light: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color['base-alt'],\n }, sx),\n button: {\n bgColor: 'mono.transparent',\n _hover: {\n bgColor: color.background.button['ghost-hover'],\n },\n _checked: {\n color: color.text['flip-button'].default,\n bgColor: 'bg.base',\n _hover: {\n bgColor: 'bg.base',\n },\n },\n },\n }),\n ai: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color.background['flip-button']['default-deselected-brand'],\n }, sx),\n button: {\n bgColor: 'transparent',\n _hover: {\n bgColor: 'transparent',\n },\n _checked: {\n bgColor: color.bg.ai.default,\n _hover: {\n bgColor: color.bg.ai.default,\n },\n },\n },\n }),\n },\n defaultProps: {\n size: 'md',\n variant: 'default',\n },\n}\n","import {\n ComponentSingleStyleConfig,\n} from '@chakra-ui/react'\n\nexport const Spinner: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color, borders: borderWidth } }) => ({\n borderWidth: borderWidth.spinner.default,\n color: color.background.spinner.thumb,\n borderBottomColor: color.background.spinner.track,\n borderLeftColor: color.background.spinner.track,\n }),\n}\n","import { randomColor } from '@chakra-ui/theme-tools'\nimport { getShades } from '../../../utils'\n\nconst possibleBgColors = getShades(400, 600)\n\nexport const getAvatarBgColor = (image: string, name: string, color: any) => {\n if (image) return color.background.avatar.image\n if (name) return randomColor({ string: name, colors: possibleBgColors })\n\n return color.background.avatar.default\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\nimport { getAvatarBgColor } from './get-avatar-bg-color'\n\nexport const Avatar: ComponentMultiStyleConfig = {\n parts: [ 'container', 'text', 'badge', 'icon' ],\n sizes: {\n '2xs': ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar['2xs'],\n height: sizing.avatar['2xs'],\n },\n text: {\n lineHeight: sizing.avatar['2xs'],\n fontSize: '3xs',\n },\n }),\n xs: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.xs,\n height: sizing.avatar.xs,\n },\n text: {\n lineHeight: sizing.avatar.xs,\n fontSize: 'xs',\n },\n }),\n sm: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.sm,\n height: sizing.avatar.sm,\n },\n text: {\n lineHeight: sizing.avatar.sm,\n fontSize: 'sm',\n },\n icon: {\n boxSize: sizing.avatar.sm,\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.md,\n height: sizing.avatar.md,\n },\n text: {\n lineHeight: sizing.avatar.md,\n fontSize: 'md',\n },\n icon: {\n boxSize: sizing.avatar.md,\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.lg,\n height: sizing.avatar.lg,\n },\n text: {\n lineHeight: sizing.avatar.lg,\n fontSize: 'lg',\n },\n icon: {\n boxSize: sizing.avatar.lg,\n },\n }),\n xl: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.xl,\n height: sizing.avatar.xl,\n },\n text: {\n lineHeight: sizing.avatar.xl,\n fontSize: '2xl',\n },\n }),\n '2xl': ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar['2xl'],\n height: sizing.avatar['2xl'],\n },\n text: {\n lineHeight: sizing.avatar['2xl'],\n fontSize: '4xl',\n },\n }),\n\n },\n baseStyle: ({ theme: {\n colors: color,\n sizes: sizing,\n radii: borderRadius,\n }, image, name, bgColor }) => {\n const avatarBgColor = bgColor || getAvatarBgColor(image, name, color)\n\n return {\n container: {\n bgColor: avatarBgColor,\n color: getContrastColor(avatarBgColor),\n display: 'grid',\n placeItems: 'center',\n objectFit: 'cover',\n position: 'relative',\n },\n userImage: {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n badge: {\n position: 'absolute',\n bottom: `-${sizing['1']}`,\n right: `-${sizing['1']}`,\n minWidth: sizing['5'],\n height: sizing['5'],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n fontSize: 'xs',\n fontWeight: 'semibold',\n padding: sizing['0a'],\n bgColor: color.destructive,\n color: color.text.inverted,\n borderRadius: borderRadius.avatar.square,\n border: 'none',\n },\n\n }\n },\n variants: {\n square: ({ theme: { radii: borderRadius } }) => ({\n container: {\n aspectRatio: '1 / 1',\n borderRadius: borderRadius.avatar.square,\n '> img': {\n borderRadius: borderRadius.avatar.square,\n aspectRatio: '1 / 1',\n },\n },\n badge: {\n borderRadius: borderRadius.avatar.square,\n },\n }),\n rounded: ({ theme: { radii: borderRadius } }) => ({\n container: {\n aspectRatio: '1 / 1',\n borderRadius: borderRadius.avatar.rounded,\n '> img': {\n borderRadius: borderRadius.avatar.rounded,\n aspectRatio: '1 / 1',\n },\n },\n badge: {\n borderRadius: borderRadius.avatar.rounded,\n },\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const CloseButton: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button['ghost-hover'],\n _disabled: {\n bgColor: color.background.button.ghost,\n },\n },\n _active: {\n bgColor: color.background.button['ghost-active'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n }),\n defaultProps: {\n size: 'md',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Modal: ComponentMultiStyleConfig = {\n parts: [ 'overlay', 'closeButton', 'dialog' ],\n sizes: {\n huge: {\n dialog: {\n width: '90%',\n maxW: '96rem',\n aspectRatio: '16/9',\n },\n },\n },\n baseStyle: ({ theme }) => {\n const {\n typography: { headings: { h4 } },\n } = theme\n return ({\n overlay: {\n bgColor: 'background.modal.overlay',\n backdropFilter: 'blur(8px)',\n },\n closeButton: {\n top: 4,\n right: 4,\n },\n dialog: {\n bgColor: 'background.default',\n borderRadius: 'modal.dialog',\n },\n header: {\n fontSize: h4.fontSize,\n paddingTop: 'paddingTop.modal.header',\n paddingBottom: 'paddingBottom.modal.header',\n border: 'modal.header',\n borderBottomColor: 'border.modal.header',\n borderBottomStyle: 'solid',\n },\n body: {\n paddingTop: 'paddingTop.modal.body',\n paddingBottom: 'paddingBottom.modal.body',\n },\n footer: {\n paddingTop: 'paddingTop.modal.footer',\n paddingBottom: 'paddingBottom.modal.footer',\n },\n })\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { cssVar } from '@chakra-ui/theme-tools'\n\nconst $arrowBg = cssVar('popper-arrow-bg')\nconst $arrowBorder = cssVar('popper-arrow-shadow-color')\n\nexport const Tooltip: ComponentSingleStyleConfig = {\n baseStyle: ({\n theme: { colors: color, space: spacing, radii: borderRadius },\n }) => ({\n color: color.text.inverted,\n paddingInline: spacing['padding-inline'].tooltip.default,\n paddingY: spacing.paddingY.tooltip.default,\n borderRadius: borderRadius.tooltip.default,\n backgroundColor: color.background.tooltip.default,\n [$arrowBg.variable]: color.background.tooltip.default,\n }),\n variants: {\n default: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n bgColor: color.bg.base,\n borderWidth: 'xs',\n borderColor: color.border.default,\n borderStyle: 'solid',\n [$arrowBg.variable]: color.bg.base,\n [$arrowBorder.variable]: color.border.default,\n }),\n success: ({ theme: { colors: color } }) => ({\n color: 'text.over.success',\n bgColor: 'success-alt',\n [$arrowBg.variable]: color['success-alt'],\n }),\n info: ({ theme: { colors: color } }) => ({\n color: 'text.over.brand',\n bgColor: 'brand-alt',\n [$arrowBg.variable]: color['brand-alt'],\n }),\n ghost: ({ theme: { colors: color } }) => ({\n color: 'text.default',\n bgColor: color.bg.base,\n borderWidth: 'xs',\n borderColor: color.border.default,\n [$arrowBorder.variable]: color.border.default,\n borderStyle: 'solid',\n [$arrowBg.variable]: color.bg.base,\n }),\n warning: ({ theme: { colors: color } }) => ({\n color: 'text.over.warning',\n bgColor: color['info-alt'],\n [$arrowBg.variable]: color['info-alt'],\n }),\n danger: ({ theme: { colors: color } }) => ({\n color: 'text.over.error',\n bgColor: color['destructive-alt'],\n [$arrowBg.variable]: color['destructive-alt'],\n }),\n error: ({ theme: { colors: color } }) => ({\n color: 'text.over.error',\n bgColor: color['destructive-alt'],\n [$arrowBg.variable]: color['destructive-alt'],\n }),\n ai: ({ theme: { colors: color } }) => ({\n bgColor: color.bg.ai.default,\n [$arrowBg.variable]: color.bg.ai.default,\n\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Icon: ComponentSingleStyleConfig = {\n sizes: {\n xs: {\n boxSize: 'icon.xs',\n },\n sm: {\n boxSize: 'icon.sm',\n },\n md: {\n boxSize: 'icon.md',\n },\n lg: {\n boxSize: 'icon.lg',\n },\n },\n baseStyle: ({ boxSize, color }) => ({\n boxSize: boxSize || 'icon.default',\n color: color || 'inherit',\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const ClipboardInput: ComponentMultiStyleConfig = {\n parts: [ 'button', 'icon', 'tooltip' ],\n sizes: {\n sm: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing.button.xs,\n minWidth: sizing.button.xs,\n },\n icon: {\n boxSize: sizing.icon.xs,\n },\n tooltip: {\n paddingInline: spacing['padding-inline'].tooltip.sm,\n paddingY: spacing.paddingY.tooltip.sm,\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n },\n icon: {\n boxSize: sizing.icon.sm,\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.md,\n minWidth: sizing.button.md,\n },\n icon: {\n boxSize: sizing.icon.md,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\n\nexport const ColorPicker: ComponentMultiStyleConfig = {\n parts: [ 'colorButton', 'trigger', 'heading' ],\n baseStyle: ({ theme, selectedColor }) => {\n const { sizes: sizing, colors: color } = theme\n return ({\n heading: {\n border: 'none',\n paddingInlineStart: sizing['4'],\n paddingInlineEnd: sizing['2'],\n paddingBottom: sizing['0'],\n fontSize: 'md',\n fontWeight: 'semibold',\n },\n trigger: {\n bgColor: selectedColor ?? color.background.button.default,\n color: selectedColor ? getContrastColor(selectedColor) : 'unset',\n _hover: {\n bgColor: selectedColor ?? color.background.button['default-hover'],\n },\n _active: {\n bgColor: selectedColor ?? color.background.button['default-active'],\n },\n },\n colorButton: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n _hover: {\n ring: '2px',\n ringOffset: '1px',\n ringColor: `${color.border.input['default-hover']}`,\n },\n },\n })\n },\n sizes: {\n sm: ({ theme: { sizes: sizing } }) => ({\n trigger: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n trigger: {\n height: sizing.button.md,\n minWidth: sizing.button.md,\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n trigger: {\n height: sizing.button.lg,\n minWidth: sizing.button.lg,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Step: ComponentMultiStyleConfig = {\n parts: [ 'step', 'label', 'description', 'indicator' ],\n baseStyle: ({ theme: { colors: color, fontWeights, space: spacing, borders: borderWidth } }) => ({\n step: {\n justifyContent: 'start',\n alignItems: 'start',\n bgColor: color.background.step.default,\n borderTopWidth: borderWidth.step.default,\n borderColor: color.border.step.default,\n borderBottom: 'none',\n paddingInline: spacing['padding-inline'].step.default,\n color: color.text.subdued,\n _hover: {\n bgColor: color.background.step.hover,\n borderColor: color.border.step.hover,\n },\n _disabled: {\n cursor: 'not-allowed',\n _hover: { borderColor: color.border.step.default },\n },\n _active: {\n bgColor: color.background.step.active,\n },\n _selected: {\n bgColor: color.background.step.selected,\n borderColor: color.border.step.selected,\n color: color.border.step.selected,\n '[data-part=\"indicator\"]': {\n bg: color.border.step.selected,\n },\n _hover: {\n borderColor: color.border.step.selected,\n color: color.border.step.selected,\n },\n },\n },\n label: {\n color: 'inherit',\n textAlign: 'start',\n fontWeight: fontWeights.bold,\n },\n description: {\n textAlign: 'start',\n fontWeight: fontWeights.semiBold,\n color: color.text.default,\n },\n indicator: {\n minW: 6,\n minH: 6,\n borderRadius: 'full',\n bg: color.text.subdued,\n color: 'mono.white',\n fontWeight: fontWeights.bold,\n fontSize: 'xs',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: '2xs',\n },\n }),\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const StepList: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { sizes: sizing }, tabs }) => ({\n display: 'grid',\n width: '100%',\n gridTemplateColumns: `repeat(${tabs}, minmax(${sizing[32]}, 1fr))`,\n gridTemplateRows: '1fr',\n overflowX: 'auto',\n borderBottom: 'none',\n paddingBottom: sizing[2],\n }),\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H1: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h1 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h1.fontFamily,\n fontWeight: h1.fontWeight,\n lineHeight: h1.lineHeight,\n fontSize: h1.fontSize,\n letterSpacing: h1.letterSpacing,\n textTransform: h1.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H2: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h2 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h2.fontFamily,\n fontWeight: h2.fontWeight,\n lineHeight: h2.lineHeight,\n fontSize: h2.fontSize,\n letterSpacing: h2.letterSpacing,\n textTransform: h2.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H3: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h3 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h3.fontFamily,\n fontWeight: h3.fontWeight,\n lineHeight: h3.lineHeight,\n fontSize: h3.fontSize,\n letterSpacing: h3.letterSpacing,\n textTransform: h3.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H4: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h4 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h4.fontFamily,\n fontWeight: h4.fontWeight,\n lineHeight: h4.lineHeight,\n fontSize: h4.fontSize,\n letterSpacing: h4.letterSpacing,\n textTransform: h4.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H5: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h5 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h5.fontFamily,\n fontWeight: h5.fontWeight,\n lineHeight: h5.lineHeight,\n fontSize: h5.fontSize,\n letterSpacing: h5.letterSpacing,\n textTransform: h5.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H6: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h6 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h6.fontFamily,\n fontWeight: h6.fontWeight,\n lineHeight: h6.lineHeight,\n fontSize: h6.fontSize,\n letterSpacing: h6.letterSpacing,\n textTransform: h6.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Blockquote: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { blockquote } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: blockquote.fontFamily,\n fontWeight: blockquote.fontWeight,\n lineHeight: blockquote.lineHeight,\n fontSize: blockquote.fontSize,\n letterSpacing: blockquote.letterSpacing,\n textTransform: blockquote.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Tiny: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { tiny } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: tiny.fontFamily,\n fontWeight: tiny.fontWeight,\n lineHeight: tiny.lineHeight,\n fontSize: tiny.fontSize,\n letterSpacing: tiny.letterSpacing,\n textTransform: tiny.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Capitalized: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { CAPITALIZED } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: CAPITALIZED.fontFamily,\n fontWeight: CAPITALIZED.fontWeight,\n lineHeight: CAPITALIZED.lineHeight,\n fontSize: CAPITALIZED.fontSize,\n letterSpacing: CAPITALIZED.letterSpacing,\n textTransform: CAPITALIZED.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Lead: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { lead } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: lead.fontFamily,\n fontWeight: lead.fontWeight,\n lineHeight: lead.lineHeight,\n fontSize: lead.fontSize,\n letterSpacing: lead.letterSpacing,\n textTransform: lead.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Small: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { small } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: small.fontFamily,\n fontWeight: small.fontWeight,\n lineHeight: small.lineHeight,\n fontSize: small.fontSize,\n letterSpacing: small.letterSpacing,\n textTransform: small.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const P: ComponentSingleStyleConfig = {\n variants: {\n 14: ({ theme, sx }) => {\n const { body14 } = theme.typography.body\n return merge({\n fontFamily: body14.fontFamily,\n fontWeight: body14.fontWeight,\n lineHeight: body14.lineHeight,\n fontSize: body14.fontSize,\n letterSpacing: body14.letterSpacing,\n textTransform: body14.textCase,\n }, sx)\n },\n 16: ({ theme, sx }) => {\n const { body16 } = theme.typography.body\n return merge({\n fontFamily: body16.fontFamily,\n fontWeight: body16.fontWeight,\n lineHeight: body16.lineHeight,\n fontSize: body16.fontSize,\n letterSpacing: body16.letterSpacing,\n textTransform: body16.textCase,\n }, sx)\n },\n },\n baseStyle: {\n color: 'text.default',\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Label: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { sizes: sizing }, sx }) => merge({\n color: 'inherit',\n width: '100%',\n maxWidth: '100%',\n marginBottom: sizing[0],\n marginInlineStart: sizing[0],\n marginEnd: sizing[0],\n marginInlineEnd: sizing[0],\n }, sx),\n sizes: {\n '2xs': ({ theme, sx }) => {\n const { tinyLabel } = theme.typography.labels\n return merge({\n fontFamily: tinyLabel.fontFamily,\n fontWeight: tinyLabel.fontWeight,\n lineHeight: tinyLabel.lineHeight,\n fontSize: tinyLabel.fontSize,\n letterSpacing: tinyLabel.letterSpacing,\n textTransform: tinyLabel.textCase,\n }, sx)\n },\n xs: ({ theme, sx }) => {\n const { xsLabel } = theme.typography.labels\n return merge({\n fontFamily: xsLabel.fontFamily,\n fontWeight: xsLabel.fontWeight,\n lineHeight: xsLabel.lineHeight,\n fontSize: xsLabel.fontSize,\n letterSpacing: xsLabel.letterSpacing,\n textTransform: xsLabel.textCase,\n }, sx)\n },\n sm: ({ theme, sx }) => {\n const { smLabel } = theme.typography.labels\n return merge({\n fontFamily: smLabel.fontFamily,\n fontWeight: smLabel.fontWeight,\n lineHeight: smLabel.lineHeight,\n fontSize: smLabel.fontSize,\n letterSpacing: smLabel.letterSpacing,\n textTransform: smLabel.textCase,\n }, sx)\n },\n md: ({ theme, sx }) => {\n const { mdLabel } = theme.typography.labels\n return merge({\n fontFamily: mdLabel.fontFamily,\n fontWeight: mdLabel.fontWeight,\n lineHeight: mdLabel.lineHeight,\n fontSize: mdLabel.fontSize,\n letterSpacing: mdLabel.letterSpacing,\n textTransform: mdLabel.textCase,\n }, sx)\n },\n lg: ({ theme, sx }) => {\n const { lgLabel } = theme.typography.labels\n return merge({\n fontFamily: lgLabel.fontFamily,\n fontWeight: lgLabel.fontWeight,\n lineHeight: lgLabel.lineHeight,\n fontSize: lgLabel.fontSize,\n letterSpacing: lgLabel.letterSpacing,\n textTransform: lgLabel.textCase,\n }, sx)\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const NumVal: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { sizes: sizing }, sx }) =>\n merge(\n {\n color: 'inherit',\n width: '100%',\n maxWidth: '100%',\n marginBottom: sizing[0],\n marginInlineStart: sizing[0],\n marginEnd: sizing[0],\n marginInlineEnd: sizing[0],\n },\n sx\n ),\n sizes: {\n '2xs': ({ theme, sx }) => {\n const { tinyMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: tinyMono.fontFamily,\n fontWeight: tinyMono.fontWeight,\n lineHeight: tinyMono.lineHeight,\n fontSize: tinyMono.fontSize,\n letterSpacing: tinyMono.letterSpacing,\n textTransform: tinyMono.textCase,\n textDecoration: tinyMono.textDecoration,\n },\n sx\n )\n },\n xs: ({ theme, sx }) => {\n const { xsMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: xsMono.fontFamily,\n fontWeight: xsMono.fontWeight,\n lineHeight: xsMono.lineHeight,\n fontSize: xsMono.fontSize,\n letterSpacing: xsMono.letterSpacing,\n textTransform: xsMono.textCase,\n textDecoration: xsMono.textDecoration,\n },\n sx\n )\n },\n sm: ({ theme, sx }) => {\n const { smMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: smMono.fontFamily,\n fontWeight: smMono.fontWeight,\n lineHeight: smMono.lineHeight,\n fontSize: smMono.fontSize,\n letterSpacing: smMono.letterSpacing,\n textTransform: smMono.textCase,\n textDecoration: smMono.textDecoration,\n },\n sx\n )\n },\n md: ({ theme, sx }) => {\n const { mdMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: mdMono.fontFamily,\n fontWeight: mdMono.fontWeight,\n lineHeight: mdMono.lineHeight,\n fontSize: mdMono.fontSize,\n letterSpacing: mdMono.letterSpacing,\n textTransform: mdMono.textCase,\n textDecoration: mdMono.textDecoration,\n },\n sx\n )\n },\n lg: ({ theme, sx }) => {\n const { lgMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: lgMono.fontFamily,\n fontWeight: lgMono.fontWeight,\n lineHeight: lgMono.lineHeight,\n fontSize: lgMono.fontSize,\n letterSpacing: lgMono.letterSpacing,\n textTransform: lgMono.textCase,\n textDecoration: lgMono.textDecoration,\n },\n sx\n )\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const SplitPane: ComponentSingleStyleConfig = {\n baseStyle: ({ minLeftWidth, minRightWidth, initialSplit, isOpen }) => ({\n display: 'grid',\n overflow: 'hidden',\n gridTemplateColumns: !isOpen ? '1fr' : `minmax(${minLeftWidth}%, var(--split-pos, ${initialSplit}%)) auto minmax(${minRightWidth}%, 1fr)`,\n alignItems: 'stretch',\n justifyItems: 'stretch',\n height: '100%',\n width: '100%',\n }),\n}\n\nexport const PaneDivider: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color, sizes: sizing } }) => ({\n bgColor: color.background['pane-divider'].default,\n zIndex: 300,\n cursor: 'col-resize',\n height: '100%',\n width: sizing[1],\n _hover: {\n outlineColor: color.border['pane-divider'].hover,\n outlineWidth: sizing['0a'],\n outlineStyle: 'solid',\n },\n _active: {\n outlineColor: color.border['pane-divider'].hover,\n outlineWidth: sizing['0a'],\n outlineStyle: 'solid',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Carousel: ComponentMultiStyleConfig = {\n parts: [ 'container', 'arrow', 'radio' ],\n baseStyle: {\n container: {\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n width: 'full',\n height: 'full',\n },\n radio: {\n position: 'absolute',\n bottom: '1',\n left: '50%',\n transform: 'translateX(-50%)',\n overflowX: 'scroll',\n maxWidth: '90%',\n padding: '2',\n },\n arrow: {\n position: 'absolute',\n bottom: '0',\n height: '100%',\n cursor: 'pointer',\n },\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { isEmpty, isNil } from 'ramda'\n\nexport const EditableText: ComponentMultiStyleConfig = {\n parts: [ 'button', 'icon', 'controls', 'preview', 'input' ],\n sizes: {\n sm: ({ isEditing, theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.xs,\n minWidth: sizing.button.xs,\n },\n icon: {\n boxSize: sizing.icon.xs,\n },\n controls: {\n width: !isEditing ? 6 : '3.25rem',\n },\n preview: {\n pt: 1,\n },\n input: {\n paddingInlineEnd: 16,\n paddingRight: 16,\n },\n }),\n md: ({ isEditing, theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n },\n icon: {\n boxSize: sizing.icon.sm,\n },\n controls: {\n width: !isEditing ? 8 : '4.25rem',\n },\n preview: {\n pt: '7px',\n },\n input: {\n paddingInlineEnd: 20,\n paddingRight: 20,\n },\n }),\n lg: ({ isEditing, theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.md,\n minWidth: sizing.button.md,\n },\n icon: {\n boxSize: sizing.icon.md,\n },\n controls: {\n width: !isEditing ? 10 : '5.25rem',\n },\n preview: {\n pt: '8px',\n },\n input: {\n paddingInlineEnd: 24,\n paddingRight: 24,\n },\n }),\n },\n baseStyle: ({ value }) => ({\n controls: {\n mr: 1,\n },\n preview: {\n fontWeight: 'semibold',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n paddingTop: 0,\n paddingBottom: 0,\n color: isNil(value) || isEmpty(value) ? 'text.subdued' : 'text.default',\n },\n input: {\n fontWeight: 'semibold',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Toolbox: ComponentMultiStyleConfig = {\n parts: [ 'container', 'header', 'body', 'footer' ],\n baseStyle: ({ theme: {\n colors: color,\n sizes: sizing,\n borders: borderWidth,\n } }) => ({\n container: {\n position: 'relative',\n bg: 'text.inverted',\n h: '100vh',\n borderLeftWidth: borderWidth.xs,\n borderLeftStyle: 'solid',\n borderLeftColor: color.border.default,\n },\n header: {\n alignItems: 'center',\n height: '16',\n borderBottomWidth: borderWidth.xs,\n borderBottomStyle: 'solid',\n borderBottomColor: color.border.default,\n pl: '4',\n pr: '16',\n },\n footer: {\n position: 'absolute',\n bottom: '0',\n w: 'full',\n p: '4',\n alignItems: 'center',\n height: '16',\n borderTopWidth: borderWidth.xs,\n borderTopStyle: 'solid',\n borderTopColor: color.border.default,\n },\n body: {\n p: sizing['4'],\n flexDirection: 'column',\n w: '100%',\n h: '100%',\n maxH: `calc(100vh - ${sizing['16']} * 2)`,\n overflowY: 'scroll',\n },\n }),\n sizes: {\n sm: {\n container: {\n w: 'xs',\n },\n },\n md: {\n container: {\n w: 'md',\n },\n },\n lg: {\n container: {\n w: 'xl',\n },\n },\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { CSSObject, keyframes } from '@emotion/react'\nimport { merge } from 'ramda'\nimport { CurrentTheme } from '../../../utils'\n\nconst shakeAnimation = keyframes`\n 0% { transform: translate(1px, 1px) rotate(0deg); }\n 10% { transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { transform: translate(-3px, 0px) rotate(1deg); }\n 30% { transform: translate(3px, 2px) rotate(0deg); }\n 40% { transform: translate(1px, -1px) rotate(1deg); }\n 50% { transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { transform: translate(-3px, 1px) rotate(0deg); }\n 70% { transform: translate(3px, 1px) rotate(-1deg); }\n 80% { transform: translate(-1px, -1px) rotate(1deg); }\n 90% { transform: translate(1px, 2px) rotate(0deg); }\n 100% { transform: translate(1px, -2px) rotate(-1deg); }\n`\n\nconst thickRing: CSSObject = {\n _focusVisible: {\n outline: 'none',\n ring: '3px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n },\n}\n\nconst getBgColor = (currentTheme: CurrentTheme) => {\n switch (currentTheme) {\n case 'webappTheme': return 'blue.50'\n case 'tottTheme': return 'blue.900'\n default: return 'bg.filled'\n }\n}\n\nconst getInvalidColorStyles = (isInvalid: boolean, isImage = true, currentTheme: CurrentTheme = 'webappTheme') => ({\n borderColor: isInvalid ? 'border.error' : 'border.default',\n bgColor: isInvalid && 'bg.error.default',\n animation: isInvalid && `500ms ${shakeAnimation} ease`,\n _hover: isImage && {\n bgColor: isInvalid ? 'bg.error.default' : getBgColor(currentTheme),\n borderColor: isInvalid ? 'border.error' : 'border.brand.default',\n },\n})\n\nconst getAiColorStyles = (isInvalid: boolean, isImage = true) => ({\n borderColor: isInvalid ? 'border.error' : 'border.default',\n bgColor: isInvalid && 'bg.error.default',\n animation: isInvalid && `500ms ${shakeAnimation} ease`,\n _hover: isImage && {\n bgColor: isInvalid ? 'bg.error.default' : 'bg.filled',\n borderColor: isInvalid ? 'border.error' : 'border.ai',\n },\n})\n\nexport const FilePicker: ComponentMultiStyleConfig = {\n parts: [ 'filePicker', 'fileItem', 'multiFilePicker' ],\n baseStyle: ({ theme: { sizes, colors }, hasLoaded, isImage, isInvalid, currentTheme, sx }) => ({\n filePicker: merge({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'full',\n height: '40',\n textAlign: 'center',\n position: 'relative',\n borderWidth: hasLoaded && isImage ? '0' : sizes['0a'],\n borderStyle: 'dashed',\n borderRadius: 'lg',\n ...getInvalidColorStyles(isInvalid, isImage, currentTheme),\n ...thickRing,\n }, sx),\n multiFilePicker: {\n width: 'full',\n maxWidth: 'inherit',\n height: '32',\n position: 'relative',\n borderWidth: sizes['0a'],\n borderStyle: 'dashed',\n borderRadius: 'lg',\n ...getInvalidColorStyles(isInvalid, undefined, currentTheme),\n ...thickRing,\n },\n fileItem: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n paddingX: '2',\n paddingY: '1',\n borderRadius: sizes['2'],\n textAlign: 'center',\n position: 'relative',\n border: `2px solid ${colors.gray['100']}`,\n minHeight: '20',\n },\n }),\n variants: {\n ai: ({ isInvalid }) => ({\n filePicker: {\n ...getAiColorStyles(isInvalid),\n },\n multiFilePicker: {\n ...getAiColorStyles(isInvalid),\n },\n }),\n\n },\n}\n","import { ComponentSingleStyleConfig, useToken } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\nimport { processColorSchemeBasedOnTheme } from '../../process-color-scheme-based-on-theme'\n\nexport const Badge: ComponentSingleStyleConfig = {\n baseStyle: ({ colorScheme, theme: { colors }, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const bgColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][100]\n : colors[processedColorScheme] && colors[processedColorScheme][100]\n const textColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][800]\n : colors[processedColorScheme] && colors[processedColorScheme][800]\n\n return {\n bgColor,\n color: textColor,\n }\n },\n variants: {\n solid: ({ colorScheme, theme: { colors }, currentTheme, bg, bgColor }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const finalBg =\n bg ??\n bgColor ??\n (processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][500]\n : colors[processedColorScheme] && colors[processedColorScheme][500])\n\n return {\n bgColor: finalBg,\n color: getContrastColor(finalBg ?? useToken('colors', processedColorScheme)),\n }\n },\n outline: ({ colorScheme, theme: { colors }, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const textColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][500]\n : colors[processedColorScheme] && colors[processedColorScheme][700]\n\n return {\n bgColor: 'mono.transparent',\n color: textColor,\n }\n },\n ghost: ({ colorScheme, theme: { colors }, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const textColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][500]\n : colors[processedColorScheme] && colors[processedColorScheme][700]\n\n return {\n bgColor: 'mono.transparent',\n color: textColor,\n }\n },\n },\n sizes: {\n xs: {\n fontSize: '2xs',\n },\n sm: {\n fontSize: 'xs',\n },\n md: {\n fontSize: 'sm',\n },\n lg: {\n fontSize: 'md',\n },\n },\n defaultProps: {\n size: 'sm',\n variant: 'solid',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Menu: ComponentMultiStyleConfig = {\n parts: [ 'list', 'item' ],\n baseStyle: ({ theme: {\n colors: color,\n radii: borderRadius,\n } }) => ({\n menu: {\n borderColor: color.border.default,\n },\n list: {\n px: '2',\n bgColor: color.bg.base,\n },\n item: {\n py: '2',\n color: color.text.default,\n borderRadius: borderRadius.select.default,\n bgColor: color.bg.base,\n _hover: {\n bgColor: color.background.button.default,\n },\n _active: {\n bgColor: color.background.button.default,\n },\n _focus: {\n bgColor: color.background.button.default,\n },\n _checked: {\n fontWeight: 'bold',\n },\n },\n }),\n variants: {\n compact: ({ theme: { colors: color } }) => ({\n item: {\n fontSize: 'sm',\n color: color.text.default,\n },\n }),\n relaxed: ({ theme: { colors: color } }) => ({\n item: {\n py: '2',\n fontSize: 'md',\n color: color.text.default,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Popover: ComponentMultiStyleConfig = {\n parts: [ 'popper' ],\n baseStyle: {\n popper: {\n zIndex: 'popover',\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Progress: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color } }) => ({\n track: {\n bg: color['subdued-alt'],\n },\n filledTrack: {\n bg: color.brand,\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { mode } from '@chakra-ui/theme-tools'\n\nexport const Table: ComponentMultiStyleConfig = {\n parts: [\n 'table',\n 'th',\n 'td',\n 'columnHeader',\n 'cell',\n 'caption',\n 'footer',\n 'tr',\n ],\n variants: {\n rounded: () => ({\n table: {\n borderSpacing: '0',\n borderCollapse: 'separate',\n borderRadius: 'md',\n borderColor: 'border.default',\n borderWidth: 'xs',\n px: '3',\n },\n\n th: {\n color: 'text.subdued',\n fontWeight: 'bold',\n textTransform: 'none',\n fontSize: 'sm',\n },\n\n td: {\n borderColor: 'border.default',\n borderTopWidth: 'xs',\n },\n }),\n striped: (props) => {\n const { colorScheme: c = 'gray' } = props\n\n return {\n table: {\n borderSpacing: '0',\n borderCollapse: 'separate',\n borderRadius: 'md',\n borderColor: 'border.default',\n borderWidth: 'xs',\n p: '2',\n },\n columnHeader: {\n color: 'text.subdued',\n bgColor: mode(`${c}.100`, `${c}.700`)(props),\n fontWeight: 'bold',\n textTransform: 'none',\n fontSize: 'sm',\n },\n cell: {\n bgColor: mode(`${c}.100`, `${c}.700`)(props),\n },\n caption: {\n color: mode('gray.600', 'gray.100')(props),\n },\n th: {\n borderBottomWidth: '0',\n },\n tr: {\n '&:nth-of-type(odd)': {\n td: {\n background: mode(`${c}.100`, `${c}.700`)(props),\n },\n },\n },\n footer: {\n tr: {\n th: { borderBottomWidth: 0 },\n },\n },\n }\n },\n },\n}\n","import { ThemeOverride } from '@chakra-ui/react'\nimport {\n WebappComponentsTokensSet,\n WebappSystemTokensSet,\n typography,\n} from '@northlight/tokens'\n\nexport const WebappSkin: ThemeOverride = {\n colors: {\n ...WebappSystemTokensSet.st.color,\n ...WebappComponentsTokensSet.color,\n text: {\n ...WebappSystemTokensSet.st.color.text,\n ...WebappComponentsTokensSet.color.text,\n },\n border: {\n ...WebappSystemTokensSet.st.color.border,\n ...WebappComponentsTokensSet.color.border,\n },\n },\n sizes: WebappComponentsTokensSet.sizing,\n space: WebappComponentsTokensSet.spacing,\n radii: {\n ...WebappSystemTokensSet.st.borderRadius,\n ...WebappComponentsTokensSet.borderRadius,\n },\n borders: {\n ...WebappSystemTokensSet.st.borderWidth,\n ...WebappComponentsTokensSet.borderWidth,\n },\n opacity: WebappComponentsTokensSet.opacity,\n typography,\n shadows: { ...WebappSystemTokensSet.st.boxShadow },\n}\n","import { ThemeOverride } from '@chakra-ui/react'\nimport {\n TottComponentsTokensSet,\n TottSystemTokensSet,\n typography,\n} from '@northlight/tokens'\n\nexport const TottSkin: ThemeOverride = {\n colors: {\n ...TottSystemTokensSet.st.color,\n ...TottComponentsTokensSet.color,\n border: {\n ...TottSystemTokensSet.st.color.border,\n ...TottComponentsTokensSet.color.border,\n },\n },\n sizes: TottComponentsTokensSet.sizing,\n space: TottComponentsTokensSet.spacing,\n radii: {\n ...TottSystemTokensSet.st.borderRadius,\n ...TottComponentsTokensSet.borderRadius,\n },\n borders: {\n ...TottSystemTokensSet.st.borderWidth,\n ...TottComponentsTokensSet.borderWidth,\n },\n opacity: TottComponentsTokensSet.opacity,\n typography,\n shadows: { ...TottSystemTokensSet.st.boxShadow },\n}\n","import { ThemeOverride } from '@chakra-ui/react'\nimport {\n CamphouseLightComponentsTokensSet,\n CamphouseLightSystemTokensSet,\n typography,\n} from '@northlight/tokens'\n\nexport const CamphouseLightSkin: ThemeOverride = {\n colors: {\n ...CamphouseLightSystemTokensSet.st.color,\n ...CamphouseLightComponentsTokensSet.color,\n text: {\n ...CamphouseLightSystemTokensSet.st.color.text,\n ...CamphouseLightComponentsTokensSet.color.text,\n },\n border: {\n ...CamphouseLightSystemTokensSet.st.color.border,\n ...CamphouseLightComponentsTokensSet.color.border,\n },\n },\n sizes: CamphouseLightComponentsTokensSet.sizing,\n space: CamphouseLightComponentsTokensSet.spacing,\n radii: {\n ...CamphouseLightSystemTokensSet.st.borderRadius,\n ...CamphouseLightComponentsTokensSet.borderRadius,\n },\n borders: {\n ...CamphouseLightSystemTokensSet.st.borderWidth,\n ...CamphouseLightComponentsTokensSet.borderWidth,\n },\n opacity: CamphouseLightComponentsTokensSet.opacity,\n typography,\n shadows: { ...CamphouseLightSystemTokensSet.st.boxShadow },\n}\n","import {\n ThemeOverride,\n extendTheme,\n} from '@chakra-ui/react'\nimport {\n coreBorderRadius,\n coreBoxShadow,\n coreFontSize,\n coreFontWeight,\n coreLineHeight,\n coreSizing,\n coreSpacing,\n coreZIndex,\n palette,\n} from '@northlight/tokens'\nimport { scrollbarStyles } from './global/scrollbar'\nimport * as components from './components'\nimport { CamphouseLightSkin, TottSkin, WebappSkin } from './skins'\n\nconst overrides: ThemeOverride = {\n config: {\n cssVarPrefix: '',\n },\n semanticTokens: {\n colors: {\n 'chakra-body-text': {\n _light: 'text.default',\n _dark: 'text.inverted',\n },\n },\n },\n styles: {\n global: {\n html: {\n scrollBehavior: 'smooth',\n },\n body: {\n height: '100%',\n },\n '#app': {\n height: '100%',\n },\n ...scrollbarStyles,\n },\n },\n fonts: {\n heading: 'Inter, sans-serif',\n body: 'Inter, sans-serif',\n },\n components: { ...components },\n colors: palette,\n zIndices: coreZIndex,\n sizes: coreSizing,\n space: coreSpacing,\n fontWeights: coreFontWeight,\n shadows: coreBoxShadow,\n fontSizes: coreFontSize,\n lineHeights: coreLineHeight,\n radii: coreBorderRadius,\n borderWidths: WebappSkin.borders,\n}\n\nexport const theme = extendTheme(overrides, WebappSkin)\n\nexport const tottTheme = extendTheme(overrides, TottSkin)\n\nexport const camphouseLightTheme = extendTheme(overrides, CamphouseLightSkin)\n","import React, {\n FunctionComponent,\n KeyboardEvent,\n useEffect,\n useState,\n} from 'react'\nimport {\n ActionMeta,\n CreatableSelect,\n MultiValue,\n} from 'chakra-react-select'\nimport { any, identity, isEmpty } from 'ramda'\nimport { Box } from '../box'\nimport { useToken } from '../../hooks'\nimport { TagsInputProps } from './types'\nimport { Option } from '../select'\nimport { tagsInputStyles } from './tags-input-styles'\nimport { theme } from '../../theme'\n/**\n * Tags Input, based of react creatable select, is meant to select\n * multiple tags. Follows styling of textarea and is resizable.\n *\n * @see {@link https://northlight.dev/reference/tags-input}\n * @example (Example)\n * ## Simple\n * (?\n * <TagsInput />\n * ?)\n *\n * @example (Example)\n * ## With suggestions\n * (?\n * <TagsInput options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}/>\n * ?)\n *\n */\nexport function TagsInput<T extends Option> ({\n options,\n onChange = identity,\n isLoading,\n loadingList = () => null,\n 'data-testid': testId,\n value = [],\n onError,\n ...rest\n}: TagsInputProps<T>) {\n const [ borderColor ] = useToken('border.select', [ 'focus' ])\n const [ menuIsOpen, setMenuIsOpen ] = useState(false)\n const [ inputValue, setInputValue ] = useState('')\n const [ selectedOptions, setSelectedOptions ] = useState<MultiValue<T>>(value)\n const [ isFocused, setIsFocused ] = useState(false)\n\n useEffect(() => {\n setSelectedOptions(value)\n }, [ value.length ])\n\n const CustomSelect = CreatableSelect as FunctionComponent<TagsInputProps<T>>\n\n const handleChange = (values: MultiValue<T>, actionMeta: ActionMeta<T>) => {\n setSelectedOptions(values)\n onChange(values, actionMeta)\n }\n\n const isValidNewOption = (input: string, availableOptions: MultiValue<T>) => !any(\n (option) => option.value === input,\n availableOptions\n )\n\n const addNewOption = (newOption: T) => {\n const updatedOptions = [ ...selectedOptions, newOption ]\n onChange(updatedOptions, { action: 'select-option', option: newOption })\n setSelectedOptions(updatedOptions)\n }\n\n const clearInput = () => {\n setInputValue('')\n }\n\n const handleInputChange = (newInput: string) => {\n if (newInput === ',') return\n\n setInputValue(newInput)\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const shouldAddOption = event.key === 'Enter' || event.key === 'Tab' || event.key === ','\n\n if (!shouldAddOption || isEmpty(inputValue)) return\n\n const trimmedInputValue = inputValue.trim()\n\n if (isValidNewOption(trimmedInputValue, selectedOptions)) {\n const newOption: Option = { value: trimmedInputValue, label: trimmedInputValue }\n addNewOption(newOption as T)\n } else {\n onError?.('Tag already exists')\n }\n\n clearInput()\n }\n\n const handleFocus = () => {\n setIsFocused(true)\n if (options && options.length > 0) {\n setMenuIsOpen(true)\n }\n }\n\n return (\n <Box w=\"full\" data-testid={ testId }>\n <CustomSelect\n isMulti={ true }\n menuPortalTarget={ document.body }\n placeholder=\"Type something and press Enter or comma...\"\n options={ options }\n useBasicStyles={ true }\n closeMenuOnSelect={ false }\n hideSelectedOptions={ false }\n isClearable={ false }\n onChange={ handleChange }\n onInputChange={ handleInputChange }\n onKeyDown={ handleKeyDown }\n inputValue={ inputValue }\n selectedOptionStyle=\"check\"\n chakraStyles={ tagsInputStyles(isFocused, borderColor) }\n onFocus={ handleFocus }\n isValidNewOption={ isValidNewOption }\n onBlur={ () => {\n setMenuIsOpen(false)\n setIsFocused(false)\n } }\n menuIsOpen={ menuIsOpen }\n isLoading={ isLoading }\n { ...(isLoading && { components: { MenuList: loadingList } }) }\n value={ selectedOptions }\n components={ {\n DropdownIndicator: () => null,\n } }\n styles={ { menuPortal: (base) => ({ ...base, zIndex: theme.zIndices.popover }) } }\n formatCreateLabel={ (textInputValue: string) =>\n `Add tag \"${textInputValue}\"`\n }\n { ...rest }\n />\n </Box>\n )\n}\n","import React from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/react'\nimport { OrganizationLogoProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/organization-logo}\n *\n * @example\n * (?\n * <OrganizationLogo name=\"mediatool\" />\n * ?)\n *\n */\nexport const OrganizationLogo = ({\n name,\n image,\n variant = 'square',\n ...rest\n}: OrganizationLogoProps) => {\n const getInitials = (orgName: string) => orgName[0].toUpperCase()\n const {\n container,\n text,\n } = useMultiStyleConfig('Avatar', { variant, image, ...rest })\n\n return (\n <chakra.div\n __css={ container }\n data-testid=\"organization-logo-test-id\"\n { ...rest }\n >\n { image ? (\n <chakra.img\n alt={ name }\n src={ image }\n />\n )\n : (\n <chakra.span __css={ text }>\n { getInitials(name) }\n </chakra.span>\n )\n }\n </chakra.div>\n )\n}\n","import React from 'react'\nimport { Alert as ChakraAlert } from '@chakra-ui/react'\nimport { AlertProps } from './types'\n\n/**\n * @example (Example)\n * ## Usage\n * <br />\n * Northlight exports 4 alert related components: <br />\n * <br />\n * `Alert`: The wrapper for alert components. <br />\n * `AlertIcon`: The visual icon for the alert that changes based on the status prop. <br />\n * `AlertTitle`: The title of the alert to be announced by screen readers. <br />\n * `AlertDescription`: The description of the alert to be announced by screen readers. <br />\n * <br />\n * (?\n * +\n * const toastIconMap = {\n * success: CheckCircleSolid,\n * warning: AlertTriangleSolid,\n * error: AlertCircleSolid,\n * danger: AlertCircleSolid,\n * info: BellSolid,\n * ai: BrightnessSolid,\n * default: HelpCircleSolid,\n * ghost: HelpCircleSolid,\n * }\n *\n * const variants = [\n * \"default\",\n * \"success\",\n * \"warning\",\n * \"error\",\n * \"info\",\n * \"ai\",\n * \"ghost\",\n * ]\n *\n * const Example = () => (\n * <SimpleGrid columns={2} columnGap=\"2\" rowGap=\"4\">\n *\n * {variants.map((variant) => (\n * <Alert variant={variant}>\n * <AlertIcon as={toastIconMap[variant]} />\n * <AlertTitle>Title</AlertTitle>\n * <AlertDescription>Description</AlertDescription>\n * </Alert>\n * ))}\n * </SimpleGrid>\n * )\n * render(<Example />)\n\n * ?)\n */\n\nexport const Alert = ({\n variant = 'success',\n children,\n ...rest\n}: AlertProps) => (\n <ChakraAlert variant={ variant } { ...rest }>\n { children }\n </ChakraAlert>\n)\n","import React from 'react'\nimport { AspectRatioProps, AspectRatio as ChakraAspectRatio } from '@chakra-ui/react'\n\n/**\n * Meant to restrict child by specific ratio\n * @see {@link https://northlight.dev/aspect-ratio}\n * @example\n * (?\n <AspectRatio maxW='400px' ratio={4 / 3}>\n <Image src='https://bit.ly/naruto-sage' alt='naruto' objectFit='cover' />\n</AspectRatio>\n?)\n *\n * */\nexport const AspectRatio = (props: AspectRatioProps) => (\n <ChakraAspectRatio { ...props } />\n)\n","import React from 'react'\nimport {\n Icon as ChakraIcon,\n forwardRef,\n useStyleConfig,\n} from '@chakra-ui/react'\nimport { IconProps } from './types'\n\n/**\n * Pass down any icon from northlight/icons via as prop\n * @see IconButton\n * @see {@link https://northlight.dev/reference/icon}\n *\n * @example\n * (?\n * <Icon as={SmileyDuo} size=\"lg\" />\n * ?)\n */\nexport const Icon = forwardRef(({\n as: As,\n size,\n color,\n boxSize,\n ...rest\n}: IconProps, ref: any) => {\n const CustomIcon = As ?? (() => <ChakraIcon />)\n const styles = useStyleConfig('Icon', { size, color, boxSize })\n\n return (\n <ChakraIcon\n ref={ ref }\n sx={ styles }\n { ...rest }\n >\n <CustomIcon />\n </ChakraIcon>\n )\n})\n","import React from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/react'\nimport { AvatarBadgeProps } from './types'\n\n/**\n * Specific component meant to be used with <Avatar /> to display notification\n * @see Avatar\n * @see {@link https://northlight.dev/reference/avatar}\n *\n * @example (Example)\n * Examle:\n * (?\n * <Avatar notificationCount={4} />\n * ?)\n *\n */\nexport const AvatarBadge = ({\n notificationCount = 0,\n}: AvatarBadgeProps) => {\n const { badge } = useMultiStyleConfig('Avatar')\n return (\n <chakra.span sx={ badge }>\n { notificationCount > 999 ? '999+' : notificationCount }\n </chakra.span>\n )\n}\n","import React from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/react'\nimport { BusinessContactDuo, UserSquareDuo } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { Box } from '../box'\nimport { getInitials } from '../../utils'\nimport { AvatarProps } from './types'\nimport { AvatarBadge } from './avatar-badge'\n\n/**\n * @see AvatarGroup\n * @see {@link https://northlight.dev/reference/avatar}\n *\n * @example (Example)\n * Avatar takes a name and image\n * (?\n * <Avatar name=\"Darth Vader\" image='/vader.png' />\n * ?)\n *\n * <br />\n * If there is no image, it will render the initials of the name along with a random bg color.\n * (?\n * <Avatar name=\"Darth Vader\" />\n * ?)\n *\n * <br />\n *\n * If the name also is undefined, it will render a fallback icon\n * (?\n * <Avatar />\n * ?)\n */\nexport const Avatar = ({\n variant = 'square',\n notificationCount = 0,\n name,\n image,\n size,\n bgColor,\n ...rest\n}: AvatarProps) => {\n const { container, text, userImage, icon } = useMultiStyleConfig('Avatar', {\n variant,\n image,\n size,\n name,\n bgColor,\n })\n\n return (\n <Box __css={ container } data-testid=\"avatar-test-id\" { ...rest }>\n { image\n ? (\n <chakra.img\n alt={ name }\n src={ image }\n sx={ userImage }\n />\n ) : name\n ? (\n <chakra.span sx={ text }>\n { getInitials(name) }\n </chakra.span>\n )\n : (\n <Icon\n as={ variant === 'square' ? UserSquareDuo : BusinessContactDuo }\n sx={ icon }\n aria-label=\"user-avatar\"\n />\n ) }\n { notificationCount > 0 && (\n <AvatarBadge notificationCount={ notificationCount } />\n ) }\n </Box>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h1}\n * @example (Example)\n * (?\n * <H1>Heading 1</H1>\n * ?)\n */\nexport const H1 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H1', { sx })\n\n return (\n <Heading\n as=\"h1\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h2}\n * @example (Example)\n * (?\n * <H2>Heading 2</H2>\n * ?)\n *\n */\nexport const H2 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H2', { sx })\n\n return (\n <Heading\n as=\"h2\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h3}\n * @example (Example)\n * (?\n * <H3>Heading 3</H3>\n * ?)\n */\nexport const H3 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H3', { sx })\n\n return (\n <Heading\n as=\"h3\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h4}\n * @example (Example)\n * (?\n * <H4>Heading 4</H4>\n * ?)\n */\nexport const H4 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H4', { sx })\n\n return (\n <Heading\n as=\"h4\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h5}\n * @example (Example)\n * (?\n * <H5>Heading 5</H5>\n * ?)\n */\nexport const H5 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H5', { sx })\n\n return (\n <Heading\n as=\"h5\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h6}\n * @example (Example)\n * (?\n * <H6>Heading 6</H6>\n * ?)\n */\nexport const H6 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H6', { sx })\n\n return (\n <Heading\n as=\"h6\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, useStyleConfig } from '@chakra-ui/react'\nimport { PProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/p}\n * @example\n * (?\n * <P>Body text</P>\n * ?)\n *\n */\nexport const P = forwardRef<HTMLParagraphElement, PProps>(({\n children,\n variant = '16',\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('P', { variant, sx })\n\n return (\n <ChakraText\n variant={ variant }\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Capitalized\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/blockquote }\n *\n * @example (Example)\n * (?\n * <Blockquote sx={{color: 'green.500' }}>Success</Blockquote>\n * ?)\n * (_Note, all other css properties not listed under the\n * props tab to right should be passed down via **sx**_)\n *\n *\n *\n */\nexport const Blockquote = forwardRef<HTMLParagraphElement, TextProps>(\n ({ children, sx = {}, ...rest }, ref) => {\n const styles = useStyleConfig('Blockquote', { sx })\n\n return (\n <ChakraText as=\"span\" sx={ styles } ref={ ref } { ...rest }>\n { children }\n </ChakraText>\n )\n }\n)\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Blockquote\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/capitalized }\n *\n * @example (Example)\n * (?\n * <Capitalized sx={{color: 'red.500' }}>Error</Capitalized>\n * ?)\n * (_Note, all other css properties not listed\n * under the props tab to right should be passed down via **sx**_)\n *\n */\nexport const Capitalized = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Capitalized', { sx })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Blockquote\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/lead }\n *\n * @example\n * (?\n * <Lead>Lead</Lead>\n * ?)\n * (_Note, all other css properties not listed\n * under the props tab to right should be passed down via **sx**_)\n *\n */\nexport const Lead = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Lead', { sx })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Capitalized\n * @see Lead\n * @see Blockquote\n * @see Tiny\n * @see {@link https://northlight.dev/reference/small }\n *\n * @example (Example)\n * (?\n * <Small>Small</Small>\n * ?)\n * (_Note, all other css properties not listed under the\n * props tab to right should be passed down via **sx**_)\n *\n */\nexport const Small = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Small', { sx })\n\n return (\n <ChakraText\n as=\"small\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Capitalized\n * @see Lead\n * @see Blockquote\n * @see Small\n * @see {@link https://northlight.dev/reference/tiny }\n *\n * @example (Example)\n * (?\n * <Tiny>Tiny</Tiny>\n * ?)\n * (_Note, all other css properties not listed under the\n * props tab to right should be passed down via **sx**_)\n *\n */\nexport const Tiny = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Tiny', { sx })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { FormLabel, VisuallyHidden, useStyleConfig } from '@chakra-ui/react'\nimport { LabelProps } from './types'\n\n/**\n * One of the stylized typography components\n * @see Blockquote\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/label }\n *\n * @example\n * (?\n * <Label sx={{color: 'brand.500' }} size=\"lg\">Brand</Label>\n * ?)\n * (_Note, all other css properties not listed\n * under the props tab to right should be passed down via **sx**_)\n *\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(({\n children,\n size = 'sm',\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Label', { sx, size })\n\n return (\n <FormLabel\n sx={ styles }\n requiredIndicator={ <VisuallyHidden /> }\n ref={ ref }\n { ...rest }\n >\n { children }\n </FormLabel>\n )\n})\n","import React, { forwardRef } from 'react'\nimport {\n Text as ChakraText,\n TextProps,\n useStyleConfig,\n} from '@chakra-ui/react'\n\n/**\n * @see {@link https://northlight.dev/reference/label }\n *\n * @example\n * (?\n * <NumVal sx={{color: 'brand' }} size=\"lg\">270 000 000</NumVal>\n * ?)\n * (_Note, all other css properties not listed\n *\n */\nexport const NumVal = forwardRef<HTMLLabelElement, TextProps>(\n ({ children, size = 'sm', sx = {}, ...rest }, ref) => {\n const styles = useStyleConfig('NumVal', { sx, size })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n }\n)\n","import React, { Children, useEffect, useRef, useState } from 'react'\nimport { always, dec, defaultTo, gt, identity, ifElse, inc, isNil, take } from 'ramda'\nimport { OverflowGroupProps } from './types'\nimport { getChildrenWithProps } from '../../utils'\n\nconst positiveOrZero = ifElse(gt(0), always(0), identity)\nconst EMPTY_RECT = {\n clientWidht: 0,\n clientHeight: 0,\n}\nconst EMPTY_WINDOW = {\n innerWidth: 0,\n innerHeight: 0,\n}\n\n/**\n * Util wrapper for lists by only rendering as many items as fit per the specification\n * @see {@link https://northlight.dev/reference/overflow-group}\n * @example\n * (?\n * +\n *\nconst CustomSlider = ({ onChange }) => (\n <Slider min={ 100 } max={ 300 } step={ 1 } onChange={ onChange }>\n <SliderTrack>\n <SliderFilledTrack />\n </SliderTrack>\n <SliderThumb />\n </Slider>\n)\n *\n\nconst arrayWithLength = (n) => {\n let buffer = []\n for(let i = 0; i < n; i++) {\n buffer.push(i)\n }\n return buffer\n}\n * const MyComponent = () => {\n * const [ n, setN ] = useState(5)\n const [ max, setMax ] = useState(10)\n const [ width, setWidth ] = useState(200)\n const [ height, setHeight ] = useState(200)\n const { containerRef, rect } = useOverflowGroup()\n const [ nbrRemainingItems, setNbrRemainingItems ] = useState(0)\n * return (\n * <Stack mb={ 4 } spacing={ 4 } w=\"40%\">\n <Stack h=\"300px\">\n <Wrap\n w={ width }\n h={ height }\n ref={ containerRef }\n borderWidth=\"2px\"\n borderColor=\"gray.200\"\n borderStyle=\"solid\"\n p=\"2\"\n borderRadius=\"md\"\n >\n <OverflowGroup\n max={ max }\n rect={ rect }\n onChange={ setNbrRemainingItems }\n >\n { arrayWithLength(n).map((i) => (\n <Badge key={ i } h=\"max-content\">\n Item { i }\n </Badge>\n )) }\n </OverflowGroup>\n { nbrRemainingItems > 0 && (\n <Tag w=\"fit-content\">+{ nbrRemainingItems }</Tag>\n ) }\n </Wrap>\n </Stack>\n <Stack bgColor=\"gray.50\" p=\"2\" borderRadius=\"md\">\n <HStack>\n <Label>Height</Label>\n <CustomSlider onChange={ setHeight } />\n </HStack>\n <HStack>\n <Label>Width</Label>\n <CustomSlider onChange={ setWidth } />\n </HStack>\n <HStack>\n <Label>Number of items </Label>\n <NumberInput onChange={ (v) => setN(Number(v)) } value={ n } />\n </HStack>\n <HStack>\n <Label>Render max </Label>\n <NumberInput onChange={ (v) => setMax(Number(v)) } value={ max } />\n </HStack>\n </Stack>\n </Stack>\n * )}\nrender(<MyComponent/>)\n * ?)\n<br />\nThe overflow group requires either a max prop for a set limit, or a rect prop,\n for a dynamic, responsive layouts. The rect prop can be received via the useOverflowGroup hook,\n along with a containerRef that needs to be set on the wrapper around the overflow group.\n<br />\n<br />\nThe overflow group is ambiguous in the styling of the children and does not pose any premade layout;\n instead the wrapper parent container determines the layout.\n One could for example use a <Stack /> <HStack /> or <Grid> and all would work.\n The overflow group only checks if the children don't fit within the height/width\n of it's container via the containerRef.\n\n *\n */\nexport const OverflowGroup = ({\n children,\n max: initMax = 0,\n childrenProps,\n onChange = identity,\n rect,\n}: OverflowGroupProps) => {\n const [ max, setMax ] = useState(isNil(rect) ? initMax : 0)\n const [ windowState, setWindowState ] = useState(EMPTY_WINDOW)\n const isLocked = useRef(false)\n const nbrChildren = Children.count(children)\n\n const updateMax = () => {\n if (!rect) return\n\n if (\n rect.scrollHeight <= rect.clientHeight &&\n rect.scrollWidth <= rect.clientWidth &&\n max < nbrChildren &&\n !isLocked.current &&\n max < initMax\n ) {\n setMax(inc)\n }\n\n if (\n rect.scrollHeight > rect.clientHeight ||\n rect.scrollWidth > rect.clientWidth\n ) {\n setMax(dec)\n isLocked.current = true\n }\n }\n\n const rectDependency = defaultTo(EMPTY_RECT, rect) as HTMLElement\n useEffect(updateMax, [\n rectDependency.clientWidth,\n rectDependency.clientHeight,\n nbrChildren,\n max,\n windowState.innerHeight,\n windowState.innerHeight,\n initMax,\n ])\n\n useEffect(() => {\n isLocked.current = false\n }, [ rectDependency.clientHeight, rectDependency.clientWidth ])\n\n const handleResize = () => {\n setTimeout(() => {\n isLocked.current = false\n setWindowState({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n })\n }, 200)\n }\n\n useEffect(() => {\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n useEffect(() => {\n const nbrRemainingChildren = positiveOrZero(nbrChildren - max)\n onChange(nbrRemainingChildren)\n }, [ max, nbrChildren ])\n\n const shownChildren = take(\n max,\n getChildrenWithProps(children, defaultTo({}, childrenProps))\n )\n\n return <>{ shownChildren }</>\n}\n","import { useState } from 'react'\n\nexport const useOverflowGroup = () => {\n const [ rect, setRect ] = useState<HTMLDivElement | null>(null)\n const containerRef = (node: any) => {\n if (node) {\n setRect(node)\n }\n }\n\n return { rect, containerRef }\n}\n","import React, { useState } from 'react'\nimport { HStack } from '../stack'\nimport { AvatarGroupProps } from './types'\nimport { Small } from '../typography'\nimport { OverflowGroup } from '../overflow-group'\nimport { getChildrenWithProps } from '../../utils'\n\n/**\n * Used to display a group of users\n * @see Avatar\n * @see {@link https://northlight.dev/reference/avatar-group}\n *\n * @example (Example)\n * (?\n * <AvatarGroup max={ 3 }>\n {[1, 2, 3, 4, 5].map((i) => (\n <Avatar\n name=\"Darth Vader\"\n image=\"/vader.png\"\n size=\"sm\"\n variant=\"rounded\"\n key={ i }\n />\n )) }\n</AvatarGroup>\n * ?)\n *\n */\nexport const AvatarGroup = ({\n children,\n max = Infinity,\n spacing = '-4',\n ...rest\n}: AvatarGroupProps) => {\n const [ nbrRemainingAvatars, setNbrRemainingAvatars ] = useState(0)\n const childrenWithMargin = getChildrenWithProps(\n children,\n { ml: spacing },\n (_child, idx) => idx > 0\n )\n\n return (\n <HStack bgColor=\"background.default\" { ...rest }>\n <HStack spacing={ 0 }>\n <OverflowGroup max={ max } onChange={ setNbrRemainingAvatars }>\n { childrenWithMargin }\n </OverflowGroup>\n </HStack>\n { nbrRemainingAvatars > 0 && (\n <Small sx={ { color: 'brand' } }>\n +{ nbrRemainingAvatars }\n </Small>\n ) }\n </HStack>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { Badge as ChakraBadge } from '@chakra-ui/react'\nimport { MediatoolLogoSolid } from '@northlight/icons'\nimport * as NorthlightIcons from '@northlight/icons'\nimport { useCurrentTheme } from '../../utils'\nimport { BadgeProps } from './types'\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\n\n/**\n * Badges are used to highlight an item's status for quick recognition.\n * @see Tag\n * @see {@link https://northlight.dev/reference/badge}\n *\n * @example\n * (?\n * +\n * const colors = [\"gray\", \"mediatoolBlue\", \"blue\", \"red\", \"green\",\n * \"orange\", \"yellow\", \"teal\", \"purple\", \"pink\"]\n * const variants = [\"solid\", \"outline\", \"subtle\", \"ghost\"]\n *\n * const Example = () => (\n * <Stack>\n * {colors.map((color, i) => (\n * <HStack spacing={4} key={i}>\n * {variants.map((variant) => (\n * <Badge\n * colorScheme={color}\n * variant={variant}\n * iconPosition=\"left\"\n * withIcon\n * >\n * {variant} Badge\n * </Badge>\n * ))}\n * </HStack>\n * ))}\n * </Stack>\n * )\n * render(<Example />)\n * ?)\n */\n\nexport const Badge = forwardRef<HTMLDivElement, BadgeProps>((props, ref) => {\n const {\n children,\n withIcon,\n iconPosition = 'left',\n iconAs,\n ...rest\n } = props\n\n const IconComponent = iconAs ? NorthlightIcons[iconAs] : MediatoolLogoSolid\n const currentTheme = useCurrentTheme()\n\n return (\n <ChakraBadge ref={ ref } currentTheme={ currentTheme } { ...rest }>\n <Flex align=\"center\" gap=\"1\">\n { withIcon && iconPosition === 'left' && IconComponent && (\n <Icon as={ IconComponent } boxSize=\"3\" />\n ) }\n { children }\n { withIcon && iconPosition === 'right' && IconComponent && (\n <Icon as={ IconComponent } boxSize=\"3\" />\n ) }\n </Flex>\n </ChakraBadge>\n )\n})\n","import React from 'react'\nimport { useStyleConfig } from '@chakra-ui/react'\nimport { Box } from '../box'\nimport { BlinkerProps } from './types'\n\n/**\n * Status indicator of some sorts\n * @see {@link https://northlight.dev/reference/blinker}\n *\n * @example (Example)\n * (?\n * <Box p=\"4\">\n * <Blinker color=\"bg.brand.default\" />\n * </Box>\n * ?)\n */\nexport const Blinker = ({\n color = '',\n size,\n isBlinking = true,\n ...rest\n}: BlinkerProps) => {\n const styles = useStyleConfig('Blinker', { color, size, isBlinking })\n\n return <Box sx={ styles } data-testid=\"blinker-test-id\" { ...rest } />\n}\n","import React from 'react'\nimport { Spinner as ChakraSpinner } from '@chakra-ui/react'\nimport { SpinnerProps } from './types'\n\n/**\n * Loading indicator\n * @see {@link https://northlight.dev/reference/spinner }\n * @example\n * (? <Spinner /> ?)\n */\nexport const Spinner = (({\n ...rest\n}: SpinnerProps) => (\n <ChakraSpinner { ...rest } />\n))\n","import React, { forwardRef } from 'react'\nimport { Button as ChakraButton } from '@chakra-ui/react'\nimport { Spinner } from '../spinner'\nimport { ButtonProps } from './types'\n\nconst SpinnerSizeMap = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n}\n\n/**\n * @see {@link https://northlight.dev/reference/button}\n *\n * @example\n * (?\n <Button\n variant=\"success\"\n leftIcon={ <Icon as={ FolderCheckDuo } /> }\n rightIcon={ <Icon as={ PlusDuo } /> }\n >\n Create folder\n </Button>\n * ?)\n *\n * @example\n * ### Use the `isLoading` prop to show a loading spinner\n * (?\n <Button\n variant=\"success\"\n isLoading={ true }\n loadingText=\"Creating folder...\"\n >\n Create folder\n </Button>\n * ?)\n *\n * @example\n * ### Also use the `spinner` prop to show a custom spinner\n * (?\n <Button\n variant=\"success\"\n isLoading={ true }\n loadingText=\"Creating folder...\"\n spinner={ <Spinner color=\"text.success\" /> }\n >\n Creating folder\n </Button>\n * ?)\n *\n * @example (Example)\n * (?\n * +\n * const variants = ['link', 'success', 'default', 'danger', 'brand', 'accent',\n * 'ghost', 'ai', 'outline', 'brandSubdued', 'solid']\n *\n * const ExampleButton = () => {\n * const [currentVariant, setCurrentVariant ] = useState(0)\n * const [ isLoading, setIsLoading ] = useState(false)\n *\n * const handleClick = () => {\n * setIsLoading(true)\n * setTimeout(() => {\n * setCurrentVariant((prev) => prev === variants.length - 1 ? 0 : prev + 1)\n * setIsLoading(false)\n * }, 300)\n *\n * }\n *\n * return (\n * <Button variant={variants[currentVariant]}\n * isLoading={isLoading} onClick={handleClick} loadingText=\"Saving...\">\n * Save changes\n * </Button>\n * )\n *\n * }\n *\n * render(<ExampleButton/>)\n * ?)\n *\n * @example (Example)\n * Use LinkOverlay to turn the button into a link\n *\n * (?\n * <LinkBox>\n * <LinkOverlay as={NavLink} to=\"/\" />\n * <Button variant=\"link\">Go to home page</Button>\n * </LinkBox>\n * ?)\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>((\n { variant = 'default', children, size = 'md', ...rest },\n ref\n) => (\n <ChakraButton\n variant={ variant }\n ref={ ref }\n size={ size }\n spinner={ (\n <Spinner\n size={ SpinnerSizeMap[size] }\n />\n ) }\n { ...rest }\n >\n { children }\n </ChakraButton>\n)\n)\n","import React from 'react'\nimport { Checkbox as ChakraCheckbox } from '@chakra-ui/react'\nimport { CheckboxProps } from './types'\n\n/**\n * @see CheckboxField\n * @see {@link https://northlight.dev/reference/checkbox}\n *\n * @example (Example)\n * Mainly used for forms, however this component is controlled by\n * a value prop and an onChange callback\n *\n * (?\n * +\n * const MyForm = () => {\n * const [ isVegan, setIsVegan ] = useState(false)\n *\n * return (\n * <Stack p=\"2\">\n * <Label size=\"sm\" htmlFor=\"vegan-checkbox\">Are you vegan</Label>\n * <Checkbox name=\"vegan-checkbox\" onChange={() => setIsVegan((prev) => !prev)} value={isVegan} />\n * </Stack>\n *\n * )\n * }\n *\n * render(<MyForm />)\n *\n * ?)\n *\n */\nexport const Checkbox = ({\n value,\n onChange,\n name,\n size = 'md',\n variant = 'default',\n ...rest\n}: CheckboxProps) => {\n const controlledValue = typeof value === 'boolean'\n ? { isChecked: value }\n : { value }\n\n return (\n <ChakraCheckbox\n size={ size }\n id={ name }\n onChange={ onChange }\n variant={ variant }\n { ...controlledValue }\n { ...rest }\n />\n )\n}\n","import { forEach, identity, is, keys, trim, values } from 'ramda'\nimport { FieldValues } from 'react-hook-form'\n\nconst shouldTrim = (value: any): ((object: FieldValues) => FieldValues) =>\n (is(Array, value) ? values : identity)\n\nexport const trimFormValues = <T extends FieldValues>(obj: FieldValues) => {\n const newObj: FieldValues = obj\n forEach((property) => {\n const value = obj[property]\n if (is(Object, value)) {\n const format = shouldTrim(value)\n newObj[property] = format(trimFormValues(value as FieldValues))\n }\n if (is(String, value)) {\n newObj[property] = trim(value as string)\n }\n }, keys(obj))\n return newObj as T\n}\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'\nimport {\n DefaultValues,\n FieldValues,\n FormProvider,\n Resolver,\n UseFormReturn,\n useForm,\n} from 'react-hook-form'\nimport { always, equals } from 'ramda'\nimport { joiResolver } from '@hookform/resolvers/joi'\nimport { FormProps } from './types'\nimport { trimFormValues } from './trim-form-values'\n\n/**\n * The context provider for handling state of components wrapped in field\n * @see Field\n * @see {@link https://northlight.dev/reference/form}\n *\n * @example (Example)\n * ## Basic\n * (?\n * <Form initialValues={{name: ''}} onSubmit={console.log}>\n * <TextField name=\"name\" label=\"What is your name\" />\n * </Form>\n * ?)\n *\n * @example (Example)\n * ## With form methods\n * The form context provider passes down a lot of methods for handling state\n * (?\n * <Form initialValues={{name: ''}}>\n * {({watch, reset }) => (\n * <Stack>\n * <TextField name=\"name\" label=\"What is your name?\"/>\n * <Button variant=\"danger\" onClick={() => reset({})}>Reset</Button>\n * <Code>{JSON.stringify(watch(), null, 2)}</Code>\n * </Stack>\n * )}\n *\n * </Form>\n * ?)\n * You can view more form methods on the **<a href=\"https://react-hook-form.com/api/useform/\" target=\"_blank\">react hook form docs</a>**\n * (everything that the useForm hooks returns)\n *\n * @example (Example)\n * ## Validation with joi\n *\n * You can pass on validation either by using a custom validate\n * function, by passing html validation directly on a field, or by\n * using joi schema. joi schema is recommended when possible.\n *\n * (?\n * +\n\nconst joiSchema = Joi.object({\n username: Joi.string().alphanum().min(3).max(30).required(),\n password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(),\n});\n\n * const MyForm = () => (\n <Form initialValues={{name: ''}} joiSchema={joiSchema}>\n <Stack>\n <TextField name=\"username\" label=\"User Name\"/>\n <TextField name=\"password\" label=\"Password\" />\n </Stack>\n </Form>\n )\n *\n * render(<MyForm />)\n * ?)\n *\n * @example (Example)\n * ## Moving the form state outside of Form\n * (?\n\n//This code could live in the backend\nconst submitValuesToBackend = (values) => {\n console.log({values})\n if(values.firstName !== 'Steve') {\n throw Error('We only allow people named Steve \\;\\)')\n }\n}\nconst MyForm = () => (\n<Form\n initialValues={ { firstName: '' } }\n onSubmit={ async (values, methods) => {\n try {\n await submitValuesToBackend(values)\n }\n catch (err) {\n methods.setError('firstName', { message: err.message })\n }\n } }\n>\n <HStack alignItems=\"end\" p=\"3\">\n <TextField\n name=\"firstName\"\n label=\"First Name\"\n isRequired={ true }\n />\n <Button type=\"submit\" variant=\"success\">Validate</Button>\n </HStack>\n</Form>\n\n )\n\nrender(<MyForm />)\n\n * ?)\n\n@example (Example)\n## Using a ref\nYou can move up the form state using a ref as well\n(?\n() => {\n const methods = useRef(null)\n\n return (\n <Stack>\n <Form\n ref={methods}\n initialValues={{name: ''}}\n >\n <TextField name=\"name\" label=\"What is your name?\" />\n </Form>\n <Button onClick={() => methods.current.reset({name: (Math.round(Math.random() * 100))})}>\n Get random number\n </Button>\n </Stack>\n\n )\n\n}\n?)\n\n */\nexport const Form = forwardRef(<FormValues extends FieldValues>({\n initialValues,\n onSubmit,\n children,\n validate,\n formSettings = { mode: 'onChange' },\n methods = undefined,\n enableReinitialize = false,\n shouldTrim = true,\n innerFormStyle = {},\n joiSchema,\n ...rest\n}: FormProps<FormValues>, ref: React.Ref<UseFormReturn<FormValues>>) => {\n const customResolver: Resolver<FormValues, any> = (\n values,\n _context,\n _options\n ) => ({\n values,\n errors: validate(values),\n })\n\n const getResolver = () => {\n if (validate) return customResolver\n if (joiSchema) return joiResolver(joiSchema)\n return undefined\n }\n\n const newMethods =\n methods ||\n useForm<FormValues>({\n defaultValues: initialValues as DefaultValues<FormValues>,\n resolver: getResolver(),\n ...formSettings,\n })\n\n useImperativeHandle(ref, always(newMethods), [])\n\n if (enableReinitialize) {\n const initalValuesImage = useRef({})\n useEffect(() => {\n if (!equals(initalValuesImage.current, initialValues)) {\n newMethods?.reset(initialValues)\n initalValuesImage.current = initialValues\n }\n }, [ initialValues ])\n }\n\n const formatValues = (values: FormValues) => {\n if (!shouldTrim) {\n return values\n }\n\n return trimFormValues<FormValues>(values)\n }\n\n const handleSubmit = newMethods.formState.isValid\n ? newMethods.handleSubmit((values) =>\n onSubmit(formatValues(values), newMethods)\n )\n : (e: React.FormEvent<HTMLFormElement>) => {\n newMethods.trigger()\n e.preventDefault()\n }\n\n return (\n <FormProvider { ...newMethods } { ...rest }>\n <form style={ { width: '100%', ...innerFormStyle } } onSubmit={ handleSubmit }>\n { typeof children === 'function' ? children(newMethods) : children }\n </form>\n </FormProvider>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { FormLabelProps } from './types'\nimport { Label } from '../typography'\n\n/**\n * Renders a label, meant to be used alongside a field component\n * @see Field\n * @see {@link https://northlight.dev/reference/form-label}\n *\n */\nexport const FormLabel = forwardRef<HTMLLabelElement, FormLabelProps >(({\n children: label,\n ...rest\n}, ref) => (\n <Label\n size=\"sm\"\n sx={ {\n width: '80%',\n maxWidth: '45ch',\n marginBottom: 1,\n marginInlineEnd: 3,\n } }\n requiredIndicator={ undefined }\n { ...rest }\n ref={ ref }\n >\n { label }\n </Label>\n))\n","import React, { forwardRef } from 'react'\nimport { Controller, FieldPath, FieldValues } from 'react-hook-form'\nimport { FormControl, FormErrorMessage, FormLabel } from '../form-control'\nimport { Stack } from '../stack'\nimport { FieldProps } from './types'\nimport { useFormContext } from '../../hooks'\nimport { getFieldError } from '../../utils'\n\n/**\n * Wraps children under form context\n * @see TextField\n * @see Form\n * @see {@link https://northlight.dev/reference/field}\n *\n * @example (Example)\n * ## Input example\n * (?\n * <Form initialValues={{name: ''}}>\n * <Box p=\"2\">\n * <Field name=\"name\" label=\"Input name\">\n * {({value, onChange}) => (\n * <Input value={value} onChange={onChange} />\n * )}\n * </Field>\n * </Box>\n *\n * </Form>\n * ?)\n * <br />\n * As you can see the field component acts as a middleman to connect\n * any component to the form context, via a controlled value and onChange prop.\n * Most of the common use cases for field,\n * such as text input have been abstracted into their own components, for example _TextField_\n *\n * @example (Example)\n * ## Example with validation and form submition\n * (?\n * () => {\n * const toast = useToast()\n * const handleSubmit =(v) => {\n * toast({title: 'Sent Message', description: `\"${v.message}\"`})\n * }\n * return (\n * <Form initialValues={{message: ''}} onSubmit={handleSubmit}>\n * <Stack p=\"2\">\n * <Field\n * name=\"message\"\n * label=\"Write email\"\n * isRequired={true}\n * validate={{maxLength: {message: 'Message must be under 30 characters', value: 30}}}\n * >\n * {({value, onChange}) => (\n * <Textarea value={value} onChange={onChange} />\n * )}\n * </Field>\n * <Button type=\"submit\" variant=\"brand\">Send Message</Button>\n * </Stack>\n *\n * </Form>\n * )\n * }\n * ?)\n *\n * @example (Example)\n * ## Type-safety\n * There are multiple ways to provide types for\n * the field callback values. To ensure that each\n * component within the field receives the correct\n * value, it's essential to make the field aware\n * of the form state values. When the Field component\n * does not receive any types, the \"value\" callback\n * argument will have the type of \"any\".\n * <br /><br />\n * ### Passing down the control prop (Recommended)\n * (?\n * <Form initialValues={{username: 'Alex'}}>\n * {\n * ({ control }) => {\n * <Box p=\"2\">\n * <Field name=\"username\" label=\"Input name\" control={ control }>\n * {({value, onChange}) => ( // \"value\" has type of \"string\"\n * <Input value={value} onChange={onChange} />\n * )}\n * </Field>\n * </Box>\n * }\n * }\n * </Form>\n * ?)\n * <br /><br />\n * ### Specifying generic arguments\n * You can also specify generic arguments on the Field\n * component to ensure that \"value\" has a valid type.\n * The passed generic type combined with the valid\n * \"name\" property ensures that \"value\" has the expected\n * type received from the generic type:\n * `<Field<MyFormBody> name=\"username\">...</Field>`\n */\n\nconst BaseField = <\n FormValues extends FieldValues = FieldValues,\n FieldName extends FieldPath<FormValues> = FieldPath<FormValues>\n> ({\n name,\n label,\n children,\n direction = 'column',\n isRequired = false,\n noLabelConnection = false,\n validate,\n control: passedControl,\n ...rest\n }: FieldProps<FormValues, FieldName>, ref: React.Ref<HTMLDivElement>) => {\n const methods = useFormContext<FormValues>()\n const { formState: { errors } } = methods\n const control = passedControl ?? methods.control\n\n const fieldError = getFieldError<FormValues>(name, errors)\n\n return (\n <FormControl isInvalid={ !!fieldError } isRequired={ isRequired } ref={ ref }>\n <Stack\n spacing=\"auto\"\n direction={ direction }\n alignItems={ direction === 'column' ? 'stretch' : 'center' }\n { ...rest }\n >\n { label && (\n <FormLabel htmlFor={ noLabelConnection ? undefined : name } mb={ 1 }>\n { label }\n </FormLabel>\n ) }\n <Controller\n name={ name }\n control={ control }\n rules={ validate }\n render={ ({ field }) => children(field, methods) }\n />\n </Stack>\n <FormErrorMessage>\n { fieldError && (fieldError?.message as string) }\n </FormErrorMessage>\n </FormControl>\n )\n}\n\nexport const Field = forwardRef(BaseField)\n","import { useFormContext } from '../../hooks'\nimport { SetValueOptionsType } from './types'\n\nexport const useSetValueRefreshed = () => {\n const { setValue, watch } = useFormContext()\n\n const setValueRefreshed = (name: any, value: any, options: SetValueOptionsType) => {\n watch(name)\n setValue(name, value, options)\n }\n return setValueRefreshed\n}\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { CheckboxFieldProps } from './types'\nimport { Field } from '../form'\nimport { Checkbox } from './checkbox'\nimport { Box } from '../box'\nimport { Label } from '../typography'\nimport { Flex } from '../flex'\n\n/**\n * The checkbox component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see Checkbox\n * @see {@link https://northlight.dev/reference/checkbox-field}\n * @example (Example)\n * ## Basic\n * (?\n * <Form initialValues={{name: ''}}>\n * <CheckboxField\n * name=\"terms\"\n * label=\"I agree to the Terms & Conditions\"\n * labelPlacement=\"left\"\n * labelSize=\"md\"\n * />\n * </Form>\n * ?)\n *\n */\n\nexport const CheckboxField = forwardRef<HTMLDivElement, CheckboxFieldProps>(({\n name,\n label,\n variant,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n direction = 'row',\n labelPlacement = 'left',\n labelSize = 'md',\n ...rest\n}, ref) => (\n <Box\n w={ label ? 'full' : 'fit-content' }\n display=\"inline-flex\"\n >\n <Field\n name={ name }\n label=\"\"\n isRequired={ isRequired }\n direction={ direction }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <Flex\n gap={ 2 }\n direction={ labelPlacement === 'left' ? 'row-reverse' : 'row' }\n >\n <Checkbox\n name={ name }\n onChange={ (e) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n variant={ variant }\n data-testid=\"checkbox-field-test-id\"\n { ...rest }\n />\n <Label htmlFor={ name } sx={ { fontWeight: 'normal' } } size={ labelSize }>{ label }</Label>\n </Flex>\n ) }\n </Field>\n </Box>\n))\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { CheckboxGroup } from '@chakra-ui/react'\nimport { Field } from '../form'\nimport { Box } from '../box'\nimport { CheckboxFieldGroupProps } from './types'\n\n/**\n * The checkbox group component wrapped in a <Field />\n * meant to be used only inside <Form /> together with Checkbox\n * @see Checkbox\n * @see {@link https://northlight.dev/reference/checkbox-group-field}\n *\n */\nexport const CheckboxGroupField = forwardRef<HTMLDivElement, CheckboxFieldGroupProps>(({\n name,\n label,\n children,\n isRequired,\n direction,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}, ref) => (\n <Box w={ label ? 'full' : 'fit-content' }>\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n validate={ validate }\n direction={ direction }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <CheckboxGroup\n onChange={ (e) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n data-testid=\"checkbox-group-field-test-id\"\n { ...rest }\n >\n { children }\n </CheckboxGroup>\n ) }\n </Field>\n </Box>\n))\n","import React, { cloneElement, forwardRef } from 'react'\nimport { IconButton as ChakraIconButton } from '@chakra-ui/react'\nimport { IconButtonProps } from './types'\n\n/**\n * A normal button but renders an icon instead of text\n * @see Button\n * @see Icon\n * @see {@link https://northlight.dev/reference/icon-button}\n *\n * @example (Example)\n * (?\n * <IconButton variant='brand' icon={<Icon as={UsersDuo} />} onClick={console.log}/>\n * ?)\n *\n * @example (Example)\n * (?\n <IconButton\n isRound={ true }\n aria-label=\"create\"\n variant=\"success\"\n icon={ <Icon as={ PlusSolid } /> }\n />\n * ?)\n *\n */\nexport const IconButton = forwardRef(({\n variant = 'default',\n icon,\n 'aria-label': ariaLabel,\n children,\n ...rest\n}: IconButtonProps, ref: any) => {\n const IconComponent = icon ?? children as JSX.Element\n const IconWithSize = cloneElement(IconComponent, { size: IconComponent.props.size ?? rest.size })\n return (\n <ChakraIconButton\n variant={ variant }\n icon={ IconWithSize }\n aria-label={ ariaLabel }\n ref={ ref }\n { ...rest }\n />\n )\n})\n","import { getShades } from '../../utils'\n\nexport const columns = 5\nexport const paletteColors = getShades(100, 500)\nexport const defaultColors = getShades(500)\n","import React, { forwardRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { CheckDuo } from '@northlight/icons'\nimport { getContrastColor } from '../../utils'\nimport { Icon } from '../icon'\nimport { IconButton } from '../icon-button'\nimport { Box } from '../box'\nimport { ColorButtonProps } from './types'\nimport { columns } from './constants'\nimport { useArrowFocus } from '../../hooks'\n\nexport const ColorButton = forwardRef(({\n color,\n onClick,\n size,\n selected = false,\n}: ColorButtonProps, ref: any) => {\n if (!color) return <Box />\n const { defaultArrows, focusPrevious, focusNext } = useArrowFocus(columns)\n\n const onKeyDown = (e: any) => {\n switch (e.key) {\n case 'PageUp':\n e.preventDefault()\n focusPrevious({ wrap: false, repeat: columns * 5 })\n break\n case 'PageDown':\n e.preventDefault()\n focusNext({ wrap: false, repeat: columns * 5 })\n break\n default:\n defaultArrows(e)\n break\n }\n }\n\n const { colorButton } = useMultiStyleConfig('ColorPicker', { size })\n\n return (\n <IconButton\n bg={ color }\n ref={ ref }\n onKeyDown={ onKeyDown }\n aria-label={ `select-${color}` }\n onClick={ onClick }\n sx={ colorButton }\n icon={ <Icon as={ CheckDuo } boxSize={ selected ? undefined : '0' } /> }\n color={ getContrastColor(color) }\n />\n )\n})\n","import React from 'react'\nimport { Popover as ChakraPopover, PopoverProps } from '@chakra-ui/react'\n\nexport const Popover = (props: PopoverProps) => (\n <ChakraPopover isLazy={ true } { ...props } />\n)\n","import React from 'react'\nimport { ChevronDownDuo, ChevronUpDuo } from '@northlight/icons'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { columns } from './constants'\nimport { ColorsExpandButtonProps } from './types'\nimport { useArrowFocus } from '../../hooks'\n\nexport const ColorsExpandButton = ({\n onClick,\n size,\n expanded,\n}: ColorsExpandButtonProps) => {\n const { defaultArrows, focusPrevious, focusFirst } = useArrowFocus(columns)\n const { colorButton } = useMultiStyleConfig('ColorPicker', { size })\n const onKeyDown = (e: any) => {\n switch (e.key) {\n case 'Tab':\n focusFirst()\n break\n case 'ArrowUp':\n e.preventDefault()\n focusPrevious({ wrap: true, repeat: 1 })\n break\n case 'PageUp':\n e.preventDefault()\n focusPrevious({ wrap: false, repeat: columns * 5 })\n break\n default:\n defaultArrows(e)\n break\n }\n }\n\n return (\n <IconButton\n variant=\"ghost\"\n onKeyDown={ onKeyDown }\n aria-label=\"display more colors\"\n onClick={ onClick }\n sx={ colorButton }\n >\n <Icon as={ expanded ? ChevronUpDuo : ChevronDownDuo } />\n </IconButton>\n )\n}\n","import { Portal, PortalProps } from '@chakra-ui/react'\nimport React from 'react'\n\ninterface RenderInPortalProps extends PortalProps {\n shouldRenderInPortal: boolean\n children: JSX.Element\n}\n\nexport const RenderInPortal =\n ({ shouldRenderInPortal, children, ...rest }: RenderInPortalProps) => {\n if (!shouldRenderInPortal) return children\n return (\n <Portal { ...rest }>\n { children }\n </Portal>\n )\n }\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ColorsDuo } from '@northlight/icons'\nimport { FocusScope } from '@react-aria/focus'\nimport { useMultiStyleConfig, useToken } from '@chakra-ui/react'\nimport { useBoolean, useDisclosure } from '../../hooks'\nimport { SimpleGrid } from '../simple-grid'\nimport { Stack } from '../stack'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { Box } from '../box'\nimport { ColorPickerProps } from './types'\nimport { ColorButton } from './color-button'\nimport { columns, defaultColors, paletteColors } from './constants'\nimport {\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverHeader,\n PopoverTrigger,\n} from '../popover'\nimport { ColorsExpandButton } from './colors-expand-button'\nimport { Button } from '../button'\nimport { RenderInPortal } from '../portal/render-in-portal'\n\n/**\n * Dropdown menu where user can select hex value\n * from set colors\n * @see {@link https://northlight.dev/reference/color-picker}\n *\n * @example (Example)\n * ##Pick a color for this campaign\n * (?\n * () => {\n * const [ color, setColor ] = useState(undefined)\n * return (\n * <HStack>\n * <ColorPicker color={color} onChange={setColor}/>\n * <ClipboardInput value={ color } />\n\n * </HStack>\n * )\n * }\n *\n * ?)\n *\n *\n */\nexport const ColorPicker = ({\n onChange = () => {},\n clearable = false,\n colors = defaultColors,\n expandedColors = paletteColors,\n value = null,\n name,\n size = 'md',\n shouldRenderInPortal = false,\n popoverProps,\n ...rest\n}: ColorPickerProps) => {\n const { isOpen, onToggle, onClose } = useDisclosure()\n const [ expanded, setExpanded ] = useBoolean()\n const [ selectedColor, setSelectedColor ] = useState(value)\n const [ visibleColors, setVisibleColors ] = useState(colors)\n const initialFocusRef = useRef(null)\n const {\n trigger,\n heading,\n } = useMultiStyleConfig('ColorPicker', { selectedColor, size })\n const parsedValue = value && useToken('colors', value)\n\n const baseColors = [ ...colors ]\n for (let i = 0; i < baseColors.length % columns; i += 1) {\n baseColors.push('')\n }\n\n useEffect(() => {\n if (value === '') {\n setSelectedColor(null)\n } else {\n setSelectedColor(parsedValue)\n }\n }, [ value ])\n\n useEffect(() => {\n if (expanded) {\n setVisibleColors((prev) => prev.concat(expandedColors))\n } else {\n setVisibleColors(baseColors)\n }\n }, [ expanded ])\n\n const expandColors = () => {\n setExpanded.toggle()\n }\n\n const getNumberOfColumns = () => {\n if (expanded) return columns\n if (colors.length < columns && colors.length > 2) {\n return colors.length\n }\n if (colors.length < columns) {\n return 3\n }\n return columns\n }\n\n const shouldBeFocused = (index: number) => (\n selectedColor\n ? index === visibleColors.findIndex((colorVal) => colorVal === selectedColor)\n : index === 0\n )\n\n const handleSelect = (color: string) => {\n onToggle()\n setSelectedColor(color)\n onChange(color)\n }\n\n const clearSelection = () => {\n setSelectedColor(null)\n onChange(null)\n }\n\n return (\n <Box data-testid=\"color-picker-test-id\">\n <Popover\n isOpen={ isOpen }\n onClose={ onClose }\n initialFocusRef={ initialFocusRef }\n { ...popoverProps }\n >\n <PopoverTrigger>\n <IconButton\n onClick={ onToggle }\n aria-label={ name || 'color picker' }\n name={ name }\n sx={ trigger }\n size={ size }\n icon={ <Icon as={ ColorsDuo } /> }\n { ...rest }\n />\n </PopoverTrigger>\n <RenderInPortal shouldRenderInPortal={ shouldRenderInPortal }>\n <PopoverContent w=\"auto\" boxShadow=\"md\" p={ 2 } bgColor=\"background.default\">\n <Stack>\n <PopoverHeader\n color=\"text.default\"\n sx={ heading }\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n width=\"full\"\n >\n Pick a color\n { clearable && trigger.color !== 'unset' && (\n <Button\n size=\"sm\"\n h=\"5\"\n onClick={ clearSelection }\n variant=\"ghost\"\n >\n Clear\n </Button>\n ) }\n </PopoverHeader>\n <PopoverBody p={ 0 }>\n <Stack alignItems=\"center\" p={ 0 } spacing={ 0 }>\n <FocusScope>\n <SimpleGrid\n columns={ getNumberOfColumns() }\n spacing={ 2 }\n overflowY=\"scroll\"\n maxH={ 72 }\n pr={ 2 }\n pl={ 4 }\n py={ 1 }\n >\n { visibleColors.map((color, index) => (\n <ColorButton\n color={ color }\n key={ `${color}-button-${index as number}` }\n selected={ color === selectedColor }\n ref={ shouldBeFocused(index) ? initialFocusRef : undefined }\n size={ size }\n onClick={ () => handleSelect(color) }\n />\n )) }\n </SimpleGrid>\n { expandedColors.length > 0 && (\n <ColorsExpandButton\n onClick={ expandColors }\n expanded={ expanded }\n size={ size }\n />\n ) }\n </FocusScope>\n </Stack>\n </PopoverBody>\n </Stack>\n </PopoverContent>\n </RenderInPortal>\n </Popover>\n </Box>\n )\n}\n","import React from 'react'\nimport { Field } from '../form'\nimport { ColorPicker } from './color-picker'\nimport { ColorPickerFieldProps } from './types'\n\n/**\n * The <ColorPicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see ColorPicker\n * @see {@link https://northlight.dev/reference/color-picker}\n *\n */\nexport const ColorPickerField = ({\n name,\n label,\n direction,\n isRequired,\n validate,\n ...rest\n}: ColorPickerFieldProps) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ onChange, value }) => (\n <ColorPicker\n name={ name }\n onChange={ onChange }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n)\n","import { DOMAttributes, createContext } from 'react'\nimport { RadioGroupProps, RadioGroupState, useRadioGroupState } from '@react-stately/radio'\nimport { CheckboxGroupProps, CheckboxGroupState, useCheckboxGroupState } from '@react-stately/checkbox'\nimport { AriaCheckboxGroupProps, useCheckboxGroup } from '@react-aria/checkbox'\nimport { AriaRadioGroupProps, useRadioGroup } from '@react-aria/radio'\nimport { FlipButtonGroupProps } from './types'\n\nexport const FlipButtonContext = createContext<CheckboxGroupState | RadioGroupState | null>(null)\n\nexport const useFlipButtonState = (\n props: FlipButtonGroupProps,\n isMulti: boolean\n) => (\n isMulti\n ? useCheckboxGroupState(props as CheckboxGroupProps)\n : useRadioGroupState(props as RadioGroupProps)\n)\n\nexport const useFlipButtonGroup = (\n props: FlipButtonGroupProps,\n state: CheckboxGroupState | RadioGroupState,\n isMulti: boolean\n): DOMAttributes<Element> => {\n const propsWithLabel = {\n ...props,\n 'aria-label': `${isMulti ? 'Checkbox' : 'Radio'}-button-group`,\n }\n\n return (isMulti\n ? useCheckboxGroup(\n propsWithLabel as AriaCheckboxGroupProps,\n state as CheckboxGroupState\n ).groupProps\n : useRadioGroup(\n propsWithLabel as AriaRadioGroupProps,\n state as RadioGroupState\n ).radioGroupProps\n )\n}\n\nexport const useFlipButton = (props: FlipButtonGroupProps, isMulti: boolean) => {\n const state = useFlipButtonState(props, isMulti)\n const flipButtonGroupProps = useFlipButtonGroup(props, state, isMulti)\n return { state, flipButtonGroupProps }\n}\n","import React, { forwardRef, useContext, useRef } from 'react'\nimport { CheckSolid } from '@northlight/icons'\nimport { useCheckboxGroupItem } from '@react-aria/checkbox'\nimport { SlideFade, useMultiStyleConfig } from '@chakra-ui/react'\nimport { useRadio } from '@react-aria/radio'\nimport { useFocusRing } from '@react-aria/focus'\nimport { mergeAll, omit } from 'ramda'\nimport { CheckboxGroupState } from '@react-stately/checkbox'\nimport { RadioGroupState } from '@react-stately/radio'\nimport { mergeProps } from '@react-aria/utils'\nimport { FlipButtonContext } from './utils'\nimport { HStack } from '../stack'\nimport { Icon } from '../icon'\nimport { Text } from '../text'\nimport { CustomContainerPropsType, CustomFlipButtonPropsType, FlipButtonProps } from './types'\n\n/**\n * Meant to act as a middleman to turn any component into\n * either a radio or checkbox input\n * where the user can choose between multiple options\n * @see CheckboxGroup\n * @see RadioGroup\n * @see FlipButtonGroup\n * @see {@link https://northlight.dev/reference/flip-button}\n *\n * @example (Example)\n * ### It must always be wrapped in a group\n * (?\n * <FlipButton />\n * ?)\n * Or it will throw an error\n *\n *\n * @example (Example)\n * ### As a radio button group\n * (?\n *<FlipButtonGroup isMulti={ false } size=\"sm\">\n <FlipButton value=\"one\" icon={AgencyDuo}>One</FlipButton>\n <FlipButton value=\"two\" icon={StagesDuo}>Two</FlipButton>\n <FlipButton value=\"three\" icon={Flag04Duo}>Three</FlipButton>\n</FlipButtonGroup>\n * ?)\n *\n * @example (Example)\n * ### As a checkbox button group\n * (?\n *<FlipButtonGroup isMulti={ true } size=\"sm\">\n <FlipButton value=\"one\" icon={TagsStackDuo}>One</FlipButton>\n <FlipButton value=\"two\" icon={Image03Duo}>Two</FlipButton>\n <FlipButton value=\"three\" icon={TagDuo }>Three</FlipButton>\n</FlipButtonGroup>\n * ?)\n *\n * @example (Example)\n * ###Custom Flip Button\n * (?\n * +\n * const customElement = ({\n flipButtonProps,\n containerProps,\n isSelected,\n label,\n value,\n}) => (\n <HStack\n { ...containerProps }\n spacing=\"4\"\n _checked={ { bgColor: 'blue.500', color: 'text.inverted' } }\n borderRadius=\"md\"\n p=\"2\"\n >\n <input { ...flipButtonProps } />\n <Icon as={ UsersDuo } />\n <Stack spacing=\"0\">\n <Text>{ label }</Text>\n <Text color={ isSelected ? 'text.inverted' : 'gray.200' }>\n { value === 'public'\n ? 'Everyone can view and edit the plan'\n : 'The plan is only visible to you'\n }\n </Text>\n </Stack>\n </HStack>\n)\n\nconst MyComponent = () => (\n<FlipButtonGroup direction=\"column\" sx={{bgColor: 'transparent'}}>\n <FlipButton value=\"public\" label=\"Public\">\n { customElement }\n </FlipButton>\n <FlipButton value=\"private\" label=\"Private\">\n { customElement }\n </FlipButton>\n</FlipButtonGroup>\n\n)\nrender(<MyComponent/>)\n *\n * ?)\n *\n */\nexport const FlipButton = forwardRef<HTMLDivElement, FlipButtonProps>((props, wrapperRef) => {\n const {\n children,\n size,\n variant,\n isMulti,\n isDisabled = false,\n icon,\n value,\n iconPlacement = 'left',\n ...rest\n } = props\n const state = useContext(FlipButtonContext)\n const ref = useRef(null)\n\n const propsWithoutChildren = omit([ 'children' ], { ...props, 'aria-label': `${isMulti ? 'Checkbox' : 'Radio'}-input for ${value}` })\n const { inputProps } = isMulti\n ? useCheckboxGroupItem(propsWithoutChildren, state as CheckboxGroupState, ref)\n : useRadio(propsWithoutChildren, state as RadioGroupState, ref)\n\n const { button, buttonIcon } = useMultiStyleConfig('FlipButton', { size, variant })\n const { focusProps, isFocusVisible: isFocused } = useFocusRing()\n const focusStyles = {\n outline: 'none',\n ring: '2px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n }\n const focusRing = isFocused ? focusStyles : {}\n\n const isSelected = isMulti\n ? (state as CheckboxGroupState).isSelected(value)\n : (state as RadioGroupState).selectedValue === value\n\n const flipButtonProps: CustomFlipButtonPropsType = {\n ...mergeProps(inputProps, focusProps),\n ref,\n style: { opacity: '0', width: '0', height: '0' },\n 'aria-label': isMulti ? 'Checkbox-input' : 'Radio-input',\n }\n\n const containerProps: CustomContainerPropsType = {\n 'aria-checked': isSelected,\n 'aria-disabled': isDisabled,\n sx: focusRing,\n as: 'label',\n cursor: 'pointer',\n }\n\n return typeof children === 'function'\n ? children({\n state,\n containerProps,\n flipButtonProps,\n isFocused,\n isSelected,\n isDisabled,\n isMulti: isMulti || false,\n focusRing,\n value,\n ...rest,\n })\n : (\n <HStack\n spacing={ (isSelected && iconPlacement !== 'none') || icon ? 2 : 0 }\n sx={ mergeAll([ button, isFocused ? focusStyles : {}, { flexDirection: iconPlacement === 'left' ? 'row' : 'row-reverse' } ]) }\n aria-checked={ isSelected }\n aria-disabled={ isDisabled }\n as=\"label\"\n ref={ wrapperRef }\n >\n <input { ...flipButtonProps } />\n { icon && iconPlacement !== 'none'\n ? (\n <Icon as={ icon || CheckSolid } sx={ buttonIcon } />\n ) : isSelected && iconPlacement !== 'none' && (\n <SlideFade in={ isSelected }>\n <Icon as={ icon || CheckSolid } sx={ buttonIcon } />\n </SlideFade>\n ) }\n <Text textAlign=\"center\">{ children }</Text>\n </HStack>\n )\n})\n","import React, { Children, cloneElement, isValidElement } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { omit } from 'ramda'\nimport { Stack } from '../stack'\nimport { FlipButtonGroupProps } from './types'\nimport { FlipButtonContext, useFlipButton } from './utils'\n\n/**\n * Provides context to FlipButton\n * @see FlipButton\n * @see {@link https://northlight.dev/reference/flip-button-group}\n */\nexport const FlipButtonGroup = (props: FlipButtonGroupProps) => {\n const {\n isMulti = false,\n name,\n children,\n direction = 'row',\n isDisabled = false,\n iconPlacement = 'left',\n size,\n variant,\n icon,\n sx = {},\n ...rest\n } = props\n\n const { state, flipButtonGroupProps } = useFlipButton(props, isMulti)\n\n const numberOfButtons = Children.count(children)\n\n const childrenWithProps = (Children.toArray(children)).map((child: React.ReactNode) =>\n (isValidElement(child)\n ? cloneElement(child, {\n key: child.props.value,\n isMulti,\n variant,\n isDisabled,\n iconPlacement,\n icon,\n size,\n ...child.props,\n })\n : child)\n )\n\n const { container } = useMultiStyleConfig('FlipButton', {\n size,\n variant,\n numberOfButtons,\n sx,\n })\n\n const restWithoutOnChange = omit([ 'onChange' ], rest)\n\n return (\n <Stack\n { ...flipButtonGroupProps }\n direction={ direction }\n id={ name }\n spacing={ 0 }\n sx={ container }\n { ...restWithoutOnChange }\n >\n <FlipButtonContext.Provider value={ state }>\n { childrenWithProps }\n </FlipButtonContext.Provider>\n </Stack>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { Field } from '../form'\nimport { FlipButtonGroup } from './flip-button-group'\nimport { FlipButtonGroupFieldProps } from './types'\n\n/**\n * The FlipButtonGroup component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see FlipButton\n * @see {@link https://northlight.dev/reference/flip-button-group-field}\n *\n * @example (Example)\n * (?\n * <Form intitialValues={{foods: 'pizza'}}>\n <FlipButtonGroupField name=\"foods\" label=\"Select the food you enjoy most\" variant=\"brand\">\n <FlipButton value=\"pizza\">Pizza</FlipButton>\n <FlipButton value=\"hamburger\">Button</FlipButton>\n <FlipButton value=\"steak\">Steak</FlipButton>\n </FlipButtonGroupField>\n * </Form>\n *\n * ?)\n *\n */\nexport const FlipButtonGroupField = forwardRef<HTMLDivElement, FlipButtonGroupFieldProps>(({\n name,\n label,\n children,\n direction,\n isRequired,\n iconPlacement = 'left',\n onChange: onChangeCallback = identity,\n validate,\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <FlipButtonGroup\n name={ name }\n onChange={ (e) => { onChange(e); onChangeCallback(e) } }\n direction={ direction }\n value={ value }\n iconPlacement={ iconPlacement }\n { ...rest }\n >\n { children }\n </FlipButtonGroup>\n ) }\n </Field>\n))\n","import React, { forwardRef } from 'react'\nimport { Box, BoxProps } from '../box'\nimport { theme } from '../../theme'\n\nconst hoverAndActiveStyles = {\n borderLeftColor: theme.colors.border['pane-divider'].hover,\n}\n\nexport const ResizeHandle = forwardRef<HTMLDivElement, BoxProps>(\n ({ color, ...rest }, ref) => (\n <Box\n ref={ ref }\n cursor=\"col-resize\"\n _hover={ hoverAndActiveStyles }\n _active={ hoverAndActiveStyles }\n transition=\"border 250ms linear\"\n h=\"inherit\"\n w=\"1\"\n borderLeftWidth=\"lg\"\n borderLeftStyle=\"solid\"\n borderColor={ color ?? 'transparent' }\n zIndex=\"docked\"\n { ...rest }\n />\n )\n)\n","import React, { useRef } from 'react'\nimport { CalendarDuo } from '@northlight/icons'\nimport { useButton } from '@react-aria/button'\nimport { Button } from '../../../button'\nimport { TriggerProps } from './types'\nimport { Icon } from '../../../icon'\n\nexport const Trigger = (props: TriggerProps) => {\n const { isDisabled, handleClick } = props\n const ref = useRef<HTMLButtonElement>(null)\n const { buttonProps } = useButton(props, ref)\n\n return (\n <Button\n { ...buttonProps }\n ref={ ref }\n size=\"sm\"\n boxSize={ 8 }\n variant=\"ghost\"\n isDisabled={ isDisabled }\n onPointerDown={ handleClick }\n pointerEvents={ isDisabled ? 'none' : 'auto' }\n >\n <Icon as={ CalendarDuo } />\n </Button>\n )\n}\n","import React, { useRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { useDateSegment } from '@react-aria/datepicker'\nimport { Box } from '../../../box'\nimport { DateSegmentProps } from './types'\n\nexport const DateSegment = ({ segment, state }: DateSegmentProps) => {\n const ref = useRef<HTMLInputElement>(null)\n const { segmentProps } = useDateSegment(segment, state, ref)\n\n const isDivider = segment.type === 'literal'\n const { dateSegment } = useMultiStyleConfig('DatePicker')\n const minWidth = `${String(segment.maxValue).length}ch`\n\n return (\n <Box\n { ...segmentProps }\n ref={ ref }\n __css={ dateSegment }\n minWidth={ isDivider ? 0 : minWidth }\n paddingInline={ isDivider ? 0 : '0.25rem' }\n color={\n segment.isPlaceholder\n ? 'gray.500'\n : isDivider\n ? 'text.subduded'\n : 'text.default'\n }\n fontSize=\"md\"\n >\n { segment.text }\n </Box>\n )\n}\n","import { toLower } from 'ramda'\n\ntype FormatMapKey = 'y' | 'm' | 'd'\ntype FormatMapValue = 'yyyy' | 'mm' | 'dd'\n\nconst mapFormat: Record<FormatMapKey, FormatMapValue> = {\n y: 'yyyy',\n m: 'mm',\n d: 'dd',\n}\n\nexport const formatQuery = (query: string) =>\n mapFormat[toLower(query)[0] as FormatMapKey]\n\nexport const delimeterIncluded = /([.,:;|\\-/\\\\])/\n","import React, { useRef } from 'react'\nimport { useDateFieldState } from '@react-stately/datepicker'\nimport { useDateField } from '@react-aria/datepicker'\nimport { createCalendar } from '@internationalized/date'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { find, split } from 'ramda'\nimport { Box } from '../../../box'\nimport { DateSegment } from './date-segment'\nimport { DateFieldProps, DateSegmentType } from './types'\nimport { delimeterIncluded, formatQuery } from './utils'\n\nexport const DateField = (props: DateFieldProps) => {\n const ref = useRef<HTMLInputElement>(null)\n const state = useDateFieldState({\n ...props,\n /* Hard coding the United Kingdom locale,\n this enforces using english characters e.g.\n yyyy and not other such as åååå or chinese, which prevents hard to predict bugs */\n locale: 'en-GB',\n createCalendar,\n })\n\n const { dateField } = useMultiStyleConfig('DatePicker')\n const { fieldProps } = useDateField(props, state, ref)\n\n const { segments } = state\n const { dateFormat = 'dd/mm/yyyy' } = props\n const getMatchingSegment = (query: string, index: number) =>\n find(\n (segment: DateSegmentType) => segment.placeholder === formatQuery(query)\n )(segments) || { ...segments[index], text: query }\n\n const sortedSegments = split(delimeterIncluded, dateFormat).map(\n (query: string, index: number) => getMatchingSegment(query, index)\n )\n\n return (\n <Box\n { ...fieldProps }\n ref={ ref }\n display=\"flex\"\n __css={ dateField }\n data-testid=\"date-field-test-id\"\n >\n { sortedSegments.map((segment, i) => {\n const id = `${segment.type}-${i}`\n return <DateSegment segment={ segment } state={ state } key={ id } />\n }) }\n </Box>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Box } from '../../../box'\nimport { StyledFieldProps } from './types'\n\nexport const StyledField = forwardRef((\n { isInvalid, isDisabled, children, variant, ...rest }: StyledFieldProps,\n ref: any\n) => {\n const { styledField } = useMultiStyleConfig('DatePicker', { variant })\n\n return (\n <Box\n { ...rest }\n ref={ ref }\n aria-invalid={ isInvalid }\n aria-disabled={ isDisabled }\n display=\"flex\"\n alignItems=\"center\"\n h={ 10 }\n __css={ styledField }\n >\n { children }\n </Box>\n )\n}\n)\n","import React from 'react'\nimport { Table as ChakraTable } from '@chakra-ui/react'\nimport { TableProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/table}\n *\n * @example\n * (?\n <Table variant=\"rounded\">\n <Thead>\n <Tr>\n <Th fontWeight=\"bold\"> Number</Th>\n <Th fontWeight=\"bold\"> Title</Th>\n </Tr>\n </Thead>\n <Tbody>\n { [1, 2, 3, 4, 5].map((num) => (\n <Tr key={ num }>\n <Td>{ num }</Td>\n <Td>\n This is great Typography man\n </Td>\n </Tr>\n )) }\n </Tbody>\n </Table>\n * ?)\n *\n */\nexport const Table = (props: TableProps) => <ChakraTable { ...props } />\n","import React, { useRef } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendarCell } from '@react-aria/calendar'\nimport { isSameMonth, today } from '@internationalized/date'\nimport { CalendarCellProps } from './types'\nimport { Button } from '../../../../button'\n\nexport const CalendarCell = ({\n state,\n date,\n currentMonth,\n}: CalendarCellProps) => {\n const ref = useRef<HTMLButtonElement>(null)\n const { cellProps, buttonProps, isSelected, formattedDate } = useCalendarCell(\n { date },\n state,\n ref\n )\n const isToday = date.compare(today(state.timeZone)) === 0\n\n const isOutsideMonth = !isSameMonth(currentMonth, date)\n\n return (\n <chakra.td { ...cellProps }>\n <Button\n { ...buttonProps }\n ref={ ref }\n borderRadius=\"xs\"\n boxSize={ 8 }\n hidden={ isOutsideMonth }\n size=\"sm\"\n fontWeight=\"medium\"\n variant={ isSelected ? 'brand' : 'ghost' }\n ring={ isToday && !isSelected ? '1px' : '0px' }\n ringColor=\"brand\"\n >\n { formattedDate }\n </Button>\n </chakra.td>\n )\n}\n","import React, { memo } from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/system'\nimport { DayLabelsProps } from './types'\n\nexport const DayLabels = memo(({ weekDays }: DayLabelsProps) => {\n const { dayLabel } = useMultiStyleConfig('Calendar')\n const weekDaysWithIds = weekDays.map((day, i) => ({ label: day, _id: i }))\n\n return (\n <>\n { weekDaysWithIds.map(({ label, _id }) => (\n <chakra.th key={ _id } __css={ dayLabel }>\n { label }\n </chakra.th>\n )) }\n </>\n )\n})\n","const mondayFirstWeekDays = [ 'M', 'T', 'W', 'T', 'F', 'S', 'S' ]\nconst sundayFirstWeekDays = [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ]\n\nexport const getWeekdays = (firstDayOfWeek: 'monday' | 'sunday') =>\n (firstDayOfWeek === 'monday' ? mondayFirstWeekDays : sundayFirstWeekDays)\n","import React, { memo } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendarGrid } from '@react-aria/calendar'\nimport { getWeeksInMonth } from '@internationalized/date'\nimport { times } from 'ramda'\nimport { Table, Tbody, Thead, Tr } from '../../../../table'\nimport { CalendarCell } from './calendar-cell'\nimport { CalendarGridProps } from './types'\nimport { DayLabels } from './day-labels'\nimport { getWeekdays } from './utils'\n\nexport const CalendarGrid = memo(\n ({ state, locale, firstDayOfWeek, ...rest }: CalendarGridProps) => {\n const startDate = state.visibleRange.start\n const { gridProps, headerProps } = useCalendarGrid(rest, state)\n const weeksInMonth = getWeeksInMonth(startDate, locale)\n const weekDays = getWeekdays(firstDayOfWeek)\n\n return (\n <Table variant=\"unstyled\" { ...gridProps }>\n <Thead { ...headerProps }>\n <Tr>\n <DayLabels weekDays={ weekDays } />\n </Tr>\n </Thead>\n <Tbody>\n { times(\n (weekIndex) => (\n <Tr key={ weekIndex }>\n { state\n .getDatesInWeek(weekIndex, startDate)\n .map((date) =>\n (date ? (\n <CalendarCell\n key={ date.day }\n state={ state }\n date={ date }\n currentMonth={ startDate }\n />\n ) : (\n <chakra.td />\n ))\n ) }\n </Tr>\n ),\n weeksInMonth\n ) }\n </Tbody>\n </Table>\n )\n }\n)\n","import React, { useRef } from 'react'\nimport { useButton } from '@react-aria/button'\nimport { Button } from '../../../../button'\nimport { MonthButtonProps } from './types'\n\nexport const MonthButton = ({ children, ...rest }: MonthButtonProps) => {\n const ref = useRef<HTMLButtonElement>(null)\n const { buttonProps } = useButton(rest, ref)\n\n return (\n <Button\n { ...buttonProps }\n boxSize={ 8 }\n size=\"xs\"\n variant=\"ghost\"\n ref={ ref }\n >\n { children }\n </Button>\n )\n}\n","export const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n","import React, { ChangeEvent } from 'react'\nimport { Select, useMultiStyleConfig } from '@chakra-ui/react'\nimport { months } from '../constants'\nimport { MonthSelectProps } from './types'\n\nexport const MonthSelect = ({ state }: MonthSelectProps) => {\n const { dateSelect } = useMultiStyleConfig('Calendar')\n const selectedMonth = state.visibleRange.start.month - 1\n\n const onChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const index = Number(e.target.value)\n const diff = index - selectedMonth\n state.setFocusedDate(state.visibleRange.start.add({ months: diff }))\n }\n\n return (\n <Select\n id=\"month\"\n aria-label=\"Select Month\"\n onChange={ onChange }\n value={ selectedMonth }\n iconSize=\"0px\"\n size=\"sm\"\n variant=\"unstyled\"\n sx={ dateSelect }\n w=\"max-content\"\n textAlign=\"center\"\n >\n { months.map((month, i) => (\n <option value={ i } key={ `month-${i as number}` }>\n { month }\n </option>\n )) }\n </Select>\n )\n}\n","import React from 'react'\nimport { Select, useMultiStyleConfig } from '@chakra-ui/react'\nimport { YearSelectProps } from './types'\n\nexport const YearSelect = ({\n onChange,\n years,\n}: YearSelectProps) => {\n const { dateSelect } = useMultiStyleConfig('Calendar')\n\n return (\n <Select\n id=\"year\"\n aria-label=\"Year\"\n onChange={ onChange }\n value={ 10 }\n size=\"sm\"\n iconSize=\"0px\"\n variant=\"unstyled\"\n sx={ dateSelect }\n w=\"max-content\"\n >\n { years.map((year, i) => (\n <option key={ year.formatted } value={ i }>\n { year.formatted }\n </option>\n )) }\n </Select>\n\n )\n}\n","import { useDateFormatter } from '@react-aria/i18n'\nimport { UseYearsCalendarProps, UseYearsRangeCalendarProps, YearValue } from './types'\n\nexport const useYearsCalendar = ({\n state,\n}: UseYearsCalendarProps) => {\n const years: YearValue[] = []\n const formatter = useDateFormatter({ year: 'numeric', month: 'long' })\n\n for (let i = -10; i < 10; i += 1) {\n const date = state.focusedDate.add({ years: i })\n years.push({\n value: date,\n formatted: formatter.format(date.toDate(state.timeZone)),\n })\n }\n return { years }\n}\n\nexport const useYearsRangeCalendar = ({\n state,\n}: UseYearsRangeCalendarProps) => {\n const years: YearValue[] = []\n\n for (let i = -10; i < 10; i += 1) {\n const date = state.visibleRange.start.add({ years: i })\n years.push({\n value: date,\n formatted: `${date.year}`,\n })\n }\n return { years }\n}\n","import React, { ChangeEvent } from 'react'\nimport { YearSelect } from './year-select'\nimport { useYearsCalendar } from './utils'\nimport { YearSelectCalendarProps } from './types'\n\nexport const YearSelectCalendar = ({ state }: YearSelectCalendarProps) => {\n const { years } = useYearsCalendar({ state })\n const onChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const index = Number(e.target.value)\n const date = years[index].value\n state.setFocusedDate(date)\n }\n\n return (\n <YearSelect onChange={ onChange } years={ years } />\n )\n}\n","import React, { ChangeEvent } from 'react'\nimport { YearSelect } from './year-select'\nimport { useYearsRangeCalendar } from './utils'\nimport { YearSelectRangeCalendarProps } from './types'\n\nexport const YearSelectRangeCalendar = ({\n state,\n}: YearSelectRangeCalendarProps) => {\n const { years } = useYearsRangeCalendar({ state })\n const onChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const index = Number(e.target.value)\n const date = years[index].value\n state.setFocusedDate(date)\n }\n\n return (\n <YearSelect onChange={ onChange } years={ years } />\n )\n}\n","const MILLISECONDS_PER_DAY = 86400000\n\nconst getThursdayDate = (date: Date): Date => {\n const thursdayDate = new Date(date)\n thursdayDate.setDate(date.getDate() + (4 - (date.getDay() || 7)))\n return thursdayDate\n}\n\nconst hasWeek53 = (year: number): boolean => {\n const firstDayOfYear = new Date(year, 0, 1)\n return firstDayOfYear.getDay() === 4 ||\n (firstDayOfYear.getDay() === 3 && new Date(year, 1, 29).getMonth() === 1)\n}\n\nexport const getWeekNumberAtStartOfMonth = (\n year: number,\n month: number\n): number => {\n const firstDayOfMonth = new Date(year, month - 1, 1)\n const thursdayOfFirstWeek = getThursdayDate(firstDayOfMonth)\n const firstDayOfYear = new Date(year, 0, 1)\n const firstThursdayOfYear = getThursdayDate(firstDayOfYear)\n const daysDifference = thursdayOfFirstWeek.getTime() - firstThursdayOfYear.getTime()\n const weekNumber = Math.ceil((daysDifference / MILLISECONDS_PER_DAY + 1) / 7)\n\n const isYearTransition = firstThursdayOfYear.getFullYear() < year\n const isJanuaryTransition = isYearTransition\n && thursdayOfFirstWeek.getFullYear() < year && month === 1\n\n if (isJanuaryTransition) {\n return hasWeek53(year - 1) ? 53 : 52\n }\n\n if (isYearTransition && month > 1) {\n return weekNumber - 1\n }\n\n if (month === 1 && weekNumber > 51) {\n return !hasWeek53(year - 1) ? 1 : weekNumber\n }\n\n return weekNumber\n}\n\nexport const getDisplayWeek = (\n baseWeek: number,\n weekIndex: number,\n year: number,\n month: number\n): number => {\n const isJanuaryEdgeCase = month === 1 && baseWeek > 51\n\n if (isJanuaryEdgeCase) {\n return weekIndex === 0 ? baseWeek : weekIndex\n }\n\n if (weekIndex === 0) {\n return baseWeek\n }\n\n const nextWeek = baseWeek + weekIndex\n\n if (nextWeek > 52) {\n return hasWeek53(year) && nextWeek === 53 ? 53 : nextWeek - 52\n }\n\n return nextWeek\n}\n","import React, { useRef } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendarCell } from '@react-aria/calendar'\nimport { isSameMonth, today } from '@internationalized/date'\nimport { equals } from 'ramda'\nimport { RangeCellProps } from './types'\n\nexport const RangeCell = ({\n state,\n date,\n currentMonth,\n range,\n}: RangeCellProps) => {\n const isOutsideMonth = !isSameMonth(currentMonth, date)\n if (isOutsideMonth) return <chakra.td />\n\n const ref = useRef<HTMLButtonElement>(null)\n const {\n cellProps,\n buttonProps,\n isSelected: baseIsSelected,\n formattedDate,\n } = useCalendarCell({ date }, state, ref)\n\n const isToday = date.compare(today(state.timeZone)) === 0\n\n const isHighlighted = range && date < range.end && date > range.start\n\n const isSelected =\n range &&\n !isHighlighted &&\n (equals(date, range.start) || equals(date, range.end))\n\n return (\n <chakra.td { ...cellProps }>\n <chakra.button\n { ...buttonProps }\n type=\"button\"\n ref={ ref }\n borderRadius=\"xs\"\n bgColor={\n isHighlighted ? 'brand-alt' : isSelected ? 'brand' : 'transparent'\n }\n color={ isSelected ? 'text.inverted' : 'text.default' }\n fontSize=\"sm\"\n ring={ isToday && !isSelected ? '1px' : '0px' }\n ringColor=\"brand\"\n mx=\"-1px\"\n ml={ isToday ? '-2px ' : undefined }\n my=\"0a\"\n w=\"8\"\n h=\"8\"\n fontWeight=\"medium\"\n opacity={ isSelected && !baseIsSelected ? '0.4' : '1' }\n _focusVisible={ {\n outline: 'none',\n ring: '2px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n } }\n _hover={ {\n bgColor: isSelected ? ' background.button.brand-hover' : 'bg.filled',\n _disabled: {\n bgColor: 'transparent',\n },\n } }\n _disabled={ {\n opacity: 0.3,\n } }\n >\n { formattedDate }\n </chakra.button>\n </chakra.td>\n )\n}\n","import React, { useMemo } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendar, useCalendarGrid } from '@react-aria/calendar'\nimport { getWeeksInMonth } from '@internationalized/date'\nimport { times } from 'ramda'\nimport { useLocale } from '@react-aria/i18n'\nimport { CalendarState } from '@react-stately/calendar'\nimport { ChevronLeftSolid, ChevronRightSolid } from '@northlight/icons'\nimport { DayLabels } from './day-labels'\nimport { Box } from '../../../../box'\nimport { HStack, Stack } from '../../../../stack'\nimport { Flex } from '../../../../flex'\nimport { Icon } from '../../../../icon'\nimport { Small } from '../../../../typography'\nimport { MonthSelect, YearSelectRangeCalendar } from '../date-select'\nimport { MonthButton } from './month-button'\nimport { getDisplayWeek, getWeekNumberAtStartOfMonth } from './get-week-number-start-of-month'\nimport { RangeCell } from './range-cell'\nimport { DateRangeValue } from '../quick-navigation/types'\nimport { FirstDayOfWeek } from './types'\nimport { getWeekdays } from './utils'\n\ninterface StandaloneCalendarGridProps {\n state: CalendarState\n range: DateRangeValue | undefined\n firstDayOfWeek: FirstDayOfWeek\n}\n\nexport const StandaloneCalendarGrid = ({\n state,\n range,\n firstDayOfWeek,\n ...rest\n}: StandaloneCalendarGridProps) => {\n const { locale } = useLocale()\n const { calendarProps, prevButtonProps, nextButtonProps } = useCalendar(\n {},\n state\n )\n const startDate = state.visibleRange.start\n const { gridProps, headerProps } = useCalendarGrid(rest, state)\n const weekDays = getWeekdays(firstDayOfWeek)\n const weeksInMonth = getWeeksInMonth(startDate, locale)\n const weekNumberStart = useMemo(() => {\n const weekNumber = getWeekNumberAtStartOfMonth(startDate.year, startDate.month)\n return weekNumber\n }, [ startDate.year, startDate.month ])\n\n return (\n <Box { ...calendarProps } h=\"265px\" p=\"0\">\n <Stack>\n <Flex justify=\"space-between\" w=\"full\" p=\"1\" alignItems=\"center\">\n <MonthButton { ...prevButtonProps }>\n <Icon as={ ChevronLeftSolid } boxSize={ 4 } />\n </MonthButton>\n <HStack spacing=\"0\">\n <MonthSelect state={ state } />\n <YearSelectRangeCalendar state={ state } />\n </HStack>\n <MonthButton { ...nextButtonProps }>\n <Icon as={ ChevronRightSolid } boxSize={ 4 } />\n </MonthButton>\n </Flex>\n <chakra.table { ...gridProps } sx={ { borderSpacing: '0' } }>\n <chakra.thead { ...headerProps }>\n <chakra.tr>\n <chakra.th />\n <DayLabels weekDays={ weekDays } />\n </chakra.tr>\n </chakra.thead>\n <chakra.tbody>\n { times((weekIndex) => {\n const weekNumber = getDisplayWeek(weekNumberStart,\n weekIndex,\n startDate.year,\n startDate.month)\n return (\n <chakra.tr key={ weekIndex }>\n <chakra.td>\n <Small sx={ { color: 'text.subdued' } } pr=\"2\">\n w.\n { weekNumber }\n </Small>\n </chakra.td>\n { state\n .getDatesInWeek(weekIndex, startDate)\n .map((date) =>\n (date ? (\n <RangeCell\n key={ date.day }\n state={ state }\n range={ range }\n date={ date }\n currentMonth={ startDate }\n />\n ) : (\n <chakra.td />\n ))\n ) }\n </chakra.tr>\n )\n }, weeksInMonth) }\n </chakra.tbody>\n </chakra.table>\n </Stack>\n </Box>\n )\n}\n","import React from 'react'\nimport { GregorianCalendar } from '@internationalized/date'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { useLocale } from '@react-aria/i18n'\nimport { useCalendarState } from '@react-stately/calendar'\nimport { useCalendar } from '@react-aria/calendar'\nimport { ChevronLeftSolid, ChevronRightSolid } from '@northlight/icons'\nimport { Flex } from '../../../flex'\nimport { Box } from '../../../box'\nimport { CalendarGrid, MonthButton } from './components'\nimport { HStack, Stack } from '../../../stack'\nimport { Icon } from '../../../icon'\nimport { YearSelectCalendar } from './date-select'\nimport { CalendarProps } from './types'\n\nexport const Calendar = (props: CalendarProps) => {\n const { firstDayOfWeek } = props\n const { locale } = useLocale()\n const { container } = useMultiStyleConfig('Calendar')\n\n const state = useCalendarState({\n ...props,\n locale,\n createCalendar: () => new GregorianCalendar(),\n })\n\n const { calendarProps, prevButtonProps, nextButtonProps } = useCalendar(\n props,\n state\n )\n\n return (\n <Box { ...calendarProps } __css={ container }>\n <Stack>\n <Flex justifyContent=\"space-between\">\n <Box paddingInlineStart=\"2\">\n <YearSelectCalendar state={ state } />\n </Box>\n <HStack spacing={ 2 }>\n <MonthButton { ...prevButtonProps }>\n <Icon as={ ChevronLeftSolid } boxSize={ 4 } />\n </MonthButton>\n <MonthButton { ...nextButtonProps }>\n <Icon as={ ChevronRightSolid } boxSize={ 4 } />\n </MonthButton>\n </HStack>\n </Flex>\n <CalendarGrid\n state={ state }\n locale={ locale }\n firstDayOfWeek={ firstDayOfWeek }\n />\n </Stack>\n </Box>\n )\n}\n","import React, { ReactNode } from 'react'\nimport { I18nProvider } from '@react-aria/i18n'\nimport { FirstDayOfWeek } from '../components/calendar/components/types'\n\ninterface DatePickerLocaleWrapperProps {\n firstDayOfWeek: FirstDayOfWeek\n children: ReactNode\n}\n\nexport const DatePickerLocaleWrapper = ({\n firstDayOfWeek,\n children,\n}: DatePickerLocaleWrapperProps) => {\n const locale = firstDayOfWeek === 'monday' ? 'en-DE' : 'en-US'\n return <I18nProvider locale={ locale }>{ children }</I18nProvider>\n}\n","import React, { useRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { useDatePicker } from '@react-aria/datepicker'\nimport { useDatePickerState } from '@react-stately/datepicker'\nimport { FocusScope } from '@react-aria/focus'\nimport { XCloseSolid } from '@northlight/icons'\nimport { parseDate } from '@internationalized/date'\nimport { DateField, StyledField, Trigger } from '../components/date-field'\nimport { Calendar } from '../components/calendar'\nimport { DatePickerProps } from '../types'\nimport { IconButton } from '../../icon-button'\nimport { HStack } from '../../stack'\nimport { InputGroup, InputRightElement } from '../../input'\nimport { Popover, PopoverAnchor, PopoverContent } from '../../popover'\nimport { Icon } from '../../icon'\nimport { Box } from '../../box'\nimport { DatePickerLocaleWrapper } from './date-picker-locale-wrapper'\n\n/**\n * Popover to select single date\n * @see DatePickerField\n * @see {@link https://northlight.dev/reference/date-picker}\n *\n * @example (Example)\n * ## When is your birthday\n * (?\n * () => {\n * const [ date, setDate ] = useState('2023-10-10')\n *\n * const parseDate = () => {\n * return undefined\n * }\n *\n * return (\n * <DatePicker\n * firstDayOfWeek=\"monday\"\n * resetDate={() => setDate(null)} onChange={setDate} value={parseDate(date)}/>\n * )\n * }\n *\n * ?)\n * <br />\n * ### Some notes on date format\n * As you can see in the above example, the parseDate function returns undefined.\n * The DatePicker natively handles\n * dates as a DateValue object. To get out a string value on format yyyy-mm-dd,\n * you can use the javascript <b>.toString</b> method,\n * and for getting it back from string to DateValue,\n * you can use the parseDate util.\n * <br />\n * To read more about date formatting, consult the\n * <a target=\"_blank\" style=\"fontWeight: bold;\" href=\"https://react-spectrum.adobe.com/internationalized/date/CalendarDate.html\">react aria internationalized documentation</a>\n *\n * @example (Example)\n * ## Another example\n * (?\n * <DatePicker\n * variant=\"filled\"\n * dateFormat=\"mm|dd-yyyy\"\n * />\n * ?)\n *\n */\nexport const DatePicker = (props: DatePickerProps) => {\n const {\n isDisabled,\n isClearable = true,\n resetDate,\n isInvalid = false,\n dateFormat,\n minValue,\n variant = 'outline',\n firstDayOfWeek = 'monday',\n } = props\n const ref = useRef() as React.MutableRefObject<HTMLInputElement>\n const { group } = useMultiStyleConfig('DatePicker')\n\n const state = useDatePickerState({\n ...props,\n shouldCloseOnSelect: false,\n hideTimeZone: true,\n })\n\n const { buttonProps, fieldProps, calendarProps, groupProps, dialogProps } =\n useDatePicker(\n { ...props, minValue: minValue || parseDate('1994-03-08') },\n state,\n ref\n )\n\n const togglePopup = () => state.setOpen(!state.isOpen)\n\n return (\n <Popover\n isOpen={ state.isOpen }\n onClose={ () => state.setOpen(false) }\n placement=\"bottom-end\"\n >\n <PopoverAnchor>\n <HStack minW={ 56 }>\n <InputGroup { ...groupProps } ref={ ref } __css={ group }>\n <StyledField\n isDisabled={ isDisabled }\n isInvalid={ isInvalid }\n variant={ variant }\n >\n <Box paddingInlineStart=\"1a\" paddingInlineEnd={ 10 }>\n <DateField { ...fieldProps } dateFormat={ dateFormat } />\n </Box>\n </StyledField>\n <InputRightElement\n sx={ { height: '100%', paddingRight: '1' } }\n zIndex={ 0 }\n >\n <Trigger\n { ...buttonProps }\n isDisabled={ isDisabled }\n handleClick={ togglePopup }\n />\n </InputRightElement>\n </InputGroup>\n <IconButton\n aria-label=\"reset-date\"\n variant=\"danger\"\n size=\"sm\"\n fontSize=\"xs\"\n onClick={ resetDate }\n hidden={ !state.dateValue || !isClearable }\n isDisabled={ isDisabled }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </HStack>\n </PopoverAnchor>\n { state.isOpen && (\n <PopoverContent { ...dialogProps } ref={ ref } w={ 64 } border=\"none\">\n <FocusScope contain={ true } restoreFocus={ true }>\n <DatePickerLocaleWrapper firstDayOfWeek={ firstDayOfWeek }>\n <Calendar { ...calendarProps } firstDayOfWeek={ firstDayOfWeek } />\n </DatePickerLocaleWrapper>\n </FocusScope>\n </PopoverContent>\n ) }\n </Popover>\n )\n}\n","import React from 'react'\nimport { Link, chakra } from '@chakra-ui/react'\nimport { Link as ReactRouterLink } from 'react-router-dom'\nimport { useClickable } from '@chakra-ui/clickable'\nimport { isNil } from 'ramda'\nimport { ClickableProps } from './types'\nimport { ring } from '../../utils'\n\n/**\n * Wrapper component to make children interactive\n * by taking care of focus/accessibility, will render\n * either a link or button depending on if passing\n * an href\n * @see {@link https://northlight.dev/reference/clickable}\n * @example (Example)\n * ### Click to send notification\n * (?\n * () => {\n * const [ count, setCount ] = useState(0)\n * return (\n * <Clickable onClick={ () => setCount((prev) => prev + 1) }>\n <Avatar name=\"anakin skywalker\" variant=\"rounded\" notificationCount={count}/>\n </Clickable>\n * )\n * }\n * ?)\n * @example (Example)\n * ### Rendering a link if passing href\n * (?\n <Clickable href=\"/reference/select\">\n <Center boxSize=\"3xs\" bgColor=\"gray.50\">\n Link\n </Center>\n </Clickable>\n * ?)\n *\n */\nexport const Clickable = ({ href, linkProps, ...rest }: ClickableProps) => {\n const clickable = useClickable(rest)\n\n return (\n <>\n { !isNil(href) && (\n <Link\n as={ ReactRouterLink }\n _focusVisible={ ring }\n to={ href }\n _hover={ { textDecoration: 'none' } }\n { ...linkProps }\n { ...clickable }\n />\n ) }\n { isNil(href) && <chakra.button _focusVisible={ ring } { ...clickable } /> }\n </>\n )\n}\n","import React from 'react'\nimport { Clickable } from '../../../../clickable'\nimport { Label } from '../../../../typography'\nimport { Flex } from '../../../../flex'\nimport { DateButtonProps } from './types'\n\nexport const DateButton = ({\n isActive,\n onClick,\n children,\n}: DateButtonProps) => (\n <Flex maxW=\"120px\">\n <Clickable onClick={ onClick }>\n <Label\n _hover={ {\n fontWeight: 'semibold',\n } }\n sx={ {\n color: isActive ? 'background.button.brand' : 'text.default',\n cursor: 'pointer',\n fontWeight: isActive ? 'semibold' : 'regular',\n } }\n _active={ {\n fontWeight: 'semibold',\n } }\n h=\"8\"\n >\n { children }\n </Label>\n </Clickable>\n </Flex>\n)\n","import { DateRangeValue, QuickSelectState } from './types'\n\nexport const validRange = (date: DateRangeValue, state: QuickSelectState) =>\n !date || (\n (!state.minValue || date.start >= state.minValue) &&\n (!state.maxValue || date.end <= state.maxValue) &&\n date.end >= date.start\n )\n","import {\n CalendarDate,\n endOfMonth,\n endOfWeek,\n endOfYear,\n startOfMonth,\n startOfWeek,\n startOfYear,\n today,\n} from '@internationalized/date'\nimport { QuickSelectState } from './types'\n\nexport const getQuickSelectOptions = (\n state: QuickSelectState,\n locale: string,\n fiscalStartMonth: number,\n fiscalStartDay: number\n) => {\n const thisDay = today(state.timeZone)\n\n const startOfMonthWithDays = (\n date: CalendarDate,\n { months, days }: { months: number, days: number }\n ) => {\n const start = date.add({ months }).set({ day: days })\n return start\n }\n\n const endOfMonthWithDays = (\n date: CalendarDate,\n { months, days }: { months: number, days: number }\n ) => {\n const end = date.add({ months }).set({ day: days }).subtract({ days: 1 })\n return end\n }\n\n const thisWeek = {\n value: {\n start: startOfWeek(thisDay, locale),\n end: endOfWeek(thisDay, locale),\n },\n label: 'This Week',\n }\n\n const nextWeek = {\n value: {\n start: startOfWeek(thisDay.add({ weeks: 1 }), locale),\n end: endOfWeek(thisDay.add({ weeks: 1 }), locale),\n },\n label: 'Next Week',\n }\n\n const lastWeek = {\n value: {\n start: startOfWeek(thisDay.subtract({ weeks: 1 }), locale),\n end: endOfWeek(thisDay.subtract({ weeks: 1 }), locale),\n },\n label: 'Last Week',\n }\n\n const thisMonth = {\n value: {\n start: startOfMonth(thisDay),\n end: endOfMonth(thisDay),\n },\n label: 'This Month',\n }\n\n const lastMonth = {\n value: {\n start: startOfMonth(thisDay.subtract({ months: 1 })),\n end: endOfMonth(thisDay.subtract({ months: 1 })),\n },\n label: 'Last Month',\n }\n\n const thisYear = {\n value: {\n start: startOfYear(thisDay),\n end: endOfYear(thisDay),\n },\n label: 'This Year',\n }\n\n const lastYear = {\n value: {\n start: startOfYear(thisDay.subtract({ years: 1 })),\n end: endOfYear(thisDay.subtract({ years: 1 })),\n },\n label: 'Last Year',\n }\n\n const nextMonth = {\n value: {\n start: startOfMonth(thisDay.add({ months: 1 })),\n end: endOfMonth(thisDay.add({ months: 1 })),\n },\n label: 'Next Month',\n }\n\n const nextThreeMonths = {\n value: {\n start: startOfMonth(thisDay.add({ months: 1 })),\n end: endOfMonth(thisDay.add({ months: 3 })),\n },\n label: 'Next 3 Months',\n }\n\n const nextSixMonths = {\n value: {\n start: startOfMonth(thisDay.add({ months: 1 })),\n end: endOfMonth(thisDay.add({ months: 6 })),\n },\n label: 'Next 6 Months',\n }\n\n const nextYear = {\n value: {\n start: startOfYear(thisDay.add({ years: 1 })),\n end: endOfYear(thisDay.add({ years: 1 })),\n },\n label: 'Next Year',\n }\n\n // Fiscal year from input is 0-11, while internationalized gives 1-12. This corrects the check.\n const offsetFiscalYear =\n thisDay.month < fiscalStartMonth + 1 ||\n (thisDay.month === fiscalStartMonth + 1 && thisDay.day < fiscalStartDay)\n ? 1\n : 0\n\n const thisFiscalYear = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n { months: fiscalStartMonth, days: fiscalStartDay }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n { months: fiscalStartMonth + 12, days: fiscalStartDay }\n ),\n },\n label: 'This Fiscal Year',\n }\n\n const lastFiscalYear = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear + 1 }),\n {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear + 1 }),\n {\n months: fiscalStartMonth + 12,\n days: fiscalStartDay,\n }\n ),\n },\n label: 'Last Fiscal Year',\n }\n\n const yearToDate = {\n value: {\n start: startOfMonthWithDays(startOfYear(thisDay), {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }),\n end: thisDay,\n },\n label: 'Year to Date',\n }\n\n const S1 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'S1' : 'FS1',\n }\n\n const S2 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 12,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'S2' : 'FS2',\n }\n\n const F1 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 3,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q1' : 'FQ1',\n }\n\n const F2 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 3,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q2' : 'FQ2',\n }\n\n const F3 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 9,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q3' : 'FQ3',\n }\n\n const F4 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 9,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 12,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q4' : 'FQ4',\n }\n\n const fiscalSemesters = [ S1, S2 ]\n const fiscalQuarters = [ F1, F2, F3, F4 ]\n const fiscalYears =\n fiscalStartMonth === 0 ? [] : [ thisFiscalYear, lastFiscalYear ]\n\n const quickDates = [\n thisYear,\n yearToDate,\n lastWeek,\n nextWeek,\n thisWeek,\n lastMonth,\n nextThreeMonths,\n nextSixMonths,\n nextMonth,\n thisMonth,\n lastYear,\n nextYear,\n ...fiscalYears,\n ]\n\n return { quickDates, fiscalQuarters, fiscalSemesters }\n}\n","import React, { useMemo } from 'react'\nimport { any, equals, map } from 'ramda'\nimport { palette } from '@northlight/tokens'\nimport { Flex, Spacer } from '../../../../flex'\nimport { Stack } from '../../../../stack'\nimport { Box } from '../../../../box'\nimport { DateButton } from './date-button'\nimport { validRange } from './utils'\nimport { Date, DateRangeValue, QuickSelectProps } from './types'\nimport { getQuickSelectOptions } from './get-quick-select-options'\n\nconst seperator = `1px solid ${palette.gray['100']}`\n\nexport const QuickSelect = ({\n state,\n fiscalStartMonth = 0,\n fiscalStartDay = 0,\n locale = '',\n height = '17.5rem',\n}: QuickSelectProps) => {\n const { quickDates, fiscalQuarters, fiscalSemesters } = useMemo(\n () => getQuickSelectOptions(state, locale, fiscalStartMonth, fiscalStartDay),\n []\n )\n\n const updateDate = (newDate: DateRangeValue) => () => {\n if (newDate) {\n state.setValue(newDate)\n state.setFocusedDateRange(newDate)\n }\n }\n\n const getIsActive = (newDate: Date) => equals(state.value, newDate.value)\n\n const shouldShow = (dates: Date[]) =>\n any((date) => validRange(date.value, state), dates)\n\n return (\n <Stack alignItems=\"start\" borderRight={ seperator } pt=\"2\">\n <Stack\n h={ height }\n overflowY=\"hidden\"\n pr=\"4\"\n _hover={ { overflowY: 'scroll' } }\n w=\"36\"\n display={ shouldShow(quickDates) ? 'initial' : 'none' }\n >\n { map(\n (quickDate) =>\n validRange(quickDate.value, state) && (\n <Box minH=\"20px\" key={ `quick-select-${quickDate.label}` }>\n <DateButton\n onClick={ updateDate(quickDate.value) }\n isActive={ getIsActive(quickDate) }\n >\n { quickDate.label }\n </DateButton>\n </Box>\n ),\n quickDates\n ) }\n </Stack>\n <Box\n w=\"50%\"\n borderTop={ seperator }\n display={ shouldShow(fiscalQuarters) ? 'initial' : 'none' }\n />\n <Spacer />\n <Flex\n justifyContent=\"space-around\"\n w=\"full\"\n pt=\"2\"\n pr=\"4\"\n display={ shouldShow(fiscalSemesters) ? 'flex' : 'none' }\n >\n { map(\n (semester) =>\n validRange(semester.value, state) && (\n <DateButton\n onClick={ updateDate(semester.value) }\n isActive={ getIsActive(semester) }\n key={ `quick-select-${semester.label}` }\n >\n { semester.label }\n </DateButton>\n ),\n fiscalSemesters\n ) }\n </Flex>\n <Flex\n justifyContent=\"space-around\"\n w=\"full\"\n pt={ shouldShow(fiscalSemesters) ? '0' : '2' }\n pr=\"4\"\n display={ shouldShow(fiscalQuarters) ? 'flex' : 'none' }\n >\n { map(\n (quarter) =>\n validRange(quarter.value, state) && (\n <DateButton\n onClick={ updateDate(quarter.value) }\n isActive={ getIsActive(quarter) }\n key={ `quick-select-${quarter.label}` }\n >\n { quarter.label }\n </DateButton>\n ),\n fiscalQuarters\n ) }\n </Flex>\n </Stack>\n )\n}\n","import React, { useRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { useLocale } from '@react-aria/i18n'\nimport { useCalendarState } from '@react-stately/calendar'\nimport { CalendarDate, GregorianCalendar } from '@internationalized/date'\nimport { RangeCalendarProps } from './types'\nimport { Button } from '../../../button'\nimport { Label } from '../../../typography'\nimport { Flex } from '../../../flex'\nimport { Box } from '../../../box'\nimport { StandaloneCalendarGrid } from './components'\nimport { HStack, Stack } from '../../../stack'\nimport { DateRangeValue } from './quick-navigation/types'\nimport { QuickSelect } from './quick-navigation/quick-select'\n\nconst focusRing = {\n borderWidth: 'xs',\n borderRadius: 'md',\n borderColor: 'border.brand.hover',\n borderStyle: 'solid',\n}\n\nexport const RangeCalendar = (props: RangeCalendarProps) => {\n const {\n onChange: setRange = identity,\n value,\n handleClose,\n resetDate,\n isClearable = true,\n fiscalStartMonth,\n fiscalStartDay,\n minValue,\n maxValue,\n firstDayOfWeek,\n onSave,\n buttonLabel = 'Save',\n clearButtonLabel = 'Clear',\n } = props\n\n const { locale } = useLocale()\n\n const ref = useRef<HTMLDivElement>(null)\n const { rangeCalendarContainer } = useMultiStyleConfig('Calendar')\n\n const calendarOneState = useCalendarState({\n value: value && value.start ? value.start : null,\n minValue,\n maxValue,\n onChange: (newVal) => {\n setRange({\n end: value && value.end && newVal <= value.end ? value.end : newVal,\n start: newVal,\n })\n },\n locale,\n createCalendar: () => new GregorianCalendar(),\n })\n\n const calendarTwoState = useCalendarState({\n value: value && value.end ? value.end : null,\n minValue,\n maxValue,\n onChange: (newVal) => {\n setRange({\n start:\n value && value.end && value.start <= newVal ? value.start : newVal,\n end: newVal,\n })\n },\n locale,\n createCalendar: () => new GregorianCalendar(),\n })\n\n const focusDateRange = (dateRange: DateRangeValue) => {\n if (dateRange && dateRange.start && dateRange.end) {\n calendarOneState.setFocusedDate(dateRange.start as CalendarDate)\n calendarTwoState.setFocusedDate(dateRange.end as CalendarDate)\n }\n }\n\n const state = {\n setValue: setRange,\n setFocusedDateRange: focusDateRange,\n value,\n timeZone: calendarOneState.timeZone,\n minValue,\n maxValue,\n }\n\n const focusedStartMonthProps = value && value.start ? {} : focusRing\n\n const handleSave = () => {\n onSave?.()\n handleClose()\n }\n\n const handleReset = () => {\n resetDate()\n handleClose()\n }\n\n return (\n <Box ref={ ref } __css={ rangeCalendarContainer }>\n <Stack>\n <Flex gap={ 4 }>\n <QuickSelect\n state={ state }\n locale={ locale }\n fiscalStartMonth={ fiscalStartMonth }\n fiscalStartDay={ fiscalStartDay }\n />\n <Stack>\n <HStack alignItems=\"start\" spacing={ 8 } h=\"full\" pt=\"2\">\n <Stack h=\"full\" { ...focusedStartMonthProps }>\n <Box p=\"2\">\n <Label size=\"xs\">Start date:</Label>\n <StandaloneCalendarGrid\n state={ calendarOneState }\n range={ value }\n firstDayOfWeek={ firstDayOfWeek }\n />\n </Box>\n </Stack>\n <Stack h=\"full\" justify=\"space-between\">\n <Stack opacity={ value && value.start ? '1' : '0.4' }>\n <Box p=\"2\">\n <Label size=\"xs\">End date:</Label>\n <StandaloneCalendarGrid\n state={ calendarTwoState }\n range={ value }\n firstDayOfWeek={ firstDayOfWeek }\n />\n </Box>\n </Stack>\n <HStack pt=\"2\" alignSelf=\"end\">\n { isClearable && (\n <Button onClick={ handleReset } variant=\"ghost\" size=\"sm\">\n { clearButtonLabel }\n </Button>\n ) }\n <Button variant=\"brand\" onClick={ handleSave } size=\"sm\">\n { buttonLabel }\n </Button>\n </HStack>\n </Stack>\n </HStack>\n </Stack>\n </Flex>\n </Stack>\n </Box>\n )\n}\n","import { has, is } from 'ramda'\n\nexport const isValidDateRange = (value: unknown) => (\n is(Object, value) &&\n has('startDate', value) &&\n has('endDate', value) &&\n is(String, value.startDate) &&\n is(String, value.endDate)\n)\n","import {\n AlertCircleSolid,\n AlertOctagonSolid,\n AlertTriangleSolid,\n BrightnessSolid,\n CheckCircleSolid,\n HelpCircleSolid,\n InfoSolid,\n} from '@northlight/icons'\nimport { AlertVariants } from '../../alert/types'\n\nexport const tooltipIconMap: Record<AlertVariants, any> = {\n success: CheckCircleSolid,\n warning: AlertTriangleSolid,\n error: AlertCircleSolid,\n danger: AlertOctagonSolid,\n info: InfoSolid,\n ai: BrightnessSolid,\n default: HelpCircleSolid,\n ghost: HelpCircleSolid,\n}\n","import React from 'react'\nimport {\n Tooltip as ChakraTooltip,\n HStack,\n VStack,\n} from '@chakra-ui/react'\nimport { Label, P } from '../typography'\nimport { Icon } from '../icon'\nimport { AlertVariants } from '../alert'\nimport { tooltipIconMap } from '../types/tooltipIconMap'\nimport { OurTooltipProps } from './types'\n\n/**\n * A tooltip is a brief, informative message that appears when a user interacts with an element.\n * @see {@link https://northlight.dev/reference/tooltip}\n *\n * @example\n * (?\n * <HStack>\n * <Tooltip\n * hasIcon={ true }\n * description=\"Here’s a regular tooltip with some with icon\n * inside of it that’s supposed to be substantially large.\">\n * <Badge>ICON</Badge>\n * </Tooltip>\n * <Tooltip\n * description=\"Here’s a regular tooltip with some text without icon\n * inside of it that’s supposed to be substantially large.\"\n * >\n * <Badge>NOICON</Badge>\n * </Tooltip>\n * <Tooltip\n * description={\n * <Box>\n * <Text>\n * Some text\n * </Text>\n * <UnorderedList>\n * <ListItem>\n * List item 1\n * </ListItem>\n * <ListItem>\n * List item 2\n * </ListItem>\n * <ListItem>\n * List item 3\n * </ListItem>\n * </UnorderedList>\n * </Box>\n * }\n * >\n * <Badge>With JSX content</Badge>\n * </Tooltip>\n * </HStack>\n * ?)\n *\n *\n * @example\n * (?\n * <HStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"success\"\n * description=\"This is a successful message\"\n * >\n * <Badge colorScheme=\"green\">Success</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"success\"\n * title=\"Please check fields\"\n * description=\"This is a successful message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"green\">Success</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"info\"\n * description=\"This is an informative text\"\n * >\n * <Badge colorScheme=\"blue\">Info</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"info\"\n * title=\"Please check fields\"\n * description=\"This is an informative text with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"blue\">Info</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"warning\"\n * description=\"This is a warning\"\n * >\n * <Badge colorScheme=\"yellow\">Warning</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"warning\"\n * title=\"Please check fields\"\n * description=\"This is a warning with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"yellow\">Warning</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"danger\"\n * description=\"This is an error message\"\n * >\n * <Badge colorScheme=\"red\">Error</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"danger\"\n * title=\"Please check fields\"\n * description=\"This is an error message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"red\">Error</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ai\"\n * description=\"This is an AI message\">\n * <Badge colorScheme=\"teal\" variant=\"subtle\">AI</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ai\"\n * title=\"Please check fields\"\n * description=\"This is an AI message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"teal\" variant=\"subtle\">AI</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ghost\"\n * description=\"This is an clean message\">\n * <Badge>Ghost</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ghost\"\n * title=\"Please check fields\"\n * description=\"This is an clean message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge>Ghost</Badge>\n * </Tooltip>\n * </VStack>\n * </HStack>\n * ?)\n */\n\nexport const Tooltip: React.FC<OurTooltipProps> = ({\n variant = 'default',\n hasArrow = true,\n title = '',\n description = '',\n hasIcon = false,\n ...rest\n}) => {\n const iconVariant: AlertVariants = variant as AlertVariants\n const icon = tooltipIconMap[iconVariant]\n\n const TooltipContent = (\n <HStack alignItems=\"flex-start\">\n { hasIcon && <Icon as={ icon } color={ `icon.toast.${iconVariant}` } /> }\n <VStack spacing={ 0 } alignItems=\"flex-start\">\n <Label size=\"sm\">{ title }</Label>\n <P\n variant=\"14\"\n sx={ {\n color: !variant || variant === 'ai' ? 'text.inverted' : 'text.default',\n } }\n >\n { description }\n </P>\n </VStack>\n </HStack>\n )\n return (\n <ChakraTooltip\n hasArrow={ hasArrow }\n hasIcon={ hasIcon }\n label={ title || description ? TooltipContent : undefined }\n variant={ variant }\n { ...rest }\n />\n )\n}\n","import React, { useRef } from 'react'\nimport { FocusScope } from '@react-aria/focus'\nimport { useDateRangePickerState } from '@react-stately/datepicker'\nimport { useDateRangePicker } from '@react-aria/datepicker'\nimport { useMultiStyleConfig, useOutsideClick } from '@chakra-ui/react'\nimport { CheckSolid, XCloseSolid } from '@northlight/icons'\nimport { identity, isNil } from 'ramda'\nimport { DateValue, parseDate } from '@internationalized/date'\nimport { DateRange } from '@react-types/datepicker'\nimport { DateRangePickerProps, DateRange as NorthlightDateRange } from '../types'\nimport { RangeCalendar } from '../components/calendar/quick-navigation'\nimport { P } from '../../typography'\nimport { HStack } from '../../stack'\nimport { Popover, PopoverAnchor, PopoverContent } from '../../popover'\nimport { Portal } from '../../portal'\nimport { DateField, StyledField, Trigger } from '../components/date-field'\nimport { IconButton } from '../../icon-button'\nimport { InputGroup, InputRightElement } from '../../input'\nimport { Icon } from '../../icon'\nimport { isValidDateRange } from '../date-picker-field/utils'\nimport { DatePickerLocaleWrapper } from './date-picker-locale-wrapper'\nimport { Tooltip } from '../../tooltip'\n\nconst parseValue = (value: any) => {\n if (!isValidDateRange(value)) return null\n return { start: parseDate(value.startDate), end: parseDate(value.endDate) }\n}\n\nconst PortalWrapper = ({\n renderInPortal,\n children,\n}: {\n renderInPortal: boolean\n children: React.ReactNode\n}) => {\n if (renderInPortal) {\n return <Portal>{ children }</Portal>\n }\n return <>{ children }</>\n}\n\nconst isDatesEqual = (\n date1: NorthlightDateRange | null,\n date2: NorthlightDateRange | null\n) => date1?.startDate === date2?.startDate && date1?.endDate === date2?.endDate\n\n/**\n * Popover to choose date range on format {startDate:' yyyy-mm-dd', endDate: 'yyyy-mm-dd'}\n *\n * @see DatePicker\n * @see DateRangePickerField\n * @see {@link https://northlight.dev/reference/date-range-picker}\n * @example (Example)\n * ## Advanced Mode\n * (Due to it being harder to setup normal date range picker,\n * the date range picker field is demoed,\n * here, you need to pass down and parse a value for the date range picker for it to work properly,\n * consult the date picker documentation and the source code for date range picker\n * field for appropiate use)\n * (?\n * <Form initialValues={{date: null}}>\n * <DateRangePickerField name=\"date\"/>\n * </Form>\n * ?)\n *\n * @example (Example)\n * ## Simple mode\n * The previous example was the date range picker variant\n * for which we call advance, this one is a simpler version with the same core functionality:\n * (?\n * <Form initialValues={{date: null}}>\n * <DateRangePickerField name=\"date\" />\n * </Form>\n * ?)\n *\n * @example (Example)\n * ## Sophisticated example\n * The `DateRangePickerField` can have **fiscalStartMonth** and **fiscalStartDay** as a `number`\n * (?\n * <Form initialValues={{date: null}}>\n * <DateRangePickerField\n * name=\"date\"\n * mode=\"advanced\"\n * variant=\"filled\"\n * fiscalStartMonth={3}\n * fiscalStartDay={5}\n * dateFormat=\"mm|dd-yyyy\"\n * minValue=\"2023-01-01\"\n * maxValue=\"2028-01-01\"\n * />\n * </Form>\n * ?)\n */\nexport const DateRangePicker = (props: DateRangePickerProps) => {\n const {\n isDisabled,\n isClearable = true,\n resetDate,\n isInvalid = false,\n dateFormat,\n fiscalStartMonth,\n fiscalStartDay,\n variant = 'outline',\n onChange: onChangeCallback = identity,\n value,\n minValue = '1994-03-08',\n maxValue,\n renderInPortal = false,\n firstDayOfWeek,\n onSave,\n buttonLabel = 'Save',\n clearButtonLabel = 'Clear',\n savedDateRange,\n defaultDateRange,\n CustomResetButton,\n onCancelChanges,\n 'data-testid': dataTestId,\n defaultOpen = false,\n onOpenChange,\n } = props\n const ref = useRef() as React.MutableRefObject<HTMLInputElement>\n const { group } = useMultiStyleConfig('DatePicker')\n const parsedProps = {\n onChange: (date: DateRange) => {\n onChangeCallback({\n startDate: date?.start.toString(),\n endDate: date?.end.toString(),\n })\n },\n value: parseValue(value) as { start: DateValue, end: DateValue },\n minValue: isNil(minValue) ? undefined : (parseDate(minValue) as DateValue),\n maxValue: isNil(maxValue) ? undefined : (parseDate(maxValue) as DateValue),\n }\n const state = useDateRangePickerState({\n value: parsedProps.value,\n onChange: parsedProps.onChange,\n minValue: parsedProps.minValue,\n maxValue: parsedProps.maxValue,\n isDisabled,\n isInvalid,\n placeholderValue: props.placeholderValue,\n isDateUnavailable: props.isDateUnavailable,\n allowsNonContiguousRanges: props.allowsNonContiguousRanges,\n shouldCloseOnSelect: false,\n hideTimeZone: true,\n defaultOpen,\n onOpenChange,\n })\n\n const {\n groupProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDateRangePicker(\n {\n onChange: (date: DateRange) => {\n onChangeCallback({\n startDate: date?.start.toString(),\n endDate: date?.end.toString(),\n })\n },\n value: parseValue(value) as { start: DateValue, end: DateValue },\n minValue: parsedProps.minValue || parseDate('1994-03-08'),\n maxValue: parsedProps.maxValue,\n placeholderValue: props.placeholderValue,\n isDateUnavailable: props.isDateUnavailable,\n allowsNonContiguousRanges: props.allowsNonContiguousRanges,\n isDisabled,\n isInvalid,\n startName: props.startName,\n endName: props.endName,\n 'aria-label': 'Date range picker',\n ...(!isNil(dataTestId) && { 'data-testid': dataTestId }),\n },\n state,\n ref\n )\n\n const togglePopup = () => state.setOpen(!state.isOpen)\n\n const handleClose = () => {\n state.setOpen(false)\n }\n\n useOutsideClick({\n ref,\n handler: () => state.setOpen(false),\n })\n\n const ResetButton = CustomResetButton || (\n <IconButton\n aria-label=\"reset-date\"\n variant=\"danger\"\n size=\"sm\"\n fontSize=\"xs\"\n hidden={ !isClearable }\n isDisabled={ isDisabled }\n onClick={ resetDate }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n )\n\n const cancelOrResetDateChange = () => {\n if (onCancelChanges) {\n if (!isNil(savedDateRange)) onChangeCallback(savedDateRange)\n onCancelChanges()\n } else {\n if (!isNil(defaultDateRange)) onChangeCallback(defaultDateRange)\n resetDate()\n }\n }\n\n const handleSave = () => {\n onSave?.()\n handleClose()\n }\n\n const handleModalClose = () => {\n if (!isNil(savedDateRange)) onChangeCallback(savedDateRange)\n handleClose()\n }\n\n // If savedDateRange is null, we consider value saved\n const isCurrentDateSaved =\n isNil(savedDateRange) || isDatesEqual(value, savedDateRange)\n\n // If defaultDateRange is null, we consider value resettable\n const isDateResettable =\n isNil(defaultDateRange) || !isDatesEqual(value, defaultDateRange)\n\n const canShowSaveAndCancelButtons = !isNil(savedDateRange) && !isNil(defaultDateRange)\n\n const shouldShowResetButton =\n !state.isOpen && isCurrentDateSaved && isDateResettable\n\n const shouldShowSaveAndCancelButtons =\n canShowSaveAndCancelButtons && !state.isOpen && !isCurrentDateSaved\n\n return (\n <Popover\n isOpen={ state.isOpen }\n onClose={ handleModalClose }\n placement=\"bottom-start\"\n >\n <PopoverAnchor>\n <HStack>\n <InputGroup { ...groupProps } ref={ ref } __css={ group }>\n <StyledField\n isDisabled={ isDisabled }\n isInvalid={ isInvalid }\n variant={ variant }\n >\n <HStack paddingInlineStart=\"1a\" paddingInlineEnd={ 10 }>\n <DateField { ...startFieldProps } dateFormat={ dateFormat } />\n <P>-</P>\n <DateField { ...endFieldProps } dateFormat={ dateFormat } />\n </HStack>\n </StyledField>\n <InputRightElement sx={ { height: '100%', paddingRight: '1' } }>\n <Trigger\n { ...buttonProps }\n isDisabled={ isDisabled }\n handleClick={ togglePopup }\n />\n </InputRightElement>\n </InputGroup>\n { shouldShowResetButton && (\n ResetButton\n ) }\n { shouldShowSaveAndCancelButtons && (\n <>\n <Tooltip label={ clearButtonLabel }>\n <IconButton\n aria-label=\"cancel-date-change\"\n variant=\"ghost\"\n size=\"sm\"\n fontSize=\"xs\"\n onClick={ onCancelChanges }\n isDisabled={ isDisabled }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </Tooltip>\n <Tooltip label={ buttonLabel }>\n <IconButton\n aria-label=\"save-date\"\n variant=\"brand\"\n size=\"sm\"\n fontSize=\"xs\"\n onClick={ handleSave }\n isDisabled={ isDisabled }\n icon={ <Icon as={ CheckSolid } /> }\n />\n </Tooltip>\n </>\n ) }\n </HStack>\n </PopoverAnchor>\n <PortalWrapper renderInPortal={ renderInPortal }>\n { state.isOpen && (\n <PopoverContent { ...dialogProps } ref={ ref } w=\"max-content\">\n <FocusScope contain={ true } restoreFocus={ true }>\n <DatePickerLocaleWrapper firstDayOfWeek={ firstDayOfWeek }>\n <RangeCalendar\n { ...calendarProps }\n resetDate={ cancelOrResetDateChange }\n handleClose={ handleModalClose }\n fiscalStartMonth={ fiscalStartMonth || 0 }\n fiscalStartDay={ fiscalStartDay || 0 }\n isClearable={ isClearable }\n firstDayOfWeek={ firstDayOfWeek }\n onSave={ onSave }\n clearButtonLabel={ clearButtonLabel }\n buttonLabel={ buttonLabel }\n />\n </DatePickerLocaleWrapper>\n </FocusScope>\n </PopoverContent>\n ) }\n </PortalWrapper>\n </Popover>\n )\n}\n","import React from 'react'\nimport { all, isNil, not } from 'ramda'\nimport { InputGroup } from '../../components/input'\nimport { InputGroupWrapperProps } from './types'\n\nexport const InputGroupWrapper = ({\n inputLeftElement,\n inputRightElement,\n children,\n ...rest\n}: InputGroupWrapperProps) => {\n const containsInputGroupElement =\n not(all(isNil, [ inputLeftElement, inputRightElement ]))\n\n return containsInputGroupElement\n ? (\n <InputGroup { ...rest }>\n { inputLeftElement }\n { children }\n { inputRightElement }\n </InputGroup>\n )\n : <>{ children }</>\n}\n","import React, { forwardRef } from 'react'\nimport { DateValue, parseDate } from '@internationalized/date'\nimport { identity } from 'ramda'\nimport { DatePickerFieldProps } from '../types'\nimport { Field } from '../../form'\nimport { DatePicker } from '../date-picker/date-picker'\nimport { useFormContext } from '../../../hooks'\nimport { InputGroupWrapper } from '../../../internal-components/input-group-wrapper'\n\n/**\n * The <DatePicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see DatePicker\n * @see {@link https://northlight.dev/reference/date-picker-field}\n *\n * @example (Example)\n * ##Fill in your information:\n * (?\n * <Form initialValues={{date: null}}>\n * <DatePickerField name=\"date\" />\n * </Form>\n *\n * ?)\n * <br />\n * ###The simplest way\n * Using the date picker in a form is probably the easiest\n * way to use it, it will handle the state for you and you\n * can retrieve the date at the end as a string on format\n * yyyy-mm-dd on the onSubmit callback on <Form>\n *\n */\nexport const DatePickerField = forwardRef<HTMLDivElement, DatePickerFieldProps>(({\n name,\n minValue,\n maxValue,\n isRequired,\n direction = 'column',\n label,\n validate,\n firstDayOfWeek = 'monday',\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n}, ref) => {\n const { setValue, setError, trigger } = useFormContext()\n\n const handleChange = (date: DateValue) => {\n setValue(name, date?.toString())\n if ((minValue && date < parseDate(minValue)) || (maxValue && date > parseDate(maxValue))) {\n setError(name, {\n type: 'custom',\n message: minValue && maxValue\n ? `Date must be between ${minValue}-${maxValue}`\n : minValue\n ? `Select date earliest at ${minValue}`\n : `Select date latest at ${maxValue}`\n ,\n })\n } else {\n trigger(name)\n }\n onChangeCallback(date)\n }\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }, { formState: { errors } }) => (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <DatePicker\n firstDayOfWeek={ firstDayOfWeek }\n aria-label={ label }\n isInvalid={ !!errors[name] }\n onChange={ handleChange }\n resetDate={ () => onChange(null) }\n value={ value ? parseDate(value) as any : null }\n minValue={ minValue ? parseDate(minValue) as DateValue : undefined }\n maxValue={ maxValue ? parseDate(maxValue) as DateValue : undefined }\n validationState={ errors.name ? 'invalid' : 'valid' }\n { ...rest as any }\n />\n </InputGroupWrapper>\n ) }\n </Field>\n\n )\n})\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { DateRangePickerFieldProps, FormBody } from '../types'\nimport { Field } from '../../form'\nimport { DateRangePicker } from '../date-picker/date-range-picker'\nimport { useFormContext } from '../../../hooks'\n\n/**\n * The <DateRangePicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see DateRangePicker\n * @see {@link https://northlight.dev/reference/date-range-picker-field}\n *\n */\nexport const DateRangePickerField = forwardRef<HTMLDivElement, DateRangePickerFieldProps>(({\n name,\n minValue,\n maxValue,\n isRequired,\n direction = 'column',\n label,\n validate,\n firstDayOfWeek = 'monday',\n onChange: onChangeCallback = identity,\n isClearable = true,\n onSave,\n buttonLabel = 'Save',\n ...rest\n}, ref) => {\n const { setValue, setError, trigger } = useFormContext<FormBody>()\n\n const handleChange = (dateRange: { startDate: string, endDate: string }) => {\n setValue(name, dateRange)\n if (\n (minValue && dateRange?.startDate < minValue) ||\n (maxValue && dateRange?.endDate > maxValue)\n ) {\n setError(name, {\n type: 'custom',\n message:\n minValue && maxValue\n ? `Date must be between ${minValue}-${maxValue}`\n : minValue\n ? `Select date earliest at ${minValue}`\n : `Select date latest at ${maxValue}`,\n })\n } else {\n trigger(name)\n }\n onChangeCallback(dateRange)\n }\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }, { formState: { errors } }) => (\n <DateRangePicker\n firstDayOfWeek={ firstDayOfWeek }\n aria-label={ label }\n isInvalid={ !!errors[name] }\n onChange={ handleChange }\n onSave={ onSave }\n resetDate={ () => onChange(null) }\n value={ value }\n minValue={ minValue }\n maxValue={ maxValue }\n validationState={ errors.name ? 'invalid' : 'valid' }\n isClearable={ isClearable }\n buttonLabel={ buttonLabel }\n { ...(rest as any) }\n />\n ) }\n </Field>\n )\n})\n","import React from 'react'\nimport { Circle } from '@chakra-ui/react'\nimport { chakra } from '@chakra-ui/system'\nimport { TimeoutProgressCircleProps } from './types'\n\nexport const TimeoutProgressCircle = ({\n progress,\n ringColor = 'border.error',\n ...rest\n}: TimeoutProgressCircleProps) => {\n const RADIUS = 22\n const STROKE_WIDTH = 3\n const SVG_SIZE = 2 * (RADIUS + STROKE_WIDTH)\n const CIRCUMFERENCE = 2 * Math.PI * RADIUS\n const strokeDashoffset = CIRCUMFERENCE - (progress / 100) * CIRCUMFERENCE\n\n return (\n <Circle\n as=\"svg\"\n size={ `${SVG_SIZE}px` }\n viewBox={ `0 0 ${SVG_SIZE} ${SVG_SIZE}` }\n sx={ {\n transform: 'rotate(-90deg)',\n } }\n { ...rest }\n >\n <chakra.circle\n cx={ SVG_SIZE / 2 }\n cy={ SVG_SIZE / 2 }\n r={ RADIUS }\n fill=\"transparent\"\n stroke=\"border.hover\"\n strokeWidth={ STROKE_WIDTH }\n />\n <chakra.circle\n cx={ SVG_SIZE / 2 }\n cy={ SVG_SIZE / 2 }\n r={ RADIUS }\n fill=\"transparent\"\n stroke={ ringColor }\n strokeWidth={ STROKE_WIDTH }\n strokeDasharray={ CIRCUMFERENCE }\n strokeDashoffset={ strokeDashoffset }\n strokeLinecap=\"round\"\n />\n </Circle>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { TrashDuo } from '@northlight/icons'\nimport { Tooltip } from '../tooltip'\nimport { Center } from '../center'\nimport { Icon } from '../icon'\nimport { IntentButtonProps } from './types'\nimport { TimeoutProgressCircle } from './timeout-progress-circle'\nimport { IconButton } from '../icon-button'\n\n/**\n * @see {@link https://northlight.dev/reference/intent-button}\n *\n * Hold in to confirm delete\n *\n * @example\n * (?\n * +\n *\n * const Example = () => {\n * const [isShowing, setIsShowing] = useState(true)\n *\n * const handleDelete = () => {\n * setIsShowing(false)\n * }\n *\n * return (\n * <>\n * {isShowing && (\n * <IntentButton onTimeout={handleDelete} />\n * )}\n * </>\n * )\n *\n * }\n * render(<Example />)\n *?)\n *\n */\nexport const IntentButton = ({\n icon = TrashDuo,\n timeout = 1000,\n ringColor = 'border.error',\n onTimeout = () => {},\n tooltipText = 'Hold to Delete',\n 'aria-label': ariaLabel = 'confirm delete',\n ...rest\n}: IntentButtonProps) => {\n const [ progress, setProgress ] = useState(0)\n const [ isHovering, setIsHovering ] = useState(false)\n const timerRef = useRef<number | undefined>(undefined)\n\n const clearTimer = () => {\n if (timerRef.current) {\n clearInterval(timerRef.current)\n timerRef.current = undefined\n }\n setProgress(0)\n }\n\n useEffect(() => clearTimer, [])\n\n const startTimer = () => {\n clearTimer()\n\n const startTime = Date.now()\n timerRef.current = setInterval(() => {\n const elapsedTime = Date.now() - startTime\n const updatedProgress = (elapsedTime / timeout) * 100\n if (updatedProgress >= 100) {\n clearInterval(timerRef.current)\n onTimeout()\n } else {\n setProgress(updatedProgress)\n }\n }, 10)\n }\n\n const handleMouseEnter = () => {\n setIsHovering(true)\n }\n\n const handleMouseLeave = () => {\n setIsHovering(false)\n clearTimer()\n }\n\n return (\n <Tooltip label={ tooltipText } placement=\"top\">\n <Center\n position=\"relative\"\n cursor=\"pointer\"\n onMouseDown={ startTimer }\n onMouseUp={ clearTimer }\n onMouseLeave={ handleMouseLeave }\n onMouseEnter={ handleMouseEnter }\n boxSize=\"50px\"\n opacity={ `${(100 - progress) / 100}` }\n { ...rest }\n >\n <IconButton\n icon={ <Icon as={ icon } /> }\n size=\"md\"\n aria-label={ ariaLabel }\n variant=\"ghost\"\n />\n { isHovering && (\n <TimeoutProgressCircle\n ringColor={ ringColor }\n progress={ progress }\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n />\n ) }\n </Center>\n </Tooltip>\n )\n}\n","export const defaultFadeDelay = 250\nexport const defaultOffset = 20\n","import { useEffect, useState } from 'react'\nimport { identity } from 'ramda'\nimport { getChildrenWithProps } from '../../utils'\nimport {\n ChildrenType,\n DurationType,\n OffsetType,\n TransitionDirection,\n} from './types'\nimport { defaultFadeDelay, defaultOffset } from './constants'\n\nconst unFocusStyles = { tabIndex: '-1' }\nexport const getChildrenWithFocus = (\n children: ChildrenType,\n disableFocus: boolean,\n show: boolean\n) =>\n (show\n ? children\n : disableFocus\n ? getChildrenWithProps(children, unFocusStyles)\n : children)\n\nexport const getDuration = (\n enterDuration: DurationType,\n exitDuration: DurationType,\n duration: DurationType\n) => {\n const inDuration = enterDuration || duration || defaultFadeDelay\n const outDuration = exitDuration || duration || defaultFadeDelay\n const transition = {\n enter: {\n duration: inDuration / 1000,\n },\n exit: {\n duration: outDuration / 1000,\n },\n }\n return transition\n}\n\nexport const getOffsets = (\n direction: TransitionDirection,\n offset: OffsetType,\n offsetX: OffsetType,\n offsetY: OffsetType\n) => {\n if (offsetX || offsetY) {\n return { offsetX, offsetY }\n }\n if (direction) {\n const delta = offset || defaultOffset\n switch (direction) {\n case 'right':\n return { offsetX: delta, offsetY: 0 }\n case 'left':\n return { offsetX: -delta, offsetY: 0 }\n case 'top':\n return { offsetX: 0, offsetY: -delta }\n case 'bottom':\n return { offsetX: 0, offsetY: delta }\n default:\n break\n }\n }\n return { offsetX: defaultOffset, offsetY: defaultOffset }\n}\n\nexport const useDelay = (\n show: boolean,\n enterDelay: number,\n exitDelay: number\n) => {\n const [ showWithDelay, setShowWithDelay ] = useState(false)\n useEffect(() => {\n const ref = setTimeout(\n () => setShowWithDelay(show),\n show ? enterDelay : exitDelay\n )\n return () => clearTimeout(ref)\n }, [ show ])\n return showWithDelay\n}\n\nexport const useHiddenDisplay = (\n anchor = false,\n exitDelay = 0,\n exitDuration: DurationType = 0,\n duration: DurationType = 0,\n onTransitionComplete: (hidden: boolean) => void = identity\n) => {\n const [ hidden, setHidden ] = useState(anchor)\n\n useEffect(() => {\n const ref = setTimeout(() => {\n setHidden(anchor)\n onTransitionComplete(anchor)\n }, exitDelay + (exitDuration || duration || 0))\n return () => clearTimeout(ref)\n }, [ anchor ])\n\n return hidden\n}\n","import React from 'react'\nimport { Fade as ChakraFade } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { FadeProps } from './types'\n/**\n * Simple transition to hide/show content\n * @see ScaleFade\n * @see SlideFade\n * @see {@link https://northlight.dev/reference/fade}\n *\n * @example (Example)\n * ##View other options\n * (?\n *\n() => {\n const [ show, setShow ] = useState(false)\n const toggle = () => {\n setShow((prev) => !prev)\n\n }\n return (\n <>\n <Button onClick={toggle}>Render random number</Button>\n <Box borderRadius=\"sm\"\n borderWidth=\"sm\" borderColor=\"border.default\">\n <Fade in={ show} exitDuration={1}>\n <HStack p=\"10\" bg=\"bg.filled\" rounded=\"md\" >\n <H3>\n {Math.round(Math.random() * 100)}\n </H3>\n </HStack>\n </Fade>\n </Box>\n </>\n\n )\n\n}\n\n * ?)\n *\n */\nexport const Fade = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: FadeProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraFade\n in={ showWithDelay }\n transition={ transition }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraFade>\n )\n}\n","import React from 'react'\nimport { ScaleFade as ChakraScaleFade } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { ScaleFadeProps } from './types'\n\n/**\n * Simple transition to hide/show content\n * @see Fade\n * @see SlideFade\n * @see {@link https://northlight.dev/reference/slide-fade}\n *\n * @example (Example)\n * ##View other options\n * (?\n *\n() => {\n const [ show, setShow ] = useState(false)\n const toggle = () => {\n setShow((prev) => !prev)\n\n }\n return (\n <>\n <Button onClick={toggle}>Render random number</Button>\n <Box borderRadius=\"sm\"\n borderWidth=\"sm\" borderColor=\"border.default\">\n <SlideFade in={ show} exitDuration={1}>\n <HStack p=\"10\" bg=\"bg.filled\" rounded=\"md\" >\n <H3>\n {Math.round(Math.random() * 100)}\n </H3>\n </HStack>\n </SlideFade>\n </Box>\n </>\n )\n}\n * ?)\n *\n */\nexport const ScaleFade = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: ScaleFadeProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraScaleFade\n in={ showWithDelay }\n transition={ transition }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraScaleFade>\n )\n}\n","import React from 'react'\nimport { Slide as ChakraSlide } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { SlideProps } from './types'\n\nexport const Slide = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n direction = 'bottom',\n onTransitionComplete = identity,\n ...rest\n}: SlideProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraSlide\n in={ showWithDelay }\n transition={ transition }\n direction={ direction }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraSlide>\n )\n}\n","import React from 'react'\nimport { SlideFade as ChakraSlideFade } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, getOffsets, useDelay, useHiddenDisplay } from './utils'\nimport { SlideFadeProps } from './types'\nimport { defaultOffset } from './constants'\n\nexport const SlideFade = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n direction = 'bottom',\n offset: delta = defaultOffset,\n offsetX: deltaX = 0,\n offsetY: deltaY = 0,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: SlideFadeProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const { offsetX, offsetY } = getOffsets(direction, delta, deltaX, deltaY)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraSlideFade\n in={ showWithDelay }\n transition={ transition }\n offsetX={ offsetX }\n offsetY={ offsetY }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraSlideFade>\n )\n}\n","import React from 'react'\nimport { Collapse as ChakraCollapse } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { CollapseProps } from './types'\n\n/**\n * Simple transition to hide/show content\n * @see Fade\n * @see ScaleFade\n * @see SlideFade\n * @see {@link https://northlight.dev/reference/collapse}\n *\n * @example (Example)\n * ##View other options\n * (?\n *\n() => {\n const [ show, setShow ] = useState(false)\n const toggle = () => {\n setShow((prev) => !prev)\n\n }\n return (\n <>\n <Button onClick={toggle}>Click Me</Button>\n <Box borderRadius=\"sm\"\n borderWidth=\"sm\" borderColor=\"border.default\">\n <Collapse in={ show}>\n <HStack p=\"10\" bg=\"bg.filled\" rounded=\"md\" >\n <P>\n Enable advanced mode\n </P>\n\n <Switch />\n </HStack>\n </Collapse>\n </Box>\n </>\n\n )\n\n}\n\n * ?)\n\n *\n */\n\nexport const Collapse = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: CollapseProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraCollapse\n in={ showWithDelay }\n transition={ transition }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraCollapse>\n )\n}\n","import React from 'react'\nimport { useMultiStyleConfig, useToken } from '@chakra-ui/system'\nimport { coreZIndex } from '@northlight/tokens'\nimport { FocusScope } from '@react-aria/focus'\nimport { useResizeWidth } from '../../hooks'\nimport { Flex } from '../flex'\nimport { Slide } from '../transitions'\nimport { Box } from '../box'\nimport { Portal } from '../portal'\nimport { ToolboxProps } from './types'\nimport { getChildrenWithProps } from '../../utils'\nimport { ResizeHandle } from '../resize-handle'\nimport { VStack } from '../stack'\n\n/**\n * Controllable Sidebar drawer\n * @see Slide\n * @see {@link https://northlight.dev/reference/toolbox}\n * @example\n * (?\n *() => {\n const { isOpen, onOpen, onClose } = useDisclosure()\n return (\n <Flex>\n <Button onClick={ onOpen } w=\"full\">\n Open Toolbox\n </Button>\n <Toolbox\n isOpen={ isOpen }\n isResizable={ true }\n onClose={ onClose }\n size=\"sm\"\n resizeLimit=\"half\"\n >\n <ToolboxHeader>Title</ToolboxHeader>\n <ToolboxContent>\n <Stack>\n <Input />\n <Input />\n </Stack>\n </ToolboxContent>\n <ToolboxFooter justifyContent=\"end\" gap=\"2\">\n <Button variant=\"ghost\">Cancel</Button>\n <Button variant=\"brand\">Save</Button>\n </ToolboxFooter>\n </Toolbox>\n </Flex>\n )\n }\n * ?)\n */\nexport const Toolbox = ({\n isResizable = false,\n isOpen = false,\n children,\n direction = 'right',\n shouldPush = false,\n size = 'sm',\n onClose,\n autoFocus = true,\n resizeLimit = 'full',\n zIndex = coreZIndex.overlay,\n slideProps,\n ...rest\n}: ToolboxProps) => {\n const { container } = useMultiStyleConfig('Toolbox', { size })\n const newChildren = getChildrenWithProps(\n children,\n { onClose },\n (_child, i) => i === 0\n )\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation()\n onClose?.()\n }\n }\n\n const getPixelSize = (sizeToken: string) => {\n const widthInRem = useToken('sizes', sizeToken)\n return parseFloat(widthInRem) * 16\n }\n\n const defaultWidthPx = getPixelSize(size)\n const minWidthPx = getPixelSize('sm')\n const maxWidthPx =\n resizeLimit === 'half' ? 0.5 * window.innerWidth : window.innerWidth\n\n const { adjustableWidth, resizeProps } = useResizeWidth({\n minWidthPx,\n maxWidthPx,\n defaultWidthPx,\n stationaryEdge: direction,\n })\n\n return (\n <Box\n w={ adjustableWidth }\n display={ isOpen && shouldPush ? 'initial' : 'none' }\n >\n <Portal>\n <Slide\n direction={ direction }\n in={ isOpen }\n style={ {\n height: container.h as string,\n width: adjustableWidth,\n zIndex,\n } }\n { ...slideProps }\n >\n <Flex\n sx={ { ...container, w: adjustableWidth } }\n onKeyDown={ handleKeyDown }\n position=\"relative\"\n overflow=\"hidden\"\n direction={ direction === 'left' ? 'row-reverse' : 'row' }\n { ...rest }\n >\n { isResizable && <ResizeHandle { ...resizeProps } /> }\n <FocusScope autoFocus={ autoFocus }>\n <VStack w=\"full\" h=\"full\" alignItems=\"normal\">\n { newChildren }\n </VStack>\n </FocusScope>\n </Flex>\n </Slide>\n </Portal>\n </Box>\n )\n}\n","import React from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/system'\nimport { CloseButton } from '../close-button'\nimport { Flex } from '../flex'\nimport { ToolboxHeaderProps } from './types'\nimport { H4 } from '../typography'\n\n/**\n * @see Toolbox\n * @see {@link https://northlight.dev/reference/toolbox-header}\n *\n */\nexport const ToolboxHeader = ({\n children,\n onClose,\n ...rest\n}: ToolboxHeaderProps) => {\n const { header } = useMultiStyleConfig('Toolbox', {})\n\n return (\n <Flex sx={ header } { ...rest }>\n { typeof children === 'string' ? <H4>{ children }</H4> : children }\n <CloseButton\n aria-label=\"Close toolbox\"\n position=\"fixed\"\n right={ 4 }\n onClick={ onClose }\n />\n </Flex>\n )\n}\n","import React from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/system'\nimport { merge } from 'ramda'\nimport { Flex } from '../flex'\nimport { ToolboxContentProps } from './types'\n\n/**\n * Main content of toolbox drawer\n * @see Toolbox\n * @see {@link https://northlight.dev/reference/toolbox-content}\n */\nexport const ToolboxContent = ({ sx = {}, children, ...rest }: ToolboxContentProps) => {\n const { body } = useMultiStyleConfig('Toolbox', {})\n\n return (\n <Flex\n sx={ merge(body, sx) }\n { ...rest }\n >\n { children }\n </Flex>\n )\n}\n","import { useMultiStyleConfig } from '@chakra-ui/system'\nimport React from 'react'\nimport { Flex } from '../flex'\nimport { ToolboxFooterProps } from './types'\n\n/**\n * @see Toolbox\n * @see {@link https://northlight.dev/reference/toolbox-footer}\n */\nexport const ToolboxFooter = ({ children, ...rest }: ToolboxFooterProps) => {\n const { footer } = useMultiStyleConfig('Toolbox', {})\n\n return (\n <Flex sx={ footer } { ...rest }>\n { children }\n </Flex>\n )\n}\n","import React from 'react'\nimport { Radio as ChakraRadio } from '@chakra-ui/react'\nimport { RadioProps } from './types'\n\n/**\n * @see RadioGroup\n * @see {@link https://northlight.dev/reference/radio}\n */\nexport const Radio = ({\n size = 'md',\n onChange,\n name,\n value,\n ...rest\n}: RadioProps) => (\n <ChakraRadio\n size={ size }\n id={ name }\n onChange={ onChange }\n value={ value }\n { ...rest }\n />\n)\n","import React from 'react'\nimport { RadioGroup as ChakraRadioGroup } from '@chakra-ui/react'\nimport { RadioGroupProps } from './types'\nimport { Stack } from '../stack'\n\n/**\n * Wrapper to select one of multiple options\n * @see {@link https://northlight.dev/reference/radio-group}\n * @example\n * (?\n <RadioGroup>\n <HStack>\n <Radio value=\"1\" />\n <Radio value=\"2\" />\n <Radio value=\"3\" />\n </HStack>\n </RadioGroup>\n * ?)\n *\n */\nexport const RadioGroup = ({\n direction = 'row',\n children,\n name,\n ...rest\n}: RadioGroupProps) => (\n <ChakraRadioGroup name={ name } id={ name } { ...rest }>\n <Stack direction={ direction }>{ children }</Stack>\n </ChakraRadioGroup>\n)\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { RadioFieldGroupProps } from './types'\nimport { Field } from '../form'\nimport { RadioGroup } from './radio-group'\nimport { Box } from '../box'\n\n/**\n * The radio group component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see RadioGroup\n * @see Radio\n * @see {@link https://northlight.dev/reference/radio-group-field}\n *\n */\nexport const RadioGroupField = forwardRef<HTMLDivElement, RadioFieldGroupProps>(({\n name,\n label,\n children,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}, ref) => (\n <Box w={ label ? 'full' : 'fit-content' }>\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <RadioGroup\n name={ name }\n onChange={ (e) => { onChange(e); onChangeCallback(e) } }\n direction={ direction }\n value={ value }\n data-testid=\"radio-group-field-test-id\"\n { ...rest }\n >\n { children }\n </RadioGroup>\n ) }\n </Field>\n </Box>\n))\n","export const carouselItemWidth = 150\nexport const carouselItemSpacing = 60\n","import React from 'react'\nimport { motion } from 'framer-motion'\nimport { Center } from '../center'\nimport { carouselItemWidth } from './constants'\nimport { CarouselItemProps } from './types'\n\nconst variants = {\n active: { scale: 1.15, opacity: 1 },\n inActive: { scale: 0.95, opacity: 0.7 },\n}\n\nexport const CarouselItem = ({\n children,\n isActive = false,\n itemWidth = carouselItemWidth,\n itemHeight = carouselItemWidth,\n}: CarouselItemProps) => (\n <motion.div animate={ isActive ? 'active' : 'inActive' } variants={ variants }>\n <Center minW={ `${itemWidth}px` } h={ `${itemHeight}px ` }>\n { children }\n </Center>\n </motion.div>\n)\n","import React from 'react'\nimport { ChevronLeftSolid, ChevronRightSolid } from '@northlight/icons'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Center } from '../center'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { CarouselArrowProps } from './types'\n\nexport const CarouselArrow = ({\n onClick,\n direction,\n ...rest\n}: CarouselArrowProps) => {\n const { arrow } = useMultiStyleConfig('Carousel', {})\n\n return (\n <Center\n sx={ arrow }\n onClick={ onClick }\n { ...rest }\n >\n <IconButton aria-label={ `move carousel to ${direction}` } variant=\"ghost\" size=\"lg\">\n <Icon as={ direction === 'right' ? ChevronRightSolid : ChevronLeftSolid } />\n </IconButton>\n </Center>\n )\n}\n","import React, { Children, useEffect, useRef, useState } from 'react'\nimport { animate, motion, useMotionValue } from 'framer-motion'\nimport { identity } from 'ramda'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Box } from '../box'\nimport { HStack } from '../stack'\nimport { Radio, RadioGroup } from '../radio'\nimport { CarouselItem } from './carousel-item'\nimport { CarouselArrow } from './carousel-arrow'\nimport { carouselItemSpacing, carouselItemWidth } from './constants'\nimport { CarouselProps } from './types'\n\n/**\n * Easiely one of the fanciest components, horizontal carousel wrapper for anything\n *\n * @see {@link https://northlight.dev/reference/carousel}\n *\n * @example (Example)\n * The carousel takes up 100% of its parents container width and height.\n * It then renders all children div into a draggable div using framer-motion\n\n * (?\n * +\n *const Item = ({ name, ...rest }) => (\n <Center color=\"white\" bg=\"teal.500\" rounded=\"md\" w=\"full\" h=\"full\" { ...rest }>\n { name }\n </Center>\n)\n\nconst MyCarousel = () => (\n<Box h=\"300px\">\n <Carousel>\n <Item name=\"Item 1\" />\n <Item name=\"Item 2\" />\n <Item name=\"Item 3\" />\n </Carousel>\n</Box>\n\n)\n\nrender(<MyCarousel />)\n *\n * ?)\n *\n * @example (Example)\n * ##Controling the carousel state\n * The carousel takes an **onChange** and value\n * (which is the index of the current active element), meaning it can be controlled.\n *\n * (?\n * +\n * const Item = ({ name, ...rest }) => (\n <Center color=\"white\" bg=\"teal.500\" rounded=\"md\" w=\"full\" h=\"full\" { ...rest }>\n { name }\n </Center>\n)\n\nconst MyCarousel = () => {\n const [index, setIndex ] = useState(0)\n return (\n\n <VStack\n borderColor=\"border.default\"\n borderWidth=\"sm\" borderStyle=\"solid\" p=\"2\" borderRadius=\"lg\">\n <Box w=\"full\" h=\"sm\">\n <Carousel\n showArrows={ false }\n showRadio={ false }\n value={ index }\n onChange={ (v) => setIndex(v) }\n >\n <Item name=\"Item 1\" />\n <Item name=\"Item 2\" />\n <Item name=\"Item 3\" />\n </Carousel>\n </Box>\n <FlipButtonGroup\n onChange={ (v) => setIndex(parseInt(v, 10)) }\n value={ `${index}` }\n variant=\"brand\"\n >\n <FlipButton value=\"0\">One</FlipButton>\n <FlipButton value=\"1\">Two</FlipButton>\n <FlipButton value=\"2\">Three</FlipButton>\n </FlipButtonGroup>\n </VStack>\n )\n}\n*\nrender(<MyCarousel/>)\n * ?)\n *(You can also hide the default\n navigational arrows and radio button using <b>showArrows</b> and\n <b>showRadio</b> as in example)\n */\nexport const Carousel = ({\n children,\n showArrows = true,\n showRadio = true,\n value: controlledIndex = 0,\n onChange = identity,\n itemWidth = carouselItemWidth,\n itemHeight = carouselItemWidth,\n spacing = carouselItemSpacing,\n carouselStyles = {},\n ...rest\n}: CarouselProps) => {\n const [ dragging, setDragging ] = useState(false)\n const [ containerWidth, setContainerWidth ] = useState(0)\n const [ activeIndex, setActiveIndex ] = useState(0)\n const x = useMotionValue(0)\n const { radio, container } = useMultiStyleConfig('Carousel', {})\n\n const childrenAsArray = Children.toArray(children) as JSX.Element[]\n const numberOfChildren = Children.count(children)\n const carouselTotalWidth = itemWidth + spacing\n const totalWidth = carouselTotalWidth * numberOfChildren\n\n const containerRef = useRef<any>(null)\n\n useEffect(() => {\n setContainerWidth(containerRef.current.clientWidth)\n }, [])\n\n const getNewX = () => -(activeIndex * carouselTotalWidth)\n\n const updateActiveIndex = () => {\n setActiveIndex(Math.abs(Math.round(x.get() / carouselTotalWidth)))\n }\n\n useEffect(() => {\n animate(x, getNewX())\n onChange(activeIndex)\n }, [ activeIndex ])\n\n useEffect(() => {\n setActiveIndex(controlledIndex)\n }, [ controlledIndex ])\n\n const handleRightArrowClick = () => {\n setActiveIndex((prev) =>\n (activeIndex === numberOfChildren - 1 ? 0 : prev + 1)\n )\n }\n\n const handleLeftArrowClick = () => {\n setActiveIndex((prev) =>\n (activeIndex === 0 ? numberOfChildren - 1 : prev - 1)\n )\n }\n\n return (\n <Box\n cursor={ dragging ? 'grabbing' : 'grab' }\n onMouseDown={ () => setDragging(true) }\n onMouseUp={ () => setDragging(false) }\n ref={ containerRef }\n pl={ `${(containerWidth - itemWidth) / 2}px` }\n sx={ container }\n { ...rest }\n >\n <motion.div\n drag=\"x\"\n style={ {\n width: `${totalWidth}px`,\n height: '100%',\n x,\n } }\n dragConstraints={ { right: 0, left: -(totalWidth - itemWidth) } }\n onDragEnd={ updateActiveIndex }\n >\n <HStack\n spacing={ `${spacing}px` }\n width={ `${totalWidth}px` }\n h=\"full\"\n { ...carouselStyles }\n >\n { childrenAsArray.map((child, index) => (\n <CarouselItem\n isActive={ index === activeIndex }\n itemWidth={ itemWidth }\n itemHeight={ itemHeight }\n key={ `carousel-item-${index as number}` }\n >\n { child }\n </CarouselItem>\n )) }\n </HStack>\n </motion.div>\n { showRadio && (\n <RadioGroup\n onChange={ (val) => setActiveIndex(parseInt(val, 10)) }\n value={ `${activeIndex}` }\n sx={ radio }\n >\n <HStack>\n { childrenAsArray.map((_child, i) => (\n <Radio\n value={ `${i}` }\n size=\"lg\"\n key={ `carousel-radio-${i as number}` }\n />\n )) }\n </HStack>\n </RadioGroup>\n ) }\n { showArrows && (\n <>\n <CarouselArrow\n direction=\"left\"\n onClick={ handleLeftArrowClick }\n left=\"2\"\n />\n <CarouselArrow\n direction=\"right\"\n onClick={ handleRightArrowClick }\n right=\"2\"\n />\n </>\n ) }\n </Box>\n )\n}\n","import { ChakraStylesConfig } from 'chakra-react-select'\nimport { merge } from 'ramda'\nimport { getContrastColor } from '../../utils'\n\nexport const searchBarStyles = (\n sx: ChakraStylesConfig<any>\n): ChakraStylesConfig<any> =>\n merge({\n container: (provided) => ({\n ...provided,\n width: '100%',\n color: 'text.default',\n alignSelf: 'center',\n }),\n option: (provided, state) => ({\n ...provided,\n background: state.isFocused && 'background.select.option-focus',\n _active: {\n background: 'background.select.option-active',\n },\n }),\n valueContainer: (provided) => ({\n ...provided,\n paddingInlineStart: 'padding-inline.select.default',\n }),\n downChevron: (provided) => ({\n ...provided,\n color: 'icon.select.default',\n }),\n placeholder: (provided) => ({\n ...provided,\n color: 'text.select.placeholder',\n }),\n multiValue: (provided, state) => {\n const background = state.data.isFixed\n ? 'background.select.option-disabled'\n : state.data.color ?? provided.bgColor\n return {\n ...provided,\n bgColor: background,\n color: getContrastColor(background),\n ...sx.multiValue,\n }\n },\n menuList: (provided) => ({\n ...provided,\n bgColor: 'background.default',\n }),\n } as ChakraStylesConfig<any>, sx)\n","import React from 'react'\nimport {\n ControlProps,\n DropdownIndicatorProps,\n GroupBase,\n MenuProps,\n MultiValueGenericProps,\n OptionProps,\n chakraComponents,\n} from 'chakra-react-select'\nimport { merge } from 'ramda'\nimport { Box } from '../box'\nimport { HStack } from '../stack'\nimport { Icon } from '../icon'\nimport { SearchBarOptionType } from './types'\n\nexport function getComponents<T extends SearchBarOptionType> (\n components?: Record<string, any>\n) {\n return merge(\n {\n Menu: (props: MenuProps<T>) => (\n <Box data-testid=\"select-menu-wrapper-test-id\">\n <chakraComponents.Menu { ...props }>\n { props.children }\n </chakraComponents.Menu>\n </Box>\n ),\n DropdownIndicator: (props: DropdownIndicatorProps<T>) =>\n (props.selectProps.icon ? (\n <chakraComponents.DropdownIndicator { ...props }>\n <Icon as={ props.selectProps.icon } />\n </chakraComponents.DropdownIndicator>\n ) : (\n <chakraComponents.DropdownIndicator { ...props } />\n )),\n Option: (props: OptionProps<T>) =>\n (props.selectProps.customOption ? (\n <chakraComponents.Option { ...props }>\n { props.selectProps.customOption(props.data) }\n </chakraComponents.Option>\n ) : (\n <chakraComponents.Option { ...props } />\n )),\n MultiValueContainer: (\n props: MultiValueGenericProps<T, boolean, GroupBase<T>>\n ) =>\n (props.selectProps.customTag ? (\n <chakraComponents.MultiValueContainer { ...props }>\n { props.selectProps.customTag(props.data) }\n </chakraComponents.MultiValueContainer>\n ) : (\n <chakraComponents.MultiValueContainer { ...props } />\n )),\n Control: ({\n children,\n ...props\n }: ControlProps<T, boolean, GroupBase<T>>) =>\n (props.selectProps.leftComponent ? (\n <chakraComponents.Control { ...props }>\n <HStack w=\"full\" pl=\"2\">\n { props.selectProps.leftComponent }\n <HStack w=\"full\" justify=\"space-between\">\n { children }\n </HStack>\n </HStack>\n </chakraComponents.Control>\n ) : (\n <chakraComponents.Control { ...props }>\n { children }\n </chakraComponents.Control>\n )),\n },\n components || {}\n )\n}\n","import React, { forwardRef, useMemo, useState } from 'react'\nimport {\n AsyncSelect,\n GroupBase,\n InputActionMeta,\n SelectInstance,\n} from 'chakra-react-select'\nimport { filter, identity, is, test, toLower } from 'ramda'\nimport { SearchDuo } from '@northlight/icons'\nimport { createDebounceFunctionInstance } from '../../utils'\nimport { searchBarStyles } from './styles'\nimport { useSelectCallbacks } from '../../hooks'\nimport { Box } from '../box'\nimport { SearchBarOptionType, SearchBarProps } from './types'\nimport { getComponents } from './get-components'\n\nexport const SearchBar = forwardRef(\n <T extends SearchBarOptionType, K extends boolean = false>({\n defaultOptions = [],\n isMulti,\n customOption = null,\n customTag = null,\n sx = {},\n debouncedWaitTime = 200,\n loadOptions: getCustomOptions = null,\n clearInputOnSelect = true,\n closeMenuOnSelect = false,\n onChange = identity,\n onAdd = identity,\n onRemove = identity,\n 'data-testid': testId,\n value,\n onSearchInputChange = identity,\n icon = SearchDuo,\n ...rest\n }: SearchBarProps<T, K>,\n ref: React.Ref<SelectInstance<T, K, GroupBase<T>>>\n ) => {\n const [ filtered, setFiltered ] = useState(defaultOptions)\n const [ filterInput, setFilterInput ] = useState('')\n const debounceFunction = useMemo(\n () => createDebounceFunctionInstance(debouncedWaitTime),\n [ debouncedWaitTime ]\n )\n const handleChange = useSelectCallbacks<T, K>({\n onChange,\n onAdd,\n onRemove,\n isMulti,\n value: is(Array, value) ? value as T[] : [],\n })\n\n const customComponents = useMemo(\n () => getComponents<T>(),\n []\n )\n\n const simpleFilter = (query: string) => {\n if (typeof defaultOptions === 'boolean') return []\n return filter(\n (option: T) =>\n test(new RegExp(toLower(query), 'g'), toLower(option.label)),\n defaultOptions\n )\n }\n const getOptions = async (query: string) => {\n const newOptions = getCustomOptions\n ? await getCustomOptions(query)\n : simpleFilter(query)\n setFiltered((prev) => {\n // If default value is a boolean we want default value to persist to it's initial value\n // this is to allow pre-fetching of values on first render\n if (typeof prev === 'boolean') return prev\n return newOptions\n })\n\n return newOptions\n }\n\n const loadOptions = debounceFunction(async (\n query: string,\n callback: (options: T[]) => void\n ) => {\n const newOptions = await getOptions(query)\n callback(newOptions)\n return []\n })\n\n const resetFiltered = (v: string, { action }: InputActionMeta) => {\n if (clearInputOnSelect || action !== 'set-value') {\n setFilterInput(v)\n onSearchInputChange(v)\n if (v === '') {\n setFiltered(defaultOptions)\n }\n }\n }\n\n return (\n <Box w=\"full\" data-testid={ testId }>\n <AsyncSelect<T, K>\n cacheOptions={ true }\n defaultOptions={ filtered }\n loadOptions={ loadOptions }\n onChange={ handleChange }\n placeholder=\"Search...\"\n chakraStyles={ searchBarStyles(sx) }\n isMulti={ isMulti }\n useBasicStyles={ true }\n selectedOptionStyle=\"check\"\n hideSelectedOptions={ false }\n closeMenuOnSelect={ closeMenuOnSelect }\n isClearable={ false }\n onInputChange={ resetFiltered }\n inputValue={ filterInput }\n customOption={ customOption }\n customTag={ customTag }\n icon={ icon }\n components={ customComponents }\n ref={ ref }\n value={ value }\n { ...rest }\n />\n </Box>\n )\n }\n)\n","import React, { forwardRef } from 'react'\nimport { FieldValues } from 'react-hook-form'\nimport { XCloseSolid } from '@northlight/icons'\nimport { identity, isEmpty } from 'ramda'\nimport { SearchBarFieldProps, SearchBarOptionType } from './types'\nimport { Field } from '../form'\nimport { SearchBar } from './search-bar'\nimport { HStack } from '../stack'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { InputGroupWrapper } from '../../internal-components/input-group-wrapper/input-group-wrapper'\n\nconst BaseSearchBarField = <T extends SearchBarOptionType, K extends boolean = false> ({\n name,\n label,\n direction = 'column',\n isMulti,\n isRequired,\n validate,\n isClearable = true,\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n}: SearchBarFieldProps<T, K>, ref: React.Ref<HTMLDivElement>) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n noLabelConnection={ true }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }) => (\n <HStack w=\"full\">\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <SearchBar\n name={ name }\n isMulti={ isMulti }\n onChange={ (values: FieldValues, event) => {\n onChange(\n isMulti\n ? values\n : values.value\n )\n onChangeCallback(values as T | T[], event)\n } }\n value={ value }\n { ...rest }\n />\n </InputGroupWrapper>\n <IconButton\n aria-label={ `${name}-close-button` }\n variant=\"danger\"\n size=\"lg\"\n fontSize=\"sm\"\n hidden={ isEmpty(value) || !isClearable }\n onClick={ () => onChange([]) }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </HStack>\n ) }\n </Field>\n )\n\nexport const SearchBarField = forwardRef(BaseSearchBarField)\n","import React from 'react'\nimport { DndContext, DndContextProps } from '@dnd-kit/core'\n\n/**\n * Context used for all drag and drop components\n * (Based on dnd-kit)\n * @see Draggable\n * @see Droppable\n * @see {@link https://northlight.dev}\n * @see {@link https://dndkit.com/}\n *\n */\nexport const DragAndDrop = (props: DndContextProps) => (\n <DndContext { ...props } />\n)\n","import React, { forwardRef } from 'react'\nimport { Tag as ChakraTag } from '@chakra-ui/react'\nimport { useCurrentTheme } from '../../utils'\nimport { TagProps } from './types'\n\n/**\n * Tag component is used for items that need to be labeled,\n * categorized, or organized using keywords that describe them.\n * @see TagGroup\n * @see {@link https://northlight.dev/reference/tag}\n *\n * @example\n * (?\n * <Tag>Hello</Tag>\n * ?)\n *\n * @example\n * (?\n * +\n * const colors = [\"mediatoolBlue\", \"blue\", \"gray\", \"red\", \"green\",\n * \"orange\", \"yellow\", \"teal\", \"purple\", \"pink\"]\n * const variants = [\"solid\", \"subtle\"]\n * const Example = () => {\n * return <Stack>\n * { colors.map((color) => (\n * <HStack spacing={ 4 }>\n * {\n * variants.map((variant) => (\n * <HStack spacing={ 4 }>\n * <Tag size=\"sm\" variant={variant} colorScheme={color}>\n * <TagLeftIcon size=\"xs\">\n* <Icon as={ MediatoolLogoDuo } />\n * </TagLeftIcon>\n * <TagLabel>\n * Hello\n * </TagLabel>\n * <TagRightIcon size=\"xs\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagRightIcon>\n * </Tag>\n * <Tag size=\"md\" variant={variant} colorScheme={color}>\n * <TagLeftIcon size=\"md\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagLeftIcon>\n * <TagLabel>\n * Hello\n * </TagLabel>\n * <TagRightIcon size=\"md\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagRightIcon>\n * </Tag>\n * <Tag size=\"lg\" variant={variant} colorScheme={color}>\n * <TagLeftIcon size=\"lg\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagLeftIcon>\n * <TagLabel>\n * Hello\n * </TagLabel>\n * <TagRightIcon size=\"lg\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagRightIcon>\n * </Tag>\n * </HStack>\n * ))\n * }\n * </HStack>\n * ))\n * }\n * </Stack>\n * }\n * render(<Example/>)\n * ?)\n *\n *\n*/\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(({\n children,\n variant = 'solid',\n bgColor,\n colorScheme,\n ...rest\n}, ref) => {\n const currentTheme = useCurrentTheme()\n\n return (\n <ChakraTag\n bgColor={ bgColor }\n colorScheme={ colorScheme }\n ref={ ref }\n variant={ variant }\n currentTheme={ currentTheme }\n { ...rest }\n >\n { children }\n </ChakraTag>\n )\n})\n","import React from 'react'\nimport { OverflowIndicatorProps } from './types'\nimport { Tag } from './tag'\n\nexport const OverflowIndicator = ({\n nbrRemainingTags,\n}: OverflowIndicatorProps) => (\n <Tag variant=\"subtle\" minW=\"max-content\">\n +{ nbrRemainingTags }\n </Tag>\n)\n","import React, { useState } from 'react'\nimport { HStack } from '../stack'\nimport { OverflowGroup, useOverflowGroup } from '../overflow-group'\nimport { TagGroupProps } from './types'\nimport { OverflowIndicator as DefaultOverflowIndicator } from './overflow-indicator'\n\n/**\n * Used when rending multiple tags in limited container for responsive layout\n * @see Tag\n * @see {@link https://northlight.dev/reference/tag-group}\n *\n * @example\n * ##Try resizing the window!\n * (?\n <TagGroup w=\"full\"\n borderWidth=\"sm\"\n borderColor=\"border.default\"\n borderStyle=\"solid\"\n p=\"2\"\n borderRadius=\"md\"\n >\n { Array.from({length: 20}, (_, i) => i).map((i) => (\n <Tag w=\"max-content\" key={ i }>Brand-{ i }</Tag>\n )) }\n </TagGroup>\n * ?)\n *\n *\n */\nexport const TagGroup = ({\n children,\n max = Infinity,\n spacing = '2',\n OverflowIndicator = DefaultOverflowIndicator,\n ...rest\n}: TagGroupProps) => {\n const [ nbrRemainingTags, setNbrRemainingTags ] = useState(0)\n const { rect, containerRef } = useOverflowGroup()\n\n return (\n <HStack\n bgColor=\"background.default\"\n ref={ containerRef }\n overflow=\"hidden\"\n { ...rest }\n >\n <HStack spacing={ spacing }>\n <OverflowGroup max={ max } onChange={ setNbrRemainingTags } rect={ rect }>\n { children }\n </OverflowGroup>\n </HStack>\n { nbrRemainingTags > 0 && (\n <OverflowIndicator nbrRemainingTags={ nbrRemainingTags } />\n ) }\n </HStack>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { DotsMatrixSolid } from '@northlight/icons'\nimport { Tag, TagLabel, TagRightIcon } from '../tag'\nimport { Icon } from '../icon'\nimport { DragItemProps } from './types'\n\n/**\n * Default draggable item none other provided in SortableList and MultiSort.\n * Renders a tag which can be used under the DragAndDrop context\n * @see DragAndDrop\n * @see SortableList\n * @see MultiSort\n * @see {@link https://northlight.dev/reference/drag-item}\n *\n * @example (Example)\n * (?\n * <DragItem itemLabel=\"Option 1\" bgColor=\"bg.filled\" />\n * ?)\n *\n */\nexport const DragItem = forwardRef<HTMLSpanElement, DragItemProps>(({\n size = 'md',\n isDragging,\n itemLabel = 'Drag Me',\n bgColor,\n ...rest\n}, ref) => (\n <Tag\n ref={ ref }\n cursor={ isDragging ? 'grabbing' : 'grab' }\n bgColor={ bgColor || (isDragging ? 'blue.200' : undefined) }\n size={ size }\n minW=\"max-content\"\n { ...rest }\n >\n <TagLabel>{ itemLabel }</TagLabel>\n <TagRightIcon>\n <Icon as={ DotsMatrixSolid } />\n </TagRightIcon>\n </Tag>\n)\n)\n","import React, { cloneElement, isValidElement } from 'react'\nimport { useDraggable } from '@dnd-kit/core'\nimport { CSS } from '@dnd-kit/utilities'\nimport { Box } from '../box'\nimport { DraggableProps } from './types'\nimport { DragItem } from './drag-item'\nimport { ring } from '../../utils'\n\n/**\n * Will turn it's childen into a draggable component when under DragAndDrop context\n * @see {@link https://northlight.dev/reference/draggable}\n *\n * @example (Example)\n * ##Basic exapmle\n * (?\n * <DragAndDrop>\n * <HStack>\n * <Draggable id=\"random-id\" />\n * <Draggable />\n * </HStack>\n * </DragAndDrop>\n * ?)\n * <br />\n * (Notice that the id prop is required)\n *\n * @example (Example)\n * ## With custom children\n *\n * (?\n * <DragAndDrop>\n * <Box p=\"4\">\n * <Draggable id=\"random-id\">\n * <Center\n * boxSize=\"3xs\"\n * boxShadow=\"xl\"\n * borderRadius=\"lg\"\n * bgColor=\"bg.overlayer\"\n * >I am draggable</Center>\n * </Draggable>\n * </Box>\n *\n * </DragAndDrop>\n * ?)\n *\n *\n */\nexport const Draggable = ({\n itemLabel,\n children,\n disableDrag = false,\n 'data-testid': dataTestId,\n ...rest\n}: DraggableProps) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n isDragging,\n ...props\n } = useDraggable({ ...rest })\n if (!listeners) {\n return (\n <DragItem itemLabel={ itemLabel } />\n )\n }\n\n const childrenWithDragCursor = isValidElement(children)\n ? cloneElement(children as JSX.Element, {\n cursor: isDragging ? 'grabbing' : 'grab',\n })\n : children\n\n const dragEventListeners = !disableDrag && listeners\n\n return (\n <Box\n ref={ setNodeRef }\n { ...attributes }\n transform={ CSS.Translate.toString(transform) }\n _focusVisible={ ring }\n tabIndex={ disableDrag ? -1 : 0 }\n w=\"max-content\"\n data-testid={ dataTestId }\n { ...dragEventListeners }\n >\n { typeof childrenWithDragCursor === 'function'\n ? childrenWithDragCursor(listeners, props)\n : childrenWithDragCursor || (\n <DragItem isDragging={ isDragging } itemLabel={ itemLabel } />\n ) }\n </Box>\n )\n}\n","import React from 'react'\nimport { useDroppable } from '@dnd-kit/core'\nimport { Box } from '../box'\nimport { Center } from '../center'\nimport { DroppableProps } from './types'\n\n/**\n * Wrapper where you can style a container to place draggable elements\n * @see DropZone\n * @see Draggable\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/droppable}\n *\n * @example (Example)\n * ## Move the item into the container\n * (?\n * () => {\n * const [ isDropped, setIsDropped ] = useState(false)\n * const handleDragEnd = (e) => {\n * setIsDropped(e.over && e.over.id === 'droppable')\n * }\n *\n * return (\n * <DragAndDrop onDragEnd={handleDragEnd}>\n * <HStack>\n * {!isDropped && <Draggable id=\"draggable\" />}\n * <Droppable id=\"droppable\">\n * <Center bgColor=\"bg.filled\" boxSize=\"3xs\">\n * {isDropped ? <Draggable id=\"draggable\"/> : <P>Drop here!</P>}\n * </Center>\n * </Droppable>\n * </HStack>\n *\n * </DragAndDrop>\n *\n * )\n *\n *\n * }\n * ?)\n *\n */\nexport const Droppable = ({\n children,\n 'data-testid': testId,\n ...rest\n}: DroppableProps) => {\n const { setNodeRef, ...props } = useDroppable({\n ...rest,\n })\n return (\n <Box ref={ setNodeRef } data-testid={ testId }>\n { typeof children === 'function'\n ? children(props)\n : children || <Center>Drop here</Center> }\n </Box>\n )\n}\n","import React from 'react'\nimport { SortableContext, SortableContextProps } from '@dnd-kit/sortable'\n\n/**\n * Wrapper that provides context for sortable elements using DnD-kit\n * @see DragAndDrop\n * @see SortableList\n * @see MultiSort\n * @see {@link https://northlight.dev}\n * @see {@link https://docs.dndkit.com/presets/sortable/sortable-context}\n * @example\n * **<a href=\"https://docs.dndkit.com/presets/sortable/sortable-context\" target=\"_blank\">Read more on dnd-docs</a>**\n * */\nexport const Sortable = (props: SortableContextProps) => (\n <SortableContext { ...props } />\n)\n","import React, { PointerEvent, cloneElement, isValidElement, useRef } from 'react'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { Box } from '../box'\nimport { DragItem } from './drag-item'\nimport { ring } from '../../utils'\nimport { SortableItemProps } from './types'\n\n/**\n * Renders a draggable item under sortable context\n * @see SortableList\n * @see MultiSort\n * @see {@link https://northlight.dev/reference/sortable-item}\n *\n * @example\n * (? <SortableItem id=\"sortable-1\"/> ?)\n * */\nexport const SortableItem = ({\n itemLabel = 'Drag me',\n dblClickThreshold = 300,\n children,\n disableDrag = false,\n 'data-testid': dataTestId,\n ...rest\n}: SortableItemProps) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n ...props\n } = useSortable({ ...rest })\n if (!listeners) {\n return (\n <DragItem itemLabel={ itemLabel } />\n )\n }\n\n const timeStampSnapchot = useRef(0)\n const inEditMode = useRef(false)\n const { onPointerDown, onKeyDown } = listeners\n const handlePointerDown = (e: PointerEvent<Element>) => {\n const elapsedTime = e.timeStamp - timeStampSnapchot.current\n if (elapsedTime > dblClickThreshold) {\n inEditMode.current = true\n onPointerDown(e)\n } else {\n inEditMode.current = false\n }\n timeStampSnapchot.current = e.timeStamp\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<Element>) => {\n if (inEditMode.current) {\n onKeyDown(e)\n }\n }\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition,\n }\n\n const childrenWithDragCursor = isValidElement(children)\n ? cloneElement(children as JSX.Element, {\n cursor: isDragging ? 'grabbing' : 'grab',\n })\n : children\n\n const dragEventListeners = !disableDrag && {\n onPointerDown: handlePointerDown,\n onKeyDown: handleKeyDown,\n }\n\n return (\n <Box\n ref={ setNodeRef }\n sx={ style }\n { ...attributes }\n _focusVisible={ ring }\n tabIndex={ disableDrag ? -1 : 0 }\n borderRadius=\"tag.default\"\n data-testid={ dataTestId }\n { ...dragEventListeners }\n >\n { (\n typeof childrenWithDragCursor === 'function'\n ? childrenWithDragCursor(listeners, props)\n : childrenWithDragCursor\n ) || <DragItem isDragging={ isDragging } itemLabel={ itemLabel } />\n }\n </Box>\n )\n}\n","import React from 'react'\nimport { DragDuo } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { DragHandleProps } from './types'\n\n/**\n * Util component to display drag handle icon\n * for draggable react components under DragAndDrop context\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/drag-handle}\n *\n * @example (Example)\n * (?\n * <DragHandle />\n * ?)\n */\nexport const DragHandle = ({ icon, isDragging, ...rest }: DragHandleProps) => (\n <Icon\n as={ icon || DragDuo }\n cursor={ isDragging ? 'grabbing' : 'grab' }\n { ...rest }\n />\n)\n","import React from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Stack } from '../stack'\nimport { Droppable } from './droppable'\nimport { DropZoneProps } from './types'\n\n/**\n * Prestyled droppable area to drop draggable components,\n * you can override the styles of dropzone with sx prop\n * @see Draggable\n * @see Droppable\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/drop-zone}\n *\n * @example (Example)\n * ## You can drop draggable components\n * (?\n * <DragAndDrop>\n * <DropZone name=\"random-id-2\"><Draggable id=\"test\"/></DropZone>\n * </DragAndDrop>\n * ?)\n */\nexport const DropZone = ({ sx = {}, name, children, ...rest }: DropZoneProps) => {\n const { dropZone } = useMultiStyleConfig('DragAndDrop', { sx })\n return (\n <Droppable id={ name }>\n <Stack sx={ dropZone } { ...rest }>\n { children }\n </Stack>\n </Droppable>\n )\n}\n","import React, { useState } from 'react'\nimport {\n DragOverEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n rectIntersection,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport { arrayMove, sortableKeyboardCoordinates } from '@dnd-kit/sortable'\nimport { indexOf, insert, keys, remove } from 'ramda'\nimport { DragAndDrop } from './drag-and-drop'\nimport { MultiSortProps } from './types'\n\n/**\n * Util component for sorting items in two dimensions(container and order in container)\n * @see SortableList\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/multi-sort}\n *\n * @example\n * (?\n * () => {\n const [ multiItems, setMultiItems ] = useState({\n container1: [\n 'JavaScript',\n 'Python',\n 'Front end',\n 'Back end',\n ],\n container2: [ 'HTML', 'CSS' ],\n container3: [ 'Chakra UI', 'Next.js', 'Tailwind UI' ],\n })\n return (\n <Stack>\n <MultiSort\n items={ multiItems }\n onChange={ (items) => setMultiItems(items) }\n >\n { (items, activeId) => (\n <HStack alignItems=\"start\">\n <VStack>\n <Heading size=\"sm\">I like</Heading>\n <DropZone name=\"container1\">\n <SortableContainer items={ items.container1 } />\n </DropZone>\n </VStack>\n <VStack>\n <Heading size=\"sm\">I don't like</Heading>\n <DropZone name=\"container2\">\n <SortableContainer items={ items.container2 } />\n </DropZone>\n </VStack>\n <VStack>\n <Heading size=\"sm\">Neutral</Heading>\n <DropZone name=\"container3\">\n <SortableContainer items={ items.container3 } />\n </DropZone>\n </VStack>\n <DragOverlay>\n { activeId ? (\n <DragItem\n itemLabel={ activeId }\n isDragging={ true }\n bgColor=\"background.tag.default\"\n />\n ) : null }\n </DragOverlay>\n </HStack>\n ) }\n </MultiSort>\n <Text>Controlled output: </Text>\n <Code p={ 2 } borderRadius={ 4 }>\n <pre>{ JSON.stringify(multiItems, null, 2) }</pre>\n </Code>\n</Stack>\n )\n * }\n * ?)\n * <br />\n * Multisort abstracts logic away for setting up sortable items between multiple containers,\n * you can then separate, or create and style this containers as you want,\n * by putting them under <Droppable /> or a prestyled <Dropzone />\n\nSortableContainer is a wrapper for a <Sortable /> with a sortable item\n * */\nexport function MultiSort<itemKeys extends string | number | symbol> ({\n items,\n onChange = () => {},\n children,\n collisionDetection,\n sensors,\n}: MultiSortProps<itemKeys>) {\n const [ activeItem, setActiveItem ] = useState<UniqueIdentifier | null>(null)\n\n const moveBetweenContainers = (\n activeContainerName: itemKeys,\n activeIndex: number,\n overContainerName: itemKeys,\n overIndex: number,\n item: string\n ) => ({\n ...items,\n [activeContainerName]: remove(activeIndex, 1, items[activeContainerName]),\n [overContainerName]: insert(overIndex, item, items[overContainerName]),\n })\n\n const customSensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const findContainer = (id: string) =>\n (id in items ? id : keys(items).find((key) => items[key].includes(id)))\n\n const getContainers = (e: DragOverEvent) => {\n const { active, over } = e\n if (!over) return {}\n const { id } = active\n const { id: overId } = over\n\n const activeContainerName = findContainer(id as string) as itemKeys\n const overContainerName = findContainer(overId as string) as itemKeys\n return { activeContainerName, overContainerName, id, overId, active }\n }\n\n const handleDragStart = (e: DragOverEvent) => {\n const {\n active: { id },\n } = e\n setActiveItem(id)\n }\n\n const handleDragOver = (e: DragOverEvent) => {\n const { activeContainerName, overContainerName, id, overId } = getContainers(e)\n\n if (\n !(\n !activeContainerName ||\n !overContainerName ||\n activeContainerName === overContainerName\n )\n ) {\n const activeIndex = indexOf(id, items[activeContainerName])\n const overIndex = indexOf(overId, items[overContainerName])\n onChange(moveBetweenContainers(\n activeContainerName,\n activeIndex,\n overContainerName,\n overIndex,\n id as string\n ))\n }\n }\n\n const handleDragEnd = (e: DragOverEvent) => {\n const { activeContainerName, overContainerName, id, overId, active } = getContainers(e)\n\n if (!activeContainerName || !overContainerName) return\n\n const activeIndex = indexOf(id, items[activeContainerName])\n const overIndex = indexOf(overId, items[overContainerName])\n\n if (activeContainerName === overContainerName) {\n onChange({\n ...items,\n [overContainerName]: arrayMove(\n items[overContainerName],\n activeIndex,\n overIndex\n ),\n })\n } else {\n onChange(moveBetweenContainers(\n activeContainerName,\n activeIndex,\n overContainerName,\n overIndex,\n active?.id as string\n ))\n }\n }\n\n return (\n <DragAndDrop\n sensors={ sensors || customSensors }\n onDragStart={ handleDragStart }\n onDragOver={ handleDragOver }\n onDragEnd={ handleDragEnd }\n collisionDetection={ collisionDetection || rectIntersection }\n >\n { typeof children === 'function' ? children(items, activeItem) : children }\n </DragAndDrop>\n )\n}\n","import React, { useMemo, useState } from 'react'\nimport {\n DragOverEvent,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n rectIntersection,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable'\nimport { identity, indexOf, map } from 'ramda'\nimport { DragAndDrop } from './drag-and-drop'\nimport { Sortable } from './sortable'\nimport { SortableItem } from './sortable-item'\nimport { DragItem } from './drag-item'\nimport { SortableListProps } from './types'\n\n/**\n * Util component to render sortable items under sortable context\n * @see SortableItem\n * @see Sortable\n * @see {@link https://northlight.dev/reference/sortable-list}\n *\n * @example (Example)\n * ## You can render any layout of sortable components, for example grid:\n * (?\n * () => {\n * const [items, setItems] = useState(Array.from({length: 100}, (_, i) => i))\n * return (\n * <Stack>\n<SimpleGrid minChildWidth=\"50px\" spacing={ 4 }>\n <SortableList\n items={ items }\n onChange={ (items) => setItems(items) }\n />\n</SimpleGrid>\n <Code p={ 2 } borderRadius={ 4 }>\n { JSON.stringify(items, null, 2) }\n </Code>\n </Stack>\n * )}\n * ?)\n *\n * @example (Example)\n * ### With custom component\n * (?\n * () => {\n * const [items, setItems] = useState([ { name: 'item1' }, { name: 'item2' }, { name: 'item3' } ])\n * return (\n * <Stack>\n *\n * <SortableList\n items={ items }\n createKey={ (item) => item.name }\n disableDrag={ true }\n onChange={setItems}\n>\n { ({ name }, listeners, { isOver }) => (\n <HStack>\n <DragHandle { ...listeners } isDragging={ isOver } />\n <Input defaultValue={ name } />\n </HStack>\n ) }\n</SortableList>\n</Stack>\n )}\n * ?)\n<br />\nIf disableDrag=false, then when the user double clicks it will trigger\nthe default behaviour of the rendered component instead of the dragging,\n you can adjust the threshold with dblClickThreshold, default is 300ms\n *\n *\n */\nexport function SortableList<T> ({\n children,\n items,\n collisionDetection,\n createKey = identity as (t: T) => UniqueIdentifier,\n strategy,\n onChange = () => {},\n onMovedItem = identity,\n displayOverlay = false,\n sensors,\n dblClickThreshold = 300,\n disableDrag = false,\n modifiers,\n}: SortableListProps<T>) {\n const [ activeItem, setActiveItem ] = useState<UniqueIdentifier | null>(null)\n\n const identifierItems = useMemo(() => map(createKey, items), [ items ])\n\n const customSensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragStart = (event: DragOverEvent) => {\n const {\n active: { id },\n } = event\n setActiveItem(id)\n }\n\n const handleDragEnd = (event: DragOverEvent) => {\n const { active, over } = event\n if (active && over && active.id !== over.id) {\n const prevIds = map(createKey, items)\n const oldIndex = indexOf(active.id, prevIds)\n const newIndex = indexOf(over.id, prevIds)\n onMovedItem({ item: items[oldIndex], oldIndex, newIndex })\n const newItems = arrayMove(items, oldIndex, newIndex)\n onChange(newItems)\n }\n }\n\n return (\n <DragAndDrop\n sensors={ sensors || customSensors }\n collisionDetection={ collisionDetection || rectIntersection }\n onDragStart={ handleDragStart }\n onDragEnd={ handleDragEnd }\n modifiers={ modifiers }\n >\n <Sortable\n items={ identifierItems }\n strategy={ strategy || rectSortingStrategy }\n >\n { items.map((item, index) => {\n const id = createKey(item)\n return (\n <SortableItem\n key={ id }\n id={ id }\n itemLabel={ id }\n dblClickThreshold={ dblClickThreshold }\n disableDrag={ disableDrag }\n >\n { (listeners, props) =>\n (typeof children === 'function'\n ? children(item, listeners, props, index)\n : children)\n }\n </SortableItem>\n )\n }) }\n </Sortable>\n { displayOverlay && (\n <DragOverlay>\n { activeItem ? <DragItem itemLabel={ activeItem } /> : null }\n </DragOverlay>\n ) }\n </DragAndDrop>\n )\n}\n","import React from 'react'\nimport { rectSortingStrategy } from '@dnd-kit/sortable'\nimport { Sortable } from './sortable'\nimport { SortableItem } from './sortable-item'\nimport { SortableContainerProps } from './types'\n\n/**\n * Used with multi sort to render a sortable list inside a droppable\n * @see MultiSort\n * @see {@link https://northlight.dev/reference/sortable-container}\n *\n * @example\n * (?\n * <SortableContainer items={['item 1', 'item 2', 'item 3']} />\n * ?)\n *\n */\nexport const SortableContainer = ({ children, items, strategy }: SortableContainerProps) => (\n <Sortable items={ items } strategy={ strategy || rectSortingStrategy }>\n { items.map((id) => (\n <SortableItem key={ id } id={ id } itemLabel={ id }>\n { typeof children === 'function' ? children(id) : children }\n </SortableItem>\n )) }\n </Sortable>\n)\n","import React, { LegacyRef, forwardRef } from 'react'\nimport { VariableSizeList } from 'react-window'\nimport AutoSizer from 'react-virtualized-auto-sizer'\nimport { FastListProps } from './types'\n\n/**\n * Wrapper that renders children in a virtualized stacked layout\n * @see FastGrid\n * @see {@link https://northlight.dev/reference/fast-list}\n *\n * @example (Example)\n * (?\n * <Box h=\"500px\" w=\"300p\" border=\"1px solid gray\" p={ 4 } borderRadius={ 4 }>\n <FastList itemCount={ 10000 } itemSize={ 30 } overscanCount={ 100 }>\n { (index) => `item-${index}` }\n </FastList>\n</Box>\n * ?)\n *\n */\nexport const FastList = forwardRef(({\n itemCount,\n itemSize,\n direction = 'column',\n children,\n width,\n height,\n overscanCount = 0,\n initialScrollOffset,\n ...rest\n}: FastListProps, ref: LegacyRef<VariableSizeList<any>>) => (\n <AutoSizer>\n { ({ width: autoWidth, height: autoHeight }) => (\n <VariableSizeList\n itemCount={ itemCount }\n itemSize={ typeof itemSize === 'number' ? (_index) => itemSize : itemSize }\n height={ height ?? autoHeight }\n width={ width ?? autoWidth }\n layout={ direction === 'column' ? 'vertical' : 'horizontal' }\n initialScrollOffset={ initialScrollOffset }\n overscanCount={ overscanCount }\n ref={ ref }\n { ...rest }\n >\n { ({ style, index }) => (\n <div style={ style }>\n { typeof children === 'function' ? children(index) : children }\n </div>\n ) }\n </VariableSizeList>\n ) }\n </AutoSizer>\n))\n","import React, { LegacyRef, forwardRef } from 'react'\nimport { VariableSizeGrid } from 'react-window'\nimport AutoSizer from 'react-virtualized-auto-sizer'\nimport { FastGridProps } from './types'\n\n/**\n * Wrapper that renders children in a virtualized html grid layout\n * @see FastList\n * @see {@link https://northlight.dev/reference/fast-grid}\n *\n * @example (Example)\n * ## Simple example\n * (?\n * <Box h=\"500px\" w=\"full\" border=\"1px solid gray\" p={ 4 } borderRadius={ 4 }>\n <FastGrid\n columns={ 10000 }\n rows={ 10000 }\n rowSize={ 100 }\n columnSize={ 100 }\n overscanRowCount={ 10 }\n overscanColumnCount={ 1 }\n >\n { (rowIndex, columnIndex) => `[${rowIndex}, ${columnIndex}]` }\n </FastGrid>\n </Box>\n *\n * ?)\n *\n * @example (Example)\n * ## Spreadsheet example\n * (?\n * +\n *\nconst getCell = (rowIndex, columnIndex) => {\n if (rowIndex === 0 && columnIndex === 0) return ''\n if (rowIndex === 0) {\n return (\n <Lead w=\"full\">\n { ' ' }\n Col { columnIndex }\n </Lead>\n )\n }\n if (columnIndex === 0) {\n return (\n <Lead w=\"full\">\n { ' ' }\n Row { rowIndex }\n </Lead>\n )\n }\n return (\n <TextField name={ `${rowIndex}-${columnIndex}` } />\n )\n}\n *\n * const MyGrid = () => {\n * const [values, setValues ] = useState({})\n * return(\n * <Form initialValues={{}}>\n * {({getValues}) => (\n * <Stack>\n * <Box h=\"500px\" w=\"500p\" border=\"1px solid gray\" p={ 4 } borderRadius={ 4 }>\n <FastGrid\n columns={ 10000 }\n rows={ 10000 }\n rowSize={ 50 }\n columnSize={ 100 }\n overscanRowCount={ 10 }\n overscanColumnCount={ 1 }\n >\n {getCell}\n </FastGrid>\n</Box>\n<Button onClick={() => setValues(getValues())} variant=\"success\">Save</Button>\n<Code> <pre>{JSON.stringify(values, null, 2)}</pre></Code>\n</Stack>\n * )}\n </Form>\n * )}\n\nrender(<MyGrid />)\n *\n *\n * ?)\n * **(Note, FastGrid must be wrapped in a parent element with set height and width!)**\n *\n*/\nexport const FastGrid = forwardRef(({\n columns,\n rows,\n columnSize,\n rowSize,\n children,\n width,\n height,\n overscanRowCount = 0,\n overscanColumnCount = 0,\n ...rest\n}: FastGridProps, ref: LegacyRef<VariableSizeGrid<any>>) => (\n <AutoSizer>\n { ({ width: autoWidth, height: autoHeight }) => (\n <VariableSizeGrid\n rowCount={ rows }\n columnCount={ columns }\n columnWidth={ typeof columnSize === 'number' ? (_index) => columnSize : columnSize }\n rowHeight={ typeof rowSize === 'number' ? (_index) => rowSize : rowSize }\n height={ height ?? autoHeight }\n width={ width ?? autoWidth }\n overscanRowCount={ overscanRowCount }\n overscanColumnCount={ overscanColumnCount }\n ref={ ref }\n { ...rest }\n >\n { ({ style, rowIndex, columnIndex }) => (\n <div style={ style }>\n { typeof children === 'function' ? children(rowIndex, columnIndex) : children }\n </div>\n ) }\n </VariableSizeGrid>\n ) }\n </AutoSizer>\n))\n","import React from 'react'\nimport { CheckDuo, EditDuo, XCloseSolid } from '@northlight/icons'\nimport {\n HStack,\n useEditableControls,\n useEditableState,\n useMultiStyleConfig,\n} from '@chakra-ui/react'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { EditableControlsProps } from './types'\nimport { ButtonVariants } from '../button/types'\n\ntype MapVariantTypes = Record<EditableControlsProps['variant'], ButtonVariants>\n\nconst mapEditableVariantsToButtonSubmitVariants: MapVariantTypes = {\n brand: 'brand',\n default: 'success',\n}\n\nconst mapEditableVariantsToButtonCancelVariants: MapVariantTypes = {\n brand: 'ghost',\n default: 'danger',\n}\n\nexport const EditableControls = ({ size, variant = 'default' }: EditableControlsProps) => {\n const {\n getSubmitButtonProps,\n getCancelButtonProps,\n } = useEditableControls()\n\n const { onEdit, isEditing } = useEditableState()\n\n const { button, icon, controls } = useMultiStyleConfig('EditableText', { size, isEditing })\n\n return (\n <HStack spacing={ 1 } sx={ controls }>\n { isEditing\n ? (\n <>\n <IconButton\n aria-label=\"Cancel\"\n sx={ button }\n variant={ mapEditableVariantsToButtonCancelVariants[variant] }\n { ...getCancelButtonProps() }\n >\n <Icon sx={ icon } as={ XCloseSolid } />\n </IconButton>\n <IconButton\n aria-label=\"Save\"\n sx={ button }\n variant={ mapEditableVariantsToButtonSubmitVariants[variant] }\n { ...getSubmitButtonProps() }\n >\n <Icon sx={ icon } as={ CheckDuo } />\n </IconButton>\n </>\n )\n : (\n <IconButton\n aria-label=\"Edit\"\n variant=\"ghost\"\n sx={ button }\n onClick={ onEdit }\n >\n <Icon sx={ icon } as={ EditDuo } />\n </IconButton>\n )\n }\n </HStack>\n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Input, InputGroup, InputLeftElement, InputRightElement } from '../input'\nimport { EditableInput as ChakraEditableInput, Editable, EditablePreview } from '../editable'\nimport { EditableProps } from './types'\nimport { EditableControls } from './editable-controls'\n\n/**\n * Used to safely modify text with default or previousely set value\n * @see {@link https://northlight.dev/reference/editable-text}\n *\n * @example (Example)\n * ##Edit password\n * (?\n * () => {\n * const [v, setV] = useState('123456789')\n * return (\n * <Box p=\"2\">\n * <EditableText value={v} onSubmit={setV} leftItem={<Icon as={LockDuo} />}/>\n * </Box>\n * )\n * }\n * ?)\n *\n * @example (Example)\n * ## Other notes\n <p>\n Pressing <b>ESC</b> or clicking on the\n <b> red icon</b> will delete the changes and go back to the original state\n </p>\n <p>\n Pressing <b>ENTER</b> or clicking on the\n <b> green icon</b> will save the changes internally and fire the{ ' ' }\n <Code>onSubmit</Code> callback.\n </p>\n *\n */\nexport const EditableText = ({\n size = 'md',\n value: inputValue,\n onSubmit,\n leftItem,\n variant = 'default',\n ...rest\n}: EditableProps) => {\n const [ value, setValue ] = useState(inputValue)\n const { input, preview } = useMultiStyleConfig('EditableText', { size, value })\n\n useEffect(() => {\n setValue(inputValue)\n }, [ inputValue ])\n\n return (\n <Editable\n isPreviewFocusable={ true }\n selectAllOnFocus={ false }\n value={ value }\n onChange={ (newValue) => setValue(newValue) }\n onSubmit={ onSubmit }\n { ...rest }\n >\n <InputGroup size={ size }>\n { leftItem && (\n <InputLeftElement>\n { leftItem }\n </InputLeftElement>\n ) }\n <Input\n as={ EditablePreview }\n sx={ preview }\n />\n <Input\n as={ ChakraEditableInput }\n size={ size }\n sx={ input }\n />\n <InputRightElement sx={ { width: 'min-content' } }>\n <EditableControls size={ size } variant={ variant } />\n </InputRightElement>\n </InputGroup>\n </Editable>\n )\n}\n","import { Modal as ChakraModal, ModalCloseButton, ModalContent, ModalOverlay } from '@chakra-ui/react'\nimport React from 'react'\nimport { ModalProps } from './types'\n\nexport const ModalBase = ({\n isCentered = true,\n children,\n ...rest\n}: ModalProps) => (\n <ChakraModal\n isCentered={ isCentered }\n scrollBehavior=\"inside\"\n motionPreset=\"slideInBottom\"\n { ...rest }\n >\n <ModalOverlay />\n <ModalContent data-testid=\"modal-test-id\">\n <ModalCloseButton data-testid=\"modal-test-button-id\" />\n { children }\n </ModalContent>\n </ChakraModal>\n)\n","import React from 'react'\nimport { ModalProps } from './types'\nimport { ModalBase } from './modal-base'\n\n/**\n * @see {@link https://northlight.dev/reference/modal}\n *\n * */\n\nexport const Modal = ({\n stayMountedOnClose = false,\n isOpen,\n ...rest\n}: ModalProps) => (\n <>\n { (stayMountedOnClose || isOpen) && <ModalBase isOpen={ isOpen } { ...rest } /> }\n </>\n)\n","import React from 'react'\nimport { ModalBody as ChakraModalBody, ModalBodyProps } from '@chakra-ui/react'\n\nexport const ModalBody = (props: ModalBodyProps) => (\n <ChakraModalBody minH={ props.h } maxH={ props.h } { ...props } />\n)\n","import React, { forwardRef, useState } from 'react'\nimport AvatarEditor from 'react-avatar-editor'\nimport { ZoomInDuo } from '@northlight/icons'\nimport { EditableText } from '../editable-text'\nimport { Icon } from '../icon'\nimport { HStack, Stack } from '../stack'\nimport { Box } from '../box'\nimport { Button } from '../button'\nimport { Slider, SliderFilledTrack, SliderThumb, SliderTrack } from '../slider'\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../modal'\nimport { FormLabel } from '../form-control'\nimport { FileEditorModalProps } from './types'\n\nexport const FileEditorModal = forwardRef(({\n fileName,\n setFileName,\n isOpen,\n onClose,\n image = '',\n handleCrop,\n isImage,\n canEditFileName = true,\n canCropImage = false,\n ...rest\n}: FileEditorModalProps, ref: any) => {\n const [ zoomLevel, setZoomLevel ] = useState(1)\n const [ position, setPosition ] = useState({ x: 0.5, y: 0.5 })\n\n const handleClose = () => {\n setZoomLevel(1)\n onClose()\n }\n\n return (\n <Modal\n isOpen={ isOpen }\n onClose={ onClose }\n closeOnOverlayClick={ false }\n { ...rest }\n >\n <ModalHeader>Edit { isImage ? 'image' : 'file' }</ModalHeader>\n <ModalBody\n display=\"flex\"\n justifyContent=\"start\"\n flexDirection=\"column\"\n alignItems=\"center\"\n gap={ 4 }\n minH=\"300px\"\n >\n <Stack display={ isImage && canCropImage ? 'inherit' : 'none' }>\n <AvatarEditor\n ref={ ref }\n image={ image || '' }\n onPositionChange={ (pos) => setPosition(pos) }\n position={ position }\n width={ 250 }\n height={ 250 }\n border={ 50 }\n color={ [ 255, 255, 255, 0.7 ] }\n scale={ zoomLevel }\n rotate={ 0 }\n />\n <HStack w=\"90%\">\n <FormLabel>Zoom</FormLabel>\n <Slider\n aria-label=\"zoom\"\n defaultValue={ zoomLevel }\n maxW=\"50%\"\n min={ 0.1 }\n step={ 0.05 }\n max={ 10 }\n onChange={ (value) => setZoomLevel(value) }\n >\n <SliderTrack>\n <SliderFilledTrack />\n </SliderTrack>\n <SliderThumb boxSize={ 6 }>\n <Icon as={ ZoomInDuo } />\n </SliderThumb>\n </Slider>\n </HStack>\n\n </Stack>\n { canEditFileName && (\n <Stack w=\"90%\" direction={ isImage ? 'row' : 'column' } pt={ 2 }>\n <FormLabel>Name the file:</FormLabel>\n <Box maxW=\"50%\">\n <EditableText onSubmit={ (v) => setFileName(v) } value={ fileName } size=\"sm\" />\n </Box>\n </Stack>\n ) }\n </ModalBody>\n <ModalFooter>\n <HStack>\n <Button variant=\"danger\" onClick={ handleClose }>\n Cancel\n </Button>\n <Button variant=\"success\" onClick={ handleCrop }>\n Save\n </Button>\n </HStack>\n </ModalFooter>\n </Modal>\n )\n})\n","import React from 'react'\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '../modal'\nimport { Button } from '../button'\nimport { ConfirmDeleteModalProps } from './types'\n\nexport const ConfirmDeleteModal = ({\n isOpen,\n onClose,\n confirmDelete,\n fileName,\n ...rest\n}: ConfirmDeleteModalProps) => {\n const handleDelete = () => {\n confirmDelete()\n onClose()\n }\n\n return (\n <Modal isOpen={ isOpen } onClose={ onClose } { ...rest }>\n <ModalHeader\n sx={ { fontSize: 'lg' } }\n overflow=\"hidden\"\n whiteSpace=\"nowrap\"\n textOverflow=\"ellipsis\"\n pr={ 16 }\n >\n Delete { fileName }\n </ModalHeader>\n <ModalBody>\n Deleting this file is a permanent action. You will not be able to\n recover this file at a later time.\n </ModalBody>\n <ModalFooter>\n <Button variant=\"danger\" onClick={ handleDelete }>\n Delete\n </Button>\n </ModalFooter>\n </Modal>\n )\n}\n","export const updateTimeThreshold = 0.5\nexport const animationSlideTime = 250\n","import React, { forwardRef } from 'react'\nimport {\n Progress as ChakraProgress,\n ProgressProps as ChakraProgressProps,\n} from '@chakra-ui/react'\nimport { animationSlideTime } from './constants'\n\nexport interface ProgressBarProps extends ChakraProgressProps {\n animationSlideTimeMs?: number\n}\n\n/**\n * @see {@link https:/northlight/reference/progress-bar}\n *\n * @example\n * (?\n * <ProgressBar value={40} />\n * ?)\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n ({ animationSlideTimeMs = animationSlideTime, sx, ...props }, ref) => (\n <ChakraProgress\n ref={ ref }\n width=\"full\"\n height=\"1a\"\n borderRadius=\"full\"\n sx={ {\n '>[role=\"progressbar\"]': {\n transition: `width ${animationSlideTimeMs}ms ease-out`,\n },\n ...sx,\n } }\n { ...props }\n />\n )\n)\n","export const formattedTime = (seconds: number) => {\n let baseString = ''\n const hours = Math.floor(seconds / 3600)\n if (hours > 0) {\n baseString += ` ${hours}h`\n }\n const minutes = Math.floor((seconds - hours * 3600) / 60)\n if (minutes > 0) {\n baseString += ` ${minutes}min`\n }\n const newSeconds = Math.floor(seconds - hours * 3600 - minutes * 60)\n if (newSeconds > 0) {\n baseString += ` ${newSeconds}s`\n }\n\n return baseString\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ProgressBar } from './progress-bar'\nimport { VStack } from '../stack'\nimport { Small } from '../typography'\nimport { formattedTime } from './utils'\nimport { Fade } from '../transitions'\nimport { LoadingBarProps } from './types'\nimport { animationSlideTime, updateTimeThreshold } from './constants'\n\n/**\n * @see {@link https:/northlight/reference/loading-bar}\n *\n * @example\n * (?\n * () => {\n const [ progress, setProgress ] = useState(0)\n if (progress > 1 && buffer) {\n clearInterval(buffer)\n buffer = null\n }\n\n const handleClick = () => {\n setProgress(0)\n buffer = setInterval(\n () => setProgress((prev) => prev + Math.random() * 0.1),\n Math.random() * 300 + 200\n )\n }\n return (\n <Stack>\n <LoadingBar loaded={ progress } hideDisplay={true}/>\n <Button onClick={ handleClick }>Start Loading</Button>\n </Stack>\n )\n * }\n * ?)\n *\n */\nexport const LoadingBar = ({\n loaded,\n onLoadEnd = () => {},\n hideDisplay = true,\n ...rest\n}: LoadingBarProps) => {\n const ref = useRef<HTMLDivElement>(null)\n const timeRef = useRef<number>(0)\n const progress = Math.max(0, Math.min(loaded, 1))\n const [ timeLeft, setTimeLeft ] = useState(0)\n\n useEffect(() => {\n if (ref.current) {\n (ref.current.children[0] as HTMLDivElement).style.width = `${progress * 100}%`\n }\n\n if (timeRef.current) {\n const deltaTime = timeRef.current\n ? (Date.now() - timeRef.current) / 1000\n : 0\n if (deltaTime > updateTimeThreshold) {\n const newEstimate = progress !== 0 ? deltaTime / progress : 0\n setTimeLeft(Math.round(newEstimate - deltaTime))\n }\n } else if (progress > 0) {\n timeRef.current = Date.now()\n }\n }, [ progress ])\n\n return (\n <Fade\n in={ progress < 1 }\n enterDuration={ 1 }\n exitDelay={ 250 }\n exitDuration={ 1000 }\n hideDisplay={ hideDisplay }\n onTransitionComplete={ () => {\n if (progress >= 1) {\n onLoadEnd()\n }\n } }\n >\n <VStack { ...rest }>\n <Small>\n { Math.round(progress * 100) }%{ ' ' }\n { !!timeLeft && `· ${formattedTime(timeLeft)} left` }\n </Small>\n <ProgressBar\n ref={ ref }\n animationSlideTimeMs={ animationSlideTime }\n />\n </VStack>\n </Fade>\n )\n}\n","export const fiveHundredMB = 5.24288E8\nexport const imageLazyThreshold = 1.572854E7\nexport const defaultEditOptions = {\n canEdit: true,\n canEditImage: true,\n canEditName: true,\n}\n","import {\n all,\n difference,\n has,\n intersection,\n isEmpty,\n last,\n split,\n test,\n trim,\n} from 'ramda'\nimport { imageLazyThreshold } from './constants'\nimport {\n FileFormat,\n FileWithSizeAndType,\n FileWithSrcNameType,\n FileWithType,\n} from './types'\n\nexport const getResizingFactor = (\n imgWidth: number,\n imgHeight: number,\n maxWidth: number,\n maxHeight: number\n) => Math.min(1, Math.min(maxWidth / imgWidth, maxHeight / imgHeight))\n\nexport const convertBlobToFile = (\n blob: Blob,\n name: string,\n type: string\n) => new File([ blob ], name, { type })\n\nexport const compressImage = (\n file: File,\n maxWidth = 3000,\n maxHeight = 3000,\n quality = 0.75\n) => {\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n if (!context) return file\n\n const imageBuffer = new Image()\n imageBuffer.src = URL.createObjectURL(file as File)\n\n return new Promise((resolve) => {\n imageBuffer.onload = () => {\n const resizingFactor = getResizingFactor(\n imageBuffer.width,\n imageBuffer.height,\n maxWidth,\n maxHeight\n )\n const scaledWidth = imageBuffer.width * resizingFactor\n const scaledHeight = imageBuffer.height * resizingFactor\n canvas.width = scaledWidth\n canvas.height = scaledHeight\n context.drawImage(imageBuffer, 0, 0, scaledWidth, scaledHeight)\n canvas.toBlob(\n (blob) => {\n if (file && blob) {\n const newImage = convertBlobToFile(blob, file.name, file.type)\n resolve(newImage)\n } else {\n resolve(file)\n }\n },\n 'image/jpeg',\n quality\n )\n }\n })\n}\n\nexport const readableFileSize = (size: number) => {\n if (size <= 0) return 0\n const i = Math.floor(Math.log(size) / Math.log(1024))\n return `${(size / 1024 ** i).toFixed(1)} ${\n [ 'B', 'kB', 'MB', 'GB', 'TB' ][i]\n }`\n}\n\nexport const getImageAsFile = async <T extends FileWithSrcNameType>(\n image: T,\n name?: string\n): Promise<File> =>\n fetch(image.src as string)\n .then((res) => res.blob())\n .then(\n (blob) =>\n new Promise((resolve) => {\n const newImage = convertBlobToFile(blob, name || image.name, image.type)\n resolve(newImage)\n })\n )\n\nconst getFormatsAsArray = (acceptFormat: string) =>\n split(',', acceptFormat)\n .map((format) => trim(format))\n\nexport const getAcceptedExtensions = (acceptFormat: string) =>\n getFormatsAsArray(acceptFormat)\n .filter((format) => test(/^\\./, format))\n .map((format) => format.substring(1))\n\nexport const getAcceptedFormats = (acceptFormat: string) =>\n getFormatsAsArray(acceptFormat)\n .filter((format) => test(/\\//, format))\n .map((format) => split('/', format)[0])\n\nconst getFileExtension = <T extends FileWithType> (file: T) => last(split('/', file.type)) as string\n\nconst getFileFormat = <T extends FileWithType> (file: T) => split('/', file.type)[0]\n\nexport const validFileFormat = <T extends FileWithType> (\n file: T,\n acceptFormat: string\n) => (\n acceptFormat === '*'\n|| getAcceptedFormats(acceptFormat).includes(getFileFormat(file))\n|| getAcceptedExtensions(acceptFormat).includes(getFileExtension(file))\n )\n\nexport const isValidFile = <T extends FileWithSizeAndType> (\n file:T,\n acceptFormat: string,\n maxFileSize: number\n) => {\n const isValid =\n file.size as number < maxFileSize\n && validFileFormat(file, acceptFormat)\n\n return {\n isValid,\n errorMessage: file.size as number > maxFileSize\n ? 'File size is too big'\n : isValid\n ? ''\n : 'File format not supported',\n }\n}\n\nexport function getNewUploadingFiles<T extends FileFormat> (\n prev: T[],\n curr: T[],\n files: T[]\n) {\n let buffer = prev\n const prevIDs = prev ? prev.map((file) => file.name) : null\n const currentIDs = curr ? curr.map((file) => file.name) : null\n const removedItemsIDs =\n prevIDs && currentIDs && difference(prevIDs, currentIDs)\n const filesIDs = files.map((file) => file.name)\n\n if (removedItemsIDs) {\n if (\n removedItemsIDs.length === 0 ||\n intersection(removedItemsIDs, filesIDs).length > 0\n ) {\n buffer = curr\n } else {\n buffer.forEach((value, index) => {\n if (removedItemsIDs.includes(value.name)) {\n const updatedData = { ...value,\n uploaded: has('size', value) ? value.size : 0 }\n buffer[index] = updatedData\n }\n }\n )\n }\n } else {\n buffer = curr\n }\n return buffer\n}\n\nexport const generateId = () => Math.random().toString().substring(3)\n\nexport const isFile = (file: any) => 'File' in window && file instanceof File\n\nexport const isFileImage = <T extends FileWithType>(file: T) => {\n if (isFile(file)) {\n return getFileFormat(file) === 'image'\n }\n switch (getFileFormat(file)) {\n case 'image':\n case 'jpeg':\n case 'jpg':\n case 'png':\n case 'gif':\n case 'tiff':\n case 'jfif':\n return true\n default:\n return false\n }\n}\n\nexport const onlyAcceptsImages = (acceptFormat: string) => {\n if (acceptFormat === '*' || acceptFormat === '') {\n return false\n }\n const formats = getAcceptedFormats(acceptFormat)\n const extensions = getAcceptedExtensions(acceptFormat)\n\n const premiseOne = isEmpty(formats) || all((type: string) => type === 'image', formats)\n\n const premiseTwo = isEmpty(extensions)\n || all((type: string) => isFileImage({ type }), extensions)\n\n return premiseOne && premiseTwo\n}\n\nexport const createFileObject = <T extends FileFormat>(file: File): T => {\n const fileId = generateId()\n const fileObject = {\n _id: fileId,\n size: null,\n src: null,\n type: file.type,\n name: file.name,\n isUploading: true,\n isLazy: file.size > imageLazyThreshold && isFileImage(file),\n }\n return fileObject as T\n}\n\nexport const createPreviewFileObject = <T extends FileFormat>(file: File): T => {\n const fileId = generateId()\n const fileObject = {\n _id: fileId,\n size: file.size,\n src: URL.createObjectURL(file),\n type: file.type,\n name: file.name,\n isUploading: false,\n isLazy: false,\n }\n return fileObject as T\n}\n\nexport const createFileObjectFromSrc = <T extends FileWithSrcNameType>(file: T) => {\n const fileId = generateId()\n const fileObject = {\n _id: fileId,\n size: null,\n src: file.src,\n type: file.type,\n name: file.name,\n isUploading: false,\n isLazy: false,\n }\n return fileObject\n}\n\nexport const isOverflowing = (element: Element) => (element\n ? element.scrollHeight > element.clientHeight\n : false\n)\n\nexport const toBase64 = (file: File): Promise<string> => new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = () => resolve(reader.result as string)\n reader.onerror = (error) => reject(error)\n})\n\nconst correctFileExtension = (str: string) => test(/./g, str)\n\nconst getFileFormattedName = (file: File | FileFormat) => (correctFileExtension(file.name)\n ? file.name\n : `${file.name}.${getFileExtension(file)}`)\nexport const handleDownload = (file:\nFile | FileFormat | null | string | FileFormat\n) => () => {\n if (!file) return\n const anchor = document.createElement('a')\n anchor.href = isFile(file) ? URL.createObjectURL(file as File) : (file as FileFormat).src || ''\n anchor.download = isFile(file)\n ? 'downloaded-file.jpg'\n : getFileFormattedName(file as File)\n anchor.click()\n}\n","import React from 'react'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { FileIconButtonProps } from './types'\n\nexport const FileIconButton = ({\n icon,\n color = 'unset',\n ...rest\n}: FileIconButtonProps) => (\n <IconButton variant=\"ghost\" size=\"sm\" { ...rest }>\n <Icon as={ icon } boxSize=\"24px\" color={ color } />\n </IconButton>\n)\n","import React, { DragEvent, useEffect, useRef, useState } from 'react'\nimport { Fade, SlideFade, useMultiStyleConfig } from '@chakra-ui/react'\nimport {\n DownloadDuo,\n EditBoxDuo,\n FileBlankDuo,\n Image03Solid,\n TrashFullDuo,\n UploadCloudSolid,\n} from '@northlight/icons'\nimport { identity } from 'ramda'\nimport AvatarEditor from 'react-avatar-editor'\nimport { FileEditorModal } from './file-editor-modal'\nimport { ConfirmDeleteModal } from './confirm-delete-modal'\nimport { Icon } from '../icon'\nimport { Lead, P } from '../typography'\nimport { HStack, Stack } from '../stack'\nimport { FilePickerProps } from './types'\nimport { Input } from '../input'\nimport { Box } from '../box'\nimport { LoadingBar } from '../progress'\nimport { Spinner } from '../spinner'\nimport { Image } from '../image'\nimport { Clickable } from '../clickable'\nimport { useDisclosure } from '../../hooks'\nimport {\n compressImage,\n convertBlobToFile,\n handleDownload,\n isFile,\n isFileImage,\n isValidFile,\n onlyAcceptsImages,\n readableFileSize,\n} from './utils'\nimport { FileIconButton } from './file-icon-button'\nimport { defaultEditOptions, fiveHundredMB } from './constants'\nimport { useCurrentTheme } from '../../utils'\n\n/**\n * Lets user import file of any type as Javascript File Object\n * @see MultiFilePicker\n * @see {@link https://northlight.dev/reference/file-picker}\n *\n * @example (Example)\n * (?\n * <FilePicker />\n * ?)\n *\n *\n */\nexport const FilePicker = ({\n acceptFormat = '*',\n onChange = identity,\n compression,\n uploaded: uploadedInitial = 0,\n maxFileSize = fiveHundredMB,\n showProgress = false,\n value = '',\n loadWithSpinner = false,\n confirmDelete = false,\n editFileOptions = defaultEditOptions,\n sx = {},\n ...rest\n}: FilePickerProps) => {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const imageEditorRef = useRef<AvatarEditor>(null)\n const [ file, setFile ] = useState<File | null | string>(value)\n\n const [ isInvalid, setIsInvalid ] = useState(false)\n const [ name, setName ] = useState('')\n const editModal = useDisclosure()\n const deleteModal = useDisclosure()\n const [ editable, setEditable ] = useState(false)\n const [ hasLoaded, setHasLoaded ] = useState(false)\n const [ isLoading, setIsLoading ] = useState(false)\n const [ isImage, setIsImage ] = useState(true)\n const [ uploaded, setUploaded ] = useState(uploadedInitial)\n\n const onlyImageAccepted = onlyAcceptsImages(acceptFormat)\n\n const isUploading = uploaded < 1\n\n useEffect(() => {\n setUploaded(uploadedInitial)\n }, [ uploadedInitial ])\n\n useEffect(() => {\n if (!isUploading) {\n setIsLoading(false)\n setHasLoaded(true)\n }\n }, [ isUploading ])\n\n const currentTheme = useCurrentTheme()\n\n const { filePicker } = useMultiStyleConfig('FilePicker', {\n isImage,\n hasLoaded,\n isInvalid,\n currentTheme,\n sx,\n ...rest,\n })\n\n useEffect(() => {\n if (isInvalid) {\n setTimeout(() => {\n setIsInvalid(false)\n }, 1500)\n }\n }, [ isInvalid ])\n\n const handleOnClick = () => {\n if (fileInputRef.current && !file) {\n fileInputRef.current.click()\n }\n }\n\n const handleCrop = () => {\n if (imageEditorRef.current) {\n const canvas = imageEditorRef.current.getImageScaledToCanvas()\n canvas.toBlob((blob) => {\n if (file && blob) {\n const fileName = name\n || isFile(file)\n ? (file as File).name\n : 'downloaded-file'\n\n const fileType = isFile(file)\n ? (file as File).type\n : '.jpg'\n\n const newFile = convertBlobToFile(blob, fileName, fileType)\n setFile(newFile)\n setHasLoaded(true)\n onChange(newFile)\n }\n })\n editModal.onClose()\n }\n }\n\n const clearImage = () => {\n if (fileInputRef.current) {\n setIsInvalid(false)\n setName('')\n setFile(null)\n setIsImage(true)\n setHasLoaded(false)\n if (!showProgress) {\n setUploaded(0)\n }\n onChange(null)\n fileInputRef.current.value = ''\n }\n }\n\n const handleImageUpload = async (newImage: File | null) => {\n if (newImage) {\n setIsInvalid(false)\n const isFileTypeImage = isFileImage(newImage)\n setIsImage(isFileTypeImage)\n const compressedImage = isFileTypeImage\n ? ((await compressImage(\n newImage,\n compression?.width,\n compression?.height,\n compression?.quality\n )) as File)\n : newImage\n setFile(compressedImage)\n if (!showProgress) {\n setUploaded(1)\n }\n onChange(compressedImage)\n setIsLoading(isUploading)\n }\n }\n\n const handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n setIsInvalid(false)\n const newImage = e.target.files[0]\n handleImageUpload(newImage)\n }\n }\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault()\n if (e.dataTransfer.files) {\n const newFile = e.dataTransfer.files[0]\n if (isValidFile(newFile, acceptFormat, maxFileSize).isValid) {\n handleImageUpload(newFile)\n } else {\n setIsInvalid(true)\n }\n }\n }\n\n return (\n <Stack maxW={ filePicker.width as number } { ...rest }>\n <Clickable\n onClick={ handleOnClick }\n onDrop={ handleDrop }\n onDragOver={ (e: DragEvent) => e.preventDefault() }\n onMouseEnter={ () => setEditable(true) }\n onMouseLeave={ () => setEditable(false) }\n >\n <Box sx={ filePicker }>\n <SlideFade\n in={ hasLoaded }\n style={ {\n width: '100%',\n height: '100%',\n display: hasLoaded && isImage ? 'initial' : 'none',\n } }\n >\n <Image\n src={ file\n ? isFile(file)\n ? URL.createObjectURL(file as File)\n : file as string\n : '' }\n alt=\"preview-image\"\n objectFit=\"cover\"\n borderRadius={ 8 }\n display={ hasLoaded && isImage ? 'inherit' : 'none' }\n h=\"full\"\n w=\"full\"\n />\n </SlideFade>\n <Input\n type=\"file\"\n display=\"none\"\n accept={ acceptFormat }\n ref={ fileInputRef }\n onChange={ handleChange }\n />\n <Stack\n display={ hasLoaded && isImage ? 'none' : 'default' }\n alignItems=\"center\"\n w=\"85%\"\n spacing=\"0a\"\n >\n <Icon\n as={ onlyImageAccepted ? Image03Solid : UploadCloudSolid }\n boxSize=\"32px\"\n color={\n isInvalid\n ? 'destructive'\n : editable\n ? 'brand'\n : 'text.subdued'\n }\n display={ isImage && !hasLoaded ? 'inline-block' : 'none' }\n aria-label=\"file-icon-upload\"\n />\n <Icon\n as={ FileBlankDuo }\n boxSize=\"32px\"\n color=\"gray.300\"\n display={ hasLoaded && !isImage ? 'inline-block' : 'none' }\n />\n <P\n variant={ isInvalid ? '16' : '14' }\n whiteSpace=\"nowrap\"\n textOverflow=\"ellipsis\"\n overflow=\"hidden\"\n maxWidth={ filePicker.width as number }\n textAlign=\"center\"\n alignSelf=\"center\"\n >\n { isInvalid\n ? 'File not supported'\n : file && isFile(file)\n ? (file as File).name\n : `Drag & drop ${onlyImageAccepted ? 'image' : 'file'} or` }\n </P>\n <Lead\n sx={ {\n textDecoration: 'underline',\n color: isInvalid ? 'destructive' : 'brand',\n } }\n display={ isLoading || hasLoaded ? 'none' : 'default' }\n >\n Click to upload\n </Lead>\n <Box display={ isLoading ? 'block' : 'none' } pt={ 1 }>\n { loadWithSpinner\n ? <Spinner />\n : <LoadingBar loaded={ uploaded } />\n }\n </Box>\n </Stack>\n <Fade\n in={ hasLoaded && editable }\n style={ {\n display: hasLoaded && editable ? 'flex' : 'none',\n justifyContent: 'center',\n } }\n >\n <HStack\n spacing={ 2 }\n position=\"absolute\"\n bottom=\"3\"\n justifyContent=\"center\"\n bgColor=\"bg.layer\"\n borderRadius={ 6 }\n width=\"44\"\n py={ 2 }\n >\n { editFileOptions.canEdit && (\n <FileIconButton\n aria-label=\"edit-file\"\n onClick={ editModal.onOpen }\n icon={ EditBoxDuo }\n />\n ) }\n <FileIconButton\n aria-label=\"download-file\"\n onClick={ handleDownload(file) }\n icon={ DownloadDuo }\n />\n <FileIconButton\n aria-label=\"delete-file\"\n onClick={ confirmDelete ? deleteModal.onOpen : clearImage }\n icon={ TrashFullDuo }\n color=\"destructive\"\n />\n </HStack>\n </Fade>\n <P\n variant=\"14\"\n sx={ { color: 'gray.400' } }\n display={\n hasLoaded && !isImage && !isLoading\n ? 'inline-block'\n : 'none'\n }\n >\n { isFile(file) && readableFileSize((file as File)?.size as number) }\n </P>\n\n </Box>\n </Clickable>\n <FileEditorModal\n { ...editModal }\n fileName={ name }\n setFileName={ setName }\n image={ file }\n handleCrop={ handleCrop }\n isImage={ isImage }\n ref={ imageEditorRef }\n canEditFileName={ editFileOptions.canEditName }\n canCropImage={ editFileOptions.canEditImage }\n />\n <ConfirmDeleteModal\n { ...deleteModal }\n confirmDelete={ clearImage }\n fileName={ name || 'file' }\n />\n </Stack>\n )\n}\n","import React, { useState } from 'react'\nimport { identity } from 'ramda'\nimport { Field } from '../form'\nimport { FilePicker } from './file-picker'\nimport { toBase64 } from './utils'\nimport { FilePickerFieldProps } from './types'\n\n/**\n * The file picker component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see FilePicker\n * @see Field\n * @see {@link https://northlight.dev/reference/file-picker-field}\n *\n * @example (Example)\n * ## Meant for uploading images in a form\n * Where they handled as base64 string\n * (?\n * <Form initialValues={{image: ''}}>\n * {({watch}) => (\n * <Stack>\n * <FilePickerField name=\"image\" />\n * <Code maxH=\"xs\" overflowY=\"scroll\">{JSON.stringify(watch(), null, 2)}</Code>\n * </Stack>\n * )}\n * </Form>\n *\n * ?)\n *\n */\nexport const FilePickerField = ({\n name,\n label,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}: FilePickerFieldProps) => {\n const [ uploaded, setUploaded ] = useState(0)\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ onChange, value }) => (\n <FilePicker\n onChange={ async (file: File | null) => {\n if (file) {\n const formattedFile = await toBase64(file)\n setUploaded(1)\n onChange(formattedFile)\n onChangeCallback(formattedFile)\n } else {\n setUploaded(0)\n onChange(null)\n onChangeCallback(null)\n }\n } }\n value={ value }\n uploaded={ value ? 1 : uploaded }\n loadWithSpinner={ true }\n acceptFormat=\"image/*\"\n { ...rest }\n />\n ) }\n </Field>\n )\n}\n","import React, { DragEvent, useEffect, useRef, useState } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { filter, identity } from 'ramda'\nimport { Image03Solid, UploadCloudSolid } from '@northlight/icons'\nimport { Box } from '../box'\nimport { Icon } from '../icon'\nimport { Input } from '../input'\nimport {\n compressImage,\n createFileObject,\n createPreviewFileObject,\n isFileImage,\n isValidFile,\n onlyAcceptsImages,\n readableFileSize,\n} from './utils'\nimport { Clickable } from '../clickable'\nimport { HStack, Stack } from '../stack'\nimport { Lead, P } from '../typography'\nimport { fiveHundredMB } from './constants'\nimport { FileFormat, MultiFileUploaderProps } from './types'\nimport { useCurrentTheme } from '../../utils'\n\n/**\n * Input to upload multiple files without ui to render files\n * @see MultiFilePicker\n * @see {@link https://northlight.dev/reference/multi-file-uploader}\n * @example\n * (?\n * () => {\n * const [ images, setImages ] = useState([])\n * return (\n * <Stack>\n <Box h=\"sm\">\n <Carousel>\n { images.map((imageSrc) => (\n <Image src={imageSrc} borderRadius=\"md\" />\n )) }\n </Carousel>\n </Box>\n <MultiFileUploader\n acceptFormat=\"image/*\"\n onChange={ (newFiles) =>\n setImages(\n newFiles.map((file) => URL.createObjectURL(file))\n )\n }\n />\n </Stack>\n * )\n * }\n * ?)\n *\n */\nexport function MultiFileUploader<T extends FileFormat> ({\n acceptFormat = '*',\n compression,\n onChange = identity,\n addFilesToQueue = identity,\n updatePreviewFiles = identity,\n maxFileSize = fiveHundredMB,\n ...rest\n}: MultiFileUploaderProps<T>) {\n const inputRef = useRef<HTMLInputElement>(null)\n const [ isInvalid, setIsInvalid ] = useState(false)\n const currentTheme = useCurrentTheme()\n const { multiFilePicker } = useMultiStyleConfig('FilePicker', { isInvalid, currentTheme, ...rest })\n const [ active, setActive ] = useState(false)\n const [ errorMessage, setErrorMessage ] = useState('')\n\n const onlyImageAccepted = onlyAcceptsImages(acceptFormat)\n\n useEffect(() => {\n if (isInvalid) {\n setTimeout(() => {\n setIsInvalid(false)\n }, 1500)\n }\n }, [ isInvalid ])\n\n const toggleHover = () => {\n setActive((prev) => !prev)\n }\n\n const handleClick = () => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }\n\n const updateMultipleFiles = async (newFiles: FileList) => {\n const filesArr: File[] = Array.prototype.slice.call(newFiles)\n const validFiles = filter((file) => {\n const fileCheck = isValidFile(file, acceptFormat, maxFileSize)\n if (!fileCheck.isValid) {\n setErrorMessage(fileCheck.errorMessage || '')\n }\n return fileCheck.isValid\n }, filesArr)\n if (filesArr.length > 0 && validFiles.length === 0) {\n setIsInvalid(true)\n }\n\n addFilesToQueue(validFiles.map((file) => createFileObject(file)))\n updatePreviewFiles(validFiles.map((file) => createPreviewFileObject(file)))\n const compressedFiles = validFiles.map(\n async (file) => (isFileImage(file)\n ? compressImage(\n file,\n compression?.width,\n compression?.height,\n compression?.quality\n ) as File\n : file)\n )\n Promise.all(compressedFiles).then((values) => {\n onChange(values)\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n })\n }\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault()\n updateMultipleFiles(e.dataTransfer.files)\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n updateMultipleFiles(e.target.files)\n }\n }\n return (\n <Clickable\n onClick={ handleClick }\n onDragOver={ (e: DragEvent) => e.preventDefault() }\n onDrop={ handleDrop }\n onMouseEnter={ toggleHover }\n onMouseLeave={ toggleHover }\n >\n <Box sx={ multiFilePicker } { ...rest }>\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n h=\"full\"\n w=\"full\"\n spacing={ 0 }\n >\n <Icon\n as={ onlyImageAccepted ? Image03Solid : UploadCloudSolid }\n boxSize=\"32px\"\n color={\n isInvalid\n ? 'destructive'\n : active\n ? 'brand'\n : 'text.subdued'\n }\n aria-label=\"image-icon-upload\"\n mb={ onlyImageAccepted ? '0a' : 0 }\n />\n <HStack spacing={ 1 } display={ isInvalid ? 'none' : 'flex' }>\n <P variant=\"14\" textAlign=\"center\" alignSelf=\"center\">\n Drag & drop { onlyImageAccepted ? 'images' : 'files' } here or\n </P>\n <Lead sx={ { textDecoration: 'underline', color: 'brand' } }>\n choose { onlyImageAccepted ? 'image' : 'file' }\n </Lead>\n </HStack>\n <P variant=\"14\" textAlign=\"center\" alignSelf=\"center\" display={ isInvalid ? 'initial' : 'none' }>\n { errorMessage }\n </P>\n <P variant=\"14\" sx={ { color: 'gray.400' } }>\n Max file size is { readableFileSize(maxFileSize) }\n </P>\n </Stack>\n <Input\n type=\"file\"\n display=\"none\"\n accept={ acceptFormat }\n onChange={ handleChange }\n multiple={ true }\n ref={ inputRef }\n />\n </Box>\n </Clickable>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { identity } from 'ramda'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { DownloadDuo, EditBoxDuo, FileBlankDuo, Image03Duo } from '@northlight/icons'\nimport AvatarEditor from 'react-avatar-editor'\nimport { Icon } from '../icon'\nimport { SlideFade } from '../transitions'\nimport { P } from '../typography'\nimport { HStack, Stack } from '../stack'\nimport { convertBlobToFile, getImageAsFile, handleDownload, isFileImage, readableFileSize } from './utils'\nimport { Box } from '../box'\nimport { Image as ChakraImage } from '../image'\nimport { useDisclosure } from '../../hooks'\nimport { CloseButton } from '../close-button'\nimport { LoadingBar } from '../progress'\nimport { ConfirmDeleteModal } from './confirm-delete-modal'\nimport { FileEditorModal } from './file-editor-modal'\nimport { FileIconButton } from './file-icon-button'\nimport { FileFormat, FileItemProps } from './types'\nimport { defaultEditOptions } from './constants'\n\nexport function FileItem<T extends FileFormat> ({\n onChangeCallback,\n addFile = identity,\n deleteFile,\n file,\n confirmDelete = true,\n isLazy = false,\n editFileOptions = defaultEditOptions,\n}: FileItemProps<T>) {\n const { canEdit, canEditImage, canEditName } = editFileOptions\n const { fileItem } = useMultiStyleConfig('FilePicker')\n const editModalDisclosure = useDisclosure()\n const deleteModalDisclosure = useDisclosure()\n const imageEditorRef = useRef<AvatarEditor>(null)\n const [ fileName, setFileName ] = useState('')\n const [ show, setShow ] = useState(true)\n const [ hasLoaded, setHasLoaded ] = useState(false)\n const [ loadingImage, setLoadingImage ] = useState(true)\n\n useEffect(() => {\n if (file.src) {\n const buffer = new Image()\n buffer.src = file.src\n buffer.onload = () => {\n setLoadingImage(false)\n }\n }\n }, [ file.isUploading ])\n\n const handleCrop = async () => {\n if (imageEditorRef.current && isFileImage(file)) {\n const canvas = imageEditorRef.current.getImageScaledToCanvas()\n canvas.toBlob(async (blob) => {\n if (file && blob) {\n const newFile = convertBlobToFile(blob, fileName || file.name, file.type)\n deleteFile(file)\n addFile(newFile, file._id)\n onChangeCallback([ newFile ])\n }\n })\n editModalDisclosure.onClose()\n } else if (file.src) {\n const newFile = await getImageAsFile(file, fileName)\n deleteFile(file)\n addFile(newFile, file._id)\n onChangeCallback([ newFile ])\n }\n }\n\n const clearImage = () => {\n setShow(false)\n setTimeout(() => {\n deleteFile(file)\n }, 500)\n }\n\n return (\n <SlideFade\n in={ show }\n direction=\"left\"\n offset={ 30 }\n enterDuration={ !isLazy ? 300 : 1 }\n exitDuration={ 300 }\n >\n <Box sx={ fileItem }>\n <HStack\n w=\"full\"\n h=\"full\"\n borderRadius={ 6 }\n alignItems=\"center\"\n justifyContent=\"space-between\"\n px={ 2 }\n pt={ file.isUploading && !hasLoaded ? 2 : 0 }\n >\n <HStack spacing={ 4 } alignItems=\"start\" maxW=\"50%\">\n { isFileImage(file)\n ? file.isUploading || loadingImage\n ? (\n <Icon\n as={ Image03Duo }\n bgColor=\"gray.100\"\n color=\"gray.400\"\n boxSize=\"10\"\n borderRadius=\"8\"\n p=\"2\"\n />\n )\n : (\n <ChakraImage\n src={ file.src || '' }\n alt=\"preview-image\"\n objectFit=\"cover\"\n display={ file.src ? 'inherit' : 'none' }\n borderRadius=\"8\"\n boxSize=\"10\"\n />\n )\n : (\n <Icon\n as={ FileBlankDuo }\n boxSize=\"10\"\n p=\"1\"\n color=\"gray.300\"\n />\n )\n }\n <Stack\n alignItems=\"start\"\n justifyContent=\"start\"\n spacing=\"0\"\n maxW=\"100%\"\n >\n <P\n variant=\"14\"\n whiteSpace=\"nowrap\"\n textOverflow=\"ellipsis\"\n overflow=\"hidden\"\n maxW=\"100%\"\n >\n { file?.name }\n </P>\n <P variant=\"14\" sx={ { color: 'gray.400' } }>\n { file?.size && readableFileSize(file.size) }\n </P>\n </Stack>\n </HStack>\n <HStack\n spacing=\"3\"\n justifyContent=\"center\"\n borderRadius=\"6\"\n bgColor=\"bg.filled\"\n display={ file.isUploading ? 'none' : 'flex' }\n p=\"1\"\n >\n { canEdit && (\n <FileIconButton\n aria-label=\"Edit-image\"\n onClick={ editModalDisclosure.onOpen }\n icon={ EditBoxDuo }\n />\n ) }\n <FileIconButton\n aria-label=\"download-image\"\n onClick={ handleDownload(file) }\n icon={ DownloadDuo }\n />\n <CloseButton\n onClick={ confirmDelete ? deleteModalDisclosure.onOpen : clearImage }\n />\n </HStack>\n </HStack>\n <Box\n w=\"full\"\n pl=\"16\"\n pr=\"4\"\n pb=\"2\"\n mt=\"-2\"\n display={ file.isUploading ? 'block' : 'none' }\n >\n <LoadingBar\n loaded={ file.size ? (file?.uploaded || 0) / file.size : 0 }\n onLoadEnd={ () => setHasLoaded(true) }\n />\n </Box>\n { canEdit && (\n <FileEditorModal\n { ...editModalDisclosure }\n fileName={ fileName || file.name }\n setFileName={ setFileName }\n image={ file.src }\n canCropImage={ canEditImage }\n canEditFileName={ canEditName }\n handleCrop={ handleCrop }\n isImage={ isFileImage(file) }\n ref={ imageEditorRef }\n />\n ) }\n <ConfirmDeleteModal\n { ...deleteModalDisclosure }\n confirmDelete={ clearImage }\n fileName={ fileName || file.name }\n />\n </Box>\n </SlideFade>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { any, identity, map } from 'ramda'\nimport { FileItem } from './file-item'\nimport { Stack } from '../stack'\nimport { createPreviewFileObject, getNewUploadingFiles, isFile, isOverflowing } from './utils'\nimport { FileFormat, MultiFileListProps } from './types'\nimport { defaultEditOptions } from './constants'\n\n/**\n * Show list of files, their uploading progress as well as options to edit/delete them\n * @see MultiFileUploader\n * @see MultiFilePicker\n * @see {@link https://northlight.dev/multi-file-list}\n *\n */\nexport function MultiFileList<T extends FileFormat> ({\n files,\n uploadingFiles,\n onChange = identity,\n deleteFile = identity,\n addFile = identity,\n confirmDelete,\n editFileOptions = defaultEditOptions,\n enableSmartLoad = true,\n ...rest\n}: MultiFileListProps<T>) {\n const [ uploadingFilesReference, setUploadingFilesReference ] = useState(uploadingFiles)\n const [ overflowing, setOverflowing ] = useState(false)\n\n const formattedFiles = files?.map((file) => (\n isFile(file)\n ? createPreviewFileObject(file as unknown as File)\n : file\n ))\n\n const listRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (uploadingFiles && uploadingFilesReference && files) {\n if (enableSmartLoad) {\n const newVal = getNewUploadingFiles<T>(uploadingFilesReference, uploadingFiles, files)\n setUploadingFilesReference(newVal)\n } else {\n setUploadingFilesReference(uploadingFiles)\n }\n }\n if (listRef.current) {\n setOverflowing(isOverflowing(listRef.current))\n }\n }, [ uploadingFiles, files ])\n\n const isLazy = uploadingFilesReference\n ? any((file: T) => file.isLazy || false, uploadingFilesReference as T[])\n : false\n\n return (\n <Stack\n ref={ listRef }\n spacing={ 2 }\n maxH=\"sm\"\n pr={ overflowing ? 2 : 0 }\n overflowY=\"auto\"\n { ...rest }\n >\n { uploadingFilesReference && map((file) => (\n <FileItem\n onChangeCallback={ onChange }\n file={ file }\n key={ file._id }\n deleteFile={ deleteFile }\n confirmDelete={ confirmDelete }\n isLazy={ isLazy }\n editFileOptions={ editFileOptions }\n />\n ), uploadingFilesReference) }\n { formattedFiles && map((file) => (\n <FileItem\n onChangeCallback={ onChange }\n addFile={ addFile }\n file={ file }\n key={ file._id }\n deleteFile={ deleteFile }\n confirmDelete={ confirmDelete }\n editFileOptions={ editFileOptions }\n />\n ), formattedFiles) }\n </Stack>\n )\n}\n","import React, { useState } from 'react'\nimport { findIndex, identity, insert, isEmpty, isNil, remove } from 'ramda'\nimport { MultiFileList } from './multi-file-list'\nimport { createPreviewFileObject } from './utils'\nimport { MultiFileUploader } from './multi-file-uploader'\nimport { Stack } from '../stack'\nimport { defaultEditOptions, fiveHundredMB } from './constants'\nimport { FileFormat, MultiFilePickerProps } from './types'\n\n/**\n * Lets user import file of any type as Javascript File Object\n * @see FilePicker\n * @see {@link https://northlight.dev/reference/multi-file-picker}\n *\n * @example (Example)\n * (?\n * <MultiFilePicker />\n * ?)\n * ## For more information, view: <a href=\"https://northlight.dev/components/file%20picker\">guide</a>\n *\n *\n */\nexport function MultiFilePicker<T extends FileFormat> ({\n acceptFormat = '*',\n compression,\n onChange = identity,\n files = null,\n uploadingFiles,\n deleteFile = null,\n confirmDelete = true,\n maxFileSize = fiveHundredMB,\n enablePreLoad = true,\n enableSmartLoad = true,\n editFileOptions = defaultEditOptions,\n variant,\n ...rest\n}: MultiFilePickerProps<T>) {\n const [ bufferFiles, setBufferFiles ] = useState<T[]>([])\n const [ previewFiles, setPreviewFiles ] = useState<T[]>([])\n\n const getIndexById = (id: string) => findIndex((file) => file._id === id, previewFiles)\n\n const addFile = (file: File, id: string) => {\n const addedFile = createPreviewFileObject(file)\n const indexOfChanged = getIndexById(id)\n const newPreviewFiles = remove(indexOfChanged, 1, previewFiles)\n const newFiles = insert(indexOfChanged, addedFile, newPreviewFiles)\n setPreviewFiles(newFiles as T[])\n }\n\n const handleDelete = (file: T | FileFormat) => {\n const indexOfRemoved = getIndexById(file._id)\n const newPreviewFiles = remove(indexOfRemoved, 1, previewFiles)\n setPreviewFiles(newPreviewFiles)\n }\n\n const updateQueuedFiles = (queuedFiles: T[]) => {\n if (enablePreLoad) {\n setBufferFiles(queuedFiles)\n }\n }\n\n return (\n <Stack\n spacing={ 4 }\n maxW=\"inherit\"\n maxH=\"inherit\"\n { ...rest }\n >\n <MultiFileUploader\n acceptFormat={ acceptFormat }\n compression={ compression }\n onChange={ onChange }\n addFilesToQueue={ updateQueuedFiles }\n updatePreviewFiles={ setPreviewFiles }\n maxFileSize={ maxFileSize }\n variant={ variant }\n />\n <MultiFileList\n files={ files || previewFiles }\n onChange={ onChange }\n uploadingFiles={\n isEmpty(files) && (uploadingFiles?.length === 0 || isNil(uploadingFiles))\n ? bufferFiles\n : uploadingFiles\n }\n deleteFile={ deleteFile || handleDelete }\n confirmDelete={ confirmDelete }\n enableSmartLoad={ enableSmartLoad }\n editFileOptions={ editFileOptions }\n addFile={ addFile }\n />\n </Stack>\n )\n}\n","import React from 'react'\nimport { concat, findIndex, identity, isEmpty, map, remove } from 'ramda'\nimport { Field } from '../form'\nimport { MultiFilePicker } from './multi-file-picker'\nimport { createFileObjectFromSrc, isFile, toBase64 } from './utils'\nimport { FileFormat, MultiFilePickerFieldProps } from './types'\n\n/**\n * The multi file picker component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see MultiFilePicker\n * @see Field\n * @see {@link https://northlight.dev/reference/multi-file-picker-field}\n *\n * @example (Example)\n * ## Meant for uploading images in a form\n * Where they handled as base64 strings\n * (?\n * <Form initialValues={{images: []}}>\n * {({watch}) => (\n * <Stack>\n * <MultiFilePickerField name=\"images\" />\n * <Code maxH=\"xs\" overflowY=\"scroll\">{JSON.stringify(watch(), null, 2)}</Code>\n * </Stack>\n * )}\n * </Form>\n *\n * ?)\n *\n */\nexport const MultiFilePickerField = ({\n name,\n label,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}: MultiFilePickerFieldProps) => {\n const getFiles = (sources: string[]) => {\n const buffer = map((source) => ({\n type: 'jpg',\n src: source,\n name: '',\n }), sources)\n const formattedFiles = map((file) => (isFile(file)\n ? file : createFileObjectFromSrc(file)), buffer)\n return formattedFiles as FileFormat[]\n }\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ onChange, value }) => {\n const handleDelete = (file: FileFormat) => {\n const removedIndex = findIndex((src) => src === file.src, value)\n const newValues = remove(removedIndex, 1, value)\n onChange(newValues)\n }\n\n return (\n <MultiFilePicker\n onChange={ async (files: File[] | null) => {\n if (!isEmpty(files)) {\n const newFiles = files?.map(async (file) => toBase64(file))\n if (newFiles) {\n Promise.all(newFiles).then((values) => {\n onChange(concat(value, values))\n onChangeCallback(values)\n })\n }\n } else {\n onChange([])\n onChangeCallback([])\n }\n } }\n enablePreLoad={ false }\n enableSmartLoad={ false }\n deleteFile={ handleDelete }\n acceptFormat=\"image/*\"\n editFileOptions={ { canEdit: true, canEditImage: true, canEditName: false } }\n confirmDelete={ false }\n files={ getFiles(value) }\n { ...rest }\n />\n )\n } }\n </Field>\n )\n}\n","import React from 'react'\nimport { ChakraProvider } from '@chakra-ui/react'\nimport { theme as webappTheme } from '../../theme'\nimport { MediatoolThemeProviderProps } from './types'\nimport { CustomTheme } from '../../utils/use-current-theme'\n\n/**\n * Should be at the root of you project, wraps the app in the theme context\n * @see {@link https://northlight.dev/reference/mediatool-theme-provider}\n *\n * @example\n * Should pass down a theme from northlight/ui, currently exports two themes:\n * * theme - light mode\n * * tottTheme - dark mode\n *\n *\n */\nexport const MediatoolThemeProvider = ({\n children,\n theme = webappTheme,\n themeName = 'webappTheme',\n}: MediatoolThemeProviderProps) => (\n <ChakraProvider resetCSS={ true } theme={ theme }>\n <CustomTheme.Provider value={ themeName }>\n { children }\n </CustomTheme.Provider>\n </ChakraProvider>\n)\n","import React from 'react'\nimport { Menu as ChakraMenu } from '@chakra-ui/react'\nimport { MenuProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/menu}\n *\n * @example (Example)\n * ##Clean menu with different options\n * The menu can be `relaxed` for primary menus, and `compact` for secodnary menus.\n * <br />\n * (?\n * +\n * const MyMenuComponent = () => {\n * const [selectedLabel, setSelectedLabel] = useState('Compare periods');\n *\n * const menuOptions = {\n * '1': 'No Comparison',\n * '2': 'Report date range',\n * '3': 'Previous week',\n * '4': 'Previous quarter',\n * '5': 'Previous month',\n * '6': 'Previous year',\n * '7': 'Previous period',\n *\n * }\n *\n * const handleMenuItemClick = (value) => {\n * setSelectedLabel(menuOptions[value] || 'Compare periods');\n * }\n *\n * return (\n * <Menu variant=\"relaxed\" closeOnSelect={false}>\n * <MenuButton\n * as={Button}\n * leftIcon={<VersionsDuo /> }\n * variant=\"brand\"\n * rightIcon={<ChevronDownDuo />}\n * >\n * { selectedLabel }\n * </MenuButton>\n * <MenuList>\n * <MenuOptionGroup onChange={ handleMenuItemClick } defaultValue=\"1\" type=\"radio\">\n * <MenuItemOption value=\"1\">No Comparison</MenuItemOption>\n * <MenuDivider />\n * <MenuItemOption isDisabled={true} value=\"2\">\n * <Box>\n * <Text>Report date range</Text>\n * <Text fontSize=\"xs\" color=\"text.subdued\">\n * 12-12-2022 01-01-23\n * </Text>\n * </Box>\n * </MenuItemOption>\n * <MenuDivider />\n * <MenuItemOption value=\"3\">Previous week</MenuItemOption>\n * <MenuItemOption value=\"4\">Previous quarter</MenuItemOption>\n * <MenuItemOption value=\"5\">Previous month</MenuItemOption>\n * <MenuItemOption value=\"6\">Previous year</MenuItemOption>\n * <MenuItemOption value=\"7\">Previous period</MenuItemOption>\n * </MenuOptionGroup>\n *<MenuDivider />\n * <MenuItem sx={ { placeContent: 'space-between' } }>\n * Custom Date\n * <Icon as={ ChevronRightDuo } aligh=\"right\" />\n * </MenuItem>\n * </MenuList>\n* </Menu>\n* )\n*\n* }\n*\n* render(<MyMenuComponent/>)\n* ?)\n*\n* @example (Example)\n* ##Menu with Group titles\n* To group related MenuItems, use the MenuGroup component and pass it a title for the group name\n* <br />\n* (?\n * <Menu closeOnSelect={false}>\n * <MenuButton as={Button} rightIcon={<ChevronDownDuo />}>\n * Actions\n * </MenuButton>\n * <MenuList minWidth='240px'>\n * <MenuOptionGroup defaultValue='asc' title='Order' type='radio'>\n * <MenuItemOption value='asc'>Ascending</MenuItemOption>\n * <MenuItemOption value='desc'>Descending</MenuItemOption>\n * </MenuOptionGroup>\n * <MenuDivider />\n * <MenuOptionGroup title='Country' type='checkbox'>\n * <MenuItemOption value='email'>Email</MenuItemOption>\n * <MenuItemOption value='phone'>Phone</MenuItemOption>\n * <MenuItemOption value='country'>Country</MenuItemOption>\n * </MenuOptionGroup>\n * </MenuList>\n* </Menu>\n* ?)\n*\n*/\n\nexport const Menu = ({ variant = 'relaxed', ...props }: MenuProps) => (\n <ChakraMenu variant={ variant } { ...props } />\n)\n","import React from 'react'\nimport {\n NumberInputStepper as ChakraNumberInputStepper,\n NumberDecrementStepper,\n NumberIncrementStepper,\n} from '@chakra-ui/react'\nimport { ChevronDownSolid, ChevronUpSolid } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { HStack } from '../stack'\nimport { Divider } from '../divider'\nimport { P } from '../typography'\nimport { Center } from '../center'\nimport { NumberInputStepperProps } from './types'\n\nexport const NumberInputStepper = ({\n includePercentage = false,\n enableStepperArrows = false,\n}: NumberInputStepperProps) => (\n <ChakraNumberInputStepper>\n <HStack alignItems=\"center\" h=\"full\">\n { includePercentage && (\n <Center bgColor=\"bg.layer\" borderRadius=\"md\" boxSize=\"6\">\n <P>%</P>\n </Center>\n ) }\n { enableStepperArrows && (\n <HStack alignItems=\"center\" h=\"full\">\n <Divider orientation=\"vertical\" h=\"50%\" />\n <NumberIncrementStepper border=\"none\">\n <Icon\n as={ ChevronUpSolid }\n color=\"icon.input-stepper.default\"\n boxSize={ 4 }\n />\n </NumberIncrementStepper>\n <NumberDecrementStepper>\n <Icon\n as={ ChevronDownSolid }\n color=\"icon.input-stepper.default\"\n boxSize={ 4 }\n />\n </NumberDecrementStepper>\n </HStack>\n ) }\n </HStack>\n </ChakraNumberInputStepper>\n)\n","import { head, isNil, last, length, match, split } from 'ramda'\n\nconst regex = /(9{13,}|0{13,})(\\d)*$/gm\n\nexport const advancedParseFloat = (value: number | string) => {\n if (isNil(value) || Number.isNaN(parseFloat(value as string))) {\n return value\n }\n\n const splitValue = split('.', `${value}`)\n const intPart = head(splitValue)\n const decimalPart = last(splitValue)\n\n if (isNil(decimalPart)) {\n return value\n }\n\n const roundingError = match(regex, decimalPart)\n if (isNil(roundingError)) {\n return value\n }\n\n const decimalsErrorLength = length(head(roundingError) as string)\n const correctDecimalsLength = decimalPart.length - decimalsErrorLength\n\n return parseFloat(\n parseFloat(`${intPart}.${decimalPart}`)\n .toFixed(correctDecimalsLength)\n )\n}\n","import React, { ChangeEvent } from 'react'\nimport {\n NumberInput as ChakraNumberInput,\n NumberInputField,\n} from '@chakra-ui/react'\nimport { defaultTo, identity, path } from 'ramda'\nimport { NumberInputStepper } from './number-input-stepper'\nimport { NumberInputProps } from './types'\nimport { advancedParseFloat } from './advanced-parse-float'\n\n/**\n * Basic accessible input that only allows numbers, with support for arrow keys,\n * min max values and percentages\n *\n * @example\n * (?\n * <Box p=\"3\">\n * <NumberInput max={100} min={0} step={3} onlyAcceptPercentage={true} enableStepperArrows={true}/>\n * </Box>\n * ?)\n *\n */\nexport const NumberInput = ({\n variant = 'default',\n size = 'md',\n onChange = identity,\n onInputChange = identity,\n enableStepperArrows = false,\n name,\n onlyAcceptPercentage = false,\n ...rest\n}: NumberInputProps) => {\n const percentageProps = onlyAcceptPercentage && {\n step: 0.1,\n }\n\n const percentageFactor = onlyAcceptPercentage ? 0.01 : 1\n const handleChange = (e: ChangeEvent<HTMLInputElement> | string) => {\n const input = defaultTo(e, path([ 'target', 'value' ], e)) as string\n onInputChange(input)\n\n const value = advancedParseFloat(parseFloat(input) * percentageFactor)\n\n const filteredNaN = Number.isNaN(value)\n ? ''\n : value\n\n onChange(`${filteredNaN}`)\n }\n\n return (\n <ChakraNumberInput\n variant={ variant }\n size={ size }\n onChange={ handleChange }\n id={ name }\n { ...percentageProps }\n { ...rest }\n >\n <NumberInputField onChange={ handleChange } />\n <NumberInputStepper\n includePercentage={ onlyAcceptPercentage }\n enableStepperArrows={ enableStepperArrows }\n />\n </ChakraNumberInput>\n )\n}\n","import React, { forwardRef, useState } from 'react'\nimport { identity, isNil } from 'ramda'\nimport { NumberInputFieldProps } from './types'\nimport { Field } from '../form'\nimport { NumberInput } from './number-input'\nimport { advancedParseFloat } from './advanced-parse-float'\nimport { InputGroupWrapper } from '../../internal-components/input-group-wrapper/input-group-wrapper'\n\n/**\n * The number input component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see NumberInput\n * @see {@link https://northlight.dev/reference/number-input-field}\n *\n */\nexport const NumberInputField = forwardRef<HTMLDivElement, NumberInputFieldProps>(({\n name,\n label,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n onlyAcceptPercentage = false,\n inputLeftElement,\n inputRightElement,\n ...rest\n}, ref) => {\n const formatNumber = (value: number, factor: number) => (\n onlyAcceptPercentage\n ? advancedParseFloat(value * factor)\n : value\n )\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => {\n const initialValue = isNil(value) || Number.isNaN(parseFloat(value))\n ? ''\n : formatNumber(value, 100)\n\n const [ displayValue, setDisplayValue ] = useState(initialValue)\n\n return (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <NumberInput\n name={ name }\n data-testid=\"number-input-field-test-id\"\n onInputChange={ (v) => {\n setDisplayValue(v)\n const parsed = formatNumber(parseFloat(v), 0.01)\n\n onChange(parsed)\n onChangeCallback(parsed)\n } }\n value={ displayValue }\n onlyAcceptPercentage={ onlyAcceptPercentage }\n { ...rest }\n />\n </InputGroupWrapper>\n )\n } }\n </Field>\n )\n})\n","import React, { forwardRef, useState } from 'react'\nimport { Box, useMultiStyleConfig } from '@chakra-ui/react'\nimport { Blinker } from '../blinker'\nimport { IconButton } from '../icon-button'\nimport { NotificationIconButtonProps } from './types'\n\n/**\n * A custom component that composes the IconButton and Blinker components.\n * The notification blinker blinks on hover.\n * @see {@link https://northlight.dev/reference/notification-icon-button}\n *\n * @example\n * (?\n * <Box w=\"min-content\">\n<NotificationIconButton\n variant=\"brand\"\n aria-label=\"conversations\"\n icon={ <Icon as={ ConversationDuo } /> }\n hasNotification={ true }\n size=\"lg\"\n/>\n</Box>\n * ?)\n */\nexport const NotificationIconButton = forwardRef(({\n variant = 'ghost',\n icon,\n 'aria-label': ariaLabel,\n hasNotification = false,\n blinkerColor = 'green.500',\n size,\n ...rest\n}: NotificationIconButtonProps, ref: any) => {\n const [ isBlinking, setIsBlinking ] = useState(false)\n const { container, notifier } = useMultiStyleConfig('NotificationIconButton', { size, variant })\n return (\n <Box\n onMouseEnter={ () => setIsBlinking(true) }\n onMouseLeave={ () => setIsBlinking(false) }\n sx={ container }\n >\n { hasNotification && (\n <Box sx={ notifier }>\n <Blinker isBlinking={ isBlinking } color={ blinkerColor } size=\"2xs\" />\n </Box>\n ) }\n <IconButton\n variant={ variant }\n icon={ icon }\n aria-label={ ariaLabel }\n ref={ ref }\n size={ size }\n { ...rest }\n />\n </Box>\n )\n})\n","import React from 'react'\nimport { PinInput as ChakraPinInput } from '@chakra-ui/react'\nimport { PinInputProps } from './types'\n\n/**\n * For entering numbers in ex two factor authentication\n * @see {@link https://northlight.dev/reference/pin-input}\n * @example\n * (?\n <HStack p=\"1\">\n <PinInput>\n <PinInputField />\n <PinInputField />\n <PinInputField />\n <PinInputField />\n </PinInput>\n </HStack>\n * ?)\n *\n *\n */\nexport const PinInput = ({\n variant = 'outline',\n hidden,\n children,\n ...rest\n}: PinInputProps) => (\n <ChakraPinInput { ...rest } variant={ variant } placeholder=\"●\" mask={ hidden }>\n { children }\n </ChakraPinInput>\n)\n","import { filter, find, is, length, propEq } from 'ramda'\nimport { Option, SelectProps } from './types'\n\nconst isStringArray = (value: any): value is string[] =>\n is(Array, value) && length(value) > 0 && typeof value[0] === 'string'\n\nexport const getMatchingValue = <T extends Option, K extends boolean>(\n value: SelectProps<T, K>['value'],\n options: SelectProps<T, K>['options']\n): T | T[] | undefined => {\n if (typeof value === 'string') {\n return find(propEq('value', value), options as T[])\n }\n\n if (isStringArray(value)) {\n return filter(\n (option) => (value).includes(option.value),\n options as T[]\n )\n }\n\n return value as K extends true ? T[] : T\n}\n","import React, { Ref, forwardRef, useMemo, useRef } from 'react'\nimport {\n Select as ChakraReactSelect,\n GroupBase,\n OptionsOrGroups,\n SelectInstance,\n} from 'chakra-react-select'\nimport { Box } from '@chakra-ui/react'\nimport { always, equals, identity, is } from 'ramda'\nimport { Option, SelectProps } from './types'\nimport { customSelectStyles } from '../../theme/components/select/custom-select'\nimport { useSelectCallbacks } from '../../hooks'\nimport { getComponents } from '../search-bar/get-components'\nimport { getMatchingValue } from './get-matching-value'\nimport { theme } from '../../theme'\n\n/**\n * Select component that provides a customizable and accessible select input.\n * It is built on top of Chakra UI and Chakra React Select components.\n *\n * @see SearchBar\n * @see {@link https://northlight.dev/reference/select}\n *\n * @example (Example)\n * ## Single Select\n * (?\n * <Select\n * options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}\n * onChange={(value, action) => console.log('Selected:', value)}\n * />\n * ?)\n *\n * @example (Example)\n * ## Clearable Select\n * (?\n * <Select\n * options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}\n * onChange={(value, action) => console.log('Selected:', value)}\n * isClearable={ true }\n * />\n * ?)\n *\n * @example (Example)\n * ## Multi select\n * (?\n * <Select\n * options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}\n * onChange={(value, action) => console.log('Selected:', value)}\n * isMulti\n * />\n * ?)\n *\n * @example (Example)\n * ## Event meta\n * _There is a second argument passed to the handlechange that can be useful\n * for knowing which elements where adding/removed_\n * (?\n * () => {\n * const handleChange = (val, e) => {\n switch (e.action) {\n case 'select-option':\n //on add value\n console.log(e.option)\n break\n case 'pop-value':\n //on remove value\n console.log(e.removedValue.categoryKey)\n break\n default:\n break\n }\n }\n * return <Select onChange={handleChange} options={[{label: '1', value: '1'}]} isMulti={true}/>\n *\n * }\n * ?)\n *\n * @example (Example)\n * ##Customizing\n * There are two special props for easy customization\n * * customOption\n * * customTag\n *\n * This are themselves react components\n * (?\n+const customOption = ({ label }) => (\n <HStack>\n <Avatar name={label} />\n <P>{label}</P>\n </HStack>\n);\n\nconst customTag = ({ label }) => {\n const [ isIncluded, setIsIncluded ] = useState(true)\n const toggle = () => setIsIncluded((prev) => !prev)\n\n return (\n <Flex>\n <Button\n size=\"xs\"\n onClick={ toggle }\n onMouseDown={ (e) => e.stopPropagation() }\n >\n { isIncluded ? 'Include' : 'Exclude' }\n </Button>\n <Tag>{ label }</Tag>\n </Flex>\n )\n}\n\nconst CustomSelect = () => (\n <Select\n customOption={customOption}\n customTag={ customTag }\n isMulti={true}\n options={[\n { label: 'Option 1', value: '1' },\n { label: 'Option 2', value: '2' },\n ]}\n\n />\n);\n\nrender(<CustomSelect />);\n *\n * ?)\n *\n *\n * @example (Example)\n * ## Testing\n * You can grab the test id for the select by\n * **screen.getByTestId('custom-testid)\n * .children[0].children[2].children[0].children[1].children[0]**\n * (?\n * <Select\n * data-testid=\"custom-test-id\"\n * />\n * ?)\n*/\nexport const Select = forwardRef(<T extends Option, K extends boolean = false>({\n options,\n isMulti,\n onChange = identity,\n onAdd = identity,\n onRemove = identity,\n isLoading,\n loadingList = () => null,\n 'data-testid': testId,\n customOption = null,\n customTag = null,\n isClearable = false,\n value,\n icon,\n components,\n generateComponentsUpdateKey = always(0),\n ...rest\n}: SelectProps<T, K>,\n ref: Ref<SelectInstance<T, K, GroupBase<T>>>\n) => {\n const handleChange = useSelectCallbacks<T, K>({\n onChange,\n onAdd,\n onRemove,\n isMulti,\n value: is(Array, value) ? (value as T[]) : [],\n })\n\n const customComponents = useMemo(\n () => getComponents<T>(components),\n [ generateComponentsUpdateKey() ]\n )\n\n const prevOptions = useRef<OptionsOrGroups<T, GroupBase<T>> | undefined>(\n options\n )\n const renderedOptions = useMemo(() => {\n if (!equals(prevOptions.current, options)) {\n prevOptions.current = options\n }\n return prevOptions.current\n }, [ options ])\n\n return (\n <Box w=\"full\" data-testid={ testId } cursor=\"pointer\">\n <ChakraReactSelect\n isMulti={ isMulti }\n options={ renderedOptions }\n useBasicStyles={ true }\n closeMenuOnSelect={ !isMulti }\n hideSelectedOptions={ false }\n isClearable={ isClearable }\n onChange={ handleChange }\n selectedOptionStyle=\"check\"\n chakraStyles={ customSelectStyles }\n isLoading={ isLoading }\n { ...(isLoading && { components: { MenuList: loadingList } }) }\n value={ getMatchingValue(value, options) }\n customOption={ customOption }\n customTag={ customTag }\n icon={ icon }\n components={ customComponents }\n ref={ ref }\n menuPortalTarget={ document.body }\n styles={ { menuPortal: (base) => ({ ...base, zIndex: theme.zIndices.popover }) } }\n { ...rest }\n />\n </Box>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { XCloseSolid } from '@northlight/icons'\nimport { equals, identity, isNil } from 'ramda'\nimport { Option, SelectFieldProps } from './types'\nimport { Field } from '../form'\nimport { Select } from './select'\nimport { HStack } from '../stack'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { InputGroupWrapper } from '../../internal-components'\n\nconst BaseSelectField = <T extends Option, K extends boolean = false>(\n {\n name,\n label,\n options,\n direction = 'column',\n isMulti,\n isRequired,\n validate,\n isClearable = true,\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n }: SelectFieldProps<T, K>,\n ref: React.Ref<HTMLDivElement>\n) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n noLabelConnection={ true }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }) => (\n <HStack w=\"full\">\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <Select<T, K>\n name={ name }\n options={ options }\n isMulti={ isMulti }\n onChange={ (values, event) => {\n onChange(\n isMulti\n ? (values as T[]).map((item: any) => item.value)\n : (values as T).value\n )\n onChangeCallback(values as K extends true ? T[] : T, event)\n } }\n value={\n value\n ? (options\n ?.flatMap((inner: any) =>\n (inner.options ? inner.options : inner)\n )\n .filter((option: any) =>\n (isMulti\n ? value.includes(option.value)\n : equals(value, option.value))\n ) as any)\n : null\n }\n { ...rest }\n />\n </InputGroupWrapper>\n <IconButton\n aria-label={ `${name}-close-button` }\n variant=\"danger\"\n size=\"sm\"\n fontSize=\"xs\"\n hidden={ isNil(value) || !isClearable }\n onClick={ () => {\n onChange(undefined)\n onChangeCallback(undefined, { action: 'clear', removedValues: value })\n } }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </HStack>\n ) }\n </Field>\n )\n\nexport const SelectField = forwardRef(BaseSelectField)\n","import React, { MouseEventHandler } from 'react'\nimport {\n MultiValueProps,\n MultiValueRemoveProps,\n chakraComponents,\n} from 'chakra-react-select'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { Box } from '@chakra-ui/react'\nimport { Option } from './types'\n\nexport const SortableMultiValue = <T extends Option>(props: MultiValueProps<T, true>) => {\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault()\n e.stopPropagation()\n }\n const innerProps = { ...props.innerProps, onMouseDown }\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({\n id: props.data.value,\n })\n\n return (\n <Box\n ref={ setNodeRef }\n transform={ CSS.Translate.toString(transform) }\n transition={ transition }\n cursor=\"grab\"\n _hover={ { opacity: 0.8 } }\n _active={ { cursor: 'grabbing' } }\n { ...attributes }\n { ...listeners }\n >\n <chakraComponents.MultiValue { ...props } innerProps={ innerProps } />\n </Box>\n )\n}\n\nexport const SortableMultiValueRemove = <T extends Option>(\n { innerProps, ...props }: MultiValueRemoveProps<T, true>\n) => (\n <chakraComponents.MultiValueRemove\n { ...props }\n innerProps={ {\n onPointerDown: (e) => e.stopPropagation(),\n ...innerProps,\n } }\n />\n )\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ActionMeta,\n MultiValue,\n OnChangeValue,\n} from 'chakra-react-select'\nimport { DndContext, DragEndEvent, DragOverEvent, closestCenter } from '@dnd-kit/core'\nimport { restrictToParentElement } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n arrayMove,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { Select } from './select'\nimport { Option, SelectProps } from './types'\nimport { SortableMultiValue, SortableMultiValueRemove } from './sortable-select-values'\n\nexport interface SortableSelectProps<T extends Option>\n extends Omit<SelectProps<T, true>, 'isMulti'> {\n /** The currently selected options */\n value?: T[] | string[]\n /** Callback when the order or selection changes */\n onChange?: (selected: MultiValue<T>, event: ActionMeta<T>) => void\n}\n\nconst isOptionArray = <T extends Option>(value: unknown): value is T[] =>\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'object' &&\n value[0] !== null &&\n 'value' in value[0]\n\nconst isStringArray = (value: unknown): value is string[] =>\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'string'\n\n/**\n * SortableSelect component that provides drag-and-drop reordering for multi-select options.\n * It is built on top of the Select component with @dnd-kit integration.\n *\n * Drag-and-drop reordering.\n * Supports both string arrays and option objects as values.\n * Preserves order from value prop (not options order).\n * Works seamlessly with react-hook-form.\n * All Select component props and styling supported.\n *\n * @see Select\n * @see MultiSort\n * @see Draggable\n * @see {@link https://northlight.dev/reference/sortable-select}\n *\n * @example (Example)\n * ## Basic Usage with String Array\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['USD', 'EUR', 'GBP'])\n *\n * const currencyOptions = [\n * { label: 'US Dollar', value: 'USD' },\n * { label: 'Euro', value: 'EUR' },\n * { label: 'British Pound', value: 'GBP' },\n * { label: 'Japanese Yen', value: 'JPY' },\n * ]\n *\n * return (\n * <SortableSelect\n * options={currencyOptions}\n * value={selected}\n * onChange={(value) => setSelected((value || []).map(v => v.value))}\n * placeholder=\"Select currencies\"\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## Usage with Option Objects\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState([\n * { label: 'Apple', value: 'apple' },\n * { label: 'Banana', value: 'banana' }\n * ])\n *\n * const fruitOptions = [\n * { label: 'Apple', value: 'apple' },\n * { label: 'Banana', value: 'banana' },\n * { label: 'Cherry', value: 'cherry' },\n * { label: 'Date', value: 'date' },\n * ]\n *\n * return (\n * <SortableSelect\n * options={fruitOptions}\n * value={selected}\n * onChange={(value) => setSelected(value || [])}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## React Hook Form Integration\n * _Use with react-hook-form for controlled form state with reordering_\n * (?\n * +\n * const tagOptions = [\n * { label: 'React', value: 'react' },\n * { label: 'TypeScript', value: 'typescript' },\n * { label: 'JavaScript', value: 'javascript' },\n * { label: 'Node.js', value: 'nodejs' },\n * ]\n *\n * const MyFormFields = () => {\n * const { setValue } = useFormContext()\n * const selectedTags = useWatch({ name: 'tags' })\n *\n * const handleChange = (value, actionMeta) => {\n * const tags = (value || []).map(v => v.value)\n * setValue('tags', tags, {\n * shouldDirty: true,\n * shouldValidate: true,\n * })\n * }\n *\n * return (\n * <SortableSelect\n * name=\"tags\"\n * options={tagOptions}\n * value={selectedTags}\n * onChange={handleChange}\n * />\n * )\n * }\n *\n * const MyForm = () => (\n * <Form\n * initialValues={{ tags: ['react'] }}\n * onSubmit={(values) => console.log(values)}\n * >\n * {() => <MyFormFields />}\n * </Form>\n * )\n *\n * render(<MyForm />)\n * ?)\n *\n * @example (Example)\n * ## Handling Different Actions\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['red'])\n *\n * const options = [\n * { label: 'Red', value: 'red' },\n * { label: 'Green', value: 'green' },\n * { label: 'Blue', value: 'blue' },\n * ]\n *\n * const handleChange = (value, actionMeta) => {\n * const { action, removedValue, option } = actionMeta\n *\n * switch (action) {\n * case 'select-option':\n * console.log('Added:', option)\n * break\n * case 'remove-value':\n * console.log('Removed:', removedValue)\n * break\n * case 'clear':\n * console.log('Reordered:', value?.map(v => v.value))\n * break\n * }\n *\n * setSelected((value || []).map(v => v.value))\n * }\n *\n * return (\n * <SortableSelect\n * options={options}\n * value={selected}\n * onChange={handleChange}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## Customizing Selected Options\n * _Customize the appearance of selected option pills while keeping drag functionality_\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['js', 'ts'])\n *\n * const options = [\n * { label: 'JavaScript', value: 'js' },\n * { label: 'TypeScript', value: 'ts' },\n * { label: 'Python', value: 'py' },\n * { label: 'Rust', value: 'rust' },\n * ]\n *\n * return (\n * <SortableSelect\n * options={options}\n * value={selected}\n * onChange={(value) => setSelected((value || []).map(v => v.value))}\n * components={{\n * MultiValueLabel: (props) => (\n * <HStack spacing={1} px={2}>\n * <Icon as={Code} />\n * <Text>{props.children}</Text>\n * </HStack>\n * )\n * }}\n * chakraStyles={{\n * multiValue: (styles) => ({\n * ...styles,\n * backgroundColor: 'purple.100',\n * borderRadius: 'full',\n * }),\n * }}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## With Custom Tag Component\n * _Use customTag prop for simpler customization_\n * (?\n * +\n * const customTag = ({ label }) => (\n * <HStack spacing={1} px={2} py={1} bg=\"blue.50\" borderRadius=\"md\">\n * <Badge colorScheme=\"blue\" variant=\"solid\" fontSize=\"xs\">NEW</Badge>\n * <Text fontSize=\"sm\" fontWeight=\"medium\">{label}</Text>\n * </HStack>\n * )\n *\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['react'])\n *\n * return (\n * <SortableSelect\n * options={[\n * { label: 'React', value: 'react' },\n * { label: 'Vue', value: 'vue' },\n * { label: 'Angular', value: 'angular' },\n * ]}\n * value={selected}\n * onChange={(value) => setSelected((value || []).map(v => v.value))}\n * customTag={customTag}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## Disabled State\n * (?\n * <SortableSelect\n * options={[\n * { label: 'Admin', value: 'admin' },\n * { label: 'Editor', value: 'editor' },\n * { label: 'Viewer', value: 'viewer' },\n * ]}\n * value={['viewer']}\n * onChange={(value) => console.log('Changed:', value)}\n * isDisabled={true}\n * placeholder=\"Select items (disabled)\"\n * />\n * ?)\n *\n * @example (Example)\n * ## With Styling\n * (?\n * <SortableSelect\n * options={[\n * { label: 'Apple', value: 'apple' },\n * { label: 'Banana', value: 'banana' },\n * { label: 'Orange', value: 'orange' },\n * { label: 'Pear', value: 'pear' },\n * ]}\n * value={['apple', 'banana']}\n * onChange={(value) => console.log('Changed:', value)}\n * colorScheme=\"blue\"\n * chakraStyles={{\n * multiValue: (styles) => ({\n * ...styles,\n * backgroundColor: 'red.100',\n * }),\n * }}\n * />\n * ?)\n */\nexport const SortableSelect = <T extends Option>({\n value,\n onChange,\n components: customComponents,\n options,\n ...rest\n}: SortableSelectProps<T>) => {\n const matchedValue = useMemo(() => {\n if (!value || !Array.isArray(value) || value.length === 0) return []\n\n const optionsArray = Array.isArray(options) ? options : []\n\n if (isOptionArray<T>(value)) {\n return value.filter((item) => item != null)\n }\n\n if (isStringArray(value)) {\n return value.reduce<T[]>((acc, val) => {\n const found = optionsArray.find((opt) => opt.value === val)\n if (found !== undefined) {\n acc.push(found)\n }\n return acc\n }, [])\n }\n\n return []\n }, [ value, options ])\n\n const [ activeItems, setActiveItems ] = useState<T[]>(matchedValue)\n const activeItemsRef = useRef<T[]>(activeItems)\n\n useEffect(() => {\n setActiveItems(matchedValue)\n activeItemsRef.current = matchedValue\n }, [ matchedValue ])\n\n useEffect(() => {\n activeItemsRef.current = activeItems\n }, [ activeItems ])\n\n const handleChange = (selectedOptions: OnChangeValue<T, true>, actionMeta: ActionMeta<T>) => {\n if (onChange) {\n onChange(selectedOptions, actionMeta)\n }\n }\n\n const handleDragOver = useCallback(\n (event: DragOverEvent) => {\n const { active, over } = event\n\n if (!active || !over || active.id === over.id) return\n\n setActiveItems((items) => {\n const oldIndex = items.findIndex((item) => item.value === active.id)\n const newIndex = items.findIndex((item) => item.value === over.id)\n\n if (oldIndex !== -1 && newIndex !== -1) {\n return arrayMove(items, oldIndex, newIndex)\n }\n return items\n })\n },\n []\n )\n\n const handleDragEnd = useCallback(\n (_event: DragEndEvent) => {\n if (!onChange) return\n\n const finalOrder = activeItemsRef.current\n if (finalOrder.length === 0) return\n\n const orderChanged = !matchedValue.every((item, index) =>\n item.value === finalOrder[index]?.value\n )\n\n if (orderChanged) {\n onChange(finalOrder as MultiValue<T>, {\n action: 'clear',\n name: rest.name,\n } as ActionMeta<T>)\n }\n },\n [ matchedValue, onChange, rest.name ]\n )\n\n const mergedComponents = {\n ...customComponents,\n MultiValue: SortableMultiValue,\n MultiValueRemove: SortableMultiValueRemove,\n }\n\n const sortableItems = activeItems.map((item) => item.value)\n\n return (\n <DndContext\n modifiers={ [ restrictToParentElement ] }\n onDragOver={ handleDragOver }\n onDragEnd={ handleDragEnd }\n collisionDetection={ closestCenter }\n >\n <SortableContext\n items={ sortableItems }\n strategy={ horizontalListSortingStrategy }\n >\n <Select\n isMulti={ true }\n options={ options }\n value={ activeItems }\n onChange={ handleChange }\n components={ mergedComponents }\n closeMenuOnSelect={ false }\n { ...rest }\n />\n </SortableContext>\n </DndContext>\n )\n}\n","import React from 'react'\nimport { Switch as ChakraSwitch } from '@chakra-ui/react'\nimport { SwitchProps } from './types'\n\n/**\n * @see SwitchField\n * @see {@link https://northlight.dev/reference/switch}\n *\n * @example (Example)\n * Mainly used for forms, however this component is controlled by\n * a value prop and an onChange callback\n *\n * (?\n * () => {\n * const [ advancedMode, setAdvancedMode ] = useState(false)\n *\n * return (\n * <Stack p=\"2\">\n * <Label size=\"sm\" htmlFor=\"advanced-mode-switch\">Advanced mode</Label>\n * <Switch name=\"vegan-checkbox\" onChange={() => setAdvancedMode((prev) => !prev)}\n * value={advancedMode} />\n * </Stack>\n * )\n * }\n * ?)\n */\nexport const Switch = ({\n value,\n onChange,\n name,\n size = 'md',\n ...rest\n}: SwitchProps) => (\n <ChakraSwitch\n size={ size }\n id={ name }\n isChecked={ value }\n onChange={ onChange }\n { ...rest }\n />\n)\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { SwitchFieldProps } from './types'\nimport { Field } from '../form'\nimport { Switch } from './switch'\nimport { Box } from '../box'\nimport { Flex } from '../flex'\nimport { Label } from '../typography'\n\n/**\n * The switch component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see switch\n * @see {@link https://northlight.dev/reference/switch-field}\n* @example (Example)\n * ## Basic\n * Tip:\n * * For `labelPlacement` you can use `\"left\" | \"right\"`\n * * For `labelSize` you can use `\"2xs\" | \"xs\" | \"md\" | \"lg\"` or leave it blank\n * (?\n * <Form initialValues={{name: ''}}>\n * <SwitchField\n * name=\"terms\"\n * label=\"I agree to the Terms & Conditions\"\n * labelPlacement=\"right\"\n * labelSize=\"md\"\n * />\n * </Form>\n * ?)\n *\n */\nexport const SwitchField = forwardRef<HTMLDivElement, SwitchFieldProps>(({\n name,\n label,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n direction = 'row',\n labelPlacement = 'right',\n labelSize = 'md',\n ...rest\n}, ref) => (\n <Box w={ label ? 'full' : 'fit-content' } display=\"inline-flex\">\n <Field\n name={ name }\n label=\"\"\n isRequired={ isRequired }\n direction={ direction }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <Flex\n display=\"inline-flex\"\n alignItems=\"center\"\n gap={ 2 }\n direction={ labelPlacement === 'left' ? 'row-reverse' : 'row' }\n >\n <Switch\n name={ name }\n onChange={ (e) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n data-testid=\"switch-field-test-id\"\n { ...rest }\n />\n <Label htmlFor={ name } sx={ { fontWeight: 'normal' } } size={ labelSize }>{ label }</Label>\n </Flex>\n ) }\n </Field>\n </Box>\n))\n","import React from 'react'\nimport { Tab as ChakraTab } from '@chakra-ui/react'\nimport { TabProps } from './types'\n\n/**\n * Tab component is used to display a tab in a Tabs component.\n * @see Tabs\n * @see {@link https://northlight.dev/reference/tab}\n *\n * @example\n * (?\n<Tabs variant=\"piped\">\n <TabList>\n <Tab elementColor=\"brand\">Social Media</Tab>\n <Tab elementColor=\"success\">Online</Tab>\n <Tab elementColor=\"warning\">TV</Tab>\n <Tab elementColor=\"ai\">Paid Search</Tab>\n </TabList>\n</Tabs>\n * ?)\n */\nexport const Tab = (props: TabProps) => {\n const { elementColor, sx, ...rest } = props\n const tabSx = elementColor\n ? { '&::before': { backgroundColor: elementColor }, ...sx }\n : sx\n\n return (\n <ChakraTab sx={ tabSx } { ...rest } />\n )\n}\n","import React from 'react'\nimport { TabPanel as ChakraTabPanel } from '@chakra-ui/react'\nimport { TabPanelProps } from './types'\n\n/**\n * Used to display content under tabs context\n * @see Tabs\n * @see {@link https://northlight.dev/reference/tab-panel}\n * @example\n * (? <TabPanel>Tab 1</TabPanel> ?)\n */\nexport const TabPanel = (props: TabPanelProps) => (\n <ChakraTabPanel padding={ 0 } { ...props } />\n)\n","import React from 'react'\nimport { Tabs as ChakraTabs } from '@chakra-ui/react'\nimport { TabsProps } from './types'\n\n/**\n * Tabs are used for secondary navigation between groups on the page of the same context.\n * @see TabList\n * @see TabPanels\n * @see {@link https://northlight.dev/reference/tabs}\n * @example\n * ## Structure\n * <br />\n * - **Tabs**: Context provider and state manager for tab components.\n * - **TabList**: Container for Tab items.\n * - **Tab**: Interactive label for displaying a TabPanel.\n * - **TabPanels**: Group wrapper for TabPanel items.\n * - **TabPanel**: Content area for a Tab.\n * <br />\n * <br />\n * You can render any element within `Tabs`, but `TabList` should only have `Tab` as children,\n * and `TabPanels` should have `TabPanel` as children. <br />\n * <br />\n * `Tabs` expects `TabList` and `TabPanels` as children. The order doesn't matter,\n * you can have `TabList` at the top, at the bottom, or both.\n * <br />\n * <br />\n *\n * ## Usage\n * <br />\n * **Tabs** have three main variatns:\n * `rounded` (default) or no variant, `soft-rounded` and `line`. <br />\n * Also there are multiple sub-variants: `ai`, `enclosed`,\n * `enclosed-colored`, `unstyled` and `piped`.\n * <br />\n * <br />\n * tip: `enclosed` and `enclosed-colored` can be combined with the `colorScheme=\"\"` prop.\n * <br />\n * <br />\n * (?\n <Tabs>\n <Stack spacing=\"2\">\n <TabList>\n <Tab><Icon as={ MediatoolLogoDuo } mr=\"2\" />One</Tab>\n <Tab><Icon as={ MediatoolLogoDuo } mr=\"2\" />Two</Tab>\n <Tab><Icon as={ MediatoolLogoDuo } mr=\"2\" />Three</Tab>\n </TabList>\n <TabPanels>\n <TabPanel>\n <P>one!</P>\n </TabPanel>\n <TabPanel>\n <P>two!</P>\n </TabPanel>\n <TabPanel>\n <P>three!</P>\n </TabPanel>\n </TabPanels>\n </Stack>\n </Tabs>\n * ?)\n *\n */\nexport const Tabs = (({\n children,\n variant = 'rounded',\n isManual = true,\n ...rest\n}: TabsProps) => (\n <ChakraTabs\n isManual={ isManual }\n variant={ variant }\n { ...rest }\n >\n { children }\n </ChakraTabs>\n))\n","import React from 'react'\nimport { Textarea as ChakraTextarea } from '@chakra-ui/react'\nimport { TextareaProps } from './types'\n\n/**\n * Text input for larger raw text\n * @see Input\n * @see {@link https://northlight.dev/reference/textarea}\n *\n * @example\n * (? <Textarea /> ?)\n */\nexport const Textarea = ({\n size = 'md',\n onChange,\n name,\n value,\n ...rest\n}: TextareaProps) => (\n <ChakraTextarea\n size={ size }\n id={ name }\n onChange={ onChange }\n value={ value }\n { ...rest }\n />\n)\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { TextareaFieldProps } from './types'\nimport { Field } from '../form'\nimport { Textarea } from './textarea'\n\nexport const TextareaField = forwardRef<HTMLDivElement, TextareaFieldProps>(({\n name,\n label,\n isRequired,\n validate,\n direction,\n onChange: onChangeCallback = identity,\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n validate={ validate }\n direction={ direction }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <Textarea\n name={ name }\n data-testid=\"textarea-field-test-id\"\n onChange={ (e) => { onChange(e); onChangeCallback(e) } }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n))\n","export const roundToPrecision = (\n value: number,\n numberOfDecimals: number\n): number => parseFloat(value.toFixed(numberOfDecimals))\n","import React, { ComponentType, useEffect } from 'react'\nimport { defaultTo, identity, isEmpty, isNil } from 'ramda'\nimport {\n InputAttributes,\n NumberFormatValues,\n NumericFormat,\n SourceInfo,\n numericFormatter,\n} from 'react-number-format'\nimport { InputGroupWrapper } from '../../internal-components'\nimport { Input } from '../input'\nimport {\n FormattedNumberInputPreset,\n FormattedNumberInputProps,\n PresetOptions,\n} from './types'\nimport { roundToPrecision } from './round-to-precision'\n\nconst presetMap: Record<FormattedNumberInputPreset, PresetOptions> = {\n eu: {\n thousandSeparator: ' ',\n decimalSeparator: ',',\n },\n us: {\n thousandSeparator: ',',\n decimalSeparator: '.',\n },\n nor: {\n thousandSeparator: '.',\n decimalSeparator: ',',\n },\n}\n\n/**\n * @see {@link https://northlight.dev/reference/formatted-number-input-field}\n @example (Example)\n * The formatted number input is built uppon react-number-format\n * It formats numbers by adjusting thousand and decimal separators\n * ex : 22345351.34234 => 222 453 51,34234\n * It comes with three presets: eu, us and nor.\n * These have the following separators:\n (?\n <FormattedNumberInput\n preset=\"us\"\n onChange={(values) => console.log(values.floatValue)}\n isPercentage={true}\n max={1E9}\n min={0}\n />\n ?)\n\n @example (Example)\n ### Nor preset\n (?\n <FormattedNumberInput\n preset=\"nor\"\n onChange={(values) => console.log(values.floatValue)}\n value={320341345102.34134}\n numberOfDecimals={5}\n />\n ?)\n\n @example (Example)\n ### Eu preset\n (?\n <FormattedNumberInput\n preset=\"eu\"\n onChange={(values) => console.log(values.floatValue)}\n value={320341345102.34134}\n numberOfDecimals={5}\n />\n ?)\n\n */\nexport const FormattedNumberInput = ({\n preset = 'eu',\n isPercentage = false,\n onChange = identity,\n value: valueProp,\n numberOfDecimals,\n max = Infinity,\n min = -Infinity,\n inputLeftElement,\n inputRightElement,\n onBlur,\n ...rest\n}: FormattedNumberInputProps) => {\n const props = presetMap[preset]\n\n const value = valueProp ?? ''\n\n const defaultNumberOfDecimals = defaultTo(2, numberOfDecimals)\n\n const getNumberFormatValues = (number: number) => ({\n floatValue: number,\n formattedValue: numericFormatter(number.toString(), props),\n value: number.toString(),\n })\n\n const validateRange = () => {\n if (isNil(value) || isEmpty(value)) return\n\n const vNum = typeof value === 'string' ? parseFloat(value) : value\n\n if (isNil(numberOfDecimals) && !isPercentage) {\n onChange(getNumberFormatValues(vNum))\n return\n }\n\n const factor = isPercentage ? 100 : 1\n if (vNum * factor > max) {\n const newValue = roundToPrecision(max / factor, defaultNumberOfDecimals)\n onChange(getNumberFormatValues(newValue))\n }\n if (vNum * factor < min) {\n const newValue = roundToPrecision(min / factor, defaultNumberOfDecimals)\n onChange(getNumberFormatValues(newValue))\n }\n }\n\n const onValueChangeHandler = (\n values: NumberFormatValues,\n sourceInfo: SourceInfo\n ) => {\n const newFloatValue =\n values.floatValue && isPercentage\n ? roundToPrecision(values.floatValue / 100, defaultNumberOfDecimals)\n : values.floatValue\n onChange(\n {\n ...values,\n floatValue: newFloatValue,\n },\n sourceInfo\n )\n }\n\n useEffect(() => {\n validateRange()\n }, [ value ])\n\n return (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <NumericFormat\n allowLeadingZeros={ true }\n customInput={ Input as ComponentType<InputAttributes> }\n onBlur={ (e) => {\n onBlur?.(e)\n validateRange()\n } }\n onValueChange={ onValueChangeHandler }\n decimalScale={ numberOfDecimals }\n value={\n isPercentage\n ? roundToPrecision(parseFloat(`${value ?? 0}`) * 100, defaultNumberOfDecimals)\n : value\n }\n suffix={ isPercentage ? '%' : '' }\n { ...props }\n { ...rest }\n />\n </InputGroupWrapper>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { FormattedNumberInputFieldProps } from './types'\nimport { Field } from '../form'\nimport { FormattedNumberInput } from './formatted-number-input'\n\n/**\n * The formatted number input component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see FormattedNumberInput\n * @see {@link https://northlight.dev/reference/formatted-number-input-field}\n * @example (Example)\n * (?\n * <Form initialValues={{money: ''}}>\n * <FormattedNumberInputField\n * name=\"money\"\n * label=\"How much money is currently on your account\"\n * labelPosition=\"left\"\n * />\n * </Form>\n * ?)\n *\n */\nexport const FormattedNumberInputField =\nforwardRef<HTMLDivElement, FormattedNumberInputFieldProps>(({\n name,\n label,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n direction = 'row',\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n direction={ direction }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <FormattedNumberInput\n name={ name }\n onChange={ (values, sourceInfo) => {\n onChange(values.floatValue)\n onChangeCallback(values, sourceInfo)\n } }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n))\n","import React from 'react'\nimport InputMask from 'react-input-mask'\nimport { Input } from '../input'\nimport { MaskedTextInputProps } from './types'\n\n//! Overload error in @types/react-input-mask, overwriting faulty types as unknown as any\nconst CustomInput = InputMask as unknown as any\n\nexport const MaskedTextInput = ({\n mask,\n maskPlaceholder,\n alwaysShowMask,\n name,\n value,\n placeholder,\n onChange,\n onBlur,\n ...rest\n}: MaskedTextInputProps) => (\n <CustomInput\n mask={ mask }\n maskPlaceholder={ maskPlaceholder }\n alwaysShowMask={ alwaysShowMask }\n name={ name }\n value={ value }\n onChange={ onChange }\n onBlur={ onBlur }\n >\n { ({ name: nameProp }: any) => (\n <Input\n placeholder={ maskPlaceholder ?? placeholder }\n name={ nameProp }\n { ...rest }\n />\n ) }\n </CustomInput>\n)\n","import React, { forwardRef } from 'react'\nimport { identity, isNil } from 'ramda'\nimport { TextFieldProps } from './types'\nimport { Input } from '../input'\nimport { Field } from '../form'\nimport { InputGroupWrapper } from '../../internal-components/input-group-wrapper'\n\n/**\n * The Input component wrapped in <Field />\n * Also supported formmated and musked input via as prop\n * @see Input\n * @see MaskedTextInput\n * @see FormattedNumberInput\n * @see {@link https://northlight.dev/reference/text-field}\n *\n *\n */\nexport const TextField = forwardRef<HTMLDivElement, TextFieldProps>(({\n name,\n label,\n as: As = Input,\n isRequired,\n validate,\n direction = 'column',\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n validate={\n isNil(validate) && isRequired\n ? { validate: (value: string) => !!value.trim() }\n : validate\n }\n direction={ direction }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <As\n id={ name }\n name={ name }\n onChange={ (e: React.ChangeEvent<HTMLInputElement> | string) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n data-testid=\"text-field-test-id\"\n { ...rest }\n />\n </InputGroupWrapper>\n ) }\n </Field>\n))\n","import {\n AlertCircleSolid,\n AlertTriangleSolid,\n BellSolid,\n BrightnessSolid,\n CheckCircleSolid,\n HelpCircleSolid,\n} from '@northlight/icons'\nimport { AlertVariants } from '../../alert/types'\n\nexport const toastIconMap: Record<AlertVariants, any> = {\n success: CheckCircleSolid,\n warning: AlertTriangleSolid,\n error: AlertCircleSolid,\n danger: AlertCircleSolid,\n info: BellSolid,\n ai: BrightnessSolid,\n default: HelpCircleSolid,\n ghost: HelpCircleSolid,\n}\n","import React from 'react'\nimport { Alert as ChakraAlert } from '@chakra-ui/react'\nimport { toastIconMap } from '../types'\nimport { ToastProps } from './types'\nimport { Icon } from '../icon'\nimport { HStack, Stack } from '../stack'\nimport { CloseButton } from '../close-button'\nimport { Label, P } from '../typography'\n\n/**\n * Toast is a modified alert meant for popup alerts\n * @see useToast\n * @see Alert\n * @see {@link https://northlight.dev/reference/toast}\n * @example\n * (?\n *\n <HStack spacing={ 4 }>\n <Toast variant=\"default\" title=\"default\" />\n <Toast variant=\"success\" title=\"success\" />\n <Toast variant=\"warning\" title=\"warning\" />\n <Toast variant=\"error\" title=\"error\" />\n <Toast variant=\"info\" title=\"info\" />\n <Toast variant=\"ai\" title=\"mtGPT\" />\n </HStack>\n * ?)\n *\n */\nexport const Toast = ({\n variant = 'success',\n title = '',\n description = '',\n onClose,\n ...rest\n}: ToastProps) => {\n const icon = toastIconMap[variant]\n\n return (\n <ChakraAlert\n variant={ variant }\n data-testid=\"toast-test\"\n { ...rest }\n >\n <HStack alignItems=\"flex-start\">\n { icon && (\n <Icon\n as={ icon }\n color={ `icon.toast.${variant}` }\n boxSize={ 6 }\n />\n ) }\n <Stack spacing={ 0 } alignItems=\"flex-start\">\n { title && <Label size=\"md\">{ title }</Label> }\n { description && (\n <P\n sx={ {\n color: variant === 'ai' ? 'color.text.inverted' : 'text.default',\n } }\n >\n { description }\n </P>\n ) }\n </Stack>\n\n <CloseButton\n size=\"sm\"\n onClick={ onClose }\n position=\"absolute\"\n insetEnd={ 1 }\n top={ 1 }\n />\n </HStack>\n </ChakraAlert>\n )\n}\n","import React, { useRef } from 'react'\nimport { ToastId, useToast as useChakraToast } from '@chakra-ui/react'\nimport { Toast } from './toast'\nimport { UseToastOptions } from './types'\n\n/**\n * This hook returns a toast function that when called will popup a toast\n * @see Toast\n * @see {@link https://northlight.dev/reference/use-toast}\n * @example\n * (?\n * () => {\n * const toast = useToast()\n * const handleClick = () => {\n * toast({title: 'Success',\n * description: `${Math.random()}-string`,\n * replacePreviousToast: true })\n * }\n * return (\n * <Button onClick={handleClick} variant=\"success\">Save</Button>\n * )}\n * ?)\n */\nexport const useToast = (defaultOpts: UseToastOptions = {}) => {\n const toast = useChakraToast(defaultOpts)\n const toastIdRef = useRef<ToastId | null>(null)\n\n return (opts: UseToastOptions = {}) => {\n const toastProps: UseToastOptions = {\n render: ({ onClose }: { onClose: () => void }) => {\n const {\n variant = 'success',\n title = 'Success',\n description = '',\n } = opts\n\n return (\n <Toast\n variant={ variant }\n title={ title }\n description={ description }\n onClose={ onClose }\n />\n )\n },\n position: 'top',\n ...opts,\n }\n\n const { replacePreviousToast = false } = opts\n if (replacePreviousToast && toastIdRef && toastIdRef.current) {\n toast.update(toastIdRef.current, toastProps)\n } else {\n toastIdRef.current = toast(toastProps)\n }\n }\n}\n","import { PinVariant } from '../pin-input/types'\n\nexport const pinVariantMap: Record<PinVariant, string> = {\n green: 'success',\n running: 'success',\n yellow: 'info',\n inProgress: 'info',\n gray: 'subdued',\n notExecuted: 'subdued',\n red: 'destructive',\n rejected: 'destructive',\n}\n","import { PinSize, PinSizeTuple } from '../pin-input/types'\n\nexport const pinSizeMap: Record<PinSize, PinSizeTuple > = {\n sm: [ 4, 2 ],\n md: [ 5, 3 ],\n lg: [ 6, 4 ],\n}\n","import React from 'react'\nimport { Circle } from '../circle'\nimport { pinVariantMap } from './pin-variant-map'\nimport { pinSizeMap } from './pin-size-map'\nimport { StatusPinProps } from './types'\n\n/**\n * Status pins are meant to display the status of a specific entry.\n * @see Badge\n * @see {@link https://northlight/reference/status-pin}\n *\n * @example (Example)\n * (?\n * +\n * const sizes = ['lg', 'md', 'sm']\n * const variants = ['notExecuted', 'running', 'inProgress', 'rejected']\n *\n * const Example = () => {\n * return (\n * <Stack>\n * {variants.map((variant)=>(\n * <HStack spacing={4} alignItems=\"center\">\n * {sizes.map((size)=>(\n * <StatusPin size={size} variant={variant} />\n * ))}\n * </HStack>\n * ))}\n * </Stack>\n * )\n * }\n * render(<Example/>)\n * ?)\n *\n */\n\nexport const StatusPin = ({ size = 'md', variant, ...rest }: StatusPinProps) => {\n const pinColor = pinVariantMap[variant]\n const pinSizeTuple = pinSizeMap[size]\n const [ outerSize, innerSize ] = pinSizeTuple\n\n return (\n <Circle\n size={ outerSize }\n bg=\"transparent\"\n borderWidth=\"xs\"\n borderColor={ pinColor }\n { ...rest }\n >\n <Circle\n size={ innerSize }\n bg={ pinColor }\n />\n </Circle>\n )\n}\n","import React from 'react'\nimport {\n AlertDescription,\n AlertTitle,\n Alert as ChakraAlert,\n} from '@chakra-ui/react'\nimport { toastIconMap } from '../types'\nimport { Icon } from '../icon'\nimport { VStack } from '../stack'\nimport { AsyncErrorProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/async-error}\n * @example\n * (?\n * <AsyncError />\n * ?)\n *\n */\nexport const AsyncError = ({\n message = '',\n ...rest\n}: AsyncErrorProps) => (\n <ChakraAlert backgroundColor=\"background.default\" color=\"text.default\" width=\"100%\" { ...rest }>\n <VStack w=\"full\">\n <Icon as={ toastIconMap.error } color=\"icon.toast.error\" boxSize={ 6 } />\n <AlertTitle> Error </AlertTitle>\n { message && (\n <AlertDescription>{ message }</AlertDescription>\n ) }\n </VStack>\n </ChakraAlert>\n)\n","import React from 'react'\nimport { StepPanelProps } from './types'\nimport { TabPanel as ChakraStepPanel } from '../tabs'\n\n/**\n * Used to display content under specific step\n * @see Steps\n * @see StepPanels\n * @see {@link https://northlight.dev/reference/step-panel}\n * @example\n * (? <StepPanel>Step 1</StepPanel> ?)\n */\nexport const StepPanel = (props: StepPanelProps) => (\n <ChakraStepPanel padding={ 0 } { ...props } />\n)\n","import React from 'react'\nimport { Tabs as ChakraSteps } from '@chakra-ui/react'\nimport { StepsProps } from './types'\n\n/**\n * Context provider for steps tabs\n * @see StepList\n * @see StepPanels\n * @see {@link https://northlight.dev/reference/steps}\n * @example\n * (?\n <Steps>\n <StepList>\n <Step label=\"Step 1\" description=\"Name and email\" indicator={1} />\n <Step label=\"Step 2\" description=\"Pick a password\" indicator={2} />\n <Step label=\"Step 3\"\n description=\"Review\"\n indicator={<Icon as={ BrightnessSolid }\n size=\"xs\" /> }\n />\n </StepList>\n <StepPanels>\n <StepPanel>1</StepPanel>\n <StepPanel>2</StepPanel>\n <StepPanel>3</StepPanel>\n </StepPanels>\n </Steps>\n * ?)\n *\n *\n */\nexport const Steps = (props: StepsProps) => (\n <ChakraSteps isManual={ true } { ...props } />\n)\n","import React from 'react'\nimport { Box, Tab as ChakraStep, useMultiStyleConfig } from '@chakra-ui/react'\nimport { Capitalized, Lead } from '../typography'\nimport { Flex } from '../flex'\nimport { ring } from '../../utils'\nimport { StepProps } from './types'\n\n/**\n * Renders a step in a step list\n * @see StepList\n * @see Steps\n * @see {@link https://northlight.dev/reference/step}\n * @example\n * (?\n <Steps>\n <StepList>\n <Step label=\"Step 1\" description=\"Personal information\" indicator={1} />\n </StepList>\n</Steps>\n * ?)\n *\n */\nexport const Step = ({ label, description, indicator, ...rest }: StepProps) => {\n const {\n step,\n label: labelStyle,\n description: descriptionStyle,\n indicator: indicatorStyle,\n } = useMultiStyleConfig('Step')\n return (\n <ChakraStep\n sx={ step }\n { ...rest }\n >\n <Flex flexDirection=\"row\" alignItems=\"flex-start\" gap=\"4\" _groupFocusVisible={ ring }>\n { indicator && (\n <Box\n sx={ indicatorStyle }\n data-part=\"indicator\"\n justifyContent=\"center\"\n >\n { indicator }\n </Box>\n ) }\n <Flex flexDirection=\"column\">\n <Capitalized sx={ labelStyle }>{ label }</Capitalized>\n { description && <Lead sx={ descriptionStyle }>{ description }</Lead> }\n </Flex>\n </Flex>\n </ChakraStep>\n )\n}\n","import React, { Children } from 'react'\nimport { TabList as ChakraStepList, useStyleConfig } from '@chakra-ui/react'\nimport { StepListProps } from './types'\n\n/**\n * Used to render a navigational list of steps\n * @see Step\n * @see Steps\n * @see {@link https://northlight.dev/reference/step-list}\n * @example\n * (?\n * <Steps>\n <StepList>\n <Step label=\"Step 1\" description=\"Name and email\" />\n <Step label=\"Step 2\" description=\"Pick a password\" />\n <Step label=\"Step 3\" description=\"Review\" />\n </StepList>\n </Steps>\n * ?)\n *\n */\nexport const StepList = ({ children, ...rest }: StepListProps) => {\n const tabs = Children.count(children)\n const styles = useStyleConfig('StepList', { tabs })\n return (\n <ChakraStepList { ...rest } sx={ styles }>\n { children }\n </ChakraStepList>\n )\n}\n","import React, { forwardRef, useEffect } from 'react'\nimport { useClipboard, useMultiStyleConfig } from '@chakra-ui/react'\nimport { CheckDuo, CopyDuo } from '@northlight/icons'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { Tooltip } from '../tooltip'\nimport { Input, InputGroup, InputRightElement } from '../input'\nimport { ClipboardInputProps } from './types'\n\n/**\n * Meant to display non editable copiable text\n * @see {@link https://northlight.dev/reference/clipboard-input}\n *\n * @example (Example)\n * ## Your token\n * (?\n * <ClipboardInput value=\"8aa6d075-eae2-49b3-8f65-318ece801b3b\" aria-label=\"Copy token\" />\n * ?)\n *\n */\nexport const ClipboardInput = forwardRef<HTMLDivElement, ClipboardInputProps>(({\n size = 'md',\n value,\n 'aria-label': ariaLabel,\n ...rest\n}, ref) => {\n const { hasCopied, onCopy, setValue } = useClipboard(value)\n const { button, icon, tooltip } = useMultiStyleConfig('ClipboardInput', { size })\n\n useEffect(() => {\n setValue(value)\n }, [ value ])\n\n return (\n <InputGroup size={ size } data-testid=\"clipboard-input-test-id\" ref={ ref }>\n <Input\n textOverflow=\"ellipsis\"\n aria-label={ `Value to copy: ${value}` }\n isReadOnly={ true }\n value={ value }\n { ...rest }\n />\n <InputRightElement>\n <Tooltip\n label={ hasCopied ? 'Copied!' : 'Copy' }\n placement=\"left\"\n closeOnClick={ false }\n sx={ tooltip }\n >\n <IconButton\n aria-label={ ariaLabel || 'Click to copy' }\n onClick={ onCopy }\n variant={ hasCopied ? 'success' : 'default' }\n sx={ button }\n >\n <Icon\n as={ hasCopied ? CheckDuo : CopyDuo }\n sx={ icon }\n />\n </IconButton>\n </Tooltip>\n </InputRightElement>\n </InputGroup>\n )\n})\n","import React, { cloneElement, useCallback, useRef } from 'react'\nimport { Grid, useStyleConfig } from '@chakra-ui/react'\nimport { SplitPaneProps } from './types'\n\n/**\n * Used for split screen layouts\n * @see PaneItem\n * @see PaneDivider\n * @see {@link https://northlight.dev/reference/split-pane}\n *\n */\nexport const SplitPane = ({\n children,\n initialSplit = 50,\n isOpen,\n minLeftWidth = 25,\n minRightWidth = 50,\n ...rest\n}: SplitPaneProps) => {\n const dividerRef = useRef<HTMLDivElement | null>(null)\n\n const mouseDownHandler = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.target !== dividerRef.current) {\n return\n }\n let requestedFrame: number | null = null\n\n e.stopPropagation()\n e.preventDefault()\n\n const target = e.currentTarget\n\n target.setPointerCapture(e.pointerId)\n\n target.onpointermove = (moveEvent: PointerEvent) => {\n if (!(moveEvent.buttons && 1)) {\n target.onpointermove = null\n target.releasePointerCapture(moveEvent.pointerId)\n return\n }\n\n moveEvent.stopPropagation()\n moveEvent.preventDefault()\n\n if (!requestedFrame) {\n const { offsetX } = moveEvent\n\n requestedFrame = requestAnimationFrame(() => {\n target.style.setProperty(\n '--split-pos',\n `${Math.max(offsetX, 0)}px`\n )\n requestedFrame = null\n })\n }\n }\n },\n []\n )\n\n const containerStyle = useStyleConfig('SplitPane', { minLeftWidth, minRightWidth, initialSplit, isOpen })\n\n return (\n <Grid\n sx={ containerStyle }\n onPointerDown={ mouseDownHandler }\n { ...rest }\n >\n { children[0] }\n { isOpen && cloneElement(children[1], { ref: dividerRef }) }\n { isOpen && children[2] }\n </Grid>\n )\n}\n","import React from 'react'\nimport { GridItem, GridItemProps } from '@chakra-ui/react'\n\n/**\n * Wrapper around child of split pane\n * @see SplitPane\n * @see {@link https://northlight.dev/reference/PaneItem}\n *\n */\nexport const PaneItem = ({ children, ...rest } : GridItemProps) => (\n <GridItem overflow=\"hidden\" { ...rest }>\n { children }\n </GridItem>\n)\n","import React from 'react'\nimport { Box, BoxProps, forwardRef, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * Simple vertical line for split screen\n * @see SplitPane\n * @see PaneItem\n * @see {@link https://northlight.dev/reference/pane-divider}\n * @example\n * (?\n * <Box h=\"xs\">\n * <PaneDivider />\n * </Box>\n * ?)\n * */\nexport const PaneDivider = forwardRef((props: BoxProps, ref: any) => {\n const style = useStyleConfig('PaneDivider')\n return (\n <Box\n ref={ ref }\n sx={ style }\n { ...props }\n />\n )\n})\n","import React from 'react'\nimport { useToken } from '@chakra-ui/system'\nimport { StepStackProps } from './types'\nimport { getChildrenWithProps } from '../../utils'\nimport { HStack, Stack } from '../stack'\nimport { Divider } from '../divider'\nimport { Label } from '../typography'\nimport { Box } from '../box'\n/**\n Util wrapper for creating ordered vertical layouts by stack\n @see {@link https://northlight.dev/reference/step-stack}\n @example\n The component takes all the props that a normal stack takes, with the addition of a\n rowHeight prop, which is needed to get the correct height for the grey\n line that goes between the steps. Any valid css height unit, px, rem, %,\n and tokens xs, sm are valid input for the <Code>rowHeight</Code> prop,\n for example, <Code>rowHeight=\"3rem\"</Code>.\n <br /><br />\n ## Simple step stack\n (?\n <StepStack maxW=\"sm\" spacing=\"4\" rowHeight=\"10\">\n { Array.from({length: 5}, (_, i) => i).map((i) => <Input key={ i } />) }\n </StepStack>\n ?)\n <br />\n ## Example with flex-start stepCircleAlignment prop\n (?\n <StepStack\n maxW=\"sm\"\n spacing=\"4\"\n rowHeight=\"10\"\n stepCircleAlignment=\"flex-start\"\n stepCircleMarginTopPx={ 40 }\n >\n { Array.from({ length: 5 }, (_, i) => i).map((i) => (\n <VStack key={ i }>\n <Center\n width={ 400 }\n height={ 24 }\n borderRadius={ 10 }\n backgroundColor=\"blue.500\"\n color=\"white\"\n >\n <VStack spacing=\"5\">\n <Text>Step { i + 1 }</Text>\n </VStack>\n </Center>\n <Center\n width={ 400 }\n height={ 36 }\n borderRadius={ 10 }\n backgroundColor=\"green.500\"\n color=\"white\"\n >\n <VStack spacing=\"5\">\n <Text>Some information</Text>\n </VStack>\n </Center>\n </VStack>\n )) }\n </StepStack>\n ?)\n*/\nexport const StepStack = ({\n children,\n spacing = '4',\n rowHeight = '10',\n stepCircleAlignment = 'center',\n stepCircleMarginTopPx = 0,\n ...rest\n}: StepStackProps) => {\n const rows = getChildrenWithProps(children, {})\n const parsedRowHeight = useToken('sizes', rowHeight)\n\n return (\n <Stack spacing={ spacing } position=\"relative\" { ...rest }>\n { rows.map(\n (row, i) => (\n <HStack key={ `row-${i as number}` } alignItems={ stepCircleAlignment }>\n <>\n <Box\n borderRadius=\"full\"\n bgColor=\"brand\"\n boxSize=\"6\"\n minW=\"6\"\n minH=\"6\"\n zIndex=\"docked\"\n marginTop={ `${stepCircleMarginTopPx}px` }\n >\n <Label\n size=\"sm\"\n sx={ { color: 'text.inverted' } }\n w=\"max-content\"\n textAlign=\"center\"\n >\n { i + 1 }\n </Label>\n </Box>\n { row }\n </>\n </HStack>\n )\n ) }\n <Divider\n orientation=\"vertical\"\n left=\"3\"\n top={ `calc(${parsedRowHeight} / 2 + ${stepCircleMarginTopPx}px)` }\n h={ `calc(100% - ${parsedRowHeight} - ${stepCircleMarginTopPx}px)` }\n position=\"absolute\"\n />\n </Stack>\n )\n}\n","import React from 'react'\nimport {\n GroupBase,\n SelectComponentsConfig,\n chakraComponents,\n} from 'chakra-react-select'\nimport { PlusSolid } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { Box } from '../box'\nimport { Flex } from '../flex'\nimport { Text } from '../text'\nimport { Option } from '../select'\n\nconst { Option: ChakraOption } = chakraComponents\n\ntype CustomComponents<T extends string> =\nSelectComponentsConfig<Option<T>, false, GroupBase<Option<T>>>\n\nexport const getCustomComponents = <T extends string = string>(): CustomComponents<T> => (\n {\n Option: ({ children, ...props }) => (\n <ChakraOption { ...props }>\n { props.data.isCreation && (\n <Flex\n mr={ 3 }\n width={ 1.5 }\n mb={ 0.5 }\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Icon as={ PlusSolid } color=\"brand\" />\n </Flex>\n ) }\n { !props.data.isCreation && <Box mr={ 3 } width={ 1.5 } /> }\n <Text\n color={ props.data.isCreation ? 'text.brand' : 'text.default' }\n fontWeight={ props.data.isCreation ? 'semibold' : 'normal' }\n >\n { children }\n </Text>\n </ChakraOption>\n ),\n }\n)\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ActionMeta,\n CreatableProps,\n CreatableSelect,\n GroupBase,\n SingleValue,\n} from 'chakra-react-select'\nimport { PlusSolid } from '@northlight/icons'\nimport { Box, Icon, theme } from '@chakra-ui/react'\nimport { any, isEmpty, prop, toLower, trim } from 'ramda'\nimport { uniqBy } from 'yafu'\nimport { customSelectStyles } from '../../theme/components/select/custom-select'\nimport type {\n CreatableSelectDropdownProps,\n CreationOption,\n CreationOptionValue,\n} from './types'\nimport { getCustomComponents } from './custom-components'\nimport { EditableText } from '../editable-text'\nimport type { Option } from '../select/types'\n\n/**\n * A dropdown component that allows users to select a value from given options\n * or create a new one if it doesn't exist.\n * @see {@link https://northlight.dev/reference/creatable-select-dropdown}\n *\n * @example (Example)\n * (?\n * () => {\n * const [artist, setArtist] = useState(null);\n * const [element, setElement] = useState({ label: 'Technique', value: 'technique' })\n * const someOptions = [\n * { label: 'Scooter', value: 'scooter' },\n * { label: 'Snoop Doggy Dogg', value: 'snoop-dogg' },\n * ];\n *\n * const someOtherOptions = [\n * { label: 'Vision', value: 'vision' },\n * { label: 'Technique', value: 'technique' },\n * { label: 'Expression', value: 'expression' }\n * ];\n *\n * return (\n * <VStack gap={10} alignItems={\"flex-start\"}>\n * <Box align=\"left\">\n * <H1>Basic example</H1>\n * <H3>Select the best artist</H3>\n * <CreatableSelectDropdown\n * standardOptions={someOptions}\n * onOptionChange={setArtist}\n * width=\"300px\"\n * value={artist ? artist.value : undefined}\n * />\n * {artist && artist.value !== 'Add option...' && (\n * <H3 py={8}>The best artist is: {artist.label}</H3>\n * )}\n * </Box>\n * <Box align=\"left\">\n * <H1>Pre-selected option</H1>\n * <H3>What is the quintessential element of an exceptional artisan?</H3>\n * <CreatableSelectDropdown\n * standardOptions={someOtherOptions}\n * onOptionChange={setElement}\n * width=\"300px\"\n * value={element ? element.value : undefined}\n * />\n * {element && element.value !== 'Add option...' && (\n * <H3 py={8}>\n * {element.value === 'vision' && (\n * 'The artist\\'s vision shapes their creative world.'\n * )}\n * {element.value === 'technique' && (\n * 'Technique is the legacy\\'s bedrock.'\n * )}\n * {element.value === 'expression' && (\n * 'Expression communicates the artist\\'s inner voice.'\n * )}\n * {element.value !== 'vision' &&\n * element.value !== 'technique' &&\n * element.value !== 'expression' && (\n * 'Absent the selection of legitimate alternatives.'\n * )}\n * </H3>\n * )}\n * </Box>\n * </VStack>\n * );\n * }\n * ?)\n */\n\nconst CREATION_OPTION_VALUE: CreationOptionValue = 'add_field'\n\nexport const CreatableSelectDropdown = <T extends string = string>({\n standardOptions,\n initialPlaceholder = 'Select or create...',\n addOptionPlaceholder = 'Select or create...',\n creationOption = {\n label: 'Add field',\n value: CREATION_OPTION_VALUE,\n isCreation: true,\n },\n onOptionChange,\n variant = 'outline',\n defaultValue,\n value,\n menuPlacement = 'bottom',\n ...restProps\n}: CreatableSelectDropdownProps<T>) => {\n const [ selectedOption, setSelectedOption ] =\n useState<Option<T | CreationOptionValue > | null>(() => {\n const targetValue = value ?? defaultValue ?? null\n return targetValue\n ? standardOptions.find((option) => option.value === targetValue) ?? null\n : null\n })\n\n const [ newOptionPlaceholder, setNewOptionPlaceholder ] =\n useState(initialPlaceholder)\n const [ createdOptions, setCreatedOptions ] = useState<Option<T>[]>([])\n const [ createNewOption, setCreateNewOption ] = useState<boolean>(false)\n const [ addFieldInputValue, setAddFieldInputValue ] = useState<string>('')\n\n function isCreationOption (option: any): option is CreationOption {\n return option && typeof option.isCreation === 'boolean'\n }\n\n const ref = useRef<HTMLDivElement>(null)\n\n const checkIfNewOptionTextExistsInOptions = (\n string: string,\n options: Option[]\n ) => any((option) => toLower(option.value) === string, options)\n\n const handleCreateOption = (newOptionTextString: T) => {\n setCreateNewOption(true)\n\n if (isEmpty(trim(newOptionTextString))) {\n return\n }\n\n const newOptionTextLower = toLower(newOptionTextString)\n\n const newOptionExistsInStandardOptions =\n checkIfNewOptionTextExistsInOptions(newOptionTextLower, standardOptions)\n\n const newOptionExistsInCreatedOptions = checkIfNewOptionTextExistsInOptions(\n newOptionTextLower,\n createdOptions\n )\n\n if (!newOptionExistsInCreatedOptions && !newOptionExistsInStandardOptions) {\n const newOption = {\n label: newOptionTextString,\n value: newOptionTextString,\n }\n setCreatedOptions((currentCreatedOptions) => [\n ...currentCreatedOptions,\n newOption,\n ])\n setSelectedOption(newOption)\n onOptionChange(newOption)\n }\n setNewOptionPlaceholder(initialPlaceholder)\n }\n\n const handleChange = (\n newValue: SingleValue<Option<T | CreationOptionValue>>,\n _actionMeta: ActionMeta<Option<T | CreationOptionValue>>\n ) => {\n const option = newValue\n\n if (newValue?.isCreation) {\n setCreateNewOption(true)\n }\n\n if (option == null) {\n return\n }\n\n if (isCreationOption(option)) {\n setNewOptionPlaceholder(addOptionPlaceholder)\n } else {\n setNewOptionPlaceholder(initialPlaceholder)\n }\n if (option.value !== CREATION_OPTION_VALUE) {\n setSelectedOption(option)\n onOptionChange(option)\n }\n }\n\n const combinedOptions = useMemo(\n (): Option<T>[] => uniqBy(prop('value'), [ ...standardOptions, ...createdOptions ]),\n [ standardOptions, createdOptions ]\n )\n\n const customOptions: Option<T | CreationOptionValue>[] = [\n {\n ...creationOption,\n icon: <Icon as={ PlusSolid } color=\"brand\" />,\n },\n ...combinedOptions,\n ]\n\n useEffect(() => {\n const newSelectedOption =\n combinedOptions.find((option) => option.value === value) ?? null\n if (selectedOption?.value !== newSelectedOption?.value) {\n setSelectedOption(newSelectedOption)\n }\n }, [ value, combinedOptions ])\n\n return (\n <Box\n ref={ ref }\n w=\"full\"\n borderRadius=\"none\"\n >\n { createNewOption && (\n <EditableText\n value={ addFieldInputValue }\n startWithEditView={ true }\n onChange={ (v) => {\n setAddFieldInputValue(v)\n } }\n submitOnBlur={ false }\n onCancel={ () => {\n setAddFieldInputValue('')\n setCreateNewOption(false)\n } }\n onSubmit={ (v) => {\n handleCreateOption(v as T)\n setCreateNewOption(false)\n } }\n variant=\"brand\"\n sx={ {\n minWidth: '100%',\n width: '100%',\n } }\n />\n ) }\n { !createNewOption && (\n <CreatableSelect<Option<T | CreationOptionValue>, false,\n GroupBase<Option<T | CreationOptionValue>>>\n menuPlacement={ menuPlacement }\n chakraStyles={ {\n ...customSelectStyles,\n container: (provided) => ({\n ...provided,\n width: '100%',\n }),\n option: (provided, { isSelected }) => ({\n ...provided,\n ...(isSelected && {\n color: 'black',\n }),\n }),\n } }\n components={ getCustomComponents<T | CreationOptionValue>() }\n options={ customOptions }\n menuPortalTarget={ document.body }\n styles={ { menuPortal: (base) => ({ ...base, zIndex: theme.zIndices.popover }) } }\n value={ selectedOption }\n onChange={ handleChange }\n isMulti={ false }\n onCreateOption={ (v) => {\n setCreateNewOption(true)\n setAddFieldInputValue(v)\n } }\n placeholder={ newOptionPlaceholder }\n useBasicStyles={ true }\n variant={ variant }\n { ...(restProps as CreatableProps<\n Option<T | CreationOptionValue>, false,\n GroupBase<Option<T | CreationOptionValue>>>\n ) }\n />\n ) }\n </Box>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { Button, InputRightElement, useDisclosure } from '@chakra-ui/react'\nimport { is } from 'ramda'\nimport { ComboPickerOption, ComboPickerProps, ComboPickerValue } from './types'\nimport { Select, SingleValue } from '../select'\nimport { Box } from '../box'\nimport { FormattedNumberInput } from '../text-field'\n\n/**\n * @see ComboPickerField\n * @see {@link https://northlight.dev/reference/combo-picker}\n */\nexport const ComboPicker = ({\n onChange,\n options,\n size,\n value: valueProp,\n placeholder,\n precision,\n formatPreset,\n isDisabled,\n isReadOnly,\n defaultToZeroIfEmpty = true,\n max = Infinity,\n min = -Infinity,\n ...rest\n}: ComboPickerProps) => {\n const { isOpen, onToggle, onClose } = useDisclosure()\n const [ inputValue, setInputValue ] = useState(valueProp?.input)\n const [ selectOption, setSelectOption ] = useState(valueProp?.option)\n const [ enableSelectInput, setEnableSelectInput ] = useState(false)\n\n const buttonRef = useRef<any>()\n const selectRef = useRef<any>()\n\n const getNewValue = (option?: ComboPickerOption, input?: number): ComboPickerValue => {\n const newValueOption = option ?? options[0]\n\n return (is(Number, input))\n ? { input: Number(input), option: newValueOption }\n : { option: newValueOption }\n }\n\n const handleInputChange = (newInputvalue?: number) => {\n const newValue = getNewValue(valueProp?.option, newInputvalue)\n\n onChange?.(newValue)\n }\n\n const handleSelectClose = () => {\n if (buttonRef.current) {\n buttonRef.current.focus()\n setEnableSelectInput(false)\n }\n\n onClose()\n }\n\n const handleSelectChange = (selectedOption: SingleValue<ComboPickerOption>) => {\n if (selectedOption) {\n onChange?.(getNewValue(selectedOption, valueProp?.input))\n\n if (isOpen) {\n handleSelectClose()\n }\n }\n }\n\n const handleSelectToggle = () => {\n if (!isOpen) {\n setEnableSelectInput(true)\n }\n\n onToggle()\n }\n\n useEffect(() => {\n if (enableSelectInput) {\n selectRef.current.focus()\n }\n }, [ enableSelectInput ])\n\n useEffect(() => {\n const option = valueProp?.option ?? options[0]\n const input = defaultToZeroIfEmpty ? valueProp?.input ?? 0 : valueProp?.input\n\n setSelectOption(option)\n setInputValue(input)\n\n onChange?.(getNewValue(option, input))\n }, [ valueProp?.input, valueProp?.option, defaultToZeroIfEmpty, options ])\n\n const buttonWidth = (buttonRef.current?.offsetWidth ?? 0)\n\n return (\n <>\n <FormattedNumberInput\n width=\"100%\"\n onChange={ (values) => handleInputChange(values.floatValue) }\n value={ inputValue }\n placeholder={ placeholder }\n size={ size }\n numberOfDecimals={ precision }\n preset={ formatPreset }\n disabled={ isDisabled }\n readOnly={ isReadOnly }\n min={ min }\n max={ max }\n { ...rest }\n pr={ `${buttonWidth >= 0 ? buttonWidth + 10 : 0}px` }\n inputRightElement={ (\n <InputRightElement\n width=\"auto\"\n display=\"flex\"\n justifyContent=\"flex-end\"\n py={ 2 }\n mr={ 2 }\n >\n <Button\n ref={ buttonRef }\n isDisabled={ isDisabled }\n onClick={ handleSelectToggle }\n flexShrink=\"0\"\n height=\"100%\"\n data-testid=\"combo-picker-button\"\n >\n { selectOption?.label ?? '' }\n </Button>\n </InputRightElement>\n ) }\n />\n {\n isOpen && (\n <Box position=\"absolute\" width=\"100%\" top={ 0 }>\n <Select\n ref={ selectRef }\n chakraStyles={ { container: (provided) => ({\n ...provided,\n position: 'absolute',\n visibility: 'hidden',\n right: '0',\n }),\n input: (provided) => ({\n ...provided,\n pointerEvents: 'none',\n color: 'transparent',\n display: enableSelectInput ? 'block' : 'none',\n }),\n menu: (provided) => ({\n ...provided,\n width: 'auto',\n right: '0',\n }) } }\n options={ options }\n value={ selectOption ? selectOption.value : undefined }\n onChange={ handleSelectChange }\n onBlur={ handleSelectClose }\n menuIsOpen={ isOpen }\n />\n </Box>\n )\n }\n </>\n )\n}\n","import React from 'react'\nimport { ComboPickerFieldProps } from './types'\nimport { ComboPicker } from './combo-picker'\nimport { Field } from '../form'\n\n/**\n * The <ComboPicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see ComboPicker\n * @see {@link https://northlight.dev/reference/combo-picker}\n *\n * @example (Example)\n * ##Default number format preset(EU) with default decimals(2):\n * (?\n * <Form initialValues={{\"budget\": {input: 123456789.123, option:{label: 'EUR', value: 'eur'}}}}>\n * <ComboPickerField\n * label=\"Budget\"\n * name=\"budget\"\n * placeholder=\"Amount\"\n * options={ [\n * { label: 'USD', value: 'usd' },\n * { label: 'EUR', value: 'eur' },\n * { label: 'SEK', value: 'sek' },\n * ] }\n * />\n * </Form>\n *\n * ?)\n * <br />\n * ##US number format preset with three decimals as Disabled:\n * (?\n * <Form initialValues={{\"budget\": {input: 123456789.1234, option:{label: 'USD', value: 'usd'}}}}>\n * <ComboPickerField\n * label=\"Budget\"\n * name=\"budget\"\n * precision={ 3 }\n * isDisabled={true}\n * formatPreset='us'\n * options={ [\n * { label: 'USD', value: 'usd' },\n * { label: 'EUR', value: 'eur' },\n * { label: 'SEK', value: 'sek' },\n * ] }\n * />\n * </Form>\n *\n * ?)\n * <br />\n * ##NOR number format preset with four decimals as ReadOnly:\n * (?\n * <Form initialValues={{\"budget\": {input: 123456789.1234, option:{label: 'SEK', value: 'sek'}}}}>\n * <ComboPickerField\n * label=\"Budget\"\n * name=\"budget\"\n * precision={ 4 }\n * isReadOnly={true}\n * formatPreset='nor'\n * options={ [\n * { label: 'USD', value: 'usd' },\n * { label: 'EUR', value: 'eur' },\n * { label: 'SEK', value: 'sek' },\n * ] }\n * />\n * </Form>\n *\n * ?)\n * <br />\n */\nexport const ComboPickerField = ({\n name,\n isRequired,\n direction = 'column',\n label,\n validate,\n onChange: onChangeCallback,\n ...rest\n}: ComboPickerFieldProps) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ value, onChange }) => (\n <ComboPicker\n data-testid=\"combo-picker-test-id\"\n aria-label={ label }\n onChange={ (comboPickerValue) => {\n onChange(comboPickerValue)\n onChangeCallback?.(comboPickerValue)\n } }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n\n)\n"],"names":["p","i","A","m","n","c","o","d","Accordion","props","React","ChakraAccordion","__spreadValues","u","r","t","AccordionButton","ChakraAccordionButton","P","e","a","AccordionPanel","ChakraAccordionPanel","AccordionItem","ChakraAccordionItem","useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","useLoadingMessage","prefix","dots","setDots","useInterval","smoothScrollToBottom","div","currentStep","targetScrollTop","originalScrollTop","scrollInterval","scrollProgress","easing","useScrollToBottom","scrollView","messages","useArrowFocus","columns","next","previous","focusFirst","focusLast","useFocusManager","defaultOpts","focusPrevious","repeat","wrap","focusNext","useSelectCallbacks","onChange","onAdd","onRemove","isMulti","items","useRef","val","event","_a","isNil","last","removedItems","map","prop","difference","isBetween","point","min","max","isEventInsideRect","ref","clientX","clientY","top","right","left","bottom","isHtmlElementRef","useOutsideRectClick","callback","state","handleMouseClick","onPointerDown","onMouseUp","onTouchEnd","useScreenSize","screenSizes","useMediaQuery","useDidUpdateEffect","effect","dependencies","didMountRef","luminosity","hexcolor","color","h","g","b","safeUseToken","tokenOrValue","useToken","getContrastColor","textDefault","textInverted","normalized","bgResolved","lInverted","lDefault","threshold","brightColor","darkColor","lBg","ring","highlight","getShades","startShade","endShade","start","end","palette","colors","shade","getInitials","name","firstName","lastName","getFieldError","errors","nameWithoutRightBracket","replace","fieldErrorPath","split","path","s","passPropsToChild","child","styles","isValidElement","cloneElement","getChildrenWithProps","children","predicate","T","Children","addAlpha","alpha","colorInHex","limitAlpha","opacity","createDebounceFunctionInstance","timeout","fn","args","CustomTheme","createContext","useCurrentTheme","useContext","clamp","minValue","maxValue","availableColorSchemes","keys","omit","djb2Hash","str","hash","char","getConsistentRandomColorFromString","index","useResizeWidth","stationaryEdge","minWidthPx","maxWidthPx","defaultWidthPx","adjustableWidth","setAdjustableWidth","startX","onMouseMove","newWidth","customSelectStyles","provided","__spreadProps","background","l","f","tagsInputStyles","isFocused","borderColor","scrollbarStyles","Breadcrumb","Button","sizing","spacing","borderRadius","pulseRing","keyframes","Blinker","isBlinking","Checkbox","Input","borderWidth","PinInput","Select","Radio","Tabs","coreFontWeight","Textarea","Link","colorScheme","Switch","themeMap","processColorSchemeBasedOnTheme","currentTheme","Tag","bgColor","processedColorScheme","tagBgColorRaw","tagBgColor","tagColor","Alert","coreSpacing","NumberInput","isReadOnly","minWidth","minW","NotificationIconButton","Calendar","DragAndDrop","sx","merge","DatePicker","FlipButton","numberOfButtons","Spinner","possibleBgColors","getAvatarBgColor","image","randomColor","Avatar","avatarBgColor","CloseButton","Modal","theme","h4","$arrowBg","cssVar","$arrowBorder","Tooltip","Icon","boxSize","ClipboardInput","ColorPicker","selectedColor","Step","fontWeights","StepList","tabs","H1","h1","H2","h2","H3","h3","H4","H5","h5","H6","h6","Blockquote","blockquote","Tiny","tiny","Capitalized","CAPITALIZED","Lead","lead","Small","small","body14","body16","Label","tinyLabel","xsLabel","smLabel","mdLabel","lgLabel","NumVal","tinyMono","xsMono","smMono","mdMono","lgMono","SplitPane","minLeftWidth","minRightWidth","initialSplit","isOpen","PaneDivider","Carousel","EditableText","isEditing","isEmpty","Toolbox","shakeAnimation","thickRing","getBgColor","getInvalidColorStyles","isInvalid","isImage","getAiColorStyles","textColor","bg","finalBg","sizes","hasLoaded","mode","WebappSkin","WebappSystemTokensSet","WebappComponentsTokensSet","typography","TottSkin","TottSystemTokensSet","TottComponentsTokensSet","CamphouseLightSkin","CamphouseLightSystemTokensSet","CamphouseLightComponentsTokensSet","overrides","components","coreZIndex","coreSizing","coreBoxShadow","coreFontSize","coreLineHeight","coreBorderRadius","extendTheme","tottTheme","camphouseLightTheme","v","z","H","C","M","S","TagsInput","_b","options","identity","isLoading","loadingList","testId","onError","rest","__objRest","menuIsOpen","setMenuIsOpen","inputValue","setInputValue","selectedOptions","setSelectedOptions","setIsFocused","CustomSelect","CreatableSelect","handleChange","values","actionMeta","isValidNewOption","input","availableOptions","any","option","addNewOption","newOption","updatedOptions","clearInput","handleInputChange","newInput","handleKeyDown","trimmedInputValue","handleFocus","Box","base","textInputValue","_","OrganizationLogo","variant","orgName","container","text","useMultiStyleConfig","chakra","ChakraAlert","AspectRatio","ChakraAspectRatio","k","forwardRef","As","size","CustomIcon","ChakraIcon","useStyleConfig","AvatarBadge","notificationCount","badge","q","userImage","icon","UserSquareDuo","BusinessContactDuo","Heading","x","ChakraText","L","FormLabel","VisuallyHidden","positiveOrZero","ifElse","gt","always","EMPTY_RECT","EMPTY_WINDOW","OverflowGroup","initMax","childrenProps","rect","setMax","windowState","setWindowState","isLocked","nbrChildren","updateMax","inc","dec","rectDependency","defaultTo","handleResize","nbrRemainingChildren","shownChildren","take","useOverflowGroup","setRect","node","AvatarGroup","nbrRemainingAvatars","setNbrRemainingAvatars","childrenWithMargin","_child","idx","HStack","Badge","withIcon","iconPosition","iconAs","IconComponent","NorthlightIcons","MediatoolLogoSolid","ChakraBadge","Flex","ChakraSpinner","SpinnerSizeMap","ChakraButton","ChakraCheckbox","shouldTrim","is","trimFormValues","obj","newObj","forEach","property","format","trim","Form","initialValues","onSubmit","validate","formSettings","methods","enableReinitialize","innerFormStyle","joiSchema","customResolver","_context","_options","newMethods","useForm","joiResolver","useImperativeHandle","initalValuesImage","equals","formatValues","handleSubmit","FormProvider","label","BaseField","direction","isRequired","noLabelConnection","passedControl","useFormContext","control","fieldError","FormControl","Stack","Controller","field","FormErrorMessage","Field","useSetValueRefreshed","setValue","watch","CheckboxField","onChangeCallback","labelPlacement","labelSize","CheckboxGroupField","CheckboxGroup","IconButton","ariaLabel","IconWithSize","ChakraIconButton","paletteColors","defaultColors","ColorButton","onClick","selected","defaultArrows","onKeyDown","colorButton","CheckDuo","Popover","ChakraPopover","ColorsExpandButton","expanded","ChevronUpDuo","ChevronDownDuo","RenderInPortal","shouldRenderInPortal","Portal","clearable","expandedColors","popoverProps","onToggle","onClose","useDisclosure","setExpanded","useBoolean","setSelectedColor","visibleColors","setVisibleColors","initialFocusRef","trigger","heading","parsedValue","baseColors","prev","expandColors","getNumberOfColumns","shouldBeFocused","colorVal","handleSelect","clearSelection","PopoverTrigger","ColorsDuo","PopoverContent","PopoverHeader","PopoverBody","FocusScope","SimpleGrid","ColorPickerField","G","FlipButtonContext","useFlipButtonState","useCheckboxGroupState","useRadioGroupState","useFlipButtonGroup","propsWithLabel","useCheckboxGroup","useRadioGroup","useFlipButton","flipButtonGroupProps","I","V","y","B","wrapperRef","isDisabled","iconPlacement","propsWithoutChildren","inputProps","useCheckboxGroupItem","useRadio","button","buttonIcon","focusProps","useFocusRing","focusStyles","focusRing","isSelected","flipButtonProps","mergeProps","mergeAll","CheckSolid","SlideFade","Text","O","W","FlipButtonGroup","childrenWithProps","restWithoutOnChange","FlipButtonGroupField","hoverAndActiveStyles","ResizeHandle","Trigger","handleClick","buttonProps","useButton","CalendarDuo","DateSegment","segment","segmentProps","useDateSegment","isDivider","dateSegment","mapFormat","formatQuery","query","toLower","delimeterIncluded","D","F","DateField","useDateFieldState","createCalendar","dateField","fieldProps","useDateField","segments","dateFormat","getMatchingSegment","find","sortedSegments","id","StyledField","styledField","Table","ChakraTable","CalendarCell","date","currentMonth","cellProps","formattedDate","useCalendarCell","isToday","today","isOutsideMonth","isSameMonth","DayLabels","memo","weekDays","dayLabel","weekDaysWithIds","day","_id","mondayFirstWeekDays","sundayFirstWeekDays","getWeekdays","firstDayOfWeek","CalendarGrid","locale","startDate","gridProps","headerProps","useCalendarGrid","weeksInMonth","getWeeksInMonth","Thead","Tr","Tbody","times","weekIndex","MonthButton","months","MonthSelect","dateSelect","selectedMonth","diff","month","YearSelect","years","year","useYearsCalendar","formatter","useDateFormatter","useYearsRangeCalendar","YearSelectCalendar","YearSelectRangeCalendar","getThursdayDate","thursdayDate","hasWeek53","firstDayOfYear","getWeekNumberAtStartOfMonth","firstDayOfMonth","thursdayOfFirstWeek","firstThursdayOfYear","daysDifference","weekNumber","isYearTransition","getDisplayWeek","baseWeek","nextWeek","RangeCell","range","baseIsSelected","isHighlighted","N","StandaloneCalendarGrid","useLocale","calendarProps","prevButtonProps","nextButtonProps","useCalendar","weekNumberStart","useMemo","ChevronLeftSolid","ChevronRightSolid","useCalendarState","GregorianCalendar","DatePickerLocaleWrapper","I18nProvider","isClearable","resetDate","group","useDatePickerState","groupProps","dialogProps","useDatePicker","parseDate","togglePopup","PopoverAnchor","InputGroup","InputRightElement","XCloseSolid","Clickable","href","linkProps","clickable","useClickable","ReactRouterLink","DateButton","isActive","validRange","getQuickSelectOptions","fiscalStartMonth","fiscalStartDay","thisDay","startOfMonthWithDays","days","endOfMonthWithDays","thisWeek","startOfWeek","endOfWeek","lastWeek","thisMonth","startOfMonth","endOfMonth","lastMonth","thisYear","startOfYear","endOfYear","lastYear","nextMonth","nextThreeMonths","nextSixMonths","nextYear","offsetFiscalYear","thisFiscalYear","lastFiscalYear","yearToDate","S1","S2","F1","F2","F3","F4","fiscalSemesters","fiscalQuarters","seperator","QuickSelect","height","quickDates","updateDate","newDate","getIsActive","shouldShow","dates","quickDate","Spacer","semester","quarter","RangeCalendar","setRange","handleClose","onSave","buttonLabel","clearButtonLabel","rangeCalendarContainer","calendarOneState","newVal","calendarTwoState","dateRange","focusedStartMonthProps","handleSave","handleReset","isValidDateRange","has","tooltipIconMap","CheckCircleSolid","AlertTriangleSolid","AlertCircleSolid","AlertOctagonSolid","InfoSolid","BrightnessSolid","HelpCircleSolid","hasArrow","title","description","hasIcon","iconVariant","TooltipContent","VStack","ChakraTooltip","parseValue","PortalWrapper","renderInPortal","isDatesEqual","date1","date2","DateRangePicker","savedDateRange","defaultDateRange","CustomResetButton","onCancelChanges","dataTestId","defaultOpen","onOpenChange","parsedProps","useDateRangePickerState","startFieldProps","endFieldProps","useDateRangePicker","useOutsideClick","ResetButton","cancelOrResetDateChange","handleModalClose","isCurrentDateSaved","isDateResettable","canShowSaveAndCancelButtons","shouldShowResetButton","shouldShowSaveAndCancelButtons","InputGroupWrapper","inputLeftElement","inputRightElement","not","all","DatePickerField","setError","DateRangePickerField","TimeoutProgressCircle","progress","ringColor","CIRCUMFERENCE","strokeDashoffset","Circle","IntentButton","TrashDuo","onTimeout","tooltipText","setProgress","isHovering","setIsHovering","timerRef","clearTimer","Center","startTime","updatedProgress","defaultFadeDelay","defaultOffset","unFocusStyles","getChildrenWithFocus","disableFocus","show","getDuration","enterDuration","exitDuration","duration","inDuration","outDuration","getOffsets","offset","offsetX","offsetY","delta","useDelay","enterDelay","exitDelay","showWithDelay","setShowWithDelay","useHiddenDisplay","anchor","onTransitionComplete","hidden","setHidden","Fade","hideDisplay","transition","isHidden","ChakraFade","ScaleFade","ChakraScaleFade","Slide","ChakraSlide","deltaX","deltaY","ChakraSlideFade","Collapse","ChakraCollapse","w","isResizable","shouldPush","autoFocus","resizeLimit","zIndex","slideProps","newChildren","getPixelSize","sizeToken","widthInRem","resizeProps","ToolboxHeader","header","ToolboxContent","body","ToolboxFooter","footer","ChakraRadio","RadioGroup","ChakraRadioGroup","RadioGroupField","carouselItemWidth","carouselItemSpacing","variants","CarouselItem","itemWidth","itemHeight","motion","CarouselArrow","arrow","showArrows","showRadio","controlledIndex","carouselStyles","dragging","setDragging","containerWidth","setContainerWidth","activeIndex","setActiveIndex","useMotionValue","radio","childrenAsArray","numberOfChildren","carouselTotalWidth","totalWidth","containerRef","getNewX","updateActiveIndex","animate","handleRightArrowClick","handleLeftArrowClick","searchBarStyles","getComponents","chakraComponents","Q","SearchBar","defaultOptions","customOption","customTag","debouncedWaitTime","getCustomOptions","clearInputOnSelect","closeMenuOnSelect","onSearchInputChange","SearchDuo","filtered","setFiltered","filterInput","setFilterInput","debounceFunction","customComponents","simpleFilter","filter","test","getOptions","newOptions","loadOptions","resetFiltered","action","AsyncSelect","BaseSearchBarField","SearchBarField","DndContext","ChakraTag","OverflowIndicator","nbrRemainingTags","TagGroup","DefaultOverflowIndicator","setNbrRemainingTags","DragItem","isDragging","itemLabel","TagLabel","TagRightIcon","DotsMatrixSolid","Draggable","disableDrag","useDraggable","attributes","listeners","setNodeRef","transform","childrenWithDragCursor","dragEventListeners","CSS","Droppable","useDroppable","Sortable","SortableContext","SortableItem","dblClickThreshold","useSortable","timeStampSnapchot","inEditMode","handlePointerDown","style","DragHandle","DragDuo","Z","DropZone","dropZone","MultiSort","collisionDetection","sensors","activeItem","setActiveItem","moveBetweenContainers","activeContainerName","overContainerName","overIndex","item","remove","insert","customSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","findContainer","key","getContainers","active","over","overId","indexOf","arrayMove","rectIntersection","SortableList","createKey","strategy","onMovedItem","displayOverlay","modifiers","identifierItems","prevIds","oldIndex","newIndex","newItems","rectSortingStrategy","DragOverlay","SortableContainer","FastList","itemCount","itemSize","width","overscanCount","initialScrollOffset","AutoSizer","autoWidth","autoHeight","VariableSizeList","_index","FastGrid","rows","columnSize","rowSize","overscanRowCount","overscanColumnCount","VariableSizeGrid","rowIndex","columnIndex","E","mapEditableVariantsToButtonSubmitVariants","mapEditableVariantsToButtonCancelVariants","EditableControls","getSubmitButtonProps","getCancelButtonProps","useEditableControls","onEdit","useEditableState","controls","EditDuo","leftItem","preview","Editable","newValue","InputLeftElement","EditablePreview","ChakraEditableInput","ModalBase","isCentered","ChakraModal","ModalOverlay","ModalContent","ModalCloseButton","stayMountedOnClose","ModalBody","ChakraModalBody","FileEditorModal","fileName","setFileName","handleCrop","canEditFileName","canCropImage","zoomLevel","setZoomLevel","position","setPosition","ModalHeader","AvatarEditor","pos","Slider","SliderTrack","SliderFilledTrack","SliderThumb","ZoomInDuo","ModalFooter","ConfirmDeleteModal","confirmDelete","handleDelete","updateTimeThreshold","animationSlideTime","ProgressBar","animationSlideTimeMs","ChakraProgress","formattedTime","seconds","baseString","hours","minutes","newSeconds","LoadingBar","loaded","onLoadEnd","timeRef","timeLeft","setTimeLeft","deltaTime","newEstimate","fiveHundredMB","imageLazyThreshold","defaultEditOptions","j","U","getResizingFactor","imgWidth","imgHeight","maxWidth","maxHeight","convertBlobToFile","blob","type","compressImage","file","quality","canvas","context","imageBuffer","resolve","resizingFactor","scaledWidth","scaledHeight","newImage","readableFileSize","getImageAsFile","res","getFormatsAsArray","acceptFormat","getAcceptedExtensions","getAcceptedFormats","getFileExtension","getFileFormat","validFileFormat","isValidFile","maxFileSize","isValid","getNewUploadingFiles","curr","files","buffer","prevIDs","currentIDs","removedItemsIDs","filesIDs","intersection","updatedData","generateId","isFile","isFileImage","onlyAcceptsImages","formats","extensions","premiseOne","premiseTwo","createFileObject","createPreviewFileObject","createFileObjectFromSrc","isOverflowing","element","toBase64","reject","reader","error","correctFileExtension","getFileFormattedName","handleDownload","FileIconButton","FilePicker","compression","uploadedInitial","showProgress","loadWithSpinner","editFileOptions","fileInputRef","imageEditorRef","setFile","setIsInvalid","setName","editModal","deleteModal","editable","setEditable","setHasLoaded","setIsLoading","setIsImage","uploaded","setUploaded","onlyImageAccepted","isUploading","filePicker","handleOnClick","fileType","newFile","clearImage","handleImageUpload","isFileTypeImage","compressedImage","handleDrop","Image","Image03Solid","UploadCloudSolid","FileBlankDuo","EditBoxDuo","DownloadDuo","TrashFullDuo","FilePickerField","formattedFile","MultiFileUploader","addFilesToQueue","updatePreviewFiles","inputRef","multiFilePicker","setActive","errorMessage","setErrorMessage","toggleHover","updateMultipleFiles","newFiles","filesArr","validFiles","fileCheck","compressedFiles","FileItem","addFile","deleteFile","isLazy","canEdit","canEditImage","canEditName","fileItem","editModalDisclosure","deleteModalDisclosure","setShow","loadingImage","setLoadingImage","Image03Duo","ChakraImage","MultiFileList","uploadingFiles","enableSmartLoad","uploadingFilesReference","setUploadingFilesReference","overflowing","setOverflowing","formattedFiles","listRef","MultiFilePicker","enablePreLoad","bufferFiles","setBufferFiles","previewFiles","setPreviewFiles","getIndexById","findIndex","addedFile","indexOfChanged","newPreviewFiles","indexOfRemoved","updateQueuedFiles","queuedFiles","MultiFilePickerField","getFiles","sources","source","concat","removedIndex","src","newValues","MediatoolThemeProvider","webappTheme","themeName","ChakraProvider","Menu","ChakraMenu","NumberInputStepper","includePercentage","enableStepperArrows","ChakraNumberInputStepper","Divider","NumberIncrementStepper","ChevronUpSolid","NumberDecrementStepper","ChevronDownSolid","regex","advancedParseFloat","splitValue","intPart","head","decimalPart","roundingError","match","decimalsErrorLength","length","correctDecimalsLength","onInputChange","onlyAcceptPercentage","percentageProps","percentageFactor","filteredNaN","ChakraNumberInput","NumberInputField","formatNumber","factor","initialValue","displayValue","setDisplayValue","parsed","hasNotification","blinkerColor","setIsBlinking","notifier","ChakraPinInput","isStringArray","getMatchingValue","propEq","generateComponentsUpdateKey","prevOptions","renderedOptions","ChakraReactSelect","BaseSelectField","inner","SelectField","SortableMultiValue","onMouseDown","innerProps","SortableMultiValueRemove","isOptionArray","SortableSelect","matchedValue","optionsArray","acc","found","opt","activeItems","setActiveItems","activeItemsRef","handleDragOver","useCallback","handleDragEnd","_event","finalOrder","mergedComponents","sortableItems","restrictToParentElement","closestCenter","horizontalListSortingStrategy","ChakraSwitch","SwitchField","Tab","elementColor","tabSx","ChakraTab","TabPanel","ChakraTabPanel","isManual","ChakraTabs","ChakraTextarea","TextareaField","roundToPrecision","numberOfDecimals","presetMap","FormattedNumberInput","preset","isPercentage","valueProp","onBlur","defaultNumberOfDecimals","getNumberFormatValues","number","numericFormatter","validateRange","vNum","onValueChangeHandler","sourceInfo","newFloatValue","NumericFormat","FormattedNumberInputField","CustomInput","InputMask","MaskedTextInput","mask","maskPlaceholder","alwaysShowMask","placeholder","nameProp","TextField","toastIconMap","BellSolid","Toast","useToast","toast","useChakraToast","toastIdRef","opts","toastProps","replacePreviousToast","pinVariantMap","pinSizeMap","StatusPin","pinColor","pinSizeTuple","outerSize","innerSize","AsyncError","message","AlertTitle","AlertDescription","StepPanel","ChakraStepPanel","Steps","ChakraSteps","indicator","step","labelStyle","descriptionStyle","indicatorStyle","ChakraStep","ChakraStepList","hasCopied","onCopy","useClipboard","tooltip","CopyDuo","dividerRef","mouseDownHandler","requestedFrame","target","moveEvent","containerStyle","Grid","PaneItem","GridItem","StepStack","rowHeight","stepCircleAlignment","stepCircleMarginTopPx","parsedRowHeight","row","ChakraOption","getCustomComponents","PlusSolid","J","K","CREATION_OPTION_VALUE","CreatableSelectDropdown","standardOptions","initialPlaceholder","addOptionPlaceholder","creationOption","onOptionChange","defaultValue","menuPlacement","restProps","selectedOption","setSelectedOption","targetValue","newOptionPlaceholder","setNewOptionPlaceholder","createdOptions","setCreatedOptions","createNewOption","setCreateNewOption","addFieldInputValue","setAddFieldInputValue","isCreationOption","checkIfNewOptionTextExistsInOptions","string","handleCreateOption","newOptionTextString","newOptionTextLower","newOptionExistsInStandardOptions","currentCreatedOptions","_actionMeta","combinedOptions","uniqBy","customOptions","newSelectedOption","ComboPicker","precision","formatPreset","defaultToZeroIfEmpty","_c","selectOption","setSelectOption","enableSelectInput","setEnableSelectInput","buttonRef","selectRef","getNewValue","newValueOption","newInputvalue","handleSelectClose","handleSelectChange","handleSelectToggle","buttonWidth","ComboPickerField","comboPickerValue"],"mappings":"+wFAAAA,GAAA,OAAA,eAAAC,GAAA,OAAA,sBAAAC,GAAA,OAAA,UAAA,eAAAC,GAAA,OAAA,UAAA,qBAAAC,GAAA,CAAAC,EAAAC,EAAA,IAAAA,KAAAD,EAAAL,GAAAK,EAAAC,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAD,EAAAC,CAAA,EAAA,EAAAC,GAAA,CAAAF,EAAAC,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAJ,GAAA,KAAAI,EAAA,CAAA,GAAAF,GAAAC,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAA,KAAAA,GAAAK,CAAA,EAAAH,GAAA,KAAAG,EAAA,CAAA,GAAAF,GAAAC,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,OAAAD,CAAA,EA8CO,MAAMG,GAAaC,GACxBC,EAAA,cAACC,YAAAC,GAAA,GAAqBH,CAAQ,CAAA,EC/ChC,IAAAF,GAAA,OAAA,eAAAF,GAAA,OAAA,sBAAAL,GAAA,OAAA,UAAA,eAAAa,GAAA,OAAA,UAAA,qBAAAT,GAAA,CAAAU,EAAAR,EAAAS,IAAAT,KAAAQ,EAAAP,GAAAO,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAd,GAAA,CAAAa,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,CAAA,GAAAN,GAAA,KAAAM,EAAAS,CAAA,GAAAX,GAAAU,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAV,GAAA,QAAAU,KAAAV,GAAAC,CAAA,EAAAO,GAAA,KAAAP,EAAAS,CAAA,GAAAX,GAAAU,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAoBO,MAAME,GAAmBP,GAC9BC,EAAA,cAACO,kBAAAL,GAAA,GAA2BH,CAAQ,CAAA,ECrBtC,IAAAS,GAAA,OAAA,eAAAd,GAAA,OAAA,sBAAAe,GAAA,OAAA,UAAA,eAAAZ,GAAA,OAAA,UAAA,qBAAAa,GAAA,CAAAf,EAAAC,EAAA,IAAAA,KAAAD,EAAAa,GAAAb,EAAAC,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAD,EAAAC,CAAA,EAAA,EAAAL,GAAA,CAAAI,EAAAC,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAa,GAAA,KAAAb,EAAA,CAAA,GAAAc,GAAAf,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,GAAAF,GAAA,QAAA,KAAAA,GAAAE,CAAA,EAAAC,GAAA,KAAAD,EAAA,CAAA,GAAAc,GAAAf,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,OAAAD,CAAA,EAUO,MAAMgB,GAAkBZ,GAC7BC,EAAA,cAACY,iBAAAV,GAAA,GAA0BH,CAAQ,CAAA,ECXrC,IAAAU,GAAA,OAAA,eAAAhB,GAAA,OAAA,sBAAAC,GAAA,OAAA,UAAA,eAAAG,GAAA,OAAA,UAAA,qBAAAQ,GAAA,CAAAV,EAAAC,EAAA,IAAAA,KAAAD,EAAAc,GAAAd,EAAAC,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAD,EAAAC,CAAA,EAAA,EAAAL,GAAA,CAAAI,EAAAC,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAF,GAAA,KAAAE,EAAA,CAAA,GAAAS,GAAAV,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,GAAAH,GAAA,QAAA,KAAAA,GAAAG,CAAA,EAAAC,GAAA,KAAAD,EAAA,CAAA,GAAAS,GAAAV,EAAA,EAAAC,EAAA,CAAA,CAAA,EAAA,OAAAD,CAAA,EAMO,MAAMkB,GAAiBd,GAC5BC,EAAA,cAACc,gBAAAZ,GAAA,GAAyBH,CAAQ,CAAA,ECLvBgB,GAAc,CAAIC,EAAUC,IAAkB,CACzD,KAAM,CAAEC,EAAgBC,CAAkB,EAAIC,WAAYJ,CAAK,EAE/D,OAAAK,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAU,WAAW,IAAM,CAC/BH,EAAkBH,CAAK,CACzB,EAAGC,CAAK,EACR,MAAO,IAAM,CACX,aAAaK,CAAO,CACtB,CACF,EAAG,CAAEN,EAAOC,CAAM,CAAC,EAEZC,CACT,ECZaK,GAAoB,CAACC,EAAiB,GAAIP,EAAgB,MAAQ,CAC7E,KAAM,CAAEQ,EAAMC,CAAQ,EAAIN,EAAAA,SAAS,GAAG,EAEtC,OAAAO,EAAAA,YAAY,IAAM,CACZF,EAAK,SAAW,EAClBC,EAAQ,GAAG,EAEXA,EAAQ,GAAGD,IAAO,CAEtB,EAAGR,CAAK,EACD,GAAGO,IAASC,GACrB,ECdaG,GAAwBC,GAAwB,CAE3D,IAAIC,EAAc,EAClB,MAAMC,EAAkBF,EAAI,aAAeA,EAAI,aACzCG,EAAoBH,EAAI,UACxBI,EAAiB,YAAY,IAAM,CACvC,GAAIH,GAAe,GACjB,cAAcG,CAAc,MACvB,CACLH,GAAe,EACf,MAAMI,EAAiBJ,EAAc,GAC/BK,EAAS,GAAK,EAAID,IAAmB,EAAIA,GAE/CL,EAAI,UAAYG,GAAsBD,EAAkBC,GAAqBG,EAEjF,EAAG,EAAE,CACP,ECNaC,GAAoB,CAACC,EAAuCC,IAAwB,CAC/FjB,EAAAA,UAAU,IAAM,CACd,MAAMQ,EAAMQ,EAAW,QACnBR,GACFD,GAAqBC,CAAG,CAE5B,EAAG,CAAES,CAAS,CAAC,CACjB,ECfaC,GAAiBC,GAAoB,CAChD,KAAM,CACJ,UAAWC,EACX,cAAeC,EACf,WAAAC,EACA,UAAAC,CACF,EAAIC,GAAAA,gBAAgB,EAEdC,EAAc,CAClB,WAAY,CACV,KAAM,GACN,OAAQ,CACV,EACA,UAAW,CACT,KAAM,GACN,OAAQ,CACV,EACA,UAAW,CACT,KAAM,GACN,OAAQN,CACV,EACA,QAAS,CACP,KAAM,GACN,OAAQA,CACV,CACF,EAEMO,EAAgB,CAAC,CACrB,OAAAC,EACA,KAAAC,CACF,EAAIH,EAAY,YAAc,CAC5B,QAASvD,EAAI,EAAGA,EAAIyD,EAAQzD,GAAK,EAC/BmD,EAAS,CAAE,KAAAO,CAAK,CAAC,CAErB,EAEMC,EAAY,CAAC,CACjB,OAAAF,EACA,KAAAC,CACF,EAAIH,EAAY,aAAe,CAC7B,QAASvD,EAAI,EAAGA,EAAIyD,EAAQzD,GAAK,EAC/BkD,EAAK,CAAE,KAAAQ,CAAK,CAAC,CAEjB,EAuBA,MAAO,CACL,cAtBqBxC,GAAW,CAChC,OAAQA,EAAE,IAAK,CACb,IAAK,aACHyC,EAAUJ,EAAY,UAAU,EAChC,MACF,IAAK,YACHC,EAAcD,EAAY,SAAS,EACnC,MACF,IAAK,YACHrC,EAAE,eACFyC,EAAAA,EAAUJ,EAAY,SAAS,EAC/B,MACF,IAAK,UACHrC,EAAE,eACFsC,EAAAA,EAAcD,EAAY,OAAO,EACjC,KAGJ,CACF,EAIE,cAAAC,EACA,UAAAG,EACA,WAAAP,EACA,UAAAC,CACF,CACF,ECtEaO,GAAqB,CAGhC,CACE,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EAAU,GACV,MAAAvC,CACF,IAAqC,CACrC,MAAMwC,EAAQC,EAAAA,OAAuCzC,CAAK,EA0B1D,MAxBqB,CACnB0C,EACAC,IACG,CApBP,IAAAC,EAsBI,GADAR,EAASM,EAAKC,CAAK,EACf,CAACJ,GAAW,CAACM,EAAAA,MAAMH,CAAG,EACxBL,EAAOK,EAAU,KAAK,UAEtB,CAACG,QAAMH,CAAG,GACTA,EAAY,OAAUF,EAAM,QAAgB,OAE7CH,GAAMO,EAAAE,EAAAA,KAAKJ,CAAU,IAAf,KAAA,OAAAE,EAAkB,KAAK,MACxB,CACL,MAAMG,EAAeC,EAAAA,IACnBC,OAAK,OAAO,EACZC,EACEX,WAAAA,EAAWC,EAAM,QAAmB,CAAEA,EAAM,OAAQ,EACpDE,CACF,CACF,EACAJ,EAASS,EAAa,SAAW,EAAIA,EAAa,CAAC,EAAIA,CAAY,EAErEP,EAAM,QAAUE,CAClB,CAEF,ECvCMS,GAAY,CAACC,EAAeC,EAAaC,IAAiBF,GAASC,GAAOD,GAASE,EAEnFC,GAAoB,CACxBC,EACAb,IACG,CACH,IAAIc,EACAC,EAUJ,GARIf,aAAiB,YACnBc,EAAUd,EAAM,QAChBe,EAAUf,EAAM,SACPA,aAAiB,YAAcA,EAAM,eAAe,CAAC,IAC9Dc,EAAUd,EAAM,eAAe,CAAC,EAAE,QAClCe,EAAUf,EAAM,eAAe,CAAC,EAAE,SAGhCE,QAAMY,CAAO,GAAKZ,EAAAA,MAAMa,CAAO,EAAG,MAAO,GAE7C,KAAM,CACJ,IAAAC,EACA,MAAAC,EACA,KAAAC,EACA,OAAAC,CACF,EAAIN,EAAI,QAAQ,sBAAA,EAEhB,OAAOL,GAAUM,EAASI,EAAMD,CAAK,GAAKT,GAAUO,EAASC,EAAKG,CAAM,CAC1E,EAEMC,GACHP,GACC,CAACX,QAAMW,EAAI,OAAO,EAETQ,GACb,CAACR,EAA2CS,IAAuD,CAMjG,MAAMC,EALWzB,EAAAA,OAAO,CACtB,yBAA0B,GAC1B,0BAA2B,EAC7B,CAAC,EAEsB,QAEvBpC,YAAU,IAAM,CACd,MAAM8D,EAAoBxB,GAAmC,CACvD,CAACoB,GAAiBP,CAAG,GAGPD,GAAkBC,EAAKb,CAAK,GAG9CsB,EAAStB,CAAK,CAChB,EAEMyB,EAAsBzB,GAAmC,CACxDoB,GAAiBP,CAAG,IAGpBD,GAAkBC,EAAKb,CAAK,IAC/BuB,EAAM,yBAA2B,IAErC,EAEMG,EAAkB1B,GAAsB,CAC5C,GAAIuB,EAAM,0BAA2B,CACnCA,EAAM,0BAA4B,GAClC,OAGEA,EAAM,2BACRA,EAAM,yBAA2B,GACjCC,EAAiBxB,CAAK,EAE1B,EAEM2B,EAAc3B,GAAsB,CACxCuB,EAAM,0BAA4B,GAC9BA,EAAM,2BACRA,EAAM,yBAA2B,GACjCC,EAAiBxB,CAAK,EAE1B,EAEA,OAAS,SAAA,iBAAiB,YAAayB,EAAe,EAAI,EAC1D,SAAS,iBAAiB,UAAWC,EAAW,EAAI,EACpD,SAAS,iBAAiB,aAAcD,EAAe,EAAI,EAC3D,SAAS,iBAAiB,WAAYE,EAAY,EAAI,EAE/C,IAAM,CACX,SAAS,oBAAoB,YAAaF,EAAe,EAAI,EAC7D,SAAS,oBAAoB,UAAWC,EAAW,EAAI,EACvD,SAAS,oBAAoB,aAAcD,EAAe,EAAI,EAC9D,SAAS,oBAAoB,WAAYE,EAAY,EAAI,CAC3D,CACF,EAAG,CAAEL,CAAS,CAAC,CACjB,EC/FaM,GAAgB,IAAM,CACjC,MAAMC,EAAcC,EAAAA,cAAc,CAAE,sBAAuB,qBAAsB,CAAC,EAClF,OAAID,EAAY,CAAC,EACR,KAELA,EAAY,CAAC,EACR,KAEF,IACT,ECTaE,GAAqB,CAACC,EAAwBC,IAAiC,CAC1F,MAAMC,EAAcpC,EAAAA,OAAO,EAAK,EAEhCpC,EAAAA,UAAU,IAAM,CACVwE,EAAY,SACdF,EAEFE,EAAAA,EAAY,QAAU,EACxB,EAAGD,CAAY,CACjB,ECXaE,GAAcC,GAAqB,CAC9C,GAAI,CAACA,GAAY,OAAOA,GAAa,SAAU,OAAO,OAAO,IAE7D,IAAIC,EAAQD,EAAS,KAAK,EAE1B,GAAI,CAAC,iCAAiC,KAAKC,CAAK,EAC9C,OAAO,OAAO,IAGZA,EAAM,CAAC,IAAM,MAAKA,EAAQA,EAAM,MAAM,CAAC,GACvCA,EAAM,SAAW,IACnBA,EAAQA,EAAM,MAAM,EAAE,EAAE,IAAKC,GAAMA,EAAIA,CAAC,EAAE,KAAK,EAAE,GAGnD,MAAM,EAAI,SAASD,EAAM,UAAU,EAAG,CAAC,EAAG,EAAE,EACtCE,EAAI,SAASF,EAAM,UAAU,EAAG,CAAC,EAAG,EAAE,EACtCG,EAAI,SAASH,EAAM,UAAU,EAAG,CAAC,EAAG,EAAE,EAG5C,OADoB,EAAI,IAAME,EAAI,IAAMC,EAAI,KAAO,GAErD,ECjBA,SAASC,GAAcC,EAA8B,CACnD,GAAI,CACF,OAAOC,EAAS,SAAA,SAAUD,CAAY,CACxC,MAAA,CACE,OAAOA,CACT,CACF,CAEO,MAAME,GAAoBP,GAAkB,CACjD,MAAMQ,EAAcF,EAAAA,SAAS,SAAU,cAAc,EAC/CG,EAAeH,WAAS,SAAU,eAAe,EAEjDI,EAAa,OAAOV,GAAU,SAAWA,EAAM,KAAK,EAAKA,EAIzDW,EADQ,iCAAiC,KAAKD,CAAU,EAEzDA,EAAW,CAAC,IAAM,IAAMA,EAAa,IAAIA,IAC1CN,GAAaM,CAAU,EAErBE,EAAYd,GAAWW,CAAY,EACnCI,EAAWf,GAAWU,CAAW,EACjCM,GAAaF,EAAYC,GAAY,EACrCE,EAAcH,EAAYC,EAAWJ,EAAeD,EACpDQ,EAAYJ,EAAYC,EAAWL,EAAcC,EAEjDQ,EAAMnB,GAAWa,CAAU,EACjC,GAAI,QAAO,MAAMM,CAAG,EAEpB,OAAOA,GAAOH,EAAYE,EAAYD,CACxC,EC/BaG,GAAiB,CAC5B,cAAe,CACb,QAAS,OACT,KAAM,MACN,UAAW,cACX,WAAY,KACd,CACF,ECPaC,GAAsB,CACjC,GAAI,IACJ,GAAI,MACJ,QAAS,IACT,GAAI,WACJ,WAAY,MACd,ECLaC,GAAY,CAACC,EAAoBC,IAAsB,CAClE,IAAIC,EACAC,EACJ,OAAKF,EAGMA,EAAWD,GACpBE,EAAQF,EACRG,EAAMF,IAENC,EAAQD,EACRE,EAAMH,IAPNE,EAAQF,EACRG,EAAMH,GAUN,OAAO,KAAKI,EAAAA,OAAO,EAAE,OAAO,CAACC,EAAQ1B,IAC/BA,IAAU,OAAe0B,EACtBA,EAAO,OACZ,OAAO,KAAKD,UAAQzB,CAAc,CAAC,EAChC,OAAQhF,GACP,SAASA,EAAO,EAAE,GAAKuG,GACtB,SAASvG,EAAO,EAAE,GAAKwG,CAC1B,EACC,IAAKG,GAAUF,EAAAA,QAAQzB,CAAc,EAAE2B,CAA8B,CAAC,CAC3E,EACC,CAAA,CAAc,CAErB,EC9BaC,GAAeC,GAAiB,CAC3C,KAAM,CAAEC,EAAWC,CAAS,EAAIF,EAAK,YAAY,EAAE,MAAM,GAAG,EAC5D,OAAOC,GAAaC,EAChB,GAAGD,EAAU,CAAC,IAAIC,EAAS,CAAC,IAC5BD,EAAU,CAAC,CACjB,ECDO,SAASE,GAAsCH,EAAcI,EAA4B,CAC9F,MAAMC,EAA0BC,EAAQ,QAAA,KAAM,GAAIN,CAAI,EAEhDO,EAAiBC,EADG,MAAA,UACsBH,CAAuB,EAGvE,OADsCI,EAAAA,KAAKF,EAAgBH,CAAM,CAEnE,CCXA,IAAAtI,GAAA,OAAA,eAAAF,GAAA,OAAA,sBAAAH,GAAA,OAAA,UAAA,eAAAiJ,GAAA,OAAA,UAAA,qBAAAnI,GAAA,CAAAC,EAAAI,EAAAb,IAAAa,KAAAJ,EAAAV,GAAAU,EAAAI,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAS,EAAAI,CAAA,EAAAb,EAAAc,GAAA,CAAAL,EAAAI,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,IAAAnB,GAAA,KAAAmB,EAAAb,CAAA,GAAAQ,GAAAC,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAH,GAAA,QAAAG,KAAAH,GAAAgB,CAAA,EAAA8H,GAAA,KAAA9H,EAAAb,CAAA,GAAAQ,GAAAC,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAS,CAAA,EAGO,MAAMmI,GAAmB,CAACC,EAAwBC,IACvDC,EAAAA,eAAeF,CAAK,EAChBG,EAAAA,aAAaH,EAAOvI,GAAA,CAAA,EACjBwI,EACJ,EACCD,ECRN,IAAAF,GAAA,OAAA,eAAA5I,GAAA,OAAA,sBAAAE,GAAA,OAAA,UAAA,eAAAoG,GAAA,OAAA,UAAA,qBAAAvG,GAAA,CAAA,EAAAU,EAAAR,IAAAQ,KAAA,EAAAmI,GAAA,EAAAnI,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAR,CAAA,CAAA,EAAA,EAAAQ,CAAA,EAAAR,EAAAL,GAAA,CAAA,EAAAa,IAAA,CAAA,QAAAR,KAAAQ,IAAAA,EAAA,CAAA,GAAAP,GAAA,KAAAO,EAAAR,CAAA,GAAAF,GAAA,EAAAE,EAAAQ,EAAAR,CAAA,CAAA,EAAA,GAAAD,GAAA,QAAAC,KAAAD,GAAAS,CAAA,EAAA6F,GAAA,KAAA7F,EAAAR,CAAA,GAAAF,GAAA,EAAAE,EAAAQ,EAAAR,CAAA,CAAA,EAAA,OAAA,CAAA,EAIa,MAAAiJ,GAAuB,CAClCC,EACAJ,EACAK,EAAgEC,EAAAA,IAE1CC,EAAS,SAAA,QAAQH,CAAQ,EACJ,IAAI,CAACL,EAAOlJ,IACrDwJ,EAAUN,EAAOlJ,CAAC,EACdiJ,GAAiBC,EAAOvI,GAAA,CAAA,EAAKwI,CAAAA,CAAQ,EACrCD,CACL,ECZUS,GAAW,CAAClD,EAAemD,EAAgB,IAAM,CAC5D,MAAMC,EAAa9C,EAAS,SAAA,SAAUN,CAAK,EAErCqD,EAAa,KAAK,IAAI,KAAK,IAAIF,EAAO,CAAC,EAAG,CAAC,EAC3CG,EAAU,KAAK,MAAMD,EAAa,GAAG,EAE3C,MAAO,GAAGD,IAAaE,EAAQ,SAAS,EAAE,EAAE,eAC9C,ECDaC,GAAkCtI,GAAkB,CAC/D,IAAIuI,EAEJ,OAAQC,GAAY,IAAIC,IAAc,CACpC,aAAaF,CAAO,EACpBA,EAAU,WAAW,IAAM,CACzBC,EAAG,GAAGC,CAAI,CACZ,EAAGzI,CAAK,CACV,CACF,ECba0I,GAAcC,EAAAA,cAA4B,aAAa,EAEvDC,GAAkB,IACfC,aAAWH,EAAW,ECPzBI,GAAQ,CAACC,EAAkBC,EAAkBjJ,IACxD,KAAK,IAAI,KAAK,IAAIA,EAAOgJ,CAAQ,EAAGC,CAAQ,ECGxCC,GAAwBC,EAAAA,KAAKC,OAAK,CAAE,MAAO,EAAG3C,EAAAA,OAAO,CAAC,EAEtD4C,GAAW,CAACC,EAAa5C,IAAqB,CAClD,IAAI6C,EAAO,KAEX,QAAShL,EAAI,EAAGA,EAAI+K,EAAI,OAAQ/K,GAAK,EAAG,CACtC,MAAMiL,EAAOF,EAAI,WAAW/K,CAAC,EAC7BgL,GAAQA,GAAQ,GAAKA,EAAOC,EAE5BD,GAAQA,EAGV,OAAQ,KAAK,IAAIA,CAAI,EAAI7C,EAAO,MAClC,EAEa+C,GAAqC,CAChDH,EACA5C,EAAmBwC,KAChB,CACH,MAAMQ,EAAQL,GAASC,EAAK5C,CAAM,EAClC,OAAOA,EAAOgD,CAAK,CACrB,ECfaC,GAAiB,CAAC,CAC7B,eAAAC,EAAiB,OACjB,WAAAC,EAAa,EACb,WAAAC,EAAa,OAAO,iBACpB,eAAAC,CACF,IAA2B,CACzB,KAAM,CAAEC,EAAiBC,CAAmB,EAAI7J,EAAAA,SAAS2J,CAAc,EAsBvE,MAAO,CACL,gBAAAC,EACA,mBAAAC,EACA,YAvBkB,CAClB,YAAcxK,GAA2B,CACvCA,EAAE,eACF,EAAA,MAAMyK,EAASzK,EAAE,QACX0K,EAAexH,GAA+B,CAClD,MAAMyH,EACJR,IAAmB,OACfI,GAAmBrH,EAAM,QAAUuH,GACnCF,GAAmBrH,EAAM,QAAUuH,GACzCD,EAAmBlB,GAAMc,EAAYC,EAAYM,CAAQ,CAAC,CAC5D,EACM/F,EAAY,IAAM,CACtB,SAAS,oBAAoB,YAAa8F,CAAW,EACrD,SAAS,oBAAoB,UAAW9F,CAAS,CACnD,EACA,SAAS,iBAAiB,YAAa8F,CAAW,EAClD,SAAS,iBAAiB,UAAW9F,CAAS,CAChD,CACF,CAMA,CACF,ibCxCa,MAAAgG,GAA8C,CACzD,UAAYC,GAAcC,GAAArL,GAAA,GACrBoL,CAAAA,EADqB,CAExB,MAAO,OACP,MAAO,cACT,CACA,EAAA,OAAQ,CAACA,EAAUpG,IAAWqG,GAAArL,GAAA,CAAA,EACzBoL,CADyB,EAAA,CAE5B,WAAYpG,EAAM,WAAa,iCAC/B,aAAc,WACd,QAAS,CACP,WAAY,iCACd,CACF,CAAA,EACA,eAAiBoG,GAAcC,GAAArL,GAAA,CAAA,EAC1BoL,CAD0B,EAAA,CAE7B,mBAAoB,+BACtB,CACA,EAAA,YAAcA,GAAcC,GAAArL,GAAA,CAAA,EACvBoL,CADuB,EAAA,CAE1B,MAAO,qBACT,CAAA,EACA,YAAcA,GAAcC,GAAArL,GAAA,GACvBoL,CADuB,EAAA,CAE1B,MAAO,yBACT,CACA,EAAA,WAAY,CAACA,EAAUpG,IAAU,CA7BnC,IAAAtB,EA8BI,MAAM4H,EAAatG,EAAM,KAAK,QAC1B,qCACAtB,EAAAsB,EAAM,KAAK,QAAX,KAAAtB,EAAoB0H,EAAS,QACjC,OAAQC,GAAArL,GAAA,GACHoL,CADG,EAAA,CAEN,QAASE,EACT,MAAOjF,GAAiBiF,CAAU,CACpC,CAAA,CACF,EACA,SAAWF,GAAcC,GAAArL,GAAA,GACpBoL,CADoB,EAAA,CAEvB,QAAS,oBACX,CACF,CAAA,EC1CA,IAAAG,GAAA,OAAA,eAAAlD,GAAA,OAAA,iBAAA1I,GAAA,OAAA,0BAAAO,GAAA,OAAA,sBAAAD,GAAA,OAAA,UAAA,eAAAuL,GAAA,OAAA,UAAA,qBAAAnM,GAAA,CAAAK,EAAAa,EAAAJ,IAAAI,KAAAb,EAAA6L,GAAA7L,EAAAa,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAJ,CAAA,CAAA,EAAAT,EAAAa,CAAA,EAAAJ,EAAAK,GAAA,CAAAd,EAAAa,IAAA,CAAA,QAAAJ,KAAAI,IAAAA,EAAA,IAAAN,GAAA,KAAAM,EAAAJ,CAAA,GAAAd,GAAAK,EAAAS,EAAAI,EAAAJ,CAAA,CAAA,EAAA,GAAAD,GAAA,QAAAC,KAAAD,GAAAK,CAAA,EAAAiL,GAAA,KAAAjL,EAAAJ,CAAA,GAAAd,GAAAK,EAAAS,EAAAI,EAAAJ,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAAF,GAAA,CAAAE,EAAAa,IAAA8H,GAAA3I,EAAAC,GAAAY,CAAA,CAAA,EAEO,MAAMkL,GAAkB,CAC7BC,EACAC,IAC6BN,GAAArL,GAAA,CAAA,EAC1BmL,EAAAA,EAD0B,CAE7B,UAAYC,GAAcC,GAAArL,GAAA,GACrBoL,CAAAA,EADqB,CAExB,EAAG,OACH,OAAQ,OACR,OAAQ,WACR,SAAU,OACV,UAAW,KACX,YAAa,iBACb,aAAc,iBACd,mBAAoB,SACpB,mBAAoB,aACpB,MAAO,eACP,UAAWM,EAAY,aAAaC,IAAgB,MACtD,CACA,EAAA,QAAUP,GAAcC,GAAArL,GAAA,CACnBoL,EAAAA,CAAAA,EADmB,CAEtB,UAAW,KACX,OAAQ,OACR,WAAY,OACd,CAAA,EACA,eAAiBA,GAAcC,GAAArL,GAAA,CAAA,EAC1BoL,CAD0B,EAAA,CAE7B,mBAAoB,gCACpB,UAAW,OACX,KAAM,MACR,CACF,CAAA,CAAA,EClCaQ,GAAkB,CAC7B,sBAAuB,CACrB,MAAO,MACP,OAAQ,KACV,EACA,4BAA6B,CAC3B,WAAY,4BACd,EACA,4BAA6B,CAC3B,aAAc,kBACd,OAAQ,YACR,YAAa,yBACb,eAAgB,yBAChB,WAAY,4BACd,EACA,kCAAmC,CACjC,aAAc,kBACd,OAAQ,aACR,YAAa,yBACb,eAAgB,yBAChB,WAAY,4BACd,CACF,ECpBaC,GAAwC,CACnD,MAAO,CAAE,OAAQ,WAAY,EAC7B,UAAW,CACT,KAAM,CACJ,QAAS,CAAE,GAAK,CAAE,EAClB,MAAO,eACP,WAAY,WACZ,SAAU,KACV,OAAQ,CACN,GAAI,YACJ,aAAc,OACd,UAAW,MACb,CACF,EACA,UAAW,CACT,MAAO,UACP,SAAU,IACZ,CACF,CACF,ECnBaC,GAAqC,CAChD,MAAO,CACL,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOC,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQD,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,GACxB,mBAAoBC,EAAQ,gBAAgB,EAAE,OAAO,GACrD,iBAAkBA,EAAQ,gBAAgB,EAAE,OAAO,EACrD,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOD,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQD,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,GACxB,mBAAoBC,EAAQ,gBAAgB,EAAE,OAAO,GACrD,iBAAkBA,EAAQ,gBAAgB,EAAE,OAAO,EACrD,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOD,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQD,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,GACxB,mBAAoBC,EAAQ,gBAAgB,EAAE,OAAO,GACrD,iBAAkBA,EAAQ,gBAAgB,EAAE,OAAO,EACrD,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOD,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQD,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,GACxB,mBAAoBC,EAAQ,gBAAgB,EAAE,OAAO,GACrD,iBAAkBA,EAAQ,gBAAgB,EAAE,OAAO,EACrD,EACF,EACA,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQlG,EAAO,MAAOmG,CAAa,CAAE,KAAO,CACjE,MAAOnG,EAAM,KAAK,QAClB,aAAcmG,EAAa,OAAO,QAClC,cAAe,CACb,KAAM,MACN,UAAWnG,EAAM,OAAO,KACxB,WAAY,KACd,CACF,GACA,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,QAASA,EAAM,WAAW,OAAO,QACjC,MAAOA,EAAM,KAAK,OAAO,QACzB,OAAQ,CACN,QAASA,EAAM,WAAW,OAAO,eAAe,CAClD,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,gBAAgB,CACnD,CACF,GACA,OAAQ,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACzC,QAASA,EAAM,WAAW,OAAO,OACjC,MAAOA,EAAM,KAAK,OAAO,OACzB,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,cAAc,EAC1C,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,MACnC,CACF,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,eAAe,CAClD,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,QAASA,EAAM,WAAW,OAAO,QACjC,MAAOA,EAAM,KAAK,OAAO,QACzB,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,eAAe,EAC3C,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,OACnC,CACF,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,gBAAgB,CACnD,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACxC,MAAOA,EAAM,KAAK,SAClB,QAASA,EAAM,WAAW,OAAO,MACjC,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,aAAa,EACzC,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,KACnC,CACF,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,cAAc,CACjD,CACF,GACA,aAAc,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC/C,MAAOA,EAAM,KAAK,OAAO,aACzB,QAASA,EAAM,WAAW,OAAO,MACjC,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,MAC5B,MAAOA,EAAM,KAAK,SAClB,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,MACjC,MAAOA,EAAM,KAAK,OAAO,YAC3B,CACF,EACA,QAAS,CACP,GAAIA,EAAM,WAAW,OAAO,aAAa,EACzC,MAAOA,EAAM,KAAK,QACpB,CACF,GACA,KAAM,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACvC,eAAgB,YAChB,MAAOA,EAAM,KAAK,OAAO,KACzB,QAASA,EAAM,WAAW,OAAO,KACjC,OAAQ,CACN,MAAOA,EAAM,KAAK,OAAO,YAAY,EACrC,QAASA,EAAM,WAAW,OAAO,YAAY,CAC/C,EACA,QAAS,CACP,MAAOA,EAAM,KAAK,OAAO,YAAY,EACrC,QAASA,EAAM,WAAW,OAAO,aAAa,CAChD,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,MAAOA,EAAM,KAAK,QAClB,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,aAAa,CAC3C,EACA,QAAS,CACP,GAAIA,EAAM,WAAW,OAAO,cAAc,CAC5C,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACxC,MAAOA,EAAM,KAAK,QAClB,QAASA,EAAM,WAAW,OAAO,MACjC,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,aAAa,EACzC,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,KACnC,CACF,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,cAAc,CACjD,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACrC,MAAOA,EAAM,KAAK,SAClB,QAASA,EAAM,GAAG,GAAG,QACrB,OAAQ,CACN,QAASA,EAAM,GAAG,GAAG,MACrB,UAAW,CACT,QAASA,EAAM,GAAG,GAAG,OACvB,CACF,EACA,QAAS,CACP,QAASA,EAAM,GAAG,GAAG,MACvB,CACF,GACA,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC5C,MAAOA,EAAM,GACb,QAASA,EAAM,WAAW,OAAO,MACjC,OAAQ,CACN,GAAIA,EAAM,GAAG,GAAG,QAChB,MAAOA,EAAM,KAAK,SAClB,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,MACjC,MAAOA,EAAM,EACf,CACF,EACA,QAAS,CACP,GAAIA,EAAM,GAAG,GAAG,MAChB,MAAOA,EAAM,KAAK,QACpB,CACF,GACA,OAAQ,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACzC,MAAOA,EAAM,KAAK,OAAO,OACzB,QAASA,EAAM,WAAW,OAAO,MACjC,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,cAAc,EAC1C,MAAOA,EAAM,KAAK,OAAO,OACzB,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,MACjC,MAAOA,EAAM,KAAK,OAAO,MAC3B,CACF,EACA,QAAS,CACP,GAAIA,EAAM,WAAW,OAAO,cAAc,EAC1C,MAAOA,EAAM,KAAK,OAAO,MAC3B,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,MAAOA,EAAM,KAAK,OAAO,QACzB,QAASA,EAAM,WAAW,OAAO,QACjC,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,eAAe,EAC3C,MAAOA,EAAM,KAAK,OAAO,QACzB,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,MACjC,MAAOA,EAAM,KAAK,OAAO,OAC3B,CACF,EACA,QAAS,CACP,GAAIA,EAAM,WAAW,OAAO,gBAAgB,EAC5C,MAAOA,EAAM,KAAK,OAAO,gBAAgB,CAC3C,CACF,EACF,EACA,aAAc,CACZ,KAAM,IACR,CACF,ECzMMoG,GAAYC,GAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAgBLC,GAAsC,CACjD,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQ7E,CAAQ,EAAG,MAAAzB,EAAO,WAAAuG,CAAW,KAAO,CACjE,SAAU,WACV,aAAc,MACd,QAASvG,IAAU,GAAKyB,EAAQ,KAAK,GAAK,EAAIzB,EAC9C,QAASuG,EACL,CACA,QAAS,KACT,SAAU,WACV,QAAS,QACT,MAAO,OACP,OAAQ,OACR,WAAY,QACZ,UAAW,QACX,aAAc,MACd,QAASvG,IAAU,GAAK,WAAaA,EACrC,UAAW,SAASoG,4DACpB,OAAQ,MACV,EACE,CAAA,CACN,GACA,MAAO,CACL,MAAO,CAAC,CAAE,MAAO,CAAE,MAAOH,CAAO,CAAE,KAAO,CACxC,OAAQA,EAAO,QAAQ,KAAK,EAC5B,MAAOA,EAAO,QAAQ,KAAK,CAC7B,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,OAAQA,EAAO,QAAQ,GACvB,MAAOA,EAAO,QAAQ,EACxB,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,OAAQA,EAAO,QAAQ,GACvB,MAAOA,EAAO,QAAQ,EACxB,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,OAAQA,EAAO,QAAQ,GACvB,MAAOA,EAAO,QAAQ,EACxB,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,OAAQA,EAAO,QAAQ,GACvB,MAAOA,EAAO,QAAQ,EACxB,EACF,EACA,aAAc,CACZ,KAAM,KACN,MAAO,UACT,CACF,EChEaO,GAAsC,CACjD,MAAO,CAAE,UAAW,OAAQ,EAC5B,MAAO,CACL,GAAI,CACF,QAAS,CACP,SAAU,CACZ,CACF,EACA,GAAI,CACF,QAAS,CACP,SAAU,CACZ,CACF,EACA,GAAI,CACF,QAAS,CACP,SAAU,CACZ,CACF,CACF,EACA,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQxG,EAAO,QAAAsD,CAAQ,CAAE,KAAO,CACrD,QAAS,CACP,YAAatD,EAAM,OAAO,SAAS,QACnC,GAAIA,EAAM,WAAW,SAAS,QAC9B,YAAa,EACb,SAAU,CACR,YAAaA,EAAM,OAAO,SAAS,QACnC,GAAIA,EAAM,WAAW,SAAS,QAC9B,OAAQ,CACN,YAAaA,EAAM,OAAO,SAAS,QACnC,GAAIA,EAAM,WAAW,SAAS,OAChC,CACF,EACA,SAAU,CACR,YAAaA,EAAM,OAAO,SAAS,MACnC,GAAIA,EAAM,WAAW,SAAS,QAC9B,SAAU,CACR,GAAIA,EAAM,WAAW,SAAS,KAChC,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,SAAS,MACnC,GAAIA,EAAM,WAAW,SAAS,OAChC,CACF,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,SAAS,eAAe,EAClD,GAAIA,EAAM,WAAW,SAAS,OAChC,EACA,UAAW,CACT,YAAaA,EAAM,OAAO,SAAS,SACnC,GAAIA,EAAM,WAAW,SAAS,SAC9B,QAASsD,EAAQ,SAAS,SAC1B,SAAU,CACR,YAAatD,EAAM,OAAO,SAAS,QACnC,GAAIA,EAAM,WAAW,SAAS,QAC9B,QAASsD,EAAQ,SAAS,SAC1B,MAAO,QACP,OAAQ,CACN,YAAatD,EAAM,OAAO,SAAS,QACnC,GAAIA,EAAM,WAAW,SAAS,QAC9B,QAASsD,EAAQ,SAAS,QAC5B,CACF,EACA,OAAQ,CACN,YAAatD,EAAM,OAAO,SAAS,SACnC,GAAIA,EAAM,WAAW,SAAS,SAC9B,QAASsD,EAAQ,SAAS,QAC5B,CACF,CACF,CACF,GACA,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CAAE,MAAO6C,CAAa,CAAE,KAAO,CAChD,QAAS,CACP,aAAcA,EAAa,SAAS,OACtC,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAa,CAAE,KAAO,CAChD,QAAS,CACP,aAAcA,EAAa,SAAS,IACtC,CACF,EACF,CACF,ECvFaM,GAAmC,CAC9C,MAAO,CAAE,QAAS,OAAQ,EAC1B,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQzG,CAAM,CAAE,KAAO,CAC5C,MAAO,CACL,MAAOA,EAAM,KAAK,QAClB,aAAc,CACZ,MAAOA,EAAM,KAAK,MAAM,YACxB,QAAS,CACX,CACF,CACF,GACA,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CACjB,OAAQA,EACR,MAAOkG,EACP,MAAOC,EACP,QAASO,EACT,QAAApD,CACF,CAAE,KAAO,CACP,MAAO,CACL,mBAAoB4C,EAAQ,gBAAgB,EAAE,MAAM,QACpD,iBAAkBA,EAAQ,gBAAgB,EAAE,MAAM,QAClD,QAASlG,EAAM,WAAW,MAAM,iBAAiB,EACjD,aAAcmG,EAAa,MAAM,QACjC,YAAaO,EAAY,MAAM,QAC/B,YAAa1G,EAAM,OAAO,MAAM,QAChC,UAAW,CACT,cAAe,CACb,YAAaA,EAAM,OAAO,MAAM,QAClC,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,QAClC,CACF,EACA,cAAe,CACb,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,MAChC,UAAW,mBAAmBA,EAAM,OAAO,MAAM,QACjD,SAAU,CACR,UAAW,mBAAmBA,EAAM,OAAO,MAAM,QACjD,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,KAClC,CACF,EACA,OAAQ,CACN,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,eAAe,CACjD,EACA,SAAU,CACR,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,MAChC,UAAW,mBAAmBA,EAAM,OAAO,MAAM,OACnD,EACA,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,kBAAkB,EAClD,YAAaA,EAAM,OAAO,MAAM,SAChC,QAASsD,EAAQ,MAAM,QACzB,CACF,EACA,MAAO,CACL,OAAQ,OACR,WAAY,OACZ,MAAOtD,EAAM,KAAK,OACpB,CACF,GACA,OAAQ,CAAC,CAAE,MAAO,CAChB,OAAQA,EACR,MAAOkG,EACP,MAAOC,EACP,QAASO,EACT,QAAApD,CACF,CAAE,KAAO,CACP,MAAO,CACL,mBAAoB4C,EAAQ,gBAAgB,EAAE,MAAM,QACpD,iBAAkBA,EAAQ,gBAAgB,EAAE,MAAM,QAClD,aAAcC,EAAa,MAAM,OACjC,YAAaO,EAAY,MAAM,QAC/B,QAAS1G,EAAM,WAAW,MAAM,gBAAgB,EAChD,UAAW,CACT,cAAe,CACb,YAAaA,EAAM,OAAO,MAAM,QAClC,EACA,OAAQ,CACN,QAASA,EAAM,WAAW,MAAM,gBAAgB,CAClD,CACF,EACA,OAAQ,CACN,QAASA,EAAM,WAAW,MAAM,cAAc,CAChD,EACA,cAAe,CACb,UAAW,mBAAmBA,EAAM,OAAO,MAAM,QACjD,YAAaA,EAAM,OAAO,MAAM,MAChC,QAASA,EAAM,WAAW,MAAM,cAAc,EAC9C,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,gBAAgB,CAClD,EACA,SAAU,CACR,UAAW,mBAAmBA,EAAM,OAAO,MAAM,QACjD,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,KAClC,CACF,EACA,SAAU,CACR,UAAW,mBAAmBA,EAAM,OAAO,MAAM,QACjD,QAASA,EAAM,WAAW,MAAM,cAAc,EAC9C,YAAaA,EAAM,OAAO,MAAM,KAClC,EACA,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,iBAAiB,EACjD,YAAaA,EAAM,OAAO,MAAM,SAChC,QAASsD,EAAQ,MAAM,QACzB,CACF,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CACjB,OAAQtD,EACR,MAAOkG,EACP,MAAOC,EACP,QAASO,EACT,QAAApD,CACF,CAAE,KAAO,CACP,MAAO,CACL,mBAAoB4C,EAAQ,gBAAgB,EAAE,MAAM,QACpD,iBAAkBA,EAAQ,gBAAgB,EAAE,MAAM,QAClD,QAASlG,EAAM,WAAW,MAAM,iBAAiB,EACjD,aAAcmG,EAAa,MAAM,QACjC,kBAAmBO,EAAY,MAAM,QACrC,kBAAmB1G,EAAM,OAAO,MAAM,QACtC,UAAW,CACT,cAAe,CACb,YAAaA,EAAM,OAAO,MAAM,QAClC,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,QAClC,CACF,EACA,OAAQ,CACN,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,eAAe,CACjD,EACA,cAAe,CACb,OAAQ,CACN,UAAW,aAAaA,EAAM,OAAO,MAAM,QAC3C,YAAaA,EAAM,OAAO,MAAM,KAClC,EACA,SAAU,CACR,UAAW,aAAaA,EAAM,OAAO,MAAM,QAC3C,YAAaA,EAAM,OAAO,MAAM,MAChC,QAASA,EAAM,WAAW,MAAM,eAAe,CACjD,CACF,EACA,SAAU,CACR,OAAQ,CACN,UAAW,aAAaA,EAAM,OAAO,MAAM,QAC3C,YAAaA,EAAM,OAAO,MAAM,KAClC,EACA,QAASA,EAAM,WAAW,MAAM,eAAe,CACjD,EACA,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,kBAAkB,EAClD,YAAaA,EAAM,OAAO,MAAM,SAChC,QAASsD,EAAQ,MAAM,QACzB,CACF,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CACZ,OAAQtD,EACR,MAAOkG,EACP,MAAOC,EACP,QAASO,EACT,QAAApD,CACF,CAAE,KAAO,CACP,MAAO,CACL,mBAAoB4C,EAAQ,gBAAgB,EAAE,MAAM,QACpD,iBAAkBA,EAAQ,gBAAgB,EAAE,MAAM,QAClD,QAASlG,EAAM,WAAW,MAAM,iBAAiB,EACjD,aAAcmG,EAAa,MAAM,QACjC,YAAaO,EAAY,MAAM,QAC/B,YAAa1G,EAAM,OAAO,MAAM,QAChC,UAAW,CACT,cAAe,CACb,YAAaA,EAAM,OAAO,MAAM,QAClC,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,QAClC,CACF,EACA,cAAe,CACb,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,OAAQ,CACN,UAAW,mBAAmBA,EAAM,OAAO,KAC3C,YAAaA,EAAM,OAAO,EAC5B,EACA,SAAU,CACR,UAAW,mBAAmBA,EAAM,OAAO,MAAM,QACjD,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,KAClC,CACF,EACA,OAAQ,CACN,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,eAAe,CACjD,EACA,SAAU,CACR,QAASA,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,MAAM,KAClC,EACA,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,kBAAkB,EAClD,YAAaA,EAAM,OAAO,MAAM,SAChC,QAASsD,EAAQ,MAAM,QACzB,CACF,EACA,MAAO,CACL,OAAQ,OACR,WAAY,OACZ,MAAOtD,EAAM,KAAK,OACpB,CACF,EACF,CACF,EC5Na2G,GAAuC,CAClD,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CACjB,MAAOR,EACP,QAASO,EACT,OAAQ1G,EACR,MAAOkG,EACP,QAAA5C,CACF,CAAE,KAAO,CACP,YAAatD,EAAM,OAAO,MAAM,QAChC,aAAcmG,EAAa,MAAM,QACjC,YAAaO,EAAY,MAAM,QAC/B,GAAI1G,EAAM,WAAW,MAAM,iBAAiB,EAC5C,MAAOA,EAAM,KAAK,QAClB,cAAekG,EAAQ,gBAAgB,EAAE,MAAM,QAC/C,OAAQ,CACN,GAAIlG,EAAM,WAAW,MAAM,eAAe,EAC1C,YAAaA,EAAM,OAAO,MAAM,eAAe,CACjD,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,MAChC,GAAIA,EAAM,WAAW,MAAM,eAAe,EAC1C,UAAW,OACX,YAAa0G,EAAY,EAC3B,EACA,SAAU,CACR,GAAI1G,EAAM,WAAW,MAAM,eAAe,EAC1C,YAAaA,EAAM,OAAO,MAAM,MAChC,aAAc,CACZ,MAAO,aACT,CACF,EACA,UAAW,CACT,GAAIA,EAAM,WAAW,MAAM,kBAAkB,EAC7C,YAAaA,EAAM,OAAO,MAAM,SAChC,QAASsD,EAAQ,MAAM,SACvB,OAAQ,CACN,GAAItD,EAAM,WAAW,MAAM,kBAAkB,EAC7C,YAAaA,EAAM,OAAO,MAAM,QAClC,CACF,EACA,aAAc,CACZ,MAAOA,EAAM,KAAK,MAAM,WAC1B,EACA,UAAW,CACT,YAAaA,EAAM,OAAO,MAAM,QAClC,CACF,EACF,CACF,ECjDa4G,GAAoC,CAC/C,MAAO,CAAE,QAAS,MAAO,EACzB,UAAW,CAAC,CAAE,MAAO,CACnB,MAAOT,EACP,QAASO,EACT,OAAQ1G,EACR,MAAOkG,CACT,CAAE,KAAO,CACP,MAAO,CACL,mBAAoBA,EAAQ,gBAAgB,EAAE,OAAO,QACrD,iBAAkBA,EAAQ,gBAAgB,EAAE,OAAO,QACnD,YAAaQ,EAAY,OACzB,MAAO1G,EAAM,KAAK,QAClB,YAAaA,EAAM,OAAO,OAAO,QACjC,aAAcmG,EAAa,OAAO,QAClC,OAAQ,CACN,YAAanG,EAAM,OAAO,OAAO,eAAe,CAClD,EACA,cAAe,CACb,YAAaA,EAAM,OAAO,OAAO,MACjC,UAAW,aAAaA,EAAM,OAAO,OAAO,OAC9C,EACA,SAAU,CACR,YAAaA,EAAM,OAAO,OAAO,MACjC,UAAW,MACb,EACA,UAAW,CACT,YAAa0G,EAAY,OACzB,YAAa1G,EAAM,OAAO,OAAO,SACjC,cAAe,CACb,YAAaA,EAAM,OAAO,OAAO,QACnC,CACF,EACA,UAAW,CACT,YAAaA,EAAM,OAAO,OAAO,SACjC,GAAIA,EAAM,WAAW,OAAO,SAC5B,OAAQ,CACN,YAAaA,EAAM,OAAO,OAAO,QACnC,CACF,EACA,aAAc,CACZ,MAAOA,EAAM,KAAK,OAAO,WAC3B,CACF,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,OAAO,OAC3B,CACF,GACA,SAAU,CACR,QAAS,CAAA,EACT,GAAI,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACrC,MAAO,CACL,cAAe,CACb,YAAaA,EAAM,OAAO,GAC1B,UAAW,aAAaA,EAAM,OAAO,IACvC,CAEF,CAEF,EAEF,CACF,EC9Da6G,GAAmC,CAC9C,MAAO,CAAE,UAAW,QAAS,WAAY,EACzC,MAAO,CACL,GAAI,CAAC,CAAE,MAAO,CAAE,QAASH,CAAY,CAAE,KAAO,CAC5C,QAAS,CACP,SAAU,CACR,YAAaA,EAAY,MAAM,YAAY,CAC7C,CACF,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,QAASA,CAAY,CAAE,KAAO,CAC5C,QAAS,CACP,SAAU,CACR,YAAaA,EAAY,MAAM,YAAY,CAC7C,CACF,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,QAASA,CAAY,CAAE,KAAO,CAC5C,QAAS,CACP,SAAU,CACR,YAAaA,EAAY,MAAM,YAAY,CAC7C,CACF,CACF,EACF,EACA,UAAW,CAAC,CAAE,MAAO,CAAE,QAASA,EAAa,OAAQ1G,CAAM,CAAE,KAAO,CAClE,QAAS,CACP,YAAaA,EAAM,OAAO,MAAM,QAChC,GAAIA,EAAM,WAAW,MAAM,QAC3B,YAAa0G,EAAY,MAAM,QAC/B,SAAU,CACR,YAAa1G,EAAM,OAAO,MAAM,QAChC,GAAIA,EAAM,WAAW,MAAM,QAC3B,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,QAChC,GAAIA,EAAM,WAAW,MAAM,OAC7B,CACF,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,eAAe,EAC/C,GAAIA,EAAM,WAAW,MAAM,OAC7B,EACA,UAAW,CACT,YAAaA,EAAM,OAAO,MAAM,SAChC,GAAIA,EAAM,WAAW,MAAM,SAC3B,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,SAChC,GAAIA,EAAM,WAAW,MAAM,QAC7B,CACF,EACA,SAAU,CACR,YAAaA,EAAM,OAAO,MAAM,MAChC,GAAIA,EAAM,WAAW,MAAM,MAC3B,YAAa0G,EAAY,MAAM,QAC/B,OAAQ,CACN,YAAa1G,EAAM,OAAO,MAAM,MAChC,GAAIA,EAAM,WAAW,MAAM,MAC3B,YAAa0G,EAAY,MAAM,OACjC,CACF,EACA,cAAe,CACb,KAAM,MACN,UAAW1G,EAAM,OAAO,KACxB,WAAY,KACd,CACF,EACA,aAAc,CACZ,KAAM,IACR,CACF,EACF,ECtEa8G,GAAkC,CAC7C,MAAO,CAAE,KAAM,EACf,UAAW,CAAC,CAAE,MAAO,CAAE,YAAaC,CAAe,CAAE,KAAO,CAC1D,IAAK,CACH,WAAYA,EAAe,QAC7B,CACF,GACA,SAAU,CACR,eAAgB,CAAC,CAAE,MAAO,CAAE,OAAQ/G,CAAM,CAAE,KAAO,CACjD,IAAK,CACH,aAAc,IACd,MAAOA,EAAM,KAAK,QAClB,UAAW,CACT,GAAIA,EAAM,WAAW,KAAK,qBAAqB,EAC/C,MAAOA,EAAM,KAAK,KAAK,qBAAqB,CAC9C,EACA,OAAQ,CACN,MAAOA,EAAM,KAAK,KAAK,qBAAqB,CAC9C,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,CACF,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,EAAO,MAAOmG,CAAa,CAAE,KAAO,CAC/D,IAAK,CACH,MAAOnG,EAAM,KAAK,QAClB,aAAcmG,EAAa,OAAO,QAClC,UAAW,CACT,GAAInG,EAAM,WAAW,KAAK,qBAAqB,EAC/C,MAAOA,EAAM,KAAK,KAAK,qBAAqB,CAC9C,EACA,OAAQ,CACN,MAAOA,EAAM,KAAK,KAAK,qBAAqB,CAC9C,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,CACF,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACrC,IAAK,CACH,aAAc,IACd,UAAW,CACT,QAASA,EAAM,GAAG,GAAG,QACrB,MAAOA,EAAM,KAAK,QACpB,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,CACF,CACF,GACA,KAAM,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACvC,IAAK,CACH,MAAOA,EAAM,KAAK,QAClB,UAAW,CACT,MAAOA,EAAM,KAAK,KAAK,qBAAqB,CAC9C,EACA,OAAQ,CACN,MAAOA,EAAM,KAAK,KAAK,qBAAqB,CAC9C,EACA,QAAS,CACP,GAAIA,EAAM,KAAK,WACjB,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,CACF,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACxC,IAAK,CACH,SAAU,WACV,MAAOA,EAAM,KAAK,QAClB,YAAa,EACb,QAAS,GACT,WAAY,2BACZ,QAAS,CACP,QAAS,KACT,SAAU,WACV,KAAM,EACN,IAAK,MACL,UAAW,mBACX,MAAO,MACP,OAAQ,MACR,aAAc,IACd,QAAS,OACX,EACA,UAAW,CACT,QAAS,EACT,OAAQ,CACN,QAAS,CACX,CACF,EACA,OAAQ,CACN,QAAS,EACX,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,CACF,CACF,EACF,CACF,EChHagH,GAAuC,CAClD,UAAW,CAAC,CAAE,MAAO,CACnB,MAAOd,EACP,OAAQlG,EACR,QAAS0G,EACT,MAAOP,CACT,CAAE,KAAO,CACP,mBAAoBD,EAAQ,gBAAgB,EAAE,SAAS,QACvD,iBAAkBA,EAAQ,gBAAgB,EAAE,SAAS,QACrD,aAAcC,EAAa,SAAS,QACpC,YAAaO,EAAY,SAAS,QAClC,YAAa1G,EAAM,OAAO,SAAS,QACnC,MAAOA,EAAM,KAAK,QAClB,QAASA,EAAM,WAAW,SAAS,QACnC,OAAQ,CACN,YAAaA,EAAM,OAAO,SAAS,eAAe,EAClD,QAASA,EAAM,WAAW,SAAS,KACrC,EACA,cAAe,CACb,YAAaA,EAAM,OAAO,SAAS,MACnC,UAAW,aAAaA,EAAM,OAAO,SAAS,QAC9C,QAASA,EAAM,WAAW,SAAS,MACrC,EACA,SAAU,CACR,UAAW,OACX,YAAaA,EAAM,OAAO,SAAS,MACnC,QAASA,EAAM,WAAW,SAAS,KACrC,EACA,UAAW,CACT,cAAe,CACb,YAAaA,EAAM,OAAO,SAAS,SACnC,QAASA,EAAM,WAAW,SAAS,OACrC,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,SAAS,QACrC,CACF,EACA,UAAW,CACT,QAASA,EAAM,WAAW,SAAS,SACnC,OAAQ,CACN,YAAaA,EAAM,OAAO,SAAS,OACrC,CACF,EACA,aAAc,CACZ,MAAOA,EAAM,KAAK,SAAS,WAC7B,CACF,GACA,SAAU,CACR,QAAS,CAAA,EACT,GAAI,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACrC,cAAe,CACb,OAAQ,CACN,UAAW,aAAaA,EAAM,OAAO,KACrC,YAAaA,EAAM,OAAO,EAC5B,CACF,CACF,EAEF,CACF,ECzDaiH,GAAmC,CAC9C,UAAW,CAAC,CAAE,YAAAC,CAAY,KAAO,CAC/B,OAAQ,CACN,KAAM,MACN,UAAW,GAAGA,QACd,WAAY,KACd,CACF,GACA,aAAc,CACZ,YAAa,eACf,CACF,ECbaC,GAAqC,CAChD,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQnH,EAAO,QAAAsD,CAAQ,CAAE,KAAO,CACrD,UAAW,CACT,QAASA,EAAQ,OAAO,QAC1B,EACA,MAAO,CACL,QAAStD,EAAM,WAAW,OAAO,QACjC,SAAU,CACR,QAASA,EAAM,WAAW,OAAO,iBAAiB,CACpD,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,CACF,EACA,MAAO,CACL,QAASA,EAAM,WAAW,OAAO,KACnC,CACF,EACF,ECnBMoH,GAAyD,CAC7D,oBAAqB,CACnB,MAAO,OACP,KAAM,OACN,OAAQ,QACR,KAAM,OACR,EACA,YAAa,CACb,EAAA,UAAW,CAAA,CACb,EAOaC,GAAiC,CAAC,CAC7C,aAAAC,EACA,YAAAJ,CACF,IAAwC,CAtBxC,IAAAtJ,EAuBE,OAAAA,EAAA0E,EAAAA,KAAa,CAAEgF,EAAcJ,CAAY,EAAGE,EAAQ,IAApD,KAAAxJ,EAAyDsJ,CAAAA,ECnB9CK,GAAiC,CAC5C,MAAO,CAAE,WAAY,EACrB,UAAW,CACT,UAAW,CACT,WAAY,UACd,CACF,EACA,MAAO,CACL,GAAI,CACF,UAAW,CACT,aAAc,aAChB,CACF,EACA,GAAI,CACF,UAAW,CACT,aAAc,aAChB,CACF,EACA,GAAI,CACF,UAAW,CACT,aAAc,aAChB,CACF,CACF,EACA,SAAU,CACR,MAAO,CAAC,CAAE,MAAO,CAAE,OAAA7F,CAAO,EAAG,QAAA8F,EAAS,YAAAN,EAAa,aAAAI,CAAa,IAAM,CACpE,MAAMG,EAAuBJ,GAA+B,CAAE,aAAAC,EAAc,YAAAJ,CAAY,CAAC,EAEnFQ,EACJF,IACC9F,EAAO+F,CAAoB,GAAK/F,EAAO+F,CAAoB,EAAE,GAAG,EAC7D/F,EAAO+F,CAAoB,EAAE,GAAG,EAChCA,GAEAE,EAAa,OAAOD,GAAkB,SAAWA,EAAc,OAASA,EAExEE,EAAWrH,GAAiBD,WAAS,SAAUqH,CAAU,CAAC,EAEhE,MAAO,CACL,UAAW,CACT,QAASA,EACT,MAAOC,CACT,CACF,CACF,EACA,OAAQ,CAAC,CAAE,MAAO,CAAE,OAAAlG,CAAO,EAAG,YAAAwF,EAAa,QAAAM,EAAS,aAAAF,CAAa,IAAM,CACrE,MAAMG,EAAuBJ,GAA+B,CAAE,aAAAC,EAAc,YAAAJ,CAAY,CAAC,EAEnFQ,EACJF,IACC9F,EAAO+F,CAAoB,GAAK/F,EAAO+F,CAAoB,EAAE,GAAG,EAC7D/F,EAAO+F,CAAoB,EAAE,GAAG,EAChCA,GAEAE,EAAa,OAAOD,GAAkB,SAAWA,EAAc,KAAK,EAAIA,EAExEE,EAAWrH,GAAiBD,EAAAA,SAAS,SAAUqH,CAAU,CAAC,EAEhE,MAAO,CACL,UAAW,CACT,QAASA,EACT,MAAOC,CACT,CACF,CACF,EACA,GAAI,CACF,UAAW,CACT,QAAS,gBACT,MAAO,eACT,CACF,CACF,EACA,aAAc,CACZ,KAAM,KACN,YAAa,wBACf,CACF,EC9EaC,GAAmC,CAC9C,MAAO,CAAE,YAAa,QAAS,cAAe,MAAO,EACrD,UAAW,CAAC,CAAE,MAAO,CACnB,MAAO1B,EACP,OAAQnG,EACR,MAAO8H,CACT,CAAE,KAAO,CACP,UAAW,CACT,aAAc3B,EAAa,MAAM,QACjC,MAAOnG,EAAM,KAAK,QAClB,WAAY8H,EAAY,CAAC,EACzB,MAAO,OACP,QAAS,MACX,EACA,MAAO,CACL,WAAY,OACZ,aAAc,YAChB,EACA,YAAa,CACX,WAAY,OACZ,aAAc,YAChB,EACA,KAAM,CACJ,QAAS,CACX,CACF,GACA,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQ9H,CAAM,CAAE,KAAO,CAC1C,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,OAClC,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,MAAM,OAC1B,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,OAClC,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,MAAM,OAC1B,CACF,GACA,KAAM,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACvC,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,IAClC,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,MAAM,IAC1B,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACxC,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,MAChC,MAAOA,EAAM,KAAK,MAAM,KAC1B,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,MAAM,KAC1B,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACrC,UAAW,CACT,QAASA,EAAM,GAAG,GAAG,QACrB,MAAOA,EAAM,KAAK,QACpB,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,MAAM,EAC1B,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,UAAW,CACT,QAASA,EAAM,GAAG,MAClB,MAAOA,EAAM,KAAK,OACpB,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,MAAM,OAC1B,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACxC,UAAW,CACT,QAASA,EAAM,GAAG,KAClB,MAAOA,EAAM,KAAK,QAClB,YAAa,KACb,YAAaA,EAAM,OAAO,QAC1B,YAAa,OACf,EACA,KAAM,CACJ,MAAOA,EAAM,KAAK,MAAM,KAC1B,CACF,EACF,CACF,EC3Fa+H,GAAyC,CACpD,MAAO,CAAE,OAAQ,QAAS,UAAW,cAAe,EACpD,MAAO,CACL,GAAI,CAAC,CAAE,MAAO,CAAE,MAAO5B,EAAc,MAAOF,CAAO,CAAE,KAAO,CAC1D,MAAO,CACL,aAAcE,EAAa,MAAM,OACnC,EACA,aAAc,CACZ,OAAQF,EAAO,CAAG,CACpB,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,aAAc,CACZ,OAAQA,EAAO,EAAI,CACrB,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,aAAc,CACZ,OAAQA,EAAO,EAAI,CACrB,CACF,EACF,EACA,UAAW,CAAC,CAAE,MAAO,CACnB,MAAOA,EACP,MAAOC,EACP,OAAQlG,EACR,MAAOmG,EACP,QAASO,EACT,QAAApD,CACF,EAAG,WAAA0E,EAAY,SAAAC,EAAU,KAAAC,CAAK,IAAG,CA/BnC,IAAAtK,EA+BuC,OACnC,KAAM,CACJ,aAAcuI,EAAa,MAAM,OACnC,EACA,MAAO,CACL,UAAUvI,EAAAqK,GAAYC,IAAZ,KAAAtK,EAAoBqI,EAAO,EAAI,EACzC,mBAAoBC,EAAQ,gBAAgB,EAAE,MAAM,QACpD,iBAAkBA,EAAQ,gBAAgB,EAAE,MAAM,QAClD,mBAAoBA,EAAQ,gBAAgB,EAAE,MAAM,QACpD,iBAAkBA,EAAQ,gBAAgB,EAAE,MAAM,QAClD,MAAOlG,EAAM,KAAK,QAClB,GAAIA,EAAM,WAAW,MAAM,iBAAiB,EAE5C,YAAa0G,EAAY,MAAM,QAC/B,YAAa1G,EAAM,OAAO,MAAM,QAChC,aAAckG,EAAQ,aAAa,cAAc,EAAE,MACnD,OAAQ,CACN,GAAIlG,EAAM,WAAW,MAAM,eAAe,EAC1C,YAAaA,EAAM,OAAO,MAAM,eAAe,CACjD,EACA,cAAe,CACb,GAAIA,EAAM,WAAW,MAAM,eAAe,EAC1C,YAAaA,EAAM,OAAO,MAAM,MAChC,UAAW,mBAAmBA,EAAM,OAAO,SAAS,OACtD,EACA,SAAU,CACR,GAAIA,EAAM,WAAW,MAAM,eAAe,EAC1C,YAAaA,EAAM,OAAO,MAAM,MAChC,UAAW,mBAAmBA,EAAM,OAAO,MAAM,OACnD,EACA,UAAW,CACT,GAAIA,EAAM,WAAW,MAAM,kBAAkB,EAC7C,QAASsD,EAAQ,MAAM,SACvB,YAAatD,EAAM,OAAO,MAAM,QAClC,EACA,UAAW,CACT,cAAe,CACb,YAAaA,EAAM,OAAO,MAAM,SAChC,UAAW,MACb,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,MAAM,QAClC,CACF,CACF,EACA,aAAc,CACZ,MAAO,OACP,aAAckG,EAAQ,aAAa,cAAc,EAAE,OACrD,EACA,QAAS,CACP,OAAQ,CACN,OAAQ,OACR,qBAAsBC,EAAa,eAAe,EAAE,QACpD,aAAcA,EAAa,eAAe,EAAE,QAC5C,GAAInG,EAAM,WAAW,eAAe,EAAE,QACtC,QAASgI,EAAa1E,EAAQ,MAAM,SAAW,OAC/C,OAAQ,CACN,GAAI0E,EAAa,OAAShI,EAAM,WAAW,eAAe,EAAE,KAC9D,EACA,QAAS,CACP,GAAIA,EAAM,WAAW,eAAe,EAAE,MACxC,EACA,UAAW,CACT,GAAIA,EAAM,WAAW,eAAe,EAAE,SACtC,MAAOA,EAAM,KAAK,eAAe,EAAE,QACrC,CACF,EACA,MAAO,CACL,OAAQ,OACR,GAAIA,EAAM,WAAW,eAAe,EAAE,QACtC,wBAAyBmG,EAAa,eAAe,EAAE,QACvD,aAAcA,EAAa,eAAe,EAAE,QAC5C,QAAS6B,EAAa1E,EAAQ,MAAM,SAAW,OAC/C,OAAQ,CACN,GAAI0E,EAAa,OAAShI,EAAM,WAAW,eAAe,EAAE,KAC9D,EACA,QAAS,CACP,GAAIA,EAAM,WAAW,eAAe,EAAE,MACxC,EACA,UAAW,CACT,GAAIA,EAAM,WAAW,eAAe,EAAE,SACtC,MAAOA,EAAM,KAAK,eAAe,EAAE,QACrC,CACF,CACF,CACF,CACF,CAAA,ECnHamI,GAAoD,CAC/D,MAAO,CAAE,YAAa,UAAW,EACjC,MAAO,CACL,GAAI,CACF,SAAU,CACR,IAAK,MACL,MAAO,KACT,CACF,EACA,GAAI,CACF,SAAU,CACR,IAAK,MACL,MAAO,KACT,CACF,EACA,GAAI,CACF,SAAU,CACR,IAAK,IACL,MAAO,GACT,CACF,EACA,GAAI,CACF,SAAU,CACR,IAAK,IACL,MAAO,GACT,CACF,CACF,EACA,SAAU,CACR,KAAM,CACJ,SAAU,CACR,SAAU,WACV,IAAK,IACL,MAAO,IACP,OAAQ,MACV,CACF,CACF,EACA,UAAW,KAAO,CAChB,UAAW,CACT,SAAU,UACZ,EACA,SAAU,CACR,SAAU,WACV,IAAK,IACL,MAAO,IACP,OAAQ,MACV,CACF,EACF,4VChDa,MAAAC,GAAsC,CACjD,MAAO,CAAE,YAAa,aAAc,WAAY,wBAAyB,EACzE,UAAW,CAAC,CAAE,MAAO,CACnB,MAAOlC,EACP,MAAOD,EACP,OAAQjG,CACV,CAAE,KAAO,CACP,UAAW,CACT,EAAGkG,EAAQ,CAAC,EACZ,EAAGD,EAAO,EAAE,EACZ,QAAS,qBACT,OAAQ,YACR,YAAa,uBACb,aAAc,eAChB,EACA,uBAAwB,CACtB,EAAG,IACH,EAAG,MACH,QAAS,qBACT,aAAc,eAChB,EACA,WAAY/L,GAAA,CACV,WAAY,WACZ,OAAQ,OACR,QAAS,IACT,aAAc,KACd,MAAO8F,EAAM,KAAK,QAClB,QAASA,EAAM,WAAW,OAAO,MACjC,OAAQ,CACN,OAAQ,UACR,QAASA,EAAM,WAAW,OAAO,aAAa,CAChD,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,cAAc,CACjD,CAAA,EACGkB,EAEL,EAAA,SAAU,CACR,MAAOlB,EAAM,KAAK,GAAG,EACrB,SAAU,KACV,EAAGkG,EAAQ,CAAC,CACd,CACF,EACF,EC3CamC,GAAyC,CACpD,MAAO,CAAE,UAAW,EACpB,UAAW,CAAC,CAAE,GAAAC,CAAG,KAAO,CACtB,SAAUC,QAAM,CACd,YAAa,KACb,YAAa,SACb,YAAa,iBACb,QAAS,IACT,QAAS,OACT,cAAe,SACf,WAAY,SACZ,IAAK,IACL,eAAgB,SAChB,UAAW,SACX,KAAM,KACN,KAAM,KACN,QAAS,WACX,EAAGD,CAAE,CACP,EACF,ECpBaE,GAAwC,CACnD,MAAO,CAAE,QAAS,cAAe,YAAa,aAAc,EAC5D,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQxI,EAAO,QAAAsD,CAAQ,CAAE,KAAO,CACrD,MAAO,CACL,SAAU,WACV,WAAY,SACZ,KAAM,CACR,EACA,YAAa,CACX,QAAS,qBACT,aAAc,CACZ,QAAStD,EAAM,WAAW,MAAM,eAAe,EAC/C,YAAaA,EAAM,OAAO,SAAS,MACnC,UAAW,mBAAmBA,EAAM,OAAO,SAAS,OACtD,EACA,SAAU,CACR,UAAW,mBAAmBA,EAAM,OAAO,MAAM,QACjD,YAAaA,EAAM,OAAO,MAAM,KAClC,EACA,UAAW,CACT,QAASA,EAAM,WAAW,MAAM,kBAAkB,EAClD,YAAaA,EAAM,OAAO,MAAM,SAChC,QAASsD,EAAQ,MAAM,QACzB,CACF,EACA,UAAW,CACT,MAAO,OACP,OAAQ,OACR,WAAY,QACd,EACA,YAAa,CACX,WAAY,cACZ,UAAW,cACX,UAAW,SACX,QAAS,OACT,QAAS,KACT,OAAQ,CACN,QAAS,mBACT,MAAOtD,EAAM,KAAK,QACpB,EACA,aAAc,CACZ,MAAO,aACT,CACF,CACF,GACA,SAAU,CACR,QAAS,CAAC,CACR,MAAO,CAAE,OAAQA,EAAO,MAAOmG,EAAc,QAASO,CAAY,CACpE,KAAO,CACL,YAAa,CACX,QAAS1G,EAAM,WAAW,MAAM,iBAAiB,EACjD,aAAcmG,EAAa,MAAM,QACjC,YAAaO,EAAY,MAAM,QAC/B,YAAa1G,EAAM,OAAO,MAAM,OAClC,CACF,GACA,OAAQ,CAAC,CACP,MAAO,CAAE,OAAQA,EAAO,MAAOmG,EAAc,QAASO,CAAY,CACpE,KAAO,CACL,YAAa,CACX,QAAS1G,EAAM,WAAW,MAAM,gBAAgB,EAChD,aAAcmG,EAAa,MAAM,OACjC,YAAaO,EAAY,MAAM,QAC/B,YAAa1G,EAAM,WAAW,MAAM,gBAAgB,CACtD,CACF,EACF,CACF,EClEayI,GAAwC,CACnD,MAAO,CAAE,YAAa,SAAU,YAAa,EAC7C,MAAO,CACL,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOxC,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQ,CACN,OAAQD,EAAO,aAAa,EAAE,GAC9B,SAAUA,EAAO,aAAa,EAAE,GAChC,mBAAoBC,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC7D,iBAAkBA,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC3D,SAAU,IACZ,EACA,WAAY,CACV,QAASD,EAAO,KAAK,EACvB,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQ,CACN,OAAQD,EAAO,aAAa,EAAE,GAC9B,SAAUA,EAAO,aAAa,EAAE,GAChC,mBAAoBC,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC7D,iBAAkBA,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC3D,SAAU,KACV,WAAY,CACV,QAASD,EAAO,KAAK,EACvB,CACF,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQ,CACN,OAAQD,EAAO,aAAa,EAAE,GAC9B,SAAUA,EAAO,aAAa,EAAE,GAChC,mBAAoBC,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC7D,iBAAkBA,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC3D,SAAU,KACV,WAAY,CACV,QAASD,EAAO,KAAK,EACvB,CACF,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQ,CACN,OAAQD,EAAO,aAAa,EAAE,GAC9B,SAAUA,EAAO,aAAa,EAAE,GAChC,mBAAoBC,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC7D,iBAAkBA,EAAQ,gBAAgB,EAAE,aAAa,EAAE,GAC3D,SAAU,KACV,WAAY,CACV,QAASD,EAAO,KAAK,EACvB,CACF,CACF,EACF,EACA,UAAW,CAAC,CAAE,MAAO,CACnB,MAAOC,EACP,MAAOD,EACP,OAAQjG,EACR,QAAAsD,EACA,MAAO6C,EACP,YAAaY,CACf,EAAG,gBAAA2B,CAAgB,KAAO,CACxB,UAAW,CACT,aAAcvC,EAAa,aAAa,EAAE,QAC1C,mBAAoBD,EAAQ,gBAAgB,EAAE,mBAAmB,EAAE,QACnE,iBAAkBA,EAAQ,gBAAgB,EAAE,mBAAmB,EAAE,QACjE,SAAUA,EAAQ,SAAS,mBAAmB,EAAE,QAChD,OAAQ,OACR,MAAO,OACP,IAAKA,EAAQ,gBAAgB,EAAE,aAAa,EAAE,IAC9C,oBAAqB,UAAUwC,aAA2BzC,EAAO,EAAE,WACnE,iBAAkB,MAClB,UAAW,MACb,EACA,OAAQ,CACN,MAAO,OACP,eAAgB,SAChB,WAAY,SACZ,MAAOjG,EAAM,KAAK,aAAa,EAAE,QACjC,OAAQ,UACR,aAAcmG,EAAa,aAAa,EAAE,QAC1C,WAAYY,EAAe,SAC3B,UAAW,CACT,QAASzD,EAAQ,aAAa,EAAE,QAClC,EACA,SAAU,CACR,MAAOtD,EAAM,KAAK,aAAa,EAAE,QACnC,CACF,CACF,GACA,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,EAAG,GAAAsI,CAAG,KAAO,CAC9C,UAAWC,EAAAA,MAAM,CACf,QAASvI,EAAM,WAAW,aAAa,EAAE,yBAAyB,CACpE,EAAGsI,CAAE,EACL,OAAQ,CACN,QAAStI,EAAM,WAAW,aAAa,EAAE,yBAAyB,EAClE,OAAQ,CACN,QAASA,EAAM,WAAW,aAAa,EAAE,uBAAuB,CAClE,EACA,SAAU,CACR,QAASA,EAAM,WAAW,aAAa,EAAE,uBAAuB,EAChE,OAAQ,CACN,QAASA,EAAM,WAAW,aAAa,EAAE,uBAAuB,CAClE,CACF,CACF,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,EAAG,GAAAsI,CAAG,KAAO,CAC5C,UAAWC,EAAM,MAAA,CACf,QAASvI,EAAM,WAAW,aAAa,EAAE,0BAA0B,CACrE,EAAGsI,CAAE,EACL,OAAQ,CACN,QAAStI,EAAM,WAAW,aAAa,EAAE,0BAA0B,EACnE,OAAQ,CACN,QAASA,EAAM,WAAW,aAAa,EAAE,wBAAwB,CACnE,EACA,SAAU,CACR,QAASA,EAAM,WAAW,aAAa,EAAE,wBAAwB,EACjE,OAAQ,CACN,QAASA,EAAM,WAAW,aAAa,EAAE,wBAAwB,CACnE,CACF,CACF,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,EAAG,GAAAsI,CAAG,KAAO,CAC5C,UAAWC,EAAAA,MAAM,CACf,QAASvI,EAAM,UAAU,CAC3B,EAAGsI,CAAE,EACL,OAAQ,CACN,QAAS,mBACT,OAAQ,CACN,QAAStI,EAAM,WAAW,OAAO,aAAa,CAChD,EACA,SAAU,CACR,MAAOA,EAAM,KAAK,aAAa,EAAE,QACjC,QAAS,UACT,OAAQ,CACN,QAAS,SACX,CACF,CACF,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,EAAG,GAAAsI,CAAG,KAAO,CACzC,UAAWC,QAAM,CACf,QAASvI,EAAM,WAAW,aAAa,EAAE,0BAA0B,CACrE,EAAGsI,CAAE,EACL,OAAQ,CACN,QAAS,cACT,OAAQ,CACN,QAAS,aACX,EACA,SAAU,CACR,QAAStI,EAAM,GAAG,GAAG,QACrB,OAAQ,CACN,QAASA,EAAM,GAAG,GAAG,OACvB,CACF,CACF,CACF,EACF,EACA,aAAc,CACZ,KAAM,KACN,QAAS,SACX,CACF,EClKa2I,GAAsC,CACjD,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQ3I,EAAO,QAAS0G,CAAY,CAAE,KAAO,CAClE,YAAaA,EAAY,QAAQ,QACjC,MAAO1G,EAAM,WAAW,QAAQ,MAChC,kBAAmBA,EAAM,WAAW,QAAQ,MAC5C,gBAAiBA,EAAM,WAAW,QAAQ,KAC5C,EACF,ECRM4I,GAAmBxH,GAAU,IAAK,GAAG,EAE9ByH,GAAmB,CAACC,EAAejH,EAAc7B,IACxD8I,EAAc9I,EAAM,WAAW,OAAO,MACtC6B,EAAakH,eAAY,CAAE,OAAQlH,EAAM,OAAQ+G,EAAiB,CAAC,EAEhE5I,EAAM,WAAW,OAAO,QCLpBgJ,GAAoC,CAC/C,MAAO,CAAE,YAAa,OAAQ,QAAS,MAAO,EAC9C,MAAO,CACL,MAAO,CAAC,CAAE,MAAO,CAAE,MAAO/C,CAAO,CAAE,KAAO,CACxC,UAAW,CACT,MAAOA,EAAO,OAAO,KAAK,EAC1B,OAAQA,EAAO,OAAO,KAAK,CAC7B,EACA,KAAM,CACJ,WAAYA,EAAO,OAAO,KAAK,EAC/B,SAAU,KACZ,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,UAAW,CACT,MAAOA,EAAO,OAAO,GACrB,OAAQA,EAAO,OAAO,EACxB,EACA,KAAM,CACJ,WAAYA,EAAO,OAAO,GAC1B,SAAU,IACZ,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,UAAW,CACT,MAAOA,EAAO,OAAO,GACrB,OAAQA,EAAO,OAAO,EACxB,EACA,KAAM,CACJ,WAAYA,EAAO,OAAO,GAC1B,SAAU,IACZ,EACA,KAAM,CACJ,QAASA,EAAO,OAAO,EACzB,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,UAAW,CACT,MAAOA,EAAO,OAAO,GACrB,OAAQA,EAAO,OAAO,EACxB,EACA,KAAM,CACJ,WAAYA,EAAO,OAAO,GAC1B,SAAU,IACZ,EACA,KAAM,CACJ,QAASA,EAAO,OAAO,EACzB,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,UAAW,CACT,MAAOA,EAAO,OAAO,GACrB,OAAQA,EAAO,OAAO,EACxB,EACA,KAAM,CACJ,WAAYA,EAAO,OAAO,GAC1B,SAAU,IACZ,EACA,KAAM,CACJ,QAASA,EAAO,OAAO,EACzB,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,UAAW,CACT,MAAOA,EAAO,OAAO,GACrB,OAAQA,EAAO,OAAO,EACxB,EACA,KAAM,CACJ,WAAYA,EAAO,OAAO,GAC1B,SAAU,KACZ,CACF,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACxC,UAAW,CACT,MAAOA,EAAO,OAAO,KAAK,EAC1B,OAAQA,EAAO,OAAO,KAAK,CAC7B,EACA,KAAM,CACJ,WAAYA,EAAO,OAAO,KAAK,EAC/B,SAAU,KACZ,CACF,EAEF,EACA,UAAW,CAAC,CAAE,MAAO,CACnB,OAAQjG,EACR,MAAOiG,EACP,MAAOE,CACT,EAAG,MAAA2C,EAAO,KAAAjH,EAAM,QAAA2F,CAAQ,IAAM,CAC5B,MAAMyB,EAAgBzB,GAAWqB,GAAiBC,EAAOjH,EAAM7B,CAAK,EAEpE,MAAO,CACL,UAAW,CACT,QAASiJ,EACT,MAAO1I,GAAiB0I,CAAa,EACrC,QAAS,OACT,WAAY,SACZ,UAAW,QACX,SAAU,UACZ,EACA,UAAW,CACT,MAAO,OACP,OAAQ,OACR,UAAW,OACb,EACA,MAAO,CACL,SAAU,WACV,OAAQ,IAAIhD,EAAO,CAAG,IACtB,MAAO,IAAIA,EAAO,CAAG,IACrB,SAAUA,EAAO,CAAG,EACpB,OAAQA,EAAO,CAAG,EAClB,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,SAAU,KACV,WAAY,WACZ,QAASA,EAAO,IAAI,EACpB,QAASjG,EAAM,YACf,MAAOA,EAAM,KAAK,SAClB,aAAcmG,EAAa,OAAO,OAClC,OAAQ,MACV,CAEF,CACF,EACA,SAAU,CACR,OAAQ,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAa,CAAE,KAAO,CAC/C,UAAW,CACT,YAAa,QACb,aAAcA,EAAa,OAAO,OAClC,QAAS,CACP,aAAcA,EAAa,OAAO,OAClC,YAAa,OACf,CACF,EACA,MAAO,CACL,aAAcA,EAAa,OAAO,MACpC,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAa,CAAE,KAAO,CAChD,UAAW,CACT,YAAa,QACb,aAAcA,EAAa,OAAO,QAClC,QAAS,CACP,aAAcA,EAAa,OAAO,QAClC,YAAa,OACf,CACF,EACA,MAAO,CACL,aAAcA,EAAa,OAAO,OACpC,CACF,EACF,CACF,EC3Ja+C,GAA0C,CACrD,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQlJ,CAAM,CAAE,KAAO,CAC5C,MAAOA,EAAM,KAAK,QAClB,QAASA,EAAM,WAAW,OAAO,MACjC,OAAQ,CACN,GAAIA,EAAM,WAAW,OAAO,aAAa,EACzC,UAAW,CACT,QAASA,EAAM,WAAW,OAAO,KACnC,CACF,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,cAAc,CACjD,EACA,cAAe,CACb,KAAM,MACN,UAAWA,EAAM,OAAO,KACxB,WAAY,KACd,CACF,GACA,aAAc,CACZ,KAAM,IACR,CACF,ECtBamJ,GAAmC,CAC9C,MAAO,CAAE,UAAW,cAAe,QAAS,EAC5C,MAAO,CACL,KAAM,CACJ,OAAQ,CACN,MAAO,MACP,KAAM,QACN,YAAa,MACf,CACF,CACF,EACA,UAAW,CAAC,CAAE,MAAAC,CAAM,IAAM,CACxB,KAAM,CACJ,WAAY,CAAE,SAAU,CAAE,GAAAC,CAAG,CAAE,CACjC,EAAID,EACJ,MAAQ,CACN,QAAS,CACP,QAAS,2BACT,eAAgB,WAClB,EACA,YAAa,CACX,IAAK,EACL,MAAO,CACT,EACA,OAAQ,CACN,QAAS,qBACT,aAAc,cAChB,EACA,OAAQ,CACN,SAAUC,EAAG,SACb,WAAY,0BACZ,cAAe,6BACf,OAAQ,eACR,kBAAmB,sBACnB,kBAAmB,OACrB,EACA,KAAM,CACJ,WAAY,wBACZ,cAAe,0BACjB,EACA,OAAQ,CACN,WAAY,0BACZ,cAAe,4BACjB,CACF,CACF,CACF,EC7CMC,GAAWC,GAAAA,OAAO,iBAAiB,EACnCC,GAAeD,GAAAA,OAAO,2BAA2B,EAE1CE,GAAsC,CACjD,UAAW,CAAC,CACV,MAAO,CAAE,OAAQzJ,EAAO,MAAOkG,EAAS,MAAOC,CAAa,CAC9D,KAAO,CACL,MAAOnG,EAAM,KAAK,SAClB,cAAekG,EAAQ,gBAAgB,EAAE,QAAQ,QACjD,SAAUA,EAAQ,SAAS,QAAQ,QACnC,aAAcC,EAAa,QAAQ,QACnC,gBAAiBnG,EAAM,WAAW,QAAQ,QAC1C,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,WAAW,QAAQ,OAChD,GACA,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,MAAOA,EAAM,KAAK,QAClB,QAASA,EAAM,GAAG,KAClB,YAAa,KACb,YAAaA,EAAM,OAAO,QAC1B,YAAa,QACb,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,GAAG,KAC9B,CAACwJ,GAAa,QAAQ,EAAGxJ,EAAM,OAAO,OACxC,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,MAAO,oBACP,QAAS,cACT,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,aAAa,CAC1C,GACA,KAAM,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACvC,MAAO,kBACP,QAAS,YACT,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,WAAW,CACxC,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACxC,MAAO,eACP,QAASA,EAAM,GAAG,KAClB,YAAa,KACb,YAAaA,EAAM,OAAO,QAC1B,CAACwJ,GAAa,QAAQ,EAAGxJ,EAAM,OAAO,QACtC,YAAa,QACb,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,GAAG,IAChC,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,MAAO,oBACP,QAASA,EAAM,UAAU,EACzB,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,UAAU,CACvC,GACA,OAAQ,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACzC,MAAO,kBACP,QAASA,EAAM,iBAAiB,EAChC,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,iBAAiB,CAC9C,GACA,MAAO,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACxC,MAAO,kBACP,QAASA,EAAM,iBAAiB,EAChC,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,iBAAiB,CAC9C,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CACrC,QAASA,EAAM,GAAG,GAAG,QACrB,CAACsJ,GAAS,QAAQ,EAAGtJ,EAAM,GAAG,GAAG,OAEnC,EACF,CACF,ECjEa0J,GAAmC,CAC9C,MAAO,CACL,GAAI,CACF,QAAS,SACX,EACA,GAAI,CACF,QAAS,SACX,EACA,GAAI,CACF,QAAS,SACX,EACA,GAAI,CACF,QAAS,SACX,CACF,EACA,UAAW,CAAC,CAAE,QAAAC,EAAS,MAAA3J,CAAM,KAAO,CAClC,QAAS2J,GAAW,eACpB,MAAO3J,GAAS,SAClB,EACF,ECnBa4J,GAA4C,CACvD,MAAO,CAAE,SAAU,OAAQ,SAAU,EACrC,MAAO,CACL,GAAI,CAAC,CAAE,MAAO,CAAE,MAAO3D,EAAQ,MAAOC,CAAQ,CAAE,KAAO,CACrD,OAAQ,CACN,OAAQD,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,EACA,KAAM,CACJ,QAASA,EAAO,KAAK,EACvB,EACA,QAAS,CACP,cAAeC,EAAQ,gBAAgB,EAAE,QAAQ,GACjD,SAAUA,EAAQ,SAAS,QAAQ,EACrC,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOD,CAAO,CAAE,KAAO,CACrC,OAAQ,CACN,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,EACA,KAAM,CACJ,QAASA,EAAO,KAAK,EACvB,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,OAAQ,CACN,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,EACA,KAAM,CACJ,QAASA,EAAO,KAAK,EACvB,CACF,EACF,CACF,EClCa4D,GAAyC,CACpD,MAAO,CAAE,cAAe,UAAW,SAAU,EAC7C,UAAW,CAAC,CAAE,MAAAT,EAAO,cAAAU,CAAc,IAAM,CACvC,KAAM,CAAE,MAAO7D,EAAQ,OAAQjG,CAAM,EAAIoJ,EACzC,MAAQ,CACN,QAAS,CACP,OAAQ,OACR,mBAAoBnD,EAAO,CAAG,EAC9B,iBAAkBA,EAAO,CAAG,EAC5B,cAAeA,EAAO,CAAG,EACzB,SAAU,KACV,WAAY,UACd,EACA,QAAS,CACP,QAAS6D,GAAiB9J,EAAM,WAAW,OAAO,QAClD,MAAO8J,EAAgBvJ,GAAiBuJ,CAAa,EAAI,QACzD,OAAQ,CACN,QAASA,GAAiB9J,EAAM,WAAW,OAAO,eAAe,CACnE,EACA,QAAS,CACP,QAAS8J,GAAiB9J,EAAM,WAAW,OAAO,gBAAgB,CACpE,CACF,EACA,YAAa,CACX,OAAQiG,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,GACxB,OAAQ,CACN,KAAM,MACN,WAAY,MACZ,UAAW,GAAGjG,EAAM,OAAO,MAAM,eAAe,GAClD,CACF,CACF,CACF,EACA,MAAO,CACL,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOiG,CAAO,CAAE,KAAO,CACrC,QAAS,CACP,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,QAAS,CACP,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,CACF,GACA,GAAI,CAAC,CAAE,MAAO,CAAE,MAAOA,CAAO,CAAE,KAAO,CACrC,QAAS,CACP,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,CACF,EACF,CACF,ECvDa8D,GAAkC,CAC7C,MAAO,CAAE,OAAQ,QAAS,cAAe,WAAY,EACrD,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQ/J,EAAO,YAAAgK,EAAa,MAAO9D,EAAS,QAASQ,CAAY,CAAE,KAAO,CAC/F,KAAM,CACJ,eAAgB,QAChB,WAAY,QACZ,QAAS1G,EAAM,WAAW,KAAK,QAC/B,eAAgB0G,EAAY,KAAK,QACjC,YAAa1G,EAAM,OAAO,KAAK,QAC/B,aAAc,OACd,cAAekG,EAAQ,gBAAgB,EAAE,KAAK,QAC9C,MAAOlG,EAAM,KAAK,QAClB,OAAQ,CACN,QAASA,EAAM,WAAW,KAAK,MAC/B,YAAaA,EAAM,OAAO,KAAK,KACjC,EACA,UAAW,CACT,OAAQ,cACR,OAAQ,CAAE,YAAaA,EAAM,OAAO,KAAK,OAAQ,CACnD,EACA,QAAS,CACP,QAASA,EAAM,WAAW,KAAK,MACjC,EACA,UAAW,CACT,QAASA,EAAM,WAAW,KAAK,SAC/B,YAAaA,EAAM,OAAO,KAAK,SAC/B,MAAOA,EAAM,OAAO,KAAK,SACzB,0BAA2B,CACzB,GAAIA,EAAM,OAAO,KAAK,QACxB,EACA,OAAQ,CACN,YAAaA,EAAM,OAAO,KAAK,SAC/B,MAAOA,EAAM,OAAO,KAAK,QAC3B,CACF,CACF,EACA,MAAO,CACL,MAAO,UACP,UAAW,QACX,WAAYgK,EAAY,IAC1B,EACA,YAAa,CACX,UAAW,QACX,WAAYA,EAAY,SACxB,MAAOhK,EAAM,KAAK,OACpB,EACA,UAAW,CACT,KAAM,EACN,KAAM,EACN,aAAc,OACd,GAAIA,EAAM,KAAK,QACf,MAAO,aACP,WAAYgK,EAAY,KACxB,SAAU,KACV,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,UAAW,KACb,CACF,EACF,EC5DaC,GAAuC,CAClD,UAAW,CAAC,CAAE,MAAO,CAAE,MAAOhE,CAAO,EAAG,KAAAiE,CAAK,KAAO,CAClD,QAAS,OACT,MAAO,OACP,oBAAqB,UAAUA,aAAgBjE,EAAO,EAAE,WACxD,iBAAkB,MAClB,UAAW,OACX,aAAc,OACd,cAAeA,EAAO,CAAC,CACzB,EACF,ECTakE,GAAiC,CAC5C,UAAW,CAAC,CAAE,MAAAf,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CACJ,OAAQtI,EACR,WAAY,CAAE,SAAU,CAAE,GAAAoK,CAAG,CAAE,CACjC,EAAIhB,EACJ,OAAOb,QAAM,CACX,MAAOvI,EAAM,KAAK,QAClB,WAAYoK,EAAG,WACf,WAAYA,EAAG,WACf,WAAYA,EAAG,WACf,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,QACpB,EAAG9B,CAAE,CACP,CACF,EChBa+B,GAAiC,CAC5C,UAAW,CAAC,CAAE,MAAAjB,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CACJ,OAAQtI,EACR,WAAY,CAAE,SAAU,CAAE,GAAAsK,CAAG,CAAE,CACjC,EAAIlB,EACJ,OAAOb,QAAM,CACX,MAAOvI,EAAM,KAAK,QAClB,WAAYsK,EAAG,WACf,WAAYA,EAAG,WACf,WAAYA,EAAG,WACf,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,QACpB,EAAGhC,CAAE,CACP,CACF,EChBaiC,GAAiC,CAC5C,UAAW,CAAC,CAAE,MAAAnB,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CACJ,OAAQtI,EACR,WAAY,CAAE,SAAU,CAAE,GAAAwK,CAAG,CAAE,CACjC,EAAIpB,EACJ,OAAOb,QAAM,CACX,MAAOvI,EAAM,KAAK,QAClB,WAAYwK,EAAG,WACf,WAAYA,EAAG,WACf,WAAYA,EAAG,WACf,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,QACpB,EAAGlC,CAAE,CACP,CACF,EChBamC,GAAiC,CAC5C,UAAW,CAAC,CAAE,MAAArB,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CACJ,OAAQtI,EACR,WAAY,CAAE,SAAU,CAAE,GAAAqJ,CAAG,CAAE,CACjC,EAAID,EACJ,OAAOb,QAAM,CACX,MAAOvI,EAAM,KAAK,QAClB,WAAYqJ,EAAG,WACf,WAAYA,EAAG,WACf,WAAYA,EAAG,WACf,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,QACpB,EAAGf,CAAE,CACP,CACF,EChBaoC,GAAiC,CAC5C,UAAW,CAAC,CAAE,MAAAtB,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CACJ,OAAQtI,EACR,WAAY,CAAE,SAAU,CAAE,GAAA2K,CAAG,CAAE,CACjC,EAAIvB,EACJ,OAAOb,QAAM,CACX,MAAOvI,EAAM,KAAK,QAClB,WAAY2K,EAAG,WACf,WAAYA,EAAG,WACf,WAAYA,EAAG,WACf,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,QACpB,EAAGrC,CAAE,CACP,CACF,EChBasC,GAAiC,CAC5C,UAAW,CAAC,CAAE,MAAAxB,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CACJ,OAAQtI,EACR,WAAY,CAAE,SAAU,CAAE,GAAA6K,CAAG,CAAE,CACjC,EAAIzB,EACJ,OAAOb,QAAM,CACX,MAAOvI,EAAM,KAAK,QAClB,WAAY6K,EAAG,WACf,WAAYA,EAAG,WACf,WAAYA,EAAG,WACf,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,QACpB,EAAGvC,CAAE,CACP,CACF,EChBawC,GAAyC,CACpD,UAAW,CAAC,CAAE,MAAA1B,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CAAE,WAAAyC,CAAW,EAAI3B,EAAM,WAAW,SACxC,OAAOb,QAAM,CACX,MAAO,eACP,WAAYwC,EAAW,WACvB,WAAYA,EAAW,WACvB,WAAYA,EAAW,WACvB,SAAUA,EAAW,SACrB,cAAeA,EAAW,cAC1B,cAAeA,EAAW,QAC5B,EAAGzC,CAAE,CACP,CACF,ECba0C,GAAmC,CAC9C,UAAW,CAAC,CAAE,MAAA5B,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CAAE,KAAA2C,CAAK,EAAI7B,EAAM,WAAW,SAClC,OAAOb,QAAM,CACX,MAAO,eACP,WAAY0C,EAAK,WACjB,WAAYA,EAAK,WACjB,WAAYA,EAAK,WACjB,SAAUA,EAAK,SACf,cAAeA,EAAK,cACpB,cAAeA,EAAK,QACtB,EAAG3C,CAAE,CACP,CACF,ECba4C,GAA0C,CACrD,UAAW,CAAC,CAAE,MAAA9B,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CAAE,YAAA6C,CAAY,EAAI/B,EAAM,WAAW,SACzC,OAAOb,QAAM,CACX,MAAO,eACP,WAAY4C,EAAY,WACxB,WAAYA,EAAY,WACxB,WAAYA,EAAY,WACxB,SAAUA,EAAY,SACtB,cAAeA,EAAY,cAC3B,cAAeA,EAAY,QAC7B,EAAG7C,CAAE,CACP,CACF,ECba8C,GAAmC,CAC9C,UAAW,CAAC,CAAE,MAAAhC,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CAAE,KAAA+C,CAAK,EAAIjC,EAAM,WAAW,SAClC,OAAOb,QAAM,CACX,MAAO,eACP,WAAY8C,EAAK,WACjB,WAAYA,EAAK,WACjB,WAAYA,EAAK,WACjB,SAAUA,EAAK,SACf,cAAeA,EAAK,cACpB,cAAeA,EAAK,QACtB,EAAG/C,CAAE,CACP,CACF,ECbagD,GAAoC,CAC/C,UAAW,CAAC,CAAE,MAAAlC,EAAO,GAAAd,CAAG,IAAM,CAC5B,KAAM,CAAE,MAAAiD,CAAM,EAAInC,EAAM,WAAW,SACnC,OAAOb,QAAM,CACX,MAAO,eACP,WAAYgD,EAAM,WAClB,WAAYA,EAAM,WAClB,WAAYA,EAAM,WAClB,SAAUA,EAAM,SAChB,cAAeA,EAAM,cACrB,cAAeA,EAAM,QACvB,EAAGjD,CAAE,CACP,CACF,ECba9N,GAAgC,CAC3C,SAAU,CACR,GAAI,CAAC,CAAE,MAAA4O,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,OAAAkD,CAAO,EAAIpC,EAAM,WAAW,KACpC,OAAOb,EAAAA,MAAM,CACX,WAAYiD,EAAO,WACnB,WAAYA,EAAO,WACnB,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,cAAeA,EAAO,cACtB,cAAeA,EAAO,QACxB,EAAGlD,CAAE,CACP,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,OAAAmD,CAAO,EAAIrC,EAAM,WAAW,KACpC,OAAOb,QAAM,CACX,WAAYkD,EAAO,WACnB,WAAYA,EAAO,WACnB,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,cAAeA,EAAO,cACtB,cAAeA,EAAO,QACxB,EAAGnD,CAAE,CACP,CACF,EACA,UAAW,CACT,MAAO,cACT,CACF,EC5BaoD,GAAoC,CAC/C,UAAW,CAAC,CAAE,MAAO,CAAE,MAAOzF,CAAO,EAAG,GAAAqC,CAAG,IAAMC,EAAAA,MAAM,CACrD,MAAO,UACP,MAAO,OACP,SAAU,OACV,aAActC,EAAO,CAAC,EACtB,kBAAmBA,EAAO,CAAC,EAC3B,UAAWA,EAAO,CAAC,EACnB,gBAAiBA,EAAO,CAAC,CAC3B,EAAGqC,CAAE,EACL,MAAO,CACL,MAAO,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACxB,KAAM,CAAE,UAAAqD,CAAU,EAAIvC,EAAM,WAAW,OACvC,OAAOb,EAAAA,MAAM,CACX,WAAYoD,EAAU,WACtB,WAAYA,EAAU,WACtB,WAAYA,EAAU,WACtB,SAAUA,EAAU,SACpB,cAAeA,EAAU,cACzB,cAAeA,EAAU,QAC3B,EAAGrD,CAAE,CACP,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,QAAAsD,CAAQ,EAAIxC,EAAM,WAAW,OACrC,OAAOb,EAAAA,MAAM,CACX,WAAYqD,EAAQ,WACpB,WAAYA,EAAQ,WACpB,WAAYA,EAAQ,WACpB,SAAUA,EAAQ,SAClB,cAAeA,EAAQ,cACvB,cAAeA,EAAQ,QACzB,EAAGtD,CAAE,CACP,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,QAAAuD,CAAQ,EAAIzC,EAAM,WAAW,OACrC,OAAOb,QAAM,CACX,WAAYsD,EAAQ,WACpB,WAAYA,EAAQ,WACpB,WAAYA,EAAQ,WACpB,SAAUA,EAAQ,SAClB,cAAeA,EAAQ,cACvB,cAAeA,EAAQ,QACzB,EAAGvD,CAAE,CACP,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,QAAAwD,CAAQ,EAAI1C,EAAM,WAAW,OACrC,OAAOb,QAAM,CACX,WAAYuD,EAAQ,WACpB,WAAYA,EAAQ,WACpB,WAAYA,EAAQ,WACpB,SAAUA,EAAQ,SAClB,cAAeA,EAAQ,cACvB,cAAeA,EAAQ,QACzB,EAAGxD,CAAE,CACP,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,QAAAyD,CAAQ,EAAI3C,EAAM,WAAW,OACrC,OAAOb,EAAAA,MAAM,CACX,WAAYwD,EAAQ,WACpB,WAAYA,EAAQ,WACpB,WAAYA,EAAQ,WACpB,SAAUA,EAAQ,SAClB,cAAeA,EAAQ,cACvB,cAAeA,EAAQ,QACzB,EAAGzD,CAAE,CACP,CACF,CACF,ECnEa0D,GAAqC,CAChD,UAAW,CAAC,CAAE,MAAO,CAAE,MAAO/F,CAAO,EAAG,GAAAqC,CAAG,IACzCC,EAAAA,MACE,CACE,MAAO,UACP,MAAO,OACP,SAAU,OACV,aAActC,EAAO,CAAC,EACtB,kBAAmBA,EAAO,CAAC,EAC3B,UAAWA,EAAO,CAAC,EACnB,gBAAiBA,EAAO,CAAC,CAC3B,EACAqC,CACF,EACF,MAAO,CACL,MAAO,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACxB,KAAM,CAAE,SAAA2D,CAAS,EAAI7C,EAAM,WAAW,OACtC,OAAOb,EAAAA,MACL,CACE,WAAY0D,EAAS,WACrB,WAAYA,EAAS,WACrB,WAAYA,EAAS,WACrB,SAAUA,EAAS,SACnB,cAAeA,EAAS,cACxB,cAAeA,EAAS,SACxB,eAAgBA,EAAS,cAC3B,EACA3D,CACF,CACF,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,OAAA4D,CAAO,EAAI9C,EAAM,WAAW,OACpC,OAAOb,EAAAA,MACL,CACE,WAAY2D,EAAO,WACnB,WAAYA,EAAO,WACnB,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,cAAeA,EAAO,cACtB,cAAeA,EAAO,SACtB,eAAgBA,EAAO,cACzB,EACA5D,CACF,CACF,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,OAAA6D,CAAO,EAAI/C,EAAM,WAAW,OACpC,OAAOb,EAAAA,MACL,CACE,WAAY4D,EAAO,WACnB,WAAYA,EAAO,WACnB,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,cAAeA,EAAO,cACtB,cAAeA,EAAO,SACtB,eAAgBA,EAAO,cACzB,EACA7D,CACF,CACF,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,OAAA8D,CAAO,EAAIhD,EAAM,WAAW,OACpC,OAAOb,EACL,MAAA,CACE,WAAY6D,EAAO,WACnB,WAAYA,EAAO,WACnB,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,cAAeA,EAAO,cACtB,cAAeA,EAAO,SACtB,eAAgBA,EAAO,cACzB,EACA9D,CACF,CACF,EACA,GAAI,CAAC,CAAE,MAAAc,EAAO,GAAAd,CAAG,IAAM,CACrB,KAAM,CAAE,OAAA+D,CAAO,EAAIjD,EAAM,WAAW,OACpC,OAAOb,EAAAA,MACL,CACE,WAAY8D,EAAO,WACnB,WAAYA,EAAO,WACnB,WAAYA,EAAO,WACnB,SAAUA,EAAO,SACjB,cAAeA,EAAO,cACtB,cAAeA,EAAO,SACtB,eAAgBA,EAAO,cACzB,EACA/D,CACF,CACF,CACF,CACF,EC5FagE,GAAwC,CACnD,UAAW,CAAC,CAAE,aAAAC,EAAc,cAAAC,EAAe,aAAAC,EAAc,OAAAC,CAAO,KAAO,CACrE,QAAS,OACT,SAAU,SACV,oBAAsBA,EAAiB,UAAUH,wBAAmCE,oBAA+BD,WAApF,MAC/B,WAAY,UACZ,aAAc,UACd,OAAQ,OACR,MAAO,MACT,EACF,EAEaG,GAA0C,CACrD,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQ3M,EAAO,MAAOiG,CAAO,CAAE,KAAO,CAC3D,QAASjG,EAAM,WAAW,cAAc,EAAE,QAC1C,OAAQ,IACR,OAAQ,aACR,OAAQ,OACR,MAAOiG,EAAO,CAAC,EACf,OAAQ,CACN,aAAcjG,EAAM,OAAO,cAAc,EAAE,MAC3C,aAAciG,EAAO,IAAI,EACzB,aAAc,OAChB,EACA,QAAS,CACP,aAAcjG,EAAM,OAAO,cAAc,EAAE,MAC3C,aAAciG,EAAO,IAAI,EACzB,aAAc,OAChB,CACF,EACF,EC9Ba2G,GAAsC,CACjD,MAAO,CAAE,YAAa,QAAS,OAAQ,EACvC,UAAW,CACT,UAAW,CACT,QAAS,OACT,WAAY,SACZ,SAAU,WACV,SAAU,SACV,MAAO,OACP,OAAQ,MACV,EACA,MAAO,CACL,SAAU,WACV,OAAQ,IACR,KAAM,MACN,UAAW,mBACX,UAAW,SACX,SAAU,MACV,QAAS,GACX,EACA,MAAO,CACL,SAAU,WACV,OAAQ,IACR,OAAQ,OACR,OAAQ,SACV,CACF,CACF,EC1BaC,GAA0C,CACrD,MAAO,CAAE,SAAU,OAAQ,WAAY,UAAW,OAAQ,EAC1D,MAAO,CACL,GAAI,CAAC,CAAE,UAAAC,EAAW,MAAO,CAAE,MAAO7G,CAAO,CAAE,KAAO,CAChD,OAAQ,CACN,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,EACA,KAAM,CACJ,QAASA,EAAO,KAAK,EACvB,EACA,SAAU,CACR,MAAQ6G,EAAgB,UAAJ,CACtB,EACA,QAAS,CACP,GAAI,CACN,EACA,MAAO,CACL,iBAAkB,GAClB,aAAc,EAChB,CACF,GACA,GAAI,CAAC,CAAE,UAAAA,EAAW,MAAO,CAAE,MAAO7G,CAAO,CAAE,KAAO,CAChD,OAAQ,CACN,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,EACA,KAAM,CACJ,QAASA,EAAO,KAAK,EACvB,EACA,SAAU,CACR,MAAQ6G,EAAgB,UAAJ,CACtB,EACA,QAAS,CACP,GAAI,KACN,EACA,MAAO,CACL,iBAAkB,GAClB,aAAc,EAChB,CACF,GACA,GAAI,CAAC,CAAE,UAAAA,EAAW,MAAO,CAAE,MAAO7G,CAAO,CAAE,KAAO,CAChD,OAAQ,CACN,OAAQA,EAAO,OAAO,GACtB,SAAUA,EAAO,OAAO,EAC1B,EACA,KAAM,CACJ,QAASA,EAAO,KAAK,EACvB,EACA,SAAU,CACR,MAAQ6G,EAAiB,UAAL,EACtB,EACA,QAAS,CACP,GAAI,KACN,EACA,MAAO,CACL,iBAAkB,GAClB,aAAc,EAChB,CACF,EACF,EACA,UAAW,CAAC,CAAE,MAAA9R,CAAM,KAAO,CACzB,SAAU,CACR,GAAI,CACN,EACA,QAAS,CACP,WAAY,WACZ,aAAc,WACd,WAAY,SACZ,SAAU,SACV,WAAY,EACZ,cAAe,EACf,MAAO6C,EAAAA,MAAM7C,CAAK,GAAK+R,EAAAA,QAAQ/R,CAAK,EAAI,eAAiB,cAC3D,EACA,MAAO,CACL,WAAY,UACd,CACF,EACF,EC/EagS,GAAqC,CAChD,MAAO,CAAE,YAAa,SAAU,OAAQ,QAAS,EACjD,UAAW,CAAC,CAAE,MAAO,CACnB,OAAQhN,EACR,MAAOiG,EACP,QAASS,CACX,CAAE,KAAO,CACP,UAAW,CACT,SAAU,WACV,GAAI,gBACJ,EAAG,QACH,gBAAiBA,EAAY,GAC7B,gBAAiB,QACjB,gBAAiB1G,EAAM,OAAO,OAChC,EACA,OAAQ,CACN,WAAY,SACZ,OAAQ,KACR,kBAAmB0G,EAAY,GAC/B,kBAAmB,QACnB,kBAAmB1G,EAAM,OAAO,QAChC,GAAI,IACJ,GAAI,IACN,EACA,OAAQ,CACN,SAAU,WACV,OAAQ,IACR,EAAG,OACH,EAAG,IACH,WAAY,SACZ,OAAQ,KACR,eAAgB0G,EAAY,GAC5B,eAAgB,QAChB,eAAgB1G,EAAM,OAAO,OAC/B,EACA,KAAM,CACJ,EAAGiG,EAAO,CAAG,EACb,cAAe,SACf,EAAG,OACH,EAAG,OACH,KAAM,gBAAgBA,EAAO,EAAI,SACjC,UAAW,QACb,CACF,GACA,MAAO,CACL,GAAI,CACF,UAAW,CACT,EAAG,IACL,CACF,EACA,GAAI,CACF,UAAW,CACT,EAAG,IACL,CACF,EACA,GAAI,CACF,UAAW,CACT,EAAG,IACL,CACF,CACF,CACF,4VC1DA,MAAMgH,GAAiB5G;;;;;;;;;;;;EAcjB6G,GAAuB,CAC3B,cAAe,CACb,QAAS,OACT,KAAM,MACN,UAAW,cACX,WAAY,KACd,CACF,EAEMC,GAAc7F,GAA+B,CACjD,OAAQA,EACN,CAAA,IAAK,cAAe,MAAO,UAC3B,IAAK,YAAa,MAAO,WACzB,QAAS,MAAO,WAClB,CACF,EAEM8F,GAAwB,CAACC,EAAoBC,EAAU,GAAMhG,EAA6B,iBAAmB,CACjH,YAAa+F,EAAY,eAAiB,iBAC1C,QAASA,GAAa,mBACtB,UAAWA,GAAa,SAASJ,UACjC,OAAQK,GAAW,CACjB,QAASD,EAAY,mBAAqBF,GAAW7F,CAAY,EACjE,YAAa+F,EAAY,eAAiB,sBAC5C,CACF,GAEME,GAAmB,CAACF,EAAoBC,EAAU,MAAU,CAChE,YAAaD,EAAY,eAAiB,iBAC1C,QAASA,GAAa,mBACtB,UAAWA,GAAa,SAASJ,UACjC,OAAQK,GAAW,CACjB,QAASD,EAAY,mBAAqB,YAC1C,YAAaA,EAAY,eAAiB,WAC5C,CACF,iEClDiD,CAC/C,UAAW,CAAC,CAAE,YAAAnG,EAAa,MAAO,CAAE,OAAAxF,CAAO,EAAG,aAAA4F,CAAa,IAAM,CAC/D,MAAMG,EAAuBJ,GAA+B,CAAE,aAAAC,EAAc,YAAAJ,CAAY,CAAC,EAEnFM,GAAUC,IAAyB,iBAErC/F,EAAO+F,CAAoB,IAAK/F,EAAO+F,CAAoB,EAAE,GAAG,EAC9D+F,GAAY/F,IAAyB,iBAEvC/F,EAAO+F,CAAoB,IAAK/F,EAAO+F,CAAoB,EAAE,GAAG,EAEpE,MAAO,CACL,QAAAD,EACA,MAAOgG,CACT,CACF,EACA,SAAU,CACR,MAAO,CAAC,CAAE,YAAAtG,EAAa,MAAO,CAAE,OAAAxF,CAAO,EAAG,aAAA4F,EAAc,GAAAmG,EAAI,QAAAjG,CAAQ,IAAM,CArB9E,IAAA5J,EAsBM,MAAM6J,EAAuBJ,GAA+B,CAAE,aAAAC,EAAc,YAAAJ,CAAY,CAAC,EAEnFwG,GACR9P,EAAA6P,GACAjG,IADA,KAAA5J,GAEC6J,IAAyB,iBAEtB/F,EAAO+F,CAAoB,IAAK/F,EAAO+F,CAAoB,EAAE,GAAG,EAElE,MAAO,CACL,QAASiG,EACT,MAAOnN,GAAiBmN,GAAWpN,EAAAA,SAAS,SAAUmH,CAAoB,CAAC,CAC7E,CACF,EACA,QAAS,CAAC,CAAE,YAAAP,EAAa,MAAO,CAAE,OAAAxF,CAAO,EAAG,aAAA4F,CAAa,IAAM,CAC7D,MAAMG,EAAuBJ,GAA+B,CAAE,aAAAC,EAAc,YAAAJ,CAAY,CAAC,EAMzF,MAAO,CACL,QAAS,mBACT,MANgBO,IAAyB,gBACvC/F,EAAO+F,CAAoB,EAAE,GAAG,EAChC/F,EAAO+F,CAAoB,GAAK/F,EAAO+F,CAAoB,EAAE,GAAG,CAKpE,CACF,EACA,MAAO,CAAC,CAAE,YAAAP,EAAa,MAAO,CAAE,OAAAxF,CAAO,EAAG,aAAA4F,CAAa,IAAM,CAC3D,MAAMG,EAAuBJ,GAA+B,CAAE,aAAAC,EAAc,YAAAJ,CAAY,CAAC,EAMzF,MAAO,CACL,QAAS,mBACT,MANgBO,IAAyB,gBACvC/F,EAAO+F,CAAoB,EAAE,GAAG,EAChC/F,EAAO+F,CAAoB,GAAK/F,EAAO+F,CAAoB,EAAE,GAAG,CAKpE,CACF,CACF,EACA,MAAO,CACL,GAAI,CACF,SAAU,KACZ,EACA,GAAI,CACF,SAAU,IACZ,EACA,GAAI,CACF,SAAU,IACZ,EACA,GAAI,CACF,SAAU,IACZ,CACF,EACA,aAAc,CACZ,KAAM,KACN,QAAS,OACX,CACF,8MDvBqD,CACnD,MAAO,CAAE,aAAc,WAAY,iBAAkB,EACrD,UAAW,CAAC,CAAE,MAAO,CAAE,MAAAkG,EAAO,OAAAjM,CAAO,EAAG,UAAAkM,EAAW,QAAAN,EAAS,UAAAD,EAAW,aAAA/F,EAAc,GAAAgB,CAAG,KAAO,CAC7F,WAAYC,EAAAA,MAAMrO,GAAAN,GAAA,CAChB,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,MAAO,OACP,OAAQ,KACR,UAAW,SACX,SAAU,WACV,YAAagU,GAAaN,EAAU,IAAMK,EAAM,IAAI,EACpD,YAAa,SACb,aAAc,IAAA,EACXP,GAAsBC,EAAWC,EAAShG,CAAY,CACtD4F,EAAAA,EAAAA,EACF5E,CAAE,EACL,gBAAiBpO,GAAAA,GAAA,CACf,MAAO,OACP,SAAU,UACV,OAAQ,KACR,SAAU,WACV,YAAayT,EAAM,IAAI,EACvB,YAAa,SACb,aAAc,MACXP,GAAsBC,EAAW,OAAW/F,CAAY,CACxD4F,EAAAA,EAAAA,EAEL,SAAU,CACR,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,SAAU,IACV,SAAU,IACV,aAAcS,EAAM,CAAG,EACvB,UAAW,SACX,SAAU,WACV,OAAQ,aAAajM,EAAO,KAAK,GAAK,IACtC,UAAW,IACb,CACF,GACA,SAAU,CACR,GAAI,CAAC,CAAE,UAAA2L,CAAU,KAAO,CACtB,WAAYnT,GAAA,CAAA,EACPqT,GAAiBF,CAAS,CAE/B,EAAA,gBAAiBnT,GAAA,CAAA,EACZqT,GAAiBF,CAAS,CAEjC,CAAA,EAEF,CACF,mGE5G+C,CAC7C,MAAO,CAAE,OAAQ,MAAO,EACxB,UAAW,CAAC,CAAE,MAAO,CACnB,OAAQrN,EACR,MAAOmG,CACT,CAAE,KAAO,CACP,KAAM,CACJ,YAAanG,EAAM,OAAO,OAC5B,EACA,KAAM,CACJ,GAAI,IACJ,QAASA,EAAM,GAAG,IACpB,EACA,KAAM,CACJ,GAAI,IACJ,MAAOA,EAAM,KAAK,QAClB,aAAcmG,EAAa,OAAO,QAClC,QAASnG,EAAM,GAAG,KAClB,OAAQ,CACN,QAASA,EAAM,WAAW,OAAO,OACnC,EACA,QAAS,CACP,QAASA,EAAM,WAAW,OAAO,OACnC,EACA,OAAQ,CACN,QAASA,EAAM,WAAW,OAAO,OACnC,EACA,SAAU,CACR,WAAY,MACd,CACF,CACF,GACA,SAAU,CACR,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,KAAM,CACJ,SAAU,KACV,MAAOA,EAAM,KAAK,OACpB,CACF,GACA,QAAS,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC1C,KAAM,CACJ,GAAI,IACJ,SAAU,KACV,MAAOA,EAAM,KAAK,OACpB,CACF,EACF,CACF,sGC/CkD,CAChD,MAAO,CAAE,QAAS,EAClB,UAAW,CACT,OAAQ,CACN,OAAQ,SACV,CACF,CACF,WCPoD,CAClD,UAAW,CAAC,CAAE,MAAO,CAAE,OAAQA,CAAM,CAAE,KAAO,CAC5C,MAAO,CACL,GAAIA,EAAM,aAAa,CACzB,EACA,YAAa,CACX,GAAIA,EAAM,KACZ,CACF,EACF,0FCRgD,CAC9C,MAAO,CACL,QACA,KACA,KACA,eACA,OACA,UACA,SACA,IACF,EACA,SAAU,CACR,QAAS,KAAO,CACd,MAAO,CACL,cAAe,IACf,eAAgB,WAChB,aAAc,KACd,YAAa,iBACb,YAAa,KACb,GAAI,GACN,EAEA,GAAI,CACF,MAAO,eACP,WAAY,OACZ,cAAe,OACf,SAAU,IACZ,EAEA,GAAI,CACF,YAAa,iBACb,eAAgB,IAClB,CACF,GACA,QAAUjG,GAAU,CAClB,KAAM,CAAE,YAAaJ,EAAI,MAAO,EAAII,EAEpC,MAAO,CACL,MAAO,CACL,cAAe,IACf,eAAgB,WAChB,aAAc,KACd,YAAa,iBACb,YAAa,KACb,EAAG,GACL,EACA,aAAc,CACZ,MAAO,eACP,QAAS8T,GAAK,KAAA,GAAGlU,QAAS,GAAGA,OAAO,EAAEI,CAAK,EAC3C,WAAY,OACZ,cAAe,OACf,SAAU,IACZ,EACA,KAAM,CACJ,QAAS8T,GAAAA,KAAK,GAAGlU,QAAS,GAAGA,OAAO,EAAEI,CAAK,CAC7C,EACA,QAAS,CACP,MAAO8T,GAAAA,KAAK,WAAY,UAAU,EAAE9T,CAAK,CAC3C,EACA,GAAI,CACF,kBAAmB,GACrB,EACA,GAAI,CACF,qBAAsB,CACpB,GAAI,CACF,WAAY8T,GAAK,KAAA,GAAGlU,QAAS,GAAGA,OAAO,EAAEI,CAAK,CAChD,CACF,CACF,EACA,OAAQ,CACN,GAAI,CACF,GAAI,CAAE,kBAAmB,CAAE,CAC7B,CACF,CACF,CACF,CACF,CACF,6DC/EAoG,GAAA,OAAA,eAAAxG,GAAA,OAAA,iBAAAF,GAAA,OAAA,0BAAAF,GAAA,OAAA,sBAAAG,GAAA,OAAA,UAAA,eAAAuG,GAAA,OAAA,UAAA,qBAAA3G,GAAA,CAAAe,EAAAT,EAAAa,IAAAb,KAAAS,EAAA8F,GAAA9F,EAAAT,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAa,CAAA,CAAA,EAAAJ,EAAAT,CAAA,EAAAa,EAAAL,GAAA,CAAAC,EAAAT,IAAA,CAAA,QAAAa,KAAAb,IAAAA,EAAA,CAAA,GAAAF,GAAA,KAAAE,EAAAa,CAAA,GAAAnB,GAAAe,EAAAI,EAAAb,EAAAa,CAAA,CAAA,EAAA,GAAAlB,GAAA,QAAAkB,KAAAlB,GAAAK,CAAA,EAAAqG,GAAA,KAAArG,EAAAa,CAAA,GAAAnB,GAAAe,EAAAI,EAAAb,EAAAa,CAAA,CAAA,EAAA,OAAAJ,CAAA,EAAAK,GAAA,CAAAL,EAAAT,IAAAD,GAAAU,EAAAZ,GAAAG,CAAA,CAAA,EAMa,MAAAkU,GAA4B,CACvC,OAAQvI,GAAArL,GAAAE,GAAA,CAAA,EACH2T,EAAAA,sBAAsB,GAAG,KAAA,EACzBC,4BAA0B,KAAA,EAFvB,CAGN,KAAM9T,GAAAE,GAAA,CAAA,EACD2T,EAAAA,sBAAsB,GAAG,MAAM,IAC/BC,EAAAA,EAAAA,0BAA0B,MAAM,IAErC,EAAA,OAAQ9T,GAAAE,GAAA,CAAA,EACH2T,wBAAsB,GAAG,MAAM,MAC/BC,EAAAA,EAAAA,0BAA0B,MAAM,MAAA,CAEvC,CACA,EAAA,MAAOA,4BAA0B,OACjC,MAAOA,4BAA0B,QACjC,MAAO9T,GAAAE,GAAA,CAAA,EACF2T,EAAsB,sBAAA,GAAG,cACzBC,4BAA0B,YAAA,EAE/B,QAAS9T,GAAAA,GAAA,GACJ6T,wBAAsB,GAAG,WACzBC,EAAAA,EAAAA,0BAA0B,aAE/B,QAASA,EAAAA,0BAA0B,QACnC,WAAAC,aACA,QAAS/T,GAAA,CAAA,EAAK6T,EAAAA,sBAAsB,GAAG,SACzC,CAAA,EChCA,IAAAzU,GAAA,OAAA,eAAA6G,GAAA,OAAA,iBAAA1G,GAAA,OAAA,0BAAAF,GAAA,OAAA,sBAAAG,GAAA,OAAA,UAAA,eAAAuG,GAAA,OAAA,UAAA,qBAAAvF,GAAA,CAAAL,EAAAT,EAAA,IAAAA,KAAAS,EAAAf,GAAAe,EAAAT,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAS,EAAAT,CAAA,EAAA,EAAAa,GAAA,CAAAJ,EAAAT,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,IAAAF,GAAA,KAAAE,EAAA,CAAA,GAAAc,GAAAL,EAAA,EAAAT,EAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAA,KAAAA,GAAAK,CAAA,EAAAqG,GAAA,KAAArG,EAAA,CAAA,GAAAc,GAAAL,EAAA,EAAAT,EAAA,CAAA,CAAA,EAAA,OAAAS,CAAA,EAAAV,GAAA,CAAAU,EAAAT,IAAAuG,GAAA9F,EAAAZ,GAAAG,CAAA,CAAA,EAMO,MAAMsU,GAA0B,CACrC,OAAQ3I,GAAArL,GAAAO,GAAA,CAAA,EACH0T,EAAoB,oBAAA,GAAG,KACvBC,EAAAA,0BAAwB,KAFrB,EAAA,CAGN,OAAQlU,GAAAA,GAAA,CAAA,EACHiU,EAAAA,oBAAoB,GAAG,MAAM,MAC7BC,EAAAA,EAAAA,wBAAwB,MAAM,MAErC,CAAA,CAAA,EACA,MAAOA,EAAAA,wBAAwB,OAC/B,MAAOA,0BAAwB,QAC/B,MAAOlU,GAAAA,GAAA,GACFiU,EAAAA,oBAAoB,GAAG,YAAA,EACvBC,EAAAA,wBAAwB,YAAA,EAE7B,QAASlU,GAAAO,GAAA,GACJ0T,EAAAA,oBAAoB,GAAG,WACvBC,EAAAA,EAAAA,wBAAwB,WAE7B,EAAA,QAASA,EAAwB,wBAAA,QACjC,WAAAH,EAAAA,WACA,QAAS/T,GAAA,CAAKiU,EAAAA,sBAAoB,GAAG,SACvC,CAAA,EC5BA,IAAA7U,GAAA,OAAA,eAAAK,GAAA,OAAA,iBAAAF,GAAA,OAAA,0BAAAI,GAAA,OAAA,sBAAAsG,GAAA,OAAA,UAAA,eAAAzG,GAAA,OAAA,UAAA,qBAAAgB,GAAA,CAAAL,EAAAT,EAAAa,IAAAb,KAAAS,EAAAf,GAAAe,EAAAT,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAa,CAAA,CAAA,EAAAJ,EAAAT,CAAA,EAAAa,EAAAL,GAAA,CAAAC,EAAAT,IAAA,CAAA,QAAAa,KAAAb,IAAAA,EAAA,CAAA,GAAAuG,GAAA,KAAAvG,EAAAa,CAAA,GAAAC,GAAAL,EAAAI,EAAAb,EAAAa,CAAA,CAAA,EAAA,GAAAZ,GAAA,QAAAY,KAAAZ,GAAAD,CAAA,EAAAF,GAAA,KAAAE,EAAAa,CAAA,GAAAC,GAAAL,EAAAI,EAAAb,EAAAa,CAAA,CAAA,EAAA,OAAAJ,CAAA,EAAA4F,GAAA,CAAA5F,EAAAT,IAAAD,GAAAU,EAAAZ,GAAAG,CAAA,CAAA,EAMa,MAAAyU,GAAoC,CAC/C,OAAQ9I,GAAArL,GAAAE,GAAA,CAAA,EACHkU,EAAAA,8BAA8B,GAAG,KAAA,EACjCC,oCAAkC,KAAA,EAF/B,CAGN,KAAMrU,GAAAE,GAAA,CAAA,EACDkU,EAAAA,8BAA8B,GAAG,MAAM,IACvCC,EAAAA,EAAAA,kCAAkC,MAAM,IAE7C,EAAA,OAAQrU,GAAAE,GAAA,CAAA,EACHkU,gCAA8B,GAAG,MAAM,MACvCC,EAAAA,EAAAA,kCAAkC,MAAM,MAAA,CAE/C,CACA,EAAA,MAAOA,oCAAkC,OACzC,MAAOA,oCAAkC,QACzC,MAAOrU,GAAAE,GAAA,CAAA,EACFkU,EAA8B,8BAAA,GAAG,cACjCC,oCAAkC,YAAA,EAEvC,QAASrU,GAAAA,GAAA,GACJoU,gCAA8B,GAAG,WACjCC,EAAAA,EAAAA,kCAAkC,aAEvC,QAASA,EAAAA,kCAAkC,QAC3C,WAAAN,aACA,QAAS/T,GAAA,CAAA,EAAKoU,EAAAA,8BAA8B,GAAG,SACjD,CAAA,ECjCA,IAAA5T,GAAA,OAAA,eAAAhB,GAAA,OAAA,sBAAAD,GAAA,OAAA,UAAA,eAAAI,GAAA,OAAA,UAAA,qBAAAoG,GAAA,CAAA5F,EAAAI,EAAAb,IAAAa,KAAAJ,EAAAK,GAAAL,EAAAI,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAS,EAAAI,CAAA,EAAAb,EAAAQ,GAAA,CAAAC,EAAAI,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAhB,GAAA,KAAAgB,EAAAb,CAAA,GAAAqG,GAAA5F,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAF,GAAA,QAAAE,KAAAF,GAAAe,CAAA,EAAAZ,GAAA,KAAAY,EAAAb,CAAA,GAAAqG,GAAA5F,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAS,CAAA,EAmBA,MAAMmU,GAA2B,CAC/B,OAAQ,CACN,aAAc,EAChB,EACA,eAAgB,CACd,OAAQ,CACN,mBAAoB,CAClB,OAAQ,eACR,MAAO,eACT,CACF,CACF,EACA,OAAQ,CACN,OAAQtU,GAAA,CACN,KAAM,CACJ,eAAgB,QAClB,EACA,KAAM,CACJ,OAAQ,MACV,EACA,OAAQ,CACN,OAAQ,MACV,CACG4L,EAAAA,EAAAA,CAEP,EACA,MAAO,CACL,QAAS,oBACT,KAAM,mBACR,EACA,WAAY5L,GAAA,CAAKuU,EAAAA,EAAAA,EACjB,OAAQhN,UACR,SAAUiN,EAAAA,WACV,MAAOC,EACP,WAAA,MAAO7G,EAAAA,YACP,YAAaf,EACb,eAAA,QAAS6H,gBACT,UAAWC,EAAAA,aACX,YAAaC,EACb,eAAA,MAAOC,EAAAA,iBACP,aAAcjB,GAAW,OAC3B,EAEa1E,GAAQ4F,EAAAA,YAAYR,GAAWV,EAAU,EAEzCmB,GAAYD,EAAYR,YAAAA,GAAWN,EAAQ,EAE3CgB,GAAsBF,EAAAA,YAAYR,GAAWH,EAAkB,EClE5E,IAAAc,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAA9V,GAAA,OAAA,sBAAA4G,GAAA,OAAA,UAAA,eAAAmP,GAAA,OAAA,UAAA,qBAAAC,GAAA,CAAA,EAAA,EAAA3V,IAAA,KAAA,EAAAuV,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAvV,CAAA,CAAA,EAAA,EAAA,CAAA,EAAAA,EAAAO,GAAA,CAAA,EAAA,IAAA,CAAA,QAAAP,KAAA,IAAA,EAAA,CAAA,GAAAuG,GAAA,KAAA,EAAAvG,CAAA,GAAA2V,GAAA,EAAA3V,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAAK,KAAAL,GAAA,CAAA,EAAA+V,GAAA,KAAA,EAAA1V,CAAA,GAAA2V,GAAA,EAAA3V,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAoJ,GAAA,CAAA,EAAA,IAAAoM,GAAA,EAAAC,GAAA,CAAA,CAAA,EAAAG,GAAA,CAAA,EAAA,IAAA,CAAA,IAAA5V,EAAA,CAAA,EAAA,QAAA2I,KAAA,EAAApC,GAAA,KAAA,EAAAoC,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA3I,EAAA2I,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAhJ,GAAA,QAAAgJ,KAAAhJ,GAAA,CAAA,EAAA,EAAA,QAAAgJ,CAAA,EAAA,GAAA+M,GAAA,KAAA,EAAA/M,CAAA,IAAA3I,EAAA2I,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAA3I,CAAA,EAoCgB,SAAA6V,GAA6B7R,EASvB,CATuB,IAAA8R,EAAA9R,EAC3C,CAAA,QAAA+R,EACA,SAAAvS,EAAWwS,EAAAA,SACX,UAAAC,EACA,YAAAC,EAAc,IAAM,KACpB,cAAeC,EACf,MAAA/U,EAAQ,CAAC,EACT,QAAAgV,CA3CF,EAoC6CN,EAQxCO,EAAAC,GARwCR,EAQxC,CAPH,UACA,WACA,YACA,cACA,cACA,QACA,YAGA,KAAM,CAAE7J,CAAY,EAAIvF,WAAS,gBAAiB,CAAE,OAAQ,CAAC,EACvD,CAAE6P,EAAYC,CAAc,EAAIhV,EAAAA,SAAS,EAAK,EAC9C,CAAEiV,EAAYC,CAAc,EAAIlV,WAAS,EAAE,EAC3C,CAAEmV,EAAiBC,CAAmB,EAAIpV,EAAAA,SAAwBJ,CAAK,EACvE,CAAE4K,EAAW6K,CAAa,EAAIrV,EAAS,SAAA,EAAK,EAElDC,EAAAA,UAAU,IAAM,CACdmV,EAAmBxV,CAAK,CAC1B,EAAG,CAAEA,EAAM,MAAO,CAAC,EAEnB,MAAM0V,EAAeC,EAAAA,gBAEfC,EAAe,CAACC,EAAuBC,IAA8B,CACzEN,EAAmBK,CAAM,EACzBzT,EAASyT,EAAQC,CAAU,CAC7B,EAEMC,EAAmB,CAACC,EAAeC,IAAoC,CAACC,MAC3EC,GAAWA,EAAO,QAAUH,EAC7BC,CACF,EAEMG,EAAgBC,GAAiB,CACrC,MAAMC,EAAiB,CAAE,GAAGf,EAAiBc,CAAU,EACvDjU,EAASkU,EAAgB,CAAE,OAAQ,gBAAiB,OAAQD,CAAU,CAAC,EACvEb,EAAmBc,CAAc,CACnC,EAEMC,EAAa,IAAM,CACvBjB,EAAc,EAAE,CAClB,EAEMkB,EAAqBC,GAAqB,CAC1CA,IAAa,KAEjBnB,EAAcmB,CAAQ,CACxB,EAEMC,EAAiB/T,GAAyC,CAG9D,GAAI,EAFoBA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OAASA,EAAM,MAAQ,MAE9DoP,EAAAA,QAAQsD,CAAU,EAAG,OAE7C,MAAMsB,EAAoBtB,EAAW,KAAK,EAEtCU,EAAiBY,EAAmBpB,CAAe,EAErDa,EAD0B,CAAE,MAAOO,EAAmB,MAAOA,CAAkB,CACpD,EAE3B3B,IAAU,oBAGZuB,EAAAA,EAAAA,CACF,EAEMK,EAAc,IAAM,CACxBnB,EAAa,EAAI,EACbd,GAAWA,EAAQ,OAAS,GAC9BS,EAAc,EAAI,CAEtB,EAEA,OACEpW,EAAA,cAAC6X,MAAA,CAAI,EAAE,OAAO,cAAc9B,GAC1B/V,EAAA,cAAC0W,EAAAxW,GAAAqL,GAAArL,GAAA,CACC,QAAU,GACV,iBAAmB,SAAS,KAC5B,YAAY,6CACZ,QAAUyV,EACV,eAAiB,GACjB,kBAAoB,GACpB,oBAAsB,GACtB,YAAc,GACd,SAAWiB,EACX,cAAgBY,EAChB,UAAYE,EACZ,WAAarB,EACb,oBAAoB,QACpB,aAAe1K,GAAgBC,EAAWC,CAAW,EACrD,QAAU+L,EACV,iBAAmBb,EACnB,OAAS,IAAM,CACbX,EAAc,EAAK,EACnBK,EAAa,EAAK,CACpB,EACA,WAAaN,EACb,UAAYN,CAAAA,EACNA,GAAa,CAAE,WAAY,CAAE,SAAUC,CAAY,CAAE,CAAA,EAvB5D,CAwBC,MAAQS,EACR,WAAa,CACX,kBAAmB,IAAM,IAC3B,EACA,OAAS,CAAE,WAAauB,GAAUvM,GAAArL,GAAA,CAAK4X,EAAAA,CAAAA,EAAL,CAAW,OAAQ1I,GAAM,SAAS,OAAQ,CAAA,CAAG,EAC/E,kBAAqB2I,GACnB,YAAYA,IAET9B,CAAAA,EAAAA,CAAAA,CACP,CACF,CAEJ,CClJA,IAAA+B,GAAA,OAAA,eAAAzY,GAAA,OAAA,sBAAAkB,GAAA,OAAA,UAAA,eAAAZ,GAAA,OAAA,UAAA,qBAAAF,GAAA,CAAAC,EAAA,EAAA,IAAA,KAAAA,EAAAoY,GAAApY,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAA,EAAA,CAAA,EAAA,EAAAF,GAAA,CAAAE,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAAa,GAAA,KAAA,EAAA,CAAA,GAAAd,GAAAC,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAM,GAAA,KAAA,EAAA,CAAA,GAAAF,GAAAC,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAAA,CAAA,EAAA6L,GAAA,CAAA7L,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAAc,KAAAd,EAAAa,GAAA,KAAAb,EAAAc,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAd,EAAAc,CAAA,GAAA,GAAAd,GAAA,MAAAL,GAAA,QAAAmB,KAAAnB,GAAAK,CAAA,EAAA,EAAA,QAAAc,CAAA,EAAA,GAAAb,GAAA,KAAAD,EAAAc,CAAA,IAAA,EAAAA,CAAA,EAAAd,EAAAc,CAAA,GAAA,OAAA,CAAA,EAaO,MAAMuX,GAAoBrU,GAKJ,CALI,IAAA8R,EAAA9R,EAC/B,MAAAiE,EACA,MAAAiH,EACA,QAAAoJ,EAAU,QAhBZ,EAaiCxC,EAI5BO,EAAAC,GAJ4BR,EAI5B,CAHH,OACA,QACA,SAGA,CAAA,EAAA,MAAM9N,EAAeuQ,GAAoBA,EAAQ,CAAC,EAAE,YAAA,EAC9C,CACJ,UAAAC,EACA,KAAAC,CACF,EAAIC,EAAAA,oBAAoB,SAAUpY,GAAA,CAAE,QAAAgY,EAAS,MAAApJ,GAAUmH,CAAM,CAAA,EAE7D,OACEjW,EAAA,cAACuY,SAAO,IAAPrY,GAAA,CACC,MAAQkY,EACR,cAAY,2BACPnC,EAAAA,CAAAA,EAEHnH,EACA9O,EAAA,cAACuY,SAAO,IAAP,CACC,IAAM1Q,EACN,IAAMiH,EACR,EAGE9O,EAAA,cAACuY,EAAO,OAAA,KAAP,CAAY,MAAQF,CAAAA,EACjBzQ,EAAYC,CAAI,CACpB,CAGN,CAEJ,EC7CA,IAAAlI,GAAA,OAAA,eAAAe,GAAA,OAAA,sBAAAjB,GAAA,OAAA,UAAA,eAAAH,GAAA,OAAA,UAAA,qBAAAmM,GAAA,CAAArL,EAAAR,EAAAS,IAAAT,KAAAQ,EAAAT,GAAAS,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAb,GAAA,CAAAY,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,CAAA,GAAAH,GAAA,KAAAG,EAAAS,CAAA,GAAAoL,GAAArL,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAK,GAAA,QAAAL,KAAAK,GAAAd,CAAA,EAAAN,GAAA,KAAAM,EAAAS,CAAA,GAAAoL,GAAArL,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAb,GAAA,CAAAa,EAAAR,IAAA,CAAA,IAAAS,EAAA,CAAA,EAAA,QAAAI,KAAAL,EAAAX,GAAA,KAAAW,EAAAK,CAAA,GAAAb,EAAA,QAAAa,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAAL,EAAAK,CAAA,GAAA,GAAAL,GAAA,MAAAM,GAAA,QAAAD,KAAAC,GAAAN,CAAA,EAAAR,EAAA,QAAAa,CAAA,EAAA,GAAAnB,GAAA,KAAAc,EAAAK,CAAA,IAAAJ,EAAAI,CAAA,EAAAL,EAAAK,CAAA,GAAA,OAAAJ,CAAA,EAuDO,MAAMwN,GAASjK,GAIP,CAJO,IAAA8R,EAAA9R,EACpB,CAAA,QAAAsU,EAAU,UACV,SAAApP,CAzDF,EAuDsB4M,EAGjBO,EAAAC,GAHiBR,EAGjB,CAFH,UACA,UAGA,CAAA,EAAA,OAAA1V,EAAA,cAACwY,EAAAA,MAAAtY,GAAA,CAAY,QAAUgY,CAAAA,EAAejC,GAClCnN,CACJ,CAAA,EC9DF,IAAAvJ,GAAA,OAAA,eAAAgJ,GAAA,OAAA,sBAAA5I,GAAA,OAAA,UAAA,eAAAc,GAAA,OAAA,UAAA,qBAAAC,GAAA,CAAApB,EAAA,EAAAM,IAAA,KAAAN,EAAAC,GAAAD,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAM,CAAA,CAAA,EAAAN,EAAA,CAAA,EAAAM,EAAAQ,GAAA,CAAAd,EAAA,IAAA,CAAA,QAAAM,KAAA,IAAA,EAAA,CAAA,GAAAD,GAAA,KAAA,EAAAC,CAAA,GAAAc,GAAApB,EAAAM,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAA2I,GAAA,QAAA3I,KAAA2I,GAAA,CAAA,EAAA9H,GAAA,KAAA,EAAAb,CAAA,GAAAc,GAAApB,EAAAM,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAAN,CAAA,EAcO,MAAMmZ,GAAe1Y,GAC1BC,EAAA,cAAC0Y,cAAAxY,GAAA,GAAuBH,CAAQ,CAAA,ECflC,IAAA4Y,GAAA,OAAA,eAAAtY,GAAA,OAAA,sBAAAZ,GAAA,OAAA,UAAA,eAAAiB,GAAA,OAAA,UAAA,qBAAAgL,GAAA,CAAA9L,EAAAF,EAAA,IAAAA,KAAAE,EAAA+Y,GAAA/Y,EAAAF,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAE,EAAAF,CAAA,EAAA,EAAAJ,GAAA,CAAAM,EAAAF,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAD,GAAA,KAAAC,EAAA,CAAA,GAAAgM,GAAA9L,EAAA,EAAAF,EAAA,CAAA,CAAA,EAAA,GAAAW,GAAA,QAAA,KAAAA,GAAAX,CAAA,EAAAgB,GAAA,KAAAhB,EAAA,CAAA,GAAAgM,GAAA9L,EAAA,EAAAF,EAAA,CAAA,CAAA,EAAA,OAAAE,CAAA,EAAAa,GAAA,CAAAb,EAAAF,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAC,KAAAC,EAAAH,GAAA,KAAAG,EAAAD,CAAA,GAAAD,EAAA,QAAAC,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAC,EAAAD,CAAA,GAAA,GAAAC,GAAA,MAAAS,GAAA,QAAAV,KAAAU,GAAAT,CAAA,EAAAF,EAAA,QAAAC,CAAA,EAAA,GAAAe,GAAA,KAAAd,EAAAD,CAAA,IAAA,EAAAA,CAAA,EAAAC,EAAAD,CAAA,GAAA,OAAA,CAAA,QAkBa+P,EAAOkJ,aAAW,CAAChV,EAMlBY,IAAa,CANK,IAAAkR,EAAA9R,EAC9B,IAAIiV,EACJ,KAAAC,EACA,MAAA9S,EACA,QAAA2J,CAtBF,EAkBgC+F,EAK3BO,EAAAC,GAL2BR,EAK3B,CAJH,KACA,OACA,QACA,SAGA,CAAA,EAAA,MAAMqD,EAAaF,IAAO,IAAM7Y,EAAA,cAACgZ,OAAA,IAAW,GACtCtQ,EAASuQ,EAAAA,eAAe,OAAQ,CAAE,KAAAH,EAAM,MAAA9S,EAAO,QAAA2J,CAAQ,CAAC,EAE9D,OACE3P,EAAA,cAACgZ,EAAAA,KAAA9Y,GAAA,CACC,IAAMsE,EACN,GAAKkE,CAAAA,EACAuN,GAELjW,EAAA,cAAC+Y,EAAA,IAAW,CACd,CAEJ,CAAC,ECrBYG,GAAc,CAAC,CAC1B,kBAAAC,EAAoB,CACtB,IAAwB,CACtB,KAAM,CAAE,MAAAC,CAAM,EAAId,EAAAA,oBAAoB,QAAQ,EAC9C,OACEtY,EAAA,cAACuY,SAAO,KAAP,CAAY,GAAKa,CAAAA,EACdD,EAAoB,IAAM,OAASA,CACvC,CAEJ,ECzBA,IAAAE,GAAA,OAAA,eAAA9Z,GAAA,OAAA,sBAAAY,GAAA,OAAA,UAAA,eAAAM,GAAA,OAAA,UAAA,qBAAAnB,GAAA,CAAAM,EAAA,EAAA,IAAA,KAAAA,EAAAyZ,GAAAzZ,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAA,EAAA,CAAA,EAAA,EAAA8L,GAAA,CAAA9L,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAAO,GAAA,KAAA,EAAA,CAAA,GAAAb,GAAAM,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAkB,GAAA,KAAA,EAAA,CAAA,GAAAnB,GAAAM,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAAA,CAAA,EAAAF,GAAA,CAAAE,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAAc,KAAAd,EAAAO,GAAA,KAAAP,EAAAc,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAd,EAAAc,CAAA,GAAA,GAAAd,GAAA,MAAAL,GAAA,QAAAmB,KAAAnB,GAAAK,CAAA,EAAA,EAAA,QAAAc,CAAA,EAAA,GAAAD,GAAA,KAAAb,EAAAc,CAAA,IAAA,EAAAA,CAAA,EAAAd,EAAAc,CAAA,GAAA,OAAA,CAAA,EAgCO,MAAMsO,GAAUpL,GAQJ,CARI,IAAA8R,EAAA9R,EACrB,CAAA,QAAAsU,EAAU,SACV,kBAAAiB,EAAoB,EACpB,KAAAtR,EACA,MAAAiH,EACA,KAAAgK,EACA,QAAAtL,CAtCF,EAgCuBkI,EAOlBO,EAAAC,GAPkBR,EAOlB,CANH,UACA,oBACA,OACA,QACA,OACA,SAGA,CAAA,EAAA,KAAM,CAAE,UAAA0C,EAAW,KAAAC,EAAM,UAAAiB,EAAW,KAAAC,CAAK,EAAIjB,EAAoB,oBAAA,SAAU,CACzE,QAAAJ,EACA,MAAApJ,EACA,KAAAgK,EACA,KAAAjR,EACA,QAAA2F,CACF,CAAC,EAED,OACExN,EAAA,cAAC6X,EAAAA,IAAA3X,GAAA,CAAI,MAAQkY,EAAY,cAAY,gBAAA,EAAsBnC,GACvDnH,EAEE9O,EAAA,cAACuY,EAAAA,OAAO,IAAP,CACC,IAAM1Q,EACN,IAAMiH,EACN,GAAKwK,CAAAA,CACP,EACEzR,EAEA7H,EAAA,cAACuY,EAAAA,OAAO,KAAP,CAAY,GAAKF,CAAAA,EACdzQ,GAAYC,CAAI,CACpB,EAGA7H,EAAA,cAAC0P,EAAA,CACC,GAAKwI,IAAY,SAAWsB,EAAAA,cAAgBC,qBAC5C,GAAKF,EACL,aAAW,cACb,EAEJJ,EAAoB,GACpBnZ,EAAA,cAACkZ,GAAA,CAAY,kBAAoBC,CAAAA,CAAoB,CAEzD,CAEJ,+fCjEO,MAAMhJ,GAAKyI,aAA6C,CAAChV,EAI7DY,IAAQ,CAJqD,IAAAkR,EAAA9R,EAC9D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CAbP,CAAA,EAWgEoH,EAG3DO,EAAAC,GAH2DR,EAG3D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,KAAM,CAAE,GAAA3K,CAAG,CAAC,EAE1C,OACEtO,EAAA,cAAC0Z,UAAAxZ,GAAA,CACC,GAAG,KACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fChBM,MAAMuH,GAAKuI,aAA6C,CAAChV,EAI7DY,IAAQ,CAJqD,IAAAkR,EAAA9R,EAC9D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CAdP,CAAA,EAYgEoH,EAG3DO,EAAAC,GAH2DR,EAG3D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,KAAM,CAAE,GAAA3K,CAAG,CAAC,EAE1C,OACEtO,EAAA,cAAC0Z,UAAAxZ,GAAA,CACC,GAAG,KACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fClBM,MAAMyH,GAAKqI,aAA6C,CAAChV,EAI7DY,IAAQ,CAJqD,IAAAkR,EAAA9R,EAC9D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CAbP,CAAA,EAWgEoH,EAG3DO,EAAAC,GAH2DR,EAG3D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,KAAM,CAAE,GAAA3K,CAAG,CAAC,EAE1C,OACEtO,EAAA,cAAC0Z,UAAAxZ,GAAA,CACC,GAAG,KACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fCjBM,MAAM2H,GAAKmI,aAA6C,CAAChV,EAI7DY,IAAQ,CAJqD,IAAAkR,EAAA9R,EAC9D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CAbP,CAAA,EAWgEoH,EAG3DO,EAAAC,GAH2DR,EAG3D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,KAAM,CAAE,GAAA3K,CAAG,CAAC,EAE1C,OACEtO,EAAA,cAAC0Z,UAAAxZ,GAAA,CACC,GAAG,KACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fCjBM,MAAM4H,GAAKkI,aAA6C,CAAChV,EAI7DY,IAAQ,CAJqD,IAAAkR,EAAA9R,EAC9D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CAbP,CAAA,EAWgEoH,EAG3DO,EAAAC,GAH2DR,EAG3D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,KAAM,CAAE,GAAA3K,CAAG,CAAC,EAE1C,OACEtO,EAAA,cAAC0Z,UAAAxZ,GAAA,CACC,GAAG,KACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fCjBM,MAAM8H,GAAKgI,aAA6C,CAAChV,EAI7DY,IAAQ,CAJqD,IAAAkR,EAAA9R,EAC9D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CAbP,CAAA,EAWgEoH,EAG3DO,EAAAC,GAH2DR,EAG3D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,KAAM,CAAE,GAAA3K,CAAG,CAAC,EAE1C,OACEtO,EAAA,cAAC0Z,UAAAxZ,GAAA,CACC,GAAG,KACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,EC5BD,IAAA7C,GAAA,OAAA,eAAAvF,GAAA,OAAA,sBAAAjB,GAAA,OAAA,UAAA,eAAAH,GAAA,OAAA,UAAA,qBAAAoM,GAAA,CAAAtL,EAAAR,EAAAS,IAAAT,KAAAQ,EAAA6F,GAAA7F,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAX,GAAA,CAAAU,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,CAAA,GAAAH,GAAA,KAAAG,EAAAS,CAAA,GAAAqL,GAAAtL,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAK,GAAA,QAAAL,KAAAK,GAAAd,CAAA,EAAAN,GAAA,KAAAM,EAAAS,CAAA,GAAAqL,GAAAtL,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAuZ,GAAA,CAAAvZ,EAAAR,IAAA,CAAA,IAAAS,EAAA,CAAA,EAAA,QAAAI,KAAAL,EAAAX,GAAA,KAAAW,EAAAK,CAAA,GAAAb,EAAA,QAAAa,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAAL,EAAAK,CAAA,GAAA,GAAAL,GAAA,MAAAM,GAAA,QAAAD,KAAAC,GAAAN,CAAA,EAAAR,EAAA,QAAAa,CAAA,EAAA,GAAAnB,GAAA,KAAAc,EAAAK,CAAA,IAAAJ,EAAAI,CAAA,EAAAL,EAAAK,CAAA,GAAA,OAAAJ,CAAA,EAYa,MAAAG,EAAIoY,EAAAA,WAAyC,CAAChV,EAKxDY,IAAQ,CALgD,IAAAkR,EAAA9R,EACzD,CAAA,SAAAkF,EACA,QAAAoP,EAAU,KACV,GAAA5J,EAAK,CAAA,CAfP,EAY2DoH,EAItDO,EAAAC,GAJsDR,EAItD,CAHH,WACA,UACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,EAAe,eAAA,IAAK,CAAE,QAAAf,EAAS,GAAA5J,CAAG,CAAC,EAElD,OACEtO,EAAA,cAAC4Z,EAAAA,KAAA1Z,GAAA,CACC,QAAUgY,EACV,GAAKxP,EACL,IAAMlE,CAAAA,EACDyR,CAEHnN,EAAAA,CACJ,CAEJ,CAAC,+fCTM,MAAMgI,GAAa8H,aACxB,CAAChV,EAAgCY,IAAQ,CAAxC,IAAAkR,EAAA9R,EAAE,CAAA,SAAAkF,EAAU,GAAAwF,EAAK,CAtBpB,CAAA,EAsBGoH,EAAwBO,EAAAC,GAAxBR,EAAwB,CAAtB,WAAU,IAAA,CAAA,EACX,MAAMhN,EAASuQ,iBAAe,aAAc,CAAE,GAAA3K,CAAG,CAAC,EAElD,OACEtO,EAAA,cAAC4Z,OAAA1Z,GAAA,CAAW,GAAG,OAAO,GAAKwI,EAAS,IAAMlE,CAAWyR,EAAAA,CAAAA,EACjDnN,CACJ,CAEJ,CACF,+fCZO,MAAMoI,GAAc0H,aAA4C,CAAChV,EAIrEY,IAAQ,CAJ6D,IAAAkR,EAAA9R,EACtE,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CArBP,CAAA,EAmBwEoH,EAGnEO,EAAAC,GAHmER,EAGnE,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,cAAe,CAAE,GAAA3K,CAAG,CAAC,EAEnD,OACEtO,EAAA,cAAC4Z,OAAA1Z,GAAA,CACC,GAAG,OACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fCjBM,MAAMsI,GAAOwH,aAA4C,CAAChV,EAI9DY,IAAQ,CAJsD,IAAAkR,EAAA9R,EAC/D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CArBP,CAAA,EAmBiEoH,EAG5DO,EAAAC,GAH4DR,EAG5D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,OAAQ,CAAE,GAAA3K,CAAG,CAAC,EAE5C,OACEtO,EAAA,cAAC4Z,OAAA1Z,GAAA,CACC,GAAG,OACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fCjBM,MAAMwI,GAAQsH,aAA4C,CAAChV,EAI/DY,IAAQ,CAJuD,IAAAkR,EAAA9R,EAChE,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CArBP,CAAA,EAmBkEoH,EAG7DO,EAAAC,GAH6DR,EAG7D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,QAAS,CAAE,GAAA3K,CAAG,CAAC,EAE7C,OACEtO,EAAA,cAAC4Z,OAAA1Z,GAAA,CACC,GAAG,QACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,+fCjBM,MAAMkI,GAAO4H,aAA4C,CAAChV,EAI9DY,IAAQ,CAJsD,IAAAkR,EAAA9R,EAC/D,CAAA,SAAAkF,EACA,GAAAwF,EAAK,CArBP,CAAA,EAmBiEoH,EAG5DO,EAAAC,GAH4DR,EAG5D,CAFH,WACA,IAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,OAAQ,CAAE,GAAA3K,CAAG,CAAC,EAE5C,OACEtO,EAAA,cAAC4Z,OAAA1Z,GAAA,CACC,GAAG,OACH,GAAKwI,EACL,IAAMlE,CACDyR,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CAAC,ECpCD,IAAAjJ,GAAA,OAAA,eAAAJ,GAAA,OAAA,sBAAAiB,GAAA,OAAA,UAAA,eAAAnB,GAAA,OAAA,UAAA,qBAAAc,GAAA,CAAAD,EAAAR,EAAAa,IAAAb,KAAAQ,EAAAP,GAAAO,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAa,CAAA,CAAA,EAAAL,EAAAR,CAAA,EAAAa,EAAAoZ,GAAA,CAAAzZ,EAAAR,IAAA,CAAA,QAAAa,KAAAb,IAAAA,EAAA,CAAA,GAAAc,GAAA,KAAAd,EAAAa,CAAA,GAAAJ,GAAAD,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,GAAAhB,GAAA,QAAAgB,KAAAhB,GAAAG,CAAA,EAAAL,GAAA,KAAAK,EAAAa,CAAA,GAAAJ,GAAAD,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,OAAAL,CAAA,EAAA+F,GAAA,CAAA/F,EAAAR,IAAA,CAAA,IAAAa,EAAA,CAAA,EAAA,QAAAgL,KAAArL,EAAAM,GAAA,KAAAN,EAAAqL,CAAA,GAAA7L,EAAA,QAAA6L,CAAA,EAAA,IAAAhL,EAAAgL,CAAA,EAAArL,EAAAqL,CAAA,GAAA,GAAArL,GAAA,MAAAX,GAAA,QAAAgM,KAAAhM,GAAAW,CAAA,EAAAR,EAAA,QAAA6L,CAAA,EAAA,GAAAlM,GAAA,KAAAa,EAAAqL,CAAA,IAAAhL,EAAAgL,CAAA,EAAArL,EAAAqL,CAAA,GAAA,OAAAhL,CAAA,EAoBO,MAAMiR,GAAQkH,aAAyC,CAAChV,EAK5DY,IAAQ,CALoD,IAAAkR,EAAA9R,EAC7D,UAAAkF,EACA,KAAAgQ,EAAO,KACP,GAAAxK,EAAK,EAvBP,EAoB+DoH,EAI1DO,EAAAC,GAJ0DR,EAI1D,CAHH,WACA,OACA,IAGA,CAAA,EAAA,MAAMhN,EAASuQ,iBAAe,QAAS,CAAE,GAAA3K,EAAI,KAAAwK,CAAK,CAAC,EAEnD,OACE9Y,EAAA,cAAC8Z,YAAA5Z,GAAA,CACC,GAAKwI,EACL,kBAAoB1I,EAAA,cAAC+Z,EAAA,eAAA,IAAe,EACpC,IAAMvV,CAAAA,EACDyR,CAEHnN,EAAAA,CACJ,CAEJ,CAAC,ECtCD,IAAA3I,GAAA,OAAA,eAAAO,GAAA,OAAA,sBAAAiZ,GAAA,OAAA,UAAA,eAAAjO,GAAA,OAAA,UAAA,qBAAAjM,GAAA,CAAA,EAAA,EAAA,IAAA,KAAA,EAAAU,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAAsL,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAAkO,GAAA,KAAA,EAAA,CAAA,GAAAla,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAAiB,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAgL,GAAA,KAAA,EAAA,CAAA,GAAAjM,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,GAAA,CAAA,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA6I,KAAA,EAAAoR,GAAA,KAAA,EAAApR,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAA7H,GAAA,QAAA6H,KAAA7H,GAAA,CAAA,EAAA,EAAA,QAAA6H,CAAA,EAAA,GAAAmD,GAAA,KAAA,EAAAnD,CAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAA,CAAA,EAiBa,MAAAyJ,GAAS4G,EAAAA,WACpB,CAAChV,EAA6CY,IAAQ,CAArD,IAAAkR,EAAA9R,EAAE,CAAA,SAAAkF,EAAU,KAAAgQ,EAAO,KAAM,GAAAxK,EAAK,CAAA,CAlBjC,EAkBGoH,EAAqCO,EAAAC,GAArCR,EAAqC,CAAnC,WAAU,OAAa,IAAA,CAAA,EACxB,MAAMhN,EAASuQ,EAAe,eAAA,SAAU,CAAE,GAAA3K,EAAI,KAAAwK,CAAK,CAAC,EAEpD,OACE9Y,EAAA,cAAC4Z,EAAAA,KAAA1Z,GAAA,CACC,GAAG,OACH,GAAKwI,EACL,IAAMlE,CAAAA,EACDyR,CAEHnN,EAAAA,CACJ,CAEJ,CACF,EC3BMkR,GAAiBC,EAAAA,OAAOC,EAAAA,GAAG,CAAC,EAAGC,SAAO,CAAC,EAAGvE,EAAAA,QAAQ,EAClDwE,GAAa,CACjB,YAAa,EACb,aAAc,CAChB,EACMC,GAAe,CACnB,WAAY,EACZ,YAAa,CACf,EAkGaC,GAAgB,CAAC,CAC5B,SAAAxR,EACA,IAAKyR,EAAU,EACf,cAAAC,EACA,SAAApX,EAAWwS,EAAAA,SACX,KAAA6E,CACF,IAA0B,CACxB,KAAM,CAAEnW,EAAKoW,CAAO,EAAItZ,EAAAA,SAASyC,QAAM4W,CAAI,EAAIF,EAAU,CAAC,EACpD,CAAEI,EAAaC,CAAe,EAAIxZ,EAAAA,SAASiZ,EAAY,EACvDQ,EAAWpX,SAAO,EAAK,EACvBqX,EAAc7R,EAAAA,SAAS,MAAMH,CAAQ,EAErCiS,EAAY,IAAM,CACjBN,IAGHA,EAAK,cAAgBA,EAAK,cAC1BA,EAAK,aAAeA,EAAK,aACzBnW,EAAMwW,GACN,CAACD,EAAS,SACVvW,EAAMiW,GAENG,EAAOM,EAAG,GAAA,GAIVP,EAAK,aAAeA,EAAK,cACzBA,EAAK,YAAcA,EAAK,eAExBC,EAAOO,EAAAA,GAAG,EACVJ,EAAS,QAAU,IAEvB,EAEMK,EAAiBC,YAAUf,GAAYK,CAAI,EACjDpZ,EAAAA,UAAU0Z,EAAW,CACnBG,EAAe,YACfA,EAAe,aACfJ,EACAxW,EACAqW,EAAY,YACZA,EAAY,YACZJ,CACF,CAAC,EAEDlZ,YAAU,IAAM,CACdwZ,EAAS,QAAU,EACrB,EAAG,CAAEK,EAAe,aAAcA,EAAe,WAAY,CAAC,EAE9D,MAAME,EAAe,IAAM,CACzB,WAAW,IAAM,CACfP,EAAS,QAAU,GACnBD,EAAe,CACb,WAAY,OAAO,WACnB,YAAa,OAAO,WACtB,CAAC,CACH,EAAG,GAAG,CACR,EAEAvZ,EAAU,UAAA,KACR,OAAO,iBAAiB,SAAU+Z,CAAY,EACvC,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAY,CACnD,GACC,CAAA,CAAE,EAEL/Z,EAAAA,UAAU,IAAM,CACd,MAAMga,EAAuBrB,GAAec,EAAcxW,CAAG,EAC7DlB,EAASiY,CAAoB,CAC/B,EAAG,CAAE/W,EAAKwW,CAAY,CAAC,EAEvB,MAAMQ,EAAgBC,EAAAA,KACpBjX,EACAuE,GAAqBC,EAAUqS,EAAU,UAAA,GAAIX,CAAa,CAAC,CAC7D,EAEA,OAAOxa,EAAA,cAAAA,EAAA,SAAA,KAAIsb,CAAe,CAC5B,EC1LaE,GAAmB,IAAM,CACpC,KAAM,CAAEf,EAAMgB,CAAQ,EAAIra,EAAAA,SAAgC,IAAI,EAO9D,MAAO,CAAE,KAAAqZ,EAAM,aANOiB,GAAc,CAC9BA,GACFD,EAAQC,CAAI,CAEhB,CAE4B,CAC9B,+fCiBO,MAAMC,GAAe/X,GAKJ,CALI,IAAA8R,EAAA9R,EAC1B,CAAA,SAAAkF,EACA,IAAAxE,EAAM,IACN,QAAA4H,EAAU,IA/BZ,EA4B4BwJ,EAIvBO,EAAAC,GAJuBR,EAIvB,CAHH,WACA,MACA,SAGA,CAAA,EAAA,KAAM,CAAEkG,EAAqBC,CAAuB,EAAIza,EAAAA,SAAS,CAAC,EAC5D0a,EAAqBjT,GACzBC,EACA,CAAE,GAAIoD,CAAQ,EACd,CAAC6P,EAAQC,IAAQA,EAAM,CACzB,EAEA,OACEhc,EAAA,cAACic,EAAA/b,OAAAA,GAAA,CAAO,QAAQ,sBAA0B+V,CACxCjW,EAAAA,EAAA,cAACic,EAAAA,OAAA,CAAO,QAAU,GAChBjc,EAAA,cAACsa,GAAA,CAAc,IAAMhW,EAAM,SAAWuX,CAClCC,EAAAA,CACJ,CACF,EACEF,EAAsB,GACtB5b,EAAA,cAACsR,GAAA,CAAM,GAAK,CAAE,MAAO,OAAQ,CAAI,EAAA,IAC5BsK,CACL,CAEJ,CAEJ,qgBCZaM,GAAQtD,EAAAA,WAAuC,CAAC7Y,EAAOyE,IAAQ,CAC1E,MAMIZ,EAAA7D,EALF,CAAA+I,SAAAA,EACA,SAAAqT,EACA,aAAAC,EAAe,OACf,OAAAC,CAhDJ,EAkDMzY,EADCqS,EAAAC,GACDtS,EADC,CAJH,WACA,WACA,eACA,QAAA,CAAA,EAII0Y,EAAgBD,EAASE,GAAgBF,CAAM,EAAIG,EAAAA,mBACnDlP,EAAezD,KAErB,OACE7J,EAAA,cAACyc,EAAAvc,MAAAA,GAAA,CAAY,IAAMsE,EAAM,aAAe8I,CAAAA,EAAoB2I,CAC1DjW,EAAAA,EAAA,cAAC0c,EAAAA,KAAA,CAAK,MAAM,SAAS,IAAI,GACrBP,EAAAA,GAAYC,IAAiB,QAAUE,GACvCtc,EAAA,cAAC0P,EAAA,CAAK,GAAK4M,EAAgB,QAAQ,GAAA,CAAI,EAEvCxT,EACAqT,GAAYC,IAAiB,SAAWE,GACxCtc,EAAA,cAAC0P,EAAA,CAAK,GAAK4M,EAAgB,QAAQ,GAAI,CAAA,CAE3C,CACF,CAEJ,CAAC,+fCpDM,MAAMhQ,GAAW1I,GAKJ,CALI,IAAA8R,EAAA9R,EACtB,CAAAoC,MAAAA,EAAQ,GACR,KAAA8S,EACA,WAAAvM,EAAa,EAnBf,EAgBwBmJ,EAInBO,EAAAC,GAJmBR,EAInB,CAHH,QACA,OACA,YAAA,CAAA,EAGA,MAAMhN,EAASuQ,iBAAe,UAAW,CAAE,MAAAjT,EAAO,KAAA8S,EAAM,WAAAvM,CAAW,CAAC,EAEpE,OAAOvM,EAAA,cAAC6X,EAAAA,IAAA3X,GAAA,CAAI,GAAKwI,EAAS,cAAY,iBAAuBuN,EAAAA,CAAAA,CAAO,CACtE,+fCfO,MAAMtH,GAAY/K,GAER,CAFQ,IACpBqS,EAAAC,GADoBtS,EACpB,CAEH,CAAA,EAAA,OAAA5D,EAAA,cAAC2c,EAAAA,QAAAzc,GAAA,CAAA,EAAmB+V,CAAO,CAAA,CAAA,ECb7B,IAAApW,GAAA,OAAA,eAAAJ,GAAA,OAAA,sBAAAgB,GAAA,OAAA,UAAA,eAAAlB,GAAA,OAAA,UAAA,qBAAAD,GAAA,CAAAe,EAAAD,EAAAR,IAAAQ,KAAAC,EAAAR,GAAAQ,EAAAD,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAR,CAAA,CAAA,EAAAS,EAAAD,CAAA,EAAAR,EAAAc,GAAA,CAAAL,EAAAD,IAAA,CAAA,QAAAR,KAAAQ,IAAAA,EAAA,CAAA,GAAAK,GAAA,KAAAL,EAAAR,CAAA,GAAAN,GAAAe,EAAAT,EAAAQ,EAAAR,CAAA,CAAA,EAAA,GAAAH,GAAA,QAAAG,KAAAH,GAAAW,CAAA,EAAAb,GAAA,KAAAa,EAAAR,CAAA,GAAAN,GAAAe,EAAAT,EAAAQ,EAAAR,CAAA,CAAA,EAAA,OAAAS,CAAA,EAAAqL,GAAA,CAAArL,EAAAD,IAAA,CAAA,IAAAR,EAAA,GAAA,QAAA,KAAAS,EAAAI,GAAA,KAAAJ,EAAA,CAAA,GAAAD,EAAA,QAAA,CAAA,EAAA,IAAAR,EAAA,CAAA,EAAAS,EAAA,CAAA,GAAA,GAAAA,GAAA,MAAAZ,GAAA,QAAA,KAAAA,GAAAY,CAAA,EAAAD,EAAA,QAAA,CAAA,EAAA,GAAAb,GAAA,KAAAc,EAAA,CAAA,IAAAT,EAAA,CAAA,EAAAS,EAAA,CAAA,GAAA,OAAAT,CAAA,EAKA,MAAMgd,GAAiB,CACrB,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,IACN,EAkFa5Q,GAAS4M,EAAAA,WAA2C,CAC/DhV,EACAY,IACA,CAFA,IAAAkR,EAAA9R,EAAE,SAAAsU,EAAU,UAAW,SAAApP,EAAU,KAAAgQ,EAAO,IA7F1C,EA6FEpD,EAAiDO,EAAAC,GAAjDR,EAAiD,CAA/C,UAAqB,WAAU,MAGjC,CAAA,EAAA,OAAA1V,EAAA,cAAC6c,EAAAA,OAAA3c,GAAA,CACC,QAAUgY,EACV,IAAM1T,EACN,KAAOsU,EACP,QACE9Y,EAAA,cAAC2O,GAAA,CACC,KAAOiO,GAAe9D,CAAI,CAAA,CAC5B,CAEG7C,EAAAA,CAAAA,EAEHnN,CACJ,CAEF,CAAA,EC9GA,IAAAP,GAAA,OAAA,eAAA5I,GAAA,OAAA,sBAAA2V,GAAA,OAAA,UAAA,eAAA/V,GAAA,OAAA,UAAA,qBAAA0G,GAAA,CAAArG,EAAAQ,EAAAK,IAAAL,KAAAR,EAAA2I,GAAA3I,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAK,CAAA,CAAA,EAAAb,EAAAQ,CAAA,EAAAK,EAAAf,GAAA,CAAAE,EAAAQ,IAAA,CAAA,QAAAK,KAAAL,IAAAA,EAAA,CAAA,GAAAkV,GAAA,KAAAlV,EAAAK,CAAA,GAAAwF,GAAArG,EAAAa,EAAAL,EAAAK,CAAA,CAAA,EAAA,GAAAd,GAAA,QAAAc,KAAAd,GAAAS,CAAA,EAAAb,GAAA,KAAAa,EAAAK,CAAA,GAAAwF,GAAArG,EAAAa,EAAAL,EAAAK,CAAA,CAAA,EAAA,OAAAb,CAAA,EAAA+Y,GAAA,CAAA/Y,EAAAQ,IAAA,CAAA,IAAAK,EAAA,GAAA,QAAAJ,KAAAT,EAAA0V,GAAA,KAAA1V,EAAAS,CAAA,GAAAD,EAAA,QAAAC,CAAA,EAAA,IAAAI,EAAAJ,CAAA,EAAAT,EAAAS,CAAA,GAAA,GAAAT,GAAA,MAAAD,GAAA,QAAAU,KAAAV,GAAAC,CAAA,EAAAQ,EAAA,QAAAC,CAAA,EAAA,GAAAd,GAAA,KAAAK,EAAAS,CAAA,IAAAI,EAAAJ,CAAA,EAAAT,EAAAS,CAAA,GAAA,OAAAI,CAAA,EA+Ba,MAAA+L,GAAY5I,GAOJ,CAPI,IAAA8R,EAAA9R,EACvB,CAAA,MAAA5C,EACA,SAAAoC,EACA,KAAAyE,EACA,KAAAiR,EAAO,KACP,QAAAZ,EAAU,SApCZ,EA+ByBxC,EAMpBO,EAAAC,GANoBR,EAMpB,CALH,QACA,WACA,OACA,OACA,SAOA,CAAA,EAAA,OACE1V,EAAA,cAAC8c,EAAA5c,SAAAA,GAAAA,GAAA,CACC,KAAO4Y,EACP,GAAKjR,EACL,SAAWzE,EACX,QAAU8U,CATU,EAAA,OAAOlX,GAAU,UACrC,CAAE,UAAWA,CAAM,EACnB,CAAE,MAAAA,CAAM,CAAA,EASHiV,EACP,CAEJ,EClDM8G,GAAc/b,GACjBgc,KAAG,MAAOhc,CAAK,EAAI6V,EAAAA,OAASjB,WAElBqH,GAAyCC,GAAqB,CACzE,MAAMC,EAAsBD,EAC5B,OAAAE,EAAAA,QAASC,GAAa,CACpB,MAAMrc,EAAQkc,EAAIG,CAAQ,EAC1B,GAAIL,EAAAA,GAAG,OAAQhc,CAAK,EAAG,CACrB,MAAMsc,EAASP,GAAW/b,CAAK,EAC/Bmc,EAAOE,CAAQ,EAAIC,EAAOL,GAAejc,CAAoB,CAAC,EAE5Dgc,EAAG,GAAA,OAAQhc,CAAK,IAClBmc,EAAOE,CAAQ,EAAIE,EAAKvc,KAAAA,CAAe,EAE3C,EAAGmJ,EAAAA,KAAK+S,CAAG,CAAC,EACLC,CACT,+fCsHO,MAAMK,GAAO5E,EAAAA,WAAW,CAAiChV,EAYtCY,IAA8C,CAZR,IAAAkR,EAAA9R,EAC9D,eAAA6Z,EACA,SAAAC,EACA,SAAA5U,EACA,SAAA6U,EACA,aAAAC,EAAe,CAAE,KAAM,UAAW,EAClC,QAAAC,EAAU,OACV,mBAAAC,EAAqB,GACrB,WAAAf,EAAa,GACb,eAAAgB,EAAiB,CACjB,EAAA,UAAAC,CAnJF,EAyIgEtI,EAW3DO,EAAAC,GAX2DR,EAW3D,CAVH,gBACA,WACA,WACA,WACA,eACA,UACA,qBACA,aACA,iBACA,WAAA,CAAA,EAGA,MAAMuI,EAA4C,CAChDpH,EACAqH,EACAC,KACI,CACJ,OAAAtH,EACA,OAAQ8G,EAAS9G,CAAM,CACzB,GAQMuH,EACJP,GACAQ,EAAoBne,QAAAA,GAAA,CAClB,cAAeud,EACf,UAVgB,IAAM,CACxB,GAAIE,EAAU,OAAOM,EACrB,GAAID,EAAW,OAAOM,GAAAA,YAAYN,CAAS,CAE7C,GAAA,CAOOJ,EAAAA,CAAAA,CACJ,EAIH,GAFAW,sBAAoB/Z,EAAK2V,EAAAA,OAAOiE,CAAU,EAAG,EAAE,EAE3CN,EAAoB,CACtB,MAAMU,EAAoB/a,EAAAA,OAAO,CAAE,CAAA,EACnCpC,EAAAA,UAAU,IAAM,CACTod,EAAAA,OAAOD,EAAkB,QAASf,CAAa,IAClDW,GAAY,MAAMX,GAClBe,EAAkB,QAAUf,EAEhC,EAAG,CAAEA,CAAc,CAAC,EAGtB,MAAMiB,EAAgB7H,GACfkG,EAIEE,GAA2BpG,CAAM,EAH/BA,EAML8H,EAAeP,EAAW,UAAU,QACtCA,EAAW,aAAcvH,GACzB6G,EAASgB,EAAa7H,CAAM,EAAGuH,CAAU,CAC3C,EACG3d,GAAwC,CACzC2d,EAAW,QAAA,EACX3d,EAAE,eACJ,CAAA,EAEF,OACET,EAAA,cAAC4e,EAAAA,aAAA1e,GAAAA,GAAA,CAAkBke,EAAAA,CAAAA,EAAkBnI,CACnCjW,EAAAA,EAAA,cAAC,OAAK,CAAA,MAAQE,GAAA,CAAE,MAAO,MAAA,EAAW6d,GAAmB,SAAWY,CAAAA,EAC5D,OAAO7V,GAAa,WAAaA,EAASsV,CAAU,EAAItV,CAC5D,CACF,CAEJ,CAAC,olBCvMY,MAAAgR,GAAYlB,EAAAA,WAA8C,CAAChV,EAGrEY,IAAK,CAHgE,IAAAkR,EAAA9R,EACtE,CAAA,SAAUib,CAXZ,EAUwEnJ,EAEnEO,EAAAC,GAFmER,EAEnE,CADH,UAAA,CAAA,EAGA,OAAA1V,EAAA,cAAC0R,GAAAnG,GAAArL,GAAA,CACC,KAAK,KACL,GAAK,CACH,MAAO,MACP,SAAU,OACV,aAAc,EACd,gBAAiB,CACnB,EACA,kBAAoB,MACf+V,EAAAA,CAAAA,EATN,CAUC,IAAMzR,CAEJqa,CAAAA,EAAAA,CACJ,CACD,CAAA,EC5BD,IAAAtJ,GAAA,OAAA,eAAAhN,GAAA,OAAA,sBAAA1I,GAAA,OAAA,UAAA,eAAAM,GAAA,OAAA,UAAA,qBAAAO,GAAA,CAAAN,EAAAK,EAAAb,IAAAa,KAAAL,EAAAmV,GAAAnV,EAAAK,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAQ,EAAAK,CAAA,EAAAb,EAAAD,GAAA,CAAAS,EAAAK,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAZ,GAAA,KAAAY,EAAAb,CAAA,GAAAc,GAAAN,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAA2I,GAAA,QAAA3I,KAAA2I,GAAA9H,CAAA,EAAAN,GAAA,KAAAM,EAAAb,CAAA,GAAAc,GAAAN,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAAAsL,GAAA,CAAAtL,EAAAK,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAH,KAAAW,EAAAP,GAAA,KAAAO,EAAAX,CAAA,GAAAgB,EAAA,QAAAhB,CAAA,EAAA,IAAAG,EAAAH,CAAA,EAAAW,EAAAX,CAAA,GAAA,GAAAW,GAAA,MAAAmI,GAAA,QAAA9I,KAAA8I,GAAAnI,CAAA,EAAAK,EAAA,QAAAhB,CAAA,EAAA,GAAAU,GAAA,KAAAC,EAAAX,CAAA,IAAAG,EAAAH,CAAA,EAAAW,EAAAX,CAAA,GAAA,OAAAG,CAAA,EAmGA,MAAMkf,GAAY,CAGflb,EAUqCY,IAAmC,CAVxE,IAAAkR,EAAA9R,EACC,CAAA,KAAAiE,EACA,MAAAgX,EACA,SAAA/V,EACA,UAAAiW,EAAY,SACZ,WAAAC,EAAa,GACb,kBAAAC,EAAoB,GACpB,SAAAtB,EACA,QAASuB,CA9Gb,EAsGGxJ,EASIO,EAAAC,GATJR,EASI,CARH,OACA,QACA,WACA,YACA,aACA,oBACA,WACA,SAGF,CAAA,EAAA,MAAMmI,EAAUsB,EAA2B,eAAA,EACrC,CAAE,UAAW,CAAE,OAAAlX,CAAO,CAAE,EAAI4V,EAC5BuB,EAAUF,GAAiBrB,EAAQ,QAEnCwB,EAAarX,GAA0BH,EAAMI,CAAM,EAEzD,OACEjI,EAAA,cAACsf,EAAA,YAAA,CAAY,UAAY,CAAC,CAACD,EAAa,WAAaL,EAAa,IAAMxa,CACtExE,EAAAA,EAAA,cAACuf,EAAAA,MAAArf,GAAA,CACC,QAAQ,OACR,UAAY6e,EACZ,WAAaA,IAAc,SAAW,UAAY,QAAA,EAC7C9I,GAEH4I,GACA7e,EAAA,cAAC8Z,GAAA,CAAU,QAAUmF,EAAoB,OAAYpX,EAAO,GAAK,GAC7DgX,CACJ,EAEF7e,EAAA,cAACwf,EAAAA,WAAA,CACC,KAAO3X,EACP,QAAUuX,EACV,MAAQzB,EACR,OAAS,CAAC,CAAE,MAAA8B,CAAM,IAAM3W,EAAS2W,EAAO5B,CAAO,EACjD,CACF,EACA7d,EAAA,cAAC0f,EAAAA,iBAAA,KACGL,GAAeA,GAAY,OAC/B,CACF,CAEJ,EAEaM,EAAQ/G,EAAAA,WAAWkG,EAAS,EC/I5Bc,GAAuB,IAAM,CACxC,KAAM,CAAE,SAAAC,EAAU,MAAAC,CAAM,EAAIX,EAAAA,eAAAA,EAM5B,MAJ0B,CAACtX,EAAW7G,EAAY2U,IAAiC,CACjFmK,EAAMjY,CAAI,EACVgY,EAAShY,EAAM7G,EAAO2U,CAAO,CAC/B,CAEF,ECXA,IAAAzP,GAAA,OAAA,eAAAuF,GAAA,OAAA,sBAAA/L,GAAA,OAAA,UAAA,eAAAJ,GAAA,OAAA,UAAA,qBAAAO,GAAA,CAAAD,EAAAa,EAAAlB,IAAAkB,KAAAb,EAAAsG,GAAAtG,EAAAa,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAlB,CAAA,CAAA,EAAAK,EAAAa,CAAA,EAAAlB,EAAAoa,GAAA,CAAA/Z,EAAAa,IAAA,CAAA,QAAAlB,KAAAkB,IAAAA,EAAA,CAAA,GAAAf,GAAA,KAAAe,EAAAlB,CAAA,GAAAM,GAAAD,EAAAL,EAAAkB,EAAAlB,CAAA,CAAA,EAAA,GAAAkM,GAAA,QAAAlM,KAAAkM,GAAAhL,CAAA,EAAAnB,GAAA,KAAAmB,EAAAlB,CAAA,GAAAM,GAAAD,EAAAL,EAAAkB,EAAAlB,CAAA,CAAA,EAAA,OAAAK,CAAA,EAAAc,GAAA,CAAAd,EAAAa,IAAA,CAAA,IAAAlB,EAAA,CAAA,EAAA,QAAAa,KAAAR,EAAAF,GAAA,KAAAE,EAAAQ,CAAA,GAAAK,EAAA,QAAAL,CAAA,EAAA,IAAAb,EAAAa,CAAA,EAAAR,EAAAQ,CAAA,GAAA,GAAAR,GAAA,MAAA6L,GAAA,QAAArL,KAAAqL,GAAA7L,CAAA,EAAAa,EAAA,QAAAL,CAAA,EAAA,GAAAd,GAAA,KAAAM,EAAAQ,CAAA,IAAAb,EAAAa,CAAA,EAAAR,EAAAQ,CAAA,GAAA,OAAAb,CAAA,EA6Ba,MAAAwgB,GAAgBnH,EAAAA,WAA+C,CAAChV,EAW1EY,IAAK,CAXqE,IAAAkR,EAAA9R,EAC3E,CAAA,KAAAiE,EACA,MAAAgX,EACA,QAAA3G,EACA,WAAA8G,EACA,SAAArB,EACA,SAAUqC,EAAmBpK,EAAAA,SAC7B,UAAAmJ,EAAY,MACZ,eAAAkB,EAAiB,OACjB,UAAAC,EAAY,IAtCd,EA6B6ExK,EAUxEO,EAAAC,GAVwER,EAUxE,CATH,OACA,QACA,UACA,aACA,WACA,WACA,YACA,iBACA,WAAA,CAAA,EAGA,OAAA1V,EAAA,cAAC6X,MAAA,CACC,EAAIgH,EAAQ,OAAS,cACrB,QAAQ,aAAA,EAER7e,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAM,GACN,WAAamX,EACb,UAAYD,EACZ,SAAWpB,EACX,IAAMnZ,CAEJ,EAAA,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAAC0c,EAAAA,KAAA,CACC,IAAM,EACN,UAAYuD,IAAmB,OAAS,cAAgB,OAExDjgB,EAAA,cAACwM,GAAAtM,GAAA,CACC,KAAO2H,EACP,SAAYpH,GAAM,CAChB2C,EAAS3C,CAAC,EACVuf,EAAiBvf,CAAC,CACpB,EACA,MAAQO,EACR,QAAUkX,EACV,cAAY,wBAAA,EACPjC,CACP,CAAA,EACAjW,EAAA,cAAC0R,GAAA,CAAM,QAAU7J,EAAO,GAAK,CAAE,WAAY,QAAS,EAAI,KAAOqY,CAAAA,EAAcrB,CAAO,CACtF,CAEJ,CACF,CACD,CAAA,+fC5DM,MAAMsB,GAAqBvH,EAAAA,WAAoD,CAAChV,EASpFY,IAAK,CAT+E,IAAAkR,EAAA9R,EACrF,CAAAiE,KAAAA,EACA,MAAAgX,EACA,SAAA/V,EACA,WAAAkW,EACA,UAAAD,EACA,SAAApB,EACA,SAAUqC,EAAmBpK,EArB/B,QAAA,EAcuFF,EAQlFO,EAAAC,GARkFR,EAQlF,CAPH,OACA,QACA,WACA,aACA,YACA,WACA,UAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC6X,EAAAA,IAAA,CAAI,EAAIgH,EAAQ,OAAS,aACxB7e,EAAAA,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,WAAaG,EACb,SAAWrB,EACX,UAAYoB,EACZ,IAAMva,CAAAA,EAEJ,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAACogB,EAAAA,cAAAlgB,GAAA,CACC,SAAYO,GAAM,CAChB2C,EAAS3C,CAAC,EACVuf,EAAiBvf,CAAC,CACpB,EACA,MAAQO,EACR,cAAY,8BAAA,EACPiV,CAEHnN,EAAAA,CACJ,CAEJ,CACF,CACD,CAAA,EChDD,IAAAsM,GAAA,OAAA,eAAA3U,GAAA,OAAA,sBAAAlB,GAAA,OAAA,UAAA,eAAAkM,GAAA,OAAA,UAAA,qBAAA9L,GAAA,CAAAC,EAAA,EAAAF,IAAA,KAAAE,EAAAwV,GAAAxV,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAF,CAAA,CAAA,EAAAE,EAAA,CAAA,EAAAF,EAAAgM,GAAA,CAAA9L,EAAA,IAAA,CAAA,QAAAF,KAAA,IAAA,EAAA,CAAA,GAAAH,GAAA,KAAA,EAAAG,CAAA,GAAAC,GAAAC,EAAAF,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAe,GAAA,QAAAf,KAAAe,GAAA,CAAA,EAAAgL,GAAA,KAAA,EAAA/L,CAAA,GAAAC,GAAAC,EAAAF,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAAE,CAAA,EAAAO,GAAA,CAAAP,EAAA,IAAA,CAAA,IAAAF,EAAA,CAAA,EAAA,QAAAU,KAAAR,EAAAL,GAAA,KAAAK,EAAAQ,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAAV,EAAAU,CAAA,EAAAR,EAAAQ,CAAA,GAAA,GAAAR,GAAA,MAAAa,GAAA,QAAAL,KAAAK,GAAAb,CAAA,EAAA,EAAA,QAAAQ,CAAA,EAAA,GAAAqL,GAAA,KAAA7L,EAAAQ,CAAA,IAAAV,EAAAU,CAAA,EAAAR,EAAAQ,CAAA,GAAA,OAAAV,CAAA,QA0Ba2gB,EAAazH,EAAAA,WAAW,CAAChV,EAMlBY,IAAa,CANK,IAAAkR,EAAA9R,EACpC,SAAAsU,EAAU,UACV,KAAAqB,EACA,aAAc+G,EACd,SAAAxX,CA9BF,EA0BsC4M,EAKjCO,EAAAC,GALiCR,EAKjC,CAJH,UACA,OACA,aACA,UAAA,CAAA,EA9BF9R,EAiCE,MAAM0Y,EAAgB/C,GAAQzQ,EACxByX,EAAe3X,eAAa0T,EAAe,CAAE,MAAM1Y,EAAA0Y,EAAc,MAAM,OAApB,KAAA1Y,EAA4BqS,EAAK,IAAK,CAAC,EAChG,OACEjW,EAAA,cAACwgB,EAAAA,WAAAtgB,GAAA,CACC,QAAUgY,EACV,KAAOqI,EACP,aAAaD,EACb,IAAM9b,CACDyR,EAAAA,CAAAA,CACP,CAEJ,CAAC,EC1CYzT,GAAU,EACVie,GAAgBrZ,GAAU,IAAK,GAAG,EAClCsZ,GAAgBtZ,GAAU,GAAG,ECO7BuZ,GAAc/H,EAAAA,WAAW,CAAC,CACrC,MAAA5S,EACA,QAAA4a,EACA,KAAA9H,EACA,SAAA+H,EAAW,EACb,EAAqBrc,IAAa,CAChC,GAAI,CAACwB,EAAO,OAAOhG,EAAA,cAAC6X,EAAA,IAAA,IAAI,EACxB,KAAM,CAAE,cAAAiJ,EAAe,cAAA/d,EAAe,UAAAG,CAAU,EAAIX,GAAcC,EAAO,EAEnEue,EAAatgB,GAAW,CAC5B,OAAQA,EAAE,KACR,IAAK,SACHA,EAAE,iBACFsC,EAAc,CAAE,KAAM,GAAO,OAAQP,GAAU,CAAE,CAAC,EAClD,MACF,IAAK,WACH/B,EAAE,iBACFyC,EAAU,CAAE,KAAM,GAAO,OAAQV,GAAU,CAAE,CAAC,EAC9C,MACF,QACEse,EAAcrgB,CAAC,EACf,KACJ,CACF,EAEM,CAAE,YAAAugB,CAAY,EAAI1I,EAAoB,oBAAA,cAAe,CAAE,KAAAQ,CAAK,CAAC,EAEnE,OACE9Y,EAAA,cAACqgB,EAAA,CACC,GAAKra,EACL,IAAMxB,EACN,UAAYuc,EACZ,aAAa,UAAU/a,IACvB,QAAU4a,EACV,GAAKI,EACL,KAAOhhB,EAAA,cAAC0P,EAAA,CAAK,GAAKuR,EAAAA,SAAW,QAAUJ,EAAW,OAAY,IAAM,EACpE,MAAQta,GAAiBP,CAAK,CAAA,CAChC,CAEJ,CAAC,EClDD,IAAA3F,GAAA,OAAA,eAAAI,GAAA,OAAA,sBAAA0U,GAAA,OAAA,UAAA,eAAAzU,GAAA,OAAA,UAAA,qBAAAF,GAAA,CAAAlB,EAAAM,EAAA,IAAAA,KAAAN,EAAAe,GAAAf,EAAAM,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAN,EAAAM,CAAA,EAAA,EAAA2I,GAAA,CAAAjJ,EAAAM,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAuV,GAAA,KAAAvV,EAAA,CAAA,GAAAY,GAAAlB,EAAA,EAAAM,EAAA,CAAA,CAAA,EAAA,GAAAa,GAAA,QAAA,KAAAA,GAAAb,CAAA,EAAAc,GAAA,KAAAd,EAAA,CAAA,GAAAY,GAAAlB,EAAA,EAAAM,EAAA,CAAA,CAAA,EAAA,OAAAN,CAAA,EAGa,MAAA4hB,GAAWnhB,GACtBC,EAAA,cAACmhB,EAAAjhB,QAAAA,GAAA,CAAc,OAAS,IAAYH,CAAQ,CAAA,ECKjCqhB,GAAqB,CAAC,CACjC,QAAAR,EACA,KAAA9H,EACA,SAAAuI,CACF,IAA+B,CAC7B,KAAM,CAAE,cAAAP,EAAe,cAAA/d,EAAe,WAAAJ,CAAW,EAAIJ,GAAcC,EAAO,EACpE,CAAE,YAAAwe,CAAY,EAAI1I,sBAAoB,cAAe,CAAE,KAAAQ,CAAK,CAAC,EAoBnE,OACE9Y,EAAA,cAACqgB,EAAA,CACC,QAAQ,QACR,UAtBe5f,GAAW,CAC5B,OAAQA,EAAE,IAAA,CACR,IAAK,MACHkC,IACA,MACF,IAAK,UACHlC,EAAE,eAAe,EACjBsC,EAAc,CAAE,KAAM,GAAM,OAAQ,CAAE,CAAC,EACvC,MACF,IAAK,SACHtC,EAAE,iBACFsC,EAAc,CAAE,KAAM,GAAO,OAAQP,GAAU,CAAE,CAAC,EAClD,MACF,QACEse,EAAcrgB,CAAC,EACf,KACJ,CACF,EAMI,aAAW,sBACX,QAAUmgB,EACV,GAAKI,GAELhhB,EAAA,cAAC0P,EAAA,CAAK,GAAK2R,EAAWC,EAAeC,aAAAA,gBAAAA,CAAiB,CACxD,CAEJ,EC9CA,IAAA9hB,GAAA,OAAA,eAAAC,GAAA,OAAA,sBAAAgB,GAAA,OAAA,UAAA,eAAApB,GAAA,OAAA,UAAA,qBAAAmM,GAAA,CAAArL,EAAAR,EAAAa,IAAAb,KAAAQ,EAAAX,GAAAW,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAa,CAAA,CAAA,EAAAL,EAAAR,CAAA,EAAAa,EAAA8H,GAAA,CAAAnI,EAAAR,IAAA,CAAA,QAAAa,KAAAb,IAAAA,EAAA,CAAA,GAAAc,GAAA,KAAAd,EAAAa,CAAA,GAAAgL,GAAArL,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,GAAAf,GAAA,QAAAe,KAAAf,GAAAE,CAAA,EAAAN,GAAA,KAAAM,EAAAa,CAAA,GAAAgL,GAAArL,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,OAAAL,CAAA,EAAAP,GAAA,CAAAO,EAAAR,IAAA,CAAA,IAAAa,EAAA,CAAA,EAAA,QAAAJ,KAAAD,EAAAM,GAAA,KAAAN,EAAAC,CAAA,GAAAT,EAAA,QAAAS,CAAA,EAAA,IAAAI,EAAAJ,CAAA,EAAAD,EAAAC,CAAA,GAAA,GAAAD,GAAA,MAAAV,GAAA,QAAAW,KAAAX,GAAAU,CAAA,EAAAR,EAAA,QAAAS,CAAA,EAAA,GAAAf,GAAA,KAAAc,EAAAC,CAAA,IAAAI,EAAAJ,CAAA,EAAAD,EAAAC,CAAA,GAAA,OAAAI,CAAA,EAQO,MAAM+gB,GACR5d,GAAqE,CAArE,IAAA8R,EAAA9R,EAAE,CAAA,qBAAA6d,EAAsB,SAAA3Y,CAT7B,EASK4M,EAAqCO,EAAAC,GAArCR,EAAqC,CAAnC,uBAAsB,aACvB,OAAK+L,EAEHzhB,EAAA,cAAC0hB,SAAAxhB,GAAA,CAAA,EAAY+V,CACTnN,EAAAA,CACJ,EAJgCA,CAMpC,+fC+BG,MAAM+G,GAAejM,GAWJ,CAXI,IAAA8R,EAAA9R,EAC1B,CAAAR,SAAAA,EAAW,IAAM,CAAA,EACjB,UAAAue,EAAY,GACZ,OAAAja,EAASgZ,GACT,eAAAkB,EAAiBnB,GACjB,MAAAzf,EAAQ,KACR,KAAA6G,EACA,KAAAiR,EAAO,KACP,qBAAA2I,EAAuB,GACvB,aAAAI,CAxDF,EA+C4BnM,EAUvBO,EAAAC,GAVuBR,EAUvB,CATH,WACA,YACA,SACA,iBACA,QACA,OACA,OACA,uBACA,cAGA,CAAA,EAAA,KAAM,CAAE,OAAAhD,EAAQ,SAAAoP,EAAU,QAAAC,CAAQ,EAAIC,EAAAA,cAAc,EAC9C,CAAEX,EAAUY,CAAY,EAAIC,EAAW,WAAA,EACvC,CAAEpS,EAAeqS,CAAiB,EAAI/gB,EAASJ,SAAAA,CAAK,EACpD,CAAEohB,EAAeC,CAAiB,EAAIjhB,EAAAA,SAASsG,CAAM,EACrD4a,EAAkB7e,EAAAA,OAAO,IAAI,EAC7B,CACJ,QAAA8e,EACA,QAAAC,CACF,EAAIlK,EAAAA,oBAAoB,cAAe,CAAE,cAAAxI,EAAe,KAAAgJ,CAAK,CAAC,EACxD2J,EAAczhB,GAASsF,EAAAA,SAAS,SAAUtF,CAAK,EAE/C0hB,EAAa,CAAE,GAAGhb,CAAO,EAC/B,QAASnI,EAAI,EAAGA,EAAImjB,EAAW,OAASlgB,GAASjD,GAAK,EACpDmjB,EAAW,KAAK,EAAE,EAGpBrhB,EAAAA,UAAU,IAAM,CAEZ8gB,EADEnhB,IAAU,GACK,KAEAyhB,CAFI,CAIzB,EAAG,CAAEzhB,CAAM,CAAC,EAEZK,EAAU,UAAA,IAAM,CAEZghB,EADEhB,EACgBsB,GAASA,EAAK,OAAOf,CAAc,EAEpCc,CAFqC,CAI1D,EAAG,CAAErB,CAAS,CAAC,EAEf,MAAMuB,EAAe,IAAM,CACzBX,EAAY,OAAO,CACrB,EAEMY,EAAqB,IACrBxB,EAAiB7e,GACjBkF,EAAO,OAASlF,IAAWkF,EAAO,OAAS,EACtCA,EAAO,OAEZA,EAAO,OAASlF,GACX,EAEFA,GAGHsgB,EAAmBpY,GACvBoF,EACIpF,IAAU0X,EAAc,UAAWW,GAAaA,IAAajT,CAAa,EAC1EpF,IAAU,EAGVsY,EAAgBhd,GAAkB,CACtC8b,EAAS,EACTK,EAAiBnc,CAAK,EACtB5C,EAAS4C,CAAK,CAChB,EAEMid,EAAiB,IAAM,CAC3Bd,EAAiB,IAAI,EACrB/e,EAAS,IAAI,CACf,EAEA,OACEpD,EAAA,cAAC6X,EAAA,IAAA,CAAI,cAAY,sBAAA,EACf7X,EAAA,cAACkhB,GAAAhhB,GAAA,CACC,OAASwS,EACT,QAAUqP,EACV,gBAAkBO,CAAAA,EACbT,CAEL7hB,EAAAA,EAAA,cAACkjB,EAAAA,eAAA,KACCljB,EAAA,cAACqgB,EAAAngB,GAAA,CACC,QAAU4hB,EACV,aAAaja,GAAQ,eACrB,KAAOA,EACP,GAAK0a,EACL,KAAOzJ,EACP,KAAO9Y,EAAA,cAAC0P,EAAA,CAAK,GAAKyT,EAAAA,SAAAA,CAAY,CACzBlN,EAAAA,CAAAA,CACP,CACF,EACAjW,EAAA,cAACwhB,GAAA,CAAe,qBAAuBC,CAAAA,EACrCzhB,EAAA,cAACojB,EAAA,eAAA,CAAe,EAAE,OAAO,UAAU,KAAK,EAAI,EAAI,QAAQ,oBAAA,EACtDpjB,EAAA,cAACuf,EAAAA,MAAA,KACCvf,EAAA,cAACqjB,EAAAA,cAAA,CACC,MAAM,eACN,GAAKb,EACL,QAAQ,OACR,WAAW,SACX,eAAe,gBACf,MAAM,MACP,EAAA,eAEGb,GAAaY,EAAQ,QAAU,SACjCviB,EAAA,cAACgM,GAAA,CACC,KAAK,KACL,EAAE,IACF,QAAUiX,EACV,QAAQ,OAAA,EACT,OAED,CAEF,EACAjjB,EAAA,cAACsjB,EAAAA,YAAA,CAAY,EAAI,CACftjB,EAAAA,EAAA,cAACuf,EAAAA,MAAA,CAAM,WAAW,SAAS,EAAI,EAAI,QAAU,CAC3Cvf,EAAAA,EAAA,cAACujB,GAAAA,WAAA,KACCvjB,EAAA,cAACwjB,EAAAA,WAAA,CACC,QAAUX,EAAmB,EAC7B,QAAU,EACV,UAAU,SACV,KAAO,GACP,GAAK,EACL,GAAK,EACL,GAAK,CAEHT,EAAAA,EAAc,IAAI,CAACpc,EAAO0E,IAC1B1K,EAAA,cAAC2gB,GAAA,CACC,MAAQ3a,EACR,IAAM,GAAGA,YAAgB0E,IACzB,SAAW1E,IAAU8J,EACrB,IAAMgT,EAAgBpY,CAAK,EAAI4X,EAAkB,OACjD,KAAOxJ,EACP,QAAU,IAAMkK,EAAahd,CAAK,CAAA,CACpC,CACD,CACH,EACE4b,EAAe,OAAS,GAC1B5hB,EAAA,cAACohB,GAAA,CACC,QAAUwB,EACV,SAAWvB,EACX,KAAOvI,CAAAA,CACT,CAEF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAEJ,EC5MA,IAAAH,GAAA,OAAA,eAAAlN,GAAA,OAAA,sBAAAnM,GAAA,OAAA,UAAA,eAAAe,GAAA,OAAA,UAAA,qBAAAR,GAAA,CAAAD,EAAAL,EAAA,IAAAA,KAAAK,EAAA+Y,GAAA/Y,EAAAL,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAK,EAAAL,CAAA,EAAA,EAAAiB,GAAA,CAAAZ,EAAAL,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAD,GAAA,KAAAC,EAAA,CAAA,GAAAM,GAAAD,EAAA,EAAAL,EAAA,CAAA,CAAA,EAAA,GAAAkM,GAAA,QAAA,KAAAA,GAAAlM,CAAA,EAAAc,GAAA,KAAAd,EAAA,CAAA,GAAAM,GAAAD,EAAA,EAAAL,EAAA,CAAA,CAAA,EAAA,OAAAK,CAAA,EAAAc,GAAA,CAAAd,EAAAL,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAkB,KAAAb,EAAAN,GAAA,KAAAM,EAAAa,CAAA,GAAAlB,EAAA,QAAAkB,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,GAAAb,GAAA,MAAA6L,GAAA,QAAAhL,KAAAgL,GAAA7L,CAAA,EAAAL,EAAA,QAAAkB,CAAA,EAAA,GAAAJ,GAAA,KAAAT,EAAAa,CAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,OAAA,CAAA,EAYa,MAAAgjB,GAAoB7f,GAOP,CAPO,IAAA8R,EAAA9R,EAC/B,CAAAiE,KAAAA,EACA,MAAAgX,EACA,UAAAE,EACA,WAAAC,EACA,SAAArB,CAjBF,EAYiCjI,EAM5BO,EAAAC,GAN4BR,EAM5B,CALH,OACA,QACA,YACA,aACA,UAAA,CAAA,EAGA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,GAET,CAAC,CAAE,SAAAva,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAAC6P,GAAA3P,GAAA,CACC,KAAO2H,EACP,SAAWzE,EACX,MAAQpC,CAAAA,EACHiV,EACP,CAEJ,CAAA,ECnCF,IAAA1W,GAAA,OAAA,eAAAG,GAAA,OAAA,iBAAAgkB,GAAA,OAAA,0BAAAvjB,GAAA,OAAA,sBAAAgG,GAAA,OAAA,UAAA,eAAAxG,GAAA,OAAA,UAAA,qBAAAc,GAAA,CAAAL,EAAAR,EAAAS,IAAAT,KAAAQ,EAAAb,GAAAa,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAK,GAAA,CAAAN,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,IAAAuG,GAAA,KAAAvG,EAAAS,CAAA,GAAAI,GAAAL,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAF,GAAA,QAAAE,KAAAF,GAAAP,CAAA,EAAAD,GAAA,KAAAC,EAAAS,CAAA,GAAAI,GAAAL,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAmI,GAAA,CAAAnI,EAAAR,IAAAF,GAAAU,EAAAsjB,GAAA9jB,CAAA,CAAA,EAOa,MAAA+jB,GAAoB/Z,EAAAA,cAA2D,IAAI,EAEnFga,GAAqB,CAChC7jB,EACAwD,IAEAA,EACIsgB,GAAAA,sBAAsB9jB,CAA2B,EACjD+jB,GAAAA,mBAAmB/jB,CAAwB,EAGpCgkB,GAAqB,CAChChkB,EACAmF,EACA3B,IAC2B,CAC3B,MAAMygB,EAAiBzY,GAAArL,GAAA,CAClBH,EAAAA,CAAAA,EADkB,CAErB,aAAc,GAAGwD,EAAU,WAAa,sBAC1C,GAEA,OAAQA,EACJ0gB,oBACAD,EACA9e,CACF,EAAE,WACAgf,GAAAA,cACAF,EACA9e,CACF,EAAE,eAEN,EAEaif,GAAgB,CAACpkB,EAA6BwD,IAAqB,CAC9E,MAAM2B,EAAQ0e,GAAmB7jB,EAAOwD,CAAO,EACzC6gB,EAAuBL,GAAmBhkB,EAAOmF,EAAO3B,CAAO,EACrE,MAAO,CAAE,MAAA2B,EAAO,qBAAAkf,CAAqB,CACvC,EC5CA,IAAAC,GAAA,OAAA,eAAA7kB,GAAA,OAAA,iBAAA8kB,GAAA,OAAA,0BAAA7kB,GAAA,OAAA,sBAAA8kB,GAAA,OAAA,UAAA,eAAAC,GAAA,OAAA,UAAA,qBAAA7L,GAAA,CAAA/Y,EAAAa,EAAAJ,IAAAI,KAAAb,EAAAykB,GAAAzkB,EAAAa,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAJ,CAAA,CAAA,EAAAT,EAAAa,CAAA,EAAAJ,EAAAK,GAAA,CAAAd,EAAAa,IAAA,CAAA,QAAAJ,KAAAI,IAAAA,EAAA,IAAA8jB,GAAA,KAAA9jB,EAAAJ,CAAA,GAAAsY,GAAA/Y,EAAAS,EAAAI,EAAAJ,CAAA,CAAA,EAAA,GAAAZ,GAAA,QAAAY,KAAAZ,GAAAgB,CAAA,EAAA+jB,GAAA,KAAA/jB,EAAAJ,CAAA,GAAAsY,GAAA/Y,EAAAS,EAAAI,EAAAJ,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAA0V,GAAA,CAAA1V,EAAAa,IAAAjB,GAAAI,EAAA0kB,GAAA7jB,CAAA,CAAA,EAAAijB,GAAA,CAAA9jB,EAAAa,IAAA,CAAA,IAAAJ,EAAA,CAAA,EAAA,QAAAd,KAAAK,EAAA2kB,GAAA,KAAA3kB,EAAAL,CAAA,GAAAkB,EAAA,QAAAlB,CAAA,EAAA,IAAAc,EAAAd,CAAA,EAAAK,EAAAL,CAAA,GAAA,GAAAK,GAAA,MAAAH,GAAA,QAAAF,KAAAE,GAAAG,CAAA,EAAAa,EAAA,QAAAlB,CAAA,EAAA,GAAAilB,GAAA,KAAA5kB,EAAAL,CAAA,IAAAc,EAAAd,CAAA,EAAAK,EAAAL,CAAA,GAAA,OAAAc,CAAA,EAqGa,MAAAoO,GAAamK,EAAAA,WAA4C,CAAC7Y,EAAO0kB,IAAe,CAC3F,MAUI7gB,EAAA7D,EATF,UAAA+I,EACA,KAAAgQ,EACA,QAAAZ,EACA,QAAA3U,EACA,WAAAmhB,EAAa,GACb,KAAAnL,EACA,MAAAvY,EACA,cAAA2jB,EAAgB,MA9GpB,EAgHM/gB,EADCqS,EAAAC,GACDtS,EADC,CARH,WACA,OACA,UACA,UACA,aACA,OACA,QACA,eAAA,CAAA,EAGIsB,EAAQ4E,EAAAA,WAAW6Z,EAAiB,EACpCnf,EAAMf,EAAAA,OAAO,IAAI,EAEjBmhB,EAAuBxa,OAAK,CAAE,UAAW,EAAGmB,GAAArL,GAAA,GAAKH,CAAL,EAAA,CAAY,aAAc,GAAGwD,EAAU,WAAa,qBAAqBvC,GAAQ,EAAC,EAC9H,CAAE,WAAA6jB,CAAW,EAAIthB,EACnBuhB,GAAAA,qBAAqBF,EAAsB1f,EAA6BV,CAAG,EAC3EugB,GAAAA,SAASH,EAAsB1f,EAA0BV,CAAG,EAE1D,CAAE,OAAAwgB,EAAQ,WAAAC,CAAW,EAAI3M,EAAAA,oBAAoB,aAAc,CAAE,KAAAQ,EAAM,QAAAZ,CAAQ,CAAC,EAC5E,CAAE,WAAAgN,EAAY,eAAgBtZ,CAAU,EAAIuZ,GAAa,aAAA,EACzDC,EAAc,CAClB,QAAS,OACT,KAAM,MACN,UAAW,cACX,WAAY,KACd,EACMC,EAAYzZ,EAAYwZ,EAAc,CAAC,EAEvCE,EAAa/hB,EACd2B,EAA6B,WAAWlE,CAAK,EAC7CkE,EAA0B,gBAAkBlE,EAE3CukB,EAA6Cha,GAAArL,GAAA,CAAA,EAC9CslB,cAAWX,EAAYK,CAAU,CADa,EAAA,CAEjD,IAAA1gB,EACA,MAAO,CAAE,QAAS,IAAK,MAAO,IAAK,OAAQ,GAAI,EAC/C,aAAcjB,EAAU,iBAAmB,aAC7C,CAAA,EAUA,OAAO,OAAOuF,GAAa,WACvBA,EAAS5I,GAAA,CACT,MAAAgF,EACA,eAX6C,CAC/C,eAAgBogB,EAChB,gBAAiBZ,EACjB,GAAIW,EACJ,GAAI,QACJ,OAAQ,SACV,EAMI,gBAAAE,EACA,UAAA3Z,EACA,WAAA0Z,EACA,WAAAZ,EACA,QAASnhB,GAAW,GACpB,UAAA8hB,EACA,MAAArkB,CACGiV,EAAAA,CAAAA,CACJ,EAECjW,EAAA,cAACic,EAAA,OAAA,CACC,QAAWqJ,GAAcX,IAAkB,QAAWpL,EAAO,EAAI,EACjE,GAAKkM,EAAAA,SAAS,CAAET,EAAQpZ,EAAYwZ,EAAc,CAAI,EAAA,CAAE,cAAeT,IAAkB,OAAS,MAAQ,aAAc,CAAE,CAAC,EAC3H,eAAeW,EACf,gBAAgBZ,EAChB,GAAG,QACH,IAAMD,GAENzkB,EAAA,cAAC,QAAAE,GAAA,CAAA,EAAWqlB,EAAkB,EAC5BhM,GAAQoL,IAAkB,OAExB3kB,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,GAAQmM,EAAa,WAAA,GAAKT,CAAa,CAAA,EAChDK,GAAcX,IAAkB,QAClC3kB,EAAA,cAAC2lB,YAAA,CAAU,GAAKL,CAAAA,EACdtlB,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,GAAQmM,aAAa,GAAKT,EAAa,CACpD,EAEJjlB,EAAA,cAAC4lB,OAAA,CAAK,UAAU,UAAW9c,CAAU,CACvC,CAEN,CAAC,ECxLD,IAAAyM,GAAA,OAAA,eAAAsQ,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAAvmB,GAAA,OAAA,sBAAAE,GAAA,OAAA,UAAA,eAAAE,GAAA,OAAA,UAAA,qBAAAe,GAAA,CAAAL,EAAAT,EAAAF,IAAAE,KAAAS,EAAAkV,GAAAlV,EAAAT,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAF,CAAA,CAAA,EAAAW,EAAAT,CAAA,EAAAF,EAAA6I,GAAA,CAAAlI,EAAAT,IAAA,CAAA,QAAAF,KAAAE,IAAAA,EAAA,CAAA,GAAAH,GAAA,KAAAG,EAAAF,CAAA,GAAAgB,GAAAL,EAAAX,EAAAE,EAAAF,CAAA,CAAA,EAAA,GAAAH,GAAA,QAAAG,KAAAH,GAAAK,CAAA,EAAAD,GAAA,KAAAC,EAAAF,CAAA,GAAAgB,GAAAL,EAAAX,EAAAE,EAAAF,CAAA,CAAA,EAAA,OAAAW,CAAA,EAAAqL,GAAA,CAAArL,EAAAT,IAAAimB,GAAAxlB,EAAAylB,GAAAlmB,CAAA,CAAA,EAAA4kB,GAAA,CAAAnkB,EAAAT,IAAA,CAAA,IAAAF,EAAA,CAAA,EAAA,QAAAU,KAAAC,EAAAZ,GAAA,KAAAY,EAAAD,CAAA,GAAAR,EAAA,QAAAQ,CAAA,EAAA,IAAAV,EAAAU,CAAA,EAAAC,EAAAD,CAAA,GAAA,GAAAC,GAAA,MAAAd,GAAA,QAAAa,KAAAb,GAAAc,CAAA,EAAAT,EAAA,QAAAQ,CAAA,EAAA,GAAAT,GAAA,KAAAU,EAAAD,CAAA,IAAAV,EAAAU,CAAA,EAAAC,EAAAD,CAAA,GAAA,OAAAV,CAAA,EAYa,MAAAqmB,GAAmBhmB,GAAgC,CAC9D,MAYI6D,EAAA7D,EAXF,CAAA,QAAAwD,EAAU,GACV,KAAAsE,EACA,SAAAiB,EACA,UAAAiW,EAAY,MACZ,WAAA2F,EAAa,GACb,cAAAC,EAAgB,OAChB,KAAA7L,EACA,QAAAZ,EACA,KAAAqB,EACA,GAAAjL,EAAK,CAvBT,CAAA,EAyBM1K,EADCqS,EAAAC,GACDtS,EADC,CAVH,UACA,OACA,WACA,YACA,aACA,gBACA,OACA,UACA,OACA,IAII,CAAA,EAAA,CAAE,MAAAsB,EAAO,qBAAAkf,CAAqB,EAAID,GAAcpkB,EAAOwD,CAAO,EAE9DmL,EAAkBzF,EAAAA,SAAS,MAAMH,CAAQ,EAEzCkd,EAAqB/c,EAAAA,SAAS,QAAQH,CAAQ,EAAG,IAAKL,GACzDE,EAAAA,eAAeF,CAAK,EACjBG,eAAaH,EAAOvI,GAAA,CACpB,IAAKuI,EAAM,MAAM,MACjB,QAAAlF,EACA,QAAA2U,EACA,WAAAwM,EACA,cAAAC,EACA,KAAApL,EACA,KAAAT,CACGrQ,EAAAA,EAAM,MACV,EACCA,CACN,EAEM,CAAE,UAAA2P,CAAU,EAAIE,EAAAA,oBAAoB,aAAc,CACtD,KAAAQ,EACA,QAAAZ,EACA,gBAAAxJ,EACA,GAAAJ,CACF,CAAC,EAEK2X,EAAsB7b,EAAAA,KAAK,CAAE,UAAW,EAAG6L,CAAI,EAErD,OACEjW,EAAA,cAACuf,EAAAA,MAAArf,GAAAqL,GAAArL,GAAA,CACMkkB,EAAAA,CAAAA,EADN,CAEC,UAAYrF,EACZ,GAAKlX,EACL,QAAU,EACV,GAAKuQ,CAAAA,CAAAA,EACA6N,GAELjmB,EAAA,cAAC2jB,GAAkB,SAAlB,CAA2B,MAAQze,CAChC8gB,EAAAA,CACJ,CACF,CAEJ,+fC5CO,MAAME,GAAuBtN,EAAAA,WAAsD,CAAChV,EAUxFY,IAAK,CAVmF,IAAAkR,EAAA9R,EACzF,MAAAiE,EACA,MAAAgX,EACA,SAAA/V,EACA,UAAAiW,EACA,WAAAC,EACA,cAAA2F,EAAgB,OAChB,SAAU3E,EAAmBpK,EAC7B,SAAA,SAAA+H,CAjCF,EAyB2FjI,EAStFO,EAAAC,GATsFR,EAStF,CARH,OACA,QACA,WACA,YACA,aACA,gBACA,WACA,UAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,EACX,IAAMnZ,CAAAA,EAEJ,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAAC+lB,GAAA7lB,GAAA,CACC,KAAO2H,EACP,SAAYpH,GAAM,CAAE2C,EAAS3C,CAAC,EAAGuf,EAAiBvf,CAAC,CAAE,EACrD,UAAYse,EACZ,MAAQ/d,EACR,cAAgB2jB,CACX1O,EAAAA,CAAAA,EAEHnN,CACJ,CAEJ,CACD,CAAA,ECzDD,IAAA7C,GAAA,OAAA,eAAA1G,GAAA,OAAA,sBAAAgJ,GAAA,OAAA,UAAA,eAAAmD,GAAA,OAAA,UAAA,qBAAAhM,GAAA,CAAA,EAAAE,EAAA,IAAAA,KAAA,EAAAqG,GAAA,EAAArG,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAA,EAAAA,CAAA,EAAA,EAAAH,GAAA,CAAA,EAAAG,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAA2I,GAAA,KAAA3I,EAAA,CAAA,GAAAF,GAAA,EAAA,EAAAE,EAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAA,KAAAA,GAAAK,CAAA,EAAA8L,GAAA,KAAA9L,EAAA,CAAA,GAAAF,GAAA,EAAA,EAAAE,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAc,GAAA,CAAA,EAAAd,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAAS,KAAA,EAAAkI,GAAA,KAAA,EAAAlI,CAAA,GAAAT,EAAA,QAAAS,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAd,GAAA,QAAAc,KAAAd,GAAA,CAAA,EAAAK,EAAA,QAAAS,CAAA,EAAA,GAAAqL,GAAA,KAAA,EAAArL,CAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAA,CAAA,EAIA,MAAM8lB,GAAuB,CAC3B,gBAAiB/W,GAAM,OAAO,OAAO,cAAc,EAAE,KACvD,EAEagX,GAAexN,EAAAA,WAC1B,CAAChV,EAAoBY,IAAK,CAAzB,IAAAkR,EAAA9R,EAAE,CAAA,MAAAoC,CATL,EASG0P,EAAYO,EAAAC,GAAZR,EAAY,CAAV,OACD,CAAA,EAAA,OAAA1V,EAAA,cAAC6X,EAAAA,IAAA3X,GAAA,CACC,IAAMsE,EACN,OAAO,aACP,OAAS2hB,GACT,QAAUA,GACV,WAAW,sBACX,EAAE,UACF,EAAE,IACF,gBAAgB,KAChB,gBAAgB,QAChB,YAAcngB,GAAS,cACvB,OAAO,QAAA,EACFiQ,EACP,CAEJ,CAAA,ECzBA,IAAA3W,GAAA,OAAA,eAAAoB,GAAA,OAAA,iBAAA+K,GAAA,OAAA,0BAAAhL,GAAA,OAAA,sBAAAyF,GAAA,OAAA,UAAA,eAAAvG,GAAA,OAAA,UAAA,qBAAAJ,GAAA,CAAAa,EAAAR,EAAAS,IAAAT,KAAAQ,EAAAd,GAAAc,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAkI,GAAA,CAAAnI,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,CAAA,GAAAsG,GAAA,KAAAtG,EAAAS,CAAA,GAAAd,GAAAa,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAI,GAAA,QAAAJ,KAAAI,GAAAb,CAAA,EAAAD,GAAA,KAAAC,EAAAS,CAAA,GAAAd,GAAAa,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAX,GAAA,CAAAW,EAAAR,IAAAc,GAAAN,EAAAqL,GAAA7L,CAAA,CAAA,QAOaymB,GAAWtmB,GAAwB,CAC9C,KAAM,CAAE,WAAA2kB,EAAY,YAAA4B,CAAY,EAAIvmB,EAC9ByE,EAAMf,EAA0B,OAAA,IAAI,EACpC,CAAE,YAAA8iB,CAAY,EAAIC,GAAAA,UAAUzmB,EAAOyE,CAAG,EAE5C,OACExE,EAAA,cAACgM,GAAAT,GAAArL,GAAA,CAAA,EACMqmB,CADN,EAAA,CAEC,IAAM/hB,EACN,KAAK,KACL,QAAU,EACV,QAAQ,QACR,WAAakgB,EACb,cAAgB4B,EAChB,cAAgB5B,EAAa,OAAS,MAEtC1kB,CAAAA,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAK+W,EAAAA,WAAAA,CAAc,CAC3B,CAEJ,EC1BA,IAAAnnB,GAAA,OAAA,eAAAK,GAAA,OAAA,iBAAA+L,GAAA,OAAA,0BAAAnM,GAAA,OAAA,sBAAAY,GAAA,OAAA,UAAA,eAAAqV,GAAA,OAAA,UAAA,qBAAA9V,GAAA,CAAAW,EAAAI,EAAAb,IAAAa,KAAAJ,EAAAf,GAAAe,EAAAI,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAS,EAAAI,CAAA,EAAAb,EAAAH,GAAA,CAAAY,EAAAI,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAN,GAAA,KAAAM,EAAAb,CAAA,GAAAF,GAAAW,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAAK,KAAAL,GAAAkB,CAAA,EAAA+U,GAAA,KAAA/U,EAAAb,CAAA,GAAAF,GAAAW,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAS,CAAA,EAAAoL,GAAA,CAAApL,EAAAI,IAAAd,GAAAU,EAAAqL,GAAAjL,CAAA,CAAA,EAMa,MAAAimB,GAAc,CAAC,CAAE,QAAAC,EAAS,MAAAzhB,CAAM,IAAwB,CACnE,MAAMV,EAAMf,EAAAA,OAAyB,IAAI,EACnC,CAAE,aAAAmjB,CAAa,EAAIC,kBAAeF,EAASzhB,EAAOV,CAAG,EAErDsiB,EAAYH,EAAQ,OAAS,UAC7B,CAAE,YAAAI,CAAY,EAAIzO,sBAAoB,YAAY,EAClDrK,EAAW,GAAG,OAAO0Y,EAAQ,QAAQ,EAAE,WAE7C,OACE3mB,EAAA,cAAC6X,EAAAA,IAAAtM,GAAArL,GAAA,CAAA,EACM0mB,GADN,CAEC,IAAMpiB,EACN,MAAQuiB,EACR,SAAWD,EAAY,EAAI7Y,EAC3B,cAAgB6Y,EAAY,EAAI,UAChC,MACEH,EAAQ,cACJ,WACAG,EACE,gBACA,eAER,SAAS,IAEPH,CAAAA,EAAAA,EAAQ,IACZ,CAEJ,EC5BMK,GAAkD,CACtD,EAAG,OACH,EAAG,KACH,EAAG,IACL,EAEaC,GAAeC,GAC1BF,GAAUG,UAAQD,CAAK,EAAE,CAAC,CAAiB,EAEhCE,GAAoB,iBCdjC,IAAAC,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAA9R,GAAA,OAAA,0BAAA3V,GAAA,OAAA,sBAAA8Z,GAAA,OAAA,UAAA,eAAAnZ,GAAA,OAAA,UAAA,qBAAAiL,GAAA,CAAA7L,EAAAa,EAAAJ,IAAAI,KAAAb,EAAAynB,GAAAznB,EAAAa,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAJ,CAAA,CAAA,EAAAT,EAAAa,CAAA,EAAAJ,EAAAd,GAAA,CAAAK,EAAAa,IAAA,CAAA,QAAAJ,KAAAI,IAAAA,EAAA,CAAA,GAAAkZ,GAAA,KAAAlZ,EAAAJ,CAAA,GAAAoL,GAAA7L,EAAAS,EAAAI,EAAAJ,CAAA,CAAA,EAAA,GAAAR,GAAA,QAAAQ,KAAAR,GAAAY,CAAA,EAAAD,GAAA,KAAAC,EAAAJ,CAAA,GAAAoL,GAAA7L,EAAAS,EAAAI,EAAAJ,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAAF,GAAA,CAAAE,EAAAa,IAAA6mB,GAAA1nB,EAAA4V,GAAA/U,CAAA,CAAA,EAWO,MAAM8mB,GAAaxnB,GAA0B,CAClD,MAAMyE,EAAMf,EAAAA,OAAyB,IAAI,EACnCyB,EAAQsiB,GAAAA,kBAAkBjc,GAAArL,GAAA,CAAA,EAC3BH,GAD2B,CAK9B,OAAQ,QACR,eAAA0nB,EAAAA,cACF,EAAC,EAEK,CAAE,UAAAC,CAAU,EAAIpP,EAAAA,oBAAoB,YAAY,EAChD,CAAE,WAAAqP,CAAW,EAAIC,gBAAa7nB,EAAOmF,EAAOV,CAAG,EAE/C,CAAE,SAAAqjB,CAAS,EAAI3iB,EACf,CAAE,WAAA4iB,EAAa,YAAa,EAAI/nB,EAChCgoB,EAAqB,CAACb,EAAexc,IACzCsd,OACGrB,GAA6BA,EAAQ,cAAgBM,GAAYC,CAAK,CACzE,EAAEW,CAAQ,GAAKtc,GAAArL,GAAA,CAAA,EAAK2nB,EAASnd,CAAK,GAAnB,CAAsB,KAAMwc,CAAM,CAE7Ce,EAAAA,EAAiB5f,QAAM+e,GAAmBU,CAAU,EAAE,IAC1D,CAACZ,EAAexc,IAAkBqd,EAAmBb,EAAOxc,CAAK,CACnE,EAEA,OACE1K,EAAA,cAAC6X,EAAAA,IAAAtM,GAAArL,GAAA,CAAA,EACMynB,CADN,EAAA,CAEC,IAAMnjB,EACN,QAAQ,OACR,MAAQkjB,EACR,cAAY,oBAAA,CAAA,EAEVO,EAAe,IAAI,CAACtB,EAASpnB,IAAM,CACnC,MAAM2oB,EAAK,GAAGvB,EAAQ,QAAQpnB,IAC9B,OAAOS,EAAA,cAAC0mB,GAAA,CAAY,QAAUC,EAAU,MAAQzhB,EAAQ,IAAMgjB,EAAK,CACrE,CAAC,CACH,CAEJ,EClDA,IAAAvO,GAAA,OAAA,eAAA2N,GAAA,OAAA,iBAAA9R,GAAA,OAAA,0BAAAnV,GAAA,OAAA,sBAAAK,GAAA,OAAA,UAAA,eAAA6H,GAAA,OAAA,UAAA,qBAAA1I,GAAA,CAAA,EAAAO,EAAAb,IAAAa,KAAA,EAAAuZ,GAAA,EAAAvZ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAA,EAAAa,CAAA,EAAAb,EAAAmM,GAAA,CAAA,EAAAtL,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAM,GAAA,KAAAN,EAAAb,CAAA,GAAAM,GAAA,EAAAN,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAc,GAAA,QAAAd,KAAAc,GAAAD,CAAA,EAAAmI,GAAA,KAAAnI,EAAAb,CAAA,GAAAM,GAAA,EAAAN,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAE,GAAA,CAAA,EAAAW,IAAAknB,GAAA,EAAA9R,GAAApV,CAAA,CAAA,EAAAV,GAAA,CAAA,EAAAU,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAK,KAAA,EAAAc,GAAA,KAAA,EAAAd,CAAA,GAAAQ,EAAA,QAAAR,CAAA,EAAA,IAAAL,EAAAK,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAS,GAAA,QAAAT,KAAAS,GAAA,CAAA,EAAAD,EAAA,QAAAR,CAAA,EAAA,GAAA2I,GAAA,KAAA,EAAA3I,CAAA,IAAAL,EAAAK,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAL,CAAA,EAKO,MAAM4oB,GAAcvP,EAAAA,WAAW,CACpChV,EACAY,IACG,CAFH,IAAAkR,EAAA9R,EAAE,CAAA,UAAAyP,EAAW,WAAAqR,EAAY,SAAA5b,EAAU,QAAAoP,CANrC,EAMExC,EAA+CO,EAAAC,GAA/CR,EAA+C,CAA7C,YAAW,aAAY,WAAU,SAAA,CAAA,EAGnC,KAAM,CAAE,YAAA0S,CAAY,EAAI9P,EAAAA,oBAAoB,aAAc,CAAE,QAAAJ,CAAQ,CAAC,EAErE,OACElY,EAAA,cAAC6X,EAAAA,IAAAtM,GAAArL,GAAA,CACM+V,EAAAA,CAAAA,EADN,CAEC,IAAMzR,EACN,eAAe6O,EACf,gBAAgBqR,EAChB,QAAQ,OACR,WAAW,SACX,EAAI,GACJ,MAAQ0D,CAENtf,CAAAA,EAAAA,CACJ,CAEJ,CACA,EC1BA,IAAA3C,GAAA,OAAA,eAAA1F,GAAA,OAAA,sBAAAgL,GAAA,OAAA,UAAA,eAAApL,GAAA,OAAA,UAAA,qBAAAZ,GAAA,CAAAiB,EAAAd,EAAA,IAAAA,KAAAc,EAAAyF,GAAAzF,EAAAd,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAc,EAAAd,CAAA,EAAA,EAAAN,GAAA,CAAAoB,EAAAd,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAA6L,GAAA,KAAA7L,EAAA,CAAA,GAAAH,GAAAiB,EAAA,EAAAd,EAAA,CAAA,CAAA,EAAA,GAAAa,GAAA,QAAA,KAAAA,GAAAb,CAAA,EAAAS,GAAA,KAAAT,EAAA,CAAA,GAAAH,GAAAiB,EAAA,EAAAd,EAAA,CAAA,CAAA,EAAA,OAAAc,CAAA,EA8BO,MAAM2nB,GAAStoB,GAAsBC,EAAA,cAACsoB,QAAApoB,GAAA,GAAiBH,CAAQ,CAAA,ibCvB/D,MAAMwoB,GAAe,CAAC,CAC3B,MAAArjB,EACA,KAAAsjB,EACA,aAAAC,CACF,IAAyB,CACvB,MAAMjkB,EAAMf,EAA0B,OAAA,IAAI,EACpC,CAAE,UAAAilB,EAAW,YAAAnC,EAAa,WAAAjB,EAAY,cAAAqD,CAAc,EAAIC,GAAAA,gBAC5D,CAAE,KAAAJ,CAAK,EACPtjB,EACAV,CACF,EACMqkB,EAAUL,EAAK,QAAQM,EAAAA,MAAM5jB,EAAM,QAAQ,CAAC,IAAM,EAElD6jB,EAAiB,CAACC,cAAYP,EAAcD,CAAI,EAEtD,OACExoB,EAAA,cAACuY,EAAAA,OAAO,GAAPrY,GAAA,CAAA,EAAewoB,CAAAA,EACd1oB,EAAA,cAACgM,GAAAT,GAAArL,GAAA,GACMqmB,GADN,CAEC,IAAM/hB,EACN,aAAa,KACb,QAAU,EACV,OAASukB,EACT,KAAK,KACL,WAAW,SACX,QAAUzD,EAAa,QAAU,QACjC,KAAOuD,GAAW,CAACvD,EAAa,MAAQ,MACxC,UAAU,OAAA,CAAA,EAERqD,CACJ,CACF,CAEJ,ECpCaM,GAAYC,OAAK,CAAC,CAAE,SAAAC,CAAS,IAAsB,CAC9D,KAAM,CAAE,SAAAC,CAAS,EAAI9Q,EAAoB,oBAAA,UAAU,EAC7C+Q,EAAkBF,EAAS,IAAI,CAACG,EAAK/pB,KAAO,CAAE,MAAO+pB,EAAK,IAAK/pB,CAAE,EAAE,EAEzE,OACES,EAAA,cAAAA,EAAA,SACIqpB,KAAAA,EAAgB,IAAI,CAAC,CAAE,MAAAxK,EAAO,IAAA0K,CAAI,IAClCvpB,EAAA,cAACuY,EAAAA,OAAO,GAAP,CAAU,IAAMgR,EAAM,MAAQH,CAC3BvK,EAAAA,CACJ,CACD,CACH,CAEJ,CAAC,ECjBK2K,GAAsB,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAC1DC,GAAsB,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAEnDC,GAAeC,GACzBA,IAAmB,SAAWH,GAAsBC,GCJvD,IAAApC,GAAA,OAAA,eAAA3mB,GAAA,OAAA,sBAAAgL,GAAA,OAAA,UAAA,eAAA6Y,GAAA,OAAA,UAAA,qBAAA9Y,GAAA,CAAArL,EAAAK,EAAAb,IAAAa,KAAAL,EAAAinB,GAAAjnB,EAAAK,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAQ,EAAAK,CAAA,EAAAb,EAAAL,GAAA,CAAAa,EAAAK,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAiL,GAAA,KAAAjL,EAAAb,CAAA,GAAA6L,GAAArL,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAc,GAAA,QAAAd,KAAAc,GAAAD,CAAA,EAAA8jB,GAAA,KAAA9jB,EAAAb,CAAA,GAAA6L,GAAArL,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAAA4I,GAAA,CAAA5I,EAAAK,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAH,KAAAW,EAAAsL,GAAA,KAAAtL,EAAAX,CAAA,GAAAgB,EAAA,QAAAhB,CAAA,EAAA,IAAAG,EAAAH,CAAA,EAAAW,EAAAX,CAAA,GAAA,GAAAW,GAAA,MAAAM,GAAA,QAAAjB,KAAAiB,GAAAN,CAAA,EAAAK,EAAA,QAAAhB,CAAA,EAAA,GAAA8kB,GAAA,KAAAnkB,EAAAX,CAAA,IAAAG,EAAAH,CAAA,EAAAW,EAAAX,CAAA,GAAA,OAAAG,CAAA,EAWa,MAAAgqB,GAAeV,EACzBtlB,KAAAA,GAAkE,CAAlE,IAAA8R,EAAA9R,EAAE,CAAA,MAAAsB,EAAO,OAAA2kB,EAAQ,eAAAF,CAZpB,EAYGjU,EAAoCO,EAAAC,GAApCR,EAAoC,CAAlC,QAAO,SAAQ,gBAAA,CAAA,EAChB,MAAMoU,EAAY5kB,EAAM,aAAa,MAC/B,CAAE,UAAA6kB,EAAW,YAAAC,CAAY,EAAIC,GAAgBhU,gBAAAA,EAAM/Q,CAAK,EACxDglB,EAAeC,EAAAA,gBAAgBL,EAAWD,CAAM,EAChDV,EAAWO,GAAYC,CAAc,EAE3C,OACE3pB,EAAA,cAACqoB,GAAAnoB,GAAA,CAAM,QAAQ,YAAgB6pB,CAC7B/pB,EAAAA,EAAA,cAACoqB,EAAAlqB,MAAAA,GAAA,CAAW8pB,EAAAA,CAAAA,EACVhqB,EAAA,cAACqqB,EAAAA,GAAA,KACCrqB,EAAA,cAACipB,GAAA,CAAU,SAAWE,CAAAA,CAAW,CACnC,CACF,EACAnpB,EAAA,cAACsqB,EAAAA,MAAA,KACGC,EACCC,MAAAA,GACCxqB,EAAA,cAACqqB,EAAAA,GAAA,CAAG,IAAMG,CACNtlB,EAAAA,EACC,eAAeslB,EAAWV,CAAS,EACnC,IAAKtB,GACHA,EACCxoB,EAAA,cAACuoB,GAAA,CACC,IAAMC,EAAK,IACX,MAAQtjB,EACR,KAAOsjB,EACP,aAAesB,CACjB,CAAA,EAEA9pB,EAAA,cAACuY,EAAAA,OAAO,GAAP,IAAU,CAEf,CACJ,EAEF2R,CACF,CACF,CACF,CAEJ,CACF,olBC9CO,MAAMO,GAAe7mB,GAA4C,CAA5C,IAAA8R,EAAA9R,EAAE,CAAAkF,SAAAA,CAL9B,EAK4B4M,EAAeO,EAAAC,GAAfR,EAAe,CAAb,UAC5B,CAAA,EAAA,MAAMlR,EAAMf,EAAAA,OAA0B,IAAI,EACpC,CAAE,YAAA8iB,CAAY,EAAIC,GAAAA,UAAUvQ,EAAMzR,CAAG,EAE3C,OACExE,EAAA,cAACgM,GAAAT,GAAArL,GAAA,CAAA,EACMqmB,CAAAA,EADN,CAEC,QAAU,EACV,KAAK,KACL,QAAQ,QACR,IAAM/hB,CAEJsE,CAAAA,EAAAA,CACJ,CAEJ,ECpBa4hB,GAAS,CACpB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,UACF,ECRaC,GAAc,CAAC,CAAE,MAAAzlB,CAAM,IAAwB,CAC1D,KAAM,CAAE,WAAA0lB,CAAW,EAAItS,EAAAA,oBAAoB,UAAU,EAC/CuS,EAAgB3lB,EAAM,aAAa,MAAM,MAAQ,EAQvD,OACElF,EAAA,cAAC4M,EAAAA,OAAA,CACC,GAAG,QACH,aAAW,eACX,SAVcnM,GAAsC,CAEtD,MAAMqqB,EADQ,OAAOrqB,EAAE,OAAO,KAAK,EACdoqB,EACrB3lB,EAAM,eAAeA,EAAM,aAAa,MAAM,IAAI,CAAE,OAAQ4lB,CAAK,CAAC,CAAC,CACrE,EAOI,MAAQD,EACR,SAAS,MACT,KAAK,KACL,QAAQ,WACR,GAAKD,EACL,EAAE,cACF,UAAU,QAERF,EAAAA,GAAO,IAAI,CAACK,EAAOxrB,IACnBS,EAAA,cAAC,SAAA,CAAO,MAAQT,EAAI,IAAM,SAASA,GAC/BwrB,EAAAA,CACJ,CACD,CACH,CAEJ,EC/BaC,GAAa,CAAC,CACzB,SAAA5nB,EACA,MAAA6nB,CACF,IAAuB,CACrB,KAAM,CAAE,WAAAL,CAAW,EAAItS,EAAAA,oBAAoB,UAAU,EAErD,OACEtY,EAAA,cAAC4M,SAAA,CACC,GAAG,OACH,aAAW,OACX,SAAWxJ,EACX,MAAQ,GACR,KAAK,KACL,SAAS,MACT,QAAQ,WACR,GAAKwnB,EACL,EAAE,aAEAK,EAAAA,EAAM,IAAI,CAACC,EAAM3rB,IACjBS,EAAA,cAAC,UAAO,IAAMkrB,EAAK,UAAY,MAAQ3rB,CACnC2rB,EAAAA,EAAK,SACT,CACD,CACH,CAGJ,EC3BaC,GAAmB,CAAC,CAC/B,MAAAjmB,CACF,IAA6B,CAC3B,MAAM+lB,EAAqB,CAAA,EACrBG,EAAYC,oBAAiB,CAAE,KAAM,UAAW,MAAO,MAAO,CAAC,EAErE,QAAS9rB,EAAI,IAAKA,EAAI,GAAIA,GAAK,EAAG,CAChC,MAAMipB,EAAOtjB,EAAM,YAAY,IAAI,CAAE,MAAO3F,CAAE,CAAC,EAC/C0rB,EAAM,KAAK,CACT,MAAOzC,EACP,UAAW4C,EAAU,OAAO5C,EAAK,OAAOtjB,EAAM,QAAQ,CAAC,CACzD,CAAC,EAEH,MAAO,CAAE,MAAA+lB,CAAM,CACjB,EAEaK,GAAwB,CAAC,CACpC,MAAApmB,CACF,IAAkC,CAChC,MAAM+lB,EAAqB,GAE3B,QAAS1rB,EAAI,IAAKA,EAAI,GAAIA,GAAK,EAAG,CAChC,MAAMipB,EAAOtjB,EAAM,aAAa,MAAM,IAAI,CAAE,MAAO3F,CAAE,CAAC,EACtD0rB,EAAM,KAAK,CACT,MAAOzC,EACP,UAAW,GAAGA,EAAK,MACrB,CAAC,EAEH,MAAO,CAAE,MAAAyC,CAAM,CACjB,EC3BaM,GAAqB,CAAC,CAAE,MAAArmB,CAAM,IAA+B,CACxE,KAAM,CAAE,MAAA+lB,CAAM,EAAIE,GAAiB,CAAE,MAAAjmB,CAAM,CAAC,EAO5C,OACElF,EAAA,cAACgrB,GAAA,CAAW,SAPIvqB,GAAsC,CACtD,MAAMiK,EAAQ,OAAOjK,EAAE,OAAO,KAAK,EAC7B+nB,EAAOyC,EAAMvgB,CAAK,EAAE,MAC1BxF,EAAM,eAAesjB,CAAI,CAC3B,EAGoC,MAAQyC,CAAAA,CAAQ,CAEtD,ECXaO,GAA0B,CAAC,CACtC,MAAAtmB,CACF,IAAoC,CAClC,KAAM,CAAE,MAAA+lB,CAAM,EAAIK,GAAsB,CAAE,MAAApmB,CAAM,CAAC,EAOjD,OACElF,EAAA,cAACgrB,GAAA,CAAW,SAPIvqB,GAAsC,CACtD,MAAMiK,EAAQ,OAAOjK,EAAE,OAAO,KAAK,EAC7B+nB,EAAOyC,EAAMvgB,CAAK,EAAE,MAC1BxF,EAAM,eAAesjB,CAAI,CAC3B,EAGoC,MAAQyC,CAAAA,CAAQ,CAEtD,EChBMQ,GAAmBjD,GAAqB,CAC5C,MAAMkD,EAAe,IAAI,KAAKlD,CAAI,EAClC,OAAAkD,EAAa,QAAQlD,EAAK,WAAa,GAAKA,EAAK,OAAA,GAAY,GAAG,EACzDkD,CACT,EAEMC,GAAaT,GAA0B,CAC3C,MAAMU,EAAiB,IAAI,KAAKV,EAAM,EAAG,CAAC,EAC1C,OAAOU,EAAe,WAAa,GAC3BA,EAAe,OAAO,IAAM,GAAK,IAAI,KAAKV,EAAM,EAAG,EAAE,EAAE,SAAS,IAAM,CAChF,EAEaW,GAA8B,CACzCX,EACAH,IACW,CACX,MAAMe,EAAkB,IAAI,KAAKZ,EAAMH,EAAQ,EAAG,CAAC,EAC7CgB,EAAsBN,GAAgBK,CAAe,EACrDF,EAAiB,IAAI,KAAKV,EAAM,EAAG,CAAC,EACpCc,EAAsBP,GAAgBG,CAAc,EACpDK,EAAiBF,EAAoB,QAAA,EAAYC,EAAoB,QAAA,EACrEE,EAAa,KAAK,MAAMD,EAAiB,MAAuB,GAAK,CAAC,EAEtEE,EAAmBH,EAAoB,YAAgBd,EAAAA,EAI7D,OAH4BiB,GACzBJ,EAAoB,YAAY,EAAIb,GAAQH,IAAU,EAGhDY,GAAUT,EAAO,CAAC,EAAI,GAAK,GAGhCiB,GAAoBpB,EAAQ,EACvBmB,EAAa,EAGlBnB,IAAU,GAAKmB,EAAa,GACtBP,GAAUT,EAAO,CAAC,EAAQgB,EAAJ,EAGzBA,CACT,EAEaE,GAAiB,CAC5BC,EACA7B,EACAU,EACAH,IACW,CAGX,GAF0BA,IAAU,GAAKsB,EAAW,GAGlD,OAAO7B,IAAc,EAAI6B,EAAW7B,EAGtC,GAAIA,IAAc,EAChB,OAAO6B,EAGT,MAAMC,EAAWD,EAAW7B,EAE5B,OAAI8B,EAAW,GACNX,GAAUT,CAAI,GAAKoB,IAAa,GAAK,GAAKA,EAAW,GAGvDA,CACT,ibC5DO,MAAMC,GAAY,CAAC,CACxB,MAAArnB,EACA,KAAAsjB,EACA,aAAAC,EACA,MAAA+D,CACF,IAAsB,CAEpB,GADuB,CAACxD,EAAAA,YAAYP,EAAcD,CAAI,EAClC,OAAOxoB,EAAA,cAACuY,EAAAA,OAAO,GAAP,IAAU,EAEtC,MAAM/T,EAAMf,EAAAA,OAA0B,IAAI,EACpC,CACJ,UAAAilB,EACA,YAAAnC,EACA,WAAYkG,EACZ,cAAA9D,CACF,EAAIC,GAAAA,gBAAgB,CAAE,KAAAJ,CAAK,EAAGtjB,EAAOV,CAAG,EAElCqkB,EAAUL,EAAK,QAAQM,EAAAA,MAAM5jB,EAAM,QAAQ,CAAC,IAAM,EAElDwnB,EAAgBF,GAAShE,EAAOgE,EAAM,KAAOhE,EAAOgE,EAAM,MAE1DlH,EACJkH,GACA,CAACE,IACAjO,EAAAA,OAAO+J,EAAMgE,EAAM,KAAK,GAAK/N,SAAO+J,EAAMgE,EAAM,GAAG,GAEtD,OACExsB,EAAA,cAACuY,EAAAA,OAAO,GAAPrY,GAAA,CAAA,EAAewoB,GACd1oB,EAAA,cAACuY,SAAO,OAAPhN,GAAArL,GAAA,CACMqmB,EAAAA,CAAAA,EADN,CAEC,KAAK,SACL,IAAM/hB,EACN,aAAa,KACb,QACEkoB,EAAgB,YAAcpH,EAAa,QAAU,cAEvD,MAAQA,EAAa,gBAAkB,eACvC,SAAS,KACT,KAAOuD,GAAW,CAACvD,EAAa,MAAQ,MACxC,UAAU,QACV,GAAG,OACH,GAAKuD,EAAU,QAAU,OACzB,GAAG,KACH,EAAE,IACF,EAAE,IACF,WAAW,SACX,QAAUvD,GAAc,CAACmH,EAAiB,MAAQ,IAClD,cAAgB,CACd,QAAS,OACT,KAAM,MACN,UAAW,cACX,WAAY,KACd,EACA,OAAS,CACP,QAASnH,EAAa,iCAAmC,YACzD,UAAW,CACT,QAAS,aACX,CACF,EACA,UAAY,CACV,QAAS,EACX,CAAA,CAAA,EAEEqD,CACJ,CACF,CAEJ,EC1EA,IAAAgE,GAAA,OAAA,eAAAxX,GAAA,OAAA,iBAAAmS,GAAA,OAAA,0BAAAhoB,GAAA,OAAA,sBAAAqZ,GAAA,OAAA,UAAA,eAAAxY,GAAA,OAAA,UAAA,qBAAA8F,GAAA,CAAA7F,EAAAK,EAAAJ,IAAAI,KAAAL,EAAAusB,GAAAvsB,EAAAK,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAJ,CAAA,CAAA,EAAAD,EAAAK,CAAA,EAAAJ,EAAAd,GAAA,CAAAa,EAAAK,IAAA,CAAA,QAAAJ,KAAAI,IAAAA,EAAA,CAAA,GAAAkY,GAAA,KAAAlY,EAAAJ,CAAA,GAAA4F,GAAA7F,EAAAC,EAAAI,EAAAJ,CAAA,CAAA,EAAA,GAAAf,GAAA,QAAAe,KAAAf,GAAAmB,CAAA,EAAAN,GAAA,KAAAM,EAAAJ,CAAA,GAAA4F,GAAA7F,EAAAC,EAAAI,EAAAJ,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAP,GAAA,CAAAO,EAAAK,IAAA0U,GAAA/U,EAAAknB,GAAA7mB,CAAA,CAAA,EAAA+U,GAAA,CAAApV,EAAAK,IAAA,CAAA,IAAAJ,EAAA,CAAA,EAAA,QAAAK,KAAAN,EAAAuY,GAAA,KAAAvY,EAAAM,CAAA,GAAAD,EAAA,QAAAC,CAAA,EAAA,IAAAL,EAAAK,CAAA,EAAAN,EAAAM,CAAA,GAAA,GAAAN,GAAA,MAAAd,GAAA,QAAAoB,KAAApB,GAAAc,CAAA,EAAAK,EAAA,QAAAC,CAAA,EAAA,GAAAP,GAAA,KAAAC,EAAAM,CAAA,IAAAL,EAAAK,CAAA,EAAAN,EAAAM,CAAA,GAAA,OAAAL,CAAA,QA4BausB,GAA0BhpB,GAKJ,CALI,IAAA8R,EAAA9R,EACrC,CAAAsB,MAAAA,EACA,MAAAsnB,EACA,eAAA7C,CA/BF,EA4BuCjU,EAIlCO,EAAAC,GAJkCR,EAIlC,CAHH,QACA,QACA,gBAGA,CAAA,EAAA,KAAM,CAAE,OAAAmU,CAAO,EAAIgD,GAAU,UAAA,EACvB,CAAE,cAAAC,EAAe,gBAAAC,EAAiB,gBAAAC,CAAgB,EAAIC,GAAAA,YAC1D,CAAA,EACA/nB,CACF,EACM4kB,EAAY5kB,EAAM,aAAa,MAC/B,CAAE,UAAA6kB,EAAW,YAAAC,CAAY,EAAIC,GAAAA,gBAAgBhU,EAAM/Q,CAAK,EACxDikB,EAAWO,GAAYC,CAAc,EACrCO,EAAeC,EAAAA,gBAAgBL,EAAWD,CAAM,EAChDqD,EAAkBC,UAAQ,IACXtB,GAA4B/B,EAAU,KAAMA,EAAU,KAAK,EAE7E,CAAEA,EAAU,KAAMA,EAAU,KAAM,CAAC,EAEtC,OACE9pB,EAAA,cAAC6X,EAAAA,IAAAtM,GAAArL,GAAA,CAAA,EAAS4sB,GAAT,CAAyB,EAAE,QAAQ,EAAE,GAAA,CAAA,EACpC9sB,EAAA,cAACuf,EAAAA,MAAA,KACCvf,EAAA,cAAC0c,OAAA,CAAK,QAAQ,gBAAgB,EAAE,OAAO,EAAE,IAAI,WAAW,QACtD1c,EAAAA,EAAA,cAACyqB,GAAAvqB,GAAA,GAAiB6sB,CAChB/sB,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAK0d,EAAAA,iBAAmB,QAAU,EAAI,CAC9C,EACAptB,EAAA,cAACic,EAAAA,OAAA,CAAO,QAAQ,GAAA,EACdjc,EAAA,cAAC2qB,GAAA,CAAY,MAAQzlB,CAAAA,CAAQ,EAC7BlF,EAAA,cAACwrB,GAAA,CAAwB,MAAQtmB,EAAQ,CAC3C,EACAlF,EAAA,cAACyqB,GAAAvqB,GAAA,CAAA,EAAiB8sB,GAChBhtB,EAAA,cAAC0P,EAAA,CAAK,GAAK2d,oBAAoB,QAAU,CAAA,CAAI,CAC/C,CACF,EACArtB,EAAA,cAACuY,EAAAA,OAAO,MAAPhN,GAAArL,GAAA,CAAA,EAAkB6pB,CAAlB,EAAA,CAA8B,GAAK,CAAE,cAAe,GAAI,CACvD/pB,CAAAA,EAAAA,EAAA,cAACuY,SAAO,MAAPrY,GAAA,GAAkB8pB,CAAAA,EACjBhqB,EAAA,cAACuY,EAAAA,OAAO,GAAP,KACCvY,EAAA,cAACuY,SAAO,GAAP,IAAU,EACXvY,EAAA,cAACipB,GAAA,CAAU,SAAWE,CAAAA,CAAW,CACnC,CACF,EACAnpB,EAAA,cAACuY,SAAO,MAAP,KACGgS,QAAOC,GAAc,CACrB,MAAM0B,EAAaE,GAAec,EAChC1C,EACAV,EAAU,KACVA,EAAU,KAAK,EACjB,OACE9pB,EAAA,cAACuY,EAAAA,OAAO,GAAP,CAAU,IAAMiS,CACfxqB,EAAAA,EAAA,cAACuY,SAAO,GAAP,KACCvY,EAAA,cAACsR,GAAA,CAAM,GAAK,CAAE,MAAO,cAAe,EAAI,GAAG,KAAI,KAE3C4a,CACJ,CACF,EACEhnB,EACC,eAAeslB,EAAWV,CAAS,EACnC,IAAKtB,GACHA,EACCxoB,EAAA,cAACusB,GAAA,CACC,IAAM/D,EAAK,IACX,MAAQtjB,EACR,MAAQsnB,EACR,KAAOhE,EACP,aAAesB,EACjB,EAEA9pB,EAAA,cAACuY,EAAAA,OAAO,GAAP,IAAU,CAEf,CACJ,CAEJ,EAAG2R,CAAY,CACjB,CACF,CACF,CACF,CAEJ,ubC5Fa9b,GAAYrO,GAAyB,CAChD,KAAM,CAAE,eAAA4pB,CAAe,EAAI5pB,EACrB,CAAE,OAAA8pB,CAAO,EAAIgD,GAAAA,UAAAA,EACb,CAAE,UAAAzU,CAAU,EAAIE,EAAAA,oBAAoB,UAAU,EAE9CpT,EAAQooB,GAAAA,iBAAiB/hB,GAAArL,GAAA,GAC1BH,CAD0B,EAAA,CAE7B,OAAA8pB,EACA,eAAgB,IAAM,IAAI0D,EAC5B,iBAAA,CAAC,CAAA,EAEK,CAAE,cAAAT,EAAe,gBAAAC,EAAiB,gBAAAC,CAAgB,EAAIC,eAC1DltB,EACAmF,CACF,EAEA,OACElF,EAAA,cAAC6X,EAAAtM,IAAAA,GAAArL,GAAA,CAAS4sB,EAAAA,CAAAA,EAAT,CAAyB,MAAQ1U,CAAAA,CAAAA,EAChCpY,EAAA,cAACuf,EAAAA,MAAA,KACCvf,EAAA,cAAC0c,EAAAA,KAAA,CAAK,eAAe,iBACnB1c,EAAA,cAAC6X,EAAAA,IAAA,CAAI,mBAAmB,KACtB7X,EAAA,cAACurB,GAAA,CAAmB,MAAQrmB,EAAQ,CACtC,EACAlF,EAAA,cAACic,EAAA,OAAA,CAAO,QAAU,CAChBjc,EAAAA,EAAA,cAACyqB,GAAAvqB,GAAA,GAAiB6sB,CAChB/sB,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAK0d,EAAmB,iBAAA,QAAU,EAAI,CAC9C,EACAptB,EAAA,cAACyqB,GAAAvqB,GAAA,GAAiB8sB,CAChBhtB,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAK2d,oBAAoB,QAAU,EAAI,CAC/C,CACF,CACF,EACArtB,EAAA,cAAC4pB,GAAA,CACC,MAAQ1kB,EACR,OAAS2kB,EACT,eAAiBF,CAAAA,CACnB,CACF,CACF,CAEJ,EC9Ca6D,GAA0B,CAAC,CACtC,eAAA7D,EACA,SAAA7gB,CACF,IAES9I,EAAA,cAACytB,GAAA,aAAA,CAAa,OADN9D,IAAmB,SAAW,QAAU,OAAA,EACd7gB,CAAU,ECdrD,IAAAqM,GAAA,OAAA,eAAA0Q,GAAA,OAAA,iBAAAvQ,GAAA,OAAA,0BAAA7J,GAAA,OAAA,sBAAA6b,GAAA,OAAA,UAAA,eAAA/C,GAAA,OAAA,UAAA,qBAAA9kB,GAAA,CAAAW,EAAAK,EAAAJ,IAAAI,KAAAL,EAAA+U,GAAA/U,EAAAK,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAJ,CAAA,CAAA,EAAAD,EAAAK,CAAA,EAAAJ,EAAAd,GAAA,CAAAa,EAAAK,IAAA,CAAA,QAAAJ,KAAAI,IAAAA,EAAA,CAAA,GAAA6mB,GAAA,KAAA7mB,EAAAJ,CAAA,GAAAZ,GAAAW,EAAAC,EAAAI,EAAAJ,CAAA,CAAA,EAAA,GAAAoL,GAAA,QAAApL,KAAAoL,GAAAhL,CAAA,EAAA8jB,GAAA,KAAA9jB,EAAAJ,CAAA,GAAAZ,GAAAW,EAAAC,EAAAI,EAAAJ,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAV,GAAA,CAAAU,EAAAK,IAAAolB,GAAAzlB,EAAAkV,GAAA7U,CAAA,CAAA,EA+Da,MAAA+N,GAAczO,GAA2B,CACpD,KAAM,CACJ,WAAA2kB,EACA,YAAAgJ,EAAc,GACd,UAAAC,EACA,UAAAta,EAAY,GACZ,WAAAyU,EACA,SAAA9d,EACA,QAAAkO,EAAU,UACV,eAAAyR,EAAiB,QACnB,EAAI5pB,EACEyE,EAAMf,EAAAA,SACN,CAAE,MAAAmqB,CAAM,EAAItV,sBAAoB,YAAY,EAE5CpT,EAAQ2oB,GAAAA,mBAAmBtiB,GAAArL,GAAA,GAC5BH,CAAAA,EAD4B,CAE/B,oBAAqB,GACrB,aAAc,EAChB,CAAA,CAAC,EAEK,CAAE,YAAAwmB,EAAa,WAAAoB,EAAY,cAAAmF,EAAe,WAAAgB,EAAY,YAAAC,CAAY,EACtEC,GACEziB,cAAAA,GAAArL,GAAA,CAAA,EAAKH,CAAAA,EAAL,CAAY,SAAUiK,GAAYikB,EAAU,UAAA,YAAY,CAAE,CAC1D/oB,EAAAA,EACAV,CACF,EAEI0pB,EAAc,IAAMhpB,EAAM,QAAQ,CAACA,EAAM,MAAM,EAErD,OACElF,EAAA,cAACkhB,GAAA,CACC,OAAShc,EAAM,OACf,QAAU,IAAMA,EAAM,QAAQ,EAAK,EACnC,UAAU,YAEVlF,EAAAA,EAAA,cAACmuB,gBAAA,KACCnuB,EAAA,cAACic,SAAA,CAAO,KAAO,IACbjc,EAAA,cAACouB,EAAAA,WAAA7iB,GAAArL,GAAA,CAAA,EAAgB4tB,CAAAA,EAAhB,CAA6B,IAAMtpB,EAAM,MAAQopB,CAAAA,CAAAA,EAChD5tB,EAAA,cAACmoB,GAAA,CACC,WAAazD,EACb,UAAYrR,EACZ,QAAU6E,CAEVlY,EAAAA,EAAA,cAAC6X,EAAAA,IAAA,CAAI,mBAAmB,KAAK,iBAAmB,EAAA,EAC9C7X,EAAA,cAACunB,GAAAhc,GAAArL,GAAA,CAAA,EAAeynB,CAAf,EAAA,CAA4B,WAAaG,CAAa,CAAA,CAAA,CACzD,CACF,EACA9nB,EAAA,cAACquB,oBAAA,CACC,GAAK,CAAE,OAAQ,OAAQ,aAAc,GAAI,EACzC,OAAS,CAAA,EAETruB,EAAA,cAACqmB,GAAA9a,GAAArL,GAAA,GACMqmB,GADN,CAEC,WAAa7B,EACb,YAAcwJ,GAChB,CACF,CACF,EACAluB,EAAA,cAACqgB,EAAA,CACC,aAAW,aACX,QAAQ,SACR,KAAK,KACL,SAAS,KACT,QAAUsN,EACV,OAAS,CAACzoB,EAAM,WAAa,CAACwoB,EAC9B,WAAahJ,EACb,KAAO1kB,EAAA,cAAC0P,EAAA,CAAK,GAAK4e,EAAc,WAAA,CAAA,CAAA,CAClC,CACF,CACF,EACEppB,EAAM,QACNlF,EAAA,cAACojB,EAAAA,eAAA7X,GAAArL,GAAA,CAAA,EAAoB6tB,CAApB,EAAA,CAAkC,IAAMvpB,EAAM,EAAI,GAAK,OAAO,SAC7DxE,EAAA,cAACujB,GAAAA,WAAA,CAAW,QAAU,GAAO,aAAe,EAAA,EAC1CvjB,EAAA,cAACwtB,GAAA,CAAwB,eAAiB7D,GACxC3pB,EAAA,cAACoO,GAAA7C,GAAArL,GAAA,GAAc4sB,CAAAA,EAAd,CAA8B,eAAiBnD,CAAAA,CAAAA,CAAiB,CACnE,CACF,CACF,CAEJ,CAEJ,EChJA,IAAAxpB,GAAA,OAAA,eAAAV,GAAA,OAAA,sBAAAH,GAAA,OAAA,UAAA,eAAAqZ,GAAA,OAAA,UAAA,qBAAAhZ,GAAA,CAAAC,EAAAQ,EAAAb,IAAAa,KAAAR,EAAAO,GAAAP,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAK,EAAAQ,CAAA,EAAAb,EAAAkM,GAAA,CAAA7L,EAAAQ,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAd,GAAA,KAAAc,EAAAb,CAAA,GAAAI,GAAAC,EAAAL,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAE,GAAA,QAAAF,KAAAE,GAAAW,CAAA,EAAAuY,GAAA,KAAAvY,EAAAb,CAAA,GAAAI,GAAAC,EAAAL,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAK,CAAA,EAAAc,GAAA,CAAAd,EAAAQ,IAAA,CAAA,IAAAb,EAAA,GAAA,QAAAc,KAAAT,EAAAN,GAAA,KAAAM,EAAAS,CAAA,GAAAD,EAAA,QAAAC,CAAA,EAAA,IAAAd,EAAAc,CAAA,EAAAT,EAAAS,CAAA,GAAA,GAAAT,GAAA,MAAAH,GAAA,QAAAY,KAAAZ,GAAAG,CAAA,EAAAQ,EAAA,QAAAC,CAAA,EAAA,GAAAsY,GAAA,KAAA/Y,EAAAS,CAAA,IAAAd,EAAAc,CAAA,EAAAT,EAAAS,CAAA,GAAA,OAAAd,CAAA,EAqCa,MAAAgvB,GAAa3qB,GAAiD,CAAjD,IAAA8R,EAAA9R,EAAE,CAAA,KAAA4qB,EAAM,UAAAC,CArClC,EAqC0B/Y,EAAsBO,EAAAC,GAAtBR,EAAsB,CAApB,OAAM,WAChC,CAAA,EAAA,MAAMgZ,EAAYC,gBAAa1Y,CAAI,EAEnC,OACEjW,EAAA,cAAAA,EAAA,cACI,CAAC6D,EAAAA,MAAM2qB,CAAI,GACXxuB,EAAA,cAACiN,EAAAA,KAAA/M,GAAAA,GAAA,CACC,GAAK0uB,GAAAA,KACL,cAAgB1nB,GAChB,GAAKsnB,EACL,OAAS,CAAE,eAAgB,MAAO,CAAA,EAC7BC,GACAC,CACP,CAAA,EAEA7qB,QAAM2qB,CAAI,GAAKxuB,EAAA,cAACuY,EAAAA,OAAO,OAAPrY,GAAA,CAAc,cAAgBgH,EAAYwnB,EAAAA,CAAAA,CAAY,CAC1E,CAEJ,ECjDaG,GAAa,CAAC,CACzB,SAAAC,EACA,QAAAlO,EACA,SAAA9X,CACF,IACE9I,EAAA,cAAC0c,EAAA,KAAA,CAAK,KAAK,OAAA,EACT1c,EAAA,cAACuuB,GAAA,CAAU,QAAU3N,CACnB5gB,EAAAA,EAAA,cAAC0R,GAAA,CACC,OAAS,CACP,WAAY,UACd,EACA,GAAK,CACH,MAAOod,EAAW,0BAA4B,eAC9C,OAAQ,UACR,WAAYA,EAAW,WAAa,SACtC,EACA,QAAU,CACR,WAAY,UACd,EACA,EAAE,GAEAhmB,EAAAA,CACJ,CACF,CACF,EC5BWimB,GAAa,CAACvG,EAAsBtjB,IAC/C,CAACsjB,IACE,CAACtjB,EAAM,UAAYsjB,EAAK,OAAStjB,EAAM,YACvC,CAACA,EAAM,UAAYsjB,EAAK,KAAOtjB,EAAM,WACtCsjB,EAAK,KAAOA,EAAK,MCMRwG,GAAwB,CACnC9pB,EACA2kB,EACAoF,EACAC,IACG,CACH,MAAMC,EAAUrG,QAAM5jB,EAAM,QAAQ,EAE9BkqB,EAAuB,CAC3B5G,EACA,CAAE,OAAAkC,EAAQ,KAAA2E,CAAK,IAED7G,EAAK,IAAI,CAAE,OAAAkC,CAAO,CAAC,EAAE,IAAI,CAAE,IAAK2E,CAAK,CAAC,EAIhDC,EAAqB,CACzB9G,EACA,CAAE,OAAAkC,EAAQ,KAAA2E,CAAK,IAEH7G,EAAK,IAAI,CAAE,OAAAkC,CAAO,CAAC,EAAE,IAAI,CAAE,IAAK2E,CAAK,CAAC,EAAE,SAAS,CAAE,KAAM,CAAE,CAAC,EAIpEE,EAAW,CACf,MAAO,CACL,MAAOC,EAAAA,YAAYL,EAAStF,CAAM,EAClC,IAAK4F,EAAAA,UAAUN,EAAStF,CAAM,CAChC,EACA,MAAO,WACT,EAEMyC,EAAW,CACf,MAAO,CACL,MAAOkD,EAAAA,YAAYL,EAAQ,IAAI,CAAE,MAAO,CAAE,CAAC,EAAGtF,CAAM,EACpD,IAAK4F,EAAAA,UAAUN,EAAQ,IAAI,CAAE,MAAO,CAAE,CAAC,EAAGtF,CAAM,CAClD,EACA,MAAO,WACT,EAEM6F,EAAW,CACf,MAAO,CACL,MAAOF,EAAAA,YAAYL,EAAQ,SAAS,CAAE,MAAO,CAAE,CAAC,EAAGtF,CAAM,EACzD,IAAK4F,EAAAA,UAAUN,EAAQ,SAAS,CAAE,MAAO,CAAE,CAAC,EAAGtF,CAAM,CACvD,EACA,MAAO,WACT,EAEM8F,EAAY,CAChB,MAAO,CACL,MAAOC,EAAAA,aAAaT,CAAO,EAC3B,IAAKU,EAAAA,WAAWV,CAAO,CACzB,EACA,MAAO,YACT,EAEMW,EAAY,CAChB,MAAO,CACL,MAAOF,EAAAA,aAAaT,EAAQ,SAAS,CAAE,OAAQ,CAAE,CAAC,CAAC,EACnD,IAAKU,aAAWV,EAAQ,SAAS,CAAE,OAAQ,CAAE,CAAC,CAAC,CACjD,EACA,MAAO,YACT,EAEMY,EAAW,CACf,MAAO,CACL,MAAOC,cAAYb,CAAO,EAC1B,IAAKc,EAAAA,UAAUd,CAAO,CACxB,EACA,MAAO,WACT,EAEMe,EAAW,CACf,MAAO,CACL,MAAOF,cAAYb,EAAQ,SAAS,CAAE,MAAO,CAAE,CAAC,CAAC,EACjD,IAAKc,EAAUd,UAAAA,EAAQ,SAAS,CAAE,MAAO,CAAE,CAAC,CAAC,CAC/C,EACA,MAAO,WACT,EAEMgB,EAAY,CAChB,MAAO,CACL,MAAOP,EAAAA,aAAaT,EAAQ,IAAI,CAAE,OAAQ,CAAE,CAAC,CAAC,EAC9C,IAAKU,aAAWV,EAAQ,IAAI,CAAE,OAAQ,CAAE,CAAC,CAAC,CAC5C,EACA,MAAO,YACT,EAEMiB,EAAkB,CACtB,MAAO,CACL,MAAOR,EAAAA,aAAaT,EAAQ,IAAI,CAAE,OAAQ,CAAE,CAAC,CAAC,EAC9C,IAAKU,EAAAA,WAAWV,EAAQ,IAAI,CAAE,OAAQ,CAAE,CAAC,CAAC,CAC5C,EACA,MAAO,eACT,EAEMkB,EAAgB,CACpB,MAAO,CACL,MAAOT,eAAaT,EAAQ,IAAI,CAAE,OAAQ,CAAE,CAAC,CAAC,EAC9C,IAAKU,EAAWV,WAAAA,EAAQ,IAAI,CAAE,OAAQ,CAAE,CAAC,CAAC,CAC5C,EACA,MAAO,eACT,EAEMmB,EAAW,CACf,MAAO,CACL,MAAON,cAAYb,EAAQ,IAAI,CAAE,MAAO,CAAE,CAAC,CAAC,EAC5C,IAAKc,YAAUd,EAAQ,IAAI,CAAE,MAAO,CAAE,CAAC,CAAC,CAC1C,EACA,MAAO,WACT,EAGMoB,EACJpB,EAAQ,MAAQF,EAAmB,GAClCE,EAAQ,QAAUF,EAAmB,GAAKE,EAAQ,IAAMD,EACrD,EACA,EAEAsB,EAAiB,CACrB,MAAO,CACL,MAAOpB,EACLY,cAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CAAE,OAAQtB,EAAkB,KAAMC,CAAe,CACnD,EACA,IAAKI,EACHU,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CAAE,OAAQtB,EAAmB,GAAI,KAAMC,CAAe,CACxD,CACF,EACA,MAAO,kBACT,EAEMuB,EAAiB,CACrB,MAAO,CACL,MAAOrB,EACLY,cAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,EAAmB,CAAE,CAAC,EAC7D,CACE,OAAQtB,EACR,KAAMC,CACR,CACF,EACA,IAAKI,EACHU,EAAYb,YAAAA,CAAO,EAAE,SAAS,CAAE,MAAOoB,EAAmB,CAAE,CAAC,EAC7D,CACE,OAAQtB,EAAmB,GAC3B,KAAMC,CACR,CACF,CACF,EACA,MAAO,kBACT,EAEMwB,EAAa,CACjB,MAAO,CACL,MAAOtB,EAAqBY,cAAYb,CAAO,EAAG,CAChD,OAAQF,EACR,KAAMC,CACR,CAAC,EACD,IAAKC,CACP,EACA,MAAO,cACT,EAEMwB,EAAK,CACT,MAAO,CACL,MAAOvB,EACLY,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EACR,KAAMC,CACR,CACF,EACA,IAAKI,EACHU,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,CACF,EACA,MAAOD,IAAqB,EAAI,KAAO,KACzC,EAEM2B,EAAK,CACT,MAAO,CACL,MAAOxB,EACLY,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,EACA,IAAKI,EACHU,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,GAC3B,KAAMC,CACR,CACF,CACF,EACA,MAAOD,IAAqB,EAAI,KAAO,KACzC,EAEM4B,EAAK,CACT,MAAO,CACL,MAAOzB,EACLY,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EACR,KAAMC,CACR,CACF,EACA,IAAKI,EACHU,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,CACF,EACA,MAAOD,IAAqB,EAAI,KAAO,KACzC,EAEM6B,EAAK,CACT,MAAO,CACL,MAAO1B,EACLY,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,EACA,IAAKI,EACHU,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,CACF,EACA,MAAOD,IAAqB,EAAI,KAAO,KACzC,EAEM8B,EAAK,CACT,MAAO,CACL,MAAO3B,EACLY,cAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,EACA,IAAKI,EACHU,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,CACF,EACA,MAAOD,IAAqB,EAAI,KAAO,KACzC,EAEM+B,EAAK,CACT,MAAO,CACL,MAAO5B,EACLY,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,EAC3B,KAAMC,CACR,CACF,EACA,IAAKI,EACHU,EAAAA,YAAYb,CAAO,EAAE,SAAS,CAAE,MAAOoB,CAAiB,CAAC,EACzD,CACE,OAAQtB,EAAmB,GAC3B,KAAMC,CACR,CACF,CACF,EACA,MAAOD,IAAqB,EAAI,KAAO,KACzC,EAEMgC,EAAkB,CAAEN,EAAIC,CAAG,EAC3BM,EAAiB,CAAEL,EAAIC,EAAIC,EAAIC,CAAG,EAoBxC,MAAO,CAAE,WAhBU,CACjBjB,EACAW,EACAhB,EACApD,EACAiD,EACAO,EACAM,EACAC,EACAF,EACAR,EACAO,EACAI,EACA,GAfArB,IAAqB,EAAI,GAAK,CAAEuB,EAAgBC,CAAe,CAgBjE,EAEqB,eAAAS,EAAgB,gBAAAD,CAAgB,CACvD,ECnTME,GAAY,aAAa1pB,EAAQ,QAAA,KAAK,GAAK,IAEpC2pB,GAAc,CAAC,CAC1B,MAAAlsB,EACA,iBAAA+pB,EAAmB,EACnB,eAAAC,EAAiB,EACjB,OAAArF,EAAS,GACT,OAAAwH,EAAS,SACX,IAAwB,CACtB,KAAM,CAAE,WAAAC,EAAY,eAAAJ,EAAgB,gBAAAD,CAAgB,EAAI9D,EAAAA,QACtD,IAAM6B,GAAsB9pB,EAAO2kB,EAAQoF,EAAkBC,CAAc,EAC3E,CACF,CAAA,EAEMqC,EAAcC,GAA4B,IAAM,CAChDA,IACFtsB,EAAM,SAASssB,CAAO,EACtBtsB,EAAM,oBAAoBssB,CAAO,EAErC,EAEMC,EAAeD,GAAkB/S,EAAAA,OAAOvZ,EAAM,MAAOssB,EAAQ,KAAK,EAElEE,EAAcC,GAClBza,MAAKsR,GAASuG,GAAWvG,EAAK,MAAOtjB,CAAK,EAAGysB,CAAK,EAEpD,OACE3xB,EAAA,cAACuf,EAAAA,MAAA,CAAM,WAAW,QAAQ,YAAc4R,GAAY,GAAG,GAAA,EACrDnxB,EAAA,cAACuf,EAAAA,MAAA,CACC,EAAI8R,EACJ,UAAU,SACV,GAAG,IACH,OAAS,CAAE,UAAW,QAAS,EAC/B,EAAE,KACF,QAAUK,EAAWJ,CAAU,EAAI,UAAY,MAAA,EAE7CttB,EAAAA,IACC4tB,GACC7C,GAAW6C,EAAU,MAAO1sB,CAAK,GAC/BlF,EAAA,cAAC6X,EAAA,IAAA,CAAI,KAAK,OAAO,IAAM,gBAAgB+Z,EAAU,SAC/C5xB,EAAA,cAAC6uB,GAAA,CACC,QAAU0C,EAAWK,EAAU,KAAK,EACpC,SAAWH,EAAYG,CAAS,CAE9BA,EAAAA,EAAU,KACd,CACF,EAEJN,CACF,CACF,EACAtxB,EAAA,cAAC6X,EAAA,IAAA,CACC,EAAE,MACF,UAAYsZ,GACZ,QAAUO,EAAWR,CAAc,EAAI,UAAY,MAAA,CACrD,EACAlxB,EAAA,cAAC6xB,EAAA,OAAA,IAAO,EACR7xB,EAAA,cAAC0c,EAAA,KAAA,CACC,eAAe,eACf,EAAE,OACF,GAAG,IACH,GAAG,IACH,QAAUgV,EAAWT,CAAe,EAAI,OAAS,MAE/CjtB,EAAAA,EAAAA,IACC8tB,GACC/C,GAAW+C,EAAS,MAAO5sB,CAAK,GAC9BlF,EAAA,cAAC6uB,GAAA,CACC,QAAU0C,EAAWO,EAAS,KAAK,EACnC,SAAWL,EAAYK,CAAQ,EAC/B,IAAM,gBAAgBA,EAAS,OAAA,EAE7BA,EAAS,KACb,EAEJb,CACF,CACF,EACAjxB,EAAA,cAAC0c,EAAAA,KAAA,CACC,eAAe,eACf,EAAE,OACF,GAAKgV,EAAWT,CAAe,EAAI,IAAM,IACzC,GAAG,IACH,QAAUS,EAAWR,CAAc,EAAI,OAAS,QAE9CltB,EAAAA,IACC+tB,GACChD,GAAWgD,EAAQ,MAAO7sB,CAAK,GAC7BlF,EAAA,cAAC6uB,GAAA,CACC,QAAU0C,EAAWQ,EAAQ,KAAK,EAClC,SAAWN,EAAYM,CAAO,EAC9B,IAAM,gBAAgBA,EAAQ,OAAA,EAE5BA,EAAQ,KACZ,EAEJb,CACF,CACF,CACF,CAEJ,4VChGA,MAAM7L,GAAY,CAChB,YAAa,KACb,aAAc,KACd,YAAa,qBACb,YAAa,OACf,EAEa2M,GAAiBjyB,GAA8B,CAC1D,KAAM,CACJ,SAAUkyB,EAAWrc,EAAAA,SACrB,MAAA5U,EACA,YAAAkxB,EACA,UAAAvE,EACA,YAAAD,EAAc,GACd,iBAAAuB,EACA,eAAAC,EACA,SAAAllB,EACA,SAAAC,EACA,eAAA0f,EACA,OAAAwI,EACA,YAAAC,EAAc,OACd,iBAAAC,EAAmB,OACrB,EAAItyB,EAEE,CAAE,OAAA8pB,CAAO,EAAIgD,GAAAA,UAAAA,EAEbroB,EAAMf,EAAAA,OAAuB,IAAI,EACjC,CAAE,uBAAA6uB,CAAuB,EAAIha,EAAAA,oBAAoB,UAAU,EAE3Dia,EAAmBjF,GAAiB,iBAAA,CACxC,MAAOtsB,GAASA,EAAM,MAAQA,EAAM,MAAQ,KAC5C,SAAAgJ,EACA,SAAAC,EACA,SAAWuoB,GAAW,CACpBP,EAAS,CACP,IAAKjxB,GAASA,EAAM,KAAOwxB,GAAUxxB,EAAM,IAAMA,EAAM,IAAMwxB,EAC7D,MAAOA,CACT,CAAC,CACH,EACA,OAAA3I,EACA,eAAgB,IAAM,IAAI0D,mBAC5B,CAAC,EAEKkF,EAAmBnF,GAAAA,iBAAiB,CACxC,MAAOtsB,GAASA,EAAM,IAAMA,EAAM,IAAM,KACxC,SAAAgJ,EACA,SAAAC,EACA,SAAWuoB,GAAW,CACpBP,EAAS,CACP,MACEjxB,GAASA,EAAM,KAAOA,EAAM,OAASwxB,EAASxxB,EAAM,MAAQwxB,EAC9D,IAAKA,CACP,CAAC,CACH,EACA,OAAA3I,EACA,eAAgB,IAAM,IAAI0D,mBAC5B,CAAC,EASKroB,EAAQ,CACZ,SAAU+sB,EACV,oBATsBS,GAA8B,CAChDA,GAAaA,EAAU,OAASA,EAAU,MAC5CH,EAAiB,eAAeG,EAAU,KAAqB,EAC/DD,EAAiB,eAAeC,EAAU,GAAmB,EAEjE,EAKE,MAAA1xB,EACA,SAAUuxB,EAAiB,SAC3B,SAAAvoB,EACA,SAAAC,CACF,EAEM0oB,EAAyB3xB,GAASA,EAAM,MAAQ,CAAA,EAAKqkB,GAErDuN,EAAa,IAAM,CACvBT,IACAD,EAAAA,EACF,CAAA,EAEMW,EAAc,IAAM,CACxBlF,EAAU,EACVuE,EAAY,CACd,EAEA,OACElyB,EAAA,cAAC6X,MAAA,CAAI,IAAMrT,EAAM,MAAQ8tB,CAAAA,EACvBtyB,EAAA,cAACuf,QAAA,KACCvf,EAAA,cAAC0c,EAAA,KAAA,CAAK,IAAM,CAAA,EACV1c,EAAA,cAACoxB,GAAA,CACC,MAAQlsB,EACR,OAAS2kB,EACT,iBAAmBoF,EACnB,eAAiBC,CAAAA,CACnB,EACAlvB,EAAA,cAACuf,EAAA,MAAA,KACCvf,EAAA,cAACic,SAAA,CAAO,WAAW,QAAQ,QAAU,EAAI,EAAE,OAAO,GAAG,GACnDjc,EAAAA,EAAA,cAACuf,EAAAA,MAAArf,GAAA,CAAM,EAAE,MAAYyyB,EAAAA,CAAAA,EACnB3yB,EAAA,cAAC6X,EAAA,IAAA,CAAI,EAAE,GACL7X,EAAAA,EAAA,cAAC0R,GAAA,CAAM,KAAK,IAAK,EAAA,aAAW,EAC5B1R,EAAA,cAAC4sB,GAAA,CACC,MAAQ2F,EACR,MAAQvxB,EACR,eAAiB2oB,CAAAA,CACnB,CACF,CACF,EACA3pB,EAAA,cAACuf,EAAAA,MAAA,CAAM,EAAE,OAAO,QAAQ,iBACtBvf,EAAA,cAACuf,EAAAA,MAAA,CAAM,QAAUve,GAASA,EAAM,MAAQ,IAAM,OAC5ChB,EAAA,cAAC6X,EAAAA,IAAA,CAAI,EAAE,GAAA,EACL7X,EAAA,cAAC0R,GAAA,CAAM,KAAK,IAAK,EAAA,WAAS,EAC1B1R,EAAA,cAAC4sB,GAAA,CACC,MAAQ6F,EACR,MAAQzxB,EACR,eAAiB2oB,CAAAA,CACnB,CACF,CACF,EACA3pB,EAAA,cAACic,EAAAA,OAAA,CAAO,GAAG,IAAI,UAAU,KACrByR,EAAAA,GACA1tB,EAAA,cAACgM,GAAA,CAAO,QAAU6mB,EAAc,QAAQ,QAAQ,KAAK,IACjDR,EAAAA,CACJ,EAEFryB,EAAA,cAACgM,GAAA,CAAO,QAAQ,QAAQ,QAAU4mB,EAAa,KAAK,IAChDR,EAAAA,CACJ,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAEJ,ECtJaU,GAAoB9xB,GAC/Bgc,EAAG,GAAA,OAAQhc,CAAK,GAChB+xB,MAAI,YAAa/xB,CAAK,GACtB+xB,EAAI,IAAA,UAAW/xB,CAAK,GACpBgc,KAAG,OAAQhc,EAAM,SAAS,GAC1Bgc,KAAG,OAAQhc,EAAM,OAAO,ECIbgyB,GAA6C,CACxD,QAASC,EAAAA,iBACT,QAASC,qBACT,MAAOC,EAAAA,iBACP,OAAQC,EACR,kBAAA,KAAMC,YACN,GAAIC,EAAAA,gBACJ,QAASC,EAAAA,gBACT,MAAOA,iBACT,ECpBA,IAAA5a,GAAA,OAAA,eAAAlN,GAAA,OAAA,sBAAAhM,GAAA,OAAA,UAAA,eAAAiM,GAAA,OAAA,UAAA,qBAAApM,GAAA,CAAAM,EAAAQ,EAAAC,IAAAD,KAAAR,EAAA+Y,GAAA/Y,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAC,CAAA,CAAA,EAAAT,EAAAQ,CAAA,EAAAC,EAAAV,GAAA,CAAAC,EAAAQ,IAAA,CAAA,QAAAC,KAAAD,IAAAA,EAAA,CAAA,GAAAX,GAAA,KAAAW,EAAAC,CAAA,GAAAf,GAAAM,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,GAAAoL,GAAA,QAAApL,KAAAoL,GAAArL,CAAA,EAAAsL,GAAA,KAAAtL,EAAAC,CAAA,GAAAf,GAAAM,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAAO,GAAA,CAAAP,EAAAQ,IAAA,CAAA,IAAAC,EAAA,CAAA,EAAA,QAAAK,KAAAd,EAAAH,GAAA,KAAAG,EAAAc,CAAA,GAAAN,EAAA,QAAAM,CAAA,EAAA,IAAAL,EAAAK,CAAA,EAAAd,EAAAc,CAAA,GAAA,GAAAd,GAAA,MAAA6L,GAAA,QAAA/K,KAAA+K,GAAA7L,CAAA,EAAAQ,EAAA,QAAAM,CAAA,EAAA,GAAAgL,GAAA,KAAA9L,EAAAc,CAAA,IAAAL,EAAAK,CAAA,EAAAd,EAAAc,CAAA,GAAA,OAAAL,CAAA,EA0Ka,MAAAoP,GAAsC7L,GAO7C,CAP6C,IAAA8R,EAAA9R,EACjD,CAAAsU,QAAAA,EAAU,UACV,SAAAsb,EAAW,GACX,MAAAC,EAAQ,GACR,YAAAC,EAAc,GACd,QAAAC,EAAU,EA/KZ,EA0KmDje,EAM9CO,EAAAC,GAN8CR,EAM9C,CALH,UACA,WACA,QACA,cACA,YAGA,MAAMke,EAA6B1b,EAC7BqB,EAAOyZ,GAAeY,CAAW,EAEjCC,EACJ7zB,EAAA,cAACic,EAAAA,OAAA,CAAO,WAAW,YACf0X,EAAAA,GAAW3zB,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,EAAO,MAAQ,cAAcqa,GAAgB,CAAA,EACrE5zB,EAAA,cAAC8zB,EAAAA,OAAA,CAAO,QAAU,EAAI,WAAW,YAC/B9zB,EAAAA,EAAA,cAAC0R,GAAA,CAAM,KAAK,IAAA,EAAO+hB,CAAO,EAC1BzzB,EAAA,cAACQ,EAAA,CACC,QAAQ,KACR,GAAK,CACH,MAAO,CAAC0X,GAAWA,IAAY,KAAO,gBAAkB,cAC1D,CAEEwb,EAAAA,CACJ,CACF,CACF,EAEF,OACE1zB,EAAA,cAAC+zB,EAAAA,QAAA7zB,GAAA,CACC,SAAWszB,EACX,QAAUG,EACV,MAAQF,GAASC,EAAcG,EAAiB,OAChD,QAAU3b,CAAAA,EACLjC,EACP,CAEJ,ibCvLA,MAAM+d,GAAchzB,GACb8xB,GAAiB9xB,CAAK,EACpB,CAAE,MAAOitB,YAAUjtB,EAAM,SAAS,EAAG,IAAKitB,YAAUjtB,EAAM,OAAO,CAAE,EADrC,KAIjCizB,GAAgB,CAAC,CACrB,eAAAC,EACA,SAAAprB,CACF,IAIMorB,EACKl0B,EAAA,cAAC0hB,SAAA,KAAS5Y,CAAU,EAEtB9I,EAAA,cAAAA,EAAA,SAAI8I,KAAAA,CAAU,EAGjBqrB,GAAe,CACnBC,EACAC,IACGD,GAAO,YAAcC,GAAO,WAAaD,GAAO,UAAYC,GAAO,QAiD3DC,GAAmBv0B,GAAgC,CAC9D,KAAM,CACJ,WAAA2kB,EACA,YAAAgJ,EAAc,GACd,UAAAC,EACA,UAAAta,EAAY,GACZ,WAAAyU,EACA,iBAAAmH,EACA,eAAAC,EACA,QAAAhX,EAAU,UACV,SAAU8H,EAAmBpK,WAC7B,MAAA5U,EACA,SAAAgJ,EAAW,aACX,SAAAC,EACA,eAAAiqB,EAAiB,GACjB,eAAAvK,EACA,OAAAwI,EACA,YAAAC,EAAc,OACd,iBAAAC,EAAmB,QACnB,eAAAkC,EACA,iBAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,cAAeC,EACf,YAAAC,EAAc,GACd,aAAAC,CACF,EAAI90B,EACEyE,EAAMf,EAAO,OAAA,EACb,CAAE,MAAAmqB,CAAM,EAAItV,EAAoB,oBAAA,YAAY,EAC5Cwc,EAAc,CAClB,SAAWtM,GAAoB,CAC7BxI,EAAiB,CACf,UAAWwI,GAAM,MAAM,WACvB,QAASA,GAAM,IAAI,UACrB,CAAC,CACH,EACA,MAAOwL,GAAWhzB,CAAK,EACvB,SAAU6C,EAAAA,MAAMmG,CAAQ,EAAI,OAAaikB,EAAAA,UAAUjkB,CAAQ,EAC3D,SAAUnG,QAAMoG,CAAQ,EAAI,OAAagkB,EAAAA,UAAUhkB,CAAQ,CAC7D,EACM/E,EAAQ6vB,GAAAA,wBAAwB,CACpC,MAAOD,EAAY,MACnB,SAAUA,EAAY,SACtB,SAAUA,EAAY,SACtB,SAAUA,EAAY,SACtB,WAAApQ,EACA,UAAArR,EACA,iBAAkBtT,EAAM,iBACxB,kBAAmBA,EAAM,kBACzB,0BAA2BA,EAAM,0BACjC,oBAAqB,GACrB,aAAc,GACd,YAAA60B,EACA,aAAAC,CACF,CAAC,EAEK,CACJ,WAAA/G,EACA,gBAAAkH,EACA,cAAAC,EACA,YAAA1O,EACA,YAAAwH,EACA,cAAAjB,EACF,EAAIoI,sBACFh1B,GAAA,CACE,SAAWsoB,GAAoB,CAC7BxI,EAAiB,CACf,UAAWwI,GAAM,MAAM,SACvB,EAAA,QAASA,GAAM,IAAI,SACrB,CAAA,CAAC,CACH,EACA,MAAOwL,GAAWhzB,CAAK,EACvB,SAAU8zB,EAAY,UAAY7G,YAAU,YAAY,EACxD,SAAU6G,EAAY,SACtB,iBAAkB/0B,EAAM,iBACxB,kBAAmBA,EAAM,kBACzB,0BAA2BA,EAAM,0BACjC,WAAA2kB,EACA,UAAArR,EACA,UAAWtT,EAAM,UACjB,QAASA,EAAM,QACf,aAAc,mBAAA,EACV,CAAC8D,EAAAA,MAAM8wB,CAAU,GAAK,CAAE,cAAeA,CAAW,GAExDzvB,EACAV,CACF,EAEM0pB,EAAc,IAAMhpB,EAAM,QAAQ,CAACA,EAAM,MAAM,EAE/CgtB,EAAc,IAAM,CACxBhtB,EAAM,QAAQ,EAAK,CACrB,EAEAiwB,EAAAA,gBAAgB,CACd,IAAA3wB,EACA,QAAS,IAAMU,EAAM,QAAQ,EAAK,CACpC,CAAC,EAED,MAAMkwB,GAAcX,GAClBz0B,EAAA,cAACqgB,EAAA,CACC,aAAW,aACX,QAAQ,SACR,KAAK,KACL,SAAS,KACT,OAAS,CAACqN,EACV,WAAahJ,EACb,QAAUiJ,EACV,KAAO3tB,EAAA,cAAC0P,EAAA,CAAK,GAAK4e,aAAAA,CAAc,EAClC,EAGI+G,GAA0B,IAAM,CAChCX,GACG7wB,QAAM0wB,CAAc,GAAGvU,EAAiBuU,CAAc,EAC3DG,MAEK7wB,EAAAA,MAAM2wB,CAAgB,GAAGxU,EAAiBwU,CAAgB,EAC/D7G,IAEJ,EAEMiF,GAAa,IAAM,CACvBT,IACAD,EAAAA,EAAAA,CACF,EAEMoD,GAAmB,IAAM,CACxBzxB,QAAM0wB,CAAc,GAAGvU,EAAiBuU,CAAc,EAC3DrC,GACF,EAGMqD,GACJ1xB,EAAAA,MAAM0wB,CAAc,GAAKJ,GAAanzB,EAAOuzB,CAAc,EAGvDiB,GACJ3xB,EAAM2wB,MAAAA,CAAgB,GAAK,CAACL,GAAanzB,EAAOwzB,CAAgB,EAE5DiB,GAA8B,CAAC5xB,EAAAA,MAAM0wB,CAAc,GAAK,CAAC1wB,QAAM2wB,CAAgB,EAE/EkB,EACJ,CAACxwB,EAAM,QAAUqwB,IAAsBC,GAEnCG,GACJF,IAA+B,CAACvwB,EAAM,QAAU,CAACqwB,GAEnD,OACEv1B,EAAA,cAACkhB,GAAA,CACC,OAAShc,EAAM,OACf,QAAUowB,GACV,UAAU,cAAA,EAEVt1B,EAAA,cAACmuB,EAAAA,cAAA,KACCnuB,EAAA,cAACic,SAAA,KACCjc,EAAA,cAACouB,aAAA7iB,GAAArL,GAAA,GAAgB4tB,CAAAA,EAAhB,CAA6B,IAAMtpB,EAAM,MAAQopB,CAChD5tB,CAAAA,EAAAA,EAAA,cAACmoB,GAAA,CACC,WAAazD,EACb,UAAYrR,EACZ,QAAU6E,CAAAA,EAEVlY,EAAA,cAACic,EAAAA,OAAA,CAAO,mBAAmB,KAAK,iBAAmB,EAAA,EACjDjc,EAAA,cAACunB,GAAAhc,GAAArL,GAAA,GAAe80B,CAAf,EAAA,CAAiC,WAAalN,CAAa,CAAA,CAAA,EAC5D9nB,EAAA,cAACQ,EAAA,KAAE,GAAC,EACJR,EAAA,cAACunB,GAAAhc,GAAArL,GAAA,GAAe+0B,GAAf,CAA+B,WAAanN,GAAa,CAC5D,CACF,EACA9nB,EAAA,cAACquB,EAAAA,kBAAA,CAAkB,GAAK,CAAE,OAAQ,OAAQ,aAAc,GAAI,CAAA,EAC1DruB,EAAA,cAACqmB,GAAA9a,GAAArL,GAAA,CAAA,EACMqmB,CADN,EAAA,CAEC,WAAa7B,EACb,YAAcwJ,CAChB,CAAA,CAAA,CACF,CACF,EACEwH,GACAN,GAEAO,IACA31B,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAACyP,GAAA,CAAQ,MAAQ4iB,CAAAA,EACfryB,EAAA,cAACqgB,EAAA,CACC,aAAW,qBACX,QAAQ,QACR,KAAK,KACL,SAAS,KACT,QAAUqU,EACV,WAAahQ,EACb,KAAO1kB,EAAA,cAAC0P,EAAA,CAAK,GAAK4e,EAAAA,WAAc,CAAA,CAAA,CAClC,CACF,EACAtuB,EAAA,cAACyP,GAAA,CAAQ,MAAQ2iB,GACfpyB,EAAA,cAACqgB,EAAA,CACC,aAAW,YACX,QAAQ,QACR,KAAK,KACL,SAAS,KACT,QAAUuS,GACV,WAAalO,EACb,KAAO1kB,EAAA,cAAC0P,EAAA,CAAK,GAAKgW,EAAAA,UAAAA,CAAa,EACjC,CACF,CACF,CAEJ,CACF,EACA1lB,EAAA,cAACi0B,GAAA,CAAc,eAAiBC,CAAAA,EAC5BhvB,EAAM,QACNlF,EAAA,cAACojB,EAAAA,eAAA7X,GAAArL,GAAA,CAAA,EAAoB6tB,CAAAA,EAApB,CAAkC,IAAMvpB,EAAM,EAAE,gBAC/CxE,EAAA,cAACujB,GAAAA,WAAA,CAAW,QAAU,GAAO,aAAe,EAAA,EAC1CvjB,EAAA,cAACwtB,GAAA,CAAwB,eAAiB7D,CAAAA,EACxC3pB,EAAA,cAACgyB,GAAAzmB,GAAArL,GAAA,CAAA,EACM4sB,EADN,EAAA,CAEC,UAAYuI,GACZ,YAAcC,GACd,iBAAmBrG,GAAoB,EACvC,eAAiBC,GAAkB,EACnC,YAAcxB,EACd,eAAiB/D,EACjB,OAASwI,EACT,iBAAmBE,EACnB,YAAcD,CAAAA,CAAAA,CAChB,CACF,CACF,CACF,CAEJ,CACF,CAEJ,ECpUA,IAAA1mB,GAAA,OAAA,eAAAhM,GAAA,OAAA,sBAAAgkB,GAAA,OAAA,UAAA,eAAAW,GAAA,OAAA,UAAA,qBAAA9b,GAAA,CAAAjJ,EAAAM,EAAA,IAAAA,KAAAN,EAAAoM,GAAApM,EAAAM,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAN,EAAAM,CAAA,EAAA,EAAAc,GAAA,CAAApB,EAAAM,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAA8jB,GAAA,KAAA9jB,EAAA,CAAA,GAAA2I,GAAAjJ,EAAA,EAAAM,EAAA,CAAA,CAAA,EAAA,GAAAF,GAAA,QAAA,KAAAA,GAAAE,CAAA,EAAAykB,GAAA,KAAAzkB,EAAA,CAAA,GAAA2I,GAAAjJ,EAAA,EAAAM,EAAA,CAAA,CAAA,EAAA,OAAAN,CAAA,EAAAC,GAAA,CAAAD,EAAAM,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAO,KAAAb,EAAAokB,GAAA,KAAApkB,EAAAa,CAAA,GAAAP,EAAA,QAAAO,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,GAAAb,GAAA,MAAAI,GAAA,QAAAS,KAAAT,GAAAJ,CAAA,EAAAM,EAAA,QAAAO,CAAA,EAAA,GAAAkkB,GAAA,KAAA/kB,EAAAa,CAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,OAAA,CAAA,EAKa,MAAAy1B,GAAqBhyB,GAKJ,CALI,IAAA8R,EAAA9R,EAChC,CAAA,iBAAAiyB,EACA,kBAAAC,EACA,SAAAhtB,CARF,EAKkC4M,EAI7BO,EAAAC,GAJ6BR,EAI7B,CAHH,mBACA,oBACA,UAAA,CAAA,EAMA,OAFAqgB,EAAAA,IAAIC,EAAInyB,IAAAA,EAAAA,MAAO,CAAEgyB,EAAkBC,CAAkB,CAAC,CAAC,EAInD91B,EAAA,cAACouB,EAAAluB,WAAAA,GAAA,CAAA,EAAgB+V,CAAAA,EACb4f,EACA/sB,EACAgtB,CACJ,EAEA91B,EAAA,cAAAA,EAAA,SAAA,KAAI8I,CAAU,CACpB,+fCQO,MAAMmtB,GAAkBrd,EAAAA,WAAiD,CAAChV,EAa9EY,IAAQ,CAbsE,IAAAkR,EAAA9R,EAC/E,CAAAiE,KAAAA,EACA,SAAAmC,EACA,SAAAC,EACA,WAAA+U,EACA,UAAAD,EAAY,SACZ,MAAAF,EACA,SAAAlB,EACA,eAAAgM,EAAiB,SACjB,SAAU3J,EAAmBpK,EAC7B,SAAA,iBAAAigB,EACA,kBAAAC,CA1CF,EA+BiFpgB,EAY5EO,EAAAC,GAZ4ER,EAY5E,CAXH,OACA,WACA,WACA,aACA,YACA,QACA,WACA,iBACA,WACA,mBACA,mBAGA,CAAA,EAAA,KAAM,CAAE,SAAAmK,EAAU,SAAAqW,EAAU,QAAA3T,CAAQ,EAAIpD,EAAAA,eAAAA,EAElCvI,EAAgB4R,GAAoB,CACxC3I,EAAShY,EAAM2gB,GAAM,SAAU,CAAA,EAC1Bxe,GAAYwe,EAAOyF,EAAAA,UAAUjkB,CAAQ,GAAOC,GAAYue,EAAOyF,YAAUhkB,CAAQ,EACpFisB,EAASruB,EAAM,CACb,KAAM,SACN,QAASmC,GAAYC,EACjB,wBAAwBD,KAAYC,IACpCD,EACE,2BAA2BA,IAC3B,yBAAyBC,GAEjC,CAAC,EAEDsY,EAAQ1a,CAAI,EAEdmY,EAAiBwI,CAAI,CACvB,EAEA,OACExoB,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,EACX,IAAMnZ,CAEJ,EAAA,CAAC,CAAE,MAAAxD,EAAO,SAAAoC,CAAS,EAAG,CAAE,UAAW,CAAE,OAAA6E,CAAO,CAAE,IAC9CjI,EAAA,cAAC41B,GAAA,CACC,iBAAmBC,EACnB,kBAAoBC,CAEpB91B,EAAAA,EAAA,cAACwO,GAAAtO,GAAA,CACC,eAAiBypB,EACjB,aAAa9K,EACb,UAAY,CAAC,CAAC5W,EAAOJ,CAAI,EACzB,SAAW+O,EACX,UAAY,IAAMxT,EAAS,IAAI,EAC/B,MAAQpC,EAAQitB,EAAAA,UAAUjtB,CAAK,EAAW,KAC1C,SAAWgJ,EAAWikB,YAAUjkB,CAAQ,EAAiB,OACzD,SAAWC,EAAWgkB,EAAAA,UAAUhkB,CAAQ,EAAiB,OACzD,gBAAkBhC,EAAO,KAAO,UAAY,OAAA,EACvCgO,CACP,CAAA,CACF,CAEJ,CAGJ,CAAC,+fClFY,MAAAkgB,GAAuBvd,EAAAA,WAAsD,CAAChV,EAcxFY,IAAQ,CAdgF,IAAAkR,EAAA9R,EACzF,MAAAiE,EACA,SAAAmC,EACA,SAAAC,EACA,WAAA+U,EACA,UAAAD,EAAY,SACZ,MAAAF,EACA,SAAAlB,EACA,eAAAgM,EAAiB,SACjB,SAAU3J,EAAmBpK,WAC7B,YAAA8X,EAAc,GACd,OAAAyE,EACA,YAAAC,EAAc,MA1BhB,EAc2F1c,EAatFO,EAAAC,GAbsFR,EAatF,CAZH,OACA,WACA,WACA,aACA,YACA,QACA,WACA,iBACA,WACA,cACA,SACA,gBAGA,KAAM,CAAE,SAAAmK,EAAU,SAAAqW,EAAU,QAAA3T,CAAQ,EAAIpD,iBAElCvI,EAAAA,EAAgB8b,GAAsD,CAC1E7S,EAAShY,EAAM6qB,CAAS,EAErB1oB,GAAY0oB,GAAW,UAAY1oB,GACnCC,GAAYyoB,GAAW,QAAUzoB,EAElCisB,EAASruB,EAAM,CACb,KAAM,SACN,QACEmC,GAAYC,EACR,wBAAwBD,KAAYC,IACpCD,EACE,2BAA2BA,IAC3B,yBAAyBC,GACnC,CAAC,EAEDsY,EAAQ1a,CAAI,EAEdmY,EAAiB0S,CAAS,CAC5B,EAEA,OACE1yB,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,EACX,IAAMnZ,CAEJ,EAAA,CAAC,CAAE,MAAAxD,EAAO,SAAAoC,CAAS,EAAG,CAAE,UAAW,CAAE,OAAA6E,CAAO,CAAE,IAC9CjI,EAAA,cAACs0B,GAAAp0B,GAAA,CACC,eAAiBypB,EACjB,aAAa9K,EACb,UAAY,CAAC,CAAC5W,EAAOJ,CAAI,EACzB,SAAW+O,EACX,OAASub,EACT,UAAY,IAAM/uB,EAAS,IAAI,EAC/B,MAAQpC,EACR,SAAWgJ,EACX,SAAWC,EACX,gBAAkBhC,EAAO,KAAO,UAAY,QAC5C,YAAcylB,EACd,YAAc0E,CACRnc,EAAAA,CAAAA,CACR,CAEJ,CAEJ,CAAC,+fC3EM,MAAMmgB,GAAyBxyB,GAIJ,CAJI,IAAA8R,EAAA9R,EACpC,CAAA,SAAAyyB,EACA,UAAAC,EAAY,cAPd,EAKsC5gB,EAGjCO,EAAAC,GAHiCR,EAGjC,CAFH,WACA,WAMA,CAAA,EAAA,MAAM6gB,EAAgB,EAAI,KAAK,GAAK,GAC9BC,EAAmBD,EAAiBF,EAAW,IAAOE,EAE5D,OACEv2B,EAAA,cAACy2B,EAAAA,OAAAv2B,GAAA,CACC,GAAG,MACH,KAAO,OACP,QAAU,YACV,GAAK,CACH,UAAW,gBACb,CAAA,EACK+V,GAELjW,EAAA,cAACuY,EAAO,OAAA,OAAP,CACC,GAAK,GAAW,EAChB,GAAK,GAAW,EAChB,EAAI,GACJ,KAAK,cACL,OAAO,eACP,YAAc,CAChB,CAAA,EACAvY,EAAA,cAACuY,SAAO,OAAP,CACC,GAAK,GAAW,EAChB,GAAK,GAAW,EAChB,EAAI,GACJ,KAAK,cACL,OAAS+d,EACT,YAAc,EACd,gBAAkBC,EAClB,iBAAmBC,EACnB,cAAc,OAChB,CAAA,CACF,CAEJ,+fCTa,MAAAE,GAAgB9yB,GAQJ,CARI,IAAA8R,EAAA9R,EAC3B,CAAA2V,KAAAA,EAAOod,EAAAA,SACP,QAAAntB,EAAU,IACV,UAAA8sB,EAAY,eACZ,UAAAM,EAAY,IAAM,CAClB,EAAA,YAAAC,EAAc,iBACd,aAAcvW,EAAY,gBA5C5B,EAsC6B5K,EAOxBO,EAAAC,GAPwBR,EAOxB,CANH,OACA,UACA,YACA,YACA,cACA,eAGA,KAAM,CAAE2gB,EAAUS,CAAY,EAAI11B,WAAS,CAAC,EACtC,CAAE21B,EAAYC,CAAc,EAAI51B,EAAAA,SAAS,EAAK,EAC9C61B,EAAWxzB,SAA2B,MAAS,EAE/CyzB,EAAa,IAAM,CACnBD,EAAS,UACX,cAAcA,EAAS,OAAO,EAC9BA,EAAS,QAAU,QAErBH,EAAY,CAAC,CACf,EAEA,OAAAz1B,EAAU,UAAA,IAAM61B,EAAY,CAAE,CAAA,EA4B5Bl3B,EAAA,cAACyP,GAAA,CAAQ,MAAQonB,EAAc,UAAU,KACvC72B,EAAAA,EAAA,cAACm3B,EAAAA,OAAAj3B,GAAA,CACC,SAAS,WACT,OAAO,UACP,YA9Ba,IAAM,CACvBg3B,EAEA,EAAA,MAAME,EAAY,KAAK,IAAI,EAC3BH,EAAS,QAAU,YAAY,IAAM,CAEnC,MAAMI,GADc,KAAK,IAAA,EAAQD,GACM5tB,EAAW,IAC9C6tB,GAAmB,KACrB,cAAcJ,EAAS,OAAO,EAC9BL,EAAU,GAEVE,EAAYO,CAAe,CAE/B,EAAG,EAAE,CACP,EAiBM,UAAYH,EACZ,aAZmB,IAAM,CAC7BF,EAAc,EAAK,EACnBE,EACF,CAAA,EAUM,aAjBmB,IAAM,CAC7BF,EAAc,EAAI,CACpB,EAgBM,QAAQ,OACR,QAAU,IAAI,IAAMX,GAAY,KAC3BpgB,EAAAA,CAAAA,EAELjW,EAAA,cAACqgB,EAAA,CACC,KAAOrgB,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,CAAAA,CAAO,EACzB,KAAK,KACL,aAAa+G,EACb,QAAQ,OACV,CAAA,EACEyW,GACA/2B,EAAA,cAACo2B,GAAA,CACC,UAAYE,EACZ,SAAWD,EACX,SAAS,WACT,IAAI,IACJ,KAAK,GAAA,CACP,CAEJ,CACF,CAEJ,ECrHaiB,GAAmB,IACnBC,GAAgB,GCUvBC,GAAgB,CAAE,SAAU,IAAK,EAC1BC,GAAuB,CAClC3uB,EACA4uB,EACAC,IAECA,EACG7uB,EACA4uB,EACE7uB,GAAqBC,EAAU0uB,EAAa,EAC5C1uB,EAEK8uB,GAAc,CACzBC,EACAC,EACAC,IACG,CACH,MAAMC,EAAaH,GAAiBE,GAAYT,GAC1CW,EAAcH,GAAgBC,GAAYT,GAShD,MARmB,CACjB,MAAO,CACL,SAAUU,EAAa,GACzB,EACA,KAAM,CACJ,SAAUC,EAAc,GAC1B,CACF,CAEF,EAEaC,GAAa,CACxBnZ,EACAoZ,EACAC,EACAC,IACG,CACH,GAAID,GAAWC,EACb,MAAO,CAAE,QAAAD,EAAS,QAAAC,CAAQ,EAE5B,GAAItZ,EAAW,CACb,MAAMuZ,EAAQH,GAAUZ,GACxB,OAAQxY,GACN,IAAK,QACH,MAAO,CAAE,QAASuZ,EAAO,QAAS,CAAE,EACtC,IAAK,OACH,MAAO,CAAE,QAAS,CAACA,EAAO,QAAS,CAAE,EACvC,IAAK,MACH,MAAO,CAAE,QAAS,EAAG,QAAS,CAACA,CAAM,EACvC,IAAK,SACH,MAAO,CAAE,QAAS,EAAG,QAASA,CAAM,CAGxC,EAEF,MAAO,CAAE,QAASf,GAAe,QAASA,EAAc,CAC1D,EAEagB,GAAW,CACtBZ,EACAa,EACAC,IACG,CACH,KAAM,CAAEC,EAAeC,CAAiB,EAAIv3B,EAAAA,SAAS,EAAK,EAC1D,OAAAC,EAAAA,UAAU,IAAM,CACd,MAAMmD,EAAM,WACV,IAAMm0B,EAAiBhB,CAAI,EAC3BA,EAAOa,EAAaC,CACtB,EACA,MAAO,IAAM,aAAaj0B,CAAG,CAC/B,EAAG,CAAEmzB,CAAK,CAAC,EACJe,CACT,EAEaE,GAAmB,CAC9BC,EAAS,GACTJ,EAAY,EACZX,EAA6B,EAC7BC,EAAyB,EACzBe,EAAkDljB,aAC/C,CACH,KAAM,CAAEmjB,EAAQC,CAAU,EAAI53B,EAAAA,SAASy3B,CAAM,EAE7C,OAAAx3B,EAAAA,UAAU,IAAM,CACd,MAAMmD,EAAM,WAAW,IAAM,CAC3Bw0B,EAAUH,CAAM,EAChBC,EAAqBD,CAAM,CAC7B,EAAGJ,GAAaX,GAAgBC,GAAY,EAAE,EAC9C,MAAO,IAAM,aAAavzB,CAAG,CAC/B,EAAG,CAAEq0B,CAAO,CAAC,EAENE,CACT,+fC3DO,MAAME,GAAQr1B,GAYJ,CAZI,IAAA8R,EAAA9R,EACnB,UAAAkF,EACA,cAAA+uB,EAAgB,KAChB,aAAAC,EAAe,KACf,SAAAC,EAAW,KACX,GAAIJ,EAAO,GACX,aAAAD,EAAe,GACf,YAAAwB,EAAc,GACd,WAAAV,EAAa,EACb,UAAAC,EAAY,EACZ,qBAAAK,EAAuBljB,EArDzB,QAAA,EA2CqBF,EAWhBO,EAAAC,GAXgBR,EAWhB,CAVH,WACA,gBACA,eACA,WACA,KACA,eACA,cACA,aACA,YACA,sBAGA,CAAA,EAAA,MAAMyjB,EAAavB,GAAYC,EAAeC,EAAcC,CAAQ,EAC9DW,EAAgBH,GAASZ,EAAMa,EAAYC,CAAS,EACpDW,EAAWR,GAAiBjB,EAAMc,EAAWX,EAAcC,EAAUe,CAAoB,EACzF9S,EAAoByR,GAAqB3uB,EAAU4uB,EAAc0B,CAAQ,EAE/E,OACEp5B,EAAA,cAACq5B,EAAAA,KAAAn5B,GAAA,CACC,GAAKw4B,EACL,WAAaS,EACb,cAAgBD,CAAAA,EACXjjB,CAEH+P,EAAAA,CACJ,CAEJ,+fC9BO,MAAMsT,GAAa11B,GAYJ,CAZI,IAAA8R,EAAA9R,EACxB,UAAAkF,EACA,cAAA+uB,EAAgB,KAChB,aAAAC,EAAe,KACf,SAAAC,EAAW,KACX,GAAIJ,EAAO,GACX,aAAAD,EAAe,GACf,YAAAwB,EAAc,GACd,WAAAV,EAAa,EACb,UAAAC,EAAY,EACZ,qBAAAK,EAAuBljB,EAnDzB,QAAA,EAyC0BF,EAWrBO,EAAAC,GAXqBR,EAWrB,CAVH,WACA,gBACA,eACA,WACA,KACA,eACA,cACA,aACA,YACA,sBAGA,CAAA,EAAA,MAAMyjB,EAAavB,GAAYC,EAAeC,EAAcC,CAAQ,EAC9DW,EAAgBH,GAASZ,EAAMa,EAAYC,CAAS,EACpDW,EAAWR,GAAiBjB,EAAMc,EAAWX,EAAcC,EAAUe,CAAoB,EACzF9S,EAAoByR,GAAqB3uB,EAAU4uB,EAAc0B,CAAQ,EAE/E,OACEp5B,EAAA,cAACu5B,EAAAA,UAAAr5B,GAAA,CACC,GAAKw4B,EACL,WAAaS,EACb,cAAgBD,CAAAA,EACXjjB,CAEH+P,EAAAA,CACJ,CAEJ,+fC/Da,MAAAwT,GAAS51B,GAaJ,CAbI,IAAA8R,EAAA9R,EACpB,CAAA,SAAAkF,EACA,cAAA+uB,EAAgB,KAChB,aAAAC,EAAe,KACf,SAAAC,EAAW,KACX,GAAIJ,EAAO,GACX,aAAAD,EAAe,GACf,YAAAwB,EAAc,GACd,WAAAV,EAAa,EACb,UAAAC,EAAY,EACZ,UAAA1Z,EAAY,SACZ,qBAAA+Z,EAAuBljB,EAAAA,QAjBzB,EAMsBF,EAYjBO,EAAAC,GAZiBR,EAYjB,CAXH,WACA,gBACA,eACA,WACA,KACA,eACA,cACA,aACA,YACA,YACA,sBAAA,CAAA,EAGA,MAAMyjB,EAAavB,GAAYC,EAAeC,EAAcC,CAAQ,EAC9DW,EAAgBH,GAASZ,EAAMa,EAAYC,CAAS,EACpDW,EAAWR,GAAiBjB,EAAMc,EAAWX,EAAcC,EAAUe,CAAoB,EACzF9S,EAAoByR,GAAqB3uB,EAAU4uB,EAAc0B,CAAQ,EAE/E,OACEp5B,EAAA,cAACy5B,EAAAA,MAAAv5B,GAAA,CACC,GAAKw4B,EACL,WAAaS,EACb,UAAYpa,EACZ,cAAgBma,CAAAA,EACXjjB,CAEH+P,EAAAA,CACJ,CAEJ,ECpCA,IAAA3Q,GAAA,OAAA,eAAA3J,GAAA,OAAA,sBAAAD,GAAA,OAAA,UAAA,eAAA/K,GAAA,OAAA,UAAA,qBAAAb,GAAA,CAAAQ,EAAAT,EAAAa,IAAAb,KAAAS,EAAAgV,GAAAhV,EAAAT,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAa,CAAA,CAAA,EAAAJ,EAAAT,CAAA,EAAAa,EAAAhB,GAAA,CAAAY,EAAAT,IAAA,CAAA,QAAAa,KAAAb,IAAAA,EAAA,CAAA,GAAA6L,GAAA,KAAA7L,EAAAa,CAAA,GAAAZ,GAAAQ,EAAAI,EAAAb,EAAAa,CAAA,CAAA,EAAA,GAAAiL,GAAA,QAAAjL,KAAAiL,GAAA9L,CAAA,EAAAc,GAAA,KAAAd,EAAAa,CAAA,GAAAZ,GAAAQ,EAAAI,EAAAb,EAAAa,CAAA,CAAA,EAAA,OAAAJ,CAAA,EAAAf,GAAA,CAAAe,EAAAT,IAAA,CAAA,IAAAa,EAAA,CAAA,EAAA,QAAA8H,KAAAlI,EAAAoL,GAAA,KAAApL,EAAAkI,CAAA,GAAA3I,EAAA,QAAA2I,CAAA,EAAA,IAAA9H,EAAA8H,CAAA,EAAAlI,EAAAkI,CAAA,GAAA,GAAAlI,GAAA,MAAAqL,GAAA,QAAAnD,KAAAmD,GAAArL,CAAA,EAAAT,EAAA,QAAA2I,CAAA,EAAA,GAAA7H,GAAA,KAAAL,EAAAkI,CAAA,IAAA9H,EAAA8H,CAAA,EAAAlI,EAAAkI,CAAA,GAAA,OAAA9H,CAAA,EAOa,MAAAklB,GAAa/hB,GAgBJ,CAhBI,IAAA8R,EAAA9R,EACxB,UAAAkF,EACA,cAAA+uB,EAAgB,KAChB,aAAAC,EAAe,KACf,SAAAC,EAAW,KACX,GAAIJ,EAAO,GACX,aAAAD,EAAe,GACf,YAAAwB,EAAc,GACd,UAAAna,EAAY,SACZ,OAAQuZ,EAAQf,GAChB,QAASmC,EAAS,EAClB,QAASC,EAAS,EAClB,WAAAnB,EAAa,EACb,UAAAC,EAAY,EACZ,qBAAAK,EAAuBljB,EArBzB,QAAA,EAO0BF,EAerBO,EAAAC,GAfqBR,EAerB,CAdH,WACA,gBACA,eACA,WACA,KACA,eACA,cACA,YACA,SACA,UACA,UACA,aACA,YACA,sBAAA,CAAA,EAGA,MAAMyjB,EAAavB,GAAYC,EAAeC,EAAcC,CAAQ,EAC9D,CAAE,QAAAK,EAAS,QAAAC,CAAQ,EAAIH,GAAWnZ,EAAWuZ,EAAOoB,EAAQC,CAAM,EAClEjB,EAAgBH,GAASZ,EAAMa,EAAYC,CAAS,EACpDW,EAAWR,GAAiBjB,EAAMc,EAAWX,EAAcC,EAAUe,CAAoB,EACzF9S,EAAoByR,GAAqB3uB,EAAU4uB,EAAc0B,CAAQ,EAE/E,OACEp5B,EAAA,cAAC45B,EAAA15B,UAAAA,GAAA,CACC,GAAKw4B,EACL,WAAaS,EACb,QAAUf,EACV,QAAUC,EACV,cAAgBa,CACXjjB,EAAAA,CAAAA,EAEH+P,CACJ,CAEJ,+fCOO,MAAM6T,GAAYj2B,GAYJ,CAZI,IAAA8R,EAAA9R,EACvB,UAAAkF,EACA,cAAA+uB,EAAgB,KAChB,aAAAC,EAAe,KACf,SAAAC,EAAW,KACX,GAAIJ,EAAO,GACX,aAAAD,EAAe,GACf,YAAAwB,EAAc,GACd,WAAAV,EAAa,EACb,UAAAC,EAAY,EACZ,qBAAAK,EAAuBljB,EA3DzB,QAAA,EAiDyBF,EAWpBO,EAAAC,GAXoBR,EAWpB,CAVH,WACA,gBACA,eACA,WACA,KACA,eACA,cACA,aACA,YACA,sBAGA,CAAA,EAAA,MAAMyjB,EAAavB,GAAYC,EAAeC,EAAcC,CAAQ,EAC9DW,EAAgBH,GAASZ,EAAMa,EAAYC,CAAS,EACpDW,EAAWR,GAAiBjB,EAAMc,EAAWX,EAAcC,EAAUe,CAAoB,EACzF9S,EAAoByR,GAAqB3uB,EAAU4uB,EAAc0B,CAAQ,EAE/E,OACEp5B,EAAA,cAAC85B,EAAAA,SAAA55B,GAAA,CACC,GAAKw4B,EACL,WAAaS,EACb,cAAgBD,CAAAA,EACXjjB,CAEH+P,EAAAA,CACJ,CAEJ,EC7EA,IAAAxB,GAAA,OAAA,eAAA6C,GAAA,OAAA,iBAAA/C,GAAA,OAAA,0BAAA7kB,GAAA,OAAA,sBAAAka,GAAA,OAAA,UAAA,eAAAogB,GAAA,OAAA,UAAA,qBAAA55B,GAAA,CAAAP,EAAAQ,EAAAC,IAAAD,KAAAR,EAAA4kB,GAAA5kB,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAC,CAAA,CAAA,EAAAT,EAAAQ,CAAA,EAAAC,EAAAkI,GAAA,CAAA3I,EAAAQ,IAAA,CAAA,QAAAC,KAAAD,IAAAA,EAAA,CAAA,GAAAuZ,GAAA,KAAAvZ,EAAAC,CAAA,GAAAF,GAAAP,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,GAAAZ,GAAA,QAAAY,KAAAZ,GAAAW,CAAA,EAAA25B,GAAA,KAAA35B,EAAAC,CAAA,GAAAF,GAAAP,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAAY,GAAA,CAAAZ,EAAAQ,IAAAinB,GAAAznB,EAAA0kB,GAAAlkB,CAAA,CAAA,EAAA8F,GAAA,CAAAtG,EAAAQ,IAAA,CAAA,IAAAC,EAAA,GAAA,QAAAd,KAAAK,EAAA+Z,GAAA,KAAA/Z,EAAAL,CAAA,GAAAa,EAAA,QAAAb,CAAA,EAAA,IAAAc,EAAAd,CAAA,EAAAK,EAAAL,CAAA,GAAA,GAAAK,GAAA,MAAAH,GAAA,QAAAF,KAAAE,GAAAG,CAAA,EAAAQ,EAAA,QAAAb,CAAA,EAAA,GAAAw6B,GAAA,KAAAn6B,EAAAL,CAAA,IAAAc,EAAAd,CAAA,EAAAK,EAAAL,CAAA,GAAA,OAAAc,CAAA,QAmDa2S,GAAWpP,GAaJ,CAbI,IAAA8R,EAAA9R,EACtB,CAAAo2B,YAAAA,EAAc,GACd,OAAAtnB,EAAS,GACT,SAAA5J,EACA,UAAAiW,EAAY,QACZ,WAAAkb,EAAa,GACb,KAAAnhB,EAAO,KACP,QAAAiJ,EACA,UAAAmY,EAAY,GACZ,YAAAC,EAAc,OACd,OAAAC,EAAS1lB,EAAAA,WAAW,QACpB,WAAA2lB,CA9DF,EAmDwB3kB,EAYnBO,EAAAC,GAZmBR,EAYnB,CAXH,cACA,SACA,WACA,YACA,aACA,OACA,UACA,YACA,cACA,SACA,eAGA,KAAM,CAAE,UAAA0C,CAAU,EAAIE,sBAAoB,UAAW,CAAE,KAAAQ,CAAK,CAAC,EACvDwhB,EAAczxB,GAClBC,EACA,CAAE,QAAAiZ,CAAQ,EACV,CAAChG,EAAQxc,IAAMA,IAAM,CACvB,EAEMmY,EAAiBjX,GAA2B,CAC5CA,EAAE,MAAQ,WACZA,EAAE,gBACFshB,EAAAA,MAEJ,EAEMwY,EAAgBC,GAAsB,CAC1C,MAAMC,EAAan0B,EAAAA,SAAS,QAASk0B,CAAS,EAC9C,OAAO,WAAWC,CAAU,EAAI,EAClC,EAEM1vB,EAAiBwvB,EAAazhB,CAAI,EAClCjO,EAAa0vB,EAAa,IAAI,EAC9BzvB,EACJqvB,IAAgB,OAAS,GAAM,OAAO,WAAa,OAAO,WAEtD,CAAE,gBAAAnvB,EAAiB,YAAA0vB,CAAY,EAAI/vB,GAAe,CACtD,WAAAE,EACA,WAAAC,EACA,eAAAC,EACA,eAAgBgU,CAClB,CAAC,EAED,OACE/e,EAAA,cAAC6X,MAAA,CACC,EAAI7M,EACJ,QAAU0H,GAAUunB,EAAa,UAAY,MAE7Cj6B,EAAAA,EAAA,cAAC0hB,SAAA,KACC1hB,EAAA,cAACw5B,GAAAt5B,GAAA,CACC,UAAY6e,EACZ,GAAKrM,EACL,MAAQ,CACN,OAAQ0F,EAAU,EAClB,MAAOpN,EACP,OAAAovB,CACF,CAAA,EACKC,CAELr6B,EAAAA,EAAA,cAAC0c,EAAAxc,KAAAA,GAAA,CACC,GAAKqL,GAAArL,GAAA,GAAKkY,CAAAA,EAAL,CAAgB,EAAGpN,CAAgB,CACxC,EAAA,UAAY0M,EACZ,SAAS,WACT,SAAS,SACT,UAAYqH,IAAc,OAAS,cAAgB,KAC9C9I,EAAAA,CAAAA,EAEH+jB,GAAeh6B,EAAA,cAAComB,GAAAlmB,GAAA,CAAkBw6B,EAAAA,CAAAA,CAAc,EAClD16B,EAAA,cAACujB,GAAAA,WAAA,CAAW,UAAY2W,CAAAA,EACtBl6B,EAAA,cAAC8zB,EAAAA,OAAA,CAAO,EAAE,OAAO,EAAE,OAAO,WAAW,QACjCwG,EAAAA,CACJ,CACF,CACF,CACF,CACF,CACF,CAEJ,ECnIA,IAAA55B,GAAA,OAAA,eAAAnB,GAAA,OAAA,sBAAAgJ,GAAA,OAAA,UAAA,eAAAoR,GAAA,OAAA,UAAA,qBAAAra,GAAA,CAAAM,EAAA,EAAA,IAAA,KAAAA,EAAAc,GAAAd,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAA,EAAA,CAAA,EAAA,EAAA8L,GAAA,CAAA9L,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,IAAA2I,GAAA,KAAA,EAAA,CAAA,GAAAjJ,GAAAM,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAoa,GAAA,KAAA,EAAA,CAAA,GAAAra,GAAAM,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAAA,CAAA,EAAAuG,GAAA,CAAAvG,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAAa,KAAAb,EAAA2I,GAAA,KAAA3I,EAAAa,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,GAAAb,GAAA,MAAAL,GAAA,QAAAkB,KAAAlB,GAAAK,CAAA,EAAA,EAAA,QAAAa,CAAA,EAAA,GAAAkZ,GAAA,KAAA/Z,EAAAa,CAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,OAAA,CAAA,EAYa,MAAAk6B,GAAiB/2B,GAIJ,CAJI,IAAA8R,EAAA9R,EAC5B,UAAAkF,EACA,QAAAiZ,CAdF,EAY8BrM,EAGzBO,EAAAC,GAHyBR,EAGzB,CAFH,WACA,YAGA,KAAM,CAAE,OAAAklB,CAAO,EAAItiB,EAAoB,oBAAA,UAAW,CAAA,CAAE,EAEpD,OACEtY,EAAA,cAAC0c,EAAAA,KAAAxc,GAAA,CAAK,GAAK06B,GAAc3kB,CACrB,EAAA,OAAOnN,GAAa,SAAW9I,EAAA,cAACyQ,GAAA,KAAK3H,CAAU,EAAQA,EACzD9I,EAAA,cAACkP,EAAAA,YAAA,CACC,aAAW,gBACX,SAAS,QACT,MAAQ,EACR,QAAU6S,CAAAA,CACZ,CACF,CAEJ,+fCnBO,MAAM8Y,GAAkBj3B,GAAwD,CAAxD,IAAA8R,EAAA9R,EAAE,CAAA0K,GAAAA,EAAK,CAAA,EAAI,SAAAxF,CAX1C,EAW+B4M,EAAwBO,EAAAC,GAAxBR,EAAwB,CAAtB,KAAS,UACxC,CAAA,EAAA,KAAM,CAAE,KAAAolB,CAAK,EAAIxiB,EAAAA,oBAAoB,UAAW,CAAE,CAAA,EAElD,OACEtY,EAAA,cAAC0c,EAAAxc,KAAAA,GAAA,CACC,GAAKqO,QAAMusB,EAAMxsB,CAAE,CAAA,EACd2H,CAEHnN,EAAAA,CACJ,CAEJ,qgBCbaiyB,GAAiBn3B,GAA8C,CAA9C,IAAA8R,EAAA9R,EAAE,CAAAkF,SAAAA,CAThC,EAS8B4M,EAAeO,EAAAC,GAAfR,EAAe,CAAb,UAAA,CAAA,EAC9B,KAAM,CAAE,OAAAslB,CAAO,EAAI1iB,EAAAA,oBAAoB,UAAW,EAAE,EAEpD,OACEtY,EAAA,cAAC0c,EAAAxc,KAAAA,GAAA,CAAK,GAAK86B,CAAAA,EAAc/kB,CACrBnN,EAAAA,CACJ,CAEJ,+fCTO,MAAM+D,GAASjJ,GAMP,CANO,IAAA8R,EAAA9R,EACpB,MAAAkV,EAAO,KACP,SAAA1V,EACA,KAAAyE,EACA,MAAA7G,CAZF,EAQsB0U,EAKjBO,EAAAC,GALiBR,EAKjB,CAJH,OACA,WACA,OACA,OAAA,CAAA,EAGA,OAAA1V,EAAA,cAACi7B,EAAAA,MAAA/6B,GAAA,CACC,KAAO4Y,EACP,GAAKjR,EACL,SAAWzE,EACX,MAAQpC,CAAAA,EACHiV,CACP,CAAA,CAAA,+fCDK,MAAMilB,GAAct3B,GAKP,CALO,IAAA8R,EAAA9R,EACzB,CAAA,UAAAmb,EAAY,MACZ,SAAAjW,EACA,KAAAjB,CAvBF,EAoB2B6N,EAItBO,EAAAC,GAJsBR,EAItB,CAHH,YACA,WACA,SAGA,OAAA1V,EAAA,cAACm7B,EAAAA,WAAAj7B,GAAA,CAAiB,KAAO2H,EAAO,GAAKA,CAAYoO,EAAAA,CAAAA,EAC/CjW,EAAA,cAACuf,EAAAA,MAAA,CAAM,UAAYR,CAAcjW,EAAAA,CAAU,CAC7C,CAAA,+fCbW,MAAAsyB,GAAkBxiB,EAAiD,WAAA,CAAChV,EAS9EY,IAAK,CATyE,IAAAkR,EAAA9R,EAC/E,CAAA,KAAAiE,EACA,MAAAgX,EACA,SAAA/V,EACA,UAAAiW,EACA,WAAAC,EACA,SAAArB,EACA,SAAUqC,EAAmBpK,EAAAA,QAtB/B,EAeiFF,EAQ5EO,EAAAC,GAR4ER,EAQ5E,CAPH,OACA,QACA,WACA,YACA,aACA,WACA,UAAA,CAAA,EAGA,OAAA1V,EAAA,cAAC6X,EAAA,IAAA,CAAI,EAAIgH,EAAQ,OAAS,aAAA,EACxB7e,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,EACX,IAAMnZ,CAEJ,EAAA,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAACk7B,GAAAh7B,GAAA,CACC,KAAO2H,EACP,SAAYpH,GAAM,CAAE2C,EAAS3C,CAAC,EAAGuf,EAAiBvf,CAAC,CAAE,EACrD,UAAYse,EACZ,MAAQ/d,EACR,cAAY,2BAAA,EACPiV,CAEHnN,EAAAA,CACJ,CAEJ,CACF,CACD,CAAA,EChDYuyB,GAAoB,IACpBC,GAAsB,GCK7BC,GAAW,CACf,OAAQ,CAAE,MAAO,KAAM,QAAS,CAAE,EAClC,SAAU,CAAE,MAAO,IAAM,QAAS,EAAI,CACxC,EAEaC,GAAe,CAAC,CAC3B,SAAA1yB,EACA,SAAAgmB,EAAW,GACX,UAAA2M,EAAYJ,GACZ,WAAAK,EAAaL,EACf,IACEr7B,EAAA,cAAC27B,UAAO,IAAP,CAAW,QAAU7M,EAAW,SAAW,WAAa,SAAWyM,EAAAA,EAClEv7B,EAAA,cAACm3B,EAAAA,OAAA,CAAO,KAAO,GAAGsE,MAAgB,EAAI,GAAGC,MAAAA,EACrC5yB,CACJ,CACF,ECrBF,IAAA4C,GAAA,OAAA,eAAAnM,GAAA,OAAA,sBAAAkM,GAAA,OAAA,UAAA,eAAA/K,GAAA,OAAA,UAAA,qBAAA6H,GAAA,CAAA3I,EAAAQ,EAAAC,IAAAD,KAAAR,EAAA8L,GAAA9L,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAC,CAAA,CAAA,EAAAT,EAAAQ,CAAA,EAAAC,EAAAf,GAAA,CAAAM,EAAAQ,IAAA,CAAA,QAAAC,KAAAD,IAAAA,EAAA,CAAA,GAAAqL,GAAA,KAAArL,EAAAC,CAAA,GAAAkI,GAAA3I,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,GAAAd,GAAA,QAAAc,KAAAd,GAAAa,CAAA,EAAAM,GAAA,KAAAN,EAAAC,CAAA,GAAAkI,GAAA3I,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAAO,GAAA,CAAAP,EAAAQ,IAAA,CAAA,IAAAC,EAAA,CAAA,EAAA,QAAAI,KAAAb,EAAA6L,GAAA,KAAA7L,EAAAa,CAAA,GAAAL,EAAA,QAAAK,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAAb,EAAAa,CAAA,GAAA,GAAAb,GAAA,MAAAL,GAAA,QAAAkB,KAAAlB,GAAAK,CAAA,EAAAQ,EAAA,QAAAK,CAAA,EAAA,GAAAC,GAAA,KAAAd,EAAAa,CAAA,IAAAJ,EAAAI,CAAA,EAAAb,EAAAa,CAAA,GAAA,OAAAJ,CAAA,EAQO,MAAMu7B,GAAiBh4B,GAIJ,CAJI,IAAA8R,EAAA9R,EAC5B,SAAAgd,EACA,UAAA7B,CAVF,EAQ8BrJ,EAGzBO,EAAAC,GAHyBR,EAGzB,CAFH,UACA,WAAA,CAAA,EAGA,KAAM,CAAE,MAAAmmB,CAAM,EAAIvjB,sBAAoB,WAAY,CAAA,CAAE,EAEpD,OACEtY,EAAA,cAACm3B,SAAAj3B,GAAA,CACC,GAAK27B,EACL,QAAUjb,GACL3K,CAELjW,EAAAA,EAAA,cAACqgB,EAAA,CAAW,aAAa,oBAAoBtB,IAAc,QAAQ,QAAQ,KAAK,IAC9E/e,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAKqP,IAAc,QAAUsO,oBAAoBD,EAAAA,gBAAmB,CAAA,CAC5E,CACF,CAEJ,+fCqEa,MAAAxa,GAAYhP,GAWJ,CAXI,IAAA8R,EAAA9R,EACvB,CAAAkF,SAAAA,EACA,WAAAgzB,EAAa,GACb,UAAAC,EAAY,GACZ,MAAOC,EAAkB,EACzB,SAAA54B,EAAWwS,EAAAA,SACX,UAAA6lB,EAAYJ,GACZ,WAAAK,EAAaL,GACb,QAAAnvB,EAAUovB,GACV,eAAAW,EAAiB,CAAA,CAxGnB,EA+FyBvmB,EAUpBO,EAAAC,GAVoBR,EAUpB,CATH,WACA,aACA,YACA,QACA,WACA,YACA,aACA,UACA,mBAGA,KAAM,CAAEwmB,EAAUC,CAAY,EAAI/6B,WAAS,EAAK,EAC1C,CAAEg7B,EAAgBC,CAAkB,EAAIj7B,EAAAA,SAAS,CAAC,EAClD,CAAEk7B,EAAaC,CAAe,EAAIn7B,EAAS,SAAA,CAAC,EAC5CuY,EAAI6iB,GAAe,eAAA,CAAC,EACpB,CAAE,MAAAC,EAAO,UAAArkB,CAAU,EAAIE,EAAoB,oBAAA,WAAY,CAAE,CAAA,EAEzDokB,EAAkBzzB,WAAS,QAAQH,CAAQ,EAC3C6zB,EAAmB1zB,EAAAA,SAAS,MAAMH,CAAQ,EAC1C8zB,EAAqBnB,EAAYvvB,EACjC2wB,EAAaD,EAAqBD,EAElCG,EAAer5B,EAAAA,OAAY,IAAI,EAErCpC,EAAAA,UAAU,IAAM,CACdg7B,EAAkBS,EAAa,QAAQ,WAAW,CACpD,EAAG,CAAE,CAAA,EAEL,MAAMC,EAAU,IAAM,EAAET,EAAcM,GAEhCI,EAAoB,IAAM,CAC9BT,EAAe,KAAK,IAAI,KAAK,MAAM5iB,EAAE,IAAI,EAAIijB,CAAkB,CAAC,CAAC,CACnE,EAEAv7B,EAAAA,UAAU,IAAM,CACd47B,GAAAA,QAAQtjB,EAAGojB,EAAAA,CAAS,EACpB35B,EAASk5B,CAAW,CACtB,EAAG,CAAEA,CAAY,CAAC,EAElBj7B,YAAU,IAAM,CACdk7B,EAAeP,CAAe,CAChC,EAAG,CAAEA,CAAgB,CAAC,EAEtB,MAAMkB,EAAwB,IAAM,CAClCX,EAAgB5Z,GACb2Z,IAAgBK,EAAmB,EAAI,EAAIha,EAAO,CACrD,CACF,EAEMwa,EAAuB,IAAM,CACjCZ,EAAgB5Z,GACb2Z,IAAgB,EAAIK,EAAmB,EAAIha,EAAO,CACrD,CACF,EAEA,OACE3iB,EAAA,cAAC6X,EAAAA,IAAA3X,GAAA,CACC,OAASg8B,EAAW,WAAa,OACjC,YAAc,IAAMC,EAAY,EAAI,EACpC,UAAY,IAAMA,EAAY,EAAK,EACnC,IAAMW,EACN,GAAK,IAAIV,EAAiBX,GAAa,MACvC,GAAKrjB,CACAnC,EAAAA,CAAAA,EAELjW,EAAA,cAAC27B,GAAAA,OAAO,IAAP,CACC,KAAK,IACL,MAAQ,CACN,MAAO,GAAGkB,MACV,OAAQ,OACR,EAAAljB,CACF,EACA,gBAAkB,CAAE,MAAO,EAAG,KAAM,EAAEkjB,EAAapB,EAAW,EAC9D,UAAYuB,GAEZh9B,EAAA,cAACic,EAAA/b,OAAAA,GAAA,CACC,QAAU,GAAGgM,MACb,MAAQ,GAAG2wB,MACX,EAAE,QACGZ,CAEHS,EAAAA,EAAgB,IAAI,CAACj0B,EAAOiC,IAC5B1K,EAAA,cAACw7B,GAAA,CACC,SAAW9wB,IAAU4xB,EACrB,UAAYb,EACZ,WAAaC,EACb,IAAM,iBAAiBhxB,KAErBjC,CACJ,CACD,CACH,CACF,EACEszB,GACA/7B,EAAA,cAACk7B,GAAA,CACC,SAAYx3B,GAAQ64B,EAAe,SAAS74B,EAAK,EAAE,CAAC,EACpD,MAAQ,GAAG44B,IACX,GAAKG,CAAAA,EAELz8B,EAAA,cAACic,SAAA,KACGygB,EAAgB,IAAI,CAAC3gB,EAAQxc,IAC7BS,EAAA,cAAC6M,GAAA,CACC,MAAQ,GAAGtN,IACX,KAAK,KACL,IAAM,kBAAkBA,GAAAA,CAC1B,CACD,CACH,CACF,EAEAu8B,GACA97B,EAAA,cAAAA,EAAA,SACEA,KAAAA,EAAA,cAAC47B,GAAA,CACC,UAAU,OACV,QAAUuB,EACV,KAAK,GACP,CAAA,EACAn9B,EAAA,cAAC47B,GAAA,CACC,UAAU,QACV,QAAUsB,EACV,MAAM,GAAA,CACR,CACF,CAEJ,CAEJ,ibC1Na,MAAAE,GACX9uB,GAEAC,EAAAA,MAAM,CACJ,UAAYjD,GAAcC,GAAArL,GAAA,CAAA,EACrBoL,CADqB,EAAA,CAExB,MAAO,OACP,MAAO,eACP,UAAW,QACb,CACA,EAAA,OAAQ,CAACA,EAAUpG,IAAWqG,GAAArL,GAAA,GACzBoL,CADyB,EAAA,CAE5B,WAAYpG,EAAM,WAAa,iCAC/B,QAAS,CACP,WAAY,iCACd,CACF,CAAA,EACA,eAAiBoG,GAAcC,GAAArL,GAAA,CAC1BoL,EAAAA,CAAAA,EAD0B,CAE7B,mBAAoB,+BACtB,CAAA,EACA,YAAcA,GAAcC,GAAArL,GAAA,GACvBoL,CAAAA,EADuB,CAE1B,MAAO,qBACT,CAAA,EACA,YAAcA,GAAcC,GAAArL,GAAA,CAAA,EACvBoL,CAAAA,EADuB,CAE1B,MAAO,yBACT,CAAA,EACA,WAAY,CAACA,EAAUpG,IAAU,CAjCrC,IAAAtB,EAkCM,MAAM4H,EAAatG,EAAM,KAAK,QAC1B,qCACAtB,EAAAsB,EAAM,KAAK,QAAX,KAAAtB,EAAoB0H,EAAS,QACjC,OAAOpL,GAAAqL,GAAArL,GAAA,GACFoL,CADE,EAAA,CAEL,QAASE,EACT,MAAOjF,GAAiBiF,CAAU,CAAA,CAAA,EAC/B8C,EAAG,UAAA,CAEV,EACA,SAAWhD,GAAcC,GAAArL,GAAA,CAAA,EACpBoL,CADoB,EAAA,CAEvB,QAAS,oBACX,CACF,CAAA,EAA8BgD,CAAE,wgBChClB+uB,GACd5oB,EACA,CACA,OAAOlG,EAAAA,MACL,CACE,KAAOxO,GACLC,EAAA,cAAC6X,EAAAA,IAAA,CAAI,cAAY,6BAAA,EACf7X,EAAA,cAACs9B,EAAAA,iBAAiB,KAAjBp9B,GAAA,CAAA,EAA2BH,CACxBA,EAAAA,EAAM,QACV,CACF,EAEF,kBAAoBA,GACjBA,EAAM,YAAY,KACjBC,EAAA,cAACs9B,mBAAiB,kBAAjBp9B,GAAA,CAAA,EAAwCH,GACvCC,EAAA,cAAC0P,EAAA,CAAK,GAAK3P,EAAM,YAAY,IAAA,CAAO,CACtC,EAEAC,EAAA,cAACs9B,EAAAA,iBAAiB,kBAAjBp9B,GAAA,GAAwCH,CAAQ,CAAA,EAErD,OAASA,GACNA,EAAM,YAAY,aACjBC,EAAA,cAACs9B,EAAAA,iBAAiB,OAAjBp9B,GAAA,CAA6BH,EAAAA,CAAAA,EAC1BA,EAAM,YAAY,aAAaA,EAAM,IAAI,CAC7C,EAEAC,EAAA,cAACs9B,EAAAA,iBAAiB,OAAjBp9B,GAAA,GAA6BH,EAAQ,EAE1C,oBACEA,GAECA,EAAM,YAAY,UACjBC,EAAA,cAACs9B,EAAAA,iBAAiB,oBAAjBp9B,GAAA,GAA0CH,CACvCA,EAAAA,EAAM,YAAY,UAAUA,EAAM,IAAI,CAC1C,EAEAC,EAAA,cAACs9B,EAAAA,iBAAiB,oBAAjBp9B,GAAA,CAAA,EAA0CH,EAAQ,EAEvD,QAAU6D,GAGiC,CAHjC,IAAA8R,EAAA9R,EACR,CAAA,SAAAkF,CAvDR,EAsDgB4M,EAEL3V,EAAAmW,GAFKR,EAEL,CADH,aAGC,OAAA3V,EAAM,YAAY,cACjBC,EAAA,cAACs9B,EAAiB,iBAAA,QAAjBp9B,GAAA,CAAA,EAA8BH,CAAAA,EAC7BC,EAAA,cAACic,EAAAA,OAAA,CAAO,EAAE,OAAO,GAAG,GAChBlc,EAAAA,EAAM,YAAY,cACpBC,EAAA,cAACic,SAAA,CAAO,EAAE,OAAO,QAAQ,eAAA,EACrBnT,CACJ,CACF,CACF,EAEA9I,EAAA,cAACs9B,mBAAiB,QAAjBp9B,GAAA,GAA8BH,CAC3B+I,EAAAA,CACJ,EAEN,EACA2L,GAAc,EAChB,CACF,CC3EA,IAAA8oB,GAAA,OAAA,eAAA59B,GAAA,OAAA,sBAAAE,GAAA,OAAA,UAAA,eAAAoG,GAAA,OAAA,UAAA,qBAAAuP,GAAA,CAAA,EAAA,EAAA5V,IAAA,KAAA,EAAA29B,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA39B,CAAA,CAAA,EAAA,EAAA,CAAA,EAAAA,EAAA2kB,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA3kB,KAAA,IAAA,EAAA,IAAAC,GAAA,KAAA,EAAAD,CAAA,GAAA4V,GAAA,EAAA5V,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAD,GAAA,QAAAC,KAAAD,GAAA,CAAA,EAAAsG,GAAA,KAAA,EAAArG,CAAA,GAAA4V,GAAA,EAAA5V,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAoJ,GAAA,CAAA,EAAA,IAAA,CAAA,IAAApJ,EAAA,CAAA,EAAA,QAAA,KAAA,EAAAC,GAAA,KAAA,EAAA,CAAA,GAAA,EAAA,QAAA,CAAA,EAAA,IAAAD,EAAA,CAAA,EAAA,EAAA,CAAA,GAAA,GAAA,GAAA,MAAAD,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAA,EAAA,QAAA,CAAA,EAAA,GAAAsG,GAAA,KAAA,EAAA,CAAA,IAAArG,EAAA,CAAA,EAAA,EAAA,CAAA,GAAA,OAAAA,CAAA,EAgBa,MAAA49B,GAAY5kB,EACvB,WAAA,CAA2DhV,EAmBzDY,IACG,CApBsD,IAAAkR,EAAA9R,EACzD,gBAAA65B,EAAiB,CACjB,EAAA,QAAAl6B,EACA,aAAAm6B,EAAe,KACf,UAAAC,EAAY,KACZ,GAAArvB,EAAK,CAAA,EACL,kBAAAsvB,EAAoB,IACpB,YAAaC,EAAmB,KAChC,mBAAAC,EAAqB,GACrB,kBAAAC,EAAoB,GACpB,SAAA36B,EAAWwS,EAAAA,SACX,MAAAvS,EAAQuS,EAAAA,SACR,SAAAtS,EAAWsS,WACX,cAAeG,EACf,MAAA/U,EACA,oBAAAg9B,EAAsBpoB,WACtB,KAAA2D,EAAO0kB,WAjCX,EAiB6DvoB,EAiBtDO,EAAAC,GAjBsDR,EAiBtD,CAhBH,iBACA,UACA,eACA,YACA,KACA,oBACA,cACA,qBACA,oBACA,WACA,QACA,WACA,cACA,QACA,sBACA,SAKA,KAAM,CAAEwoB,EAAUC,CAAY,EAAI/8B,WAASq8B,CAAc,EACnD,CAAEW,EAAaC,CAAe,EAAIj9B,EAAAA,SAAS,EAAE,EAC7Ck9B,EAAmBnR,UACvB,IAAM5jB,GAA+Bq0B,CAAiB,EACtD,CAAEA,CAAkB,CACtB,EACMhnB,EAAezT,GAAyB,CAC5C,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,MAAOyZ,KAAG,MAAOhc,CAAK,EAAIA,EAAe,CAC3C,CAAA,CAAC,EAEKu9B,EAAmBpR,EACvB,QAAA,IAAMkQ,GAAiB,EACvB,CACF,CAAA,EAEMmB,EAAgBtX,GAChB,OAAOuW,GAAmB,UAAkB,CACzCgB,EAAAA,SACJtnB,GACCunB,EAAK,KAAA,IAAI,OAAOvX,UAAQD,CAAK,EAAG,GAAG,EAAGC,EAAAA,QAAQhQ,EAAO,KAAK,CAAC,EAC7DsmB,CACF,EAEIkB,EAAa,MAAOzX,GAAkB,CAC1C,MAAM0X,EAAaf,EACf,MAAMA,EAAiB3W,CAAK,EAC5BsX,EAAatX,CAAK,EACtB,OAAAiX,EAAaxb,GAGP,OAAOA,GAAS,UAAkBA,EAC/Bic,CACR,EAEMA,CACT,EAEMC,EAAcP,EAAiB,MACnCpX,EACAjiB,IACG,CACH,MAAM25B,EAAa,MAAMD,EAAWzX,CAAK,EACzC,OAAAjiB,EAAS25B,CAAU,EACZ,CACT,CAAA,CAAC,EAEKE,EAAgB,CAAC3pB,EAAW,CAAE,OAAA4pB,CAAO,IAAuB,EAC5DjB,GAAsBiB,IAAW,eACnCV,EAAelpB,CAAC,EAChB6oB,EAAoB7oB,CAAC,EACjBA,IAAM,IACRgpB,EAAYV,CAAc,EAGhC,EAEA,OACEz9B,EAAA,cAAC6X,EAAAA,IAAA,CAAI,EAAE,OAAO,cAAc9B,CAC1B/V,EAAAA,EAAA,cAACg/B,cAAA9+B,GAAA,CACC,aAAe,GACf,eAAiBg+B,EACjB,YAAcW,EACd,SAAWjoB,EACX,YAAY,YACZ,aAAewmB,GAAgB9uB,CAAE,EACjC,QAAU/K,EACV,eAAiB,GACjB,oBAAoB,QACpB,oBAAsB,GACtB,kBAAoBw6B,EACpB,YAAc,GACd,cAAgBe,EAChB,WAAaV,EACb,aAAeV,EACf,UAAYC,EACZ,KAAOpkB,EACP,WAAaglB,EACb,IAAM/5B,EACN,MAAQxD,GACHiV,CACP,CAAA,CACF,CAEJ,CACF,+fClHA,MAAMgpB,GAAqB,CAA4Dr7B,EAYzDY,IAAgC,CAZyB,IAAAkR,EAAA9R,EACrF,MAAAiE,EACA,MAAAgX,EACA,UAAAE,EAAY,SACZ,QAAAxb,EACA,WAAAyb,EACA,SAAArB,EACA,YAAA+P,EAAc,GACd,SAAU1N,EAAmBpK,WAC7B,iBAAAigB,EACA,kBAAAC,CAtBF,EAYuFpgB,EAWlFO,EAAAC,GAXkFR,EAWlF,CAVH,OACA,QACA,YACA,UACA,aACA,WACA,cACA,WACA,mBACA,mBAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,kBAAoB,GACpB,SAAWrB,EACX,IAAMnZ,CAEJ,EAAA,CAAC,CAAE,MAAAxD,EAAO,SAAAoC,CAAS,IACnBpD,EAAA,cAACic,SAAA,CAAO,EAAE,MAAA,EACRjc,EAAA,cAAC41B,GAAA,CACC,iBAAmBC,EACnB,kBAAoBC,GAEpB91B,EAAA,cAACw9B,GAAAt9B,GAAA,CACC,KAAO2H,EACP,QAAUtE,EACV,SAAW,CAACsT,EAAqBlT,IAAU,CACzCP,EACEG,EACIsT,EACAA,EAAO,KACb,EACAmJ,EAAiBnJ,EAAmBlT,CAAK,CAC3C,EACA,MAAQ3C,CAAAA,EACHiV,EACP,CACF,EACAjW,EAAA,cAACqgB,EAAA,CACC,aAAa,GAAGxY,iBAChB,QAAQ,SACR,KAAK,KACL,SAAS,KACT,OAASkL,EAAAA,QAAQ/R,CAAK,GAAK,CAAC0sB,EAC5B,QAAU,IAAMtqB,EAAS,CAAA,CAAE,EAC3B,KAAOpD,EAAA,cAAC0P,EAAA,CAAK,GAAK4e,cAAc,CAClC,CAAA,CACF,CAEJ,CAGK,EAAM4Q,GAAiBtmB,EAAAA,WAAWqmB,EAAkB,ECrE3D,IAAAp/B,GAAA,OAAA,eAAAH,GAAA,OAAA,sBAAAe,GAAA,OAAA,UAAA,eAAAhB,GAAA,OAAA,UAAA,qBAAAH,GAAA,CAAAc,EAAAR,EAAAS,IAAAT,KAAAQ,EAAAP,GAAAO,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAgnB,GAAA,CAAAjnB,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,CAAA,GAAAa,GAAA,KAAAb,EAAAS,CAAA,GAAAf,GAAAc,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAX,GAAA,QAAAW,KAAAX,GAAAE,CAAA,EAAAH,GAAA,KAAAG,EAAAS,CAAA,GAAAf,GAAAc,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAYO,MAAMiO,GAAetO,GAC1BC,EAAA,cAACm/B,aAAAj/B,GAAA,GAAgBH,CAAQ,CAAA,ECb3B,IAAAR,GAAA,OAAA,eAAAE,GAAA,OAAA,sBAAAC,GAAA,OAAA,UAAA,eAAAJ,GAAA,OAAA,UAAA,qBAAA0J,GAAA,CAAA5I,EAAAK,EAAAb,IAAAa,KAAAL,EAAAb,GAAAa,EAAAK,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAQ,EAAAK,CAAA,EAAAb,EAAA8L,GAAA,CAAAtL,EAAAK,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAf,GAAA,KAAAe,EAAAb,CAAA,GAAAoJ,GAAA5I,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAH,GAAA,QAAAG,KAAAH,GAAAgB,CAAA,EAAAnB,GAAA,KAAAmB,EAAAb,CAAA,GAAAoJ,GAAA5I,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAAA8F,GAAA,CAAA9F,EAAAK,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAc,KAAAN,EAAAV,GAAA,KAAAU,EAAAM,CAAA,GAAAD,EAAA,QAAAC,CAAA,EAAA,IAAAd,EAAAc,CAAA,EAAAN,EAAAM,CAAA,GAAA,GAAAN,GAAA,MAAAX,GAAA,QAAAiB,KAAAjB,GAAAW,CAAA,EAAAK,EAAA,QAAAC,CAAA,EAAA,GAAApB,GAAA,KAAAc,EAAAM,CAAA,IAAAd,EAAAc,CAAA,EAAAN,EAAAM,CAAA,GAAA,OAAAd,CAAA,QA2Ea2N,GAAMqL,EAAAA,WAAsC,CAAChV,EAMvDY,IAAQ,CAN+C,IAAAkR,EAAA9R,EACxD,CAAA,SAAAkF,EACA,QAAAoP,EAAU,QACV,QAAA1K,EACA,YAAAN,CA/EF,EA2E0DwI,EAKrDO,EAAAC,GALqDR,EAKrD,CAJH,WACA,UACA,UACA,aAGA,CAAA,EAAA,MAAMpI,EAAezD,KAErB,OACE7J,EAAA,cAACo/B,EAAAA,IAAAl/B,GAAA,CACC,QAAUsN,EACV,YAAcN,EACd,IAAM1I,EACN,QAAU0T,EACV,aAAe5K,CAAAA,EACV2I,CAEHnN,EAAAA,CACJ,CAEJ,CAAC,EC5FYu2B,GAAoB,CAAC,CAChC,iBAAAC,CACF,IACEt/B,EAAA,cAACuN,GAAA,CAAI,QAAQ,SAAS,KAAK,aAAc,EAAA,IACpC+xB,CACL,+fCoBW,MAAAC,GAAY37B,GAMJ,CANI,IAAA8R,EAAA9R,EACvB,CAAAkF,SAAAA,EACA,IAAAxE,EAAM,EAAA,EACN,QAAA4H,EAAU,IACV,kBAAAmzB,EAAoBG,EAjCtB,EA6ByB9pB,EAKpBO,EAAAC,GALoBR,EAKpB,CAJH,WACA,MACA,UACA,mBAGA,CAAA,EAAA,KAAM,CAAE4pB,EAAkBG,CAAoB,EAAIr+B,WAAS,CAAC,EACtD,CAAE,KAAAqZ,EAAM,aAAAqiB,CAAa,EAAIthB,GAAiB,EAEhD,OACExb,EAAA,cAACic,EAAA/b,OAAAA,GAAA,CACC,QAAQ,qBACR,IAAM48B,EACN,SAAS,QAAA,EACJ7mB,CAELjW,EAAAA,EAAA,cAACic,SAAA,CAAO,QAAU/P,CAAAA,EAChBlM,EAAA,cAACsa,GAAA,CAAc,IAAMhW,EAAM,SAAWm7B,EAAsB,KAAOhlB,CAAAA,EAC/D3R,CACJ,CACF,EACEw2B,EAAmB,GACnBt/B,EAAA,cAACq/B,EAAA,CAAkB,iBAAmBC,CAAmB,CAAA,CAE7D,CAEJ,ECxDA,IAAA/2B,GAAA,OAAA,eAAAlI,GAAA,OAAA,sBAAAX,GAAA,OAAA,UAAA,eAAAgM,GAAA,OAAA,UAAA,qBAAAnM,GAAA,CAAAa,EAAAR,EAAAH,IAAAG,KAAAQ,EAAAmI,GAAAnI,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAH,CAAA,CAAA,EAAAW,EAAAR,CAAA,EAAAH,EAAAH,GAAA,CAAAc,EAAAR,IAAA,CAAA,QAAAH,KAAAG,IAAAA,EAAA,CAAA,GAAAF,GAAA,KAAAE,EAAAH,CAAA,GAAAF,GAAAa,EAAAX,EAAAG,EAAAH,CAAA,CAAA,EAAA,GAAAY,GAAA,QAAAZ,KAAAY,GAAAT,CAAA,EAAA8L,GAAA,KAAA9L,EAAAH,CAAA,GAAAF,GAAAa,EAAAX,EAAAG,EAAAH,CAAA,CAAA,EAAA,OAAAW,CAAA,EAAA+F,GAAA,CAAA/F,EAAAR,IAAA,CAAA,IAAAH,EAAA,CAAA,EAAA,QAAAiB,KAAAN,EAAAV,GAAA,KAAAU,EAAAM,CAAA,GAAAd,EAAA,QAAAc,CAAA,EAAA,IAAAjB,EAAAiB,CAAA,EAAAN,EAAAM,CAAA,GAAA,GAAAN,GAAA,MAAAC,GAAA,QAAAK,KAAAL,GAAAD,CAAA,EAAAR,EAAA,QAAAc,CAAA,EAAA,GAAAgL,GAAA,KAAAtL,EAAAM,CAAA,IAAAjB,EAAAiB,CAAA,EAAAN,EAAAM,CAAA,GAAA,OAAAjB,CAAA,EAoBO,MAAMigC,GAAW9mB,EAA2C,WAAA,CAAChV,EAMjEY,IAAK,CAN4D,IAAAkR,EAAA9R,EAClE,MAAAkV,EAAO,KACP,WAAA6mB,EACA,UAAAC,EAAY,UACZ,QAAApyB,CAxBF,EAoBoEkI,EAK/DO,EAAAC,GAL+DR,EAK/D,CAJH,OACA,aACA,YACA,SAAA,CAAA,EAGA,OAAA1V,EAAA,cAACuN,GAAArN,GAAA,CACC,IAAMsE,EACN,OAASm7B,EAAa,WAAa,OACnC,QAAUnyB,IAAYmyB,EAAa,WAAa,QAChD,KAAO7mB,EACP,KAAK,aAAA,EACA7C,GAELjW,EAAA,cAAC6/B,WAAA,KAAWD,CAAW,EACvB5/B,EAAA,cAAC8/B,EAAAA,aAAA,KACC9/B,EAAA,cAAC0P,EAAA,CAAK,GAAKqwB,iBAAkB,CAAA,CAC/B,CACF,CAEF,CAAA,ECzCA,IAAAlmB,GAAA,OAAA,eAAArZ,GAAA,OAAA,iBAAA8jB,GAAA,OAAA,0BAAA/b,GAAA,OAAA,sBAAApI,GAAA,OAAA,UAAA,eAAAknB,GAAA,OAAA,UAAA,qBAAAlhB,GAAA,CAAA/F,EAAA,EAAAR,IAAA,KAAAQ,EAAAyZ,GAAAzZ,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAR,CAAA,CAAA,EAAAQ,EAAA,CAAA,EAAAR,EAAAc,GAAA,CAAAN,EAAA,IAAA,CAAA,QAAAR,KAAA,IAAA,EAAA,CAAA,GAAAO,GAAA,KAAA,EAAAP,CAAA,GAAAuG,GAAA/F,EAAAR,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAA2I,GAAA,QAAA3I,KAAA2I,GAAA,CAAA,EAAA8e,GAAA,KAAA,EAAAznB,CAAA,GAAAuG,GAAA/F,EAAAR,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAAAT,GAAA,CAAAS,EAAA,IAAAI,GAAAJ,EAAAkkB,GAAA,CAAA,CAAA,EAAA7kB,GAAA,CAAAW,EAAA,IAAA,CAAA,IAAAR,EAAA,CAAA,EAAA,QAAAa,KAAAL,EAAAD,GAAA,KAAAC,EAAAK,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAAb,EAAAa,CAAA,EAAAL,EAAAK,CAAA,GAAA,GAAAL,GAAA,MAAAmI,GAAA,QAAA9H,KAAA8H,GAAAnI,CAAA,EAAA,EAAA,QAAAK,CAAA,EAAA,GAAA4mB,GAAA,KAAAjnB,EAAAK,CAAA,IAAAb,EAAAa,CAAA,EAAAL,EAAAK,CAAA,GAAA,OAAAb,CAAA,EA8Ca,MAAAogC,GAAap8B,GAMJ,CANI,IAAA8R,EAAA9R,EACxB,CAAAg8B,UAAAA,EACA,SAAA92B,EACA,YAAAm3B,EAAc,GACd,cAAetL,CAlDjB,EA8C0Bjf,EAKrBO,EAAAC,GALqBR,EAKrB,CAJH,YACA,WACA,cACA,aAGA,CAAA,EAAA,MAOI9R,EAAAs8B,EAAAA,aAAahgC,GAAA,CAAK+V,EAAAA,CAAAA,CAAM,EAN1B,CAAA,WAAAkqB,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,WAAAX,CA1DJ,EA4DM/7B,EADC7D,EAAAmW,GACDtS,EADC,CALH,aACA,YACA,aACA,YACA,YAAA,CAAA,EAGF,GAAI,CAACw8B,EACH,OACEpgC,EAAA,cAAC0/B,GAAA,CAAS,UAAYE,CAAAA,CAAY,EAItC,MAAMW,EAAyB53B,EAAAA,eAAeG,CAAQ,EAClDF,EAAaE,aAAAA,EAAyB,CACtC,OAAQ62B,EAAa,WAAa,MACpC,CAAC,EACC72B,EAEE03B,EAAqB,CAACP,GAAeG,EAE3C,OACEpgC,EAAA,cAAC6X,MAAA3X,GAAAqL,GAAArL,GAAA,CACC,IAAMmgC,CAAAA,EACDF,GAFN,CAGC,UAAYM,GAAI,IAAA,UAAU,SAASH,CAAS,EAC5C,cAAgBp5B,GAChB,SAAW+4B,EAAc,GAAK,EAC9B,EAAE,cACF,cAActL,CAAAA,CAAAA,EACT6L,CAEH,EAAA,OAAOD,GAA2B,WAChCA,EAAuBH,EAAWrgC,CAAK,EACvCwgC,GACFvgC,EAAA,cAAC0/B,GAAA,CAAS,WAAaC,EAAa,UAAYC,CAAAA,CAAY,CAEhE,CAEJ,EC7FA,IAAAjmB,GAAA,OAAA,eAAAlZ,GAAA,OAAA,sBAAAlB,GAAA,OAAA,UAAA,eAAAG,GAAA,OAAA,UAAA,qBAAAgB,GAAA,CAAAd,EAAAN,EAAA,IAAAA,KAAAM,EAAA+Z,GAAA/Z,EAAAN,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAM,EAAAN,CAAA,EAAA,EAAA+nB,GAAA,CAAAznB,EAAAN,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAA,CAAA,GAAAoB,GAAAd,EAAA,EAAAN,EAAA,CAAA,CAAA,EAAA,GAAAmB,GAAA,QAAA,KAAAA,GAAAnB,CAAA,EAAAI,GAAA,KAAAJ,EAAA,CAAA,GAAAoB,GAAAd,EAAA,EAAAN,EAAA,CAAA,CAAA,EAAA,OAAAM,CAAA,EAAAH,GAAA,CAAAG,EAAAN,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAe,KAAAT,EAAAL,GAAA,KAAAK,EAAAS,CAAA,GAAAf,EAAA,QAAAe,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAT,EAAAS,CAAA,GAAA,GAAAT,GAAA,MAAAa,GAAA,QAAAJ,KAAAI,GAAAb,CAAA,EAAAN,EAAA,QAAAe,CAAA,EAAA,GAAAX,GAAA,KAAAE,EAAAS,CAAA,IAAA,EAAAA,CAAA,EAAAT,EAAAS,CAAA,GAAA,OAAA,CAAA,EA0Ca,MAAAqgC,GAAa98B,GAIJ,CAJI,IAAA8R,EAAA9R,EACxB,CAAA,SAAAkF,EACA,cAAeiN,CA5CjB,EA0C0BL,EAGrBO,EAAAC,GAHqBR,EAGrB,CAFH,WACA,gBAGA,MAAiC9R,EAAA+8B,EAAAA,aAAazgC,GAAA,CACzC+V,EAAAA,CAAAA,CACJ,EAFO,CAAA,WAAAoqB,CA/CV,EA+CmCz8B,EAAV7D,EAAAmW,GAAUtS,EAAV,CAAf,YAAA,CAAA,EAGR,OACE5D,EAAA,cAAC6X,EAAAA,IAAA,CAAI,IAAMwoB,EAAa,cAActqB,CAAAA,EAClC,OAAOjN,GAAa,WAClBA,EAAS/I,CAAK,EACd+I,GAAY9I,EAAA,cAACm3B,EAAAA,OAAA,KAAO,WAAS,CACnC,CAEJ,ECzDA,IAAAhxB,GAAA,OAAA,eAAA1F,GAAA,OAAA,sBAAAgL,GAAA,OAAA,UAAA,eAAAhM,GAAA,OAAA,UAAA,qBAAAH,GAAA,CAAAc,EAAAR,EAAAS,IAAAT,KAAAQ,EAAA+F,GAAA/F,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAK,GAAA,CAAAN,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,CAAA,GAAA6L,GAAA,KAAA7L,EAAAS,CAAA,GAAAf,GAAAc,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAI,GAAA,QAAAJ,KAAAI,GAAAb,CAAA,EAAAH,GAAA,KAAAG,EAAAS,CAAA,GAAAf,GAAAc,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAaO,MAAMwgC,GAAY7gC,GACvBC,EAAA,cAAC6gC,kBAAA3gC,GAAA,GAAqBH,CAAQ,CAAA,olBCGzB,MAAM+gC,GAAgBl9B,GAOJ,CAPI,IAAA8R,EAAA9R,EAC3B,CAAA,UAAAg8B,EAAY,UACZ,kBAAAmB,EAAoB,IACpB,SAAAj4B,EACA,YAAAm3B,EAAc,GACd,cAAetL,CAtBjB,EAiB6Bjf,EAMxBO,EAAAC,GANwBR,EAMxB,CALH,YACA,oBACA,WACA,cACA,aAGA,CAAA,EAAA,MAQI9R,EAAAo9B,cAAY9gC,GAAA,CAAA,EAAK+V,CAAAA,CAAM,EAPzB,CAAA,WAAAkqB,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,WAAAnH,EACA,WAAAwG,CA/BJ,EAiCM/7B,EADC7D,EAAAmW,GACDtS,EADC,CANH,aACA,YACA,aACA,YACA,aACA,YAAA,CAAA,EAGF,GAAI,CAACw8B,EACH,OACEpgC,EAAA,cAAC0/B,GAAA,CAAS,UAAYE,CAAAA,CAAY,EAItC,MAAMqB,EAAoBx9B,EAAAA,OAAO,CAAC,EAC5By9B,EAAaz9B,SAAO,EAAK,EACzB,CAAE,cAAA2B,EAAe,UAAA2b,CAAU,EAAIqf,EAC/Be,EAAqB1gC,GAA6B,CAClCA,EAAE,UAAYwgC,EAAkB,QAClCF,GAChBG,EAAW,QAAU,GACrB97B,EAAc3E,CAAC,GAEfygC,EAAW,QAAU,GAEvBD,EAAkB,QAAUxgC,EAAE,SAChC,EAEMiX,EAAiBjX,GAAoC,CACrDygC,EAAW,SACbngB,EAAUtgB,CAAC,CAEf,EAEM2gC,EAAQ,CACZ,UAAWX,GAAAA,IAAI,UAAU,SAASH,CAAS,EAC3C,WAAAnH,CACF,EAEMoH,EAAyB53B,EAAAA,eAAeG,CAAQ,EAClDF,EAAAA,aAAaE,EAAyB,CACtC,OAAQ62B,EAAa,WAAa,MACpC,CAAC,EACC72B,EAEE03B,EAAqB,CAACP,GAAe,CACzC,cAAekB,EACf,UAAWzpB,CACb,EAEA,OACE1X,EAAA,cAAC6X,MAAA3X,GAAAqL,GAAArL,GAAA,CACC,IAAMmgC,EACN,GAAKe,CACAjB,EAAAA,CAAAA,EAHN,CAIC,cAAgBj5B,GAChB,SAAW+4B,EAAc,GAAK,EAC9B,aAAa,cACb,cAActL,CACT6L,CAAAA,EAAAA,CAAAA,GAGH,OAAOD,GAA2B,WAC9BA,EAAuBH,EAAWrgC,CAAK,EACvCwgC,IACDvgC,EAAA,cAAC0/B,GAAA,CAAS,WAAaC,EAAa,UAAYC,CAAY,CAAA,CAEnE,CAEJ,EC/FA,IAAAn/B,GAAA,OAAA,eAAAyF,GAAA,OAAA,sBAAA7F,GAAA,OAAA,UAAA,eAAAd,GAAA,OAAA,UAAA,qBAAAG,GAAA,CAAAU,EAAAM,EAAAd,IAAAc,KAAAN,EAAAK,GAAAL,EAAAM,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAd,CAAA,CAAA,EAAAQ,EAAAM,CAAA,EAAAd,EAAA2I,GAAA,CAAAnI,EAAAM,IAAA,CAAA,QAAAd,KAAAc,IAAAA,EAAA,IAAAL,GAAA,KAAAK,EAAAd,CAAA,GAAAF,GAAAU,EAAAR,EAAAc,EAAAd,CAAA,CAAA,EAAA,GAAAsG,GAAA,QAAAtG,KAAAsG,GAAAxF,CAAA,EAAAnB,GAAA,KAAAmB,EAAAd,CAAA,GAAAF,GAAAU,EAAAR,EAAAc,EAAAd,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAAAinB,GAAA,CAAAjnB,EAAAM,IAAA,CAAA,IAAAd,EAAA,CAAA,EAAA,QAAAH,KAAAW,EAAAC,GAAA,KAAAD,EAAAX,CAAA,GAAAiB,EAAA,QAAAjB,CAAA,EAAA,IAAAG,EAAAH,CAAA,EAAAW,EAAAX,CAAA,GAAA,GAAAW,GAAA,MAAA8F,GAAA,QAAAzG,KAAAyG,GAAA9F,CAAA,EAAAM,EAAA,QAAAjB,CAAA,EAAA,GAAAF,GAAA,KAAAa,EAAAX,CAAA,IAAAG,EAAAH,CAAA,EAAAW,EAAAX,CAAA,GAAA,OAAAG,CAAA,EAgBa,MAAAyhC,GAAcz9B,GAAgD,CAAhD,IAAA8R,EAAA9R,EAAE,CAAA,KAAA2V,EAAM,WAAAomB,CAhBnC,EAgB2BjqB,EAAuBO,EAAAC,GAAvBR,EAAuB,CAArB,OAAM,YAAA,CAAA,EACjC,OAAA1V,EAAA,cAAC0P,EAAAxP,GAAA,CACC,GAAKqZ,GAAQ+nB,EAAAA,QACb,OAAS3B,EAAa,WAAa,QAC9B1pB,CACP,CAAA,CAAA,ECrBF,IAAAsrB,GAAA,OAAA,eAAA9hC,GAAA,OAAA,sBAAAF,GAAA,OAAA,UAAA,eAAA8nB,GAAA,OAAA,UAAA,qBAAA3nB,GAAA,CAAAE,EAAAN,EAAA,IAAAA,KAAAM,EAAA2hC,GAAA3hC,EAAAN,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAM,EAAAN,CAAA,EAAA,EAAAoM,GAAA,CAAA9L,EAAAN,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAA,CAAA,GAAAI,GAAAE,EAAA,EAAAN,EAAA,CAAA,CAAA,EAAA,GAAAG,GAAA,QAAA,KAAAA,GAAAH,CAAA,EAAA+nB,GAAA,KAAA/nB,EAAA,CAAA,GAAAI,GAAAE,EAAA,EAAAN,EAAA,CAAA,CAAA,EAAA,OAAAM,CAAA,EAAA2I,GAAA,CAAA3I,EAAAN,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAe,KAAAT,EAAAL,GAAA,KAAAK,EAAAS,CAAA,GAAAf,EAAA,QAAAe,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAT,EAAAS,CAAA,GAAA,GAAAT,GAAA,MAAAH,GAAA,QAAAY,KAAAZ,GAAAG,CAAA,EAAAN,EAAA,QAAAe,CAAA,EAAA,GAAAgnB,GAAA,KAAAznB,EAAAS,CAAA,IAAA,EAAAA,CAAA,EAAAT,EAAAS,CAAA,GAAA,OAAA,CAAA,EAsBO,MAAMmhC,GAAY59B,GAAwD,CAAxD,IAAA8R,EAAA9R,EAAE,IAAA0K,EAAK,GAAI,KAAAzG,EAAM,SAAAiB,CAtB1C,EAsByB4M,EAA8BO,EAAAC,GAA9BR,EAA8B,CAA5B,KAAS,OAAM,UACxC,CAAA,EAAA,KAAM,CAAE,SAAA+rB,CAAS,EAAInpB,EAAAA,oBAAoB,cAAe,CAAE,GAAAhK,CAAG,CAAC,EAC9D,OACEtO,EAAA,cAAC0gC,GAAA,CAAU,GAAK74B,CAAAA,EACd7H,EAAA,cAACuf,QAAArf,GAAA,CAAM,GAAKuhC,CAAAA,EAAgBxrB,CACxBnN,EAAAA,CACJ,CACF,CAEJ,EC/BA,IAAA6Q,GAAA,OAAA,eAAArE,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAAjW,GAAA,OAAA,sBAAAqtB,GAAA,OAAA,UAAA,eAAAntB,GAAA,OAAA,UAAA,qBAAA+kB,GAAA,CAAA,EAAA,EAAA3kB,IAAA,KAAA,EAAA+Z,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA/Z,CAAA,CAAA,EAAA,EAAA,CAAA,EAAAA,EAAAsG,GAAA,CAAA,EAAA,IAAA,CAAA,QAAAtG,KAAA,IAAA,EAAA,CAAA,GAAA+sB,GAAA,KAAA,EAAA/sB,CAAA,GAAA2kB,GAAA,EAAA3kB,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAN,GAAA,QAAAM,KAAAN,GAAA,CAAA,EAAAE,GAAA,KAAA,EAAAI,CAAA,GAAA2kB,GAAA,EAAA3kB,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAO,GAAA,CAAA,EAAA,IAAAmV,GAAA,EAAAC,GAAA,CAAA,CAAA,EAuFO,SAASmsB,GAAsD,CACpE,MAAAl+B,EACA,SAAAJ,EAAW,IAAM,CAAA,EACjB,SAAA0F,EACA,mBAAA64B,EACA,QAAAC,CACF,EAA6B,CAC3B,KAAM,CAAEC,EAAYC,CAAc,EAAI1gC,EAAAA,SAAkC,IAAI,EAEtE2gC,EAAwB,CAC5BC,EACA1F,EACA2F,EACAC,EACAC,IACI52B,GAAArL,GAAA,CAAA,EACDsD,CAAAA,EADC,CAEJ,CAACw+B,CAAmB,EAAGI,EAAAA,OAAO9F,EAAa,EAAG94B,EAAMw+B,CAAmB,CAAC,EACxE,CAACC,CAAiB,EAAGI,EAAAA,OAAOH,EAAWC,EAAM3+B,EAAMy+B,CAAiB,CAAC,CACvE,GAEMK,EAAgBC,EAAAA,WACpBC,YAAUC,eAAa,EACvBD,YAAUE,EAAAA,eAAgB,CACxB,iBAAkBC,EAAAA,2BACpB,CAAC,CACH,EAEMC,EAAiB1a,GACpBA,KAAM1kB,EAAQ0kB,EAAK/d,EAAK3G,KAAAA,CAAK,EAAE,KAAMq/B,GAAQr/B,EAAMq/B,CAAG,EAAE,SAAS3a,CAAE,CAAC,EAEjE4a,EAAiBriC,GAAqB,CAC1C,KAAM,CAAE,OAAAsiC,EAAQ,KAAAC,CAAK,EAAIviC,EACzB,GAAI,CAACuiC,EAAM,MAAO,CAAC,EACnB,KAAM,CAAE,GAAA9a,CAAG,EAAI6a,EACT,CAAE,GAAIE,CAAO,EAAID,EAEjBhB,EAAsBY,EAAc1a,CAAY,EAChD+Z,EAAoBW,EAAcK,CAAgB,EACxD,MAAO,CAAE,oBAAAjB,EAAqB,kBAAAC,EAAmB,GAAA/Z,EAAI,OAAA+a,EAAQ,OAAAF,CAAO,CACtE,EA2DA,OACE/iC,EAAA,cAACqO,GAAA,CACC,QAAUuzB,GAAWU,EACrB,YA5DqB7hC,GAAqB,CAC5C,KAAM,CACJ,OAAQ,CAAE,GAAAynB,CAAG,CACf,EAAIznB,EACJqhC,EAAc5Z,CAAE,CAClB,EAwDI,WAtDoBznB,GAAqB,CAC3C,KAAM,CAAE,oBAAAuhC,EAAqB,kBAAAC,EAAmB,GAAA/Z,EAAI,OAAA+a,CAAO,EAAIH,EAAcriC,CAAC,EAE9E,GACE,EACE,CAACuhC,GACD,CAACC,GACDD,IAAwBC,GAE1B,CACA,MAAM3F,EAAc4G,UAAQhb,EAAI1kB,EAAMw+B,CAAmB,CAAC,EACpDE,EAAYgB,EAAQD,QAAAA,EAAQz/B,EAAMy+B,CAAiB,CAAC,EAC1D7+B,EAAS2+B,EACPC,EACA1F,EACA2F,EACAC,EACAha,CACF,CAAC,EAEL,EAmCI,UAjCmBznB,GAAqB,CAC1C,KAAM,CAAE,oBAAAuhC,EAAqB,kBAAAC,EAAmB,GAAA/Z,EAAI,OAAA+a,EAAQ,OAAAF,CAAO,EAAID,EAAcriC,CAAC,EAEtF,GAAI,CAACuhC,GAAuB,CAACC,EAAmB,OAEhD,MAAM3F,EAAc4G,EAAAA,QAAQhb,EAAI1kB,EAAMw+B,CAAmB,CAAC,EACpDE,EAAYgB,UAAQD,EAAQz/B,EAAMy+B,CAAiB,CAAC,EAGxD7+B,EADE4+B,IAAwBC,EACjB12B,GAAArL,GAAA,CAAA,EACJsD,CAAAA,EADI,CAEP,CAACy+B,CAAiB,EAAGkB,YACnB3/B,EAAMy+B,CAAiB,EACvB3F,EACA4F,CACF,CACF,CAESH,EAAAA,EACPC,EACA1F,EACA2F,EACAC,EACAa,GAAQ,EACV,CARC,CAUL,EAQI,mBAAqBpB,GAAsByB,EAAAA,gBAEzC,EAAA,OAAOt6B,GAAa,WAAaA,EAAStF,EAAOq+B,CAAU,EAAI/4B,CACnE,CAEJ,CCrHgB,SAAAu6B,GAAiB,CAC/B,SAAAv6B,EACA,MAAAtF,EACA,mBAAAm+B,EACA,UAAA2B,EAAY1tB,WACZ,SAAA2tB,EACA,SAAAngC,EAAW,IAAM,CAAA,EACjB,YAAAogC,EAAc5tB,EAAAA,SACd,eAAA6tB,EAAiB,GACjB,QAAA7B,EACA,kBAAAb,EAAoB,IACpB,YAAAd,EAAc,GACd,UAAAyD,CACF,EAAyB,CACvB,KAAM,CAAE7B,EAAYC,CAAc,EAAI1gC,EAAkC,SAAA,IAAI,EAEtEuiC,EAAkBxW,EAAAA,QAAQ,IAAMnpB,EAAAA,IAAIs/B,EAAW9/B,CAAK,EAAG,CAAEA,CAAM,CAAC,EAEhE8+B,EAAgBC,aACpBC,EAAAA,UAAUC,EAAa,aAAA,EACvBD,EAAUE,UAAAA,iBAAgB,CACxB,iBAAkBC,EAAAA,2BACpB,CAAC,CACH,EAqBA,OACE3iC,EAAA,cAACqO,GAAA,CACC,QAAUuzB,GAAWU,EACrB,mBAAqBX,GAAsByB,EAC3C,iBAAA,YAvBqBz/B,GAAyB,CAChD,KAAM,CACJ,OAAQ,CAAE,GAAAukB,CAAG,CACf,EAAIvkB,EACJm+B,EAAc5Z,CAAE,CAClB,EAmBI,UAjBmBvkB,GAAyB,CAC9C,KAAM,CAAE,OAAAo/B,EAAQ,KAAAC,CAAK,EAAIr/B,EACzB,GAAIo/B,GAAUC,GAAQD,EAAO,KAAOC,EAAK,GAAI,CAC3C,MAAMY,EAAU5/B,MAAIs/B,EAAW9/B,CAAK,EAC9BqgC,EAAWX,UAAQH,EAAO,GAAIa,CAAO,EACrCE,EAAWZ,EAAAA,QAAQF,EAAK,GAAIY,CAAO,EACzCJ,EAAY,CAAE,KAAMhgC,EAAMqgC,CAAQ,EAAG,SAAAA,EAAU,SAAAC,CAAS,CAAC,EACzD,MAAMC,EAAWZ,YAAU3/B,EAAOqgC,EAAUC,CAAQ,EACpD1gC,EAAS2gC,CAAQ,EAErB,EAQI,UAAYL,CAAAA,EAEZ1jC,EAAA,cAAC4gC,GAAA,CACC,MAAQ+C,EACR,SAAWJ,GAAYS,qBAErBxgC,EAAAA,EAAM,IAAI,CAAC2+B,EAAMz3B,IAAU,CAC3B,MAAMwd,EAAKob,EAAUnB,CAAI,EACzB,OACEniC,EAAA,cAAC8gC,GAAA,CACC,IAAM5Y,EACN,GAAKA,EACL,UAAYA,EACZ,kBAAoB6Y,EACpB,YAAcd,CAAAA,EAEZ,CAACG,EAAWrgC,IACX,OAAO+I,GAAa,WACjBA,EAASq5B,EAAM/B,EAAWrgC,EAAO2K,CAAK,EACtC5B,CAER,CAEJ,CAAC,CACH,EACE26B,GACAzjC,EAAA,cAACikC,EAAAA,YAAA,KACGpC,EAAa7hC,EAAA,cAAC0/B,GAAA,CAAS,UAAYmC,CAAAA,CAAa,EAAK,IACzD,CAEJ,CAEJ,CCjJO,MAAMqC,GAAoB,CAAC,CAAE,SAAAp7B,EAAU,MAAAtF,EAAO,SAAA+/B,CAAS,IAC5DvjC,EAAA,cAAC4gC,GAAA,CAAS,MAAQp9B,EAAQ,SAAW+/B,GAAYS,EAAAA,mBAAAA,EAC7CxgC,EAAM,IAAK0kB,GACXloB,EAAA,cAAC8gC,GAAA,CAAa,IAAM5Y,EAAK,GAAKA,EAAK,UAAYA,CAAAA,EAC3C,OAAOpf,GAAa,WAAaA,EAASof,CAAE,EAAIpf,CACpD,CACD,CACH,+fCJW,MAAAq7B,GAAWvrB,EAAW,WAAA,CAAChV,EAUlBY,IAAuC,CAVrB,IAAAkR,EAAA9R,EAClC,CAAAwgC,UAAAA,EACA,SAAAC,EACA,UAAAtlB,EAAY,SACZ,SAAAjW,EACA,MAAAw7B,EACA,OAAAjT,EACA,cAAAkT,EAAgB,EAChB,oBAAAC,CA5BF,EAoBoC9uB,EAS/BO,EAAAC,GAT+BR,EAS/B,CARH,YACA,WACA,YACA,WACA,QACA,SACA,gBACA,qBAAA,CAAA,EAGA,OAAA1V,EAAA,cAACykC,GAAA,KACG,CAAC,CAAE,MAAOC,EAAW,OAAQC,CAAW,IACxC3kC,EAAA,cAAC4kC,GAAAA,iBAAA1kC,GAAA,CACC,UAAYkkC,EACZ,SAAW,OAAOC,GAAa,SAAYQ,GAAWR,EAAWA,EACjE,OAAShT,GAAUsT,EACnB,MAAQL,GAASI,EACjB,OAAS3lB,IAAc,SAAW,WAAa,aAC/C,oBAAsBylB,EACtB,cAAgBD,EAChB,IAAM//B,CAAAA,EACDyR,CAEH,EAAA,CAAC,CAAE,MAAAmrB,EAAO,MAAA12B,CAAM,IAChB1K,EAAA,cAAC,MAAI,CAAA,MAAQohC,CACT,EAAA,OAAOt4B,GAAa,WAAaA,EAAS4B,CAAK,EAAI5B,CACvD,CAEJ,CAEJ,CACD,CAAA,ECpDD,IAAA+Q,GAAA,OAAA,eAAAta,GAAA,OAAA,sBAAAM,GAAA,OAAA,UAAA,eAAA0kB,GAAA,OAAA,UAAA,qBAAAhc,GAAA,CAAAnI,EAAAK,EAAAb,IAAAa,KAAAL,EAAAyZ,GAAAzZ,EAAAK,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAQ,EAAAK,CAAA,EAAAb,EAAA8jB,GAAA,CAAAtjB,EAAAK,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAZ,GAAA,KAAAY,EAAAb,CAAA,GAAA2I,GAAAnI,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAAK,KAAAL,GAAAkB,CAAA,EAAA8jB,GAAA,KAAA9jB,EAAAb,CAAA,GAAA2I,GAAAnI,EAAAR,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAAA+F,GAAA,CAAA/F,EAAAK,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAS,KAAAD,EAAAP,GAAA,KAAAO,EAAAC,CAAA,GAAAI,EAAA,QAAAJ,CAAA,EAAA,IAAAT,EAAAS,CAAA,EAAAD,EAAAC,CAAA,GAAA,GAAAD,GAAA,MAAAb,GAAA,QAAAc,KAAAd,GAAAa,CAAA,EAAAK,EAAA,QAAAJ,CAAA,EAAA,GAAAkkB,GAAA,KAAAnkB,EAAAC,CAAA,IAAAT,EAAAS,CAAA,EAAAD,EAAAC,CAAA,GAAA,OAAAT,CAAA,EAwFO,MAAMklC,GAAWlsB,EAAW,WAAA,CAAChV,EAWlBY,IAAuC,CAXrB,IAAAkR,EAAA9R,EAClC,CAAApB,QAAAA,EACA,KAAAuiC,EACA,WAAAC,EACA,QAAAC,EACA,SAAAn8B,EACA,MAAAw7B,EACA,OAAAjT,EACA,iBAAA6T,EAAmB,EACnB,oBAAAC,EAAsB,CAjGxB,EAwFoCzvB,EAU/BO,EAAAC,GAV+BR,EAU/B,CATH,UACA,OACA,aACA,UACA,WACA,QACA,SACA,mBACA,qBAGA,CAAA,EAAA,OAAA1V,EAAA,cAACykC,GAAA,KACG,CAAC,CAAE,MAAOC,EAAW,OAAQC,CAAW,IACxC3kC,EAAA,cAAColC,GAAAA,iBAAAllC,GAAA,CACC,SAAW6kC,EACX,YAAcviC,EACd,YAAc,OAAOwiC,GAAe,SAAYH,GAAWG,EAAaA,EACxE,UAAY,OAAOC,GAAY,SAAYJ,GAAWI,EAAUA,EAChE,OAAS5T,GAAUsT,EACnB,MAAQL,GAASI,EACjB,iBAAmBQ,EACnB,oBAAsBC,EACtB,IAAM3gC,CACDyR,EAAAA,CAAAA,EAEH,CAAC,CAAE,MAAAmrB,EAAO,SAAAiE,EAAU,YAAAC,CAAY,IAChCtlC,EAAA,cAAC,MAAI,CAAA,MAAQohC,CACT,EAAA,OAAOt4B,GAAa,WAAaA,EAASu8B,EAAUC,CAAW,EAAIx8B,CACvE,CAEJ,CAEJ,CACD,CAAA,EC1HD,IAAAy8B,GAAA,OAAA,eAAAjmC,GAAA,OAAA,sBAAAgW,GAAA,OAAA,UAAA,eAAA5J,GAAA,OAAA,UAAA,qBAAA7L,GAAA,CAAAa,EAAA,EAAAd,IAAA,KAAAc,EAAA6kC,GAAA7kC,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAd,CAAA,CAAA,EAAAc,EAAA,CAAA,EAAAd,EAAAL,GAAA,CAAAmB,EAAA,IAAA,CAAA,QAAAd,KAAA,IAAA,EAAA,CAAA,GAAA0V,GAAA,KAAA,EAAA1V,CAAA,GAAAC,GAAAa,EAAAd,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAN,GAAA,QAAAM,KAAAN,GAAA,CAAA,EAAAoM,GAAA,KAAA,EAAA9L,CAAA,GAAAC,GAAAa,EAAAd,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAAc,CAAA,EAeA,MAAM8kC,GAA6D,CACjE,MAAO,QACP,QAAS,SACX,EAEMC,GAA6D,CACjE,MAAO,QACP,QAAS,QACX,EAEaC,GAAmB,CAAC,CAAE,KAAA5sB,EAAM,QAAAZ,EAAU,SAAU,IAA6B,CACxF,KAAM,CACJ,qBAAAytB,EACA,qBAAAC,CACF,EAAIC,EAAAA,sBAEE,CAAE,OAAAC,EAAQ,UAAAhzB,CAAU,EAAIizB,EAAAA,mBAExB,CAAE,OAAA/gB,EAAQ,KAAAzL,EAAM,SAAAysB,CAAS,EAAI1tB,sBAAoB,eAAgB,CAAE,KAAAQ,EAAM,UAAAhG,CAAU,CAAC,EAE1F,OACE9S,EAAA,cAACic,EAAAA,OAAA,CAAO,QAAU,EAAI,GAAK+pB,CACvBlzB,EAAAA,EAEE9S,EAAA,cAAAA,EAAA,SACEA,KAAAA,EAAA,cAACqgB,EAAAngB,GAAA,CACC,aAAW,SACX,GAAK8kB,EACL,QAAUygB,GAA0CvtB,CAAO,GACtD0tB,GAAqB,EAE1B5lC,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,EAAO,GAAK+U,EAAc,WAAA,CAAA,CACvC,EACAtuB,EAAA,cAACqgB,EAAAngB,GAAA,CACC,aAAW,OACX,GAAK8kB,EACL,QAAUwgB,GAA0CttB,CAAO,CAAA,EACtDytB,EAEL3lC,CAAAA,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,EAAO,GAAK0H,UAAW,CAAA,CACpC,CACF,EAGAjhB,EAAA,cAACqgB,EAAA,CACC,aAAW,OACX,QAAQ,QACR,GAAK2E,EACL,QAAU8gB,CAAAA,EAEV9lC,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,EAAO,GAAK0sB,SAAU,CAAA,CACnC,CAGN,CAEJ,ECvEA,IAAA//B,GAAA,OAAA,eAAA9F,GAAA,OAAA,sBAAAM,GAAA,OAAA,UAAA,eAAAjB,GAAA,OAAA,UAAA,qBAAAH,GAAA,CAAAe,EAAAI,EAAAb,IAAAa,KAAAJ,EAAA6F,GAAA7F,EAAAI,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAS,EAAAI,CAAA,EAAAb,EAAA2lC,GAAA,CAAAllC,EAAAI,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAAb,CAAA,GAAAN,GAAAe,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAQ,GAAA,QAAAR,KAAAQ,GAAAK,CAAA,EAAAhB,GAAA,KAAAgB,EAAAb,CAAA,GAAAN,GAAAe,EAAAT,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAS,CAAA,EAAAR,GAAA,CAAAQ,EAAAI,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAL,KAAAc,EAAAK,GAAA,KAAAL,EAAAd,CAAA,GAAAkB,EAAA,QAAAlB,CAAA,EAAA,IAAAK,EAAAL,CAAA,EAAAc,EAAAd,CAAA,GAAA,GAAAc,GAAA,MAAAD,GAAA,QAAAb,KAAAa,GAAAC,CAAA,EAAAI,EAAA,QAAAlB,CAAA,EAAA,GAAAE,GAAA,KAAAY,EAAAd,CAAA,IAAAK,EAAAL,CAAA,EAAAc,EAAAd,CAAA,GAAA,OAAAK,CAAA,QAqCaiT,GAAgBjP,GAOR,CAPQ,IAAA8R,EAAA9R,EAC3B,CAAAkV,KAAAA,EAAO,KACP,MAAOzC,EACP,SAAAqH,EACA,SAAAwoB,EACA,QAAAhuB,EAAU,SA1CZ,EAqC6BxC,EAMxBO,EAAAC,GANwBR,EAMxB,CALH,OACA,QACA,WACA,WACA,SAAA,CAAA,EAGA,KAAM,CAAE1U,EAAO6e,CAAS,EAAIze,WAASiV,CAAU,EACzC,CAAE,MAAAW,EAAO,QAAAmvB,CAAQ,EAAI7tB,EAAAA,oBAAoB,eAAgB,CAAE,KAAAQ,EAAM,MAAA9X,CAAM,CAAC,EAE9E,OAAAK,EAAAA,UAAU,IAAM,CACdwe,EAASxJ,CAAU,CACrB,EAAG,CAAEA,CAAW,CAAC,EAGfrW,EAAA,cAAComC,WAAAlmC,GAAA,CACC,mBAAqB,GACrB,iBAAmB,GACnB,MAAQc,EACR,SAAYqlC,GAAaxmB,EAASwmB,CAAQ,EAC1C,SAAW3oB,CACNzH,EAAAA,CAAAA,EAELjW,EAAA,cAACouB,EAAAA,WAAA,CAAW,KAAOtV,GACfotB,GACAlmC,EAAA,cAACsmC,EAAAA,iBAAA,KACGJ,CACJ,EAEFlmC,EAAA,cAACyM,EAAAA,MAAA,CACC,GAAK85B,EAAAA,gBACL,GAAKJ,CACP,CAAA,EACAnmC,EAAA,cAACyM,EAAAA,MAAA,CACC,GAAK+5B,gBACL,KAAO1tB,EACP,GAAK9B,CACP,CAAA,EACAhX,EAAA,cAACquB,oBAAA,CAAkB,GAAK,CAAE,MAAO,aAAc,GAC7CruB,EAAA,cAAC0lC,GAAA,CAAiB,KAAO5sB,EAAO,QAAUZ,EAAU,CACtD,CACF,CACF,CAEJ,EClFA,IAAA5Y,GAAA,OAAA,eAAAmM,GAAA,OAAA,sBAAAlM,GAAA,OAAA,UAAA,eAAAG,GAAA,OAAA,UAAA,qBAAA6I,GAAA,CAAA3I,EAAAc,EAAAL,IAAAK,KAAAd,EAAAN,GAAAM,EAAAc,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAL,CAAA,CAAA,EAAAT,EAAAc,CAAA,EAAAL,EAAAZ,GAAA,CAAAG,EAAAc,IAAA,CAAA,QAAAL,KAAAK,IAAAA,EAAA,IAAAnB,GAAA,KAAAmB,EAAAL,CAAA,GAAAkI,GAAA3I,EAAAS,EAAAK,EAAAL,CAAA,CAAA,EAAA,GAAAoL,GAAA,QAAApL,KAAAoL,GAAA/K,CAAA,EAAAhB,GAAA,KAAAgB,EAAAL,CAAA,GAAAkI,GAAA3I,EAAAS,EAAAK,EAAAL,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAA2V,GAAA,CAAA3V,EAAAc,IAAA,CAAA,IAAAL,EAAA,GAAA,QAAAR,KAAAD,EAAAL,GAAA,KAAAK,EAAAC,CAAA,GAAAa,EAAA,QAAAb,CAAA,EAAA,IAAAQ,EAAAR,CAAA,EAAAD,EAAAC,CAAA,GAAA,GAAAD,GAAA,MAAA6L,GAAA,QAAA5L,KAAA4L,GAAA7L,CAAA,EAAAc,EAAA,QAAAb,CAAA,EAAA,GAAAH,GAAA,KAAAE,EAAAC,CAAA,IAAAQ,EAAAR,CAAA,EAAAD,EAAAC,CAAA,GAAA,OAAAQ,CAAA,QAIaomC,GAAa7iC,GAIX,CAJW,IAAA8R,EAAA9R,EACxB,CAAA8iC,WAAAA,EAAa,GACb,SAAA59B,CANF,EAI0B4M,EAGrBO,EAAAC,GAHqBR,EAGrB,CAFH,aACA,UAAA,CAAA,EAGA,OAAA1V,EAAA,cAAC2mC,EAAAA,MAAAzmC,GAAA,CACC,WAAawmC,EACb,eAAe,SACf,aAAa,eAAA,EACRzwB,CAELjW,EAAAA,EAAA,cAAC4mC,EAAA,aAAA,IAAa,EACd5mC,EAAA,cAAC6mC,EAAAA,aAAA,CAAa,cAAY,eACxB7mC,EAAAA,EAAA,cAAC8mC,EAAAA,iBAAA,CAAiB,cAAY,sBAAuB,CAAA,EACnDh+B,CACJ,CACF,CAAA,ECpBF,IAAAtI,GAAA,OAAA,eAAAiL,GAAA,OAAA,sBAAAC,GAAA,OAAA,UAAA,eAAA6J,GAAA,OAAA,UAAA,qBAAA1V,GAAA,CAAAD,EAAAQ,EAAAX,IAAAW,KAAAR,EAAAY,GAAAZ,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAX,CAAA,CAAA,EAAAG,EAAAQ,CAAA,EAAAX,EAAAF,GAAA,CAAAK,EAAAQ,IAAA,CAAA,QAAAX,KAAAW,IAAAA,EAAA,CAAA,GAAAsL,GAAA,KAAAtL,EAAAX,CAAA,GAAAI,GAAAD,EAAAH,EAAAW,EAAAX,CAAA,CAAA,EAAA,GAAAgM,GAAA,QAAAhM,KAAAgM,GAAArL,CAAA,EAAAmV,GAAA,KAAAnV,EAAAX,CAAA,GAAAI,GAAAD,EAAAH,EAAAW,EAAAX,CAAA,CAAA,EAAA,OAAAG,CAAA,EAAAS,GAAA,CAAAT,EAAAQ,IAAA,CAAA,IAAAX,EAAA,CAAA,EAAA,QAAAH,KAAAM,EAAA8L,GAAA,KAAA9L,EAAAN,CAAA,GAAAc,EAAA,QAAAd,CAAA,EAAA,IAAAG,EAAAH,CAAA,EAAAM,EAAAN,CAAA,GAAA,GAAAM,GAAA,MAAA6L,GAAA,QAAAnM,KAAAmM,GAAA7L,CAAA,EAAAQ,EAAA,QAAAd,CAAA,EAAA,GAAAiW,GAAA,KAAA3V,EAAAN,CAAA,IAAAG,EAAAH,CAAA,EAAAM,EAAAN,CAAA,GAAA,OAAAG,CAAA,QASa0P,GAASvL,GAIP,CAJO,IAAA8R,EAAA9R,EACpB,CAAA,mBAAAmjC,EAAqB,GACrB,OAAAr0B,CAXF,EASsBgD,EAGjBO,EAAAC,GAHiBR,EAGjB,CAFH,qBACA,WAGA,OAAA1V,EAAA,cAAAA,EAAA,SAAA,MACK+mC,GAAsBr0B,IAAW1S,EAAA,cAACymC,GAAAvmC,GAAA,CAAU,OAASwS,CAAAA,EAAcuD,EAAO,CAC/E,CAAA,4VCbK,MAAM+wB,GAAajnC,GACxBC,EAAA,cAACinC,YAAA/mC,GAAA,CAAgB,KAAOH,EAAM,EAAI,KAAOA,EAAM,GAASA,CAAQ,CAAA,ECJlE,IAAAg6B,GAAA,OAAA,eAAAt6B,GAAA,OAAA,sBAAAiM,GAAA,OAAA,UAAA,eAAAvL,GAAA,OAAA,UAAA,qBAAAb,GAAA,CAAAc,EAAAqL,EAAAlM,IAAAkM,KAAArL,EAAA25B,GAAA35B,EAAAqL,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAlM,CAAA,CAAA,EAAAa,EAAAqL,CAAA,EAAAlM,EAAAiW,GAAA,CAAApV,EAAAqL,IAAA,CAAA,QAAAlM,KAAAkM,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAAlM,CAAA,GAAAD,GAAAc,EAAAb,EAAAkM,EAAAlM,CAAA,CAAA,EAAA,GAAAE,GAAA,QAAAF,KAAAE,GAAAgM,CAAA,EAAAtL,GAAA,KAAAsL,EAAAlM,CAAA,GAAAD,GAAAc,EAAAb,EAAAkM,EAAAlM,CAAA,CAAA,EAAA,OAAAa,CAAA,EAAAuY,GAAA,CAAAvY,EAAAqL,IAAA,CAAA,IAAAlM,EAAA,CAAA,EAAA,QAAAkB,KAAAL,EAAAsL,GAAA,KAAAtL,EAAAK,CAAA,GAAAgL,EAAA,QAAAhL,CAAA,EAAA,IAAAlB,EAAAkB,CAAA,EAAAL,EAAAK,CAAA,GAAA,GAAAL,GAAA,MAAAX,GAAA,QAAAgB,KAAAhB,GAAAW,CAAA,EAAAqL,EAAA,QAAAhL,CAAA,EAAA,GAAAN,GAAA,KAAAC,EAAAK,CAAA,IAAAlB,EAAAkB,CAAA,EAAAL,EAAAK,CAAA,GAAA,OAAAlB,CAAA,EAaa,MAAA2nC,GAAkBtuB,EAAAA,WAAW,CAAChV,EAWlBY,IAAa,CAXK,IAAAkR,EAAA9R,EACzC,UAAAujC,EACA,YAAAC,EACA,OAAA10B,EACA,QAAAqP,EACA,MAAAjT,EAAQ,GACR,WAAAu4B,EACA,QAAA/zB,EACA,gBAAAg0B,EAAkB,GAClB,aAAAC,EAAe,EAtBjB,EAa2C7xB,EAUtCO,EAAAC,GAVsCR,EAUtC,CATH,WACA,cACA,SACA,UACA,QACA,aACA,UACA,kBACA,cAAA,CAAA,EAGA,KAAM,CAAE8xB,EAAWC,CAAa,EAAIrmC,WAAS,CAAC,EACxC,CAAEsmC,EAAUC,CAAY,EAAIvmC,EAAAA,SAAS,CAAE,EAAG,GAAK,EAAG,EAAI,CAAC,EAEvD8wB,EAAc,IAAM,CACxBuV,EAAa,CAAC,EACd1lB,GACF,EAEA,OACE/hB,EAAA,cAACmP,GAAAjP,GAAA,CACC,OAASwS,EACT,QAAUqP,EACV,oBAAsB,EAAA,EACjB9L,GAELjW,EAAA,cAAC4nC,cAAA,KAAY,QAAOt0B,EAAU,QAAU,MAAQ,EAChDtT,EAAA,cAACgnC,GAAA,CACC,QAAQ,OACR,eAAe,QACf,cAAc,SACd,WAAW,SACX,IAAM,EACN,KAAK,SAELhnC,EAAA,cAACuf,EAAAA,MAAA,CAAM,QAAUjM,GAAWi0B,EAAe,UAAY,MACrDvnC,EAAAA,EAAA,cAAC6nC,GAAA,CACC,IAAMrjC,EACN,MAAQsK,GAAS,GACjB,iBAAoBg5B,GAAQH,EAAYG,CAAG,EAC3C,SAAWJ,EACX,MAAQ,IACR,OAAS,IACT,OAAS,GACT,MAAQ,CAAE,IAAK,IAAK,IAAK,EAAI,EAC7B,MAAQF,EACR,OAAS,CACX,CAAA,EACAxnC,EAAA,cAACic,SAAA,CAAO,EAAE,OACRjc,EAAA,cAAC8Z,GAAA,KAAU,MAAI,EACf9Z,EAAA,cAAC+nC,EAAA,OAAA,CACC,aAAW,OACX,aAAeP,EACf,KAAK,MACL,IAAM,GACN,KAAO,IACP,IAAM,GACN,SAAYxmC,GAAUymC,EAAazmC,CAAK,CAAA,EAExChB,EAAA,cAACgoC,EAAAA,YAAA,KACChoC,EAAA,cAACioC,oBAAA,IAAkB,CACrB,EACAjoC,EAAA,cAACkoC,EAAA,YAAA,CAAY,QAAU,CAAA,EACrBloC,EAAA,cAAC0P,EAAA,CAAK,GAAKy4B,EAAAA,SAAAA,CAAY,CACzB,CACF,CACF,CAEF,EACEb,GACFtnC,EAAA,cAACuf,QAAA,CAAM,EAAE,MAAM,UAAYjM,EAAU,MAAQ,SAAW,GAAK,CAC3DtT,EAAAA,EAAA,cAAC8Z,GAAA,KAAU,gBAAc,EACzB9Z,EAAA,cAAC6X,EAAAA,IAAA,CAAI,KAAK,KAAA,EACR7X,EAAA,cAAC6S,GAAA,CAAa,SAAYsC,GAAMiyB,EAAYjyB,CAAC,EAAI,MAAQgyB,EAAW,KAAK,IAAK,CAAA,CAChF,CACF,CAEF,EACAnnC,EAAA,cAACooC,EAAAA,YAAA,KACCpoC,EAAA,cAACic,SAAA,KACCjc,EAAA,cAACgM,GAAA,CAAO,QAAQ,SAAS,QAAUkmB,CAAAA,EAAc,QAEjD,EACAlyB,EAAA,cAACgM,GAAA,CAAO,QAAQ,UAAU,QAAUq7B,CAAa,EAAA,MAEjD,CACF,CACF,CACF,CAEJ,CAAC,+fC9FM,MAAMgB,GAAsBzkC,GAMJ,CANI,IAAA8R,EAAA9R,EACjC,CAAA,OAAA8O,EACA,QAAAqP,EACA,cAAAumB,EACA,SAAAnB,CAdF,EAUmCzxB,EAK9BO,EAAAC,GAL8BR,EAK9B,CAJH,SACA,UACA,gBACA,UAGA,CAAA,EAAA,MAAM6yB,EAAe,IAAM,CACzBD,EAAc,EACdvmB,EACF,CAAA,EAEA,OACE/hB,EAAA,cAACmP,GAAAjP,GAAA,CAAM,OAASwS,EAAS,QAAUqP,CAAAA,EAAe9L,CAChDjW,EAAAA,EAAA,cAAC4nC,EAAAA,YAAA,CACC,GAAK,CAAE,SAAU,IAAK,EACtB,SAAS,SACT,WAAW,SACX,aAAa,WACb,GAAK,IACN,UACUT,CACX,EACAnnC,EAAA,cAACgnC,GAAA,KAAU,sGAGX,EACAhnC,EAAA,cAACooC,cAAA,KACCpoC,EAAA,cAACgM,GAAA,CAAO,QAAQ,SAAS,QAAUu8B,CAAe,EAAA,QAElD,CACF,CACF,CAEJ,EC5CaC,GAAsB,GACtBC,GAAqB,ICDlC,IAAAviC,GAAA,OAAA,eAAAxF,GAAA,OAAA,sBAAAF,GAAA,OAAA,UAAA,eAAAd,GAAA,OAAA,UAAA,qBAAAD,GAAA,CAAAW,EAAAR,EAAA2I,IAAA3I,KAAAQ,EAAA8F,GAAA9F,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA2I,CAAA,CAAA,EAAAnI,EAAAR,CAAA,EAAA2I,EAAAhJ,GAAA,CAAAa,EAAAR,IAAA,CAAA,QAAA2I,KAAA3I,IAAAA,EAAA,CAAA,GAAAY,GAAA,KAAAZ,EAAA2I,CAAA,GAAA9I,GAAAW,EAAAmI,EAAA3I,EAAA2I,CAAA,CAAA,EAAA,GAAA7H,GAAA,QAAA6H,KAAA7H,GAAAd,CAAA,EAAAF,GAAA,KAAAE,EAAA2I,CAAA,GAAA9I,GAAAW,EAAAmI,EAAA3I,EAAA2I,CAAA,CAAA,EAAA,OAAAnI,CAAA,EAAAd,GAAA,CAAAc,EAAAR,IAAA,CAAA,IAAA2I,EAAA,CAAA,EAAA,QAAA9H,KAAAL,EAAAI,GAAA,KAAAJ,EAAAK,CAAA,GAAAb,EAAA,QAAAa,CAAA,EAAA,IAAA8H,EAAA9H,CAAA,EAAAL,EAAAK,CAAA,GAAA,GAAAL,GAAA,MAAAM,GAAA,QAAAD,KAAAC,GAAAN,CAAA,EAAAR,EAAA,QAAAa,CAAA,EAAA,GAAAf,GAAA,KAAAU,EAAAK,CAAA,IAAA8H,EAAA9H,CAAA,EAAAL,EAAAK,CAAA,GAAA,OAAA8H,CAAA,EAmBa,MAAAmgC,GAAc9vB,aACzB,CAAChV,EAA6DY,IAAK,CAAlE,IAAAkR,EAAA9R,EAAE,CAAA+kC,qBAAAA,EAAuBF,GAAoB,GAAAn6B,CApBhD,EAoBGoH,EAAoD3V,EAAAmW,GAApDR,EAAoD,CAAlD,uBAA2C,IAC5C,CAAA,EAAA,OAAA1V,EAAA,cAAC4oC,EAAA1oC,SAAAA,GAAA,CACC,IAAMsE,EACN,MAAM,OACN,OAAO,KACP,aAAa,OACb,GAAKtE,GAAA,CACH,wBAAyB,CACvB,WAAY,SAASyoC,cACvB,CAAA,EACGr6B,CAEAvO,CAAAA,EAAAA,CAAAA,CACP,CAEJ,CAAA,ECnCa8oC,GAAiBC,GAAoB,CAChD,IAAIC,EAAa,GACjB,MAAMC,EAAQ,KAAK,MAAMF,EAAU,IAAI,EACnCE,EAAQ,IACVD,GAAc,IAAIC,MAEpB,MAAMC,EAAU,KAAK,OAAOH,EAAUE,EAAQ,MAAQ,EAAE,EACpDC,EAAU,IACZF,GAAc,IAAIE,QAEpB,MAAMC,EAAa,KAAK,MAAMJ,EAAUE,EAAQ,KAAOC,EAAU,EAAE,EACnE,OAAIC,EAAa,IACfH,GAAc,IAAIG,MAGbH,CACT,+fCsBO,MAAMI,GAAcvlC,GAKJ,CALI,IAAA8R,EAAA9R,EACzB,CAAAwlC,OAAAA,EACA,UAAAC,EAAY,IAAM,CAAA,EAClB,YAAAnQ,EAAc,EAzChB,EAsC2BxjB,EAItBO,EAAAC,GAJsBR,EAItB,CAHH,SACA,YACA,aAGA,CAAA,EAAA,MAAMlR,EAAMf,EAAAA,OAAuB,IAAI,EACjC6lC,EAAU7lC,EAAAA,OAAe,CAAC,EAC1B4yB,EAAW,KAAK,IAAI,EAAG,KAAK,IAAI+S,EAAQ,CAAC,CAAC,EAC1C,CAAEG,EAAUC,CAAY,EAAIpoC,EAAAA,SAAS,CAAC,EAE5C,OAAAC,EAAU,UAAA,IAAM,CAKd,GAJImD,EAAI,UACLA,EAAI,QAAQ,SAAS,CAAC,EAAqB,MAAM,MAAQ,GAAG6xB,EAAW,QAGtEiT,EAAQ,QAAS,CACnB,MAAMG,EAAYH,EAAQ,SACrB,KAAK,IAAI,EAAIA,EAAQ,SAAW,IACjC,EACJ,GAAIG,EAAYjB,GAAqB,CACnC,MAAMkB,EAAcrT,IAAa,EAAIoT,EAAYpT,EAAW,EAC5DmT,EAAY,KAAK,MAAME,EAAcD,CAAS,CAAC,QAExCpT,EAAW,IACpBiT,EAAQ,QAAU,KAAK,MAE3B,EAAG,CAAEjT,CAAS,CAAC,EAGbr2B,EAAA,cAACi5B,GAAA,CACC,GAAK5C,EAAW,EAChB,cAAgB,EAChB,UAAY,IACZ,aAAe,IACf,YAAc6C,EACd,qBAAuB,IAAM,CACvB7C,GAAY,GACdgT,GAEJ,CAAA,EAEArpC,EAAA,cAAC8zB,EAAAA,OAAA5zB,GAAA,CAAY+V,EAAAA,CAAAA,EACXjW,EAAA,cAACsR,GAAA,KACG,KAAK,MAAM+kB,EAAW,GAAG,EAAG,IAAG,IAC/B,CAAC,CAACkT,GAAY,QAAKV,GAAcU,CAAQ,QAC7C,EACAvpC,EAAA,cAAC0oC,GAAA,CACC,IAAMlkC,EACN,qBAAuBikC,EAAAA,CACzB,CACF,CACF,CAEJ,EC5FakB,GAAgB,SAChBC,GAAqB,SACrBC,GAAqB,CAChC,QAAS,GACT,aAAc,GACd,YAAa,EACf,ECNA,IAAAC,GAAA,OAAA,eAAA10B,GAAA,OAAA,iBAAAyQ,GAAA,OAAA,0BAAA5f,GAAA,OAAA,sBAAA4T,GAAA,OAAA,UAAA,eAAAkwB,GAAA,OAAA,UAAA,qBAAA5pC,GAAA,CAAA,EAAA,EAAAT,IAAA,KAAA,EAAAoqC,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAApqC,CAAA,CAAA,EAAA,EAAA,CAAA,EAAAA,EAAAsJ,GAAA,CAAA,EAAA,IAAA,CAAA,QAAAtJ,KAAA,IAAA,EAAA,CAAA,GAAAma,GAAA,KAAA,EAAAna,CAAA,GAAAS,GAAA,EAAAT,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAuG,GAAA,QAAAvG,KAAAuG,GAAA,CAAA,EAAA8jC,GAAA,KAAA,EAAArqC,CAAA,GAAAS,GAAA,EAAAT,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAia,GAAA,CAAA,EAAA,IAAAvE,GAAA,EAAAyQ,GAAA,CAAA,CAAA,QAmBamkB,GAAoB,CAC/BC,EACAC,EACAC,EACAC,IACG,KAAK,IAAI,EAAG,KAAK,IAAID,EAAWF,EAAUG,EAAYF,CAAS,CAAC,EAExDG,GAAoB,CAC/BC,EACAziC,EACA0iC,IACG,IAAI,KAAK,CAAED,CAAK,EAAGziC,EAAM,CAAE,KAAA0iC,CAAK,CAAC,EAEzBC,GAAgB,CAC3BC,EACAN,EAAW,IACXC,EAAY,IACZM,EAAU,MACP,CACH,MAAMC,EAAS,SAAS,cAAc,QAAQ,EACxCC,EAAUD,EAAO,WAAW,IAAI,EACtC,GAAI,CAACC,EAAS,OAAOH,EAErB,MAAMI,EAAc,IAAI,MACxB,OAAAA,EAAY,IAAM,IAAI,gBAAgBJ,CAAY,EAE3C,IAAI,QAASK,GAAY,CAC9BD,EAAY,OAAS,IAAM,CACzB,MAAME,EAAiBf,GACrBa,EAAY,MACZA,EAAY,OACZV,EACAC,CACF,EACMY,EAAcH,EAAY,MAAQE,EAClCE,EAAeJ,EAAY,OAASE,EAC1CJ,EAAO,MAAQK,EACfL,EAAO,OAASM,EAChBL,EAAQ,UAAUC,EAAa,EAAG,EAAGG,EAAaC,CAAY,EAC9DN,EAAO,OACJL,GAAS,CACR,GAAIG,GAAQH,EAAM,CAChB,MAAMY,EAAWb,GAAkBC,EAAMG,EAAK,KAAMA,EAAK,IAAI,EAC7DK,EAAQI,CAAQ,OAEhBJ,EAAQL,CAAI,CAEhB,EACA,aACAC,CACF,CACF,CACF,CAAC,CACH,EAEaS,GAAoBryB,GAAiB,CAChD,GAAIA,GAAQ,EAAG,MAAO,GACtB,MAAMvZ,EAAI,KAAK,MAAM,KAAK,IAAIuZ,CAAI,EAAI,KAAK,IAAI,IAAI,CAAC,EACpD,MAAO,IAAIA,EAAO,MAAQvZ,GAAG,QAAQ,CAAC,KACpC,CAAE,IAAK,KAAM,KAAM,KAAM,IAAK,EAAEA,CAAC,GAErC,EAEa6rC,GAAiB,MAC5Bt8B,EACAjH,IAEA,MAAMiH,EAAM,GAAa,EACtB,KAAMu8B,GAAQA,EAAI,KAAA,CAAM,EACxB,KACEf,GACC,IAAI,QAASQ,GAAY,CACvB,MAAMI,EAAWb,GAAkBC,EAAMziC,GAAQiH,EAAM,KAAMA,EAAM,IAAI,EACvEg8B,EAAQI,CAAQ,CAClB,CAAC,CACL,EAEEI,GAAqBC,GACzBljC,EAAM,MAAA,IAAKkjC,CAAY,EACpB,IAAKjuB,GAAWC,EAAKD,KAAAA,CAAM,CAAC,EAEpBkuB,GAAyBD,GACpCD,GAAkBC,CAAY,EAC3B,OAAQjuB,GAAWohB,EAAAA,KAAK,MAAOphB,CAAM,CAAC,EACtC,IAAKA,GAAWA,EAAO,UAAU,CAAC,CAAC,EAE3BmuB,GAAsBF,GACjCD,GAAkBC,CAAY,EAC3B,OAAQjuB,GAAWohB,EAAK,KAAA,KAAMphB,CAAM,CAAC,EACrC,IAAKA,GAAWjV,EAAAA,MAAM,IAAKiV,CAAM,EAAE,CAAC,CAAC,EAEpCouB,GAA6CjB,GAAY3mC,EAAAA,KAAKuE,EAAAA,MAAM,IAAKoiC,EAAK,IAAI,CAAC,EAEnFkB,GAA0ClB,GAAYpiC,EAAM,MAAA,IAAKoiC,EAAK,IAAI,EAAE,CAAC,EAEtEmB,GAAkB,CAC7BnB,EACAc,IAEEA,IAAiB,KAClBE,GAAmBF,CAAY,EAAE,SAASI,GAAclB,CAAI,CAAC,GAC7De,GAAsBD,CAAY,EAAE,SAASG,GAAiBjB,CAAI,CAAC,EAGzDoB,GAAc,CACzBpB,EACAc,EACAO,IACG,CACH,MAAMC,EACJtB,EAAK,KAAiBqB,GACnBF,GAAgBnB,EAAMc,CAAY,EAEvC,MAAO,CACL,QAAAQ,EACA,aAActB,EAAK,KAAiBqB,EAChC,uBACAC,EACE,GACA,2BACR,CACF,EAEO,SAASC,GACdrpB,EACAspB,EACAC,EACA,CACA,IAAIC,EAASxpB,EACb,MAAMypB,EAAUzpB,EAAOA,EAAK,IAAK8nB,GAASA,EAAK,IAAI,EAAI,KACjD4B,EAAaJ,EAAOA,EAAK,IAAKxB,GAASA,EAAK,IAAI,EAAI,KACpD6B,EACJF,GAAWC,GAAcnoC,EAAAA,WAAWkoC,EAASC,CAAU,EACnDE,EAAWL,EAAM,IAAKzB,GAASA,EAAK,IAAI,EAE9C,OAAI6B,EAEAA,EAAgB,SAAW,GAC3BE,eAAaF,EAAiBC,CAAQ,EAAE,OAAS,EAEjDJ,EAASF,EAETE,EAAO,QAAQ,CAACnrC,EAAO0J,IAAU,CAC/B,GAAI4hC,EAAgB,SAAStrC,EAAM,IAAI,EAAG,CACxC,MAAMyrC,EAAclhC,GAAArL,GAAA,GAAKc,CAAL,EAAA,CAClB,SAAU+xB,MAAI,OAAQ/xB,CAAK,EAAIA,EAAM,KAAO,CAAE,CAAA,EAChDmrC,EAAOzhC,CAAK,EAAI+hC,EAEpB,CACA,EAGFN,EAASF,EAEJE,CACT,CAEO,MAAMO,GAAa,IAAM,KAAK,SAAS,WAAW,UAAU,CAAC,EAEvDC,GAAUlC,GAAc,SAAU,QAAUA,aAAgB,KAE5DmC,GAAuCnC,GAAY,CAC9D,GAAIkC,GAAOlC,CAAI,EACb,OAAOkB,GAAclB,CAAI,IAAM,QAEjC,OAAQkB,GAAclB,CAAI,EACxB,CAAA,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,OACH,MAAO,GACT,QACE,MAAO,EACX,CACF,EAEaoC,GAAqBtB,GAAyB,CACzD,GAAIA,IAAiB,KAAOA,IAAiB,GAC3C,MAAO,GAET,MAAMuB,EAAUrB,GAAmBF,CAAY,EACzCwB,EAAavB,GAAsBD,CAAY,EAE/CyB,EAAaj6B,EAAAA,QAAQ+5B,CAAO,GAAK9W,EAAAA,IAAKuU,GAAiBA,IAAS,QAASuC,CAAO,EAEhFG,EAAal6B,UAAQg6B,CAAU,GAClC/W,MAAKuU,GAAiBqC,GAAY,CAAE,KAAArC,CAAK,CAAC,EAAGwC,CAAU,EAE1D,OAAOC,GAAcC,CACvB,EAEaC,GAA0CzC,IAElC,CACjB,IAFaiC,KAGb,KAAM,KACN,IAAK,KACL,KAAMjC,EAAK,KACX,KAAMA,EAAK,KACX,YAAa,GACb,OAAQA,EAAK,KAAOb,IAAsBgD,GAAYnC,CAAI,CAC5D,GAIW0C,GAAiD1C,IAEzC,CACjB,IAFaiC,GAAW,EAGxB,KAAMjC,EAAK,KACX,IAAK,IAAI,gBAAgBA,CAAI,EAC7B,KAAMA,EAAK,KACX,KAAMA,EAAK,KACX,YAAa,GACb,OAAQ,EACV,GAIW2C,GAA0D3C,IAElD,CACjB,IAFaiC,KAGb,KAAM,KACN,IAAKjC,EAAK,IACV,KAAMA,EAAK,KACX,KAAMA,EAAK,KACX,YAAa,GACb,OAAQ,EACV,GAIW4C,GAAiBC,GAAsBA,EAChDA,EAAQ,aAAeA,EAAQ,aAC/B,GAGSC,GAAY9C,GAAgC,IAAI,QAAQ,CAACK,EAAS0C,IAAW,CACxF,MAAMC,EAAS,IAAI,WACnBA,EAAO,cAAchD,CAAI,EACzBgD,EAAO,OAAS,IAAM3C,EAAQ2C,EAAO,MAAgB,EACrDA,EAAO,QAAWC,GAAUF,EAAOE,CAAK,CAC1C,CAAC,EAEKC,GAAwBrjC,GAAgBo0B,EAAAA,KAAK,KAAMp0B,CAAG,EAEtDsjC,GAAwBnD,GAA6BkD,GAAqBlD,EAAK,IAAI,EACrFA,EAAK,KACL,GAAGA,EAAK,QAAQiB,GAAiBjB,CAAI,IAC5BoD,GAAkBpD,GAE1B,IAAM,CACT,GAAI,CAACA,EAAM,OACX,MAAM5R,EAAS,SAAS,cAAc,GAAG,EACzCA,EAAO,KAAO8T,GAAOlC,CAAI,EAAI,IAAI,gBAAgBA,CAAY,EAAKA,EAAoB,KAAO,GAC7F5R,EAAO,SAAW8T,GAAOlC,CAAI,EACzB,sBACAmD,GAAqBnD,CAAY,EACrC5R,EAAO,OACT,+fCrRO,MAAMiV,GAAkBlqC,GAIP,CAJO,IAAA8R,EAAA9R,EAC7B,CAAA,KAAA2V,EACA,MAAAvT,EAAQ,OAPV,EAK+B0P,EAG1BO,EAAAC,GAH0BR,EAG1B,CAFH,OACA,OAAA,CAAA,EAGA,OAAA1V,EAAA,cAACqgB,EAAAngB,GAAA,CAAW,QAAQ,QAAQ,KAAK,MAAU+V,CACzCjW,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAK6J,EAAO,QAAQ,OAAO,MAAQvT,CAAAA,CAAQ,CACnD,CAAA,olBCuCW,MAAA+nC,GAAcnqC,GAaJ,CAbI,IAAA8R,EAAA9R,EACzB,CAAA2nC,aAAAA,EAAe,IACf,SAAAnoC,EAAWwS,EAAAA,SACX,YAAAo4B,EACA,SAAUC,EAAkB,EAC5B,YAAAnC,EAAcnC,GACd,aAAAuE,EAAe,GACf,MAAAltC,EAAQ,GACR,gBAAAmtC,EAAkB,GAClB,cAAA7F,EAAgB,GAChB,gBAAA8F,EAAkBvE,GAClB,GAAAv7B,EAAK,CAAA,CA9DP,EAmD2BoH,EAYtBO,EAAAC,GAZsBR,EAYtB,CAXH,eACA,WACA,cACA,WACA,cACA,eACA,QACA,kBACA,gBACA,kBACA,IAAA,CAAA,EAGA,MAAM24B,EAAe5qC,EAAAA,OAAyB,IAAI,EAC5C6qC,EAAiB7qC,EAAAA,OAAqB,IAAI,EAC1C,CAAEgnC,EAAM8D,CAAQ,EAAIntC,EAAAA,SAA+BJ,CAAK,EAExD,CAAEqS,EAAWm7B,CAAa,EAAIptC,EAAS,SAAA,EAAK,EAC5C,CAAEyG,EAAM4mC,CAAQ,EAAIrtC,WAAS,EAAE,EAC/BstC,EAAY1sB,EAAAA,cACZ2sB,EAAAA,EAAc3sB,EAAAA,cAAc,EAC5B,CAAE4sB,EAAUC,CAAY,EAAIztC,EAAAA,SAAS,EAAK,EAC1C,CAAEwS,EAAWk7B,CAAa,EAAI1tC,EAAAA,SAAS,EAAK,EAC5C,CAAEyU,EAAWk5B,CAAa,EAAI3tC,WAAS,EAAK,EAC5C,CAAEkS,EAAS07B,CAAW,EAAI5tC,EAAAA,SAAS,EAAI,EACvC,CAAE6tC,EAAUC,CAAY,EAAI9tC,EAAAA,SAAS6sC,CAAe,EAEpDkB,GAAoBtC,GAAkBtB,CAAY,EAElD6D,EAAcH,EAAW,EAE/B5tC,EAAAA,UAAU,IAAM,CACd6tC,EAAYjB,CAAe,CAC7B,EAAG,CAAEA,CAAgB,CAAC,EAEtB5sC,EAAAA,UAAU,IAAM,CACT+tC,IACHL,EAAa,EAAK,EAClBD,EAAa,EAAI,EAErB,EAAG,CAAEM,CAAY,CAAC,EAElB,MAAM9hC,EAAezD,GAAgB,EAE/B,CAAE,WAAAwlC,EAAW,EAAI/2B,EAAAA,oBAAoB,aAAcpY,GAAA,CACvD,QAAAoT,EACA,UAAAM,EACA,UAAAP,EACA,aAAA/F,EACA,GAAAgB,CACG2H,EAAAA,CAAAA,CACJ,EAED5U,EAAAA,UAAU,IAAM,CACVgS,GACF,WAAW,IAAM,CACfm7B,EAAa,EAAK,CACpB,EAAG,IAAI,CAEX,EAAG,CAAEn7B,CAAU,CAAC,EAEhB,MAAMi8B,GAAgB,IAAM,CACtBjB,EAAa,SAAW,CAAC5D,GAC3B4D,EAAa,QAAQ,MAAM,CAE/B,EAEMhH,GAAa,IAAM,CACnBiH,EAAe,UACFA,EAAe,QAAQ,yBAC/B,OAAQhE,GAAS,CACtB,GAAIG,GAAQH,EAAM,CAChB,MAAMnD,GAAWt/B,GACd8kC,GAAOlC,CAAI,EACTA,EAAc,KACf,kBAEE8E,EAAW5C,GAAOlC,CAAI,EACvBA,EAAc,KACf,OAEE+E,GAAUnF,GAAkBC,EAAMnD,GAAUoI,CAAQ,EAC1DhB,EAAQiB,EAAO,EACfV,EAAa,EAAI,EACjB1rC,EAASosC,EAAO,EAEpB,CAAC,EACDd,EAAU,QAAQ,EAEtB,EAEMe,GAAa,IAAM,CACnBpB,EAAa,UACfG,EAAa,EAAK,EAClBC,EAAQ,EAAE,EACVF,EAAQ,IAAI,EACZS,EAAW,EAAI,EACfF,EAAa,EAAK,EACbZ,GACHgB,EAAY,CAAC,EAEf9rC,EAAS,IAAI,EACbirC,EAAa,QAAQ,MAAQ,GAEjC,EAEMqB,GAAoB,MAAOxE,GAA0B,CACzD,GAAIA,EAAU,CACZsD,EAAa,EAAK,EAClB,MAAMmB,GAAkB/C,GAAY1B,CAAQ,EAC5C8D,EAAWW,EAAe,EAC1B,MAAMC,EAAkBD,GAClB,MAAMnF,GACRU,EACA8C,GAAa,MACbA,GAAa,OACbA,GAAa,OACf,EACE9C,EACJqD,EAAQqB,CAAe,EAClB1B,GACHgB,EAAY,CAAC,EAEf9rC,EAASwsC,CAAe,EACxBb,EAAaK,CAAW,EAE5B,EAEMx4B,GAAe,MAAOnW,GAA2C,CACrE,GAAIA,EAAE,OAAO,MAAO,CAClB+tC,EAAa,EAAK,EAClB,MAAMtD,GAAWzqC,EAAE,OAAO,MAAM,CAAC,EACjCivC,GAAkBxE,EAAQ,EAE9B,EAEM2E,GAAcpvC,GAAiB,CAEnC,GADAA,EAAE,eAAe,EACbA,EAAE,aAAa,MAAO,CACxB,MAAM+uC,GAAU/uC,EAAE,aAAa,MAAM,CAAC,EAClCorC,GAAY2D,GAASjE,EAAcO,CAAW,EAAE,QAClD4D,GAAkBF,EAAO,EAEzBhB,EAAa,EAAI,EAGvB,EAEA,OACExuC,EAAA,cAACuf,EAAAA,MAAArf,GAAA,CAAM,KAAOmvC,GAAW,KAAuBp5B,EAAAA,CAAAA,EAC9CjW,EAAA,cAACuuB,GAAA,CACC,QAAU+gB,GACV,OAASO,GACT,WAAcpvC,GAAiBA,EAAE,eAAe,EAChD,aAAe,IAAMouC,EAAY,EAAI,EACrC,aAAe,IAAMA,EAAY,EAAK,CAEtC7uC,EAAAA,EAAA,cAAC6X,EAAAA,IAAA,CAAI,GAAKw3B,EAAAA,EACRrvC,EAAA,cAAC2lB,EAAAA,UAAA,CACC,GAAK/R,EACL,MAAQ,CACN,MAAO,OACP,OAAQ,OACR,QAASA,GAAaN,EAAU,UAAY,MAC9C,GAEAtT,EAAA,cAAC8vC,EAAAA,MAAA,CACC,IAAMrF,EACFkC,GAAOlC,CAAI,EACT,IAAI,gBAAgBA,CAAY,EAChCA,EACF,GACJ,IAAI,gBACJ,UAAU,QACV,aAAe,EACf,QAAU72B,GAAaN,EAAU,UAAY,OAC7C,EAAE,OACF,EAAE,MACJ,CAAA,CACF,EACAtT,EAAA,cAACyM,QAAA,CACC,KAAK,OACL,QAAQ,OACR,OAAS8+B,EACT,IAAM8C,EACN,SAAWz3B,EAAAA,CACb,EACA5W,EAAA,cAACuf,EAAAA,MAAA,CACC,QAAU3L,GAAaN,EAAU,OAAS,UAC1C,WAAW,SACX,EAAE,MACF,QAAQ,IAAA,EAERtT,EAAA,cAAC0P,EAAA,CACC,GAAKy/B,GAAoBY,EAAAA,aAAeC,EAAAA,iBACxC,QAAQ,OACR,MACA38B,EACI,cACAu7B,EACE,QACA,eAEN,QAAUt7B,GAAW,CAACM,EAAY,eAAiB,OACnD,aAAW,kBAAA,CACb,EACA5T,EAAA,cAAC0P,EAAA,CACC,GAAKugC,EAAAA,aACL,QAAQ,OACR,MAAM,WACN,QAAUr8B,GAAa,CAACN,EAAU,eAAiB,MACrD,CAAA,EACAtT,EAAA,cAACQ,EAAA,CACC,QAAU6S,EAAY,KAAO,KAC7B,WAAW,SACX,aAAa,WACb,SAAS,SACT,SAAWg8B,GAAW,MACtB,UAAU,SACV,UAAU,QAAA,EAERh8B,EACE,qBACAo3B,GAAQkC,GAAOlC,CAAI,EAChBA,EAAc,KACf,eAAe0E,GAAoB,QAAU,WACrD,EACAnvC,EAAA,cAACoR,GAAA,CACC,GAAK,CACH,eAAgB,YAChB,MAAOiC,EAAY,cAAgB,OACrC,EACA,QAAUwC,GAAajC,EAAY,OAAS,SAC7C,EAAA,iBAED,EACA5T,EAAA,cAAC6X,EAAAA,IAAA,CAAI,QAAUhC,EAAY,QAAU,OAAS,GAAK,CAAA,EAC/Cs4B,EACEnuC,EAAA,cAAC2O,GAAA,IAAQ,EACT3O,EAAA,cAACmpC,GAAA,CAAW,OAAS8F,EAAW,CAEtC,CACF,EACAjvC,EAAA,cAACi5B,EAAAA,KAAA,CACC,GAAKrlB,GAAag7B,EAClB,MAAQ,CACN,QAASh7B,GAAag7B,EAAW,OAAS,OAC1C,eAAgB,QAClB,CAEA5uC,EAAAA,EAAA,cAACic,EAAA,OAAA,CACC,QAAU,EACV,SAAS,WACT,OAAO,IACP,eAAe,SACf,QAAQ,WACR,aAAe,EACf,MAAM,KACN,GAAK,CAEHmyB,EAAAA,EAAgB,SAClBpuC,EAAA,cAAC8tC,GAAA,CACC,aAAW,YACX,QAAUY,EAAU,OACpB,KAAOwB,EAAAA,UAAAA,CACT,EAEAlwC,EAAA,cAAC8tC,GAAA,CACC,aAAW,gBACX,QAAUD,GAAepD,CAAI,EAC7B,KAAO0F,EAAAA,WAAAA,CACT,EACAnwC,EAAA,cAAC8tC,GAAA,CACC,aAAW,cACX,QAAUxF,EAAgBqG,EAAY,OAASc,GAC/C,KAAOW,eACP,MAAM,aAAA,CACR,CACF,CACF,EACApwC,EAAA,cAACQ,EAAA,CACC,QAAQ,KACR,GAAK,CAAE,MAAO,UAAW,EACzB,QACAoT,GAAa,CAACN,GAAW,CAACuC,EACtB,eACA,MAAA,EAGF82B,GAAOlC,CAAI,GAAKU,GAAkBV,GAAe,IAAc,CACnE,CAEF,CACF,EACAzqC,EAAA,cAACknC,GAAA37B,GAAArL,GAAA,CAAA,EACMwuC,CADN,EAAA,CAEC,SAAW7mC,EACX,YAAc4mC,EACd,MAAQhE,EACR,WAAapD,GACb,QAAU/zB,EACV,IAAMg7B,EACN,gBAAkBF,EAAgB,YAClC,aAAeA,EAAgB,YAAA,CAAA,CACjC,EACApuC,EAAA,cAACqoC,GAAA98B,GAAArL,GAAA,CAAA,EACMyuC,CADN,EAAA,CAEC,cAAgBc,GAChB,SAAW5nC,GAAQ,MACrB,CAAA,CAAA,CACF,CAEJ,EC5WA,IAAA5B,GAAA,OAAA,eAAA5F,GAAA,OAAA,sBAAAV,GAAA,OAAA,UAAA,eAAAQ,GAAA,OAAA,UAAA,qBAAAoI,GAAA,CAAA,EAAAnI,EAAAb,IAAAa,KAAA,EAAA6F,GAAA,EAAA7F,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAA,EAAAa,CAAA,EAAAb,EAAAmM,GAAA,CAAA,EAAAtL,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAT,GAAA,KAAAS,EAAAb,CAAA,GAAAgJ,GAAA,EAAAhJ,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAAc,GAAA,QAAAd,KAAAc,GAAAD,CAAA,EAAAD,GAAA,KAAAC,EAAAb,CAAA,GAAAgJ,GAAA,EAAAhJ,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAiB,GAAA,CAAA,EAAAJ,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAK,KAAA,EAAAD,GAAA,KAAA,EAAAC,CAAA,GAAAQ,EAAA,QAAAR,CAAA,EAAA,IAAAL,EAAAK,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAS,GAAA,QAAAT,KAAAS,GAAA,CAAA,EAAAD,EAAA,QAAAR,CAAA,EAAA,GAAAO,GAAA,KAAA,EAAAP,CAAA,IAAAL,EAAAK,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAL,CAAA,EA8Ba,MAAA8wC,GAAmBzsC,GAQJ,CARI,IAAA8R,EAAA9R,EAC9B,CAAA,KAAAiE,EACA,MAAAgX,EACA,UAAAE,EACA,WAAAC,EACA,SAAArB,EACA,SAAUqC,EAAmBpK,UApC/B,EA8BgCF,EAO3BO,EAAAC,GAP2BR,EAO3B,CANH,OACA,QACA,YACA,aACA,WACA,UAAA,CAAA,EAGA,KAAM,CAAEu5B,EAAUC,CAAY,EAAI9tC,EAAAA,SAAS,CAAC,EAE5C,OACEpB,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,CAAAA,EAET,CAAC,CAAE,SAAAva,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAAC+tC,GAAA7tC,GAAA,CACC,SAAW,MAAOuqC,GAAsB,CACtC,GAAIA,EAAM,CACR,MAAM6F,EAAgB,MAAM/C,GAAS9C,CAAI,EACzCyE,EAAY,CAAC,EACb9rC,EAASktC,CAAa,EACtBtwB,EAAiBswB,CAAa,OAE9BpB,EAAY,CAAC,EACb9rC,EAAS,IAAI,EACb4c,EAAiB,IAAI,CAEzB,EACA,MAAQhf,EACR,SAAWA,EAAQ,EAAIiuC,EACvB,gBAAkB,GAClB,aAAa,SACRh5B,EAAAA,CAAAA,CACP,CAEJ,CAEJ,+fClBO,SAASs6B,GAAyC3sC,EAQ3B,CAR2B,IAAA8R,EAAA9R,EACvD,CAAA2nC,aAAAA,EAAe,IACf,YAAAyC,EACA,SAAA5qC,EAAWwS,EACX,SAAA,gBAAA46B,EAAkB56B,EAAAA,SAClB,mBAAA66B,EAAqB76B,EACrB,SAAA,YAAAk2B,EAAcnC,EA5DhB,EAsDyDj0B,EAOpDO,EAAAC,GAPoDR,EAOpD,CANH,eACA,cACA,WACA,kBACA,qBACA,aAAA,CAAA,EAGA,MAAMg7B,EAAWjtC,EAAyB,OAAA,IAAI,EACxC,CAAE4P,EAAWm7B,CAAa,EAAIptC,EAAAA,SAAS,EAAK,EAC5CkM,EAAezD,GAAgB,EAC/B,CAAE,gBAAA8mC,CAAgB,EAAIr4B,EAAoB,oBAAA,aAAcpY,GAAA,CAAE,UAAAmT,EAAW,aAAA/F,CAAiB2I,EAAAA,CAAAA,CAAM,EAC5F,CAAE8sB,EAAQ6N,CAAU,EAAIxvC,EAAAA,SAAS,EAAK,EACtC,CAAEyvC,EAAcC,CAAgB,EAAI1vC,EAAAA,SAAS,EAAE,EAE/C+tC,EAAoBtC,GAAkBtB,CAAY,EAExDlqC,EAAAA,UAAU,IAAM,CACVgS,GACF,WAAW,IAAM,CACfm7B,EAAa,EAAK,CACpB,EAAG,IAAI,CAEX,EAAG,CAAEn7B,CAAU,CAAC,EAEhB,MAAM09B,EAAc,IAAM,CACxBH,EAAWjuB,GAAS,CAACA,CAAI,CAC3B,EAEM2D,EAAc,IAAM,CACpBoqB,EAAS,SACXA,EAAS,QAAQ,MAAM,CAE3B,EAEMM,EAAsB,MAAOC,GAAuB,CACxD,MAAMC,EAAmB,MAAM,UAAU,MAAM,KAAKD,CAAQ,EACtDE,EAAa1S,EAAQgM,OAAAA,GAAS,CAClC,MAAM2G,EAAYvF,GAAYpB,EAAMc,EAAcO,CAAW,EAC7D,OAAKsF,EAAU,SACbN,EAAgBM,EAAU,cAAgB,EAAE,EAEvCA,EAAU,OACnB,EAAGF,CAAQ,EACPA,EAAS,OAAS,GAAKC,EAAW,SAAW,GAC/C3C,EAAa,EAAI,EAGnBgC,EAAgBW,EAAW,IAAK1G,GAASyC,GAAiBzC,CAAI,CAAC,CAAC,EAChEgG,EAAmBU,EAAW,IAAK1G,GAAS0C,GAAwB1C,CAAI,CAAC,CAAC,EAC1E,MAAM4G,EAAkBF,EAAW,IACjC,MAAO1G,GAAUmC,GAAYnC,CAAI,EAC7BD,GACAC,EACAuD,GAAa,MACbA,GAAa,OACbA,GAAa,OACf,EACEvD,CACN,EACA,QAAQ,IAAI4G,CAAe,EAAE,KAAMx6B,GAAW,CAC5CzT,EAASyT,CAAM,EACX65B,EAAS,UACXA,EAAS,QAAQ,MAAQ,GAE7B,CAAC,CACH,EAEMb,EAAcpvC,GAAiB,CACnCA,EAAE,eAAe,EACjBuwC,EAAoBvwC,EAAE,aAAa,KAAK,CAC1C,EAEMmW,EAAgBnW,GAA2C,CAC3DA,EAAE,OAAO,OACXuwC,EAAoBvwC,EAAE,OAAO,KAAK,CAEtC,EACA,OACET,EAAA,cAACuuB,GAAA,CACC,QAAUjI,EACV,WAAc7lB,GAAiBA,EAAE,eAAe,EAChD,OAASovC,EACT,aAAekB,EACf,aAAeA,CAAAA,EAEf/wC,EAAA,cAAC6X,EAAA3X,IAAAA,GAAA,CAAI,GAAKywC,CAAuB16B,EAAAA,CAAAA,EAC/BjW,EAAA,cAACuf,EAAA,MAAA,CACC,WAAW,SACX,eAAe,SACf,EAAE,OACF,EAAE,OACF,QAAU,CAEVvf,EAAAA,EAAA,cAAC0P,EAAA,CACC,GAAKy/B,EAAoBY,EAAAA,aAAeC,EACxC,iBAAA,QAAQ,OACR,MACA38B,EACI,cACA0vB,EACE,QACA,eAEN,aAAW,oBACX,GAAKoM,EAAoB,KAAO,CAAA,CAClC,EACAnvC,EAAA,cAACic,EAAAA,OAAA,CAAO,QAAU,EAAI,QAAU5I,EAAY,OAAS,MAAA,EACnDrT,EAAA,cAACQ,EAAA,CAAE,QAAQ,KAAK,UAAU,SAAS,UAAU,QAAA,EAAS,eACtC2uC,EAAoB,SAAW,QAAS,UACxD,EACAnvC,EAAA,cAACoR,GAAA,CAAK,GAAK,CAAE,eAAgB,YAAa,MAAO,OAAQ,CAAA,EAAI,UAClD+9B,EAAoB,QAAU,MACzC,CACF,EACAnvC,EAAA,cAACQ,EAAA,CAAE,QAAQ,KAAK,UAAU,SAAS,UAAU,SAAS,QAAU6S,EAAY,UAAY,MAAA,EACpFw9B,CACJ,EACA7wC,EAAA,cAACQ,EAAA,CAAE,QAAQ,KAAK,GAAK,CAAE,MAAO,UAAW,CAAA,EAAI,oBACxB2qC,GAAiBW,CAAW,CACjD,CACF,EACA9rC,EAAA,cAACyM,EAAA,MAAA,CACC,KAAK,OACL,QAAQ,OACR,OAAS8+B,EACT,SAAW30B,EACX,SAAW,GACX,IAAM85B,CAAAA,CACR,CACF,CACF,CAEJ,CC5LA,IAAAlxC,GAAA,OAAA,eAAAsmB,GAAA,OAAA,iBAAA9N,GAAA,OAAA,0BAAA+hB,GAAA,OAAA,sBAAA1gB,GAAA,OAAA,UAAA,eAAAqK,GAAA,OAAA,UAAA,qBAAAlO,GAAA,CAAA,EAAA,EAAA9U,IAAA,KAAA,EAAAlB,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAkB,CAAA,CAAA,EAAA,EAAA,CAAA,EAAAA,EAAApB,GAAA,CAAA,EAAA,IAAA,CAAA,QAAAoB,KAAA,IAAA,EAAA,CAAA,GAAA2Y,GAAA,KAAA,EAAA3Y,CAAA,GAAA8U,GAAA,EAAA9U,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAq5B,GAAA,QAAAr5B,KAAAq5B,GAAA,CAAA,EAAArW,GAAA,KAAA,EAAAhjB,CAAA,GAAA8U,GAAA,EAAA9U,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAf,GAAA,CAAA,EAAA,IAAAmmB,GAAA,EAAA9N,GAAA,CAAA,CAAA,EAqBgB,SAAAs5B,GAAgC,CAC9C,iBAAAtxB,EACA,QAAAuxB,EAAU37B,EACV,SAAA,WAAA47B,EACA,KAAA/G,EACA,cAAAnC,EAAgB,GAChB,OAAAmJ,EAAS,GACT,gBAAArD,EAAkBvE,EACpB,EAAqB,CACnB,KAAM,CAAE,QAAA6H,EAAS,aAAAC,EAAc,YAAAC,CAAY,EAAIxD,EACzC,CAAE,SAAAyD,CAAS,EAAIv5B,EAAAA,oBAAoB,YAAY,EAC/Cw5B,EAAsB9vB,EAAAA,cAAAA,EACtB+vB,EAAwB/vB,EAAAA,cACxBssB,EAAAA,EAAiB7qC,EAAAA,OAAqB,IAAI,EAC1C,CAAE0jC,EAAUC,CAAY,EAAIhmC,EAAAA,SAAS,EAAE,EACvC,CAAEu2B,EAAMqa,CAAQ,EAAI5wC,EAAS,SAAA,EAAI,EACjC,CAAEwS,EAAWk7B,CAAa,EAAI1tC,EAAS,SAAA,EAAK,EAC5C,CAAE6wC,EAAcC,CAAgB,EAAI9wC,EAAAA,SAAS,EAAI,EAEvDC,EAAAA,UAAU,IAAM,CACd,GAAIopC,EAAK,IAAK,CACZ,MAAM0B,EAAS,IAAI,MACnBA,EAAO,IAAM1B,EAAK,IAClB0B,EAAO,OAAS,IAAM,CACpB+F,EAAgB,EAAK,CACvB,EAEJ,EAAG,CAAEzH,EAAK,WAAY,CAAC,EAEvB,MAAMpD,EAAa,SAAY,CAC7B,GAAIiH,EAAe,SAAW1B,GAAYnC,CAAI,EAC7B6D,EAAe,QAAQ,yBAC/B,OAAO,MAAOhE,GAAS,CAC5B,GAAIG,GAAQH,EAAM,CAChB,MAAMkF,EAAUnF,GAAkBC,EAAMnD,GAAYsD,EAAK,KAAMA,EAAK,IAAI,EACxE+G,EAAW/G,CAAI,EACf8G,EAAQ/B,EAAS/E,EAAK,GAAG,EACzBzqB,EAAiB,CAAEwvB,CAAQ,CAAC,EAEhC,CAAC,EACDsC,EAAoB,QAAQ,UACnBrH,EAAK,IAAK,CACnB,MAAM+E,EAAU,MAAMpE,GAAeX,EAAMtD,CAAQ,EACnDqK,EAAW/G,CAAI,EACf8G,EAAQ/B,EAAS/E,EAAK,GAAG,EACzBzqB,EAAiB,CAAEwvB,CAAQ,CAAC,EAEhC,EAEMC,EAAa,IAAM,CACvBuC,EAAQ,EAAK,EACb,WAAW,IAAM,CACfR,EAAW/G,CAAI,CACjB,EAAG,GAAG,CACR,EAEA,OACEzqC,EAAA,cAAC2lB,GAAA,CACC,GAAKgS,EACL,UAAU,OACV,OAAS,GACT,cAAiB8Z,EAAe,EAAN,IAC1B,aAAe,GAAA,EAEfzxC,EAAA,cAAC6X,MAAA,CAAI,GAAKg6B,CACR7xC,EAAAA,EAAA,cAACic,EAAAA,OAAA,CACC,EAAE,OACF,EAAE,OACF,aAAe,EACf,WAAW,SACX,eAAe,gBACf,GAAK,EACL,GAAKwuB,EAAK,aAAe,CAAC72B,EAAY,EAAI,GAE1C5T,EAAA,cAACic,EAAA,OAAA,CAAO,QAAU,EAAI,WAAW,QAAQ,KAAK,KAC1C2wB,EAAAA,GAAYnC,CAAI,EACdA,EAAK,aAAewH,EAElBjyC,EAAA,cAAC0P,EAAA,CACC,GAAKyiC,EAAAA,WACL,QAAQ,WACR,MAAM,WACN,QAAQ,KACR,aAAa,IACb,EAAE,GAAA,CACJ,EAGAnyC,EAAA,cAACoyC,EAAA,MAAA,CACC,IAAM3H,EAAK,KAAO,GAClB,IAAI,gBACJ,UAAU,QACV,QAAUA,EAAK,IAAM,UAAY,OACjC,aAAa,IACb,QAAQ,IAAA,CACV,EAGFzqC,EAAA,cAAC0P,EAAA,CACC,GAAKugC,EAAAA,aACL,QAAQ,KACR,EAAE,IACF,MAAM,UACR,CAAA,EAGJjwC,EAAA,cAACuf,EAAAA,MAAA,CACC,WAAW,QACX,eAAe,QACf,QAAQ,IACR,KAAK,MAAA,EAELvf,EAAA,cAACQ,EAAA,CACC,QAAQ,KACR,WAAW,SACX,aAAa,WACb,SAAS,SACT,KAAK,MAAA,EAEHiqC,GAAM,IACV,EACAzqC,EAAA,cAACQ,EAAA,CAAE,QAAQ,KAAK,GAAK,CAAE,MAAO,UAAW,CACrCiqC,EAAAA,GAAM,MAAQU,GAAiBV,EAAK,IAAI,CAC5C,CACF,CACF,EACAzqC,EAAA,cAACic,EAAA,OAAA,CACC,QAAQ,IACR,eAAe,SACf,aAAa,IACb,QAAQ,YACR,QAAUwuB,EAAK,YAAc,OAAS,OACtC,EAAE,GAEAiH,EAAAA,GACF1xC,EAAA,cAAC8tC,GAAA,CACC,aAAW,aACX,QAAUgE,EAAoB,OAC9B,KAAO5B,EAAAA,WACT,EAEAlwC,EAAA,cAAC8tC,GAAA,CACC,aAAW,iBACX,QAAUD,GAAepD,CAAI,EAC7B,KAAO0F,EAAAA,WAAAA,CACT,EACAnwC,EAAA,cAACkP,EAAA,YAAA,CACC,QAAUo5B,EAAgByJ,EAAsB,OAAStC,CAAAA,CAC3D,CACF,CACF,EACAzvC,EAAA,cAAC6X,EAAAA,IAAA,CACC,EAAE,OACF,GAAG,KACH,GAAG,IACH,GAAG,IACH,GAAG,KACH,QAAU4yB,EAAK,YAAc,QAAU,MAEvCzqC,EAAAA,EAAA,cAACmpC,GAAA,CACC,OAASsB,EAAK,MAAQA,GAAM,UAAY,GAAKA,EAAK,KAAO,EACzD,UAAY,IAAMqE,EAAa,EAAI,CAAA,CACrC,CACF,EACE4C,GACF1xC,EAAA,cAACknC,GAAA37B,GAAArL,GAAA,GACM4xC,CAAAA,EADN,CAEC,SAAW3K,GAAYsD,EAAK,KAC5B,YAAcrD,EACd,MAAQqD,EAAK,IACb,aAAekH,EACf,gBAAkBC,EAClB,WAAavK,EACb,QAAUuF,GAAYnC,CAAI,EAC1B,IAAM6D,CAAAA,CAAAA,CACR,EAEAtuC,EAAA,cAACqoC,GAAA98B,GAAArL,GAAA,GACM6xC,CADN,EAAA,CAEC,cAAgBtC,EAChB,SAAWtI,GAAYsD,EAAK,IAC9B,CAAA,CAAA,CACF,CACF,CAEJ,8fC/LO,SAAS4H,GAAqCzuC,EAU3B,CAV2B,IAAA8R,EAAA9R,EACnD,CAAA,MAAAsoC,EACA,eAAAoG,EACA,SAAAlvC,EAAWwS,EAAAA,SACX,WAAA47B,EAAa57B,EAAAA,SACb,QAAA27B,EAAU37B,EACV,SAAA,cAAA0yB,EACA,gBAAA8F,EAAkBvE,GAClB,gBAAA0I,EAAkB,EAvBpB,EAeqD78B,EAShDO,EAAAC,GATgDR,EAShD,CARH,QACA,iBACA,WACA,aACA,UACA,gBACA,kBACA,iBAGA,CAAA,EAAA,KAAM,CAAE88B,EAAyBC,CAA2B,EAAIrxC,EAAAA,SAASkxC,CAAc,EACjF,CAAEI,EAAaC,CAAe,EAAIvxC,WAAS,EAAK,EAEhDwxC,EAAiB1G,GAAO,IAAKzB,GACjCkC,GAAOlC,CAAI,EACP0C,GAAwB1C,CAAuB,EAC/CA,CAAAA,EAGAoI,EAAUpvC,EAAAA,OAAuB,IAAI,EAC3CpC,EAAU,UAAA,IAAM,CACd,GAAIixC,GAAkBE,GAA2BtG,EAC/C,GAAIqG,EAAiB,CACnB,MAAM/f,EAASwZ,GAAwBwG,EAAyBF,EAAgBpG,CAAK,EACrFuG,EAA2BjgB,CAAM,OAEjCigB,EAA2BH,CAAc,EAGzCO,EAAQ,SACVF,EAAetF,GAAcwF,EAAQ,OAAO,CAAC,CAEjD,EAAG,CAAEP,EAAgBpG,CAAM,CAAC,EAE5B,MAAMuF,EAASe,EACXt7B,EAAAA,IAAKuzB,GAAYA,EAAK,QAAU,GAAO+H,CAA8B,EACrE,GAEJ,OACExyC,EAAA,cAACuf,EAAAA,MAAArf,GAAA,CACC,IAAM2yC,EACN,QAAU,EACV,KAAK,KACL,GAAKH,EAAc,EAAI,EACvB,UAAU,MACLz8B,EAAAA,CAAAA,EAEHu8B,GAA2BxuC,MAAKymC,GAChCzqC,EAAA,cAACsxC,GAAA,CACC,iBAAmBluC,EACnB,KAAOqnC,EACP,IAAMA,EAAK,IACX,WAAa+G,EACb,cAAgBlJ,EAChB,OAASmJ,EACT,gBAAkBrD,CAAAA,CACpB,EACCoE,CAAuB,EACxBI,GAAkB5uC,MAAKymC,GACvBzqC,EAAA,cAACsxC,GAAA,CACC,iBAAmBluC,EACnB,QAAUmuC,EACV,KAAO9G,EACP,IAAMA,EAAK,IACX,WAAa+G,EACb,cAAgBlJ,EAChB,gBAAkB8F,CACpB,CAAA,EACCwE,CAAc,CACnB,CAEJ,8fCjEO,SAASE,GAAuClvC,EAc3B,CAd2B,IAAA8R,EAAA9R,EACrD,CAAA2nC,aAAAA,EAAe,IACf,YAAAyC,EACA,SAAA5qC,EAAWwS,EAAAA,SACX,MAAAs2B,EAAQ,KACR,eAAAoG,EACA,WAAAd,EAAa,KACb,cAAAlJ,EAAgB,GAChB,YAAAwD,EAAcnC,GACd,cAAAoJ,EAAgB,GAChB,gBAAAR,EAAkB,GAClB,gBAAAnE,EAAkBvE,GAClB,QAAA3xB,CAlCF,EAsBuDxC,EAalDO,EAAAC,GAbkDR,EAalD,CAZH,eACA,cACA,WACA,QACA,iBACA,aACA,gBACA,cACA,gBACA,kBACA,kBACA,SAAA,CAAA,EAGA,KAAM,CAAEs9B,EAAaC,CAAe,EAAI7xC,EAAAA,SAAc,CAAE,CAAA,EAClD,CAAE8xC,EAAcC,CAAgB,EAAI/xC,EAAAA,SAAc,CAAA,CAAE,EAEpDgyC,EAAgBlrB,GAAemrB,EAAAA,UAAW5I,GAASA,EAAK,MAAQviB,EAAIgrB,CAAY,EAEhF3B,EAAU,CAAC9G,EAAYviB,IAAe,CAC1C,MAAMorB,EAAYnG,GAAwB1C,CAAI,EACxC8I,EAAiBH,EAAalrB,CAAE,EAChCsrB,EAAkBpR,EAAAA,OAAOmR,EAAgB,EAAGL,CAAY,EACxDjC,EAAW5O,SAAOkR,EAAgBD,EAAWE,CAAe,EAClEL,EAAgBlC,CAAe,CACjC,EAEM1I,EAAgBkC,GAAyB,CAC7C,MAAMgJ,EAAiBL,EAAa3I,EAAK,GAAG,EACtC+I,EAAkBpR,EAAAA,OAAOqR,EAAgB,EAAGP,CAAY,EAC9DC,EAAgBK,CAAe,CACjC,EAEME,EAAqBC,GAAqB,CAC1CZ,GACFE,EAAeU,CAAW,CAE9B,EAEA,OACE3zC,EAAA,cAACuf,EAAAA,MAAArf,GAAA,CACC,QAAU,EACV,KAAK,UACL,KAAK,SACA+V,EAAAA,CAAAA,EAELjW,EAAA,cAACuwC,GAAA,CACC,aAAehF,EACf,YAAcyC,EACd,SAAW5qC,EACX,gBAAkBswC,EAClB,mBAAqBP,EACrB,YAAcrH,EACd,QAAU5zB,CAAAA,CACZ,EACAlY,EAAA,cAACqyC,GAAA,CACC,MAAQnG,GAASgH,EACjB,SAAW9vC,EACX,eACE2P,UAAQm5B,CAAK,IAAMoG,GAAgB,SAAW,GAAKzuC,EAAAA,MAAMyuC,CAAc,GACnEU,EACAV,EAEN,WAAad,GAAcjJ,EAC3B,cAAgBD,EAChB,gBAAkBiK,EAClB,gBAAkBnE,EAClB,QAAUmD,CACZ,CAAA,CACF,CAEJ,8fChEa,MAAAqC,GAAwBhwC,GAQJ,CARI,IAAA8R,EAAA9R,EACnC,CAAAiE,KAAAA,EACA,MAAAgX,EACA,UAAAE,EACA,WAAAC,EACA,SAAArB,EACA,SAAUqC,EAAmBpK,EApC/B,QAAA,EA8BqCF,EAOhCO,EAAAC,GAPgCR,EAOhC,CANH,OACA,QACA,YACA,aACA,WACA,UAGA,CAAA,EAAA,MAAMm+B,EAAYC,GAAsB,CACtC,MAAM3H,EAASnoC,MAAK+vC,IAAY,CAC9B,KAAM,MACN,IAAKA,EACL,KAAM,EACR,GAAID,CAAO,EAGX,OAFuB9vC,EAAAA,IAAKymC,GAAUkC,GAAOlC,CAAI,EAC7CA,EAAO2C,GAAwB3C,CAAI,EAAI0B,CAAM,CAEnD,EAEA,OACEnsC,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,CAAAA,EAET,CAAC,CAAE,SAAAva,EAAU,MAAApC,CAAM,IAQjBhB,EAAA,cAAC8yC,GAAA5yC,GAAA,CACC,SAAW,MAAOgsC,GAAyB,CACzC,GAAKn5B,UAAQm5B,CAAK,EAShB9oC,EAAS,EAAE,EACX4c,EAAiB,EAAE,MAVA,CACnB,MAAMixB,EAAW/E,GAAO,IAAI,MAAOzB,GAAS8C,GAAS9C,CAAI,CACrDwG,EAAAA,GACF,QAAQ,IAAIA,CAAQ,EAAE,KAAMp6B,GAAW,CACrCzT,EAAS4wC,EAAAA,OAAOhzC,EAAO6V,CAAM,CAAC,EAC9BmJ,EAAiBnJ,CAAM,CACzB,CAAC,EAMP,EACA,cAAgB,GAChB,gBAAkB,GAClB,WAxBkB4zB,GAAqB,CACzC,MAAMwJ,EAAeZ,EAAAA,UAAWa,GAAQA,IAAQzJ,EAAK,IAAKzpC,CAAK,EACzDmzC,EAAY/R,EAAO6R,OAAAA,EAAc,EAAGjzC,CAAK,EAC/CoC,EAAS+wC,CAAS,CACpB,EAqBI,aAAa,UACb,gBAAkB,CAAE,QAAS,GAAM,aAAc,GAAM,YAAa,EAAM,EAC1E,cAAgB,GAChB,MAAQN,EAAS7yC,CAAK,CAAA,EACjBiV,CACP,CAAA,CAGN,CAEJ,EC7Eam+B,GAAyB,CAAC,CACrC,SAAAtrC,EACA,MAAAsG,EAAQilC,GACR,UAAAC,EAAY,aACd,IACEt0C,EAAA,cAACu0C,EAAAA,eAAA,CAAe,SAAW,GAAO,MAAQnlC,CACxCpP,EAAAA,EAAA,cAAC2J,GAAY,SAAZ,CAAqB,MAAQ2qC,CAAAA,EAC1BxrC,CACJ,CACF,EC1BF,IAAAvJ,GAAA,OAAA,eAAAmB,GAAA,OAAA,sBAAApB,GAAA,OAAA,UAAA,eAAAe,GAAA,OAAA,UAAA,qBAAAZ,GAAA,CAAAW,EAAAR,EAAAa,IAAAb,KAAAQ,EAAAb,GAAAa,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAa,CAAA,CAAA,EAAAL,EAAAR,CAAA,EAAAa,EAAAN,GAAA,CAAAC,EAAAR,IAAA,CAAA,QAAAa,KAAAb,IAAAA,EAAA,CAAA,GAAAN,GAAA,KAAAM,EAAAa,CAAA,GAAAhB,GAAAW,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,GAAAC,GAAA,QAAAD,KAAAC,GAAAd,CAAA,EAAAS,GAAA,KAAAT,EAAAa,CAAA,GAAAhB,GAAAW,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,OAAAL,CAAA,EAAAmV,GAAA,CAAAnV,EAAAR,IAAA,CAAA,IAAAa,EAAA,CAAA,EAAA,QAAA,KAAAL,EAAAd,GAAA,KAAAc,EAAA,CAAA,GAAAR,EAAA,QAAA,CAAA,EAAA,IAAAa,EAAA,CAAA,EAAAL,EAAA,CAAA,GAAA,GAAAA,GAAA,MAAAM,GAAA,QAAA,KAAAA,GAAAN,CAAA,EAAAR,EAAA,QAAA,CAAA,EAAA,GAAAS,GAAA,KAAAD,EAAA,CAAA,IAAAK,EAAA,CAAA,EAAAL,EAAA,CAAA,GAAA,OAAAK,CAAA,EAoGa,MAAA+zC,GAAQ5wC,GAA8C,CAA9C,IAAA8R,EAAA9R,EAAE,CAAAsU,QAAAA,EAAU,SApGjC,EAoGqBxC,EAA0B3V,EAAAmW,GAA1BR,EAA0B,CAAxB,SACrB,CAAA,EAAA,OAAA1V,EAAA,cAACy0C,EAAAA,KAAAv0C,GAAA,CAAW,QAAUgY,GAAenY,CAAQ,CAAA,CAAA,ECvFlC20C,GAAqB,CAAC,CACjC,kBAAAC,EAAoB,GACpB,oBAAAC,EAAsB,EACxB,IACE50C,EAAA,cAAC60C,EAAAA,mBAAA,KACC70C,EAAA,cAACic,SAAA,CAAO,WAAW,SAAS,EAAE,MAC1B04B,EAAAA,GACA30C,EAAA,cAACm3B,SAAA,CAAO,QAAQ,WAAW,aAAa,KAAK,QAAQ,GACnDn3B,EAAAA,EAAA,cAACQ,EAAA,KAAE,GAAC,CACN,EAEAo0C,GACA50C,EAAA,cAACic,EAAAA,OAAA,CAAO,WAAW,SAAS,EAAE,MAC5Bjc,EAAAA,EAAA,cAAC80C,EAAAA,QAAA,CAAQ,YAAY,WAAW,EAAE,KAAM,CAAA,EACxC90C,EAAA,cAAC+0C,EAAAA,uBAAA,CAAuB,OAAO,MAC7B/0C,EAAAA,EAAA,cAAC0P,EAAA,CACC,GAAKslC,EACL,eAAA,MAAM,6BACN,QAAU,CACZ,CAAA,CACF,EACAh1C,EAAA,cAACi1C,yBAAA,KACCj1C,EAAA,cAAC0P,EAAA,CACC,GAAKwlC,EAAAA,iBACL,MAAM,6BACN,QAAU,CAAA,CACZ,CACF,CACF,CAEJ,CACF,EC3CIC,GAAQ,0BAEDC,GAAsBp0C,GAA2B,CAC5D,GAAI6C,EAAAA,MAAM7C,CAAK,GAAK,OAAO,MAAM,WAAWA,CAAe,CAAC,EAC1D,OAAOA,EAGT,MAAMq0C,EAAahtC,QAAM,IAAK,GAAGrH,GAAO,EAClCs0C,EAAUC,EAAAA,KAAKF,CAAU,EACzBG,EAAc1xC,EAAAA,KAAKuxC,CAAU,EAEnC,GAAIxxC,QAAM2xC,CAAW,EACnB,OAAOx0C,EAGT,MAAMy0C,EAAgBC,EAAAA,MAAMP,GAAOK,CAAW,EAC9C,GAAI3xC,EAAAA,MAAM4xC,CAAa,EACrB,OAAOz0C,EAGT,MAAM20C,EAAsBC,SAAOL,EAAKE,KAAAA,CAAa,CAAW,EAC1DI,EAAwBL,EAAY,OAASG,EAEnD,OAAO,WACL,WAAW,GAAGL,KAAWE,GAAa,EACnC,QAAQK,CAAqB,CAClC,CACF,EC7BA,IAAAr1C,GAAA,OAAA,eAAAE,GAAA,OAAA,sBAAAgL,GAAA,OAAA,UAAA,eAAAvF,GAAA,OAAA,UAAA,qBAAAtG,GAAA,CAAA,EAAA,EAAA,IAAA,KAAA,EAAAW,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAAlB,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAAoM,GAAA,KAAA,EAAA,CAAA,GAAA7L,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAAa,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAyF,GAAA,KAAA,EAAA,CAAA,GAAAtG,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAqG,GAAA,CAAA,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,KAAA,EAAAwF,GAAA,KAAA,EAAA,CAAA,GAAA,EAAA,QAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,GAAA,GAAA,GAAA,MAAAhL,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAA,EAAA,QAAA,CAAA,EAAA,GAAAyF,GAAA,KAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,GAAA,OAAA,CAAA,EAsBO,MAAM4H,GAAenK,GASJ,CATI,IAAA8R,EAAA9R,EAC1B,CAAA,QAAAsU,EAAU,UACV,KAAAY,EAAO,KACP,SAAA1V,EAAWwS,EACX,SAAA,cAAAkgC,EAAgBlgC,EAAAA,SAChB,oBAAAg/B,EAAsB,GACtB,KAAA/sC,EACA,qBAAAkuC,EAAuB,EA7BzB,EAsB4BrgC,EAQvBO,EAAAC,GARuBR,EAQvB,CAPH,UACA,OACA,WACA,gBACA,sBACA,OACA,sBAAA,CAAA,EAGA,MAAMsgC,EAAkBD,GAAwB,CAC9C,KAAM,EACR,EAEME,EAAmBF,EAAuB,IAAO,EACjDn/B,EAAgBnW,GAA8C,CAClE,MAAMuW,EAAQmE,EAAAA,UAAU1a,EAAG6H,EAAAA,KAAK,CAAE,SAAU,OAAQ,EAAG7H,CAAC,CAAC,EACzDq1C,EAAc9+B,CAAK,EAEnB,MAAMhW,EAAQo0C,GAAmB,WAAWp+B,CAAK,EAAIi/B,CAAgB,EAE/DC,EAAc,OAAO,MAAMl1C,CAAK,EAClC,GACAA,EAEJoC,EAAS,GAAG8yC,GAAa,CAC3B,EAEA,OACEl2C,EAAA,cAACm2C,cAAAj2C,GAAAA,GAAA,CACC,QAAUgY,EACV,KAAOY,EACP,SAAWlC,EACX,GAAK/O,CACAmuC,EAAAA,CAAAA,EACA//B,CAELjW,EAAAA,EAAA,cAACo2C,EAAAA,iBAAA,CAAiB,SAAWx/B,EAAe,EAC5C5W,EAAA,cAAC00C,GAAA,CACC,kBAAoBqB,EACpB,oBAAsBnB,CAAAA,CACxB,CACF,CAEJ,EClEA,IAAAlxB,GAAA,OAAA,eAAApkB,GAAA,OAAA,sBAAA6G,GAAA,OAAA,UAAA,eAAAwmB,GAAA,OAAA,UAAA,qBAAAjhB,GAAA,CAAA,EAAA,EAAA,IAAA,KAAA,EAAAgY,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA4D,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAAnhB,GAAA,KAAA,EAAA,CAAA,GAAAuF,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAApM,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAqtB,GAAA,KAAA,EAAA,CAAA,GAAAjhB,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA2Y,GAAA,CAAA,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA9kB,KAAA,EAAA4G,GAAA,KAAA,EAAA5G,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAD,GAAA,QAAAC,KAAAD,GAAA,CAAA,EAAA,EAAA,QAAAC,CAAA,EAAA,GAAAotB,GAAA,KAAA,EAAAptB,CAAA,IAAA,EAAAA,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAA,CAAA,EAeO,MAAM62C,GAAmBx9B,EAAAA,WAAkD,CAAChV,EAWhFY,IAAQ,CAXwE,IAAAkR,EAAA9R,EACjF,MAAAiE,EACA,MAAAgX,EACA,UAAAE,EACA,WAAAC,EACA,SAAArB,EACA,SAAUqC,EAAmBpK,EAAAA,SAC7B,qBAAAmgC,EAAuB,GACvB,iBAAAlgB,EACA,kBAAAC,CAxBF,EAemFpgB,EAU9EO,EAAAC,GAV8ER,EAU9E,CATH,OACA,QACA,YACA,aACA,WACA,WACA,uBACA,mBACA,sBAGA,MAAM2gC,EAAe,CAACr1C,EAAes1C,IACnCP,EACIX,GAAmBp0C,EAAQs1C,CAAM,EACjCt1C,EAGN,OACEhB,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,EACX,IAAMnZ,CAAAA,EAEJ,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IAAM,CACzB,MAAMu1C,EAAe1yC,EAAAA,MAAM7C,CAAK,GAAK,OAAO,MAAM,WAAWA,CAAK,CAAC,EAC/D,GACAq1C,EAAar1C,EAAO,GAAG,EAErB,CAAEw1C,EAAcC,CAAgB,EAAIr1C,EAAAA,SAASm1C,CAAY,EAE/D,OACEv2C,EAAA,cAAC41B,GAAA,CACC,iBAAmBC,EACnB,kBAAoBC,CAAAA,EAEpB91B,EAAA,cAAC+N,GAAA7N,GAAA,CACC,KAAO2H,EACP,cAAY,6BACZ,cAAiBsN,GAAM,CACrBshC,EAAgBthC,CAAC,EACjB,MAAMuhC,EAASL,EAAa,WAAWlhC,CAAC,EAAG,GAAI,EAE/C/R,EAASszC,CAAM,EACf12B,EAAiB02B,CAAM,CACzB,EACA,MAAQF,EACR,qBAAuBT,CAClB9/B,EAAAA,CAAAA,CACP,CACF,CAEJ,CACF,CAEJ,CAAC,ECzED,IAAA9P,GAAA,OAAA,eAAA/F,GAAA,OAAA,sBAAAT,GAAA,OAAA,UAAA,eAAAQ,GAAA,OAAA,UAAA,qBAAAsL,GAAA,CAAA7L,EAAAF,EAAAH,IAAAG,KAAAE,EAAAuG,GAAAvG,EAAAF,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAH,CAAA,CAAA,EAAAK,EAAAF,CAAA,EAAAH,EAAAilB,GAAA,CAAA5kB,EAAAF,IAAA,CAAA,QAAAH,KAAAG,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAAH,CAAA,GAAAkM,GAAA7L,EAAAL,EAAAG,EAAAH,CAAA,CAAA,EAAA,GAAAa,GAAA,QAAAb,KAAAa,GAAAV,CAAA,EAAAS,GAAA,KAAAT,EAAAH,CAAA,GAAAkM,GAAA7L,EAAAL,EAAAG,EAAAH,CAAA,CAAA,EAAA,OAAAK,CAAA,EAAAH,GAAA,CAAAG,EAAAF,IAAA,CAAA,IAAAH,EAAA,CAAA,EAAA,QAAAc,KAAAT,EAAAD,GAAA,KAAAC,EAAAS,CAAA,GAAAX,EAAA,QAAAW,CAAA,EAAA,IAAAd,EAAAc,CAAA,EAAAT,EAAAS,CAAA,GAAA,GAAAT,GAAA,MAAAQ,GAAA,QAAAC,KAAAD,GAAAR,CAAA,EAAAF,EAAA,QAAAW,CAAA,EAAA,GAAAF,GAAA,KAAAP,EAAAS,CAAA,IAAAd,EAAAc,CAAA,EAAAT,EAAAS,CAAA,GAAA,OAAAd,CAAA,EAwBO,MAAM4O,GAAyByK,EAAAA,WAAW,CAAChV,EAQlBY,IAAa,CARK,IAAAkR,EAAA9R,EAChD,CAAAsU,QAAAA,EAAU,QACV,KAAAqB,EACA,aAAc+G,EACd,gBAAAq2B,EAAkB,GAClB,aAAAC,EAAe,YACf,KAAA99B,CA9BF,EAwBkDpD,EAO7CO,EAAAC,GAP6CR,EAO7C,CANH,UACA,OACA,aACA,kBACA,eACA,MAGA,CAAA,EAAA,KAAM,CAAEnJ,EAAYsqC,CAAc,EAAIz1C,EAAAA,SAAS,EAAK,EAC9C,CAAE,UAAAgX,EAAW,SAAA0+B,CAAS,EAAIx+B,sBAAoB,yBAA0B,CAAE,KAAAQ,EAAM,QAAAZ,CAAQ,CAAC,EAC/F,OACElY,EAAA,cAAC6X,EAAAA,IAAA,CACC,aAAe,IAAMg/B,EAAc,EAAI,EACvC,aAAe,IAAMA,EAAc,EAAK,EACxC,GAAKz+B,CAEHu+B,EAAAA,GACA32C,EAAA,cAAC6X,EAAAA,IAAA,CAAI,GAAKi/B,CACR92C,EAAAA,EAAA,cAACsM,GAAA,CAAQ,WAAaC,EAAa,MAAQqqC,EAAe,KAAK,KAAM,CAAA,CACvE,EAEF52C,EAAA,cAACqgB,EAAAngB,GAAA,CACC,QAAUgY,EACV,KAAOqB,EACP,aAAa+G,EACb,IAAM9b,EACN,KAAOsU,CAAAA,EACF7C,CACP,CAAA,CACF,CAEJ,CAAC,olBCnCM,MAAMtJ,GAAY/I,GAKP,CALO,IAAA8R,EAAA9R,EACvB,SAAAsU,EAAU,UACV,OAAA6gB,EACA,SAAAjwB,CAxBF,EAqByB4M,EAIpBO,EAAAC,GAJoBR,EAIpB,CAHH,UACA,SACA,aAGA,OAAA1V,EAAA,cAAC+2C,WAAAxrC,GAAArL,GAAA,CAAoB+V,EAAAA,CAAAA,EAApB,CAA2B,QAAUiC,EAAU,YAAY,SAAI,KAAO6gB,IACnEjwB,CACJ,CAAA,EC1BIkuC,GAAiBh2C,GACrBgc,KAAG,MAAOhc,CAAK,GAAK40C,EAAAA,OAAO50C,CAAK,EAAI,GAAK,OAAOA,EAAM,CAAC,GAAM,SAElDi2C,GAAmB,CAC9Bj2C,EACA2U,IAEI,OAAO3U,GAAU,SACZgnB,EAAAA,KAAKkvB,SAAO,QAASl2C,CAAK,EAAG2U,CAAc,EAGhDqhC,GAAch2C,CAAK,EACdy9B,EACJtnB,OAAAA,GAAYnW,EAAO,SAASmW,EAAO,KAAK,EACzCxB,CACF,EAGK3U,ECrBT,IAAAmU,GAAA,OAAA,eAAAC,GAAA,OAAA,iBAAAiE,GAAA,OAAA,0BAAA3Z,GAAA,OAAA,sBAAAgM,GAAA,OAAA,UAAA,eAAA7L,GAAA,OAAA,UAAA,qBAAAN,GAAA,CAAA,EAAA,EAAAK,IAAA,KAAA,EAAAuV,GAAA,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAvV,CAAA,CAAA,EAAA,EAAA,CAAA,EAAAA,EAAA2I,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA3I,KAAA,IAAA,EAAA,CAAA,GAAA8L,GAAA,KAAA,EAAA9L,CAAA,GAAAL,GAAA,EAAAK,EAAA,EAAAA,CAAA,CAAA,EAAA,GAAAF,GAAA,QAAAE,KAAAF,GAAA,CAAA,EAAAG,GAAA,KAAA,EAAAD,CAAA,GAAAL,GAAA,EAAAK,EAAA,EAAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAc,GAAA,CAAA,EAAA,IAAA0U,GAAA,EAAAiE,GAAA,CAAA,CAAA,EAAA7D,GAAA,CAAA,EAAA,IAAA,CAAA,IAAA5V,EAAA,CAAA,EAAA,QAAAQ,KAAA,EAAAsL,GAAA,KAAA,EAAAtL,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAAR,EAAAQ,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAV,GAAA,QAAAU,KAAAV,GAAA,CAAA,EAAA,EAAA,QAAAU,CAAA,EAAA,GAAAP,GAAA,KAAA,EAAAO,CAAA,IAAAR,EAAAQ,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAR,CAAA,EA2Ia,MAAAgN,GAASgM,EAAW,WAAA,CAA8ChV,EAkB7EY,IACG,CAnB0E,IAAAkR,EAAA9R,EAC7E,CAAA+R,QAAAA,EACA,QAAApS,EACA,SAAAH,EAAWwS,WACX,MAAAvS,EAAQuS,EACR,SAAA,SAAAtS,EAAWsS,EAAAA,SACX,UAAAC,EACA,YAAAC,EAAc,IAAM,KACpB,cAAeC,EACf,aAAA2nB,EAAe,KACf,UAAAC,EAAY,KACZ,YAAAjQ,EAAc,GACd,MAAA1sB,EACA,KAAAuY,EACA,WAAA9E,EACA,4BAAA0iC,EAA8Bh9B,SAAO,CAAC,CA1JxC,EA2I+EzE,EAgB1EO,EAAAC,GAhB0ER,EAgB1E,CAfH,UACA,UACA,WACA,QACA,WACA,YACA,cACA,cACA,eACA,YACA,cACA,QACA,OACA,aACA,6BAKA,CAAA,EAAA,MAAMkB,EAAezT,GAAyB,CAC5C,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,MAAOyZ,EAAAA,GAAG,MAAOhc,CAAK,EAAKA,EAAgB,CAC7C,CAAA,CAAC,EAEKu9B,EAAmBpR,EAAAA,QACvB,IAAMkQ,GAAiB5oB,CAAU,EACjC,CAAE0iC,EAA8B,CAAA,CAClC,EAEMC,EAAc3zC,EAAAA,OAClBkS,CACF,EACM0hC,EAAkBlqB,EAAQ,QAAA,KACzB1O,EAAO24B,OAAAA,EAAY,QAASzhC,CAAO,IACtCyhC,EAAY,QAAUzhC,GAEjByhC,EAAY,SAClB,CAAEzhC,CAAQ,CAAC,EAEd,OACE3V,EAAA,cAAC6X,MAAA,CAAI,EAAE,OAAO,cAAc9B,EAAS,OAAO,SAC1C/V,EAAAA,EAAA,cAACs3C,EAAAA,OAAAp3C,GAAAqL,GAAArL,GAAA,CACC,QAAUqD,EACV,QAAU8zC,EACV,eAAiB,GACjB,kBAAoB,CAAC9zC,EACrB,oBAAsB,GACtB,YAAcmqB,EACd,SAAW9W,EACX,oBAAoB,QACpB,aAAevL,GACf,UAAYwK,CAAAA,EACNA,GAAa,CAAE,WAAY,CAAE,SAAUC,CAAY,CAAE,CAAA,EAX5D,CAYC,MAAQmhC,GAAiBj2C,EAAO2U,CAAO,EACvC,aAAe+nB,EACf,UAAYC,EACZ,KAAOpkB,EACP,WAAaglB,EACb,IAAM/5B,EACN,iBAAmB,SAAS,KAC5B,OAAS,CAAE,WAAasT,GAAUvM,GAAArL,GAAA,GAAK4X,CAAL,EAAA,CAAW,OAAQ1I,GAAM,SAAS,OAAQ,CAAG,CAAA,CAAA,CAAA,EAC1E6G,CACP,CAAA,CACF,CAEJ,CAAC,+fCrMD,MAAMshC,GAAkB,CACtB3zC,EAcAY,IACA,CAfA,IAAAkR,EAAA9R,EACE,CAAAiE,KAAAA,EACA,MAAAgX,EACA,QAAAlJ,EACA,UAAAoJ,EAAY,SACZ,QAAAxb,EACA,WAAAyb,EACA,SAAArB,EACA,YAAA+P,EAAc,GACd,SAAU1N,EAAmBpK,WAC7B,iBAAAigB,EACA,kBAAAC,CAvBJ,EAYEpgB,EAYKO,EAAAC,GAZLR,EAYK,CAXH,OACA,QACA,UACA,YACA,UACA,aACA,WACA,cACA,WACA,mBACA,mBAKF,CAAA,EAAA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,kBAAoB,GACpB,SAAWrB,EACX,IAAMnZ,CAAAA,EAEJ,CAAC,CAAE,MAAAxD,EAAO,SAAAoC,CAAS,IACnBpD,EAAA,cAACic,EAAAA,OAAA,CAAO,EAAE,MAAA,EACRjc,EAAA,cAAC41B,GAAA,CACC,iBAAmBC,EACnB,kBAAoBC,CAAAA,EAEpB91B,EAAA,cAAC4M,GAAA1M,GAAA,CACC,KAAO2H,EACP,QAAU8N,EACV,QAAUpS,EACV,SAAW,CAACsT,EAAQlT,IAAU,CAC5BP,EACEG,EACKsT,EAAe,IAAKsrB,GAAcA,EAAK,KAAK,EAC5CtrB,EAAa,KACpB,EACAmJ,EAAiBnJ,EAAoClT,CAAK,CAC5D,EACA,MACE3C,EACK2U,GACC,QAAS6hC,GACRA,EAAM,QAAUA,EAAM,QAAUA,CAAAA,EAElC,OAAQrgC,GACN5T,EACGvC,EAAM,SAASmW,EAAO,KAAK,EAC3BsH,EAAAA,OAAOzd,EAAOmW,EAAO,KAAK,CAAA,EAEhC,IAEDlB,EAAAA,CAAAA,CACP,CACF,EACAjW,EAAA,cAACqgB,EAAA,CACC,aAAa,GAAGxY,iBAChB,QAAQ,SACR,KAAK,KACL,SAAS,KACT,OAAShE,EAAAA,MAAM7C,CAAK,GAAK,CAAC0sB,EAC1B,QAAU,IAAM,CACdtqB,EAAS,MAAS,EAClB4c,EAAiB,OAAW,CAAE,OAAQ,QAAS,cAAehf,CAAM,CAAC,CACvE,EACA,KAAOhB,EAAA,cAAC0P,EAAA,CAAK,GAAK4e,EAAc,WAAA,CAAA,CAAA,CAClC,CACF,CAEJ,CAGK,EAAMmpB,GAAc7+B,EAAAA,WAAW2+B,EAAe,ECxFrD,IAAApxC,GAAA,OAAA,eAAAtG,GAAA,OAAA,iBAAAqG,GAAA,OAAA,0BAAA3G,GAAA,OAAA,sBAAAE,GAAA,OAAA,UAAA,eAAA8V,GAAA,OAAA,UAAA,qBAAAjW,GAAA,CAAAM,EAAA,EAAA,IAAA,KAAAA,EAAAuG,GAAAvG,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAA,EAAA,CAAA,EAAA,EAAAF,GAAA,CAAAE,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAAH,GAAA,KAAA,EAAA,CAAA,GAAAH,GAAAM,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAAL,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAgW,GAAA,KAAA,EAAA,CAAA,GAAAjW,GAAAM,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAAA,CAAA,EAAAc,GAAA,CAAAd,EAAA,IAAAC,GAAAD,EAAAsG,GAAA,CAAA,CAAA,EAAAwF,GAAA,CAAA9L,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAAa,KAAAb,EAAAH,GAAA,KAAAG,EAAAa,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,GAAAb,GAAA,MAAAL,GAAA,QAAAkB,KAAAlB,GAAAK,CAAA,EAAA,EAAA,QAAAa,CAAA,EAAA,GAAA8U,GAAA,KAAA3V,EAAAa,CAAA,IAAA,EAAAA,CAAA,EAAAb,EAAAa,CAAA,GAAA,OAAA,CAAA,EAWa,MAAAi3C,GAAwC33C,GAAoC,CACvF,MAAM43C,EAAkDl3C,GAAM,CAC5DA,EAAE,eAAe,EACjBA,EAAE,gBAAA,CACJ,EACMm3C,EAAarsC,GAAArL,GAAA,CAAKH,EAAAA,EAAM,UAAX,EAAA,CAAuB,YAAA43C,CAAY,CAAA,EAChD,CAAE,WAAAxX,EAAY,UAAAC,EAAW,WAAAC,EAAY,UAAAC,EAAW,WAAAnH,CAAW,EAC3D6H,EAAAA,YAAY,CACV,GAAIjhC,EAAM,KAAK,KACjB,CAAC,EAEP,OACEC,EAAA,cAAC6X,EAAAA,IAAA3X,MAAA,CACC,IAAMmgC,EACN,UAAYI,GAAI,IAAA,UAAU,SAASH,CAAS,EAC5C,WAAanH,EACb,OAAO,OACP,OAAS,CAAE,QAAS,EAAI,EACxB,QAAU,CAAE,OAAQ,UAAW,CAC1BgH,EAAAA,CAAAA,EACAC,CAELpgC,EAAAA,EAAA,cAACs9B,EAAAA,iBAAiB,WAAjB/xB,GAAArL,GAAA,CAAA,EAAiCH,CAAAA,EAAjC,CAAyC,WAAa63C,GAAa,CACtE,CAEJ,EAEaC,GACXj0C,GACA,CADA,IAAA8R,EAAA9R,EAAE,CAAAg0C,WAAAA,CAvCJ,EAuCEliC,EAAiB3V,EAAAmW,GAAjBR,EAAiB,CAAf,eAEF,OAAA1V,EAAA,cAACs9B,EAAAA,iBAAiB,iBAAjB/xB,GAAArL,GAAA,CAAA,EACMH,GADN,CAEC,WAAaG,GAAA,CACX,cAAgBO,GAAMA,EAAE,gBAAA,GACrBm3C,CAEP,CAAA,CAAA,CAAA,CAAA,olBCtBF,MAAME,GAAmC92C,GACvC,MAAM,QAAQA,CAAK,GACnBA,EAAM,OAAS,GACf,OAAOA,EAAM,CAAC,GAAM,UACpBA,EAAM,CAAC,IAAM,MACb,UAAWA,EAAM,CAAC,EAEdg2C,GAAiBh2C,GACrB,MAAM,QAAQA,CAAK,GACnBA,EAAM,OAAS,GACf,OAAOA,EAAM,CAAC,GAAM,SAkRT+2C,GAAoCn0C,GAMnB,CANmB,IAAA8R,EAAA9R,EAC/C,CAAA5C,MAAAA,EACA,SAAAoC,EACA,WAAYm7B,EACZ,QAAA5oB,CAzTF,EAqTiDD,EAK5CO,EAAAC,GAL4CR,EAK5C,CAJH,QACA,WACA,aACA,SAAA,CAAA,EAGA,MAAMsiC,EAAe7qB,EAAAA,QAAQ,IAAM,CACjC,GAAI,CAACnsB,GAAS,CAAC,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,EAAG,MAAO,GAElE,MAAMi3C,EAAe,MAAM,QAAQtiC,CAAO,EAAIA,EAAU,GAExD,OAAImiC,GAAiB92C,CAAK,EACjBA,EAAM,OAAQmhC,GAASA,GAAQ,IAAI,EAGxC6U,GAAch2C,CAAK,EACdA,EAAM,OAAY,CAACk3C,EAAKx0C,IAAQ,CACrC,MAAMy0C,EAAQF,EAAa,KAAMG,GAAQA,EAAI,QAAU10C,CAAG,EAC1D,OAAIy0C,IAAU,QACZD,EAAI,KAAKC,CAAK,EAETD,CACT,EAAG,CAAA,CAAE,EAGA,CACT,CAAA,EAAG,CAAEl3C,EAAO2U,CAAQ,CAAC,EAEf,CAAE0iC,EAAaC,CAAe,EAAIl3C,WAAc42C,CAAY,EAC5DO,EAAiB90C,SAAY40C,CAAW,EAE9Ch3C,EAAAA,UAAU,IAAM,CACdi3C,EAAeN,CAAY,EAC3BO,EAAe,QAAUP,CAC3B,EAAG,CAAEA,CAAa,CAAC,EAEnB32C,YAAU,IAAM,CACdk3C,EAAe,QAAUF,CAC3B,EAAG,CAAEA,CAAY,CAAC,EAElB,MAAMzhC,EAAe,CAACL,EAAyCO,IAA8B,CACvF1T,GACFA,EAASmT,EAAiBO,CAAU,CAExC,EAEM0hC,EAAiBC,EAAAA,YACpB90C,GAAyB,CACxB,KAAM,CAAE,OAAAo/B,EAAQ,KAAAC,CAAK,EAAIr/B,EAErB,CAACo/B,GAAU,CAACC,GAAQD,EAAO,KAAOC,EAAK,IAE3CsV,EAAgB90C,GAAU,CACxB,MAAMqgC,EAAWrgC,EAAM,UAAW2+B,GAASA,EAAK,QAAUY,EAAO,EAAE,EAC7De,EAAWtgC,EAAM,UAAW2+B,GAASA,EAAK,QAAUa,EAAK,EAAE,EAEjE,OAAIa,IAAa,IAAMC,IAAa,GAC3BX,EAAU3/B,UAAAA,EAAOqgC,EAAUC,CAAQ,EAErCtgC,CACT,CAAC,CACH,EACA,CACF,CAAA,EAEMk1C,EAAgBD,EACnBE,YAAAA,GAAyB,CACxB,GAAI,CAACv1C,EAAU,OAEf,MAAMw1C,EAAaL,EAAe,QAC9BK,EAAW,SAAW,GAEL,CAACZ,EAAa,MAAM,CAAC7V,EAAMz3B,IAAO,CA9X7D,IAAA9G,EA+XQ,OAAAu+B,EAAK,UAAUv+B,EAAAg1C,EAAWluC,CAAK,IAAhB,KAAA,OAAA9G,EAAmB,MACpC,CAAA,GAGER,EAASw1C,EAA6B,CACpC,OAAQ,QACR,KAAM3iC,EAAK,IACb,CAAkB,CAEtB,EACA,CAAE+hC,EAAc50C,EAAU6S,EAAK,IAAK,CACtC,EAEM4iC,EAAmBttC,GAAArL,GAAA,GACpBq+B,CAAAA,EADoB,CAEvB,WAAYmZ,GACZ,iBAAkBG,EACpB,CAEMiB,EAAAA,EAAgBT,EAAY,IAAKlW,GAASA,EAAK,KAAK,EAE1D,OACEniC,EAAA,cAACm/B,EAAAA,WAAA,CACC,UAAY,CAAE4Z,GAAwB,uBAAA,EACtC,WAAaP,EACb,UAAYE,EACZ,mBAAqBM,EAAAA,aAAAA,EAErBh5C,EAAA,cAAC6gC,EAAA,gBAAA,CACC,MAAQiY,EACR,SAAWG,iCAEXj5C,EAAA,cAAC4M,GAAA1M,GAAA,CACC,QAAU,GACV,QAAUyV,EACV,MAAQ0iC,EACR,SAAWzhC,EACX,WAAaiiC,EACb,kBAAoB,EACf5iC,EAAAA,CAAAA,CACP,CACF,CACF,CAEJ,+fCjZO,MAAM9I,GAAUvJ,GAMP,CANO,IAAA8R,EAAA9R,EACrB,OAAA5C,EACA,SAAAoC,EACA,KAAAyE,EACA,KAAAiR,EAAO,IA9BT,EA0BuBpD,EAKlBO,EAAAC,GALkBR,EAKlB,CAJH,QACA,WACA,OACA,MAAA,CAAA,EAGA,OAAA1V,EAAA,cAACk5C,EAAAA,OAAAh5C,GAAA,CACC,KAAO4Y,EACP,GAAKjR,EACL,UAAY7G,EACZ,SAAWoC,CAAAA,EACN6S,CACP,CAAA,CAAA,ECvCF,IAAA9V,GAAA,OAAA,eAAAsL,GAAA,OAAA,sBAAAC,GAAA,OAAA,UAAA,eAAApM,GAAA,OAAA,UAAA,qBAAAO,GAAA,CAAAN,EAAAkB,EAAAb,IAAAa,KAAAlB,EAAAY,GAAAZ,EAAAkB,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAb,CAAA,CAAA,EAAAL,EAAAkB,CAAA,EAAAb,EAAA2I,GAAA,CAAAhJ,EAAAkB,IAAA,CAAA,QAAAb,KAAAa,IAAAA,EAAA,CAAA,GAAAiL,GAAA,KAAAjL,EAAAb,CAAA,GAAAC,GAAAN,EAAAK,EAAAa,EAAAb,CAAA,CAAA,EAAA,GAAA6L,GAAA,QAAA7L,KAAA6L,GAAAhL,CAAA,EAAAnB,GAAA,KAAAmB,EAAAb,CAAA,GAAAC,GAAAN,EAAAK,EAAAa,EAAAb,CAAA,CAAA,EAAA,OAAAL,CAAA,EAAAmB,GAAA,CAAAnB,EAAAkB,IAAA,CAAA,IAAAb,EAAA,CAAA,EAAA,QAAAQ,KAAAb,EAAAmM,GAAA,KAAAnM,EAAAa,CAAA,GAAAK,EAAA,QAAAL,CAAA,EAAA,IAAAR,EAAAQ,CAAA,EAAAb,EAAAa,CAAA,GAAA,GAAAb,GAAA,MAAAkM,GAAA,QAAArL,KAAAqL,GAAAlM,CAAA,EAAAkB,EAAA,QAAAL,CAAA,EAAA,GAAAd,GAAA,KAAAC,EAAAa,CAAA,IAAAR,EAAAQ,CAAA,EAAAb,EAAAa,CAAA,GAAA,OAAAR,CAAA,EA+Ba,MAAAu5C,GAAcvgC,aAA6C,CAAChV,EAUtEY,IAAK,CAViE,IAAAkR,EAAA9R,EACvE,CAAA,KAAAiE,EACA,MAAAgX,EACA,WAAAG,EACA,SAAArB,EACA,SAAUqC,EAAmBpK,EAAAA,SAC7B,UAAAmJ,EAAY,MACZ,eAAAkB,EAAiB,QACjB,UAAAC,EAAY,IAvCd,EA+ByExK,EASpEO,EAAAC,GAToER,EASpE,CARH,OACA,QACA,aACA,WACA,WACA,YACA,iBACA,cAGA,OAAA1V,EAAA,cAAC6X,EAAAA,IAAA,CAAI,EAAIgH,EAAQ,OAAS,cAAgB,QAAQ,eAChD7e,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAM,GACN,WAAamX,EACb,UAAYD,EACZ,SAAWpB,EACX,IAAMnZ,CAEJ,EAAA,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAAC0c,EAAAA,KAAA,CACC,QAAQ,cACR,WAAW,SACX,IAAM,EACN,UAAYuD,IAAmB,OAAS,cAAgB,KAAA,EAExDjgB,EAAA,cAACmN,GAAAjN,GAAA,CACC,KAAO2H,EACP,SAAYpH,GAAM,CAChB2C,EAAS3C,CAAC,EACVuf,EAAiBvf,CAAC,CACpB,EACA,MAAQO,EACR,cAAY,sBAAA,EACPiV,CACP,CAAA,EACAjW,EAAA,cAAC0R,GAAA,CAAM,QAAU7J,EAAO,GAAK,CAAE,WAAY,QAAS,EAAI,KAAOqY,CAAAA,EAAcrB,CAAO,CACtF,CAEJ,CACF,CACD,CAAA,+fCpDM,MAAMu6B,GAAOr5C,GAAoB,CACtC,MAAsC6D,EAAA7D,EAA9B,cAAAs5C,EAAc,GAAA/qC,CAtBxB,EAsBwC1K,EAATqS,EAAAC,GAAStS,EAAT,CAArB,eAAc,IAAA,CAAA,EAChB01C,EAAQD,EACVn5C,GAAA,CAAE,YAAa,CAAE,gBAAiBm5C,CAAa,CAAA,EAAM/qC,GACrDA,EAEJ,OACEtO,EAAA,cAACu5C,MAAAr5C,GAAA,CAAU,GAAKo5C,CAAarjC,EAAAA,CAAAA,CAAO,CAExC,EC9BA,IAAAxV,GAAA,OAAA,eAAAf,GAAA,OAAA,sBAAAD,GAAA,OAAA,UAAA,eAAA0G,GAAA,OAAA,UAAA,qBAAA7G,GAAA,CAAAc,EAAAM,EAAAd,IAAAc,KAAAN,EAAAK,GAAAL,EAAAM,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAd,CAAA,CAAA,EAAAQ,EAAAM,CAAA,EAAAd,EAAAY,GAAA,CAAAJ,EAAAM,IAAA,CAAA,QAAAd,KAAAc,IAAAA,EAAA,CAAA,GAAAjB,GAAA,KAAAiB,EAAAd,CAAA,GAAAN,GAAAc,EAAAR,EAAAc,EAAAd,CAAA,CAAA,EAAA,GAAAF,GAAA,QAAAE,KAAAF,GAAAgB,CAAA,EAAAyF,GAAA,KAAAzF,EAAAd,CAAA,GAAAN,GAAAc,EAAAR,EAAAc,EAAAd,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAWa,MAAAo5C,GAAYz5C,GACvBC,EAAA,cAACy5C,EAAAA,SAAAv5C,GAAA,CAAe,QAAU,GAASH,CAAQ,CAAA,ECZ7C,IAAAU,GAAA,OAAA,eAAAJ,GAAA,OAAA,sBAAAf,GAAA,OAAA,UAAA,eAAA0J,GAAA,OAAA,UAAA,qBAAAvJ,GAAA,CAAAiB,EAAAd,EAAA,IAAAA,KAAAc,EAAAD,GAAAC,EAAAd,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAc,EAAAd,CAAA,EAAA,EAAAL,GAAA,CAAAmB,EAAAd,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAAN,GAAA,KAAAM,EAAA,CAAA,GAAAH,GAAAiB,EAAA,EAAAd,EAAA,CAAA,CAAA,EAAA,GAAAS,GAAA,QAAA,KAAAA,GAAAT,CAAA,EAAAoJ,GAAA,KAAApJ,EAAA,CAAA,GAAAH,GAAAiB,EAAA,EAAAd,EAAA,CAAA,CAAA,EAAA,OAAAc,CAAA,EAAAhB,GAAA,CAAAgB,EAAAd,IAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA2I,KAAA7H,EAAApB,GAAA,KAAAoB,EAAA6H,CAAA,GAAA3I,EAAA,QAAA2I,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAA7H,EAAA6H,CAAA,GAAA,GAAA7H,GAAA,MAAAL,GAAA,QAAAkI,KAAAlI,GAAAK,CAAA,EAAAd,EAAA,QAAA2I,CAAA,EAAA,GAAAS,GAAA,KAAAtI,EAAA6H,CAAA,IAAA,EAAAA,CAAA,EAAA7H,EAAA6H,CAAA,GAAA,OAAA,CAAA,QA8DauE,GAASlJ,GAKR,CALQ,IAAA8R,EAAA9R,EACpB,CAAA,SAAAkF,EACA,QAAAoP,EAAU,UACV,SAAAwhC,EAAW,EAjEb,EA8DsBhkC,EAIjBO,EAAAC,GAJiBR,EAIjB,CAHH,WACA,UACA,UAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC25C,EAAAA,KAAAz5C,GAAA,CACC,SAAWw5C,EACX,QAAUxhC,CAAAA,EACLjC,GAEHnN,CACJ,CAAA,+fC9DK,MAAMkE,GAAYpJ,GAMP,CANO,IAAA8R,EAAA9R,EACvB,MAAAkV,EAAO,KACP,SAAA1V,EACA,KAAAyE,EACA,MAAA7G,CAhBF,EAYyB0U,EAKpBO,EAAAC,GALoBR,EAKpB,CAJH,OACA,WACA,OACA,OAAA,CAAA,EAGA,OAAA1V,EAAA,cAAC45C,EAAAA,SAAA15C,GAAA,CACC,KAAO4Y,EACP,GAAKjR,EACL,SAAWzE,EACX,MAAQpC,CAAAA,EACHiV,CACP,CAAA,CAAA,qgBCnBW4jC,GAAgBjhC,aAA+C,CAAChV,EAQ1EY,IAAK,CARqE,IAAAkR,EAAA9R,EAC3E,MAAAiE,EACA,MAAAgX,EACA,WAAAG,EACA,SAAArB,EACA,UAAAoB,EACA,SAAUiB,EAAmBpK,EAAAA,QAZ/B,EAM6EF,EAOxEO,EAAAC,GAPwER,EAOxE,CANH,OACA,QACA,aACA,WACA,YACA,UAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,WAAaG,EACb,SAAWrB,EACX,UAAYoB,EACZ,IAAMva,GAEJ,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAACgN,GAAA9M,GAAA,CACC,KAAO2H,EACP,cAAY,yBACZ,SAAYpH,GAAM,CAAE2C,EAAS3C,CAAC,EAAGuf,EAAiBvf,CAAC,CAAE,EACrD,MAAQO,CAAAA,EACHiV,CACP,CAAA,CAEJ,CACD,CAAA,ECjCY6jC,GAAmB,CAC9B94C,EACA+4C,IACW,WAAW/4C,EAAM,QAAQ+4C,CAAgB,CAAC,ECHvD,IAAAj0B,GAAA,OAAA,eAAAnM,GAAA,OAAA,iBAAArE,GAAA,OAAA,0BAAA/M,GAAA,OAAA,sBAAAgc,GAAA,OAAA,UAAA,eAAAwV,GAAA,OAAA,UAAA,qBAAA5zB,GAAA,CAAAvG,EAAA,EAAA,IAAA,KAAAA,EAAAkmB,GAAAlmB,EAAA,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAAA,EAAA,CAAA,EAAA,EAAAL,GAAA,CAAAK,EAAA,IAAA,CAAA,QAAA,KAAA,IAAA,EAAA,CAAA,GAAA2kB,GAAA,KAAA,EAAA,CAAA,GAAApe,GAAAvG,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA2I,GAAA,QAAA,KAAAA,GAAA,CAAA,EAAAwxB,GAAA,KAAA,EAAA,CAAA,GAAA5zB,GAAAvG,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAAA,CAAA,EAAA2lC,GAAA,CAAA3lC,EAAA,IAAA+Z,GAAA/Z,EAAA0V,GAAA,CAAA,CAAA,EAAAtM,GAAA,CAAApJ,EAAA,IAAA,CAAA,IAAA,EAAA,GAAA,QAAAc,KAAAd,EAAA2kB,GAAA,KAAA3kB,EAAAc,CAAA,GAAA,EAAA,QAAAA,CAAA,EAAA,IAAA,EAAAA,CAAA,EAAAd,EAAAc,CAAA,GAAA,GAAAd,GAAA,MAAA2I,GAAA,QAAA7H,KAAA6H,GAAA3I,CAAA,EAAA,EAAA,QAAAc,CAAA,EAAA,GAAAq5B,GAAA,KAAAn6B,EAAAc,CAAA,IAAA,EAAAA,CAAA,EAAAd,EAAAc,CAAA,GAAA,OAAA,CAAA,EAkBA,MAAMs5C,GAA+D,CACnE,GAAI,CACF,kBAAmB,IACnB,iBAAkB,GACpB,EACA,GAAI,CACF,kBAAmB,IACnB,iBAAkB,GACpB,EACA,IAAK,CACH,kBAAmB,IACnB,iBAAkB,GACpB,CACF,EA2CaC,GAAwBr2C,GAYJ,CAZI,IAAA8R,EAAA9R,EACnC,CAAAs2C,OAAAA,EAAS,KACT,aAAAC,EAAe,GACf,SAAA/2C,EAAWwS,EAAAA,SACX,MAAOwkC,EACP,iBAAAL,EACA,IAAAz1C,EAAM,EAAA,EACN,IAAAD,EAAM,GAAA,EACN,iBAAAwxB,EACA,kBAAAC,EACA,OAAAukB,CApFF,EA0EqC3kC,EAWhCO,EAAAC,GAXgCR,EAWhC,CAVH,SACA,eACA,WACA,QACA,mBACA,MACA,MACA,mBACA,oBACA,WAGA,MAAM3V,EAAQi6C,GAAUE,CAAM,EAExBl5C,EAAQo5C,GAAa,GAErBE,EAA0Bn/B,EAAAA,UAAU,EAAG4+B,CAAgB,EAEvDQ,EAAyBC,IAAoB,CACjD,WAAYA,EACZ,eAAgBC,GAAAA,iBAAiBD,EAAO,SAAYz6C,EAAAA,CAAK,EACzD,MAAOy6C,EAAO,SAAS,CACzB,GAEME,EAAgB,IAAM,CAC1B,GAAI72C,EAAM7C,MAAAA,CAAK,GAAK+R,UAAQ/R,CAAK,EAAG,OAEpC,MAAM25C,EAAO,OAAO35C,GAAU,SAAW,WAAWA,CAAK,EAAIA,EAE7D,GAAI6C,EAAMk2C,MAAAA,CAAgB,GAAK,CAACI,EAAc,CAC5C/2C,EAASm3C,EAAsBI,CAAI,CAAC,EACpC,OAGF,MAAMrE,EAAS6D,EAAe,IAAM,EACpC,GAAIQ,EAAOrE,EAAShyC,EAAK,CACvB,MAAM+hC,EAAWyT,GAAiBx1C,EAAMgyC,EAAQgE,CAAuB,EACvEl3C,EAASm3C,EAAsBlU,CAAQ,CAAC,EAE1C,GAAIsU,EAAOrE,EAASjyC,EAAK,CACvB,MAAMgiC,EAAWyT,GAAiBz1C,EAAMiyC,EAAQgE,CAAuB,EACvEl3C,EAASm3C,EAAsBlU,CAAQ,CAAC,EAE5C,EAEMuU,EAAuB,CAC3B/jC,EACAgkC,IACG,CACH,MAAMC,EACJjkC,EAAO,YAAcsjC,EACjBL,GAAiBjjC,EAAO,WAAa,IAAKyjC,CAAuB,EACjEzjC,EAAO,WACbzT,EACEmI,GAAArL,GAAA,CAAA,EACK2W,CADL,EAAA,CAEE,WAAYikC,CACd,CAAA,EACAD,CACF,CACF,EAEA,OAAAx5C,YAAU,IAAM,CACdq5C,GACF,EAAG,CAAE15C,CAAM,CAAC,EAGVhB,EAAA,cAAC41B,GAAA,CACC,iBAAmBC,EACnB,kBAAoBC,GAEpB91B,EAAA,cAAC+6C,GAAAA,cAAA76C,GAAAA,GAAA,CACC,kBAAoB,GACpB,YAAcuM,EAAAA,MACd,OAAUhM,GAAM,CACd45C,IAAS55C,CAAA,EACTi6C,GACF,EACA,cAAgBE,EAChB,aAAeb,EACf,MACEI,EACIL,GAAiB,WAAW,GAAG94C,GAAS,GAAG,EAAI,IAAKs5C,CAAuB,EAC3Et5C,EAEN,OAASm5C,EAAe,IAAM,EAAA,EACzBp6C,CACAkW,EAAAA,CAAAA,CACP,CACF,CAEJ,+fC/IO,MAAM+kC,GACbpiC,EAAAA,WAA2D,CAAChV,EAQzDY,IAAK,CARoD,IAAAkR,EAAA9R,EAC1D,CAAA,KAAAiE,EACA,MAAAgX,EACA,WAAAG,EACA,SAAArB,EACA,SAAUqC,EAAmBpK,EAAAA,SAC7B,UAAAmJ,EAAY,KA9Bd,EAwB4DrJ,EAOvDO,EAAAC,GAPuDR,EAOvD,CANH,OACA,QACA,aACA,WACA,WACA,WAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,WAAaG,EACb,UAAYD,EACZ,SAAWpB,EACX,IAAMnZ,CAAAA,EAEJ,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAACi6C,GAAA/5C,GAAA,CACC,KAAO2H,EACP,SAAW,CAACgP,EAAQgkC,IAAe,CACjCz3C,EAASyT,EAAO,UAAU,EAC1BmJ,EAAiBnJ,EAAQgkC,CAAU,CACrC,EACA,MAAQ75C,CAAAA,EACHiV,CACP,CAAA,CAEJ,CACD,CAAA,+fC/CD,MAAMglC,GAAcC,GAEPC,GAAmBv3C,GAUP,CAVO,IAAA8R,EAAA9R,EAC9B,CAAA,KAAAw3C,EACA,gBAAAC,EACA,eAAAC,EACA,KAAAzzC,EACA,MAAA7G,EACA,YAAAu6C,EACA,SAAAn4C,EACA,OAAAi3C,CAhBF,EAQgC3kC,EAS3BO,EAAAC,GAT2BR,EAS3B,CARH,OACA,kBACA,iBACA,OACA,QACA,cACA,WACA,QAGA,CAAA,EAAA,OAAA1V,EAAA,cAACi7C,GAAA,CACC,KAAOG,EACP,gBAAkBC,EAClB,eAAiBC,EACjB,KAAOzzC,EACP,MAAQ7G,EACR,SAAWoC,EACX,OAASi3C,CAAAA,EAEP,CAAC,CAAE,KAAMmB,CAAS,IAClBx7C,EAAA,cAACyM,QAAAvM,GAAA,CACC,YAAcm7C,GAAmBE,EACjC,KAAOC,CAAAA,EACFvlC,EACP,CAEJ,CAAA,ECnCF,IAAAX,GAAA,OAAA,eAAA1V,GAAA,OAAA,sBAAA8L,GAAA,OAAA,UAAA,eAAAvL,GAAA,OAAA,UAAA,qBAAAO,GAAA,CAAAL,EAAAd,EAAAkB,IAAAlB,KAAAc,EAAAiV,GAAAjV,EAAAd,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAkB,CAAA,CAAA,EAAAJ,EAAAd,CAAA,EAAAkB,EAAA8H,GAAA,CAAAlI,EAAAd,IAAA,CAAA,QAAAkB,KAAAlB,IAAAA,EAAA,CAAA,GAAAmM,GAAA,KAAAnM,EAAAkB,CAAA,GAAAC,GAAAL,EAAAI,EAAAlB,EAAAkB,CAAA,CAAA,EAAA,GAAAb,GAAA,QAAAa,KAAAb,GAAAL,CAAA,EAAAY,GAAA,KAAAZ,EAAAkB,CAAA,GAAAC,GAAAL,EAAAI,EAAAlB,EAAAkB,CAAA,CAAA,EAAA,OAAAJ,CAAA,EAAA6F,GAAA,CAAA7F,EAAAd,IAAA,CAAA,IAAAkB,EAAA,CAAA,EAAA,QAAAL,KAAAC,EAAAqL,GAAA,KAAArL,EAAAD,CAAA,GAAAb,EAAA,QAAAa,CAAA,EAAA,IAAAK,EAAAL,CAAA,EAAAC,EAAAD,CAAA,GAAA,GAAAC,GAAA,MAAAT,GAAA,QAAAQ,KAAAR,GAAAS,CAAA,EAAAd,EAAA,QAAAa,CAAA,EAAA,GAAAD,GAAA,KAAAE,EAAAD,CAAA,IAAAK,EAAAL,CAAA,EAAAC,EAAAD,CAAA,GAAA,OAAAK,CAAA,EAiBa,MAAAg7C,GAAY7iC,EAAAA,WAA2C,CAAChV,EAWlEY,IAAK,CAX6D,IAAAkR,EAAA9R,EACnE,CAAA,KAAAiE,EACA,MAAAgX,EACA,GAAIhG,EAAKpM,EAAAA,MACT,WAAAuS,EACA,SAAArB,EACA,UAAAoB,EAAY,SACZ,SAAUiB,EAAmBpK,EAAAA,SAC7B,iBAAAigB,EACA,kBAAAC,CA1BF,EAiBqEpgB,EAUhEO,EAAAC,GAVgER,EAUhE,CATH,OACA,QACA,KACA,aACA,WACA,YACA,WACA,mBACA,mBAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,WAAaG,EACb,SACEnb,EAAM8Z,MAAAA,CAAQ,GAAKqB,EACf,CAAE,SAAWhe,GAAkB,CAAC,CAACA,EAAM,MAAO,EAC9C2c,EAEN,UAAYoB,EACZ,IAAMva,CAAAA,EAEJ,CAAC,CAAE,SAAApB,EAAU,MAAApC,CAAM,IACnBhB,EAAA,cAAC41B,GAAA,CACC,iBAAmBC,EACnB,kBAAoBC,CAEpB91B,EAAAA,EAAA,cAAC6Y,EAAA3Y,GAAA,CACC,GAAK2H,EACL,KAAOA,EACP,SAAYpH,GAAoD,CAC9D2C,EAAS3C,CAAC,EACVuf,EAAiBvf,CAAC,CACpB,EACA,MAAQO,EACR,cAAY,oBAAA,EACPiV,CACP,CAAA,CACF,CAEJ,CACD,CAAA,EClDYylC,GAA2C,CACtD,QAASzoB,EACT,iBAAA,QAASC,qBACT,MAAOC,EAAAA,iBACP,OAAQA,EAAAA,iBACR,KAAMwoB,EAAAA,UACN,GAAIroB,EAAAA,gBACJ,QAASC,EAAAA,gBACT,MAAOA,iBACT,ECnBA,IAAA5Z,GAAA,OAAA,eAAAjZ,GAAA,OAAA,sBAAApB,GAAA,OAAA,UAAA,eAAAI,GAAA,OAAA,UAAA,qBAAA+L,GAAA,CAAA7L,EAAAQ,EAAAC,IAAAD,KAAAR,EAAA+Z,GAAA/Z,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAC,CAAA,CAAA,EAAAT,EAAAQ,CAAA,EAAAC,EAAAqL,GAAA,CAAA9L,EAAAQ,IAAA,CAAA,QAAAC,KAAAD,IAAAA,EAAA,CAAA,GAAAd,GAAA,KAAAc,EAAAC,CAAA,GAAAoL,GAAA7L,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,GAAAK,GAAA,QAAAL,KAAAK,GAAAN,CAAA,EAAAV,GAAA,KAAAU,EAAAC,CAAA,GAAAoL,GAAA7L,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAAD,GAAA,CAAAC,EAAAQ,IAAA,CAAA,IAAAC,EAAA,CAAA,EAAA,QAAAkI,KAAA3I,EAAAN,GAAA,KAAAM,EAAA2I,CAAA,GAAAnI,EAAA,QAAAmI,CAAA,EAAA,IAAAlI,EAAAkI,CAAA,EAAA3I,EAAA2I,CAAA,GAAA,GAAA3I,GAAA,MAAAc,GAAA,QAAA6H,KAAA7H,GAAAd,CAAA,EAAAQ,EAAA,QAAAmI,CAAA,EAAA,GAAA7I,GAAA,KAAAE,EAAA2I,CAAA,IAAAlI,EAAAkI,CAAA,EAAA3I,EAAA2I,CAAA,GAAA,OAAAlI,CAAA,EA4BO,MAAMu7C,GAASh4C,GAMJ,CANI,IAAA8R,EAAA9R,EACpB,CAAA,QAAAsU,EAAU,UACV,MAAAub,EAAQ,GACR,YAAAC,EAAc,GACd,QAAA3R,CAhCF,EA4BsBrM,EAKjBO,EAAAC,GALiBR,EAKjB,CAJH,UACA,QACA,cACA,SAAA,CAAA,EAGA,MAAM6D,EAAOmiC,GAAaxjC,CAAO,EAEjC,OACElY,EAAA,cAACwY,EAAAA,MAAAtY,GAAA,CACC,QAAUgY,EACV,cAAY,YAAA,EACPjC,CAELjW,EAAAA,EAAA,cAACic,EAAAA,OAAA,CAAO,WAAW,YAAA,EACf1C,GACFvZ,EAAA,cAAC0P,EAAA,CACC,GAAK6J,EACL,MAAQ,cAAcrB,IACtB,QAAU,CACZ,CAAA,EAEAlY,EAAA,cAACuf,QAAA,CAAM,QAAU,EAAI,WAAW,YAC5BkU,EAAAA,GAASzzB,EAAA,cAAC0R,GAAA,CAAM,KAAK,IAAO+hB,EAAAA,CAAO,EACnCC,GACF1zB,EAAA,cAACQ,EAAA,CACC,GAAK,CACH,MAAO0X,IAAY,KAAO,sBAAwB,cACpD,GAEEwb,CACJ,CAEF,EAEA1zB,EAAA,cAACkP,EAAAA,YAAA,CACC,KAAK,KACL,QAAU6S,EACV,SAAS,WACT,SAAW,EACX,IAAM,CACR,CAAA,CACF,CACF,CAEJ,4VCnDO,MAAM85B,GAAW,CAAC/4C,EAA+B,CAAA,IAAO,CAC7D,MAAMg5C,EAAQC,EAAej5C,SAAAA,CAAW,EAClCk5C,EAAav4C,EAAAA,OAAuB,IAAI,EAE9C,MAAO,CAACw4C,EAAwB,KAAO,CACrC,MAAMC,EAA8Bh8C,GAAA,CAClC,OAAQ,CAAC,CAAE,QAAA6hB,CAAQ,IAA+B,CAChD,KAAM,CACJ,QAAA7J,EAAU,UACV,MAAAub,EAAQ,UACR,YAAAC,EAAc,EAChB,EAAIuoB,EAEJ,OACEj8C,EAAA,cAAC47C,GAAA,CACC,QAAU1jC,EACV,MAAQub,EACR,YAAcC,EACd,QAAU3R,CAAAA,CACZ,CAEJ,EACA,SAAU,KACPk6B,EAAAA,CAAAA,EAGC,CAAE,qBAAAE,EAAuB,EAAM,EAAIF,EACrCE,GAAwBH,GAAcA,EAAW,QACnDF,EAAM,OAAOE,EAAW,QAASE,CAAU,EAE3CF,EAAW,QAAUF,EAAMI,CAAU,CAEzC,CACF,ECtDaE,GAA4C,CACvD,MAAO,UACP,QAAS,UACT,OAAQ,OACR,WAAY,OACZ,KAAM,UACN,YAAa,UACb,IAAK,cACL,SAAU,aACZ,ECTaC,GAA6C,CACxD,GAAI,CAAE,EAAG,CAAE,EACX,GAAI,CAAE,EAAG,CAAE,EACX,GAAI,CAAE,EAAG,CAAE,CACb,ECNA,IAAAl2C,GAAA,OAAA,eAAAzG,GAAA,OAAA,sBAAAD,GAAA,OAAA,UAAA,eAAAiB,GAAA,OAAA,UAAA,qBAAA6H,GAAA,CAAAnI,EAAAb,EAAAK,IAAAL,KAAAa,EAAA+F,GAAA/F,EAAAb,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAK,CAAA,CAAA,EAAAQ,EAAAb,CAAA,EAAAK,EAAA4V,GAAA,CAAApV,EAAAb,IAAA,CAAA,QAAAK,KAAAL,IAAAA,EAAA,CAAA,GAAAE,GAAA,KAAAF,EAAAK,CAAA,GAAA2I,GAAAnI,EAAAR,EAAAL,EAAAK,CAAA,CAAA,EAAA,GAAAF,GAAA,QAAAE,KAAAF,GAAAH,CAAA,EAAAmB,GAAA,KAAAnB,EAAAK,CAAA,GAAA2I,GAAAnI,EAAAR,EAAAL,EAAAK,CAAA,CAAA,EAAA,OAAAQ,CAAA,EAAAD,GAAA,CAAAC,EAAAb,IAAA,CAAA,IAAAK,EAAA,GAAA,QAAAS,KAAAD,EAAAX,GAAA,KAAAW,EAAAC,CAAA,GAAAd,EAAA,QAAAc,CAAA,EAAA,IAAAT,EAAAS,CAAA,EAAAD,EAAAC,CAAA,GAAA,GAAAD,GAAA,MAAAV,GAAA,QAAAW,KAAAX,GAAAU,CAAA,EAAAb,EAAA,QAAAc,CAAA,EAAA,GAAAK,GAAA,KAAAN,EAAAC,CAAA,IAAAT,EAAAS,CAAA,EAAAD,EAAAC,CAAA,GAAA,OAAAT,CAAA,QAmCa08C,GAAa14C,GAAsD,CAAtD,IAAA8R,EAAA9R,EAAE,CAAAkV,KAAAA,EAAO,KAAM,QAAAZ,CAnCzC,EAmC0BxC,EAA2BO,EAAAC,GAA3BR,EAA2B,CAAzB,OAAa,YACvC,MAAM6mC,EAAWH,GAAclkC,CAAO,EAChCskC,EAAeH,GAAWvjC,CAAI,EAC9B,CAAE2jC,EAAWC,CAAU,EAAIF,EAEjC,OACEx8C,EAAA,cAACy2B,EAAAA,OAAAv2B,GAAA,CACC,KAAOu8C,EACP,GAAG,cACH,YAAY,KACZ,YAAcF,GACTtmC,CAELjW,EAAAA,EAAA,cAACy2B,EAAAA,OAAA,CACC,KAAOimB,EACP,GAAKH,CAAAA,CACP,CACF,CAEJ,ECtDA,IAAAh0C,GAAA,OAAA,eAAA9H,GAAA,OAAA,sBAAAd,GAAA,OAAA,UAAA,eAAAF,GAAA,OAAA,UAAA,qBAAAH,GAAA,CAAAc,EAAAR,EAAAS,IAAAT,KAAAQ,EAAAmI,GAAAnI,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAS,CAAA,CAAA,EAAAD,EAAAR,CAAA,EAAAS,EAAAX,GAAA,CAAAU,EAAAR,IAAA,CAAA,QAAAS,KAAAT,IAAAA,EAAA,CAAA,GAAAD,GAAA,KAAAC,EAAAS,CAAA,GAAAf,GAAAc,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,GAAAI,GAAA,QAAAJ,KAAAI,GAAAb,CAAA,EAAAH,GAAA,KAAAG,EAAAS,CAAA,GAAAf,GAAAc,EAAAC,EAAAT,EAAAS,CAAA,CAAA,EAAA,OAAAD,CAAA,EAAAM,GAAA,CAAAN,EAAAR,IAAA,CAAA,IAAAS,EAAA,CAAA,EAAA,QAAAoL,KAAArL,EAAAT,GAAA,KAAAS,EAAAqL,CAAA,GAAA7L,EAAA,QAAA6L,CAAA,EAAA,IAAApL,EAAAoL,CAAA,EAAArL,EAAAqL,CAAA,GAAA,GAAArL,GAAA,MAAAK,GAAA,QAAAgL,KAAAhL,GAAAL,CAAA,EAAAR,EAAA,QAAA6L,CAAA,EAAA,GAAAhM,GAAA,KAAAW,EAAAqL,CAAA,IAAApL,EAAAoL,CAAA,EAAArL,EAAAqL,CAAA,GAAA,OAAApL,CAAA,EAmBa,MAAAs8C,GAAc/4C,GAGP,CAHO,IAAA8R,EAAA9R,EACzB,CAAA,QAAAg5C,EAAU,EApBZ,EAmB2BlnC,EAEtBO,EAAAC,GAFsBR,EAEtB,CADH,YAGA,OAAA1V,EAAA,cAACwY,EAAAA,MAAAtY,GAAA,CAAY,gBAAgB,qBAAqB,MAAM,eAAe,MAAM,MAAY+V,EAAAA,CAAAA,EACvFjW,EAAA,cAAC8zB,EAAAA,OAAA,CAAO,EAAE,QACR9zB,EAAA,cAAC0P,EAAA,CAAK,GAAKgsC,GAAa,MAAQ,MAAM,mBAAmB,QAAU,EAAI,EACvE17C,EAAA,cAAC68C,EAAAA,WAAA,KAAW,SAAO,EACjBD,GACF58C,EAAA,cAAC88C,mBAAA,KAAmBF,CAAS,CAE/B,CACF,CAAA,EC/BF,IAAAl9C,GAAA,OAAA,eAAAE,GAAA,OAAA,sBAAAY,GAAA,OAAA,UAAA,eAAAf,GAAA,OAAA,UAAA,qBAAAW,GAAA,CAAA,EAAAd,EAAAoB,IAAApB,KAAA,EAAAI,GAAA,EAAAJ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAoB,CAAA,CAAA,EAAA,EAAApB,CAAA,EAAAoB,EAAAL,GAAA,CAAA,EAAAf,IAAA,CAAA,QAAAoB,KAAApB,IAAAA,EAAA,CAAA,GAAAkB,GAAA,KAAAlB,EAAAoB,CAAA,GAAAN,GAAA,EAAAM,EAAApB,EAAAoB,CAAA,CAAA,EAAA,GAAAd,GAAA,QAAAc,KAAAd,GAAAN,CAAA,EAAAG,GAAA,KAAAH,EAAAoB,CAAA,GAAAN,GAAA,EAAAM,EAAApB,EAAAoB,CAAA,CAAA,EAAA,OAAA,CAAA,EAYa,MAAAq8C,GAAah9C,GACxBC,EAAA,cAACg9C,GAAA98C,GAAA,CAAgB,QAAU,GAASH,CAAQ,CAAA,ECb9C,IAAAU,GAAA,OAAA,eAAA8H,GAAA,OAAA,sBAAA9I,GAAA,OAAA,UAAA,eAAAF,GAAA,OAAA,UAAA,qBAAAc,GAAA,CAAAf,EAAAc,EAAAR,IAAAQ,KAAAd,EAAAmB,GAAAnB,EAAAc,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAR,CAAA,CAAA,EAAAN,EAAAc,CAAA,EAAAR,EAAAc,GAAA,CAAApB,EAAAc,IAAA,CAAA,QAAAR,KAAAQ,IAAAA,EAAA,CAAA,GAAAX,GAAA,KAAAW,EAAAR,CAAA,GAAAS,GAAAf,EAAAM,EAAAQ,EAAAR,CAAA,CAAA,EAAA,GAAA2I,GAAA,QAAA3I,KAAA2I,GAAAnI,CAAA,EAAAb,GAAA,KAAAa,EAAAR,CAAA,GAAAS,GAAAf,EAAAM,EAAAQ,EAAAR,CAAA,CAAA,EAAA,OAAAN,CAAA,EA+Ba,MAAA29C,GAASl9C,GACpBC,EAAA,cAACk9C,EAAAh9C,KAAAA,GAAA,CAAY,SAAW,IAAYH,CAAQ,CAAA,+fCVjC,MAAAgQ,GAAQnM,GAA0D,CAA1D,IAAA8R,EAAA9R,EAAE,CAAAib,MAAAA,EAAO,YAAA6U,EAAa,UAAAypB,CAtB3C,EAsBqBznC,EAAoCO,EAAAC,GAApCR,EAAoC,CAAlC,QAAO,cAAa,WACzC,CAAA,EAAA,KAAM,CACJ,KAAA0nC,EACA,MAAOC,EACP,YAAaC,EACb,UAAWC,CACb,EAAIjlC,EAAAA,oBAAoB,MAAM,EAC9B,OACEtY,EAAA,cAACw9C,MAAAt9C,GAAA,CACC,GAAKk9C,CAAAA,EACAnnC,CAELjW,EAAAA,EAAA,cAAC0c,EAAAA,KAAA,CAAK,cAAc,MAAM,WAAW,aAAa,IAAI,IAAI,mBAAqBxV,EAC3Ei2C,EAAAA,GACAn9C,EAAA,cAAC6X,EAAA,IAAA,CACC,GAAK0lC,EACL,YAAU,YACV,eAAe,QAEbJ,EAAAA,CACJ,EAEFn9C,EAAA,cAAC0c,EAAAA,KAAA,CAAK,cAAc,QAClB1c,EAAAA,EAAA,cAACkR,GAAA,CAAY,GAAKmsC,CAAex+B,EAAAA,CAAO,EACtC6U,GAAe1zB,EAAA,cAACoR,GAAA,CAAK,GAAKksC,CAAAA,EAAqB5pB,CAAa,CAChE,CACF,CACF,CAEJ,olBC9Ba,MAAAzjB,GAAYrM,GAAyC,CAAzC,IAAA8R,EAAA9R,EAAE,CAAAkF,SAAAA,CArB3B,EAqByB4M,EAAeO,EAAAC,GAAfR,EAAe,CAAb,UAAA,CAAA,EACzB,MAAMxF,EAAOjH,EAAAA,SAAS,MAAMH,CAAQ,EAC9BJ,EAASuQ,iBAAe,WAAY,CAAE,KAAA/I,CAAK,CAAC,EAClD,OACElQ,EAAA,cAACy9C,UAAAlyC,GAAArL,GAAA,GAAoB+V,GAApB,CAA2B,GAAKvN,CAC7BI,CAAAA,EAAAA,CACJ,CAEJ,EC7BA,IAAA6Q,GAAA,OAAA,eAAAlO,GAAA,OAAA,sBAAAtL,GAAA,OAAA,UAAA,eAAAO,GAAA,OAAA,UAAA,qBAAA6H,GAAA,CAAAlI,EAAAT,EAAAN,IAAAM,KAAAS,EAAAsZ,GAAAtZ,EAAAT,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAN,CAAA,CAAA,EAAAe,EAAAT,CAAA,EAAAN,EAAAG,GAAA,CAAAY,EAAAT,IAAA,CAAA,QAAAN,KAAAM,IAAAA,EAAA,CAAA,GAAAO,GAAA,KAAAP,EAAAN,CAAA,GAAAiJ,GAAAlI,EAAAf,EAAAM,EAAAN,CAAA,CAAA,EAAA,GAAAmM,GAAA,QAAAnM,KAAAmM,GAAA7L,CAAA,EAAAc,GAAA,KAAAd,EAAAN,CAAA,GAAAiJ,GAAAlI,EAAAf,EAAAM,EAAAN,CAAA,CAAA,EAAA,OAAAe,CAAA,EAAAqL,GAAA,CAAArL,EAAAT,IAAA,CAAA,IAAAN,EAAA,CAAA,EAAA,QAAAC,KAAAc,EAAAF,GAAA,KAAAE,EAAAd,CAAA,GAAAK,EAAA,QAAAL,CAAA,EAAA,IAAAD,EAAAC,CAAA,EAAAc,EAAAd,CAAA,GAAA,GAAAc,GAAA,MAAAoL,GAAA,QAAAlM,KAAAkM,GAAApL,CAAA,EAAAT,EAAA,QAAAL,CAAA,EAAA,GAAAmB,GAAA,KAAAL,EAAAd,CAAA,IAAAD,EAAAC,CAAA,EAAAc,EAAAd,CAAA,GAAA,OAAAD,CAAA,EAoBa,MAAAsQ,GAAiBgJ,aAAgD,CAAChV,EAK5EY,IAAQ,CALoE,IAAAkR,EAAA9R,EAC7E,MAAAkV,EAAO,KACP,MAAA9X,EACA,aAAcsf,CAvBhB,EAoB+E5K,EAI1EO,EAAAC,GAJ0ER,EAI1E,CAHH,OACA,QACA,YAGA,CAAA,EAAA,KAAM,CAAE,UAAAgoC,EAAW,OAAAC,EAAQ,SAAA99B,CAAS,EAAI+9B,EAAAA,aAAa58C,CAAK,EACpD,CAAE,OAAAgkB,EAAQ,KAAAzL,EAAM,QAAAskC,CAAQ,EAAIvlC,EAAAA,oBAAoB,iBAAkB,CAAE,KAAAQ,CAAK,CAAC,EAEhF,OAAAzX,EAAAA,UAAU,IAAM,CACdwe,EAAS7e,CAAK,CAChB,EAAG,CAAEA,CAAM,CAAC,EAGVhB,EAAA,cAACouB,EAAAA,WAAA,CAAW,KAAOtV,EAAO,cAAY,0BAA0B,IAAMtU,GACpExE,EAAA,cAACyM,QAAAvM,GAAA,CACC,aAAa,WACb,aAAa,kBAAkBc,IAC/B,WAAa,GACb,MAAQA,CAAAA,EACHiV,EACP,EACAjW,EAAA,cAACquB,EAAA,kBAAA,KACCruB,EAAA,cAACyP,GAAA,CACC,MAAQiuC,EAAY,UAAY,OAChC,UAAU,OACV,aAAe,GACf,GAAKG,CAAAA,EAEL79C,EAAA,cAACqgB,EAAA,CACC,aAAaC,GAAa,gBAC1B,QAAUq9B,EACV,QAAUD,EAAY,UAAY,UAClC,GAAK14B,GAELhlB,EAAA,cAAC0P,EAAA,CACC,GAAKguC,EAAYz8B,EAAW68B,SAAAA,EAAAA,QAC5B,GAAKvkC,CACP,CAAA,CACF,CACF,CACF,CACF,CAEJ,CAAC,EChED,IAAAjE,GAAA,OAAA,eAAA5U,GAAA,OAAA,sBAAAF,GAAA,OAAA,UAAA,eAAAf,GAAA,OAAA,UAAA,qBAAAiM,GAAA,CAAArL,EAAAD,EAAAK,IAAAL,KAAAC,EAAAiV,GAAAjV,EAAAD,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAK,CAAA,CAAA,EAAAJ,EAAAD,CAAA,EAAAK,EAAAd,GAAA,CAAAU,EAAAD,IAAA,CAAA,QAAAK,KAAAL,IAAAA,EAAA,CAAA,GAAAI,GAAA,KAAAJ,EAAAK,CAAA,GAAAiL,GAAArL,EAAAI,EAAAL,EAAAK,CAAA,CAAA,EAAA,GAAAC,GAAA,QAAAD,KAAAC,GAAAN,CAAA,EAAAX,GAAA,KAAAW,EAAAK,CAAA,GAAAiL,GAAArL,EAAAI,EAAAL,EAAAK,CAAA,CAAA,EAAA,OAAAJ,CAAA,EAAAR,GAAA,CAAAQ,EAAAD,IAAA,CAAA,IAAAK,EAAA,CAAA,EAAA,QAAA,KAAAJ,EAAAG,GAAA,KAAAH,EAAA,CAAA,GAAAD,EAAA,QAAA,CAAA,EAAA,IAAAK,EAAA,CAAA,EAAAJ,EAAA,CAAA,GAAA,GAAAA,GAAA,MAAAK,GAAA,QAAA,KAAAA,GAAAL,CAAA,EAAAD,EAAA,QAAA,CAAA,EAAA,GAAAX,GAAA,KAAAY,EAAA,CAAA,IAAAI,EAAA,CAAA,EAAAJ,EAAA,CAAA,GAAA,OAAAI,CAAA,QAWa6R,GAAa1O,GAOJ,CAPI,IAAA8R,EAAA9R,EACxB,CAAA,SAAAkF,EACA,aAAA2J,EAAe,GACf,OAAAC,EACA,aAAAH,EAAe,GACf,cAAAC,EAAgB,EAhBlB,EAW0BkD,EAMrBO,EAAAC,GANqBR,EAMrB,CALH,WACA,eACA,SACA,eACA,eAAA,CAAA,EAGA,MAAMqoC,EAAat6C,EAAAA,OAA8B,IAAI,EAE/Cu6C,EAAmBvF,EAAAA,YACtBh4C,GAA0C,CACzC,GAAIA,EAAE,SAAWs9C,EAAW,QAC1B,OAEF,IAAIE,EAAgC,KAEpCx9C,EAAE,gBAAgB,EAClBA,EAAE,iBAEF,MAAMy9C,EAASz9C,EAAE,cAEjBy9C,EAAO,kBAAkBz9C,EAAE,SAAS,EAEpCy9C,EAAO,cAAiBC,GAA4B,CAClD,GAAI,CAAEA,EAAU,QAAe,CAC7BD,EAAO,cAAgB,KACvBA,EAAO,sBAAsBC,EAAU,SAAS,EAChD,OAMF,GAHAA,EAAU,gBAAgB,EAC1BA,EAAU,iBAEN,CAACF,EAAgB,CACnB,KAAM,CAAE,QAAA7lB,CAAQ,EAAI+lB,EAEpBF,EAAiB,sBAAsB,IAAM,CAC3CC,EAAO,MAAM,YACX,cACA,GAAG,KAAK,IAAI9lB,EAAS,CAAC,KACxB,EACA6lB,EAAiB,IACnB,CAAC,EAEL,CACF,EACA,CACF,CAAA,EAEMG,EAAiBnlC,EAAAA,eAAe,YAAa,CAAE,aAAA1G,EAAc,cAAAC,EAAe,aAAAC,EAAc,OAAAC,CAAO,CAAC,EAExG,OACE1S,EAAA,cAACq+C,EAAAA,KAAAn+C,GAAA,CACC,GAAKk+C,EACL,cAAgBJ,GACX/nC,CAEHnN,EAAAA,EAAS,CAAC,EACV4J,GAAU9J,eAAaE,EAAS,CAAC,EAAG,CAAE,IAAKi1C,CAAW,CAAC,EACvDrrC,GAAU5J,EAAS,CAAC,CACxB,CAEJ,EC1EA,IAAA4C,GAAA,OAAA,eAAArL,GAAA,OAAA,sBAAAR,GAAA,OAAA,UAAA,eAAAP,GAAA,OAAA,UAAA,qBAAAC,GAAA,CAAAa,EAAAR,EAAAa,IAAAb,KAAAQ,EAAAsL,GAAAtL,EAAAR,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAa,CAAA,CAAA,EAAAL,EAAAR,CAAA,EAAAa,EAAA4jB,GAAA,CAAAjkB,EAAAR,IAAA,CAAA,QAAAa,KAAAb,IAAAA,EAAA,CAAA,GAAAC,GAAA,KAAAD,EAAAa,CAAA,GAAAlB,GAAAa,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,GAAAJ,GAAA,QAAAI,KAAAJ,GAAAT,CAAA,EAAAN,GAAA,KAAAM,EAAAa,CAAA,GAAAlB,GAAAa,EAAAK,EAAAb,EAAAa,CAAA,CAAA,EAAA,OAAAL,CAAA,EAAAsjB,GAAA,CAAAtjB,EAAAR,IAAA,CAAA,IAAAa,EAAA,CAAA,EAAA,QAAAhB,KAAAW,EAAAP,GAAA,KAAAO,EAAAX,CAAA,GAAAG,EAAA,QAAAH,CAAA,EAAA,IAAAgB,EAAAhB,CAAA,EAAAW,EAAAX,CAAA,GAAA,GAAAW,GAAA,MAAAC,GAAA,QAAAZ,KAAAY,GAAAD,CAAA,EAAAR,EAAA,QAAAH,CAAA,EAAA,GAAAH,GAAA,KAAAc,EAAAX,CAAA,IAAAgB,EAAAhB,CAAA,EAAAW,EAAAX,CAAA,GAAA,OAAAgB,CAAA,EASa,MAAA69C,GAAY16C,GAAuC,CAAvC,IAAA8R,EAAA9R,EAAE,CAAAkF,SAAAA,CAT3B,EASyB4M,EAAeO,EAAAC,GAAfR,EAAe,CAAb,aACzB,OAAA1V,EAAA,cAACu+C,EAAAA,SAAAr+C,GAAA,CAAS,SAAS,QAAA,EAAc+V,GAC7BnN,CACJ,CAAA,ECZF,IAAAP,GAAA,OAAA,eAAAlI,GAAA,OAAA,sBAAAqL,GAAA,OAAA,UAAA,eAAApM,GAAA,OAAA,UAAA,qBAAAC,GAAA,CAAA,EAAAK,EAAA,IAAAA,KAAA,EAAA2I,GAAA,EAAA3I,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAA,CAAA,CAAA,EAAA,EAAAA,CAAA,EAAA,EAAAF,GAAA,CAAA,EAAAE,IAAA,CAAA,QAAA,KAAAA,IAAAA,EAAA,CAAA,GAAA8L,GAAA,KAAA9L,EAAA,CAAA,GAAAL,GAAA,EAAA,EAAAK,EAAA,CAAA,CAAA,EAAA,GAAAS,GAAA,QAAA,KAAAA,GAAAT,CAAA,EAAAN,GAAA,KAAAM,EAAA,CAAA,GAAAL,GAAA,EAAA,EAAAK,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAea,MAAA+S,GAAciG,EAAAA,WAAW,CAAC7Y,EAAiByE,IAAa,CACnE,MAAM48B,EAAQnoB,EAAAA,eAAe,aAAa,EAC1C,OACEjZ,EAAA,cAAC6X,EAAAA,IAAA3X,GAAA,CACC,IAAMsE,EACN,GAAK48B,CACArhC,EAAAA,CAAAA,CACP,CAEJ,CAAC,ECxBD,IAAAI,GAAA,OAAA,eAAAV,GAAA,OAAA,sBAAAgM,GAAA,OAAA,UAAA,eAAA+J,GAAA,OAAA,UAAA,qBAAA7V,GAAA,CAAAC,EAAAQ,EAAAC,IAAAD,KAAAR,EAAAO,GAAAP,EAAAQ,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAC,CAAA,CAAA,EAAAT,EAAAQ,CAAA,EAAAC,EAAAR,GAAA,CAAAD,EAAAQ,IAAA,CAAA,QAAAC,KAAAD,IAAAA,EAAA,CAAA,GAAAqL,GAAA,KAAArL,EAAAC,CAAA,GAAAV,GAAAC,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,GAAAZ,GAAA,QAAAY,KAAAZ,GAAAW,CAAA,EAAAoV,GAAA,KAAApV,EAAAC,CAAA,GAAAV,GAAAC,EAAAS,EAAAD,EAAAC,CAAA,CAAA,EAAA,OAAAT,CAAA,EAAA8L,GAAA,CAAA9L,EAAAQ,IAAA,CAAA,IAAAC,EAAA,CAAA,EAAA,QAAAI,KAAAb,EAAA6L,GAAA,KAAA7L,EAAAa,CAAA,GAAAL,EAAA,QAAAK,CAAA,EAAA,IAAAJ,EAAAI,CAAA,EAAAb,EAAAa,CAAA,GAAA,GAAAb,GAAA,MAAAH,GAAA,QAAAgB,KAAAhB,GAAAG,CAAA,EAAAQ,EAAA,QAAAK,CAAA,EAAA,GAAA+U,GAAA,KAAA5V,EAAAa,CAAA,IAAAJ,EAAAI,CAAA,EAAAb,EAAAa,CAAA,GAAA,OAAAJ,CAAA,EA+Da,MAAAm+C,GAAa56C,GAOJ,CAPI,IAAA8R,EAAA9R,EACxB,CAAA,SAAAkF,EACA,QAAAoD,EAAU,IACV,UAAAuyC,EAAY,KACZ,oBAAAC,EAAsB,SACtB,sBAAAC,EAAwB,CApE1B,EA+D0BjpC,EAMrBO,EAAAC,GANqBR,EAMrB,CALH,WACA,UACA,YACA,sBACA,uBAAA,CAAA,EAGA,MAAMqvB,EAAOl8B,GAAqBC,EAAU,CAAE,CAAA,EACxC81C,EAAkBt4C,EAAS,SAAA,QAASm4C,CAAS,EAEnD,OACEz+C,EAAA,cAACuf,QAAArf,GAAA,CAAM,QAAUgM,EAAU,SAAS,UAAgB+J,EAAAA,CAAAA,EAChD8uB,EAAK,IACL,CAAC8Z,EAAKt/C,IACJS,EAAA,cAACic,EAAAA,OAAA,CAAO,IAAM,OAAO1c,IAAgB,WAAam/C,CAChD1+C,EAAAA,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAAC6X,EAAAA,IAAA,CACC,aAAa,OACb,QAAQ,QACR,QAAQ,IACR,KAAK,IACL,KAAK,IACL,OAAO,SACP,UAAY,GAAG8mC,OAEf3+C,EAAA,cAAC0R,GAAA,CACC,KAAK,KACL,GAAK,CAAE,MAAO,eAAgB,EAC9B,EAAE,cACF,UAAU,UAERnS,EAAI,CACR,CACF,EACEs/C,CACJ,CACF,CAEJ,EACA7+C,EAAA,cAAC80C,EAAAA,QAAA,CACC,YAAY,WACZ,KAAK,IACL,IAAM,QAAQ8J,WAAyBD,OACvC,EAAI,eAAeC,OAAqBD,OACxC,SAAS,UAAA,CACX,CACF,CAEJ,+fCnGA,KAAM,CAAE,OAAQG,EAAa,EAAIxhB,EAK1B,iBAAMyhB,GAAsB,KACjC,CACE,OAASn7C,GAAwB,CAAxB,IAAA8R,EAAA9R,EAAE,CAAA,SAAAkF,CApBf,EAoBa4M,EAAe3V,EAAAmW,GAAfR,EAAe,CAAb,UACT,CAAA,EAAA,OAAA1V,EAAA,cAAC8+C,GAAA5+C,GAAA,CAAkBH,EAAAA,CAAAA,EACfA,EAAM,KAAK,YACXC,EAAA,cAAC0c,EAAAA,KAAA,CACC,GAAK,EACL,MAAQ,IACR,GAAK,GACL,eAAe,SACf,WAAW,QAEX1c,EAAAA,EAAA,cAAC0P,EAAA,CAAK,GAAKsvC,EAAY,UAAA,MAAM,OAAQ,CAAA,CACvC,EAEA,CAACj/C,EAAM,KAAK,YAAcC,EAAA,cAAC6X,EAAAA,IAAA,CAAI,GAAK,EAAI,MAAQ,GAAA,CAAM,EACxD7X,EAAA,cAAC4lB,EAAAA,KAAA,CACC,MAAQ7lB,EAAM,KAAK,WAAa,aAAe,eAC/C,WAAaA,EAAM,KAAK,WAAa,WAAa,QAAA,EAEhD+I,CACJ,CACF,CAEJ,CAAA,GC1CF,IAAAghC,GAAA,OAAA,eAAAmV,GAAA,OAAA,iBAAAC,GAAA,OAAA,0BAAAr5B,GAAA,OAAA,sBAAA1Q,GAAA,OAAA,UAAA,eAAA3U,GAAA,OAAA,UAAA,qBAAAmZ,GAAA,CAAA,EAAA/Z,EAAAF,IAAAE,KAAA,EAAAkqC,GAAA,EAAAlqC,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAF,CAAA,CAAA,EAAA,EAAAE,CAAA,EAAAF,EAAA6I,GAAA,CAAA,EAAA3I,IAAA,CAAA,QAAAF,KAAAE,IAAAA,EAAA,CAAA,GAAAuV,GAAA,KAAAvV,EAAAF,CAAA,GAAAia,GAAA,EAAAja,EAAAE,EAAAF,CAAA,CAAA,EAAA,GAAAmmB,GAAA,QAAAnmB,KAAAmmB,GAAAjmB,CAAA,EAAAY,GAAA,KAAAZ,EAAAF,CAAA,GAAAia,GAAA,EAAAja,EAAAE,EAAAF,CAAA,CAAA,EAAA,OAAA,CAAA,EAAAS,GAAA,CAAA,EAAAP,IAAAq/C,GAAA,EAAAC,GAAAt/C,CAAA,CAAA,EAAAsG,GAAA,CAAA,EAAAtG,IAAA,CAAA,IAAAF,EAAA,CAAA,EAAA,QAAAgB,KAAA,EAAAyU,GAAA,KAAA,EAAAzU,CAAA,GAAAd,EAAA,QAAAc,CAAA,EAAA,IAAAhB,EAAAgB,CAAA,EAAA,EAAAA,CAAA,GAAA,GAAA,GAAA,MAAAmlB,GAAA,QAAAnlB,KAAAmlB,GAAA,CAAA,EAAAjmB,EAAA,QAAAc,CAAA,EAAA,GAAAF,GAAA,KAAA,EAAAE,CAAA,IAAAhB,EAAAgB,CAAA,EAAA,EAAAA,CAAA,GAAA,OAAAhB,CAAA,EA4FA,MAAMy/C,GAA6C,YAEtCC,GAAsDx7C,GAe5B,CAf4B,IAAA8R,EAAA9R,EACjE,CAAA,gBAAAy7C,EACA,mBAAAC,EAAqB,sBACrB,qBAAAC,EAAuB,sBACvB,eAAAC,EAAiB,CACf,MAAO,YACP,MAAOL,GACP,WAAY,EACd,EACA,eAAAM,EACA,QAAAvnC,EAAU,UACV,aAAAwnC,EACA,MAAA1+C,EACA,cAAA2+C,EAAgB,QA3GlB,EA8FmEjqC,EAc9DkqC,EAAA1pC,GAd8DR,EAc9D,CAbH,kBACA,qBACA,uBACA,iBAKA,iBACA,UACA,eACA,QACA,eAAA,CAAA,EAGA,KAAM,CAAEmqC,EAAgBC,CAAkB,EAC1C1+C,EAAAA,SAAkD,IAAM,CA/G1D,IAAAwC,EAAA8R,EAgHI,MAAMqqC,GAAcn8C,EAAA5C,GAAS0+C,IAAT,KAAA97C,EAAyB,KAC7C,OAAOm8C,IACHrqC,EAAA2pC,EAAgB,KAAMloC,GAAWA,EAAO,QAAU4oC,CAAW,IAA7D,KAAArqC,EACA,IACN,CAAC,EAEK,CAAEsqC,EAAsBC,CAAwB,EACpD7+C,EAAAA,SAASk+C,CAAkB,EACvB,CAAEY,EAAgBC,CAAkB,EAAI/+C,EAAsB,SAAA,CAAE,CAAA,EAChE,CAAEg/C,EAAiBC,CAAmB,EAAIj/C,EAAkB,SAAA,EAAK,EACjE,CAAEk/C,EAAoBC,CAAsB,EAAIn/C,EAAAA,SAAiB,EAAE,EAEzE,SAASo/C,EAAkBrpC,EAAuC,CAChE,OAAOA,GAAU,OAAOA,EAAO,YAAe,SAChD,CAEA,MAAM3S,EAAMf,EAAAA,OAAuB,IAAI,EAEjCg9C,EAAsC,CAC1CC,EACA/qC,IACGuB,EAAAA,IAAKC,GAAWgQ,EAAAA,QAAQhQ,EAAO,KAAK,IAAMupC,EAAQ/qC,CAAO,EAExDgrC,EAAsBC,GAA2B,CAGrD,GAFAP,EAAmB,EAAI,EAEnBttC,EAAAA,QAAQwK,EAAAA,KAAKqjC,CAAmB,CAAC,EACnC,OAGF,MAAMC,EAAqB15B,EAAAA,QAAQy5B,CAAmB,EAEhDE,EACJL,EAAoCI,EAAoBxB,CAAe,EAOzE,GAAI,CALoCoB,EACtCI,EACAX,CACF,GAEwC,CAACY,EAAkC,CACzE,MAAMzpC,EAAY,CAChB,MAAOupC,EACP,MAAOA,CACT,EACAT,EAAmBY,GAA0B,CAC3C,GAAGA,EACH1pC,CACF,CAAC,EACDyoC,EAAkBzoC,CAAS,EAC3BooC,EAAepoC,CAAS,EAE1B4oC,EAAwBX,CAAkB,CAC5C,EAEM1oC,EAAe,CACnByvB,EACA2a,IACG,CACH,MAAM7pC,EAASkvB,EAEXA,GAAA,MAAAA,EAAU,YACZga,EAAmB,EAAI,EAGrBlpC,GAAU,OAIVqpC,EAAiBrpC,CAAM,EACzB8oC,EAAwBV,CAAoB,EAE5CU,EAAwBX,CAAkB,EAExCnoC,EAAO,QAAUgoC,KACnBW,EAAkB3oC,CAAM,EACxBsoC,EAAetoC,CAAM,GAEzB,EAEM8pC,EAAkB9zB,EAAAA,QACtB,IAAmB+zB,GAAAA,OAAOj9C,OAAK,OAAO,EAAG,CAAE,GAAGo7C,EAAiB,GAAGa,CAAe,CAAC,EAClF,CAAEb,EAAiBa,CAAe,CACpC,EAEMiB,EAAmD,CACvD51C,GAAArL,GAAA,CAAA,EACKs/C,GADL,CAEE,KAAMx/C,EAAA,cAAC0P,EAAA,KAAA,CAAK,GAAKsvC,EAAAA,UAAY,MAAM,OAAA,CAAQ,CAC7C,CAAA,EACA,GAAGiC,CACL,EAEA,OAAA5/C,EAAU,UAAA,IAAM,CA7MlB,IAAAuC,EA8MI,MAAMw9C,GACJx9C,EAAAq9C,EAAgB,KAAM9pC,GAAWA,EAAO,QAAUnW,CAAK,IAAvD,KAAA4C,EAA4D,KAC1Di8C,GAAgB,QAAUuB,GAAmB,OAC/CtB,EAAkBsB,CAAiB,CAEvC,EAAG,CAAEpgD,EAAOigD,CAAgB,CAAC,EAG3BjhD,EAAA,cAAC6X,EAAAA,IAAA,CACC,IAAMrT,EACN,EAAE,OACF,aAAa,MAAA,EAEX47C,GACApgD,EAAA,cAAC6S,GAAA,CACC,MAAQytC,EACR,kBAAoB,GACpB,SAAYnrC,GAAM,CAChBorC,EAAsBprC,CAAC,CACzB,EACA,aAAe,GACf,SAAW,IAAM,CACforC,EAAsB,EAAE,EACxBF,EAAmB,EAAK,CAC1B,EACA,SAAYlrC,GAAM,CAChBwrC,EAAmBxrC,CAAM,EACzBkrC,EAAmB,EAAK,CAC1B,EACA,QAAQ,QACR,GAAK,CACH,SAAU,OACV,MAAO,MACT,CAAA,CACF,EAEA,CAACD,GACDpgD,EAAA,cAAC2W,EAAAA,gBAAAzW,GAAA,CAEC,cAAgBy/C,EAChB,aAAep0C,GAAArL,GAAA,CAAA,EACVmL,EADU,EAAA,CAEb,UAAYC,GAAcC,GAAArL,GAAA,CAAA,EACrBoL,CAAAA,EADqB,CAExB,MAAO,MACT,CACA,EAAA,OAAQ,CAACA,EAAU,CAAE,WAAAga,CAAW,IAAOplB,GAAAqI,GAAA,GAClC+C,CACCga,EAAAA,GAAc,CAChB,MAAO,OACT,CAAA,CAEJ,CACA,EAAA,WAAay5B,GAA6C,EAC1D,QAAUoC,EACV,iBAAmB,SAAS,KAC5B,OAAS,CAAE,WAAarpC,GAAUvM,GAAArL,GAAA,CAAK4X,EAAAA,CAAAA,EAAL,CAAW,OAAQ1I,EAAM,MAAA,SAAS,OAAQ,CAAA,CAAG,EAC/E,MAAQywC,EACR,SAAWjpC,EACX,QAAU,GACV,eAAkBzB,GAAM,CACtBkrC,EAAmB,EAAI,EACvBE,EAAsBprC,CAAC,CACzB,EACA,YAAc6qC,EACd,eAAiB,GACjB,QAAU9nC,CACJ0nC,EAAAA,CAAAA,CAIR,CAEJ,CAEJ,olBC7Qa,MAAAyB,GAAez9C,GAcJ,CAdI,IAAA8R,EAAA9R,EAC1B,CAAA,SAAAR,EACA,QAAAuS,EACA,KAAAmD,EACA,MAAOshC,EACP,YAAAmB,EACA,UAAA+F,EACA,aAAAC,EACA,WAAA78B,EACA,WAAA1W,EACA,qBAAAwzC,EAAuB,GACvB,IAAAl9C,EAAM,EACN,EAAA,IAAAD,EAAM,GAAA,CAxBR,EAY4BqR,EAavBO,EAAAC,GAbuBR,EAavB,CAZH,WACA,UACA,OACA,QACA,cACA,YACA,eACA,aACA,aACA,uBACA,MACA,KAxBF,CAAA,EAAA9R,EAAA8R,EAAA+rC,EA2BE,KAAM,CAAE,OAAA/uC,EAAQ,SAAAoP,EAAU,QAAAC,CAAQ,EAAIC,EAAAA,cAAAA,EAChC,CAAE3L,EAAYC,CAAc,EAAIlV,EAASg5C,SAAAA,GAAW,KAAK,EACzD,CAAEsH,EAAcC,CAAgB,EAAIvgD,WAASg5C,GAAW,MAAM,EAC9D,CAAEwH,EAAmBC,CAAqB,EAAIzgD,EAAAA,SAAS,EAAK,EAE5D0gD,EAAYr+C,EAAY,OAAA,EACxBs+C,EAAYt+C,EAAAA,SAEZu+C,EAAc,CAAC7qC,EAA4BH,IAAqC,CACpF,MAAMirC,GAAiB9qC,GAAUxB,EAAQ,CAAC,EAE1C,OAAQqH,KAAG,OAAQhG,CAAK,EACpB,CAAE,MAAO,OAAOA,CAAK,EAAG,OAAQirC,EAAe,EAC/C,CAAE,OAAQA,EAAe,CAC/B,EAEMzqC,EAAqB0qC,GAA2B,CACpD,MAAM7b,EAAW2b,EAAY5H,GAAW,OAAQ8H,CAAa,EAE7D9+C,IAAWijC,CAAAA,CACb,EAEM8b,EAAoB,IAAM,CAC1BL,EAAU,UACZA,EAAU,QAAQ,MAAM,EACxBD,EAAqB,EAAK,GAG5B9/B,GACF,EAEMqgC,EAAsBvC,GAAmD,CACzEA,IACFz8C,IAAW4+C,EAAYnC,EAAgBzF,GAAW,KAAK,CAAA,EAEnD1nC,GACFyvC,IAGN,EAEME,EAAqB,IAAM,CAC1B3vC,GACHmvC,EAAqB,EAAI,EAG3B//B,EAAAA,CACF,EAEAzgB,EAAAA,UAAU,IAAM,CACVugD,GACFG,EAAU,QAAQ,MAAA,CAEtB,EAAG,CAAEH,CAAkB,CAAC,EAExBvgD,YAAU,IAAM,CAlFlB,IAAAuC,EAAA8R,EAmFI,MAAMyB,IAASvT,EAAAw2C,GAAW,SAAX,KAAAx2C,EAAqB+R,EAAQ,CAAC,EACvCqB,GAAQwqC,GAAuB9rC,EAAA0kC,GAAW,QAAX,KAAA1kC,EAAoB,EAAI0kC,GAAW,MAExEuH,EAAgBxqC,EAAM,EACtBb,EAAcU,EAAK,EAEnB5T,IAAW4+C,EAAY7qC,GAAQH,EAAK,EACtC,EAAG,CAAEojC,GAAW,MAAOA,GAAW,OAAQoH,EAAsB7rC,CAAQ,CAAC,EAEzE,MAAM2sC,IAAe5sC,GAAA9R,EAAAk+C,EAAU,UAAV,KAAA,OAAAl+C,EAAmB,cAAnB,KAAA8R,EAAkC,EAEvD,OACE1V,EAAA,cAAAA,EAAA,SACEA,KAAAA,EAAA,cAACi6C,GAAA1uC,GAAArL,GAAA,CACC,MAAM,OACN,SAAY2W,GAAWW,EAAkBX,EAAO,UAAU,EAC1D,MAAQR,EACR,YAAcklC,EACd,KAAOziC,EACP,iBAAmBwoC,EACnB,OAASC,EACT,SAAW78B,EACX,SAAW1W,EACX,IAAM3J,EACN,IAAMC,CACD2R,EAAAA,CAAAA,EAZN,CAaC,GAAK,GAAGqsC,IAAe,EAAIA,GAAc,GAAK,MAC9C,kBACEtiD,EAAA,cAACquB,EAAAA,kBAAA,CACC,MAAM,OACN,QAAQ,OACR,eAAe,WACf,GAAK,EACL,GAAK,CAELruB,EAAAA,EAAA,cAACgM,EAAA,OAAA,CACC,IAAM81C,EACN,WAAap9B,EACb,QAAU29B,EACV,WAAW,IACX,OAAO,OACP,cAAY,qBAAA,GAEVZ,EAAAC,GAAc,QAAd,KAAAD,EAAuB,EAC3B,CACF,CAEJ,CAAA,CAAA,EAEE/uC,GACE1S,EAAA,cAAC6X,EAAAA,IAAA,CAAI,SAAS,WAAW,MAAM,OAAO,IAAM,CAAA,EAC1C7X,EAAA,cAAC4M,GAAA,CACC,IAAMm1C,EACN,aAAe,CAAE,UAAYz2C,GAAcC,GAAArL,GAAA,CAAA,EACtCoL,CADsC,EAAA,CAEzC,SAAU,WACV,WAAY,SACZ,MAAO,GACT,CACA,EAAA,MAAQA,GAAcC,GAAArL,GAAA,CAAA,EACjBoL,CAAAA,EADiB,CAEpB,cAAe,OACf,MAAO,cACP,QAASs2C,EAAoB,QAAU,MACzC,CAAA,EACA,KAAOt2C,GAAcC,GAAArL,GAAA,GAChBoL,CADgB,EAAA,CAEnB,MAAO,OACP,MAAO,GACT,CAAG,CAAA,EACH,QAAUqK,EACV,MAAQ+rC,EAAeA,EAAa,MAAQ,OAC5C,SAAWU,EACX,OAASD,EACT,WAAazvC,CAAAA,CACf,CACF,CAGN,CAEJ,ECpKA,IAAAiH,GAAA,OAAA,eAAAla,GAAA,OAAA,sBAAA6nB,GAAA,OAAA,UAAA,eAAA9mB,GAAA,OAAA,UAAA,qBAAA+H,GAAA,CAAAhJ,EAAAa,EAAAR,IAAAQ,KAAAb,EAAAoa,GAAApa,EAAAa,EAAA,CAAA,WAAA,GAAA,aAAA,GAAA,SAAA,GAAA,MAAAR,CAAA,CAAA,EAAAL,EAAAa,CAAA,EAAAR,EAAA8L,GAAA,CAAAnM,EAAAa,IAAA,CAAA,QAAAR,KAAAQ,IAAAA,EAAA,CAAA,GAAAknB,GAAA,KAAAlnB,EAAAR,CAAA,GAAA2I,GAAAhJ,EAAAK,EAAAQ,EAAAR,CAAA,CAAA,EAAA,GAAAH,GAAA,QAAAG,KAAAH,GAAAW,CAAA,EAAAI,GAAA,KAAAJ,EAAAR,CAAA,GAAA2I,GAAAhJ,EAAAK,EAAAQ,EAAAR,CAAA,CAAA,EAAA,OAAAL,CAAA,EAAAI,GAAA,CAAAJ,EAAAa,IAAA,CAAA,IAAAR,EAAA,CAAA,EAAA,QAAAa,KAAAlB,EAAA+nB,GAAA,KAAA/nB,EAAAkB,CAAA,GAAAL,EAAA,QAAAK,CAAA,EAAA,IAAAb,EAAAa,CAAA,EAAAlB,EAAAkB,CAAA,GAAA,GAAAlB,GAAA,MAAAE,GAAA,QAAAgB,KAAAhB,GAAAF,CAAA,EAAAa,EAAA,QAAAK,CAAA,EAAA,GAAAD,GAAA,KAAAjB,EAAAkB,CAAA,IAAAb,EAAAa,CAAA,EAAAlB,EAAAkB,CAAA,GAAA,OAAAb,CAAA,EAoEO,MAAM2iD,GAAoB3+C,GAQP,CARO,IAAA8R,EAAA9R,EAC/B,MAAAiE,EACA,WAAAmX,EACA,UAAAD,EAAY,SACZ,MAAAF,EACA,SAAAlB,EACA,SAAUqC,CA1EZ,EAoEiCtK,EAO5BO,EAAAC,GAP4BR,EAO5B,CANH,OACA,aACA,YACA,QACA,WACA,UAGA,CAAA,EAAA,OAAA1V,EAAA,cAAC2f,EAAA,CACC,KAAO9X,EACP,MAAQgX,EACR,UAAYE,EACZ,WAAaC,EACb,SAAWrB,CAAAA,EAET,CAAC,CAAE,MAAA3c,EAAO,SAAAoC,CAAS,IACnBpD,EAAA,cAACqhD,GAAAnhD,GAAA,CACC,cAAY,uBACZ,aAAa2e,EACb,SAAY2jC,GAAqB,CAC/Bp/C,EAASo/C,CAAgB,EACzBxiC,IAAmBwiC,CAAAA,CACrB,EACA,MAAQxhD,CAAAA,EACHiV,EACP,CAEJ,CAAA"}
1
+ {"version":3,"file":"northlight.min.cjs","sources":["../../lib/components/accordion/accordion.tsx","../../lib/components/accordion/accordion-button.tsx","../../lib/components/accordion/accordion-panel.tsx","../../lib/components/accordion/accordion-item.tsx","../../lib/hooks/use-debounce/index.ts","../../lib/hooks/use-loading-message/index.ts","../../lib/hooks/use-scroll-to-bottom/utils/smooth-scroll-to-bottom.ts","../../lib/hooks/use-scroll-to-bottom/index.ts","../../lib/hooks/use-arrow-focus/index.ts","../../lib/hooks/use-select-callbacks/use-select-callbacks.ts","../../lib/hooks/use-outside-rect-click/index.ts","../../lib/hooks/use-screen-size/index.ts","../../lib/hooks/use-did-update-effect/index.ts","../../lib/utils/luminosity/index.ts","../../lib/utils/get-contrast-color/index.ts","../../lib/utils/ring/index.ts","../../lib/utils/highlight/index.ts","../../lib/utils/get-shades/index.ts","../../lib/utils/get-initials/index.ts","../../lib/utils/get-field-error/index.ts","../../lib/utils/get-children-with-props/pass-props-to-child.ts","../../lib/utils/get-children-with-props/index.ts","../../lib/utils/add-alpha/index.ts","../../lib/utils/debounce/create-debounce-function-instance.ts","../../lib/utils/use-current-theme/index.ts","../../lib/utils/clamp/index.ts","../../lib/utils/get-consistent-random-color-from-string/index.ts","../../lib/hooks/use-resize-width/index.ts","../../lib/theme/components/select/custom-select.ts","../../lib/components/tags-input/tags-input-styles.ts","../../lib/theme/global/scrollbar.ts","../../lib/theme/components/breadcrumb/index.ts","../../lib/theme/components/button/index.ts","../../lib/theme/components/blinker/index.ts","../../lib/theme/components/checkbox/index.ts","../../lib/theme/components/input/index.ts","../../lib/theme/components/pin-input/index.ts","../../lib/theme/components/select/index.ts","../../lib/theme/components/radio/index.ts","../../lib/theme/components/tabs/index.ts","../../lib/theme/components/textarea/index.ts","../../lib/theme/components/link/index.ts","../../lib/theme/components/switch/index.ts","../../lib/theme/process-color-scheme-based-on-theme.ts","../../lib/theme/components/tag/index.ts","../../lib/theme/components/alert/index.ts","../../lib/theme/components/number-input/index.ts","../../lib/theme/components/notification-icon-button/index.ts","../../lib/theme/components/calendar/index.ts","../../lib/theme/components/drag-and-drop/index.ts","../../lib/theme/components/date-picker/index.ts","../../lib/theme/components/flip-button/index.ts","../../lib/theme/components/spinner/index.ts","../../lib/theme/components/avatar/get-avatar-bg-color.ts","../../lib/theme/components/avatar/index.ts","../../lib/theme/components/close-button/index.ts","../../lib/theme/components/modal/index.ts","../../lib/theme/components/tooltip/index.ts","../../lib/theme/components/icon/index.ts","../../lib/theme/components/clipboard-input/index.ts","../../lib/theme/components/color-picker/index.ts","../../lib/theme/components/steps/step/index.ts","../../lib/theme/components/steps/step-list/index.ts","../../lib/theme/components/typography/headings/h1.ts","../../lib/theme/components/typography/headings/h2.ts","../../lib/theme/components/typography/headings/h3.ts","../../lib/theme/components/typography/headings/h4.ts","../../lib/theme/components/typography/headings/h5.ts","../../lib/theme/components/typography/headings/h6.ts","../../lib/theme/components/typography/stylized/blockquote.ts","../../lib/theme/components/typography/stylized/tiny.ts","../../lib/theme/components/typography/stylized/capitalized.ts","../../lib/theme/components/typography/stylized/lead.ts","../../lib/theme/components/typography/stylized/small.ts","../../lib/theme/components/typography/body/p.ts","../../lib/theme/components/typography/labels/label.ts","../../lib/theme/components/typography/numvals/numval.ts","../../lib/theme/components/split-pane/index.ts","../../lib/theme/components/carousel/index.ts","../../lib/theme/components/editable-text/index.ts","../../lib/theme/components/toolbox/index.ts","../../lib/theme/components/file-picker/index.ts","../../lib/theme/components/badge/index.ts","../../lib/theme/components/menu/index.ts","../../lib/theme/components/popover/index.ts","../../lib/theme/components/progress-bar/index.ts","../../lib/theme/components/table/index.ts","../../lib/theme/skins/webapp/index.ts","../../lib/theme/skins/tott/index.ts","../../lib/theme/skins/camphouse-light/index.ts","../../lib/theme/index.ts","../../lib/components/tags-input/tags-input.tsx","../../lib/components/organization-logo/organization-logo.tsx","../../lib/components/alert/alert.tsx","../../lib/components/aspect-ratio/aspect-ratio.tsx","../../lib/components/icon/icon.tsx","../../lib/components/avatar/avatar-badge.tsx","../../lib/components/avatar/avatar.tsx","../../lib/components/typography/headings/h1.tsx","../../lib/components/typography/headings/h2.tsx","../../lib/components/typography/headings/h3.tsx","../../lib/components/typography/headings/h4.tsx","../../lib/components/typography/headings/h5.tsx","../../lib/components/typography/headings/h6.tsx","../../lib/components/typography/body/p.tsx","../../lib/components/typography/stylized/blockquote.tsx","../../lib/components/typography/stylized/capitalized.tsx","../../lib/components/typography/stylized/lead.tsx","../../lib/components/typography/stylized/small.tsx","../../lib/components/typography/stylized/tiny.tsx","../../lib/components/typography/labels/label.tsx","../../lib/components/typography/numvals/numval.tsx","../../lib/components/overflow-group/overflow-group.tsx","../../lib/components/overflow-group/use-overflow-group.ts","../../lib/components/avatar/avatar-group.tsx","../../lib/components/badge/badge.tsx","../../lib/components/blinker/blinker.tsx","../../lib/components/spinner/spinner.tsx","../../lib/components/button/button.tsx","../../lib/components/checkbox/checkbox.tsx","../../lib/components/form/trim-form-values.ts","../../lib/components/form/form.tsx","../../lib/components/form-control/form-label.tsx","../../lib/components/form/field.tsx","../../lib/components/form/use-set-value-refreshed.ts","../../lib/components/checkbox/checkbox-field.tsx","../../lib/components/checkbox/checkbox-group-field.tsx","../../lib/components/icon-button/icon-button.tsx","../../lib/components/color-picker/constants.ts","../../lib/components/color-picker/color-button.tsx","../../lib/components/popover/popover.tsx","../../lib/components/color-picker/colors-expand-button.tsx","../../lib/components/portal/render-in-portal.tsx","../../lib/components/color-picker/color-picker.tsx","../../lib/components/color-picker/color-picker-field.tsx","../../lib/components/flip-button/utils.ts","../../lib/components/flip-button/flip-button.tsx","../../lib/components/flip-button/flip-button-group.tsx","../../lib/components/flip-button/flip-button-group-field.tsx","../../lib/components/resize-handle/resize-handle.tsx","../../lib/components/date-picker/components/date-field/trigger.tsx","../../lib/components/date-picker/components/date-field/date-segment.tsx","../../lib/components/date-picker/components/date-field/utils.ts","../../lib/components/date-picker/components/date-field/date-field.tsx","../../lib/components/date-picker/components/date-field/styled-field.tsx","../../lib/components/table/table.tsx","../../lib/components/date-picker/components/calendar/components/calendar-cell.tsx","../../lib/components/date-picker/components/calendar/components/day-labels.tsx","../../lib/components/date-picker/components/calendar/components/utils.ts","../../lib/components/date-picker/components/calendar/components/calendar-grid.tsx","../../lib/components/date-picker/components/calendar/components/month-button.tsx","../../lib/components/date-picker/components/calendar/constants.ts","../../lib/components/date-picker/components/calendar/date-select/month-select.tsx","../../lib/components/date-picker/components/calendar/date-select/year-select.tsx","../../lib/components/date-picker/components/calendar/date-select/utils.ts","../../lib/components/date-picker/components/calendar/date-select/year-select-calendar.tsx","../../lib/components/date-picker/components/calendar/date-select/year-select-range-calendar.tsx","../../lib/components/date-picker/components/calendar/components/get-week-number-start-of-month.ts","../../lib/components/date-picker/components/calendar/components/range-cell.tsx","../../lib/components/date-picker/components/calendar/components/standalone-calendar-grid.tsx","../../lib/components/date-picker/components/calendar/calendar.tsx","../../lib/components/date-picker/date-picker/date-picker-locale-wrapper.tsx","../../lib/components/date-picker/date-picker/date-picker.tsx","../../lib/components/clickable/clickable.tsx","../../lib/components/date-picker/components/calendar/quick-navigation/date-button.tsx","../../lib/components/date-picker/components/calendar/quick-navigation/utils.ts","../../lib/components/date-picker/components/calendar/quick-navigation/get-quick-select-options.ts","../../lib/components/date-picker/components/calendar/quick-navigation/quick-select.tsx","../../lib/components/date-picker/components/calendar/range-calendar.tsx","../../lib/components/date-picker/date-picker-field/utils.ts","../../lib/components/types/tooltipIconMap/index.ts","../../lib/components/tooltip/tooltip.tsx","../../lib/components/date-picker/date-picker/date-range-picker.tsx","../../lib/internal-components/input-group-wrapper/input-group-wrapper.tsx","../../lib/components/date-picker/date-picker-field/date-picker-field.tsx","../../lib/components/date-picker/date-picker-field/date-range-picker-field.tsx","../../lib/components/intent-button/timeout-progress-circle.tsx","../../lib/components/intent-button/intent-button.tsx","../../lib/components/transitions/constants.ts","../../lib/components/transitions/utils.ts","../../lib/components/transitions/fade.tsx","../../lib/components/transitions/scale-fade.tsx","../../lib/components/transitions/slide.tsx","../../lib/components/transitions/slide-fade.tsx","../../lib/components/transitions/collapse.tsx","../../lib/components/toolbox/toolbox.tsx","../../lib/components/toolbox/toolbox-header.tsx","../../lib/components/toolbox/toolbox-content.tsx","../../lib/components/toolbox/toolbox-footer.tsx","../../lib/components/radio/radio.tsx","../../lib/components/radio/radio-group.tsx","../../lib/components/radio/radio-group-field.tsx","../../lib/components/carousel/constants.ts","../../lib/components/carousel/carousel-item.tsx","../../lib/components/carousel/carousel-arrow.tsx","../../lib/components/carousel/carousel.tsx","../../lib/components/search-bar/styles.ts","../../lib/components/search-bar/get-components.tsx","../../lib/components/search-bar/search-bar.tsx","../../lib/components/search-bar/search-bar-field.tsx","../../lib/components/drag-and-drop/drag-and-drop.tsx","../../lib/components/tag/tag.tsx","../../lib/components/tag/overflow-indicator.tsx","../../lib/components/tag/tag-group.tsx","../../lib/components/drag-and-drop/drag-item.tsx","../../lib/components/drag-and-drop/draggable.tsx","../../lib/components/drag-and-drop/droppable.tsx","../../lib/components/drag-and-drop/sortable.tsx","../../lib/components/drag-and-drop/sortable-item.tsx","../../lib/components/drag-and-drop/drag-handle.tsx","../../lib/components/drag-and-drop/drop-zone.tsx","../../lib/components/drag-and-drop/multi-sort.tsx","../../lib/components/drag-and-drop/sortable-list.tsx","../../lib/components/drag-and-drop/sortable-container.tsx","../../lib/components/fast-list/fast-list.tsx","../../lib/components/fast-grid/fast-grid.tsx","../../lib/components/editable-text/editable-controls.tsx","../../lib/components/editable-text/editable-text.tsx","../../lib/components/modal/modal-base.tsx","../../lib/components/modal/modal.tsx","../../lib/components/modal/modal-body.tsx","../../lib/components/file-picker/file-editor-modal.tsx","../../lib/components/file-picker/confirm-delete-modal.tsx","../../lib/components/progress/constants.ts","../../lib/components/progress/progress-bar.tsx","../../lib/components/progress/utils.ts","../../lib/components/progress/loading-bar.tsx","../../lib/components/file-picker/constants.ts","../../lib/components/file-picker/utils.ts","../../lib/components/file-picker/file-icon-button.tsx","../../lib/components/file-picker/file-picker.tsx","../../lib/components/file-picker/file-picker-field.tsx","../../lib/components/file-picker/multi-file-uploader.tsx","../../lib/components/file-picker/file-item.tsx","../../lib/components/file-picker/multi-file-list.tsx","../../lib/components/file-picker/multi-file-picker.tsx","../../lib/components/file-picker/multi-file-picker-field.tsx","../../lib/components/mediatool-theme-provider/mediatool-theme-provider.tsx","../../lib/components/menu/menu.tsx","../../lib/components/number-input/number-input-stepper.tsx","../../lib/components/number-input/advanced-parse-float.ts","../../lib/components/number-input/number-input.tsx","../../lib/components/number-input/number-input-field.tsx","../../lib/components/notification-icon-button/notification-icon-button.tsx","../../lib/components/pin-input/pin-input.tsx","../../lib/components/select/get-matching-value.ts","../../lib/components/select/select.tsx","../../lib/components/select/select-field.tsx","../../lib/components/select/sortable-select-values.tsx","../../lib/components/select/sortable-select.tsx","../../lib/components/switch/switch.tsx","../../lib/components/switch/switch-field.tsx","../../lib/components/tabs/tab.tsx","../../lib/components/tabs/tab-panel.tsx","../../lib/components/tabs/tabs.tsx","../../lib/components/textarea/textarea.tsx","../../lib/components/textarea/textarea-field.tsx","../../lib/components/text-field/round-to-precision.ts","../../lib/components/text-field/formatted-number-input.tsx","../../lib/components/text-field/formatted-number-input-field.tsx","../../lib/components/text-field/masked-text-input.tsx","../../lib/components/text-field/text-field.tsx","../../lib/components/types/toastIconMap/index.ts","../../lib/components/toast/toast.tsx","../../lib/components/toast/use-toast.tsx","../../lib/components/status-pin/pin-variant-map.ts","../../lib/components/status-pin/pin-size-map.ts","../../lib/components/status-pin/status-pin.tsx","../../lib/components/async-error/async-error.tsx","../../lib/components/steps/step-panel.tsx","../../lib/components/steps/steps.tsx","../../lib/components/steps/step.tsx","../../lib/components/steps/step-list.tsx","../../lib/components/clipboard-input/clipboard-input.tsx","../../lib/components/split-pane/split-pane.tsx","../../lib/components/split-pane/pane-item.tsx","../../lib/components/split-pane/pane-divider.tsx","../../lib/components/step-stack/step-stack.tsx","../../lib/components/createable-select-dropdown/custom-components.tsx","../../lib/components/createable-select-dropdown/createable-select-dropdown.tsx","../../lib/components/combo-picker/combo-picker.tsx","../../lib/components/combo-picker/combo-picker-field.tsx"],"sourcesContent":["import React from 'react'\nimport { AccordionProps, Accordion as ChakraAccordion } from '@chakra-ui/react'\n\n/**\n * The wrapper that uses cloneElement to pass props to AccordionItem children.\n * @see {@link https::/northlight.dev/reference/accordion}\n *\n * @example\n * (?\n * <Accordion>\n <AccordionItem>\n <H2>\n <AccordionButton>\n <Box as=\"span\" flex='1' textAlign='left'>\n Section 1 title\n </Box>\n <AccordionIcon />\n </AccordionButton>\n </H2>\n <AccordionPanel pb={4}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim\n veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea\n commodo consequat.\n </AccordionPanel>\n </AccordionItem>\n\n <AccordionItem>\n <H2>\n <AccordionButton>\n <Box as=\"span\" flex='1' textAlign='left'>\n Section 2 title\n </Box>\n <AccordionIcon />\n </AccordionButton>\n </H2>\n <AccordionPanel pb={4}>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim\n veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea\n commodo consequat.\n </AccordionPanel>\n </AccordionItem>\n</Accordion>\n * ?)\n */\nexport const Accordion = (props: AccordionProps) => (\n <ChakraAccordion { ...props } />\n)\n","import React from 'react'\nimport { AccordionButtonProps, AccordionButton as ChakraAccordionButton } from '@chakra-ui/react'\n\n/**\n * The button that toggles the expand/collapse state of the accordion item.\n * This button must be wrapped in an element with role heading.\n * @see Accordion\n * @see AcordionItem\n * @see {@link https://northlight.dev/reference/accordion-button}\n * @example\n * (Needs to be wrapped around AccordionItem and\n * Accordion context)\n * (?\n * <Accordion>\n * <AccordionItem>\n * <AccordionButton>Content</AccordionButton>\n * </AccordionItem>\n * </Accordion>\n * ?)\n */\nexport const AccordionButton = (props: AccordionButtonProps) => (\n <ChakraAccordionButton { ...props } />\n)\n","import React from 'react'\nimport {\n AccordionPanelProps,\n AccordionPanel as ChakraAccordionPanel,\n} from '@chakra-ui/react'\n\n/**\n * The container for the details to be revealed.\n * @see {@link htpts://northlight.dev/reference/accordion-panel}\n */\nexport const AccordionPanel = (props: AccordionPanelProps) => (\n <ChakraAccordionPanel { ...props } />\n)\n","import React from 'react'\nimport {\n AccordionItemProps,\n AccordionItem as ChakraAccordionItem,\n} from '@chakra-ui/react'\n\nexport const AccordionItem = (props: AccordionItemProps) => (\n <ChakraAccordionItem { ...props } />\n)\n","import { useEffect, useState } from 'react'\n\nexport const useDebounce = <T>(value: T, delay: number) => {\n const [ debouncedValue, setDebouncedValue ] = useState<T>(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n return () => {\n clearTimeout(handler)\n }\n }, [ value, delay ])\n\n return debouncedValue\n}\n","import { useState } from 'react'\nimport { useInterval } from '../use-interval'\n\nexport const useLoadingMessage = (prefix: string = '', delay: number = 300) => {\n const [ dots, setDots ] = useState('.')\n\n useInterval(() => {\n if (dots.length === 3) {\n setDots('.')\n } else {\n setDots(`${dots}.`)\n }\n }, delay)\n return `${prefix}${dots}`\n}\n","export const smoothScrollToBottom = (div: HTMLDivElement) => {\n const totalSteps = 50\n let currentStep = 0\n const targetScrollTop = div.scrollHeight - div.clientHeight\n const originalScrollTop = div.scrollTop\n const scrollInterval = setInterval(() => {\n if (currentStep >= totalSteps) {\n clearInterval(scrollInterval)\n } else {\n currentStep += 1\n const scrollProgress = currentStep / totalSteps\n const easing = 1 - (1 - scrollProgress) * (1 - scrollProgress) // quadratic ease out\n // eslint-disable-next-line no-param-reassign\n div.scrollTop = originalScrollTop + ((targetScrollTop - originalScrollTop) * easing)\n }\n }, 20)\n}\n","import { RefObject, useEffect } from 'react'\nimport { smoothScrollToBottom } from './utils/smooth-scroll-to-bottom'\n\nexport interface Message {\n content: string\n role: string\n type?: string\n data?: string\n}\n\nexport const useScrollToBottom = (scrollView: RefObject<HTMLDivElement>, messages: Message[]) => {\n useEffect(() => {\n const div = scrollView.current\n if (div) {\n smoothScrollToBottom(div)\n }\n }, [ messages ])\n}\n","import { useFocusManager } from '@react-aria/focus'\n\nexport const useArrowFocus = (columns: number) => {\n const {\n focusNext: next,\n focusPrevious: previous,\n focusFirst,\n focusLast,\n } = useFocusManager()\n\n const defaultOpts = {\n ArrowRight: {\n wrap: true,\n repeat: 1,\n },\n ArrowLeft: {\n wrap: true,\n repeat: 1,\n },\n ArrowDown: {\n wrap: false,\n repeat: columns,\n },\n ArrowUp: {\n wrap: false,\n repeat: columns,\n },\n }\n\n const focusPrevious = ({\n repeat,\n wrap,\n } = defaultOpts.ArrowLeft) => {\n for (let i = 0; i < repeat; i += 1) {\n previous({ wrap })\n }\n }\n\n const focusNext = ({\n repeat,\n wrap,\n } = defaultOpts.ArrowRight) => {\n for (let i = 0; i < repeat; i += 1) {\n next({ wrap })\n }\n }\n\n const defaultArrows = (e: any) => {\n switch (e.key) {\n case 'ArrowRight':\n focusNext(defaultOpts.ArrowRight)\n break\n case 'ArrowLeft':\n focusPrevious(defaultOpts.ArrowLeft)\n break\n case 'ArrowDown':\n e.preventDefault()\n focusNext(defaultOpts.ArrowDown)\n break\n case 'ArrowUp':\n e.preventDefault()\n focusPrevious(defaultOpts.ArrowUp)\n break\n default:\n break\n }\n }\n\n return {\n defaultArrows,\n focusPrevious,\n focusNext,\n focusFirst,\n focusLast,\n }\n}\n","import { ActionMeta, MultiValue, SingleValue } from 'chakra-react-select'\nimport { difference, isNil, last, map, prop } from 'ramda'\nimport { useRef } from 'react'\nimport { BasicOption, UseSelectCallbacksProps } from './types'\n\nexport const useSelectCallbacks = <\n T extends BasicOption,\n K extends boolean = false\n>({\n onChange,\n onAdd,\n onRemove,\n isMulti = false,\n value,\n }: UseSelectCallbacksProps<T, K>) => {\n const items = useRef<MultiValue<T> | SingleValue<T>>(value)\n\n const handleChange = (\n val: K extends true ? MultiValue<T> : SingleValue<T>,\n event: ActionMeta<T>\n ) => {\n onChange(val, event)\n if (!isMulti && !isNil(val)) {\n onAdd((val as T).value)\n } else if (\n !isNil(val) &&\n (val as T[]).length > (items.current as T[]).length\n ) {\n onAdd(last(val as T[])?.value)\n } else {\n const removedItems = map(\n prop('value'),\n difference(\n isMulti ? (items.current as T[]) : ([ items.current ] as T[]),\n val as T[]\n )\n )\n onRemove(removedItems.length === 1 ? removedItems[0] : removedItems)\n }\n items.current = val\n }\n return handleChange\n}\n","import { isNil } from 'ramda'\nimport { MutableRefObject, useEffect, useRef } from 'react'\n\nconst isBetween = (point: number, min: number, max: number) => (point >= min && point <= max)\n\nconst isEventInsideRect = (\n ref:MutableRefObject<HTMLElement>,\n event: MouseEvent | TouchEvent\n) => {\n let clientX\n let clientY\n\n if (event instanceof MouseEvent) {\n clientX = event.clientX\n clientY = event.clientY\n } else if (event instanceof TouchEvent && event.changedTouches[0]) {\n clientX = event.changedTouches[0].clientX\n clientY = event.changedTouches[0].clientY\n }\n\n if (isNil(clientX) || isNil(clientY)) return true\n\n const {\n top,\n right,\n left,\n bottom,\n } = ref.current.getBoundingClientRect()\n\n return isBetween(clientX, left, right) && isBetween(clientY, top, bottom)\n}\n\nconst isHtmlElementRef =\n (ref: MutableRefObject<HTMLElement | null>): ref is MutableRefObject<HTMLElement> =>\n !isNil(ref.current)\n\nexport const useOutsideRectClick =\n(ref: MutableRefObject<HTMLElement | null>, callback: (event: MouseEvent | TouchEvent) => void) => {\n const stateRef = useRef({\n isPointerDownOutsideRect: false,\n ignoreEmulatedMouseEvents: false,\n })\n\n const state = stateRef.current\n\n useEffect(() => {\n const handleMouseClick = (event: MouseEvent | TouchEvent) => {\n if (!isHtmlElementRef(ref)) {\n return\n }\n const isInBound = isEventInsideRect(ref, event)\n\n if (isInBound) return\n callback(event)\n }\n\n const onPointerDown: any = (event: MouseEvent | TouchEvent) => {\n if (!isHtmlElementRef(ref)) {\n return\n }\n if (!isEventInsideRect(ref, event)) {\n state.isPointerDownOutsideRect = true\n }\n }\n\n const onMouseUp: any = (event: MouseEvent) => {\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false\n return\n }\n\n if (state.isPointerDownOutsideRect) {\n state.isPointerDownOutsideRect = false\n handleMouseClick(event)\n }\n }\n\n const onTouchEnd = (event: TouchEvent) => {\n state.ignoreEmulatedMouseEvents = true\n if (state.isPointerDownOutsideRect) {\n state.isPointerDownOutsideRect = false\n handleMouseClick(event)\n }\n }\n\n document.addEventListener('mousedown', onPointerDown, true)\n document.addEventListener('mouseup', onMouseUp, true)\n document.addEventListener('touchstart', onPointerDown, true)\n document.addEventListener('touchend', onTouchEnd, true)\n\n return () => {\n document.removeEventListener('mousedown', onPointerDown, true)\n document.removeEventListener('mouseup', onMouseUp, true)\n document.removeEventListener('touchstart', onPointerDown, true)\n document.removeEventListener('touchend', onTouchEnd, true)\n }\n }, [ callback ])\n}\n","import { useMediaQuery } from '../use-media-query'\n\nexport const useScreenSize = () => {\n const screenSizes = useMediaQuery([ '(min-width: 1280px)', '(min-width: 1024px)' ])\n if (screenSizes[0]) {\n return 'lg'\n }\n if (screenSizes[1]) {\n return 'md'\n }\n return 'sm'\n}\n","import { DependencyList, EffectCallback, useEffect, useRef } from 'react'\n\nexport const useDidUpdateEffect = (effect: EffectCallback, dependencies: DependencyList) => {\n const didMountRef = useRef(false)\n\n useEffect(() => {\n if (didMountRef.current) {\n effect()\n }\n didMountRef.current = true\n }, dependencies)\n}\n","export const luminosity = (hexcolor: string) => {\n if (!hexcolor || typeof hexcolor !== 'string') return Number.NaN\n\n let color = hexcolor.trim()\n\n if (!/^#?[0-9a-f]{3}([0-9a-f]{3})?$/i.test(color)) {\n return Number.NaN\n }\n\n if (color[0] === '#') color = color.slice(1)\n if (color.length === 3) {\n color = color.split('').map((h) => h + h).join('')\n }\n\n const r = parseInt(color.substring(0, 2), 16)\n const g = parseInt(color.substring(2, 4), 16)\n const b = parseInt(color.substring(4, 6), 16)\n\n const brightness = (r * 299 + g * 587 + b * 114) / 1000\n return brightness\n}\n","import { useToken } from '@chakra-ui/system'\nimport { luminosity } from '../luminosity'\n\nfunction safeUseToken (tokenOrValue: string): string {\n try {\n return useToken('colors', tokenOrValue)\n } catch {\n return tokenOrValue\n }\n}\n\nexport const getContrastColor = (color: string) => {\n const textDefault = useToken('colors', 'text.default') // dark\n const textInverted = useToken('colors', 'text.inverted') // light\n\n const normalized = typeof color === 'string' ? color.trim() : (color as unknown as string)\n\n // If a concrete hex is passed, use it directly; else try token resolution.\n const isHex = /^#?[0-9a-f]{3}([0-9a-f]{3})?$/i.test(normalized)\n const bgResolved = isHex\n ? (normalized[0] === '#' ? normalized : `#${normalized}`)\n : safeUseToken(normalized)\n\n const lInverted = luminosity(textInverted)\n const lDefault = luminosity(textDefault)\n const threshold = (lInverted + lDefault) / 2\n const brightColor = lInverted > lDefault ? textInverted : textDefault\n const darkColor = lInverted > lDefault ? textDefault : textInverted\n\n const lBg = luminosity(bgResolved)\n if (Number.isNaN(lBg)) return undefined\n\n return lBg >= threshold ? darkColor : brightColor\n}\n","import { CSSObject } from '@emotion/react'\n\nexport const ring:CSSObject = {\n _focusVisible: {\n outline: 'none',\n ring: '2px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n },\n}\n","import { CSSObject } from '@emotion/react'\n\nexport const highlight:CSSObject = {\n px: '1',\n py: '0.5',\n rounded: '6',\n bg: 'teal.100',\n fontWeight: 'bold',\n}\n","import { palette } from '@northlight/tokens'\nimport { Color, ColorGrade } from '../../types'\n\nexport const getShades = (startShade: number, endShade?: number) => {\n let start: number\n let end: number\n if (!endShade) {\n start = startShade\n end = startShade\n } else if (endShade > startShade) {\n start = startShade\n end = endShade\n } else {\n start = endShade\n end = startShade\n }\n\n return (\n Object.keys(palette).reduce((colors, color) => {\n if (color === 'mono') return colors\n return colors.concat(\n Object.keys(palette[color as Color])\n .filter((value) =>\n parseInt(value, 10) >= start\n && parseInt(value, 10) <= end\n )\n .map((shade) => palette[color as Color][shade as unknown as ColorGrade])\n )\n }, [] as string[])\n )\n}\n","export const getInitials = (name: string) => {\n const [ firstName, lastName ] = name.toUpperCase().split(' ')\n return firstName && lastName\n ? `${firstName[0]}${lastName[0]}`\n : firstName[0]\n}\n","import { path, replace, split } from 'ramda'\nimport { FieldErrorsImpl, FieldValues } from 'react-hook-form'\nimport { FieldErrorType } from '../../components/form/types'\n\nexport function getFieldError<T extends FieldValues> (name: string, errors: FieldErrorsImpl<T>) {\n const nameWithoutRightBracket = replace(/]/g, '', name)\n const leftBracketAndDot = /[.[\\]]/g\n const fieldErrorPath = split(leftBracketAndDot, nameWithoutRightBracket)\n\n const fieldError: FieldErrorType<T> = path(fieldErrorPath, errors)\n return fieldError\n}\n","import React, { cloneElement, isValidElement } from 'react'\nimport { CSSObject } from '@emotion/react'\n\nexport const passPropsToChild = (child: React.ReactNode, styles: CSSObject) => (\n isValidElement(child)\n ? cloneElement(child, {\n ...styles,\n })\n : child\n)\n","import React, { Children } from 'react'\nimport { T } from 'ramda'\nimport { passPropsToChild } from './pass-props-to-child'\n\nexport const getChildrenWithProps = (\n children: React.ReactNode | React.ReactNode[],\n styles: Record<string, any>,\n predicate: (child: React.ReactNode, index: number) => boolean = T\n) => {\n const childrenAsArr = Children.toArray(children)\n const childrenWithoutFocus = childrenAsArr.map((child, i) => (\n predicate(child, i)\n ? passPropsToChild(child, { ...styles })\n : child\n ))\n return childrenWithoutFocus\n}\n","import { useToken } from '@chakra-ui/system'\n\nexport const addAlpha = (color: string, alpha: number = 1) => {\n const colorInHex = useToken('colors', color)\n\n const limitAlpha = Math.min(Math.max(alpha, 0), 1)\n const opacity = Math.round(limitAlpha * 255)\n\n return `${colorInHex}${opacity.toString(16).toUpperCase()}`\n}\n","/** A debounce function to be used together with Async select in SearchBar.\n * The reason to why the usual debounce hook does not work is because we\n * don't control the loadOptions call ourselves.\n *\n * Important to note is that the timeout here needs to NOT be reinstantiated\n * every render, otherwise it defeats the purpose as a new timeout will be\n * created every time the component re-renders.\n*/\nexport const createDebounceFunctionInstance = (delay: number) => {\n let timeout: any\n\n return (fn: any) => (...args: any) => {\n clearTimeout(timeout)\n timeout = setTimeout(() => {\n fn(...args)\n }, delay)\n }\n}\n","import { createContext, useContext } from 'react'\n\nexport type CurrentTheme = 'webappTheme' | 'tottTheme' | 'camphouseLightTheme'\n\nexport const CustomTheme = createContext<CurrentTheme>('webappTheme')\n\nexport const useCurrentTheme = () => {\n const theme = useContext(CustomTheme)\n return theme\n}\n","export const clamp = (minValue: number, maxValue: number, value: number) =>\n Math.min(Math.max(value, minValue), maxValue)\n","/* eslint-disable no-bitwise */\nimport { keys, omit } from 'ramda'\nimport { palette } from '@northlight/tokens'\n\nconst availableColorSchemes = keys(omit([ 'mono' ], palette))\n\nconst djb2Hash = (str: string, colors: string[]) => {\n let hash = 5381\n\n for (let i = 0; i < str.length; i += 1) {\n const char = str.charCodeAt(i)\n hash = (hash << 5) + hash + char\n\n hash &= hash\n }\n\n return (Math.abs(hash) % colors.length)\n}\n\nexport const getConsistentRandomColorFromString = (\n str: string,\n colors: string[] = availableColorSchemes\n) => {\n const index = djb2Hash(str, colors)\n return colors[index]\n}\n","import { MouseEvent, useState } from 'react'\nimport { clamp } from '../../utils'\n\ninterface UseResizeWidthProps {\n stationaryEdge?: 'left' | 'right'\n minWidthPx?: number\n maxWidthPx?: number\n defaultWidthPx: number\n}\n\nexport const useResizeWidth = ({\n stationaryEdge = 'left',\n minWidthPx = 0,\n maxWidthPx = Number.MAX_SAFE_INTEGER,\n defaultWidthPx,\n}: UseResizeWidthProps) => {\n const [ adjustableWidth, setAdjustableWidth ] = useState(defaultWidthPx)\n\n const resizeProps = {\n onMouseDown: (e: MouseEvent<unknown>) => {\n e.preventDefault()\n const startX = e.clientX\n const onMouseMove = (event: { clientX: number }) => {\n const newWidth =\n stationaryEdge === 'left'\n ? adjustableWidth + (event.clientX - startX)\n : adjustableWidth - (event.clientX - startX)\n setAdjustableWidth(clamp(minWidthPx, maxWidthPx, newWidth))\n }\n const onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove)\n document.removeEventListener('mouseup', onMouseUp)\n }\n document.addEventListener('mousemove', onMouseMove)\n document.addEventListener('mouseup', onMouseUp)\n },\n }\n\n return {\n adjustableWidth,\n setAdjustableWidth,\n resizeProps,\n }\n}\n","import { ChakraStylesConfig } from 'chakra-react-select'\nimport { getContrastColor } from '../../../utils'\n\nexport const customSelectStyles: ChakraStylesConfig<any> = {\n container: (provided) => ({\n ...provided,\n width: '100%',\n color: 'text.default',\n }),\n option: (provided, state) => ({\n ...provided,\n background: state.isFocused && 'background.select.option-focus',\n overflowWrap: 'anywhere',\n _active: {\n background: 'background.select.option-active',\n },\n }),\n valueContainer: (provided) => ({\n ...provided,\n paddingInlineStart: 'padding-inline.select.default',\n }),\n downChevron: (provided) => ({\n ...provided,\n color: 'icon.select.default',\n }),\n placeholder: (provided) => ({\n ...provided,\n color: 'text.select.placeholder',\n }),\n multiValue: (provided, state) => {\n const background = state.data.isFixed\n ? 'background.select.option-disabled'\n : state.data.color ?? provided.bgColor\n return ({\n ...provided,\n bgColor: background,\n color: getContrastColor(background),\n })\n },\n menuList: (provided) => ({\n ...provided,\n bgColor: 'background.default',\n }),\n}\n","import { ChakraStylesConfig } from 'chakra-react-select'\nimport { customSelectStyles } from '../../theme/components/select/custom-select'\n\nexport const tagsInputStyles = (\n isFocused: boolean,\n borderColor: string\n): ChakraStylesConfig<any> => ({\n ...customSelectStyles,\n container: (provided) => ({\n ...provided,\n w: 'full',\n height: '100%',\n resize: 'vertical',\n overflow: 'auto',\n minHeight: '20',\n borderColor: 'select.default',\n borderRadius: 'select.default',\n transitionDuration: 'normal',\n transitionProperty: 'box-shadow',\n color: 'text.default',\n boxShadow: isFocused ? `0 0 0 1px ${borderColor}` : 'none',\n }),\n control: (provided) => ({\n ...provided,\n minHeight: '20',\n height: '100%',\n alignItems: 'start',\n }),\n valueContainer: (provided) => ({\n ...provided,\n paddingInlineStart: 'padding-inline.select.default',\n overflowY: 'auto',\n maxH: '100%',\n }),\n})\n","export const scrollbarStyles = {\n '::-webkit-scrollbar': {\n width: '8px',\n height: '8px',\n },\n '::-webkit-scrollbar-track': {\n background: 'background.scrollbar.track',\n },\n '::-webkit-scrollbar-thumb': {\n borderRadius: 'scrollbar.thumb',\n border: '2px solid',\n borderColor: 'border.scrollbar.thumb',\n backgroundClip: 'padding-box !important',\n background: 'background.scrollbar.thumb',\n },\n '::-webkit-scrollbar-thumb:hover': {\n borderRadius: 'scrollbar.thumb',\n border: '1px solid ',\n borderColor: 'border.scrollbar.thumb',\n backgroundClip: 'padding-box !important',\n background: 'background.scrollbar.thumb',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Breadcrumb: ComponentMultiStyleConfig = {\n parts: [ 'link', 'separator' ],\n baseStyle: {\n link: {\n padding: [ 0.5, 1 ],\n color: 'text.default',\n fontWeight: 'semibold',\n fontSize: 'md',\n _hover: {\n bg: 'brand-alt',\n borderRadius: 'base',\n textDecor: 'none',\n },\n },\n separator: {\n color: 'subdued',\n fontSize: 'sm',\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Button: ComponentSingleStyleConfig = {\n sizes: {\n xs: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.xs,\n minWidth: sizing.button.xs,\n paddingInlineStart: spacing['padding-inline'].button.xs,\n paddingInlineEnd: spacing['padding-inline'].button.xs,\n }),\n sm: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n paddingInlineStart: spacing['padding-inline'].button.md,\n paddingInlineEnd: spacing['padding-inline'].button.md,\n }),\n md: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.md,\n minWidth: sizing.button.md,\n paddingInlineStart: spacing['padding-inline'].button.md,\n paddingInlineEnd: spacing['padding-inline'].button.md,\n }),\n lg: ({ theme: { sizes: sizing, space: spacing } }) => ({\n height: sizing.button.lg,\n minWidth: sizing.button.lg,\n paddingInlineStart: spacing['padding-inline'].button.lg,\n paddingInlineEnd: spacing['padding-inline'].button.lg,\n }),\n },\n baseStyle: ({ theme: { colors: color, radii: borderRadius } }) => ({\n color: color.text.default,\n borderRadius: borderRadius.button.default,\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n }),\n variants: {\n default: ({ theme: { colors: color } }) => ({\n bgColor: color.background.button.default,\n color: color.text.button.default,\n _hover: {\n bgColor: color.background.button['default-hover'],\n },\n _active: {\n bgColor: color.background.button['default-active'],\n },\n }),\n danger: ({ theme: { colors: color } }) => ({\n bgColor: color.background.button.danger,\n color: color.text.button.danger,\n _hover: {\n bg: color.background.button['danger-hover'],\n _disabled: {\n bgColor: color.background.button.danger,\n },\n },\n _active: {\n bgColor: color.background.button['danger-active'],\n },\n }),\n success: ({ theme: { colors: color } }) => ({\n bgColor: color.background.button.success,\n color: color.text.button.success,\n _hover: {\n bg: color.background.button['success-hover'],\n _disabled: {\n bgColor: color.background.button.success,\n },\n },\n _active: {\n bgColor: color.background.button['success-active'],\n },\n }),\n brand: ({ theme: { colors: color } }) => ({\n color: color.text.inverted,\n bgColor: color.background.button.brand,\n _hover: {\n bg: color.background.button['brand-hover'],\n _disabled: {\n bgColor: color.background.button.brand,\n },\n },\n _active: {\n bgColor: color.background.button['brand-active'],\n },\n }),\n brandSubdued: ({ theme: { colors: color } }) => ({\n color: color.text.button.brandSubdued,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button.brand,\n color: color.text.inverted,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.text.button.brandSubdued,\n },\n },\n _active: {\n bg: color.background.button['brand-hover'],\n color: color.text.inverted,\n },\n }),\n link: ({ theme: { colors: color } }) => ({\n textDecoration: 'underline',\n color: color.text.button.link,\n bgColor: color.background.button.link,\n _hover: {\n color: color.text.button['link-hover'],\n bgColor: color.background.button['link-hover'],\n },\n _active: {\n color: color.text.button['link-hover'],\n bgColor: color.background.button['link-active'],\n },\n }),\n outline: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n _hover: {\n bg: color.background.button['ghost-hover'],\n },\n _active: {\n bg: color.background.button['ghost-active'],\n },\n }),\n ghost: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button['ghost-hover'],\n _disabled: {\n bgColor: color.background.button.ghost,\n },\n },\n _active: {\n bgColor: color.background.button['ghost-active'],\n },\n }),\n ai: ({ theme: { colors: color } }) => ({\n color: color.text.inverted,\n bgColor: color.bg.ai.default,\n _hover: {\n bgColor: color.bg.ai.hover,\n _disabled: {\n bgColor: color.bg.ai.default,\n },\n },\n _active: {\n bgColor: color.bg.ai.active,\n },\n }),\n aiSubdued: ({ theme: { colors: color } }) => ({\n color: color.ai,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.bg.ai.default,\n color: color.text.inverted,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.ai,\n },\n },\n _active: {\n bg: color.bg.ai.hover,\n color: color.text.inverted,\n },\n }),\n accent: ({ theme: { colors: color } }) => ({\n color: color.text.button.accent,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button['ghost-active'],\n color: color.text.button.accent,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.text.button.accent,\n },\n },\n _active: {\n bg: color.background.button['ghost-active'],\n color: color.text.button.accent,\n },\n }),\n sidebar: ({ theme: { colors: color } }) => ({\n color: color.text.button.sidebar,\n bgColor: color.background.button.sidebar,\n _hover: {\n bg: color.background.button['sidebar-hover'],\n color: color.text.button.sidebar,\n _disabled: {\n bgColor: color.background.button.ghost,\n color: color.text.button.sidebar,\n },\n },\n _active: {\n bg: color.background.button['sidebar-active'],\n color: color.text.button['sidebar-active'],\n },\n }),\n },\n defaultProps: {\n size: 'md',\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { keyframes } from '@emotion/react'\n\nconst pulseRing = keyframes`\n0% {\n transform: scale(0.33);\n}\n30% {\n transform: scale(0.66);\n},\n40%,\n50% {\n opacity: 0;\n}\n100% {\n opacity: 0;\n}\n`\n\nexport const Blinker: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: palette }, color, isBlinking }) => ({\n position: 'relative',\n borderRadius: '50%',\n bgColor: color === '' ? palette.blue['500'] : color,\n _before: isBlinking\n ? {\n content: \"''\",\n position: 'absolute',\n display: 'block',\n width: '300%',\n height: '300%',\n marginLeft: '-100%',\n marginTop: '-100%',\n borderRadius: '50%',\n bgColor: color === '' ? 'blue.500' : color,\n animation: `2.25s ${pulseRing} cubic-bezier(0.455, 0.03, 0.515, 0.955) -0.4s infinite`,\n zIndex: 'base',\n }\n : {},\n }),\n sizes: {\n '2xs': ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker['2xs'],\n width: sizing.blinker['2xs'],\n }),\n xs: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.xs,\n width: sizing.blinker.xs,\n }),\n sm: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.sm,\n width: sizing.blinker.sm,\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.md,\n width: sizing.blinker.md,\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n height: sizing.blinker.lg,\n width: sizing.blinker.lg,\n }),\n },\n defaultProps: {\n size: 'md',\n color: 'blue.500',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Checkbox: ComponentMultiStyleConfig = {\n parts: [ 'control', 'label' ],\n sizes: {\n sm: {\n control: {\n fontSize: 5,\n },\n },\n md: {\n control: {\n fontSize: 7,\n },\n },\n lg: {\n control: {\n fontSize: 8,\n },\n },\n },\n baseStyle: ({ theme: { colors: color, opacity } }) => ({\n control: {\n borderColor: color.border.checkbox.default,\n bg: color.background.checkbox.default,\n borderWidth: 2,\n _checked: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n _hover: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n },\n },\n _invalid: {\n borderColor: color.border.checkbox.error,\n bg: color.background.checkbox.default,\n _checked: {\n bg: color.background.checkbox.error,\n },\n _hover: {\n borderColor: color.border.checkbox.error,\n bg: color.background.checkbox.default,\n },\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n _hover: {\n borderColor: color.border.checkbox['default-hover'],\n bg: color.background.checkbox.default,\n },\n _disabled: {\n borderColor: color.border.checkbox.disabled,\n bg: color.background.checkbox.disabled,\n opacity: opacity.checkbox.disabled,\n _checked: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n opacity: opacity.checkbox.disabled,\n color: 'white',\n _hover: {\n borderColor: color.border.checkbox.checked,\n bg: color.background.checkbox.checked,\n opacity: opacity.checkbox.disabled,\n },\n },\n _hover: {\n borderColor: color.border.checkbox.disabled,\n bg: color.background.checkbox.disabled,\n opacity: opacity.checkbox.disabled,\n },\n },\n },\n }),\n variants: {\n default: ({ theme: { radii: borderRadius } }) => ({\n control: {\n borderRadius: borderRadius.checkbox.default,\n },\n }),\n rounded: ({ theme: { radii: borderRadius } }) => ({\n control: {\n borderRadius: borderRadius.checkbox.full,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Input: ComponentMultiStyleConfig = {\n parts: [ 'field', 'addon' ],\n baseStyle: ({ theme: { colors: color } }) => ({\n field: {\n color: color.text.default,\n _placeholder: {\n color: color.text.input.placeholder,\n opacity: 1,\n },\n },\n }),\n variants: {\n outline: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n bgColor: color.background.input['outline-default'],\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n _focusVisible: {\n bgColor: color.background.input['outline-focus'],\n borderColor: color.border.input.focus,\n boxShadow: `inset 0 0 0 1px ${color.border.input.focus}`,\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n },\n _hover: {\n bgColor: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _invalid: {\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n },\n _disabled: {\n bgColor: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n addon: {\n border: 'none',\n background: 'none',\n color: color.text.default,\n },\n }),\n filled: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n borderRadius: borderRadius.input.filled,\n borderWidth: borderWidth.input.default,\n bgColor: color.background.input['filled-default'],\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n bgColor: color.background.input['filled-default'],\n },\n },\n _hover: {\n bgColor: color.background.input['filled-hover'],\n },\n _focusVisible: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.focus}`,\n borderColor: color.border.input.focus,\n bgColor: color.background.input['filled-focus'],\n _readOnly: {\n bgColor: color.background.input['filled-default'],\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['filled-error'],\n borderColor: color.border.input.error,\n },\n _disabled: {\n bgColor: color.background.input['filled-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n }),\n flushed: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.flushed,\n paddingInlineEnd: spacing['padding-inline'].input.flushed,\n bgColor: color.background.input['flushed-default'],\n borderRadius: borderRadius.input.flushed,\n borderBottomWidth: borderWidth.input.default,\n borderBottomColor: color.border.input.default,\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n _hover: {\n bgColor: color.background.input['flushed-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _focusVisible: {\n _hover: {\n boxShadow: `0 1px 0 0 ${color.border.input.focus}`,\n borderColor: color.border.input.focus,\n },\n _invalid: {\n boxShadow: `0 1px 0 0 ${color.border.input.error}`,\n borderColor: color.border.input.error,\n bgColor: color.background.input['flushed-error'],\n },\n },\n _invalid: {\n _hover: {\n boxShadow: `0 1px 0 0 ${color.border.input.error}`,\n borderColor: color.border.input.error,\n },\n bgColor: color.background.input['flushed-error'],\n },\n _disabled: {\n bgColor: color.background.input['flushed-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n }),\n ai: ({ theme: {\n colors: color,\n space: spacing,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n bgColor: color.background.input['outline-default'],\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n _focusVisible: {\n bgColor: color.background.input['outline-focus'],\n _hover: {\n boxShadow: `inset 0 0 0 1px ${color.border.ai}`,\n borderColor: color.border.ai,\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n },\n _hover: {\n bgColor: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _invalid: {\n bgColor: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n },\n _disabled: {\n bgColor: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n addon: {\n border: 'none',\n background: 'none',\n color: color.text.default,\n },\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const PinInput: ComponentSingleStyleConfig = {\n variants: {\n outline: ({ theme: {\n radii: borderRadius,\n borders: borderWidth,\n colors: color,\n space: spacing,\n opacity,\n } }) => ({\n borderColor: color.border.input.default,\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n bg: color.background.input['outline-default'],\n color: color.text.default,\n paddingInline: spacing['padding-inline'].input.default,\n _hover: {\n bg: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _focus: {\n borderColor: color.border.input.focus,\n bg: color.background.input['outline-focus'],\n boxShadow: 'none',\n borderWidth: borderWidth.sm,\n },\n _invalid: {\n bg: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n _placeholder: {\n color: 'transparent',\n },\n },\n _disabled: {\n bg: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n _hover: {\n bg: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n },\n },\n _placeholder: {\n color: color.text.input.placeholder,\n },\n _readonly: {\n borderColor: color.border.input.readonly,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Select: ComponentMultiStyleConfig = {\n parts: [ 'field', 'icon' ],\n baseStyle: ({ theme: {\n radii: borderRadius,\n borders: borderWidth,\n colors: color,\n space: spacing,\n } }) => ({\n field: {\n paddingInlineStart: spacing['padding-inline'].select.default,\n paddingInlineEnd: spacing['padding-inline'].select.default,\n borderWidth: borderWidth.select,\n color: color.text.default,\n borderColor: color.border.select.default,\n borderRadius: borderRadius.select.default,\n _hover: {\n borderColor: color.border.select['default-hover'],\n },\n _focusVisible: {\n borderColor: color.border.select.focus,\n boxShadow: `0 0 0 1px ${color.border.select.focus}`,\n },\n _invalid: {\n borderColor: color.border.select.error,\n boxShadow: 'none',\n },\n _readOnly: {\n borderWidth: borderWidth.select,\n borderColor: color.border.select.readonly,\n _focusVisible: {\n borderColor: color.border.select.readonly,\n },\n },\n _disabled: {\n borderColor: color.border.select.disabled,\n bg: color.background.select.disabled,\n _hover: {\n borderColor: color.border.select.disabled,\n },\n },\n _placeholder: {\n color: color.text.select.placeholder,\n },\n },\n icon: {\n color: color.icon.select.default,\n },\n }),\n variants: {\n outline: {},\n ai: ({ theme: { colors: color } }) => ({\n field: {\n _focusVisible: {\n borderColor: color.border.ai,\n boxShadow: `0 0 0 1px ${color.border.ai}`,\n },\n\n },\n\n }),\n\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Radio: ComponentMultiStyleConfig = {\n parts: [ 'control', 'label', 'container' ],\n sizes: {\n sm: ({ theme: { borders: borderWidth } }) => ({\n control: {\n _checked: {\n borderWidth: borderWidth.radio['checked-sm'],\n },\n },\n }),\n md: ({ theme: { borders: borderWidth } }) => ({\n control: {\n _checked: {\n borderWidth: borderWidth.radio['checked-md'],\n },\n },\n }),\n lg: ({ theme: { borders: borderWidth } }) => ({\n control: {\n _checked: {\n borderWidth: borderWidth.radio['checked-lg'],\n },\n },\n }),\n },\n baseStyle: ({ theme: { borders: borderWidth, colors: color } }) => ({\n control: {\n borderColor: color.border.radio.default,\n bg: color.background.radio.default,\n borderWidth: borderWidth.radio.default,\n _checked: {\n borderColor: color.border.radio.checked,\n bg: color.background.radio.checked,\n _hover: {\n borderColor: color.border.radio.checked,\n bg: color.background.radio.checked,\n },\n },\n _hover: {\n borderColor: color.border.radio['default-hover'],\n bg: color.background.radio.default,\n },\n _disabled: {\n borderColor: color.border.radio.disabled,\n bg: color.background.radio.disabled,\n _hover: {\n borderColor: color.border.radio.disabled,\n bg: color.background.radio.disabled,\n },\n },\n _invalid: {\n borderColor: color.border.radio.error,\n bg: color.background.radio.error,\n borderWidth: borderWidth.radio.default,\n _hover: {\n borderColor: color.border.radio.error,\n bg: color.background.radio.error,\n borderWidth: borderWidth.radio.default,\n },\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n defaultProps: {\n size: 'md',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Tabs: ComponentMultiStyleConfig = {\n parts: [ 'tab' ],\n baseStyle: ({ theme: { fontWeights: coreFontWeight } }) => ({\n tab: {\n fontWeight: coreFontWeight.semiBold,\n },\n }),\n variants: {\n 'soft-rounded': ({ theme: { colors: color } }) => ({\n tab: {\n borderRadius: 999,\n color: color.text.subdued,\n _selected: {\n bg: color.background.tabs['soft-rounded-active'],\n color: color.text.tabs['soft-rounded-active'],\n },\n _hover: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n rounded: ({ theme: { colors: color, radii: borderRadius } }) => ({\n tab: {\n color: color.text.subdued,\n borderRadius: borderRadius.button.default,\n _selected: {\n bg: color.background.tabs['soft-rounded-active'],\n color: color.text.tabs['soft-rounded-active'],\n },\n _hover: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n ai: ({ theme: { colors: color } }) => ({\n tab: {\n borderRadius: 999,\n _selected: {\n bgColor: color.bg.ai.default,\n color: color.text.inverted,\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n line: ({ theme: { colors: color } }) => ({\n tab: {\n color: color.text.subdued,\n _selected: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _hover: {\n color: color.text.tabs['soft-rounded-active'],\n },\n _active: {\n bg: color.mono.transparent,\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n piped: ({ theme: { colors: color } }) => ({\n tab: {\n position: 'relative',\n color: color.text.default,\n paddingLeft: 4,\n opacity: 0.5,\n transition: 'opacity 0.2s ease-in-out',\n _before: {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n width: '7px',\n height: '70%',\n borderRadius: 999,\n bgColor: 'brand',\n },\n _selected: {\n opacity: 1,\n _hover: {\n opacity: 1,\n },\n },\n _hover: {\n opacity: 0.7,\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Textarea: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: {\n space: spacing,\n colors: color,\n borders: borderWidth,\n radii: borderRadius,\n } }) => ({\n paddingInlineStart: spacing['padding-inline'].textarea.default,\n paddingInlineEnd: spacing['padding-inline'].textarea.default,\n borderRadius: borderRadius.textarea.default,\n borderWidth: borderWidth.textarea.default,\n borderColor: color.border.textarea.default,\n color: color.text.default,\n bgColor: color.background.textarea.default,\n _hover: {\n borderColor: color.border.textarea['default-hover'],\n bgColor: color.background.textarea.hover,\n },\n _focusVisible: {\n borderColor: color.border.textarea.focus,\n boxShadow: `0 0 0 1px ${color.border.textarea.focus}`,\n bgColor: color.background.textarea.active,\n },\n _invalid: {\n boxShadow: 'none',\n borderColor: color.border.textarea.error,\n bgColor: color.background.textarea.error,\n },\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.textarea.readonly,\n bgColor: color.background.textarea.default,\n },\n _hover: {\n borderColor: color.border.textarea.readonly,\n },\n },\n _disabled: {\n bgColor: color.background.textarea.disabled,\n _hover: {\n borderColor: color.border.textarea.default,\n },\n },\n _placeholder: {\n color: color.text.textarea.placeholder,\n },\n }),\n variants: {\n outline: {},\n ai: ({ theme: { colors: color } }) => ({\n _focusVisible: {\n _hover: {\n boxShadow: `0 0 0 1px ${color.border.ai}`,\n borderColor: color.border.ai,\n },\n },\n }),\n\n },\n}\n","import {\n ComponentSingleStyleConfig,\n} from '@chakra-ui/react'\n\nexport const Link: ComponentSingleStyleConfig = {\n baseStyle: ({ colorScheme }) => ({\n _focus: {\n ring: '2px',\n ringColor: `${colorScheme}.100`,\n ringOffset: '1px',\n },\n }),\n defaultProps: {\n colorScheme: 'mediatoolBlue',\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Switch: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color, opacity } }) => ({\n _disabled: {\n opacity: opacity.switch.disabled,\n },\n track: {\n bgColor: color.background.switch.default,\n _checked: {\n bgColor: color.background.switch['default-checked'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n },\n thumb: {\n bgColor: color.background.switch.thumb,\n },\n }),\n}\n","import { path } from 'ramda'\nimport type { CurrentTheme } from '../utils'\n\nconst themeMap: Record<CurrentTheme, Record<string, string>> = {\n camphouseLightTheme: {\n green: 'moss',\n pink: 'rose',\n orange: 'coral',\n gray: 'smoke',\n },\n webappTheme: {},\n tottTheme: {},\n}\n\nexport interface ProcessColorSchemeBasedOnThemeProps {\n currentTheme: CurrentTheme\n colorScheme: string\n}\n\nexport const processColorSchemeBasedOnTheme = ({\n currentTheme,\n colorScheme,\n}: ProcessColorSchemeBasedOnThemeProps) =>\n path<string>([ currentTheme, colorScheme ], themeMap) ?? colorScheme\n","import { ComponentMultiStyleConfig, useToken } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\nimport { processColorSchemeBasedOnTheme } from '../../process-color-scheme-based-on-theme'\n\nexport const Tag: ComponentMultiStyleConfig = {\n parts: [ 'container' ],\n baseStyle: {\n container: {\n fontWeight: 'semibold',\n },\n },\n sizes: {\n sm: {\n container: {\n borderRadius: 'tag.default',\n },\n },\n md: {\n container: {\n borderRadius: 'tag.default',\n },\n },\n lg: {\n container: {\n borderRadius: 'tag.default',\n },\n },\n },\n variants: {\n solid: ({ theme: { colors }, bgColor, colorScheme, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const tagBgColorRaw =\n bgColor ??\n (colors[processedColorScheme] && colors[processedColorScheme][500]\n ? colors[processedColorScheme][500]\n : processedColorScheme)\n\n const tagBgColor = typeof tagBgColorRaw === 'string' ? tagBgColorRaw.trim() : tagBgColorRaw\n\n const tagColor = getContrastColor(useToken('colors', tagBgColor))\n\n return {\n container: {\n bgColor: tagBgColor,\n color: tagColor,\n },\n }\n },\n subtle: ({ theme: { colors }, colorScheme, bgColor, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const tagBgColorRaw =\n bgColor ??\n (colors[processedColorScheme] && colors[processedColorScheme][100]\n ? colors[processedColorScheme][100]\n : processedColorScheme)\n\n const tagBgColor = typeof tagBgColorRaw === 'string' ? tagBgColorRaw.trim() : tagBgColorRaw\n\n const tagColor = getContrastColor(useToken('colors', tagBgColor))\n\n return {\n container: {\n bgColor: tagBgColor,\n color: tagColor,\n },\n }\n },\n ai: {\n container: {\n bgColor: 'bg.ai.default',\n color: 'text.inverted',\n },\n },\n },\n defaultProps: {\n size: 'md',\n colorScheme: 'background.tag.default',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Alert: ComponentMultiStyleConfig = {\n parts: [ 'container', 'title', 'description', 'icon' ],\n baseStyle: ({ theme: {\n radii: borderRadius,\n colors: color,\n space: coreSpacing,\n } }) => ({\n container: {\n borderRadius: borderRadius.toast.default,\n color: color.text.default,\n paddingEnd: coreSpacing[8],\n width: 'auto',\n display: 'flex',\n },\n title: {\n lineHeight: '1.25',\n overflowWrap: 'break-word',\n },\n description: {\n lineHeight: '1.25',\n overflowWrap: 'break-word',\n },\n icon: {\n boxSize: 6,\n },\n }),\n variants: {\n success: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.success,\n },\n icon: {\n color: color.icon.toast.success,\n },\n }),\n warning: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.warning,\n },\n icon: {\n color: color.icon.toast.warning,\n },\n }),\n info: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.info,\n },\n icon: {\n color: color.icon.toast.info,\n },\n }),\n error: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.background.toast.error,\n color: color.text.toast.error,\n },\n icon: {\n color: color.icon.toast.error,\n },\n }),\n ai: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.bg.ai.default,\n color: color.text.inverted,\n },\n icon: {\n color: color.icon.toast.ai,\n },\n }),\n default: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.bg.layer,\n color: color.text.default,\n },\n icon: {\n color: color.icon.toast.default,\n },\n }),\n ghost: ({ theme: { colors: color } }) => ({\n container: {\n bgColor: color.bg.base,\n color: color.text.default,\n borderWidth: 'xs',\n borderColor: color.border.default,\n borderStyle: 'solid',\n },\n icon: {\n color: color.icon.toast.ghost,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const NumberInput: ComponentMultiStyleConfig = {\n parts: [ 'root', 'field', 'stepper', 'stepperGroup' ],\n sizes: {\n sm: ({ theme: { radii: borderRadius, sizes: sizing } }) => ({\n field: {\n borderRadius: borderRadius.input.outline,\n },\n stepperGroup: {\n height: sizing['8'],\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n stepperGroup: {\n height: sizing['10'],\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n stepperGroup: {\n height: sizing['12'],\n },\n }),\n },\n baseStyle: ({ theme: {\n sizes: sizing,\n space: spacing,\n colors: color,\n radii: borderRadius,\n borders: borderWidth,\n opacity,\n }, isReadOnly, minWidth, minW }) => ({\n root: {\n borderRadius: borderRadius.input.outline,\n },\n field: {\n minWidth: minWidth ?? minW ?? sizing['44'],\n paddingInlineStart: spacing['padding-inline'].input.default,\n paddingInlineEnd: spacing['padding-inline'].input.default,\n WebkitPaddingStart: spacing['padding-inline'].input.default,\n WebkitPaddingEnd: spacing['padding-inline'].input.default,\n color: color.text.default,\n bg: color.background.input['outline-default'],\n\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n paddingRight: spacing.paddingRight['number-input'].field,\n _hover: {\n bg: color.background.input['outline-hover'],\n borderColor: color.border.input['default-hover'],\n },\n _focusVisible: {\n bg: color.background.input['outline-focus'],\n borderColor: color.border.input.focus,\n boxShadow: `inset 0 0 0 1px ${color.border.textarea.focus}`,\n },\n _invalid: {\n bg: color.background.input['outline-error'],\n borderColor: color.border.input.error,\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n },\n _disabled: {\n bg: color.background.input['outline-disabled'],\n opacity: opacity.input.disabled,\n borderColor: color.border.input.disabled,\n },\n _readOnly: {\n _focusVisible: {\n borderColor: color.border.input.readonly,\n boxShadow: 'none',\n },\n _hover: {\n borderColor: color.border.input.readonly,\n },\n },\n },\n stepperGroup: {\n width: 'auto',\n paddingRight: spacing.paddingRight['number-input'].stepper,\n },\n stepper: {\n _first: {\n border: 'none',\n borderTopRightRadius: borderRadius['input-stepper'].default,\n borderRadius: borderRadius['input-stepper'].default,\n bg: color.background['input-stepper'].default,\n opacity: isReadOnly ? opacity.input.disabled : 'auto',\n _hover: {\n bg: isReadOnly ? 'none' : color.background['input-stepper'].hover,\n },\n _active: {\n bg: color.background['input-stepper'].active,\n },\n _disabled: {\n bg: color.background['input-stepper'].disabled,\n color: color.icon['input-stepper'].disabled,\n },\n },\n _last: {\n border: 'none',\n bg: color.background['input-stepper'].default,\n borderBottomRightRadius: borderRadius['input-stepper'].default,\n borderRadius: borderRadius['input-stepper'].default,\n opacity: isReadOnly ? opacity.input.disabled : 'auto',\n _hover: {\n bg: isReadOnly ? 'none' : color.background['input-stepper'].hover,\n },\n _active: {\n bg: color.background['input-stepper'].active,\n },\n _disabled: {\n bg: color.background['input-stepper'].disabled,\n color: color.icon['input-stepper'].disabled,\n },\n },\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const NotificationIconButton: ComponentMultiStyleConfig = {\n parts: [ 'container', 'notifier' ],\n sizes: {\n xs: {\n notifier: {\n top: '0.5',\n right: '0.5',\n },\n },\n sm: {\n notifier: {\n top: '0.5',\n right: '0.5',\n },\n },\n md: {\n notifier: {\n top: '1',\n right: '1',\n },\n },\n lg: {\n notifier: {\n top: '2',\n right: '2',\n },\n },\n },\n variants: {\n link: {\n notifier: {\n position: 'absolute',\n top: '0',\n right: '0',\n zIndex: 'base',\n },\n },\n },\n baseStyle: () => ({\n container: {\n position: 'relative',\n },\n notifier: {\n position: 'absolute',\n top: '1',\n right: '1',\n zIndex: 'base',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { ring } from '../../../utils'\n\nexport const Calendar: ComponentMultiStyleConfig = {\n parts: [ 'container', 'dateSelect', 'dayLabel', 'rangeCalendarContainer' ],\n baseStyle: ({ theme: {\n space: spacing,\n sizes: sizing,\n colors: color,\n } }) => ({\n container: {\n p: spacing[2],\n w: sizing[64],\n bgColor: 'background.default',\n border: '1px solid',\n borderColor: 'border.input.default',\n borderRadius: 'input.outline',\n },\n rangeCalendarContainer: {\n p: '3',\n w: '128',\n bgColor: 'background.default',\n borderRadius: 'input.outline',\n },\n dateSelect: {\n fontWeight: 'semibold',\n border: 'none',\n padding: '1',\n borderRadius: 'md',\n color: color.text.default,\n bgColor: color.background.button.ghost,\n _hover: {\n cursor: 'pointer',\n bgColor: color.background.button['ghost-hover'],\n },\n _active: {\n bgColor: color.background.button['ghost-active'],\n },\n ...ring,\n },\n dayLabel: {\n color: color.gray[600],\n fontSize: 'xs',\n p: spacing[2],\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const DragAndDrop: ComponentMultiStyleConfig = {\n parts: [ 'dropZone' ],\n baseStyle: ({ sx }) => ({\n dropZone: merge({\n borderWidth: 'sm',\n borderStyle: 'dashed',\n borderColor: 'border.default',\n padding: '4',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '4',\n justifyContent: 'center',\n textAlign: 'center',\n minH: '56',\n minW: '56',\n bgColor: 'bg.filled',\n }, sx),\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const DatePicker: ComponentMultiStyleConfig = {\n parts: [ 'group', 'styledField', 'dateField', 'dateSegment' ],\n baseStyle: ({ theme: { colors: color, opacity } }) => ({\n group: {\n position: 'relative',\n alignItems: 'center',\n flex: 1,\n },\n styledField: {\n bgColor: 'background.default',\n _focusWithin: {\n bgColor: color.background.input['outline-focus'],\n borderColor: color.border.textarea.focus,\n boxShadow: `inset 0 0 0 1px ${color.border.textarea.focus}`,\n },\n _invalid: {\n boxShadow: `inset 0 0 0 1px ${color.border.input.error}`,\n borderColor: color.border.input.error,\n },\n _disabled: {\n bgColor: color.background.input['outline-disabled'],\n borderColor: color.border.input.disabled,\n opacity: opacity.input.disabled,\n },\n },\n dateField: {\n width: '100%',\n height: '100%',\n alignItems: 'center',\n },\n dateSegment: {\n caretColor: 'transparent',\n boxSizing: 'content-box',\n textAlign: 'center',\n outline: 'none',\n rounded: 'md',\n _focus: {\n bgColor: 'bg.brand.default',\n color: color.text.inverted,\n },\n _placeholder: {\n color: 'destructive',\n },\n },\n }),\n variants: {\n outline: ({\n theme: { colors: color, radii: borderRadius, borders: borderWidth },\n }) => ({\n styledField: {\n bgColor: color.background.input['outline-default'],\n borderRadius: borderRadius.input.outline,\n borderWidth: borderWidth.input.default,\n borderColor: color.border.input.default,\n },\n }),\n filled: ({\n theme: { colors: color, radii: borderRadius, borders: borderWidth },\n }) => ({\n styledField: {\n bgColor: color.background.input['filled-default'],\n borderRadius: borderRadius.input.filled,\n borderWidth: borderWidth.input.default,\n borderColor: color.background.input['filled-default'],\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const FlipButton: ComponentMultiStyleConfig = {\n parts: [ 'container', 'button', 'buttonIcon' ],\n sizes: {\n xs: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].xs,\n minWidth: sizing['flip-button'].xs,\n paddingInlineStart: spacing['padding-inline']['flip-button'].xs,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].xs,\n fontSize: 'xs',\n },\n buttonIcon: {\n boxSize: sizing.icon.xs,\n },\n }),\n sm: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].sm,\n minWidth: sizing['flip-button'].sm,\n paddingInlineStart: spacing['padding-inline']['flip-button'].md,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].md,\n fontSize: 'sm',\n buttonIcon: {\n boxSize: sizing.icon.sm,\n },\n },\n }),\n md: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].md,\n minWidth: sizing['flip-button'].md,\n paddingInlineStart: spacing['padding-inline']['flip-button'].md,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].md,\n fontSize: 'md',\n buttonIcon: {\n boxSize: sizing.icon.md,\n },\n },\n }),\n lg: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing['flip-button'].lg,\n minWidth: sizing['flip-button'].lg,\n paddingInlineStart: spacing['padding-inline']['flip-button'].lg,\n paddingInlineEnd: spacing['padding-inline']['flip-button'].lg,\n fontSize: 'lg',\n buttonIcon: {\n boxSize: sizing.icon.lg,\n },\n },\n }),\n },\n baseStyle: ({ theme: {\n space: spacing,\n sizes: sizing,\n colors: color,\n opacity,\n radii: borderRadius,\n fontWeights: coreFontWeight,\n }, numberOfButtons }) => ({\n container: {\n borderRadius: borderRadius['flip-button'].default,\n paddingInlineStart: spacing['padding-inline']['flip-button-group'].default,\n paddingInlineEnd: spacing['padding-inline']['flip-button-group'].default,\n paddingY: spacing.paddingY['flip-button-group'].default,\n disply: 'grid',\n width: '100%',\n gap: spacing['padding-inline']['flip-button'].gap,\n gridTemplateColumns: `repeat(${numberOfButtons}, minmax(${sizing[32]}, 1fr))`,\n gridTemplateRows: '1fr',\n overflowX: 'auto',\n },\n button: {\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n color: color.text['flip-button'].default,\n cursor: 'pointer',\n borderRadius: borderRadius['flip-button'].default,\n fontWeight: coreFontWeight.semiBold,\n _disabled: {\n opacity: opacity['flip-button'].disabled,\n },\n _checked: {\n color: color.text['flip-button'].inverted,\n },\n },\n }),\n variants: {\n default: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color.background['flip-button']['default-deselected-blue'],\n }, sx),\n button: {\n bgColor: color.background['flip-button']['default-deselected-blue'],\n _hover: {\n bgColor: color.background['flip-button']['hover-deselected-blue'],\n },\n _checked: {\n bgColor: color.background['flip-button']['default-selected-blue'],\n _hover: {\n bgColor: color.background['flip-button']['default-selected-blue'],\n },\n },\n },\n }),\n brand: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color.background['flip-button']['default-deselected-brand'],\n }, sx),\n button: {\n bgColor: color.background['flip-button']['default-deselected-brand'],\n _hover: {\n bgColor: color.background['flip-button']['hover-deselected-brand'],\n },\n _checked: {\n bgColor: color.background['flip-button']['default-selected-brand'],\n _hover: {\n bgColor: color.background['flip-button']['default-selected-brand'],\n },\n },\n },\n }),\n light: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color['base-alt'],\n }, sx),\n button: {\n bgColor: 'mono.transparent',\n _hover: {\n bgColor: color.background.button['ghost-hover'],\n },\n _checked: {\n color: color.text['flip-button'].default,\n bgColor: 'bg.base',\n _hover: {\n bgColor: 'bg.base',\n },\n },\n },\n }),\n ai: ({ theme: { colors: color }, sx }) => ({\n container: merge({\n bgColor: color.background['flip-button']['default-deselected-brand'],\n }, sx),\n button: {\n bgColor: 'transparent',\n _hover: {\n bgColor: 'transparent',\n },\n _checked: {\n bgColor: color.bg.ai.default,\n _hover: {\n bgColor: color.bg.ai.default,\n },\n },\n },\n }),\n },\n defaultProps: {\n size: 'md',\n variant: 'default',\n },\n}\n","import {\n ComponentSingleStyleConfig,\n} from '@chakra-ui/react'\n\nexport const Spinner: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color, borders: borderWidth } }) => ({\n borderWidth: borderWidth.spinner.default,\n color: color.background.spinner.thumb,\n borderBottomColor: color.background.spinner.track,\n borderLeftColor: color.background.spinner.track,\n }),\n}\n","import { randomColor } from '@chakra-ui/theme-tools'\nimport { getShades } from '../../../utils'\n\nconst possibleBgColors = getShades(400, 600)\n\nexport const getAvatarBgColor = (image: string, name: string, color: any) => {\n if (image) return color.background.avatar.image\n if (name) return randomColor({ string: name, colors: possibleBgColors })\n\n return color.background.avatar.default\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\nimport { getAvatarBgColor } from './get-avatar-bg-color'\n\nexport const Avatar: ComponentMultiStyleConfig = {\n parts: [ 'container', 'text', 'badge', 'icon' ],\n sizes: {\n '2xs': ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar['2xs'],\n height: sizing.avatar['2xs'],\n },\n text: {\n lineHeight: sizing.avatar['2xs'],\n fontSize: '3xs',\n },\n }),\n xs: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.xs,\n height: sizing.avatar.xs,\n },\n text: {\n lineHeight: sizing.avatar.xs,\n fontSize: 'xs',\n },\n }),\n sm: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.sm,\n height: sizing.avatar.sm,\n },\n text: {\n lineHeight: sizing.avatar.sm,\n fontSize: 'sm',\n },\n icon: {\n boxSize: sizing.avatar.sm,\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.md,\n height: sizing.avatar.md,\n },\n text: {\n lineHeight: sizing.avatar.md,\n fontSize: 'md',\n },\n icon: {\n boxSize: sizing.avatar.md,\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.lg,\n height: sizing.avatar.lg,\n },\n text: {\n lineHeight: sizing.avatar.lg,\n fontSize: 'lg',\n },\n icon: {\n boxSize: sizing.avatar.lg,\n },\n }),\n xl: ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar.xl,\n height: sizing.avatar.xl,\n },\n text: {\n lineHeight: sizing.avatar.xl,\n fontSize: '2xl',\n },\n }),\n '2xl': ({ theme: { sizes: sizing } }) => ({\n container: {\n width: sizing.avatar['2xl'],\n height: sizing.avatar['2xl'],\n },\n text: {\n lineHeight: sizing.avatar['2xl'],\n fontSize: '4xl',\n },\n }),\n\n },\n baseStyle: ({ theme: {\n colors: color,\n sizes: sizing,\n radii: borderRadius,\n }, image, name, bgColor }) => {\n const avatarBgColor = bgColor || getAvatarBgColor(image, name, color)\n\n return {\n container: {\n bgColor: avatarBgColor,\n color: getContrastColor(avatarBgColor),\n display: 'grid',\n placeItems: 'center',\n objectFit: 'cover',\n position: 'relative',\n },\n userImage: {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n badge: {\n position: 'absolute',\n bottom: `-${sizing['1']}`,\n right: `-${sizing['1']}`,\n minWidth: sizing['5'],\n height: sizing['5'],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n fontSize: 'xs',\n fontWeight: 'semibold',\n padding: sizing['0a'],\n bgColor: color.destructive,\n color: color.text.inverted,\n borderRadius: borderRadius.avatar.square,\n border: 'none',\n },\n\n }\n },\n variants: {\n square: ({ theme: { radii: borderRadius } }) => ({\n container: {\n aspectRatio: '1 / 1',\n borderRadius: borderRadius.avatar.square,\n '> img': {\n borderRadius: borderRadius.avatar.square,\n aspectRatio: '1 / 1',\n },\n },\n badge: {\n borderRadius: borderRadius.avatar.square,\n },\n }),\n rounded: ({ theme: { radii: borderRadius } }) => ({\n container: {\n aspectRatio: '1 / 1',\n borderRadius: borderRadius.avatar.rounded,\n '> img': {\n borderRadius: borderRadius.avatar.rounded,\n aspectRatio: '1 / 1',\n },\n },\n badge: {\n borderRadius: borderRadius.avatar.rounded,\n },\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const CloseButton: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n bgColor: color.background.button.ghost,\n _hover: {\n bg: color.background.button['ghost-hover'],\n _disabled: {\n bgColor: color.background.button.ghost,\n },\n },\n _active: {\n bgColor: color.background.button['ghost-active'],\n },\n _focusVisible: {\n ring: '2px',\n ringColor: color.border.wcag,\n ringOffset: '1px',\n },\n }),\n defaultProps: {\n size: 'md',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Modal: ComponentMultiStyleConfig = {\n parts: [ 'overlay', 'closeButton', 'dialog' ],\n sizes: {\n huge: {\n dialog: {\n width: '90%',\n maxW: '96rem',\n aspectRatio: '16/9',\n },\n },\n },\n baseStyle: ({ theme }) => {\n const {\n typography: { headings: { h4 } },\n } = theme\n return ({\n overlay: {\n bgColor: 'background.modal.overlay',\n backdropFilter: 'blur(8px)',\n },\n closeButton: {\n top: 4,\n right: 4,\n },\n dialog: {\n bgColor: 'background.default',\n borderRadius: 'modal.dialog',\n },\n header: {\n fontSize: h4.fontSize,\n paddingTop: 'paddingTop.modal.header',\n paddingBottom: 'paddingBottom.modal.header',\n border: 'modal.header',\n borderBottomColor: 'border.modal.header',\n borderBottomStyle: 'solid',\n },\n body: {\n paddingTop: 'paddingTop.modal.body',\n paddingBottom: 'paddingBottom.modal.body',\n },\n footer: {\n paddingTop: 'paddingTop.modal.footer',\n paddingBottom: 'paddingBottom.modal.footer',\n },\n })\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { cssVar } from '@chakra-ui/theme-tools'\n\nconst $arrowBg = cssVar('popper-arrow-bg')\nconst $arrowBorder = cssVar('popper-arrow-shadow-color')\n\nexport const Tooltip: ComponentSingleStyleConfig = {\n baseStyle: ({\n theme: { colors: color, space: spacing, radii: borderRadius },\n }) => ({\n color: color.text.inverted,\n paddingInline: spacing['padding-inline'].tooltip.default,\n paddingY: spacing.paddingY.tooltip.default,\n borderRadius: borderRadius.tooltip.default,\n backgroundColor: color.background.tooltip.default,\n [$arrowBg.variable]: color.background.tooltip.default,\n }),\n variants: {\n default: ({ theme: { colors: color } }) => ({\n color: color.text.default,\n bgColor: color.bg.base,\n borderWidth: 'xs',\n borderColor: color.border.default,\n borderStyle: 'solid',\n [$arrowBg.variable]: color.bg.base,\n [$arrowBorder.variable]: color.border.default,\n }),\n success: ({ theme: { colors: color } }) => ({\n color: 'text.over.success',\n bgColor: 'success-alt',\n [$arrowBg.variable]: color['success-alt'],\n }),\n info: ({ theme: { colors: color } }) => ({\n color: 'text.over.brand',\n bgColor: 'brand-alt',\n [$arrowBg.variable]: color['brand-alt'],\n }),\n ghost: ({ theme: { colors: color } }) => ({\n color: 'text.default',\n bgColor: color.bg.base,\n borderWidth: 'xs',\n borderColor: color.border.default,\n [$arrowBorder.variable]: color.border.default,\n borderStyle: 'solid',\n [$arrowBg.variable]: color.bg.base,\n }),\n warning: ({ theme: { colors: color } }) => ({\n color: 'text.over.warning',\n bgColor: color['info-alt'],\n [$arrowBg.variable]: color['info-alt'],\n }),\n danger: ({ theme: { colors: color } }) => ({\n color: 'text.over.error',\n bgColor: color['destructive-alt'],\n [$arrowBg.variable]: color['destructive-alt'],\n }),\n error: ({ theme: { colors: color } }) => ({\n color: 'text.over.error',\n bgColor: color['destructive-alt'],\n [$arrowBg.variable]: color['destructive-alt'],\n }),\n ai: ({ theme: { colors: color } }) => ({\n bgColor: color.bg.ai.default,\n [$arrowBg.variable]: color.bg.ai.default,\n\n }),\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Icon: ComponentSingleStyleConfig = {\n sizes: {\n xs: {\n boxSize: 'icon.xs',\n },\n sm: {\n boxSize: 'icon.sm',\n },\n md: {\n boxSize: 'icon.md',\n },\n lg: {\n boxSize: 'icon.lg',\n },\n },\n baseStyle: ({ boxSize, color }) => ({\n boxSize: boxSize || 'icon.default',\n color: color || 'inherit',\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const ClipboardInput: ComponentMultiStyleConfig = {\n parts: [ 'button', 'icon', 'tooltip' ],\n sizes: {\n sm: ({ theme: { sizes: sizing, space: spacing } }) => ({\n button: {\n height: sizing.button.xs,\n minWidth: sizing.button.xs,\n },\n icon: {\n boxSize: sizing.icon.xs,\n },\n tooltip: {\n paddingInline: spacing['padding-inline'].tooltip.sm,\n paddingY: spacing.paddingY.tooltip.sm,\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n },\n icon: {\n boxSize: sizing.icon.sm,\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.md,\n minWidth: sizing.button.md,\n },\n icon: {\n boxSize: sizing.icon.md,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\n\nexport const ColorPicker: ComponentMultiStyleConfig = {\n parts: [ 'colorButton', 'trigger', 'heading' ],\n baseStyle: ({ theme, selectedColor }) => {\n const { sizes: sizing, colors: color } = theme\n return ({\n heading: {\n border: 'none',\n paddingInlineStart: sizing['4'],\n paddingInlineEnd: sizing['2'],\n paddingBottom: sizing['0'],\n fontSize: 'md',\n fontWeight: 'semibold',\n },\n trigger: {\n bgColor: selectedColor ?? color.background.button.default,\n color: selectedColor ? getContrastColor(selectedColor) : 'unset',\n _hover: {\n bgColor: selectedColor ?? color.background.button['default-hover'],\n },\n _active: {\n bgColor: selectedColor ?? color.background.button['default-active'],\n },\n },\n colorButton: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n _hover: {\n ring: '2px',\n ringOffset: '1px',\n ringColor: `${color.border.input['default-hover']}`,\n },\n },\n })\n },\n sizes: {\n sm: ({ theme: { sizes: sizing } }) => ({\n trigger: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n },\n }),\n md: ({ theme: { sizes: sizing } }) => ({\n trigger: {\n height: sizing.button.md,\n minWidth: sizing.button.md,\n },\n }),\n lg: ({ theme: { sizes: sizing } }) => ({\n trigger: {\n height: sizing.button.lg,\n minWidth: sizing.button.lg,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Step: ComponentMultiStyleConfig = {\n parts: [ 'step', 'label', 'description', 'indicator' ],\n baseStyle: ({ theme: { colors: color, fontWeights, space: spacing, borders: borderWidth } }) => ({\n step: {\n justifyContent: 'start',\n alignItems: 'start',\n bgColor: color.background.step.default,\n borderTopWidth: borderWidth.step.default,\n borderColor: color.border.step.default,\n borderBottom: 'none',\n paddingInline: spacing['padding-inline'].step.default,\n color: color.text.subdued,\n _hover: {\n bgColor: color.background.step.hover,\n borderColor: color.border.step.hover,\n },\n _disabled: {\n cursor: 'not-allowed',\n _hover: { borderColor: color.border.step.default },\n },\n _active: {\n bgColor: color.background.step.active,\n },\n _selected: {\n bgColor: color.background.step.selected,\n borderColor: color.border.step.selected,\n color: color.border.step.selected,\n '[data-part=\"indicator\"]': {\n bg: color.border.step.selected,\n },\n _hover: {\n borderColor: color.border.step.selected,\n color: color.border.step.selected,\n },\n },\n },\n label: {\n color: 'inherit',\n textAlign: 'start',\n fontWeight: fontWeights.bold,\n },\n description: {\n textAlign: 'start',\n fontWeight: fontWeights.semiBold,\n color: color.text.default,\n },\n indicator: {\n minW: 6,\n minH: 6,\n borderRadius: 'full',\n bg: color.text.subdued,\n color: 'mono.white',\n fontWeight: fontWeights.bold,\n fontSize: 'xs',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: '2xs',\n },\n }),\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const StepList: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { sizes: sizing }, tabs }) => ({\n display: 'grid',\n width: '100%',\n gridTemplateColumns: `repeat(${tabs}, minmax(${sizing[32]}, 1fr))`,\n gridTemplateRows: '1fr',\n overflowX: 'auto',\n borderBottom: 'none',\n paddingBottom: sizing[2],\n }),\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H1: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h1 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h1.fontFamily,\n fontWeight: h1.fontWeight,\n lineHeight: h1.lineHeight,\n fontSize: h1.fontSize,\n letterSpacing: h1.letterSpacing,\n textTransform: h1.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H2: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h2 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h2.fontFamily,\n fontWeight: h2.fontWeight,\n lineHeight: h2.lineHeight,\n fontSize: h2.fontSize,\n letterSpacing: h2.letterSpacing,\n textTransform: h2.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H3: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h3 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h3.fontFamily,\n fontWeight: h3.fontWeight,\n lineHeight: h3.lineHeight,\n fontSize: h3.fontSize,\n letterSpacing: h3.letterSpacing,\n textTransform: h3.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H4: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h4 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h4.fontFamily,\n fontWeight: h4.fontWeight,\n lineHeight: h4.lineHeight,\n fontSize: h4.fontSize,\n letterSpacing: h4.letterSpacing,\n textTransform: h4.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H5: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h5 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h5.fontFamily,\n fontWeight: h5.fontWeight,\n lineHeight: h5.lineHeight,\n fontSize: h5.fontSize,\n letterSpacing: h5.letterSpacing,\n textTransform: h5.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const H6: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const {\n colors: color,\n typography: { headings: { h6 } },\n } = theme\n return merge({\n color: color.text.default,\n fontFamily: h6.fontFamily,\n fontWeight: h6.fontWeight,\n lineHeight: h6.lineHeight,\n fontSize: h6.fontSize,\n letterSpacing: h6.letterSpacing,\n textTransform: h6.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Blockquote: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { blockquote } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: blockquote.fontFamily,\n fontWeight: blockquote.fontWeight,\n lineHeight: blockquote.lineHeight,\n fontSize: blockquote.fontSize,\n letterSpacing: blockquote.letterSpacing,\n textTransform: blockquote.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Tiny: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { tiny } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: tiny.fontFamily,\n fontWeight: tiny.fontWeight,\n lineHeight: tiny.lineHeight,\n fontSize: tiny.fontSize,\n letterSpacing: tiny.letterSpacing,\n textTransform: tiny.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Capitalized: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { CAPITALIZED } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: CAPITALIZED.fontFamily,\n fontWeight: CAPITALIZED.fontWeight,\n lineHeight: CAPITALIZED.lineHeight,\n fontSize: CAPITALIZED.fontSize,\n letterSpacing: CAPITALIZED.letterSpacing,\n textTransform: CAPITALIZED.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Lead: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { lead } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: lead.fontFamily,\n fontWeight: lead.fontWeight,\n lineHeight: lead.lineHeight,\n fontSize: lead.fontSize,\n letterSpacing: lead.letterSpacing,\n textTransform: lead.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Small: ComponentSingleStyleConfig = {\n baseStyle: ({ theme, sx }) => {\n const { small } = theme.typography.stylized\n return merge({\n color: 'text.default',\n fontFamily: small.fontFamily,\n fontWeight: small.fontWeight,\n lineHeight: small.lineHeight,\n fontSize: small.fontSize,\n letterSpacing: small.letterSpacing,\n textTransform: small.textCase,\n }, sx)\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const P: ComponentSingleStyleConfig = {\n variants: {\n 14: ({ theme, sx }) => {\n const { body14 } = theme.typography.body\n return merge({\n fontFamily: body14.fontFamily,\n fontWeight: body14.fontWeight,\n lineHeight: body14.lineHeight,\n fontSize: body14.fontSize,\n letterSpacing: body14.letterSpacing,\n textTransform: body14.textCase,\n }, sx)\n },\n 16: ({ theme, sx }) => {\n const { body16 } = theme.typography.body\n return merge({\n fontFamily: body16.fontFamily,\n fontWeight: body16.fontWeight,\n lineHeight: body16.lineHeight,\n fontSize: body16.fontSize,\n letterSpacing: body16.letterSpacing,\n textTransform: body16.textCase,\n }, sx)\n },\n },\n baseStyle: {\n color: 'text.default',\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const Label: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { sizes: sizing }, sx }) => merge({\n color: 'inherit',\n width: '100%',\n maxWidth: '100%',\n marginBottom: sizing[0],\n marginInlineStart: sizing[0],\n marginEnd: sizing[0],\n marginInlineEnd: sizing[0],\n }, sx),\n sizes: {\n '2xs': ({ theme, sx }) => {\n const { tinyLabel } = theme.typography.labels\n return merge({\n fontFamily: tinyLabel.fontFamily,\n fontWeight: tinyLabel.fontWeight,\n lineHeight: tinyLabel.lineHeight,\n fontSize: tinyLabel.fontSize,\n letterSpacing: tinyLabel.letterSpacing,\n textTransform: tinyLabel.textCase,\n }, sx)\n },\n xs: ({ theme, sx }) => {\n const { xsLabel } = theme.typography.labels\n return merge({\n fontFamily: xsLabel.fontFamily,\n fontWeight: xsLabel.fontWeight,\n lineHeight: xsLabel.lineHeight,\n fontSize: xsLabel.fontSize,\n letterSpacing: xsLabel.letterSpacing,\n textTransform: xsLabel.textCase,\n }, sx)\n },\n sm: ({ theme, sx }) => {\n const { smLabel } = theme.typography.labels\n return merge({\n fontFamily: smLabel.fontFamily,\n fontWeight: smLabel.fontWeight,\n lineHeight: smLabel.lineHeight,\n fontSize: smLabel.fontSize,\n letterSpacing: smLabel.letterSpacing,\n textTransform: smLabel.textCase,\n }, sx)\n },\n md: ({ theme, sx }) => {\n const { mdLabel } = theme.typography.labels\n return merge({\n fontFamily: mdLabel.fontFamily,\n fontWeight: mdLabel.fontWeight,\n lineHeight: mdLabel.lineHeight,\n fontSize: mdLabel.fontSize,\n letterSpacing: mdLabel.letterSpacing,\n textTransform: mdLabel.textCase,\n }, sx)\n },\n lg: ({ theme, sx }) => {\n const { lgLabel } = theme.typography.labels\n return merge({\n fontFamily: lgLabel.fontFamily,\n fontWeight: lgLabel.fontWeight,\n lineHeight: lgLabel.lineHeight,\n fontSize: lgLabel.fontSize,\n letterSpacing: lgLabel.letterSpacing,\n textTransform: lgLabel.textCase,\n }, sx)\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\nimport { merge } from 'ramda'\n\nexport const NumVal: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { sizes: sizing }, sx }) =>\n merge(\n {\n color: 'inherit',\n width: '100%',\n maxWidth: '100%',\n marginBottom: sizing[0],\n marginInlineStart: sizing[0],\n marginEnd: sizing[0],\n marginInlineEnd: sizing[0],\n },\n sx\n ),\n sizes: {\n '2xs': ({ theme, sx }) => {\n const { tinyMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: tinyMono.fontFamily,\n fontWeight: tinyMono.fontWeight,\n lineHeight: tinyMono.lineHeight,\n fontSize: tinyMono.fontSize,\n letterSpacing: tinyMono.letterSpacing,\n textTransform: tinyMono.textCase,\n textDecoration: tinyMono.textDecoration,\n },\n sx\n )\n },\n xs: ({ theme, sx }) => {\n const { xsMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: xsMono.fontFamily,\n fontWeight: xsMono.fontWeight,\n lineHeight: xsMono.lineHeight,\n fontSize: xsMono.fontSize,\n letterSpacing: xsMono.letterSpacing,\n textTransform: xsMono.textCase,\n textDecoration: xsMono.textDecoration,\n },\n sx\n )\n },\n sm: ({ theme, sx }) => {\n const { smMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: smMono.fontFamily,\n fontWeight: smMono.fontWeight,\n lineHeight: smMono.lineHeight,\n fontSize: smMono.fontSize,\n letterSpacing: smMono.letterSpacing,\n textTransform: smMono.textCase,\n textDecoration: smMono.textDecoration,\n },\n sx\n )\n },\n md: ({ theme, sx }) => {\n const { mdMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: mdMono.fontFamily,\n fontWeight: mdMono.fontWeight,\n lineHeight: mdMono.lineHeight,\n fontSize: mdMono.fontSize,\n letterSpacing: mdMono.letterSpacing,\n textTransform: mdMono.textCase,\n textDecoration: mdMono.textDecoration,\n },\n sx\n )\n },\n lg: ({ theme, sx }) => {\n const { lgMono } = theme.typography.numVal\n return merge(\n {\n fontFamily: lgMono.fontFamily,\n fontWeight: lgMono.fontWeight,\n lineHeight: lgMono.lineHeight,\n fontSize: lgMono.fontSize,\n letterSpacing: lgMono.letterSpacing,\n textTransform: lgMono.textCase,\n textDecoration: lgMono.textDecoration,\n },\n sx\n )\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const SplitPane: ComponentSingleStyleConfig = {\n baseStyle: ({ minLeftWidth, minRightWidth, initialSplit, isOpen }) => ({\n display: 'grid',\n overflow: 'hidden',\n gridTemplateColumns: !isOpen ? '1fr' : `minmax(${minLeftWidth}%, var(--split-pos, ${initialSplit}%)) auto minmax(${minRightWidth}%, 1fr)`,\n alignItems: 'stretch',\n justifyItems: 'stretch',\n height: '100%',\n width: '100%',\n }),\n}\n\nexport const PaneDivider: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color, sizes: sizing } }) => ({\n bgColor: color.background['pane-divider'].default,\n zIndex: 300,\n cursor: 'col-resize',\n height: '100%',\n width: sizing[1],\n _hover: {\n outlineColor: color.border['pane-divider'].hover,\n outlineWidth: sizing['0a'],\n outlineStyle: 'solid',\n },\n _active: {\n outlineColor: color.border['pane-divider'].hover,\n outlineWidth: sizing['0a'],\n outlineStyle: 'solid',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Carousel: ComponentMultiStyleConfig = {\n parts: [ 'container', 'arrow', 'radio' ],\n baseStyle: {\n container: {\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n width: 'full',\n height: 'full',\n },\n radio: {\n position: 'absolute',\n bottom: '1',\n left: '50%',\n transform: 'translateX(-50%)',\n overflowX: 'scroll',\n maxWidth: '90%',\n padding: '2',\n },\n arrow: {\n position: 'absolute',\n bottom: '0',\n height: '100%',\n cursor: 'pointer',\n },\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { isEmpty, isNil } from 'ramda'\n\nexport const EditableText: ComponentMultiStyleConfig = {\n parts: [ 'button', 'icon', 'controls', 'preview', 'input' ],\n sizes: {\n sm: ({ isEditing, theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.xs,\n minWidth: sizing.button.xs,\n },\n icon: {\n boxSize: sizing.icon.xs,\n },\n controls: {\n width: !isEditing ? 6 : '3.25rem',\n },\n preview: {\n pt: 1,\n },\n input: {\n paddingInlineEnd: 16,\n paddingRight: 16,\n },\n }),\n md: ({ isEditing, theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.sm,\n minWidth: sizing.button.sm,\n },\n icon: {\n boxSize: sizing.icon.sm,\n },\n controls: {\n width: !isEditing ? 8 : '4.25rem',\n },\n preview: {\n pt: '7px',\n },\n input: {\n paddingInlineEnd: 20,\n paddingRight: 20,\n },\n }),\n lg: ({ isEditing, theme: { sizes: sizing } }) => ({\n button: {\n height: sizing.button.md,\n minWidth: sizing.button.md,\n },\n icon: {\n boxSize: sizing.icon.md,\n },\n controls: {\n width: !isEditing ? 10 : '5.25rem',\n },\n preview: {\n pt: '8px',\n },\n input: {\n paddingInlineEnd: 24,\n paddingRight: 24,\n },\n }),\n },\n baseStyle: ({ value }) => ({\n controls: {\n mr: 1,\n },\n preview: {\n fontWeight: 'semibold',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n paddingTop: 0,\n paddingBottom: 0,\n color: isNil(value) || isEmpty(value) ? 'text.subdued' : 'text.default',\n },\n input: {\n fontWeight: 'semibold',\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Toolbox: ComponentMultiStyleConfig = {\n parts: [ 'container', 'header', 'body', 'footer' ],\n baseStyle: ({ theme: {\n colors: color,\n sizes: sizing,\n borders: borderWidth,\n } }) => ({\n container: {\n position: 'relative',\n bg: 'text.inverted',\n h: '100vh',\n borderLeftWidth: borderWidth.xs,\n borderLeftStyle: 'solid',\n borderLeftColor: color.border.default,\n },\n header: {\n alignItems: 'center',\n height: '16',\n borderBottomWidth: borderWidth.xs,\n borderBottomStyle: 'solid',\n borderBottomColor: color.border.default,\n pl: '4',\n pr: '16',\n },\n footer: {\n position: 'absolute',\n bottom: '0',\n w: 'full',\n p: '4',\n alignItems: 'center',\n height: '16',\n borderTopWidth: borderWidth.xs,\n borderTopStyle: 'solid',\n borderTopColor: color.border.default,\n },\n body: {\n p: sizing['4'],\n flexDirection: 'column',\n w: '100%',\n h: '100%',\n maxH: `calc(100vh - ${sizing['16']} * 2)`,\n overflowY: 'scroll',\n },\n }),\n sizes: {\n sm: {\n container: {\n w: 'xs',\n },\n },\n md: {\n container: {\n w: 'md',\n },\n },\n lg: {\n container: {\n w: 'xl',\n },\n },\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { CSSObject, keyframes } from '@emotion/react'\nimport { merge } from 'ramda'\nimport { CurrentTheme } from '../../../utils'\n\nconst shakeAnimation = keyframes`\n 0% { transform: translate(1px, 1px) rotate(0deg); }\n 10% { transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { transform: translate(-3px, 0px) rotate(1deg); }\n 30% { transform: translate(3px, 2px) rotate(0deg); }\n 40% { transform: translate(1px, -1px) rotate(1deg); }\n 50% { transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { transform: translate(-3px, 1px) rotate(0deg); }\n 70% { transform: translate(3px, 1px) rotate(-1deg); }\n 80% { transform: translate(-1px, -1px) rotate(1deg); }\n 90% { transform: translate(1px, 2px) rotate(0deg); }\n 100% { transform: translate(1px, -2px) rotate(-1deg); }\n`\n\nconst thickRing: CSSObject = {\n _focusVisible: {\n outline: 'none',\n ring: '3px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n },\n}\n\nconst getBgColor = (currentTheme: CurrentTheme) => {\n switch (currentTheme) {\n case 'webappTheme': return 'blue.50'\n case 'tottTheme': return 'blue.900'\n default: return 'bg.filled'\n }\n}\n\nconst getInvalidColorStyles = (isInvalid: boolean, isImage = true, currentTheme: CurrentTheme = 'webappTheme') => ({\n borderColor: isInvalid ? 'border.error' : 'border.default',\n bgColor: isInvalid && 'bg.error.default',\n animation: isInvalid && `500ms ${shakeAnimation} ease`,\n _hover: isImage && {\n bgColor: isInvalid ? 'bg.error.default' : getBgColor(currentTheme),\n borderColor: isInvalid ? 'border.error' : 'border.brand.default',\n },\n})\n\nconst getAiColorStyles = (isInvalid: boolean, isImage = true) => ({\n borderColor: isInvalid ? 'border.error' : 'border.default',\n bgColor: isInvalid && 'bg.error.default',\n animation: isInvalid && `500ms ${shakeAnimation} ease`,\n _hover: isImage && {\n bgColor: isInvalid ? 'bg.error.default' : 'bg.filled',\n borderColor: isInvalid ? 'border.error' : 'border.ai',\n },\n})\n\nexport const FilePicker: ComponentMultiStyleConfig = {\n parts: [ 'filePicker', 'fileItem', 'multiFilePicker' ],\n baseStyle: ({ theme: { sizes, colors }, hasLoaded, isImage, isInvalid, currentTheme, sx }) => ({\n filePicker: merge({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'full',\n height: '40',\n textAlign: 'center',\n position: 'relative',\n borderWidth: hasLoaded && isImage ? '0' : sizes['0a'],\n borderStyle: 'dashed',\n borderRadius: 'lg',\n ...getInvalidColorStyles(isInvalid, isImage, currentTheme),\n ...thickRing,\n }, sx),\n multiFilePicker: {\n width: 'full',\n maxWidth: 'inherit',\n height: '32',\n position: 'relative',\n borderWidth: sizes['0a'],\n borderStyle: 'dashed',\n borderRadius: 'lg',\n ...getInvalidColorStyles(isInvalid, undefined, currentTheme),\n ...thickRing,\n },\n fileItem: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n paddingX: '2',\n paddingY: '1',\n borderRadius: sizes['2'],\n textAlign: 'center',\n position: 'relative',\n border: `2px solid ${colors.gray['100']}`,\n minHeight: '20',\n },\n }),\n variants: {\n ai: ({ isInvalid }) => ({\n filePicker: {\n ...getAiColorStyles(isInvalid),\n },\n multiFilePicker: {\n ...getAiColorStyles(isInvalid),\n },\n }),\n\n },\n}\n","import { ComponentSingleStyleConfig, useToken } from '@chakra-ui/react'\nimport { getContrastColor } from '../../../utils'\nimport { processColorSchemeBasedOnTheme } from '../../process-color-scheme-based-on-theme'\n\nexport const Badge: ComponentSingleStyleConfig = {\n baseStyle: ({ colorScheme, theme: { colors }, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const bgColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][100]\n : colors[processedColorScheme] && colors[processedColorScheme][100]\n const textColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][800]\n : colors[processedColorScheme] && colors[processedColorScheme][800]\n\n return {\n bgColor,\n color: textColor,\n }\n },\n variants: {\n solid: ({ colorScheme, theme: { colors }, currentTheme, bg, bgColor }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const finalBg =\n bg ??\n bgColor ??\n (processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][500]\n : colors[processedColorScheme] && colors[processedColorScheme][500])\n\n return {\n bgColor: finalBg,\n color: getContrastColor(finalBg ?? useToken('colors', processedColorScheme)),\n }\n },\n outline: ({ colorScheme, theme: { colors }, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const textColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][500]\n : colors[processedColorScheme] && colors[processedColorScheme][700]\n\n return {\n bgColor: 'mono.transparent',\n color: textColor,\n }\n },\n ghost: ({ colorScheme, theme: { colors }, currentTheme }) => {\n const processedColorScheme = processColorSchemeBasedOnTheme({ currentTheme, colorScheme })\n\n const textColor = processedColorScheme === 'mediatoolBlue'\n ? colors[processedColorScheme][500]\n : colors[processedColorScheme] && colors[processedColorScheme][700]\n\n return {\n bgColor: 'mono.transparent',\n color: textColor,\n }\n },\n },\n sizes: {\n xs: {\n fontSize: '2xs',\n },\n sm: {\n fontSize: 'xs',\n },\n md: {\n fontSize: 'sm',\n },\n lg: {\n fontSize: 'md',\n },\n },\n defaultProps: {\n size: 'sm',\n variant: 'solid',\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Menu: ComponentMultiStyleConfig = {\n parts: [ 'list', 'item' ],\n baseStyle: ({ theme: {\n colors: color,\n radii: borderRadius,\n } }) => ({\n menu: {\n borderColor: color.border.default,\n },\n list: {\n px: '2',\n bgColor: color.bg.base,\n },\n item: {\n py: '2',\n color: color.text.default,\n borderRadius: borderRadius.select.default,\n bgColor: color.bg.base,\n _hover: {\n bgColor: color.background.button.default,\n },\n _active: {\n bgColor: color.background.button.default,\n },\n _focus: {\n bgColor: color.background.button.default,\n },\n _checked: {\n fontWeight: 'bold',\n },\n },\n }),\n variants: {\n compact: ({ theme: { colors: color } }) => ({\n item: {\n fontSize: 'sm',\n color: color.text.default,\n },\n }),\n relaxed: ({ theme: { colors: color } }) => ({\n item: {\n py: '2',\n fontSize: 'md',\n color: color.text.default,\n },\n }),\n },\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\n\nexport const Popover: ComponentMultiStyleConfig = {\n parts: [ 'popper' ],\n baseStyle: {\n popper: {\n zIndex: 'popover',\n },\n },\n}\n","import { ComponentSingleStyleConfig } from '@chakra-ui/react'\n\nexport const Progress: ComponentSingleStyleConfig = {\n baseStyle: ({ theme: { colors: color } }) => ({\n track: {\n bg: color['subdued-alt'],\n },\n filledTrack: {\n bg: color.brand,\n },\n }),\n}\n","import { ComponentMultiStyleConfig } from '@chakra-ui/react'\nimport { mode } from '@chakra-ui/theme-tools'\n\nexport const Table: ComponentMultiStyleConfig = {\n parts: [\n 'table',\n 'th',\n 'td',\n 'columnHeader',\n 'cell',\n 'caption',\n 'footer',\n 'tr',\n ],\n variants: {\n rounded: () => ({\n table: {\n borderSpacing: '0',\n borderCollapse: 'separate',\n borderRadius: 'md',\n borderColor: 'border.default',\n borderWidth: 'xs',\n px: '3',\n },\n\n th: {\n color: 'text.subdued',\n fontWeight: 'bold',\n textTransform: 'none',\n fontSize: 'sm',\n },\n\n td: {\n borderColor: 'border.default',\n borderTopWidth: 'xs',\n },\n }),\n striped: (props) => {\n const { colorScheme: c = 'gray' } = props\n\n return {\n table: {\n borderSpacing: '0',\n borderCollapse: 'separate',\n borderRadius: 'md',\n borderColor: 'border.default',\n borderWidth: 'xs',\n p: '2',\n },\n columnHeader: {\n color: 'text.subdued',\n bgColor: mode(`${c}.100`, `${c}.700`)(props),\n fontWeight: 'bold',\n textTransform: 'none',\n fontSize: 'sm',\n },\n cell: {\n bgColor: mode(`${c}.100`, `${c}.700`)(props),\n },\n caption: {\n color: mode('gray.600', 'gray.100')(props),\n },\n th: {\n borderBottomWidth: '0',\n },\n tr: {\n '&:nth-of-type(odd)': {\n td: {\n background: mode(`${c}.100`, `${c}.700`)(props),\n },\n },\n },\n footer: {\n tr: {\n th: { borderBottomWidth: 0 },\n },\n },\n }\n },\n },\n}\n","import { ThemeOverride } from '@chakra-ui/react'\nimport {\n WebappComponentsTokensSet,\n WebappSystemTokensSet,\n typography,\n} from '@northlight/tokens'\n\nexport const WebappSkin: ThemeOverride = {\n colors: {\n ...WebappSystemTokensSet.st.color,\n ...WebappComponentsTokensSet.color,\n text: {\n ...WebappSystemTokensSet.st.color.text,\n ...WebappComponentsTokensSet.color.text,\n },\n border: {\n ...WebappSystemTokensSet.st.color.border,\n ...WebappComponentsTokensSet.color.border,\n },\n },\n sizes: WebappComponentsTokensSet.sizing,\n space: WebappComponentsTokensSet.spacing,\n radii: {\n ...WebappSystemTokensSet.st.borderRadius,\n ...WebappComponentsTokensSet.borderRadius,\n },\n borders: {\n ...WebappSystemTokensSet.st.borderWidth,\n ...WebappComponentsTokensSet.borderWidth,\n },\n opacity: WebappComponentsTokensSet.opacity,\n typography,\n shadows: { ...WebappSystemTokensSet.st.boxShadow },\n}\n","import { ThemeOverride } from '@chakra-ui/react'\nimport {\n TottComponentsTokensSet,\n TottSystemTokensSet,\n typography,\n} from '@northlight/tokens'\n\nexport const TottSkin: ThemeOverride = {\n colors: {\n ...TottSystemTokensSet.st.color,\n ...TottComponentsTokensSet.color,\n border: {\n ...TottSystemTokensSet.st.color.border,\n ...TottComponentsTokensSet.color.border,\n },\n },\n sizes: TottComponentsTokensSet.sizing,\n space: TottComponentsTokensSet.spacing,\n radii: {\n ...TottSystemTokensSet.st.borderRadius,\n ...TottComponentsTokensSet.borderRadius,\n },\n borders: {\n ...TottSystemTokensSet.st.borderWidth,\n ...TottComponentsTokensSet.borderWidth,\n },\n opacity: TottComponentsTokensSet.opacity,\n typography,\n shadows: { ...TottSystemTokensSet.st.boxShadow },\n}\n","import { ThemeOverride } from '@chakra-ui/react'\nimport {\n CamphouseLightComponentsTokensSet,\n CamphouseLightSystemTokensSet,\n typography,\n} from '@northlight/tokens'\n\nexport const CamphouseLightSkin: ThemeOverride = {\n colors: {\n ...CamphouseLightSystemTokensSet.st.color,\n ...CamphouseLightComponentsTokensSet.color,\n text: {\n ...CamphouseLightSystemTokensSet.st.color.text,\n ...CamphouseLightComponentsTokensSet.color.text,\n },\n border: {\n ...CamphouseLightSystemTokensSet.st.color.border,\n ...CamphouseLightComponentsTokensSet.color.border,\n },\n },\n sizes: CamphouseLightComponentsTokensSet.sizing,\n space: CamphouseLightComponentsTokensSet.spacing,\n radii: {\n ...CamphouseLightSystemTokensSet.st.borderRadius,\n ...CamphouseLightComponentsTokensSet.borderRadius,\n },\n borders: {\n ...CamphouseLightSystemTokensSet.st.borderWidth,\n ...CamphouseLightComponentsTokensSet.borderWidth,\n },\n opacity: CamphouseLightComponentsTokensSet.opacity,\n typography,\n shadows: { ...CamphouseLightSystemTokensSet.st.boxShadow },\n}\n","import {\n ThemeOverride,\n extendTheme,\n} from '@chakra-ui/react'\nimport {\n coreBorderRadius,\n coreBoxShadow,\n coreFontSize,\n coreFontWeight,\n coreLineHeight,\n coreSizing,\n coreSpacing,\n coreZIndex,\n palette,\n} from '@northlight/tokens'\nimport { scrollbarStyles } from './global/scrollbar'\nimport * as components from './components'\nimport { CamphouseLightSkin, TottSkin, WebappSkin } from './skins'\n\nconst overrides: ThemeOverride = {\n config: {\n cssVarPrefix: '',\n },\n semanticTokens: {\n colors: {\n 'chakra-body-text': {\n _light: 'text.default',\n _dark: 'text.inverted',\n },\n },\n },\n styles: {\n global: {\n html: {\n scrollBehavior: 'smooth',\n },\n body: {\n height: '100%',\n },\n '#app': {\n height: '100%',\n },\n ...scrollbarStyles,\n },\n },\n fonts: {\n heading: 'Inter, sans-serif',\n body: 'Inter, sans-serif',\n },\n components: { ...components },\n colors: palette,\n zIndices: coreZIndex,\n sizes: coreSizing,\n space: coreSpacing,\n fontWeights: coreFontWeight,\n shadows: coreBoxShadow,\n fontSizes: coreFontSize,\n lineHeights: coreLineHeight,\n radii: coreBorderRadius,\n borderWidths: WebappSkin.borders,\n}\n\nexport const theme = extendTheme(overrides, WebappSkin)\n\nexport const tottTheme = extendTheme(overrides, TottSkin)\n\nexport const camphouseLightTheme = extendTheme(overrides, CamphouseLightSkin)\n","import React, {\n FunctionComponent,\n KeyboardEvent,\n useEffect,\n useState,\n} from 'react'\nimport {\n ActionMeta,\n CreatableSelect,\n MultiValue,\n} from 'chakra-react-select'\nimport { any, identity, isEmpty } from 'ramda'\nimport { Box } from '../box'\nimport { useToken } from '../../hooks'\nimport { TagsInputProps } from './types'\nimport { Option } from '../select'\nimport { tagsInputStyles } from './tags-input-styles'\nimport { theme } from '../../theme'\n/**\n * Tags Input, based of react creatable select, is meant to select\n * multiple tags. Follows styling of textarea and is resizable.\n *\n * @see {@link https://northlight.dev/reference/tags-input}\n * @example (Example)\n * ## Simple\n * (?\n * <TagsInput />\n * ?)\n *\n * @example (Example)\n * ## With suggestions\n * (?\n * <TagsInput options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}/>\n * ?)\n *\n */\nexport function TagsInput<T extends Option> ({\n options,\n onChange = identity,\n isLoading,\n loadingList = () => null,\n 'data-testid': testId,\n value = [],\n onError,\n ...rest\n}: TagsInputProps<T>) {\n const [ borderColor ] = useToken('border.select', [ 'focus' ])\n const [ menuIsOpen, setMenuIsOpen ] = useState(false)\n const [ inputValue, setInputValue ] = useState('')\n const [ selectedOptions, setSelectedOptions ] = useState<MultiValue<T>>(value)\n const [ isFocused, setIsFocused ] = useState(false)\n\n useEffect(() => {\n setSelectedOptions(value)\n }, [ value.length ])\n\n const CustomSelect = CreatableSelect as FunctionComponent<TagsInputProps<T>>\n\n const handleChange = (values: MultiValue<T>, actionMeta: ActionMeta<T>) => {\n setSelectedOptions(values)\n onChange(values, actionMeta)\n }\n\n const isValidNewOption = (input: string, availableOptions: MultiValue<T>) => !any(\n (option) => option.value === input,\n availableOptions\n )\n\n const addNewOption = (newOption: T) => {\n const updatedOptions = [ ...selectedOptions, newOption ]\n onChange(updatedOptions, { action: 'select-option', option: newOption })\n setSelectedOptions(updatedOptions)\n }\n\n const clearInput = () => {\n setInputValue('')\n }\n\n const handleInputChange = (newInput: string) => {\n if (newInput === ',') return\n\n setInputValue(newInput)\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const shouldAddOption = event.key === 'Enter' || event.key === 'Tab' || event.key === ','\n\n if (!shouldAddOption || isEmpty(inputValue)) return\n\n const trimmedInputValue = inputValue.trim()\n\n if (isValidNewOption(trimmedInputValue, selectedOptions)) {\n const newOption: Option = { value: trimmedInputValue, label: trimmedInputValue }\n addNewOption(newOption as T)\n } else {\n onError?.('Tag already exists')\n }\n\n clearInput()\n }\n\n const handleFocus = () => {\n setIsFocused(true)\n if (options && options.length > 0) {\n setMenuIsOpen(true)\n }\n }\n\n return (\n <Box w=\"full\" data-testid={ testId }>\n <CustomSelect\n isMulti={ true }\n menuPortalTarget={ document.body }\n placeholder=\"Type something and press Enter or comma...\"\n options={ options }\n useBasicStyles={ true }\n closeMenuOnSelect={ false }\n hideSelectedOptions={ false }\n isClearable={ false }\n onChange={ handleChange }\n onInputChange={ handleInputChange }\n onKeyDown={ handleKeyDown }\n inputValue={ inputValue }\n selectedOptionStyle=\"check\"\n chakraStyles={ tagsInputStyles(isFocused, borderColor) }\n onFocus={ handleFocus }\n isValidNewOption={ isValidNewOption }\n onBlur={ () => {\n setMenuIsOpen(false)\n setIsFocused(false)\n } }\n menuIsOpen={ menuIsOpen }\n isLoading={ isLoading }\n { ...(isLoading && { components: { MenuList: loadingList } }) }\n value={ selectedOptions }\n components={ {\n DropdownIndicator: () => null,\n } }\n styles={ { menuPortal: (base) => ({ ...base, zIndex: theme.zIndices.popover }) } }\n formatCreateLabel={ (textInputValue: string) =>\n `Add tag \"${textInputValue}\"`\n }\n { ...rest }\n />\n </Box>\n )\n}\n","import React from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/react'\nimport { OrganizationLogoProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/organization-logo}\n *\n * @example\n * (?\n * <OrganizationLogo name=\"mediatool\" />\n * ?)\n *\n */\nexport const OrganizationLogo = ({\n name,\n image,\n variant = 'square',\n ...rest\n}: OrganizationLogoProps) => {\n const getInitials = (orgName: string) => orgName[0].toUpperCase()\n const {\n container,\n text,\n } = useMultiStyleConfig('Avatar', { variant, image, ...rest })\n\n return (\n <chakra.div\n __css={ container }\n data-testid=\"organization-logo-test-id\"\n { ...rest }\n >\n { image ? (\n <chakra.img\n alt={ name }\n src={ image }\n />\n )\n : (\n <chakra.span __css={ text }>\n { getInitials(name) }\n </chakra.span>\n )\n }\n </chakra.div>\n )\n}\n","import React from 'react'\nimport { Alert as ChakraAlert } from '@chakra-ui/react'\nimport { AlertProps } from './types'\n\n/**\n * @example (Example)\n * ## Usage\n * <br />\n * Northlight exports 4 alert related components: <br />\n * <br />\n * `Alert`: The wrapper for alert components. <br />\n * `AlertIcon`: The visual icon for the alert that changes based on the status prop. <br />\n * `AlertTitle`: The title of the alert to be announced by screen readers. <br />\n * `AlertDescription`: The description of the alert to be announced by screen readers. <br />\n * <br />\n * (?\n * +\n * const toastIconMap = {\n * success: CheckCircleSolid,\n * warning: AlertTriangleSolid,\n * error: AlertCircleSolid,\n * danger: AlertCircleSolid,\n * info: BellSolid,\n * ai: BrightnessSolid,\n * default: HelpCircleSolid,\n * ghost: HelpCircleSolid,\n * }\n *\n * const variants = [\n * \"default\",\n * \"success\",\n * \"warning\",\n * \"error\",\n * \"info\",\n * \"ai\",\n * \"ghost\",\n * ]\n *\n * const Example = () => (\n * <SimpleGrid columns={2} columnGap=\"2\" rowGap=\"4\">\n *\n * {variants.map((variant) => (\n * <Alert variant={variant}>\n * <AlertIcon as={toastIconMap[variant]} />\n * <AlertTitle>Title</AlertTitle>\n * <AlertDescription>Description</AlertDescription>\n * </Alert>\n * ))}\n * </SimpleGrid>\n * )\n * render(<Example />)\n\n * ?)\n */\n\nexport const Alert = ({\n variant = 'success',\n children,\n ...rest\n}: AlertProps) => (\n <ChakraAlert variant={ variant } { ...rest }>\n { children }\n </ChakraAlert>\n)\n","import React from 'react'\nimport { AspectRatioProps, AspectRatio as ChakraAspectRatio } from '@chakra-ui/react'\n\n/**\n * Meant to restrict child by specific ratio\n * @see {@link https://northlight.dev/aspect-ratio}\n * @example\n * (?\n <AspectRatio maxW='400px' ratio={4 / 3}>\n <Image src='https://bit.ly/naruto-sage' alt='naruto' objectFit='cover' />\n</AspectRatio>\n?)\n *\n * */\nexport const AspectRatio = (props: AspectRatioProps) => (\n <ChakraAspectRatio { ...props } />\n)\n","import React from 'react'\nimport {\n Icon as ChakraIcon,\n forwardRef,\n useStyleConfig,\n} from '@chakra-ui/react'\nimport { IconProps } from './types'\n\n/**\n * Pass down any icon from northlight/icons via as prop\n * @see IconButton\n * @see {@link https://northlight.dev/reference/icon}\n *\n * @example\n * (?\n * <Icon as={SmileyDuo} size=\"lg\" />\n * ?)\n */\nexport const Icon = forwardRef(({\n as: As,\n size,\n color,\n boxSize,\n ...rest\n}: IconProps, ref: any) => {\n const CustomIcon = As ?? (() => <ChakraIcon />)\n const styles = useStyleConfig('Icon', { size, color, boxSize })\n\n return (\n <ChakraIcon\n ref={ ref }\n sx={ styles }\n { ...rest }\n >\n <CustomIcon />\n </ChakraIcon>\n )\n})\n","import React from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/react'\nimport { AvatarBadgeProps } from './types'\n\n/**\n * Specific component meant to be used with <Avatar /> to display notification\n * @see Avatar\n * @see {@link https://northlight.dev/reference/avatar}\n *\n * @example (Example)\n * Examle:\n * (?\n * <Avatar notificationCount={4} />\n * ?)\n *\n */\nexport const AvatarBadge = ({\n notificationCount = 0,\n}: AvatarBadgeProps) => {\n const { badge } = useMultiStyleConfig('Avatar')\n return (\n <chakra.span sx={ badge }>\n { notificationCount > 999 ? '999+' : notificationCount }\n </chakra.span>\n )\n}\n","import React from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/react'\nimport { BusinessContactDuo, UserSquareDuo } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { Box } from '../box'\nimport { getInitials } from '../../utils'\nimport { AvatarProps } from './types'\nimport { AvatarBadge } from './avatar-badge'\n\n/**\n * @see AvatarGroup\n * @see {@link https://northlight.dev/reference/avatar}\n *\n * @example (Example)\n * Avatar takes a name and image\n * (?\n * <Avatar name=\"Darth Vader\" image='/vader.png' />\n * ?)\n *\n * <br />\n * If there is no image, it will render the initials of the name along with a random bg color.\n * (?\n * <Avatar name=\"Darth Vader\" />\n * ?)\n *\n * <br />\n *\n * If the name also is undefined, it will render a fallback icon\n * (?\n * <Avatar />\n * ?)\n */\nexport const Avatar = ({\n variant = 'square',\n notificationCount = 0,\n name,\n image,\n size,\n bgColor,\n ...rest\n}: AvatarProps) => {\n const { container, text, userImage, icon } = useMultiStyleConfig('Avatar', {\n variant,\n image,\n size,\n name,\n bgColor,\n })\n\n return (\n <Box __css={ container } data-testid=\"avatar-test-id\" { ...rest }>\n { image\n ? (\n <chakra.img\n alt={ name }\n src={ image }\n sx={ userImage }\n />\n ) : name\n ? (\n <chakra.span sx={ text }>\n { getInitials(name) }\n </chakra.span>\n )\n : (\n <Icon\n as={ variant === 'square' ? UserSquareDuo : BusinessContactDuo }\n sx={ icon }\n aria-label=\"user-avatar\"\n />\n ) }\n { notificationCount > 0 && (\n <AvatarBadge notificationCount={ notificationCount } />\n ) }\n </Box>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h1}\n * @example (Example)\n * (?\n * <H1>Heading 1</H1>\n * ?)\n */\nexport const H1 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H1', { sx })\n\n return (\n <Heading\n as=\"h1\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h2}\n * @example (Example)\n * (?\n * <H2>Heading 2</H2>\n * ?)\n *\n */\nexport const H2 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H2', { sx })\n\n return (\n <Heading\n as=\"h2\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h3}\n * @example (Example)\n * (?\n * <H3>Heading 3</H3>\n * ?)\n */\nexport const H3 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H3', { sx })\n\n return (\n <Heading\n as=\"h3\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h4}\n * @example (Example)\n * (?\n * <H4>Heading 4</H4>\n * ?)\n */\nexport const H4 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H4', { sx })\n\n return (\n <Heading\n as=\"h4\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h5}\n * @example (Example)\n * (?\n * <H5>Heading 5</H5>\n * ?)\n */\nexport const H5 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H5', { sx })\n\n return (\n <Heading\n as=\"h5\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Heading, useStyleConfig } from '@chakra-ui/react'\nimport { HeadingProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/h6}\n * @example (Example)\n * (?\n * <H6>Heading 6</H6>\n * ?)\n */\nexport const H6 = forwardRef<HTMLHeadingElement, HeadingProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('H6', { sx })\n\n return (\n <Heading\n as=\"h6\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </Heading>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, useStyleConfig } from '@chakra-ui/react'\nimport { PProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/p}\n * @example\n * (?\n * <P>Body text</P>\n * ?)\n *\n */\nexport const P = forwardRef<HTMLParagraphElement, PProps>(({\n children,\n variant = '16',\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('P', { variant, sx })\n\n return (\n <ChakraText\n variant={ variant }\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Capitalized\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/blockquote }\n *\n * @example (Example)\n * (?\n * <Blockquote sx={{color: 'green.500' }}>Success</Blockquote>\n * ?)\n * (_Note, all other css properties not listed under the\n * props tab to right should be passed down via **sx**_)\n *\n *\n *\n */\nexport const Blockquote = forwardRef<HTMLParagraphElement, TextProps>(\n ({ children, sx = {}, ...rest }, ref) => {\n const styles = useStyleConfig('Blockquote', { sx })\n\n return (\n <ChakraText as=\"span\" sx={ styles } ref={ ref } { ...rest }>\n { children }\n </ChakraText>\n )\n }\n)\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Blockquote\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/capitalized }\n *\n * @example (Example)\n * (?\n * <Capitalized sx={{color: 'red.500' }}>Error</Capitalized>\n * ?)\n * (_Note, all other css properties not listed\n * under the props tab to right should be passed down via **sx**_)\n *\n */\nexport const Capitalized = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Capitalized', { sx })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Blockquote\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/lead }\n *\n * @example\n * (?\n * <Lead>Lead</Lead>\n * ?)\n * (_Note, all other css properties not listed\n * under the props tab to right should be passed down via **sx**_)\n *\n */\nexport const Lead = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Lead', { sx })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Capitalized\n * @see Lead\n * @see Blockquote\n * @see Tiny\n * @see {@link https://northlight.dev/reference/small }\n *\n * @example (Example)\n * (?\n * <Small>Small</Small>\n * ?)\n * (_Note, all other css properties not listed under the\n * props tab to right should be passed down via **sx**_)\n *\n */\nexport const Small = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Small', { sx })\n\n return (\n <ChakraText\n as=\"small\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { Text as ChakraText, TextProps, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * One of the stylized typography components\n * @see Capitalized\n * @see Lead\n * @see Blockquote\n * @see Small\n * @see {@link https://northlight.dev/reference/tiny }\n *\n * @example (Example)\n * (?\n * <Tiny>Tiny</Tiny>\n * ?)\n * (_Note, all other css properties not listed under the\n * props tab to right should be passed down via **sx**_)\n *\n */\nexport const Tiny = forwardRef<HTMLParagraphElement, TextProps>(({\n children,\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Tiny', { sx })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { FormLabel, VisuallyHidden, useStyleConfig } from '@chakra-ui/react'\nimport { LabelProps } from './types'\n\n/**\n * One of the stylized typography components\n * @see Blockquote\n * @see Lead\n * @see Small\n * @see Tiny\n * @see {@link https://northlight.dev/reference/label }\n *\n * @example\n * (?\n * <Label sx={{color: 'brand.500' }} size=\"lg\">Brand</Label>\n * ?)\n * (_Note, all other css properties not listed\n * under the props tab to right should be passed down via **sx**_)\n *\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(({\n children,\n size = 'sm',\n sx = {},\n ...rest\n}, ref) => {\n const styles = useStyleConfig('Label', { sx, size })\n\n return (\n <FormLabel\n sx={ styles }\n requiredIndicator={ <VisuallyHidden /> }\n ref={ ref }\n { ...rest }\n >\n { children }\n </FormLabel>\n )\n})\n","import React, { forwardRef } from 'react'\nimport {\n Text as ChakraText,\n TextProps,\n useStyleConfig,\n} from '@chakra-ui/react'\n\n/**\n * @see {@link https://northlight.dev/reference/label }\n *\n * @example\n * (?\n * <NumVal sx={{color: 'brand' }} size=\"lg\">270 000 000</NumVal>\n * ?)\n * (_Note, all other css properties not listed\n *\n */\nexport const NumVal = forwardRef<HTMLLabelElement, TextProps>(\n ({ children, size = 'sm', sx = {}, ...rest }, ref) => {\n const styles = useStyleConfig('NumVal', { sx, size })\n\n return (\n <ChakraText\n as=\"span\"\n sx={ styles }\n ref={ ref }\n { ...rest }\n >\n { children }\n </ChakraText>\n )\n }\n)\n","import React, { Children, useEffect, useRef, useState } from 'react'\nimport { always, dec, defaultTo, gt, identity, ifElse, inc, isNil, take } from 'ramda'\nimport { OverflowGroupProps } from './types'\nimport { getChildrenWithProps } from '../../utils'\n\nconst positiveOrZero = ifElse(gt(0), always(0), identity)\nconst EMPTY_RECT = {\n clientWidht: 0,\n clientHeight: 0,\n}\nconst EMPTY_WINDOW = {\n innerWidth: 0,\n innerHeight: 0,\n}\n\n/**\n * Util wrapper for lists by only rendering as many items as fit per the specification\n * @see {@link https://northlight.dev/reference/overflow-group}\n * @example\n * (?\n * +\n *\nconst CustomSlider = ({ onChange }) => (\n <Slider min={ 100 } max={ 300 } step={ 1 } onChange={ onChange }>\n <SliderTrack>\n <SliderFilledTrack />\n </SliderTrack>\n <SliderThumb />\n </Slider>\n)\n *\n\nconst arrayWithLength = (n) => {\n let buffer = []\n for(let i = 0; i < n; i++) {\n buffer.push(i)\n }\n return buffer\n}\n * const MyComponent = () => {\n * const [ n, setN ] = useState(5)\n const [ max, setMax ] = useState(10)\n const [ width, setWidth ] = useState(200)\n const [ height, setHeight ] = useState(200)\n const { containerRef, rect } = useOverflowGroup()\n const [ nbrRemainingItems, setNbrRemainingItems ] = useState(0)\n * return (\n * <Stack mb={ 4 } spacing={ 4 } w=\"40%\">\n <Stack h=\"300px\">\n <Wrap\n w={ width }\n h={ height }\n ref={ containerRef }\n borderWidth=\"2px\"\n borderColor=\"gray.200\"\n borderStyle=\"solid\"\n p=\"2\"\n borderRadius=\"md\"\n >\n <OverflowGroup\n max={ max }\n rect={ rect }\n onChange={ setNbrRemainingItems }\n >\n { arrayWithLength(n).map((i) => (\n <Badge key={ i } h=\"max-content\">\n Item { i }\n </Badge>\n )) }\n </OverflowGroup>\n { nbrRemainingItems > 0 && (\n <Tag w=\"fit-content\">+{ nbrRemainingItems }</Tag>\n ) }\n </Wrap>\n </Stack>\n <Stack bgColor=\"gray.50\" p=\"2\" borderRadius=\"md\">\n <HStack>\n <Label>Height</Label>\n <CustomSlider onChange={ setHeight } />\n </HStack>\n <HStack>\n <Label>Width</Label>\n <CustomSlider onChange={ setWidth } />\n </HStack>\n <HStack>\n <Label>Number of items </Label>\n <NumberInput onChange={ (v) => setN(Number(v)) } value={ n } />\n </HStack>\n <HStack>\n <Label>Render max </Label>\n <NumberInput onChange={ (v) => setMax(Number(v)) } value={ max } />\n </HStack>\n </Stack>\n </Stack>\n * )}\nrender(<MyComponent/>)\n * ?)\n<br />\nThe overflow group requires either a max prop for a set limit, or a rect prop,\n for a dynamic, responsive layouts. The rect prop can be received via the useOverflowGroup hook,\n along with a containerRef that needs to be set on the wrapper around the overflow group.\n<br />\n<br />\nThe overflow group is ambiguous in the styling of the children and does not pose any premade layout;\n instead the wrapper parent container determines the layout.\n One could for example use a <Stack /> <HStack /> or <Grid> and all would work.\n The overflow group only checks if the children don't fit within the height/width\n of it's container via the containerRef.\n\n *\n */\nexport const OverflowGroup = ({\n children,\n max: initMax = 0,\n childrenProps,\n onChange = identity,\n rect,\n}: OverflowGroupProps) => {\n const [ max, setMax ] = useState(isNil(rect) ? initMax : 0)\n const [ windowState, setWindowState ] = useState(EMPTY_WINDOW)\n const isLocked = useRef(false)\n const nbrChildren = Children.count(children)\n\n const updateMax = () => {\n if (!rect) return\n\n if (\n rect.scrollHeight <= rect.clientHeight &&\n rect.scrollWidth <= rect.clientWidth &&\n max < nbrChildren &&\n !isLocked.current &&\n max < initMax\n ) {\n setMax(inc)\n }\n\n if (\n rect.scrollHeight > rect.clientHeight ||\n rect.scrollWidth > rect.clientWidth\n ) {\n setMax(dec)\n isLocked.current = true\n }\n }\n\n const rectDependency = defaultTo(EMPTY_RECT, rect) as HTMLElement\n useEffect(updateMax, [\n rectDependency.clientWidth,\n rectDependency.clientHeight,\n nbrChildren,\n max,\n windowState.innerHeight,\n windowState.innerHeight,\n initMax,\n ])\n\n useEffect(() => {\n isLocked.current = false\n }, [ rectDependency.clientHeight, rectDependency.clientWidth ])\n\n const handleResize = () => {\n setTimeout(() => {\n isLocked.current = false\n setWindowState({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n })\n }, 200)\n }\n\n useEffect(() => {\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n useEffect(() => {\n const nbrRemainingChildren = positiveOrZero(nbrChildren - max)\n onChange(nbrRemainingChildren)\n }, [ max, nbrChildren ])\n\n const shownChildren = take(\n max,\n getChildrenWithProps(children, defaultTo({}, childrenProps))\n )\n\n return <>{ shownChildren }</>\n}\n","import { useState } from 'react'\n\nexport const useOverflowGroup = () => {\n const [ rect, setRect ] = useState<HTMLDivElement | null>(null)\n const containerRef = (node: any) => {\n if (node) {\n setRect(node)\n }\n }\n\n return { rect, containerRef }\n}\n","import React, { useState } from 'react'\nimport { HStack } from '../stack'\nimport { AvatarGroupProps } from './types'\nimport { Small } from '../typography'\nimport { OverflowGroup } from '../overflow-group'\nimport { getChildrenWithProps } from '../../utils'\n\n/**\n * Used to display a group of users\n * @see Avatar\n * @see {@link https://northlight.dev/reference/avatar-group}\n *\n * @example (Example)\n * (?\n * <AvatarGroup max={ 3 }>\n {[1, 2, 3, 4, 5].map((i) => (\n <Avatar\n name=\"Darth Vader\"\n image=\"/vader.png\"\n size=\"sm\"\n variant=\"rounded\"\n key={ i }\n />\n )) }\n</AvatarGroup>\n * ?)\n *\n */\nexport const AvatarGroup = ({\n children,\n max = Infinity,\n spacing = '-4',\n ...rest\n}: AvatarGroupProps) => {\n const [ nbrRemainingAvatars, setNbrRemainingAvatars ] = useState(0)\n const childrenWithMargin = getChildrenWithProps(\n children,\n { ml: spacing },\n (_child, idx) => idx > 0\n )\n\n return (\n <HStack bgColor=\"background.default\" { ...rest }>\n <HStack spacing={ 0 }>\n <OverflowGroup max={ max } onChange={ setNbrRemainingAvatars }>\n { childrenWithMargin }\n </OverflowGroup>\n </HStack>\n { nbrRemainingAvatars > 0 && (\n <Small sx={ { color: 'brand' } }>\n +{ nbrRemainingAvatars }\n </Small>\n ) }\n </HStack>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { Badge as ChakraBadge } from '@chakra-ui/react'\nimport { MediatoolLogoSolid } from '@northlight/icons'\nimport * as NorthlightIcons from '@northlight/icons'\nimport { useCurrentTheme } from '../../utils'\nimport { BadgeProps } from './types'\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\n\n/**\n * Badges are used to highlight an item's status for quick recognition.\n * @see Tag\n * @see {@link https://northlight.dev/reference/badge}\n *\n * @example\n * (?\n * +\n * const colors = [\"gray\", \"mediatoolBlue\", \"blue\", \"red\", \"green\",\n * \"orange\", \"yellow\", \"teal\", \"purple\", \"pink\"]\n * const variants = [\"solid\", \"outline\", \"subtle\", \"ghost\"]\n *\n * const Example = () => (\n * <Stack>\n * {colors.map((color, i) => (\n * <HStack spacing={4} key={i}>\n * {variants.map((variant) => (\n * <Badge\n * colorScheme={color}\n * variant={variant}\n * iconPosition=\"left\"\n * withIcon\n * >\n * {variant} Badge\n * </Badge>\n * ))}\n * </HStack>\n * ))}\n * </Stack>\n * )\n * render(<Example />)\n * ?)\n */\n\nexport const Badge = forwardRef<HTMLDivElement, BadgeProps>((props, ref) => {\n const {\n children,\n withIcon,\n iconPosition = 'left',\n iconAs,\n ...rest\n } = props\n\n const IconComponent = iconAs ? NorthlightIcons[iconAs] : MediatoolLogoSolid\n const currentTheme = useCurrentTheme()\n\n return (\n <ChakraBadge ref={ ref } currentTheme={ currentTheme } { ...rest }>\n <Flex align=\"center\" gap=\"1\">\n { withIcon && iconPosition === 'left' && IconComponent && (\n <Icon as={ IconComponent } boxSize=\"3\" />\n ) }\n { children }\n { withIcon && iconPosition === 'right' && IconComponent && (\n <Icon as={ IconComponent } boxSize=\"3\" />\n ) }\n </Flex>\n </ChakraBadge>\n )\n})\n","import React from 'react'\nimport { useStyleConfig } from '@chakra-ui/react'\nimport { Box } from '../box'\nimport { BlinkerProps } from './types'\n\n/**\n * Status indicator of some sorts\n * @see {@link https://northlight.dev/reference/blinker}\n *\n * @example (Example)\n * (?\n * <Box p=\"4\">\n * <Blinker color=\"bg.brand.default\" />\n * </Box>\n * ?)\n */\nexport const Blinker = ({\n color = '',\n size,\n isBlinking = true,\n ...rest\n}: BlinkerProps) => {\n const styles = useStyleConfig('Blinker', { color, size, isBlinking })\n\n return <Box sx={ styles } data-testid=\"blinker-test-id\" { ...rest } />\n}\n","import React from 'react'\nimport { Spinner as ChakraSpinner } from '@chakra-ui/react'\nimport { SpinnerProps } from './types'\n\n/**\n * Loading indicator\n * @see {@link https://northlight.dev/reference/spinner }\n * @example\n * (? <Spinner /> ?)\n */\nexport const Spinner = (({\n ...rest\n}: SpinnerProps) => (\n <ChakraSpinner { ...rest } />\n))\n","import React, { forwardRef } from 'react'\nimport { Button as ChakraButton } from '@chakra-ui/react'\nimport { Spinner } from '../spinner'\nimport { ButtonProps } from './types'\n\nconst SpinnerSizeMap = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n}\n\n/**\n * @see {@link https://northlight.dev/reference/button}\n *\n * @example\n * (?\n <Button\n variant=\"success\"\n leftIcon={ <Icon as={ FolderCheckDuo } /> }\n rightIcon={ <Icon as={ PlusDuo } /> }\n >\n Create folder\n </Button>\n * ?)\n *\n * @example\n * ### Use the `isLoading` prop to show a loading spinner\n * (?\n <Button\n variant=\"success\"\n isLoading={ true }\n loadingText=\"Creating folder...\"\n >\n Create folder\n </Button>\n * ?)\n *\n * @example\n * ### Also use the `spinner` prop to show a custom spinner\n * (?\n <Button\n variant=\"success\"\n isLoading={ true }\n loadingText=\"Creating folder...\"\n spinner={ <Spinner color=\"text.success\" /> }\n >\n Creating folder\n </Button>\n * ?)\n *\n * @example (Example)\n * (?\n * +\n * const variants = ['link', 'success', 'default', 'danger', 'brand', 'accent',\n * 'ghost', 'ai', 'outline', 'brandSubdued', 'solid']\n *\n * const ExampleButton = () => {\n * const [currentVariant, setCurrentVariant ] = useState(0)\n * const [ isLoading, setIsLoading ] = useState(false)\n *\n * const handleClick = () => {\n * setIsLoading(true)\n * setTimeout(() => {\n * setCurrentVariant((prev) => prev === variants.length - 1 ? 0 : prev + 1)\n * setIsLoading(false)\n * }, 300)\n *\n * }\n *\n * return (\n * <Button variant={variants[currentVariant]}\n * isLoading={isLoading} onClick={handleClick} loadingText=\"Saving...\">\n * Save changes\n * </Button>\n * )\n *\n * }\n *\n * render(<ExampleButton/>)\n * ?)\n *\n * @example (Example)\n * Use LinkOverlay to turn the button into a link\n *\n * (?\n * <LinkBox>\n * <LinkOverlay as={NavLink} to=\"/\" />\n * <Button variant=\"link\">Go to home page</Button>\n * </LinkBox>\n * ?)\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>((\n { variant = 'default', children, size = 'md', ...rest },\n ref\n) => (\n <ChakraButton\n variant={ variant }\n ref={ ref }\n size={ size }\n spinner={ (\n <Spinner\n size={ SpinnerSizeMap[size] }\n />\n ) }\n { ...rest }\n >\n { children }\n </ChakraButton>\n)\n)\n","import React from 'react'\nimport { Checkbox as ChakraCheckbox } from '@chakra-ui/react'\nimport { CheckboxProps } from './types'\n\n/**\n * @see CheckboxField\n * @see {@link https://northlight.dev/reference/checkbox}\n *\n * @example (Example)\n * Mainly used for forms, however this component is controlled by\n * a value prop and an onChange callback\n *\n * (?\n * +\n * const MyForm = () => {\n * const [ isVegan, setIsVegan ] = useState(false)\n *\n * return (\n * <Stack p=\"2\">\n * <Label size=\"sm\" htmlFor=\"vegan-checkbox\">Are you vegan</Label>\n * <Checkbox name=\"vegan-checkbox\" onChange={() => setIsVegan((prev) => !prev)} value={isVegan} />\n * </Stack>\n *\n * )\n * }\n *\n * render(<MyForm />)\n *\n * ?)\n *\n */\nexport const Checkbox = ({\n value,\n onChange,\n name,\n size = 'md',\n variant = 'default',\n ...rest\n}: CheckboxProps) => {\n const controlledValue = typeof value === 'boolean'\n ? { isChecked: value }\n : { value }\n\n return (\n <ChakraCheckbox\n size={ size }\n id={ name }\n onChange={ onChange }\n variant={ variant }\n { ...controlledValue }\n { ...rest }\n />\n )\n}\n","import { forEach, identity, is, keys, trim, values } from 'ramda'\nimport { FieldValues } from 'react-hook-form'\n\nconst shouldTrim = (value: any): ((object: FieldValues) => FieldValues) =>\n (is(Array, value) ? values : identity)\n\nexport const trimFormValues = <T extends FieldValues>(obj: FieldValues) => {\n const newObj: FieldValues = obj\n forEach((property) => {\n const value = obj[property]\n if (is(Object, value)) {\n const format = shouldTrim(value)\n newObj[property] = format(trimFormValues(value as FieldValues))\n }\n if (is(String, value)) {\n newObj[property] = trim(value as string)\n }\n }, keys(obj))\n return newObj as T\n}\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'\nimport {\n DefaultValues,\n FieldValues,\n FormProvider,\n Resolver,\n UseFormReturn,\n useForm,\n} from 'react-hook-form'\nimport { always, equals } from 'ramda'\nimport { joiResolver } from '@hookform/resolvers/joi'\nimport { FormProps } from './types'\nimport { trimFormValues } from './trim-form-values'\n\n/**\n * The context provider for handling state of components wrapped in field\n * @see Field\n * @see {@link https://northlight.dev/reference/form}\n *\n * @example (Example)\n * ## Basic\n * (?\n * <Form initialValues={{name: ''}} onSubmit={console.log}>\n * <TextField name=\"name\" label=\"What is your name\" />\n * </Form>\n * ?)\n *\n * @example (Example)\n * ## With form methods\n * The form context provider passes down a lot of methods for handling state\n * (?\n * <Form initialValues={{name: ''}}>\n * {({watch, reset }) => (\n * <Stack>\n * <TextField name=\"name\" label=\"What is your name?\"/>\n * <Button variant=\"danger\" onClick={() => reset({})}>Reset</Button>\n * <Code>{JSON.stringify(watch(), null, 2)}</Code>\n * </Stack>\n * )}\n *\n * </Form>\n * ?)\n * You can view more form methods on the **<a href=\"https://react-hook-form.com/api/useform/\" target=\"_blank\">react hook form docs</a>**\n * (everything that the useForm hooks returns)\n *\n * @example (Example)\n * ## Validation with joi\n *\n * You can pass on validation either by using a custom validate\n * function, by passing html validation directly on a field, or by\n * using joi schema. joi schema is recommended when possible.\n *\n * (?\n * +\n\nconst joiSchema = Joi.object({\n username: Joi.string().alphanum().min(3).max(30).required(),\n password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(),\n});\n\n * const MyForm = () => (\n <Form initialValues={{name: ''}} joiSchema={joiSchema}>\n <Stack>\n <TextField name=\"username\" label=\"User Name\"/>\n <TextField name=\"password\" label=\"Password\" />\n </Stack>\n </Form>\n )\n *\n * render(<MyForm />)\n * ?)\n *\n * @example (Example)\n * ## Moving the form state outside of Form\n * (?\n\n//This code could live in the backend\nconst submitValuesToBackend = (values) => {\n console.log({values})\n if(values.firstName !== 'Steve') {\n throw Error('We only allow people named Steve \\;\\)')\n }\n}\nconst MyForm = () => (\n<Form\n initialValues={ { firstName: '' } }\n onSubmit={ async (values, methods) => {\n try {\n await submitValuesToBackend(values)\n }\n catch (err) {\n methods.setError('firstName', { message: err.message })\n }\n } }\n>\n <HStack alignItems=\"end\" p=\"3\">\n <TextField\n name=\"firstName\"\n label=\"First Name\"\n isRequired={ true }\n />\n <Button type=\"submit\" variant=\"success\">Validate</Button>\n </HStack>\n</Form>\n\n )\n\nrender(<MyForm />)\n\n * ?)\n\n@example (Example)\n## Using a ref\nYou can move up the form state using a ref as well\n(?\n() => {\n const methods = useRef(null)\n\n return (\n <Stack>\n <Form\n ref={methods}\n initialValues={{name: ''}}\n >\n <TextField name=\"name\" label=\"What is your name?\" />\n </Form>\n <Button onClick={() => methods.current.reset({name: (Math.round(Math.random() * 100))})}>\n Get random number\n </Button>\n </Stack>\n\n )\n\n}\n?)\n\n */\nexport const Form = forwardRef(<FormValues extends FieldValues>({\n initialValues,\n onSubmit,\n children,\n validate,\n formSettings = { mode: 'onChange' },\n methods = undefined,\n enableReinitialize = false,\n shouldTrim = true,\n innerFormStyle = {},\n joiSchema,\n ...rest\n}: FormProps<FormValues>, ref: React.Ref<UseFormReturn<FormValues>>) => {\n const customResolver: Resolver<FormValues, any> = (\n values,\n _context,\n _options\n ) => ({\n values,\n errors: validate(values),\n })\n\n const getResolver = () => {\n if (validate) return customResolver\n if (joiSchema) return joiResolver(joiSchema)\n return undefined\n }\n\n const newMethods =\n methods ||\n useForm<FormValues>({\n defaultValues: initialValues as DefaultValues<FormValues>,\n resolver: getResolver(),\n ...formSettings,\n })\n\n useImperativeHandle(ref, always(newMethods), [])\n\n if (enableReinitialize) {\n const initalValuesImage = useRef({})\n useEffect(() => {\n if (!equals(initalValuesImage.current, initialValues)) {\n newMethods?.reset(initialValues)\n initalValuesImage.current = initialValues\n }\n }, [ initialValues ])\n }\n\n const formatValues = (values: FormValues) => {\n if (!shouldTrim) {\n return values\n }\n\n return trimFormValues<FormValues>(values)\n }\n\n const handleSubmit = newMethods.formState.isValid\n ? newMethods.handleSubmit((values) =>\n onSubmit(formatValues(values), newMethods)\n )\n : (e: React.FormEvent<HTMLFormElement>) => {\n newMethods.trigger()\n e.preventDefault()\n }\n\n return (\n <FormProvider { ...newMethods } { ...rest }>\n <form style={ { width: '100%', ...innerFormStyle } } onSubmit={ handleSubmit }>\n { typeof children === 'function' ? children(newMethods) : children }\n </form>\n </FormProvider>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { FormLabelProps } from './types'\nimport { Label } from '../typography'\n\n/**\n * Renders a label, meant to be used alongside a field component\n * @see Field\n * @see {@link https://northlight.dev/reference/form-label}\n *\n */\nexport const FormLabel = forwardRef<HTMLLabelElement, FormLabelProps >(({\n children: label,\n ...rest\n}, ref) => (\n <Label\n size=\"sm\"\n sx={ {\n width: '80%',\n maxWidth: '45ch',\n marginBottom: 1,\n marginInlineEnd: 3,\n } }\n requiredIndicator={ undefined }\n { ...rest }\n ref={ ref }\n >\n { label }\n </Label>\n))\n","import React, { forwardRef } from 'react'\nimport { Controller, FieldPath, FieldValues } from 'react-hook-form'\nimport { FormControl, FormErrorMessage, FormLabel } from '../form-control'\nimport { Stack } from '../stack'\nimport { FieldProps } from './types'\nimport { useFormContext } from '../../hooks'\nimport { getFieldError } from '../../utils'\n\n/**\n * Wraps children under form context\n * @see TextField\n * @see Form\n * @see {@link https://northlight.dev/reference/field}\n *\n * @example (Example)\n * ## Input example\n * (?\n * <Form initialValues={{name: ''}}>\n * <Box p=\"2\">\n * <Field name=\"name\" label=\"Input name\">\n * {({value, onChange}) => (\n * <Input value={value} onChange={onChange} />\n * )}\n * </Field>\n * </Box>\n *\n * </Form>\n * ?)\n * <br />\n * As you can see the field component acts as a middleman to connect\n * any component to the form context, via a controlled value and onChange prop.\n * Most of the common use cases for field,\n * such as text input have been abstracted into their own components, for example _TextField_\n *\n * @example (Example)\n * ## Example with validation and form submition\n * (?\n * () => {\n * const toast = useToast()\n * const handleSubmit =(v) => {\n * toast({title: 'Sent Message', description: `\"${v.message}\"`})\n * }\n * return (\n * <Form initialValues={{message: ''}} onSubmit={handleSubmit}>\n * <Stack p=\"2\">\n * <Field\n * name=\"message\"\n * label=\"Write email\"\n * isRequired={true}\n * validate={{maxLength: {message: 'Message must be under 30 characters', value: 30}}}\n * >\n * {({value, onChange}) => (\n * <Textarea value={value} onChange={onChange} />\n * )}\n * </Field>\n * <Button type=\"submit\" variant=\"brand\">Send Message</Button>\n * </Stack>\n *\n * </Form>\n * )\n * }\n * ?)\n *\n * @example (Example)\n * ## Type-safety\n * There are multiple ways to provide types for\n * the field callback values. To ensure that each\n * component within the field receives the correct\n * value, it's essential to make the field aware\n * of the form state values. When the Field component\n * does not receive any types, the \"value\" callback\n * argument will have the type of \"any\".\n * <br /><br />\n * ### Passing down the control prop (Recommended)\n * (?\n * <Form initialValues={{username: 'Alex'}}>\n * {\n * ({ control }) => {\n * <Box p=\"2\">\n * <Field name=\"username\" label=\"Input name\" control={ control }>\n * {({value, onChange}) => ( // \"value\" has type of \"string\"\n * <Input value={value} onChange={onChange} />\n * )}\n * </Field>\n * </Box>\n * }\n * }\n * </Form>\n * ?)\n * <br /><br />\n * ### Specifying generic arguments\n * You can also specify generic arguments on the Field\n * component to ensure that \"value\" has a valid type.\n * The passed generic type combined with the valid\n * \"name\" property ensures that \"value\" has the expected\n * type received from the generic type:\n * `<Field<MyFormBody> name=\"username\">...</Field>`\n */\n\nconst BaseField = <\n FormValues extends FieldValues = FieldValues,\n FieldName extends FieldPath<FormValues> = FieldPath<FormValues>\n> ({\n name,\n label,\n children,\n direction = 'column',\n isRequired = false,\n noLabelConnection = false,\n validate,\n control: passedControl,\n ...rest\n }: FieldProps<FormValues, FieldName>, ref: React.Ref<HTMLDivElement>) => {\n const methods = useFormContext<FormValues>()\n const { formState: { errors } } = methods\n const control = passedControl ?? methods.control\n\n const fieldError = getFieldError<FormValues>(name, errors)\n\n return (\n <FormControl isInvalid={ !!fieldError } isRequired={ isRequired } ref={ ref }>\n <Stack\n spacing=\"auto\"\n direction={ direction }\n alignItems={ direction === 'column' ? 'stretch' : 'center' }\n { ...rest }\n >\n { label && (\n <FormLabel htmlFor={ noLabelConnection ? undefined : name } mb={ 1 }>\n { label }\n </FormLabel>\n ) }\n <Controller\n name={ name }\n control={ control }\n rules={ validate }\n render={ ({ field }) => children(field, methods) }\n />\n </Stack>\n <FormErrorMessage>\n { fieldError && (fieldError?.message as string) }\n </FormErrorMessage>\n </FormControl>\n )\n}\n\nexport const Field = forwardRef(BaseField)\n","import { useFormContext } from '../../hooks'\nimport { SetValueOptionsType } from './types'\n\nexport const useSetValueRefreshed = () => {\n const { setValue, watch } = useFormContext()\n\n const setValueRefreshed = (name: any, value: any, options: SetValueOptionsType) => {\n watch(name)\n setValue(name, value, options)\n }\n return setValueRefreshed\n}\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { CheckboxFieldProps } from './types'\nimport { Field } from '../form'\nimport { Checkbox } from './checkbox'\nimport { Box } from '../box'\nimport { Label } from '../typography'\nimport { Flex } from '../flex'\n\n/**\n * The checkbox component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see Checkbox\n * @see {@link https://northlight.dev/reference/checkbox-field}\n * @example (Example)\n * ## Basic\n * (?\n * <Form initialValues={{name: ''}}>\n * <CheckboxField\n * name=\"terms\"\n * label=\"I agree to the Terms & Conditions\"\n * labelPlacement=\"left\"\n * labelSize=\"md\"\n * />\n * </Form>\n * ?)\n *\n */\n\nexport const CheckboxField = forwardRef<HTMLDivElement, CheckboxFieldProps>(({\n name,\n label,\n variant,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n direction = 'row',\n labelPlacement = 'left',\n labelSize = 'md',\n ...rest\n}, ref) => (\n <Box\n w={ label ? 'full' : 'fit-content' }\n display=\"inline-flex\"\n >\n <Field\n name={ name }\n label=\"\"\n isRequired={ isRequired }\n direction={ direction }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <Flex\n gap={ 2 }\n direction={ labelPlacement === 'left' ? 'row-reverse' : 'row' }\n >\n <Checkbox\n name={ name }\n onChange={ (e) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n variant={ variant }\n data-testid=\"checkbox-field-test-id\"\n { ...rest }\n />\n <Label htmlFor={ name } sx={ { fontWeight: 'normal' } } size={ labelSize }>{ label }</Label>\n </Flex>\n ) }\n </Field>\n </Box>\n))\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { CheckboxGroup } from '@chakra-ui/react'\nimport { Field } from '../form'\nimport { Box } from '../box'\nimport { CheckboxFieldGroupProps } from './types'\n\n/**\n * The checkbox group component wrapped in a <Field />\n * meant to be used only inside <Form /> together with Checkbox\n * @see Checkbox\n * @see {@link https://northlight.dev/reference/checkbox-group-field}\n *\n */\nexport const CheckboxGroupField = forwardRef<HTMLDivElement, CheckboxFieldGroupProps>(({\n name,\n label,\n children,\n isRequired,\n direction,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}, ref) => (\n <Box w={ label ? 'full' : 'fit-content' }>\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n validate={ validate }\n direction={ direction }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <CheckboxGroup\n onChange={ (e) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n data-testid=\"checkbox-group-field-test-id\"\n { ...rest }\n >\n { children }\n </CheckboxGroup>\n ) }\n </Field>\n </Box>\n))\n","import React, { cloneElement, forwardRef } from 'react'\nimport { IconButton as ChakraIconButton } from '@chakra-ui/react'\nimport { IconButtonProps } from './types'\n\n/**\n * A normal button but renders an icon instead of text\n * @see Button\n * @see Icon\n * @see {@link https://northlight.dev/reference/icon-button}\n *\n * @example (Example)\n * (?\n * <IconButton variant='brand' icon={<Icon as={UsersDuo} />} onClick={console.log}/>\n * ?)\n *\n * @example (Example)\n * (?\n <IconButton\n isRound={ true }\n aria-label=\"create\"\n variant=\"success\"\n icon={ <Icon as={ PlusSolid } /> }\n />\n * ?)\n *\n */\nexport const IconButton = forwardRef(({\n variant = 'default',\n icon,\n 'aria-label': ariaLabel,\n children,\n ...rest\n}: IconButtonProps, ref: any) => {\n const IconComponent = icon ?? children as JSX.Element\n const IconWithSize = cloneElement(IconComponent, { size: IconComponent.props.size ?? rest.size })\n return (\n <ChakraIconButton\n variant={ variant }\n icon={ IconWithSize }\n aria-label={ ariaLabel }\n ref={ ref }\n { ...rest }\n />\n )\n})\n","import { getShades } from '../../utils'\n\nexport const columns = 5\nexport const paletteColors = getShades(100, 500)\nexport const defaultColors = getShades(500)\n","import React, { forwardRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { CheckDuo } from '@northlight/icons'\nimport { getContrastColor } from '../../utils'\nimport { Icon } from '../icon'\nimport { IconButton } from '../icon-button'\nimport { Box } from '../box'\nimport { ColorButtonProps } from './types'\nimport { columns } from './constants'\nimport { useArrowFocus } from '../../hooks'\n\nexport const ColorButton = forwardRef(({\n color,\n onClick,\n size,\n selected = false,\n}: ColorButtonProps, ref: any) => {\n if (!color) return <Box />\n const { defaultArrows, focusPrevious, focusNext } = useArrowFocus(columns)\n\n const onKeyDown = (e: any) => {\n switch (e.key) {\n case 'PageUp':\n e.preventDefault()\n focusPrevious({ wrap: false, repeat: columns * 5 })\n break\n case 'PageDown':\n e.preventDefault()\n focusNext({ wrap: false, repeat: columns * 5 })\n break\n default:\n defaultArrows(e)\n break\n }\n }\n\n const { colorButton } = useMultiStyleConfig('ColorPicker', { size })\n\n return (\n <IconButton\n bg={ color }\n ref={ ref }\n onKeyDown={ onKeyDown }\n aria-label={ `select-${color}` }\n onClick={ onClick }\n sx={ colorButton }\n icon={ <Icon as={ CheckDuo } boxSize={ selected ? undefined : '0' } /> }\n color={ getContrastColor(color) }\n />\n )\n})\n","import React from 'react'\nimport { Popover as ChakraPopover, PopoverProps } from '@chakra-ui/react'\n\nexport const Popover = (props: PopoverProps) => (\n <ChakraPopover isLazy={ true } { ...props } />\n)\n","import React from 'react'\nimport { ChevronDownDuo, ChevronUpDuo } from '@northlight/icons'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { columns } from './constants'\nimport { ColorsExpandButtonProps } from './types'\nimport { useArrowFocus } from '../../hooks'\n\nexport const ColorsExpandButton = ({\n onClick,\n size,\n expanded,\n}: ColorsExpandButtonProps) => {\n const { defaultArrows, focusPrevious, focusFirst } = useArrowFocus(columns)\n const { colorButton } = useMultiStyleConfig('ColorPicker', { size })\n const onKeyDown = (e: any) => {\n switch (e.key) {\n case 'Tab':\n focusFirst()\n break\n case 'ArrowUp':\n e.preventDefault()\n focusPrevious({ wrap: true, repeat: 1 })\n break\n case 'PageUp':\n e.preventDefault()\n focusPrevious({ wrap: false, repeat: columns * 5 })\n break\n default:\n defaultArrows(e)\n break\n }\n }\n\n return (\n <IconButton\n variant=\"ghost\"\n onKeyDown={ onKeyDown }\n aria-label=\"display more colors\"\n onClick={ onClick }\n sx={ colorButton }\n >\n <Icon as={ expanded ? ChevronUpDuo : ChevronDownDuo } />\n </IconButton>\n )\n}\n","import { Portal, PortalProps } from '@chakra-ui/react'\nimport React from 'react'\n\ninterface RenderInPortalProps extends PortalProps {\n shouldRenderInPortal: boolean\n children: JSX.Element\n}\n\nexport const RenderInPortal =\n ({ shouldRenderInPortal, children, ...rest }: RenderInPortalProps) => {\n if (!shouldRenderInPortal) return children\n return (\n <Portal { ...rest }>\n { children }\n </Portal>\n )\n }\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ColorsDuo } from '@northlight/icons'\nimport { FocusScope } from '@react-aria/focus'\nimport { useMultiStyleConfig, useToken } from '@chakra-ui/react'\nimport { useBoolean, useDisclosure } from '../../hooks'\nimport { SimpleGrid } from '../simple-grid'\nimport { Stack } from '../stack'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { Box } from '../box'\nimport { ColorPickerProps } from './types'\nimport { ColorButton } from './color-button'\nimport { columns, defaultColors, paletteColors } from './constants'\nimport {\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverHeader,\n PopoverTrigger,\n} from '../popover'\nimport { ColorsExpandButton } from './colors-expand-button'\nimport { Button } from '../button'\nimport { RenderInPortal } from '../portal/render-in-portal'\n\n/**\n * Dropdown menu where user can select hex value\n * from set colors\n * @see {@link https://northlight.dev/reference/color-picker}\n *\n * @example (Example)\n * ##Pick a color for this campaign\n * (?\n * () => {\n * const [ color, setColor ] = useState(undefined)\n * return (\n * <HStack>\n * <ColorPicker color={color} onChange={setColor}/>\n * <ClipboardInput value={ color } />\n\n * </HStack>\n * )\n * }\n *\n * ?)\n *\n *\n */\nexport const ColorPicker = ({\n onChange = () => {},\n clearable = false,\n colors = defaultColors,\n expandedColors = paletteColors,\n value = null,\n name,\n size = 'md',\n shouldRenderInPortal = false,\n popoverProps,\n ...rest\n}: ColorPickerProps) => {\n const { isOpen, onToggle, onClose } = useDisclosure()\n const [ expanded, setExpanded ] = useBoolean()\n const [ selectedColor, setSelectedColor ] = useState(value)\n const [ visibleColors, setVisibleColors ] = useState(colors)\n const initialFocusRef = useRef(null)\n const {\n trigger,\n heading,\n } = useMultiStyleConfig('ColorPicker', { selectedColor, size })\n const parsedValue = value && useToken('colors', value)\n\n const baseColors = [ ...colors ]\n for (let i = 0; i < baseColors.length % columns; i += 1) {\n baseColors.push('')\n }\n\n useEffect(() => {\n if (value === '') {\n setSelectedColor(null)\n } else {\n setSelectedColor(parsedValue)\n }\n }, [ value ])\n\n useEffect(() => {\n if (expanded) {\n setVisibleColors((prev) => prev.concat(expandedColors))\n } else {\n setVisibleColors(baseColors)\n }\n }, [ expanded ])\n\n const expandColors = () => {\n setExpanded.toggle()\n }\n\n const getNumberOfColumns = () => {\n if (expanded) return columns\n if (colors.length < columns && colors.length > 2) {\n return colors.length\n }\n if (colors.length < columns) {\n return 3\n }\n return columns\n }\n\n const shouldBeFocused = (index: number) => (\n selectedColor\n ? index === visibleColors.findIndex((colorVal) => colorVal === selectedColor)\n : index === 0\n )\n\n const handleSelect = (color: string) => {\n onToggle()\n setSelectedColor(color)\n onChange(color)\n }\n\n const clearSelection = () => {\n setSelectedColor(null)\n onChange(null)\n }\n\n return (\n <Box data-testid=\"color-picker-test-id\">\n <Popover\n isOpen={ isOpen }\n onClose={ onClose }\n initialFocusRef={ initialFocusRef }\n { ...popoverProps }\n >\n <PopoverTrigger>\n <IconButton\n onClick={ onToggle }\n aria-label={ name || 'color picker' }\n name={ name }\n sx={ trigger }\n size={ size }\n icon={ <Icon as={ ColorsDuo } /> }\n { ...rest }\n />\n </PopoverTrigger>\n <RenderInPortal shouldRenderInPortal={ shouldRenderInPortal }>\n <PopoverContent w=\"auto\" boxShadow=\"md\" p={ 2 } bgColor=\"background.default\">\n <Stack>\n <PopoverHeader\n color=\"text.default\"\n sx={ heading }\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n width=\"full\"\n >\n Pick a color\n { clearable && trigger.color !== 'unset' && (\n <Button\n size=\"sm\"\n h=\"5\"\n onClick={ clearSelection }\n variant=\"ghost\"\n >\n Clear\n </Button>\n ) }\n </PopoverHeader>\n <PopoverBody p={ 0 }>\n <Stack alignItems=\"center\" p={ 0 } spacing={ 0 }>\n <FocusScope>\n <SimpleGrid\n columns={ getNumberOfColumns() }\n spacing={ 2 }\n overflowY=\"scroll\"\n maxH={ 72 }\n pr={ 2 }\n pl={ 4 }\n py={ 1 }\n >\n { visibleColors.map((color, index) => (\n <ColorButton\n color={ color }\n key={ `${color}-button-${index as number}` }\n selected={ color === selectedColor }\n ref={ shouldBeFocused(index) ? initialFocusRef : undefined }\n size={ size }\n onClick={ () => handleSelect(color) }\n />\n )) }\n </SimpleGrid>\n { expandedColors.length > 0 && (\n <ColorsExpandButton\n onClick={ expandColors }\n expanded={ expanded }\n size={ size }\n />\n ) }\n </FocusScope>\n </Stack>\n </PopoverBody>\n </Stack>\n </PopoverContent>\n </RenderInPortal>\n </Popover>\n </Box>\n )\n}\n","import React from 'react'\nimport { Field } from '../form'\nimport { ColorPicker } from './color-picker'\nimport { ColorPickerFieldProps } from './types'\n\n/**\n * The <ColorPicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see ColorPicker\n * @see {@link https://northlight.dev/reference/color-picker}\n *\n */\nexport const ColorPickerField = ({\n name,\n label,\n direction,\n isRequired,\n validate,\n ...rest\n}: ColorPickerFieldProps) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ onChange, value }) => (\n <ColorPicker\n name={ name }\n onChange={ onChange }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n)\n","import { DOMAttributes, createContext } from 'react'\nimport { RadioGroupProps, RadioGroupState, useRadioGroupState } from '@react-stately/radio'\nimport { CheckboxGroupProps, CheckboxGroupState, useCheckboxGroupState } from '@react-stately/checkbox'\nimport { AriaCheckboxGroupProps, useCheckboxGroup } from '@react-aria/checkbox'\nimport { AriaRadioGroupProps, useRadioGroup } from '@react-aria/radio'\nimport { FlipButtonGroupProps } from './types'\n\nexport const FlipButtonContext = createContext<CheckboxGroupState | RadioGroupState | null>(null)\n\nexport const useFlipButtonState = (\n props: FlipButtonGroupProps,\n isMulti: boolean\n) => (\n isMulti\n ? useCheckboxGroupState(props as CheckboxGroupProps)\n : useRadioGroupState(props as RadioGroupProps)\n)\n\nexport const useFlipButtonGroup = (\n props: FlipButtonGroupProps,\n state: CheckboxGroupState | RadioGroupState,\n isMulti: boolean\n): DOMAttributes<Element> => {\n const propsWithLabel = {\n ...props,\n 'aria-label': `${isMulti ? 'Checkbox' : 'Radio'}-button-group`,\n }\n\n return (isMulti\n ? useCheckboxGroup(\n propsWithLabel as AriaCheckboxGroupProps,\n state as CheckboxGroupState\n ).groupProps\n : useRadioGroup(\n propsWithLabel as AriaRadioGroupProps,\n state as RadioGroupState\n ).radioGroupProps\n )\n}\n\nexport const useFlipButton = (props: FlipButtonGroupProps, isMulti: boolean) => {\n const state = useFlipButtonState(props, isMulti)\n const flipButtonGroupProps = useFlipButtonGroup(props, state, isMulti)\n return { state, flipButtonGroupProps }\n}\n","import React, { forwardRef, useContext, useRef } from 'react'\nimport { CheckSolid } from '@northlight/icons'\nimport { useCheckboxGroupItem } from '@react-aria/checkbox'\nimport { SlideFade, useMultiStyleConfig } from '@chakra-ui/react'\nimport { useRadio } from '@react-aria/radio'\nimport { useFocusRing } from '@react-aria/focus'\nimport { mergeAll, omit } from 'ramda'\nimport { CheckboxGroupState } from '@react-stately/checkbox'\nimport { RadioGroupState } from '@react-stately/radio'\nimport { mergeProps } from '@react-aria/utils'\nimport { FlipButtonContext } from './utils'\nimport { HStack } from '../stack'\nimport { Icon } from '../icon'\nimport { Text } from '../text'\nimport { CustomContainerPropsType, CustomFlipButtonPropsType, FlipButtonProps } from './types'\n\n/**\n * Meant to act as a middleman to turn any component into\n * either a radio or checkbox input\n * where the user can choose between multiple options\n * @see CheckboxGroup\n * @see RadioGroup\n * @see FlipButtonGroup\n * @see {@link https://northlight.dev/reference/flip-button}\n *\n * @example (Example)\n * ### It must always be wrapped in a group\n * (?\n * <FlipButton />\n * ?)\n * Or it will throw an error\n *\n *\n * @example (Example)\n * ### As a radio button group\n * (?\n *<FlipButtonGroup isMulti={ false } size=\"sm\">\n <FlipButton value=\"one\" icon={AgencyDuo}>One</FlipButton>\n <FlipButton value=\"two\" icon={StagesDuo}>Two</FlipButton>\n <FlipButton value=\"three\" icon={Flag04Duo}>Three</FlipButton>\n</FlipButtonGroup>\n * ?)\n *\n * @example (Example)\n * ### As a checkbox button group\n * (?\n *<FlipButtonGroup isMulti={ true } size=\"sm\">\n <FlipButton value=\"one\" icon={TagsStackDuo}>One</FlipButton>\n <FlipButton value=\"two\" icon={Image03Duo}>Two</FlipButton>\n <FlipButton value=\"three\" icon={TagDuo }>Three</FlipButton>\n</FlipButtonGroup>\n * ?)\n *\n * @example (Example)\n * ###Custom Flip Button\n * (?\n * +\n * const customElement = ({\n flipButtonProps,\n containerProps,\n isSelected,\n label,\n value,\n}) => (\n <HStack\n { ...containerProps }\n spacing=\"4\"\n _checked={ { bgColor: 'blue.500', color: 'text.inverted' } }\n borderRadius=\"md\"\n p=\"2\"\n >\n <input { ...flipButtonProps } />\n <Icon as={ UsersDuo } />\n <Stack spacing=\"0\">\n <Text>{ label }</Text>\n <Text color={ isSelected ? 'text.inverted' : 'gray.200' }>\n { value === 'public'\n ? 'Everyone can view and edit the plan'\n : 'The plan is only visible to you'\n }\n </Text>\n </Stack>\n </HStack>\n)\n\nconst MyComponent = () => (\n<FlipButtonGroup direction=\"column\" sx={{bgColor: 'transparent'}}>\n <FlipButton value=\"public\" label=\"Public\">\n { customElement }\n </FlipButton>\n <FlipButton value=\"private\" label=\"Private\">\n { customElement }\n </FlipButton>\n</FlipButtonGroup>\n\n)\nrender(<MyComponent/>)\n *\n * ?)\n *\n */\nexport const FlipButton = forwardRef<HTMLDivElement, FlipButtonProps>((props, wrapperRef) => {\n const {\n children,\n size,\n variant,\n isMulti,\n isDisabled = false,\n icon,\n value,\n iconPlacement = 'left',\n ...rest\n } = props\n const state = useContext(FlipButtonContext)\n const ref = useRef(null)\n\n const propsWithoutChildren = omit([ 'children' ], { ...props, 'aria-label': `${isMulti ? 'Checkbox' : 'Radio'}-input for ${value}` })\n const { inputProps } = isMulti\n ? useCheckboxGroupItem(propsWithoutChildren, state as CheckboxGroupState, ref)\n : useRadio(propsWithoutChildren, state as RadioGroupState, ref)\n\n const { button, buttonIcon } = useMultiStyleConfig('FlipButton', { size, variant })\n const { focusProps, isFocusVisible: isFocused } = useFocusRing()\n const focusStyles = {\n outline: 'none',\n ring: '2px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n }\n const focusRing = isFocused ? focusStyles : {}\n\n const isSelected = isMulti\n ? (state as CheckboxGroupState).isSelected(value)\n : (state as RadioGroupState).selectedValue === value\n\n const flipButtonProps: CustomFlipButtonPropsType = {\n ...mergeProps(inputProps, focusProps),\n ref,\n style: { opacity: '0', width: '0', height: '0' },\n 'aria-label': isMulti ? 'Checkbox-input' : 'Radio-input',\n }\n\n const containerProps: CustomContainerPropsType = {\n 'aria-checked': isSelected,\n 'aria-disabled': isDisabled,\n sx: focusRing,\n as: 'label',\n cursor: 'pointer',\n }\n\n return typeof children === 'function'\n ? children({\n state,\n containerProps,\n flipButtonProps,\n isFocused,\n isSelected,\n isDisabled,\n isMulti: isMulti || false,\n focusRing,\n value,\n ...rest,\n })\n : (\n <HStack\n spacing={ (isSelected && iconPlacement !== 'none') || icon ? 2 : 0 }\n sx={ mergeAll([ button, isFocused ? focusStyles : {}, { flexDirection: iconPlacement === 'left' ? 'row' : 'row-reverse' } ]) }\n aria-checked={ isSelected }\n aria-disabled={ isDisabled }\n as=\"label\"\n ref={ wrapperRef }\n >\n <input { ...flipButtonProps } />\n { icon && iconPlacement !== 'none'\n ? (\n <Icon as={ icon || CheckSolid } sx={ buttonIcon } />\n ) : isSelected && iconPlacement !== 'none' && (\n <SlideFade in={ isSelected }>\n <Icon as={ icon || CheckSolid } sx={ buttonIcon } />\n </SlideFade>\n ) }\n <Text textAlign=\"center\">{ children }</Text>\n </HStack>\n )\n})\n","import React, { Children, cloneElement, isValidElement } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { omit } from 'ramda'\nimport { Stack } from '../stack'\nimport { FlipButtonGroupProps } from './types'\nimport { FlipButtonContext, useFlipButton } from './utils'\n\n/**\n * Provides context to FlipButton\n * @see FlipButton\n * @see {@link https://northlight.dev/reference/flip-button-group}\n */\nexport const FlipButtonGroup = (props: FlipButtonGroupProps) => {\n const {\n isMulti = false,\n name,\n children,\n direction = 'row',\n isDisabled = false,\n iconPlacement = 'left',\n size,\n variant,\n icon,\n sx = {},\n ...rest\n } = props\n\n const { state, flipButtonGroupProps } = useFlipButton(props, isMulti)\n\n const numberOfButtons = Children.count(children)\n\n const childrenWithProps = (Children.toArray(children)).map((child: React.ReactNode) =>\n (isValidElement(child)\n ? cloneElement(child, {\n key: child.props.value,\n isMulti,\n variant,\n isDisabled,\n iconPlacement,\n icon,\n size,\n ...child.props,\n })\n : child)\n )\n\n const { container } = useMultiStyleConfig('FlipButton', {\n size,\n variant,\n numberOfButtons,\n sx,\n })\n\n const restWithoutOnChange = omit([ 'onChange' ], rest)\n\n return (\n <Stack\n { ...flipButtonGroupProps }\n direction={ direction }\n id={ name }\n spacing={ 0 }\n sx={ container }\n { ...restWithoutOnChange }\n >\n <FlipButtonContext.Provider value={ state }>\n { childrenWithProps }\n </FlipButtonContext.Provider>\n </Stack>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { Field } from '../form'\nimport { FlipButtonGroup } from './flip-button-group'\nimport { FlipButtonGroupFieldProps } from './types'\n\n/**\n * The FlipButtonGroup component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see FlipButton\n * @see {@link https://northlight.dev/reference/flip-button-group-field}\n *\n * @example (Example)\n * (?\n * <Form intitialValues={{foods: 'pizza'}}>\n <FlipButtonGroupField name=\"foods\" label=\"Select the food you enjoy most\" variant=\"brand\">\n <FlipButton value=\"pizza\">Pizza</FlipButton>\n <FlipButton value=\"hamburger\">Button</FlipButton>\n <FlipButton value=\"steak\">Steak</FlipButton>\n </FlipButtonGroupField>\n * </Form>\n *\n * ?)\n *\n */\nexport const FlipButtonGroupField = forwardRef<HTMLDivElement, FlipButtonGroupFieldProps>(({\n name,\n label,\n children,\n direction,\n isRequired,\n iconPlacement = 'left',\n onChange: onChangeCallback = identity,\n validate,\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <FlipButtonGroup\n name={ name }\n onChange={ (e) => { onChange(e); onChangeCallback(e) } }\n direction={ direction }\n value={ value }\n iconPlacement={ iconPlacement }\n { ...rest }\n >\n { children }\n </FlipButtonGroup>\n ) }\n </Field>\n))\n","import React, { forwardRef } from 'react'\nimport { Box, BoxProps } from '../box'\nimport { theme } from '../../theme'\n\nconst hoverAndActiveStyles = {\n borderLeftColor: theme.colors.border['pane-divider'].hover,\n}\n\nexport const ResizeHandle = forwardRef<HTMLDivElement, BoxProps>(\n ({ color, ...rest }, ref) => (\n <Box\n ref={ ref }\n cursor=\"col-resize\"\n _hover={ hoverAndActiveStyles }\n _active={ hoverAndActiveStyles }\n transition=\"border 250ms linear\"\n h=\"inherit\"\n w=\"1\"\n borderLeftWidth=\"lg\"\n borderLeftStyle=\"solid\"\n borderColor={ color ?? 'transparent' }\n zIndex=\"docked\"\n { ...rest }\n />\n )\n)\n","import React, { useRef } from 'react'\nimport { CalendarDuo } from '@northlight/icons'\nimport { useButton } from '@react-aria/button'\nimport { Button } from '../../../button'\nimport { TriggerProps } from './types'\nimport { Icon } from '../../../icon'\n\nexport const Trigger = (props: TriggerProps) => {\n const { isDisabled, handleClick } = props\n const ref = useRef<HTMLButtonElement>(null)\n const { buttonProps } = useButton(props, ref)\n\n return (\n <Button\n { ...buttonProps }\n ref={ ref }\n size=\"sm\"\n boxSize={ 8 }\n variant=\"ghost\"\n isDisabled={ isDisabled }\n onPointerDown={ handleClick }\n pointerEvents={ isDisabled ? 'none' : 'auto' }\n >\n <Icon as={ CalendarDuo } />\n </Button>\n )\n}\n","import React, { useRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { useDateSegment } from '@react-aria/datepicker'\nimport { Box } from '../../../box'\nimport { DateSegmentProps } from './types'\n\nexport const DateSegment = ({ segment, state }: DateSegmentProps) => {\n const ref = useRef<HTMLInputElement>(null)\n const { segmentProps } = useDateSegment(segment, state, ref)\n\n const isDivider = segment.type === 'literal'\n const { dateSegment } = useMultiStyleConfig('DatePicker')\n const minWidth = `${String(segment.maxValue).length}ch`\n\n return (\n <Box\n { ...segmentProps }\n ref={ ref }\n __css={ dateSegment }\n minWidth={ isDivider ? 0 : minWidth }\n paddingInline={ isDivider ? 0 : '0.25rem' }\n color={\n segment.isPlaceholder\n ? 'gray.500'\n : isDivider\n ? 'text.subduded'\n : 'text.default'\n }\n fontSize=\"md\"\n >\n { segment.text }\n </Box>\n )\n}\n","import { toLower } from 'ramda'\n\ntype FormatMapKey = 'y' | 'm' | 'd'\ntype FormatMapValue = 'yyyy' | 'mm' | 'dd'\n\nconst mapFormat: Record<FormatMapKey, FormatMapValue> = {\n y: 'yyyy',\n m: 'mm',\n d: 'dd',\n}\n\nexport const formatQuery = (query: string) =>\n mapFormat[toLower(query)[0] as FormatMapKey]\n\nexport const delimeterIncluded = /([.,:;|\\-/\\\\])/\n","import React, { useRef } from 'react'\nimport { useDateFieldState } from '@react-stately/datepicker'\nimport { useDateField } from '@react-aria/datepicker'\nimport { createCalendar } from '@internationalized/date'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { find, split } from 'ramda'\nimport { Box } from '../../../box'\nimport { DateSegment } from './date-segment'\nimport { DateFieldProps, DateSegmentType } from './types'\nimport { delimeterIncluded, formatQuery } from './utils'\n\nexport const DateField = (props: DateFieldProps) => {\n const ref = useRef<HTMLInputElement>(null)\n const state = useDateFieldState({\n ...props,\n /* Hard coding the United Kingdom locale,\n this enforces using english characters e.g.\n yyyy and not other such as åååå or chinese, which prevents hard to predict bugs */\n locale: 'en-GB',\n createCalendar,\n })\n\n const { dateField } = useMultiStyleConfig('DatePicker')\n const { fieldProps } = useDateField(props, state, ref)\n\n const { segments } = state\n const { dateFormat = 'dd/mm/yyyy' } = props\n const getMatchingSegment = (query: string, index: number) =>\n find(\n (segment: DateSegmentType) => segment.placeholder === formatQuery(query)\n )(segments) || { ...segments[index], text: query }\n\n const sortedSegments = split(delimeterIncluded, dateFormat).map(\n (query: string, index: number) => getMatchingSegment(query, index)\n )\n\n return (\n <Box\n { ...fieldProps }\n ref={ ref }\n display=\"flex\"\n __css={ dateField }\n data-testid=\"date-field-test-id\"\n >\n { sortedSegments.map((segment, i) => {\n const id = `${segment.type}-${i}`\n return <DateSegment segment={ segment } state={ state } key={ id } />\n }) }\n </Box>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Box } from '../../../box'\nimport { StyledFieldProps } from './types'\n\nexport const StyledField = forwardRef((\n { isInvalid, isDisabled, children, variant, ...rest }: StyledFieldProps,\n ref: any\n) => {\n const { styledField } = useMultiStyleConfig('DatePicker', { variant })\n\n return (\n <Box\n { ...rest }\n ref={ ref }\n aria-invalid={ isInvalid }\n aria-disabled={ isDisabled }\n display=\"flex\"\n alignItems=\"center\"\n h={ 10 }\n __css={ styledField }\n >\n { children }\n </Box>\n )\n}\n)\n","import React from 'react'\nimport { Table as ChakraTable } from '@chakra-ui/react'\nimport { TableProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/table}\n *\n * @example\n * (?\n <Table variant=\"rounded\">\n <Thead>\n <Tr>\n <Th fontWeight=\"bold\"> Number</Th>\n <Th fontWeight=\"bold\"> Title</Th>\n </Tr>\n </Thead>\n <Tbody>\n { [1, 2, 3, 4, 5].map((num) => (\n <Tr key={ num }>\n <Td>{ num }</Td>\n <Td>\n This is great Typography man\n </Td>\n </Tr>\n )) }\n </Tbody>\n </Table>\n * ?)\n *\n */\nexport const Table = (props: TableProps) => <ChakraTable { ...props } />\n","import React, { useRef } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendarCell } from '@react-aria/calendar'\nimport { isSameMonth, today } from '@internationalized/date'\nimport { CalendarCellProps } from './types'\nimport { Button } from '../../../../button'\n\nexport const CalendarCell = ({\n state,\n date,\n currentMonth,\n}: CalendarCellProps) => {\n const ref = useRef<HTMLButtonElement>(null)\n const { cellProps, buttonProps, isSelected, formattedDate } = useCalendarCell(\n { date },\n state,\n ref\n )\n const isToday = date.compare(today(state.timeZone)) === 0\n\n const isOutsideMonth = !isSameMonth(currentMonth, date)\n\n return (\n <chakra.td { ...cellProps }>\n <Button\n { ...buttonProps }\n ref={ ref }\n borderRadius=\"xs\"\n boxSize={ 8 }\n hidden={ isOutsideMonth }\n size=\"sm\"\n fontWeight=\"medium\"\n variant={ isSelected ? 'brand' : 'ghost' }\n ring={ isToday && !isSelected ? '1px' : '0px' }\n ringColor=\"brand\"\n >\n { formattedDate }\n </Button>\n </chakra.td>\n )\n}\n","import React, { memo } from 'react'\nimport { chakra, useMultiStyleConfig } from '@chakra-ui/system'\nimport { DayLabelsProps } from './types'\n\nexport const DayLabels = memo(({ weekDays }: DayLabelsProps) => {\n const { dayLabel } = useMultiStyleConfig('Calendar')\n const weekDaysWithIds = weekDays.map((day, i) => ({ label: day, _id: i }))\n\n return (\n <>\n { weekDaysWithIds.map(({ label, _id }) => (\n <chakra.th key={ _id } __css={ dayLabel }>\n { label }\n </chakra.th>\n )) }\n </>\n )\n})\n","const mondayFirstWeekDays = [ 'M', 'T', 'W', 'T', 'F', 'S', 'S' ]\nconst sundayFirstWeekDays = [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ]\n\nexport const getWeekdays = (firstDayOfWeek: 'monday' | 'sunday') =>\n (firstDayOfWeek === 'monday' ? mondayFirstWeekDays : sundayFirstWeekDays)\n","import React, { memo } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendarGrid } from '@react-aria/calendar'\nimport { getWeeksInMonth } from '@internationalized/date'\nimport { times } from 'ramda'\nimport { Table, Tbody, Thead, Tr } from '../../../../table'\nimport { CalendarCell } from './calendar-cell'\nimport { CalendarGridProps } from './types'\nimport { DayLabels } from './day-labels'\nimport { getWeekdays } from './utils'\n\nexport const CalendarGrid = memo(\n ({ state, locale, firstDayOfWeek, ...rest }: CalendarGridProps) => {\n const startDate = state.visibleRange.start\n const { gridProps, headerProps } = useCalendarGrid(rest, state)\n const weeksInMonth = getWeeksInMonth(startDate, locale)\n const weekDays = getWeekdays(firstDayOfWeek)\n\n return (\n <Table variant=\"unstyled\" { ...gridProps }>\n <Thead { ...headerProps }>\n <Tr>\n <DayLabels weekDays={ weekDays } />\n </Tr>\n </Thead>\n <Tbody>\n { times(\n (weekIndex) => (\n <Tr key={ weekIndex }>\n { state\n .getDatesInWeek(weekIndex, startDate)\n .map((date) =>\n (date ? (\n <CalendarCell\n key={ date.day }\n state={ state }\n date={ date }\n currentMonth={ startDate }\n />\n ) : (\n <chakra.td />\n ))\n ) }\n </Tr>\n ),\n weeksInMonth\n ) }\n </Tbody>\n </Table>\n )\n }\n)\n","import React, { useRef } from 'react'\nimport { useButton } from '@react-aria/button'\nimport { Button } from '../../../../button'\nimport { MonthButtonProps } from './types'\n\nexport const MonthButton = ({ children, ...rest }: MonthButtonProps) => {\n const ref = useRef<HTMLButtonElement>(null)\n const { buttonProps } = useButton(rest, ref)\n\n return (\n <Button\n { ...buttonProps }\n boxSize={ 8 }\n size=\"xs\"\n variant=\"ghost\"\n ref={ ref }\n >\n { children }\n </Button>\n )\n}\n","export const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n","import React, { ChangeEvent } from 'react'\nimport { Select, useMultiStyleConfig } from '@chakra-ui/react'\nimport { months } from '../constants'\nimport { MonthSelectProps } from './types'\n\nexport const MonthSelect = ({ state }: MonthSelectProps) => {\n const { dateSelect } = useMultiStyleConfig('Calendar')\n const selectedMonth = state.visibleRange.start.month - 1\n\n const onChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const index = Number(e.target.value)\n const diff = index - selectedMonth\n state.setFocusedDate(state.visibleRange.start.add({ months: diff }))\n }\n\n return (\n <Select\n id=\"month\"\n aria-label=\"Select Month\"\n onChange={ onChange }\n value={ selectedMonth }\n iconSize=\"0px\"\n size=\"sm\"\n variant=\"unstyled\"\n sx={ dateSelect }\n w=\"max-content\"\n textAlign=\"center\"\n >\n { months.map((month, i) => (\n <option value={ i } key={ `month-${i as number}` }>\n { month }\n </option>\n )) }\n </Select>\n )\n}\n","import React from 'react'\nimport { Select, useMultiStyleConfig } from '@chakra-ui/react'\nimport { YearSelectProps } from './types'\n\nexport const YearSelect = ({\n onChange,\n years,\n}: YearSelectProps) => {\n const { dateSelect } = useMultiStyleConfig('Calendar')\n\n return (\n <Select\n id=\"year\"\n aria-label=\"Year\"\n onChange={ onChange }\n value={ 10 }\n size=\"sm\"\n iconSize=\"0px\"\n variant=\"unstyled\"\n sx={ dateSelect }\n w=\"max-content\"\n >\n { years.map((year, i) => (\n <option key={ year.formatted } value={ i }>\n { year.formatted }\n </option>\n )) }\n </Select>\n\n )\n}\n","import { useDateFormatter } from '@react-aria/i18n'\nimport { UseYearsCalendarProps, UseYearsRangeCalendarProps, YearValue } from './types'\n\nexport const useYearsCalendar = ({\n state,\n}: UseYearsCalendarProps) => {\n const years: YearValue[] = []\n const formatter = useDateFormatter({ year: 'numeric', month: 'long' })\n\n for (let i = -10; i < 10; i += 1) {\n const date = state.focusedDate.add({ years: i })\n years.push({\n value: date,\n formatted: formatter.format(date.toDate(state.timeZone)),\n })\n }\n return { years }\n}\n\nexport const useYearsRangeCalendar = ({\n state,\n}: UseYearsRangeCalendarProps) => {\n const years: YearValue[] = []\n\n for (let i = -10; i < 10; i += 1) {\n const date = state.visibleRange.start.add({ years: i })\n years.push({\n value: date,\n formatted: `${date.year}`,\n })\n }\n return { years }\n}\n","import React, { ChangeEvent } from 'react'\nimport { YearSelect } from './year-select'\nimport { useYearsCalendar } from './utils'\nimport { YearSelectCalendarProps } from './types'\n\nexport const YearSelectCalendar = ({ state }: YearSelectCalendarProps) => {\n const { years } = useYearsCalendar({ state })\n const onChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const index = Number(e.target.value)\n const date = years[index].value\n state.setFocusedDate(date)\n }\n\n return (\n <YearSelect onChange={ onChange } years={ years } />\n )\n}\n","import React, { ChangeEvent } from 'react'\nimport { YearSelect } from './year-select'\nimport { useYearsRangeCalendar } from './utils'\nimport { YearSelectRangeCalendarProps } from './types'\n\nexport const YearSelectRangeCalendar = ({\n state,\n}: YearSelectRangeCalendarProps) => {\n const { years } = useYearsRangeCalendar({ state })\n const onChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const index = Number(e.target.value)\n const date = years[index].value\n state.setFocusedDate(date)\n }\n\n return (\n <YearSelect onChange={ onChange } years={ years } />\n )\n}\n","const MILLISECONDS_PER_DAY = 86400000\n\nconst getThursdayDate = (date: Date): Date => {\n const thursdayDate = new Date(date)\n thursdayDate.setDate(date.getDate() + (4 - (date.getDay() || 7)))\n return thursdayDate\n}\n\nconst hasWeek53 = (year: number): boolean => {\n const firstDayOfYear = new Date(year, 0, 1)\n return firstDayOfYear.getDay() === 4 ||\n (firstDayOfYear.getDay() === 3 && new Date(year, 1, 29).getMonth() === 1)\n}\n\nexport const getWeekNumberAtStartOfMonth = (\n year: number,\n month: number\n): number => {\n const firstDayOfMonth = new Date(year, month - 1, 1)\n const thursdayOfFirstWeek = getThursdayDate(firstDayOfMonth)\n const firstDayOfYear = new Date(year, 0, 1)\n const firstThursdayOfYear = getThursdayDate(firstDayOfYear)\n const daysDifference = thursdayOfFirstWeek.getTime() - firstThursdayOfYear.getTime()\n const weekNumber = Math.ceil((daysDifference / MILLISECONDS_PER_DAY + 1) / 7)\n\n const isYearTransition = firstThursdayOfYear.getFullYear() < year\n const isJanuaryTransition = isYearTransition\n && thursdayOfFirstWeek.getFullYear() < year && month === 1\n\n if (isJanuaryTransition) {\n return hasWeek53(year - 1) ? 53 : 52\n }\n\n if (isYearTransition && month > 1) {\n return weekNumber - 1\n }\n\n if (month === 1 && weekNumber > 51) {\n return !hasWeek53(year - 1) ? 1 : weekNumber\n }\n\n return weekNumber\n}\n\nexport const getDisplayWeek = (\n baseWeek: number,\n weekIndex: number,\n year: number,\n month: number\n): number => {\n const isJanuaryEdgeCase = month === 1 && baseWeek > 51\n\n if (isJanuaryEdgeCase) {\n return weekIndex === 0 ? baseWeek : weekIndex\n }\n\n if (weekIndex === 0) {\n return baseWeek\n }\n\n const nextWeek = baseWeek + weekIndex\n\n if (nextWeek > 52) {\n return hasWeek53(year) && nextWeek === 53 ? 53 : nextWeek - 52\n }\n\n return nextWeek\n}\n","import React, { useRef } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendarCell } from '@react-aria/calendar'\nimport { isSameMonth, today } from '@internationalized/date'\nimport { equals } from 'ramda'\nimport { RangeCellProps } from './types'\n\nexport const RangeCell = ({\n state,\n date,\n currentMonth,\n range,\n}: RangeCellProps) => {\n const isOutsideMonth = !isSameMonth(currentMonth, date)\n if (isOutsideMonth) return <chakra.td />\n\n const ref = useRef<HTMLButtonElement>(null)\n const {\n cellProps,\n buttonProps,\n isSelected: baseIsSelected,\n formattedDate,\n } = useCalendarCell({ date }, state, ref)\n\n const isToday = date.compare(today(state.timeZone)) === 0\n\n const isHighlighted = range && date < range.end && date > range.start\n\n const isSelected =\n range &&\n !isHighlighted &&\n (equals(date, range.start) || equals(date, range.end))\n\n return (\n <chakra.td { ...cellProps }>\n <chakra.button\n { ...buttonProps }\n type=\"button\"\n ref={ ref }\n borderRadius=\"xs\"\n bgColor={\n isHighlighted ? 'brand-alt' : isSelected ? 'brand' : 'transparent'\n }\n color={ isSelected ? 'text.inverted' : 'text.default' }\n fontSize=\"sm\"\n ring={ isToday && !isSelected ? '1px' : '0px' }\n ringColor=\"brand\"\n mx=\"-1px\"\n ml={ isToday ? '-2px ' : undefined }\n my=\"0a\"\n w=\"8\"\n h=\"8\"\n fontWeight=\"medium\"\n opacity={ isSelected && !baseIsSelected ? '0.4' : '1' }\n _focusVisible={ {\n outline: 'none',\n ring: '2px',\n ringColor: 'border.wcag',\n ringOffset: '1px',\n } }\n _hover={ {\n bgColor: isSelected ? ' background.button.brand-hover' : 'bg.filled',\n _disabled: {\n bgColor: 'transparent',\n },\n } }\n _disabled={ {\n opacity: 0.3,\n } }\n >\n { formattedDate }\n </chakra.button>\n </chakra.td>\n )\n}\n","import React, { useMemo } from 'react'\nimport { chakra } from '@chakra-ui/react'\nimport { useCalendar, useCalendarGrid } from '@react-aria/calendar'\nimport { getWeeksInMonth } from '@internationalized/date'\nimport { times } from 'ramda'\nimport { useLocale } from '@react-aria/i18n'\nimport { CalendarState } from '@react-stately/calendar'\nimport { ChevronLeftSolid, ChevronRightSolid } from '@northlight/icons'\nimport { DayLabels } from './day-labels'\nimport { Box } from '../../../../box'\nimport { HStack, Stack } from '../../../../stack'\nimport { Flex } from '../../../../flex'\nimport { Icon } from '../../../../icon'\nimport { Small } from '../../../../typography'\nimport { MonthSelect, YearSelectRangeCalendar } from '../date-select'\nimport { MonthButton } from './month-button'\nimport { getDisplayWeek, getWeekNumberAtStartOfMonth } from './get-week-number-start-of-month'\nimport { RangeCell } from './range-cell'\nimport { DateRangeValue } from '../quick-navigation/types'\nimport { FirstDayOfWeek } from './types'\nimport { getWeekdays } from './utils'\n\ninterface StandaloneCalendarGridProps {\n state: CalendarState\n range: DateRangeValue | undefined\n firstDayOfWeek: FirstDayOfWeek\n}\n\nexport const StandaloneCalendarGrid = ({\n state,\n range,\n firstDayOfWeek,\n ...rest\n}: StandaloneCalendarGridProps) => {\n const { locale } = useLocale()\n const { calendarProps, prevButtonProps, nextButtonProps } = useCalendar(\n {},\n state\n )\n const startDate = state.visibleRange.start\n const { gridProps, headerProps } = useCalendarGrid(rest, state)\n const weekDays = getWeekdays(firstDayOfWeek)\n const weeksInMonth = getWeeksInMonth(startDate, locale)\n const weekNumberStart = useMemo(() => {\n const weekNumber = getWeekNumberAtStartOfMonth(startDate.year, startDate.month)\n return weekNumber\n }, [ startDate.year, startDate.month ])\n\n return (\n <Box { ...calendarProps } h=\"265px\" p=\"0\">\n <Stack>\n <Flex justify=\"space-between\" w=\"full\" p=\"1\" alignItems=\"center\">\n <MonthButton { ...prevButtonProps }>\n <Icon as={ ChevronLeftSolid } boxSize={ 4 } />\n </MonthButton>\n <HStack spacing=\"0\">\n <MonthSelect state={ state } />\n <YearSelectRangeCalendar state={ state } />\n </HStack>\n <MonthButton { ...nextButtonProps }>\n <Icon as={ ChevronRightSolid } boxSize={ 4 } />\n </MonthButton>\n </Flex>\n <chakra.table { ...gridProps } sx={ { borderSpacing: '0' } }>\n <chakra.thead { ...headerProps }>\n <chakra.tr>\n <chakra.th />\n <DayLabels weekDays={ weekDays } />\n </chakra.tr>\n </chakra.thead>\n <chakra.tbody>\n { times((weekIndex) => {\n const weekNumber = getDisplayWeek(weekNumberStart,\n weekIndex,\n startDate.year,\n startDate.month)\n return (\n <chakra.tr key={ weekIndex }>\n <chakra.td>\n <Small sx={ { color: 'text.subdued' } } pr=\"2\">\n w.\n { weekNumber }\n </Small>\n </chakra.td>\n { state\n .getDatesInWeek(weekIndex, startDate)\n .map((date) =>\n (date ? (\n <RangeCell\n key={ date.day }\n state={ state }\n range={ range }\n date={ date }\n currentMonth={ startDate }\n />\n ) : (\n <chakra.td />\n ))\n ) }\n </chakra.tr>\n )\n }, weeksInMonth) }\n </chakra.tbody>\n </chakra.table>\n </Stack>\n </Box>\n )\n}\n","import React from 'react'\nimport { GregorianCalendar } from '@internationalized/date'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { useLocale } from '@react-aria/i18n'\nimport { useCalendarState } from '@react-stately/calendar'\nimport { useCalendar } from '@react-aria/calendar'\nimport { ChevronLeftSolid, ChevronRightSolid } from '@northlight/icons'\nimport { Flex } from '../../../flex'\nimport { Box } from '../../../box'\nimport { CalendarGrid, MonthButton } from './components'\nimport { HStack, Stack } from '../../../stack'\nimport { Icon } from '../../../icon'\nimport { YearSelectCalendar } from './date-select'\nimport { CalendarProps } from './types'\n\nexport const Calendar = (props: CalendarProps) => {\n const { firstDayOfWeek } = props\n const { locale } = useLocale()\n const { container } = useMultiStyleConfig('Calendar')\n\n const state = useCalendarState({\n ...props,\n locale,\n createCalendar: () => new GregorianCalendar(),\n })\n\n const { calendarProps, prevButtonProps, nextButtonProps } = useCalendar(\n props,\n state\n )\n\n return (\n <Box { ...calendarProps } __css={ container }>\n <Stack>\n <Flex justifyContent=\"space-between\">\n <Box paddingInlineStart=\"2\">\n <YearSelectCalendar state={ state } />\n </Box>\n <HStack spacing={ 2 }>\n <MonthButton { ...prevButtonProps }>\n <Icon as={ ChevronLeftSolid } boxSize={ 4 } />\n </MonthButton>\n <MonthButton { ...nextButtonProps }>\n <Icon as={ ChevronRightSolid } boxSize={ 4 } />\n </MonthButton>\n </HStack>\n </Flex>\n <CalendarGrid\n state={ state }\n locale={ locale }\n firstDayOfWeek={ firstDayOfWeek }\n />\n </Stack>\n </Box>\n )\n}\n","import React, { ReactNode } from 'react'\nimport { I18nProvider } from '@react-aria/i18n'\nimport { FirstDayOfWeek } from '../components/calendar/components/types'\n\ninterface DatePickerLocaleWrapperProps {\n firstDayOfWeek: FirstDayOfWeek\n children: ReactNode\n}\n\nexport const DatePickerLocaleWrapper = ({\n firstDayOfWeek,\n children,\n}: DatePickerLocaleWrapperProps) => {\n const locale = firstDayOfWeek === 'monday' ? 'en-DE' : 'en-US'\n return <I18nProvider locale={ locale }>{ children }</I18nProvider>\n}\n","import React, { useRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { useDatePicker } from '@react-aria/datepicker'\nimport { useDatePickerState } from '@react-stately/datepicker'\nimport { FocusScope } from '@react-aria/focus'\nimport { XCloseSolid } from '@northlight/icons'\nimport { parseDate } from '@internationalized/date'\nimport { DateField, StyledField, Trigger } from '../components/date-field'\nimport { Calendar } from '../components/calendar'\nimport { DatePickerProps } from '../types'\nimport { IconButton } from '../../icon-button'\nimport { HStack } from '../../stack'\nimport { InputGroup, InputRightElement } from '../../input'\nimport { Popover, PopoverAnchor, PopoverContent } from '../../popover'\nimport { Icon } from '../../icon'\nimport { Box } from '../../box'\nimport { DatePickerLocaleWrapper } from './date-picker-locale-wrapper'\n\n/**\n * Popover to select single date\n * @see DatePickerField\n * @see {@link https://northlight.dev/reference/date-picker}\n *\n * @example (Example)\n * ## When is your birthday\n * (?\n * () => {\n * const [ date, setDate ] = useState('2023-10-10')\n *\n * const parseDate = () => {\n * return undefined\n * }\n *\n * return (\n * <DatePicker\n * firstDayOfWeek=\"monday\"\n * resetDate={() => setDate(null)} onChange={setDate} value={parseDate(date)}/>\n * )\n * }\n *\n * ?)\n * <br />\n * ### Some notes on date format\n * As you can see in the above example, the parseDate function returns undefined.\n * The DatePicker natively handles\n * dates as a DateValue object. To get out a string value on format yyyy-mm-dd,\n * you can use the javascript <b>.toString</b> method,\n * and for getting it back from string to DateValue,\n * you can use the parseDate util.\n * <br />\n * To read more about date formatting, consult the\n * <a target=\"_blank\" style=\"fontWeight: bold;\" href=\"https://react-spectrum.adobe.com/internationalized/date/CalendarDate.html\">react aria internationalized documentation</a>\n *\n * @example (Example)\n * ## Another example\n * (?\n * <DatePicker\n * variant=\"filled\"\n * dateFormat=\"mm|dd-yyyy\"\n * />\n * ?)\n *\n */\nexport const DatePicker = (props: DatePickerProps) => {\n const {\n isDisabled,\n isClearable = true,\n resetDate,\n isInvalid = false,\n dateFormat,\n minValue,\n variant = 'outline',\n firstDayOfWeek = 'monday',\n } = props\n const ref = useRef() as React.MutableRefObject<HTMLInputElement>\n const { group } = useMultiStyleConfig('DatePicker')\n\n const state = useDatePickerState({\n ...props,\n shouldCloseOnSelect: false,\n hideTimeZone: true,\n })\n\n const { buttonProps, fieldProps, calendarProps, groupProps, dialogProps } =\n useDatePicker(\n { ...props, minValue: minValue || parseDate('1994-03-08') },\n state,\n ref\n )\n\n const togglePopup = () => state.setOpen(!state.isOpen)\n\n return (\n <Popover\n isOpen={ state.isOpen }\n onClose={ () => state.setOpen(false) }\n placement=\"bottom-end\"\n >\n <PopoverAnchor>\n <HStack minW={ 56 }>\n <InputGroup { ...groupProps } ref={ ref } __css={ group }>\n <StyledField\n isDisabled={ isDisabled }\n isInvalid={ isInvalid }\n variant={ variant }\n >\n <Box paddingInlineStart=\"1a\" paddingInlineEnd={ 10 }>\n <DateField { ...fieldProps } dateFormat={ dateFormat } />\n </Box>\n </StyledField>\n <InputRightElement\n sx={ { height: '100%', paddingRight: '1' } }\n zIndex={ 0 }\n >\n <Trigger\n { ...buttonProps }\n isDisabled={ isDisabled }\n handleClick={ togglePopup }\n />\n </InputRightElement>\n </InputGroup>\n <IconButton\n aria-label=\"reset-date\"\n variant=\"danger\"\n size=\"sm\"\n fontSize=\"xs\"\n onClick={ resetDate }\n hidden={ !state.dateValue || !isClearable }\n isDisabled={ isDisabled }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </HStack>\n </PopoverAnchor>\n { state.isOpen && (\n <PopoverContent { ...dialogProps } ref={ ref } w={ 64 } border=\"none\">\n <FocusScope contain={ true } restoreFocus={ true }>\n <DatePickerLocaleWrapper firstDayOfWeek={ firstDayOfWeek }>\n <Calendar { ...calendarProps } firstDayOfWeek={ firstDayOfWeek } />\n </DatePickerLocaleWrapper>\n </FocusScope>\n </PopoverContent>\n ) }\n </Popover>\n )\n}\n","import React from 'react'\nimport { Link, chakra } from '@chakra-ui/react'\nimport { Link as ReactRouterLink } from 'react-router-dom'\nimport { useClickable } from '@chakra-ui/clickable'\nimport { isNil } from 'ramda'\nimport { ClickableProps } from './types'\nimport { ring } from '../../utils'\n\n/**\n * Wrapper component to make children interactive\n * by taking care of focus/accessibility, will render\n * either a link or button depending on if passing\n * an href\n * @see {@link https://northlight.dev/reference/clickable}\n * @example (Example)\n * ### Click to send notification\n * (?\n * () => {\n * const [ count, setCount ] = useState(0)\n * return (\n * <Clickable onClick={ () => setCount((prev) => prev + 1) }>\n <Avatar name=\"anakin skywalker\" variant=\"rounded\" notificationCount={count}/>\n </Clickable>\n * )\n * }\n * ?)\n * @example (Example)\n * ### Rendering a link if passing href\n * (?\n <Clickable href=\"/reference/select\">\n <Center boxSize=\"3xs\" bgColor=\"gray.50\">\n Link\n </Center>\n </Clickable>\n * ?)\n *\n */\nexport const Clickable = ({ href, linkProps, ...rest }: ClickableProps) => {\n const clickable = useClickable(rest)\n\n return (\n <>\n { !isNil(href) && (\n <Link\n as={ ReactRouterLink }\n _focusVisible={ ring }\n to={ href }\n _hover={ { textDecoration: 'none' } }\n { ...linkProps }\n { ...clickable }\n />\n ) }\n { isNil(href) && <chakra.button _focusVisible={ ring } { ...clickable } /> }\n </>\n )\n}\n","import React from 'react'\nimport { Clickable } from '../../../../clickable'\nimport { Label } from '../../../../typography'\nimport { Flex } from '../../../../flex'\nimport { DateButtonProps } from './types'\n\nexport const DateButton = ({\n isActive,\n onClick,\n children,\n}: DateButtonProps) => (\n <Flex maxW=\"120px\">\n <Clickable onClick={ onClick }>\n <Label\n _hover={ {\n fontWeight: 'semibold',\n } }\n sx={ {\n color: isActive ? 'background.button.brand' : 'text.default',\n cursor: 'pointer',\n fontWeight: isActive ? 'semibold' : 'regular',\n } }\n _active={ {\n fontWeight: 'semibold',\n } }\n h=\"8\"\n >\n { children }\n </Label>\n </Clickable>\n </Flex>\n)\n","import { DateRangeValue, QuickSelectState } from './types'\n\nexport const validRange = (date: DateRangeValue, state: QuickSelectState) =>\n !date || (\n (!state.minValue || date.start >= state.minValue) &&\n (!state.maxValue || date.end <= state.maxValue) &&\n date.end >= date.start\n )\n","import {\n CalendarDate,\n endOfMonth,\n endOfWeek,\n endOfYear,\n startOfMonth,\n startOfWeek,\n startOfYear,\n today,\n} from '@internationalized/date'\nimport { QuickSelectState } from './types'\n\nexport const getQuickSelectOptions = (\n state: QuickSelectState,\n locale: string,\n fiscalStartMonth: number,\n fiscalStartDay: number\n) => {\n const thisDay = today(state.timeZone)\n\n const startOfMonthWithDays = (\n date: CalendarDate,\n { months, days }: { months: number, days: number }\n ) => {\n const start = date.add({ months }).set({ day: days })\n return start\n }\n\n const endOfMonthWithDays = (\n date: CalendarDate,\n { months, days }: { months: number, days: number }\n ) => {\n const end = date.add({ months }).set({ day: days }).subtract({ days: 1 })\n return end\n }\n\n const thisWeek = {\n value: {\n start: startOfWeek(thisDay, locale),\n end: endOfWeek(thisDay, locale),\n },\n label: 'This Week',\n }\n\n const nextWeek = {\n value: {\n start: startOfWeek(thisDay.add({ weeks: 1 }), locale),\n end: endOfWeek(thisDay.add({ weeks: 1 }), locale),\n },\n label: 'Next Week',\n }\n\n const lastWeek = {\n value: {\n start: startOfWeek(thisDay.subtract({ weeks: 1 }), locale),\n end: endOfWeek(thisDay.subtract({ weeks: 1 }), locale),\n },\n label: 'Last Week',\n }\n\n const thisMonth = {\n value: {\n start: startOfMonth(thisDay),\n end: endOfMonth(thisDay),\n },\n label: 'This Month',\n }\n\n const lastMonth = {\n value: {\n start: startOfMonth(thisDay.subtract({ months: 1 })),\n end: endOfMonth(thisDay.subtract({ months: 1 })),\n },\n label: 'Last Month',\n }\n\n const thisYear = {\n value: {\n start: startOfYear(thisDay),\n end: endOfYear(thisDay),\n },\n label: 'This Year',\n }\n\n const lastYear = {\n value: {\n start: startOfYear(thisDay.subtract({ years: 1 })),\n end: endOfYear(thisDay.subtract({ years: 1 })),\n },\n label: 'Last Year',\n }\n\n const nextMonth = {\n value: {\n start: startOfMonth(thisDay.add({ months: 1 })),\n end: endOfMonth(thisDay.add({ months: 1 })),\n },\n label: 'Next Month',\n }\n\n const nextThreeMonths = {\n value: {\n start: startOfMonth(thisDay.add({ months: 1 })),\n end: endOfMonth(thisDay.add({ months: 3 })),\n },\n label: 'Next 3 Months',\n }\n\n const nextSixMonths = {\n value: {\n start: startOfMonth(thisDay.add({ months: 1 })),\n end: endOfMonth(thisDay.add({ months: 6 })),\n },\n label: 'Next 6 Months',\n }\n\n const nextYear = {\n value: {\n start: startOfYear(thisDay.add({ years: 1 })),\n end: endOfYear(thisDay.add({ years: 1 })),\n },\n label: 'Next Year',\n }\n\n // Fiscal year from input is 0-11, while internationalized gives 1-12. This corrects the check.\n const offsetFiscalYear =\n thisDay.month < fiscalStartMonth + 1 ||\n (thisDay.month === fiscalStartMonth + 1 && thisDay.day < fiscalStartDay)\n ? 1\n : 0\n\n const thisFiscalYear = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n { months: fiscalStartMonth, days: fiscalStartDay }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n { months: fiscalStartMonth + 12, days: fiscalStartDay }\n ),\n },\n label: 'This Fiscal Year',\n }\n\n const lastFiscalYear = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear + 1 }),\n {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear + 1 }),\n {\n months: fiscalStartMonth + 12,\n days: fiscalStartDay,\n }\n ),\n },\n label: 'Last Fiscal Year',\n }\n\n const yearToDate = {\n value: {\n start: startOfMonthWithDays(startOfYear(thisDay), {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }),\n end: thisDay,\n },\n label: 'Year to Date',\n }\n\n const S1 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'S1' : 'FS1',\n }\n\n const S2 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 12,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'S2' : 'FS2',\n }\n\n const F1 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 3,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q1' : 'FQ1',\n }\n\n const F2 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 3,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q2' : 'FQ2',\n }\n\n const F3 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 6,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 9,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q3' : 'FQ3',\n }\n\n const F4 = {\n value: {\n start: startOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 9,\n days: fiscalStartDay,\n }\n ),\n end: endOfMonthWithDays(\n startOfYear(thisDay).subtract({ years: offsetFiscalYear }),\n {\n months: fiscalStartMonth + 12,\n days: fiscalStartDay,\n }\n ),\n },\n label: fiscalStartMonth === 0 ? 'Q4' : 'FQ4',\n }\n\n const fiscalSemesters = [ S1, S2 ]\n const fiscalQuarters = [ F1, F2, F3, F4 ]\n const fiscalYears =\n fiscalStartMonth === 0 ? [] : [ thisFiscalYear, lastFiscalYear ]\n\n const quickDates = [\n thisYear,\n yearToDate,\n lastWeek,\n nextWeek,\n thisWeek,\n lastMonth,\n nextThreeMonths,\n nextSixMonths,\n nextMonth,\n thisMonth,\n lastYear,\n nextYear,\n ...fiscalYears,\n ]\n\n return { quickDates, fiscalQuarters, fiscalSemesters }\n}\n","import React, { useMemo } from 'react'\nimport { any, equals, map } from 'ramda'\nimport { palette } from '@northlight/tokens'\nimport { Flex, Spacer } from '../../../../flex'\nimport { Stack } from '../../../../stack'\nimport { Box } from '../../../../box'\nimport { DateButton } from './date-button'\nimport { validRange } from './utils'\nimport { Date, DateRangeValue, QuickSelectProps } from './types'\nimport { getQuickSelectOptions } from './get-quick-select-options'\n\nconst seperator = `1px solid ${palette.gray['100']}`\n\nexport const QuickSelect = ({\n state,\n fiscalStartMonth = 0,\n fiscalStartDay = 0,\n locale = '',\n height = '17.5rem',\n}: QuickSelectProps) => {\n const { quickDates, fiscalQuarters, fiscalSemesters } = useMemo(\n () => getQuickSelectOptions(state, locale, fiscalStartMonth, fiscalStartDay),\n []\n )\n\n const updateDate = (newDate: DateRangeValue) => () => {\n if (newDate) {\n state.setValue(newDate)\n state.setFocusedDateRange(newDate)\n }\n }\n\n const getIsActive = (newDate: Date) => equals(state.value, newDate.value)\n\n const shouldShow = (dates: Date[]) =>\n any((date) => validRange(date.value, state), dates)\n\n return (\n <Stack alignItems=\"start\" borderRight={ seperator } pt=\"2\">\n <Stack\n h={ height }\n overflowY=\"hidden\"\n pr=\"4\"\n _hover={ { overflowY: 'scroll' } }\n w=\"36\"\n display={ shouldShow(quickDates) ? 'initial' : 'none' }\n >\n { map(\n (quickDate) =>\n validRange(quickDate.value, state) && (\n <Box minH=\"20px\" key={ `quick-select-${quickDate.label}` }>\n <DateButton\n onClick={ updateDate(quickDate.value) }\n isActive={ getIsActive(quickDate) }\n >\n { quickDate.label }\n </DateButton>\n </Box>\n ),\n quickDates\n ) }\n </Stack>\n <Box\n w=\"50%\"\n borderTop={ seperator }\n display={ shouldShow(fiscalQuarters) ? 'initial' : 'none' }\n />\n <Spacer />\n <Flex\n justifyContent=\"space-around\"\n w=\"full\"\n pt=\"2\"\n pr=\"4\"\n display={ shouldShow(fiscalSemesters) ? 'flex' : 'none' }\n >\n { map(\n (semester) =>\n validRange(semester.value, state) && (\n <DateButton\n onClick={ updateDate(semester.value) }\n isActive={ getIsActive(semester) }\n key={ `quick-select-${semester.label}` }\n >\n { semester.label }\n </DateButton>\n ),\n fiscalSemesters\n ) }\n </Flex>\n <Flex\n justifyContent=\"space-around\"\n w=\"full\"\n pt={ shouldShow(fiscalSemesters) ? '0' : '2' }\n pr=\"4\"\n display={ shouldShow(fiscalQuarters) ? 'flex' : 'none' }\n >\n { map(\n (quarter) =>\n validRange(quarter.value, state) && (\n <DateButton\n onClick={ updateDate(quarter.value) }\n isActive={ getIsActive(quarter) }\n key={ `quick-select-${quarter.label}` }\n >\n { quarter.label }\n </DateButton>\n ),\n fiscalQuarters\n ) }\n </Flex>\n </Stack>\n )\n}\n","import React, { useRef } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { useLocale } from '@react-aria/i18n'\nimport { useCalendarState } from '@react-stately/calendar'\nimport { CalendarDate, GregorianCalendar } from '@internationalized/date'\nimport { RangeCalendarProps } from './types'\nimport { Button } from '../../../button'\nimport { Label } from '../../../typography'\nimport { Flex } from '../../../flex'\nimport { Box } from '../../../box'\nimport { StandaloneCalendarGrid } from './components'\nimport { HStack, Stack } from '../../../stack'\nimport { DateRangeValue } from './quick-navigation/types'\nimport { QuickSelect } from './quick-navigation/quick-select'\n\nconst focusRing = {\n borderWidth: 'xs',\n borderRadius: 'md',\n borderColor: 'border.brand.hover',\n borderStyle: 'solid',\n}\n\nexport const RangeCalendar = (props: RangeCalendarProps) => {\n const {\n onChange: setRange = identity,\n value,\n handleClose,\n resetDate,\n isClearable = true,\n fiscalStartMonth,\n fiscalStartDay,\n minValue,\n maxValue,\n firstDayOfWeek,\n onSave,\n buttonLabel = 'Save',\n clearButtonLabel = 'Clear',\n } = props\n\n const { locale } = useLocale()\n\n const ref = useRef<HTMLDivElement>(null)\n const { rangeCalendarContainer } = useMultiStyleConfig('Calendar')\n\n const calendarOneState = useCalendarState({\n value: value && value.start ? value.start : null,\n minValue,\n maxValue,\n onChange: (newVal) => {\n setRange({\n end: value && value.end && newVal <= value.end ? value.end : newVal,\n start: newVal,\n })\n },\n locale,\n createCalendar: () => new GregorianCalendar(),\n })\n\n const calendarTwoState = useCalendarState({\n value: value && value.end ? value.end : null,\n minValue,\n maxValue,\n onChange: (newVal) => {\n setRange({\n start:\n value && value.end && value.start <= newVal ? value.start : newVal,\n end: newVal,\n })\n },\n locale,\n createCalendar: () => new GregorianCalendar(),\n })\n\n const focusDateRange = (dateRange: DateRangeValue) => {\n if (dateRange && dateRange.start && dateRange.end) {\n calendarOneState.setFocusedDate(dateRange.start as CalendarDate)\n calendarTwoState.setFocusedDate(dateRange.end as CalendarDate)\n }\n }\n\n const state = {\n setValue: setRange,\n setFocusedDateRange: focusDateRange,\n value,\n timeZone: calendarOneState.timeZone,\n minValue,\n maxValue,\n }\n\n const focusedStartMonthProps = value && value.start ? {} : focusRing\n\n const handleSave = () => {\n onSave?.()\n handleClose()\n }\n\n const handleReset = () => {\n resetDate()\n handleClose()\n }\n\n return (\n <Box ref={ ref } __css={ rangeCalendarContainer }>\n <Stack>\n <Flex gap={ 4 }>\n <QuickSelect\n state={ state }\n locale={ locale }\n fiscalStartMonth={ fiscalStartMonth }\n fiscalStartDay={ fiscalStartDay }\n />\n <Stack>\n <HStack alignItems=\"start\" spacing={ 8 } h=\"full\" pt=\"2\">\n <Stack h=\"full\" { ...focusedStartMonthProps }>\n <Box p=\"2\">\n <Label size=\"xs\">Start date:</Label>\n <StandaloneCalendarGrid\n state={ calendarOneState }\n range={ value }\n firstDayOfWeek={ firstDayOfWeek }\n />\n </Box>\n </Stack>\n <Stack h=\"full\" justify=\"space-between\">\n <Stack opacity={ value && value.start ? '1' : '0.4' }>\n <Box p=\"2\">\n <Label size=\"xs\">End date:</Label>\n <StandaloneCalendarGrid\n state={ calendarTwoState }\n range={ value }\n firstDayOfWeek={ firstDayOfWeek }\n />\n </Box>\n </Stack>\n <HStack pt=\"2\" alignSelf=\"end\">\n { isClearable && (\n <Button onClick={ handleReset } variant=\"ghost\" size=\"sm\">\n { clearButtonLabel }\n </Button>\n ) }\n <Button variant=\"brand\" onClick={ handleSave } size=\"sm\">\n { buttonLabel }\n </Button>\n </HStack>\n </Stack>\n </HStack>\n </Stack>\n </Flex>\n </Stack>\n </Box>\n )\n}\n","import { has, is } from 'ramda'\n\nexport const isValidDateRange = (value: unknown) => (\n is(Object, value) &&\n has('startDate', value) &&\n has('endDate', value) &&\n is(String, value.startDate) &&\n is(String, value.endDate)\n)\n","import {\n AlertCircleSolid,\n AlertOctagonSolid,\n AlertTriangleSolid,\n BrightnessSolid,\n CheckCircleSolid,\n HelpCircleSolid,\n InfoSolid,\n} from '@northlight/icons'\nimport { AlertVariants } from '../../alert/types'\n\nexport const tooltipIconMap: Record<AlertVariants, any> = {\n success: CheckCircleSolid,\n warning: AlertTriangleSolid,\n error: AlertCircleSolid,\n danger: AlertOctagonSolid,\n info: InfoSolid,\n ai: BrightnessSolid,\n default: HelpCircleSolid,\n ghost: HelpCircleSolid,\n}\n","import React from 'react'\nimport {\n Tooltip as ChakraTooltip,\n HStack,\n VStack,\n} from '@chakra-ui/react'\nimport { Label, P } from '../typography'\nimport { Icon } from '../icon'\nimport { AlertVariants } from '../alert'\nimport { tooltipIconMap } from '../types/tooltipIconMap'\nimport { OurTooltipProps } from './types'\n\n/**\n * A tooltip is a brief, informative message that appears when a user interacts with an element.\n * @see {@link https://northlight.dev/reference/tooltip}\n *\n * @example\n * (?\n * <HStack>\n * <Tooltip\n * hasIcon={ true }\n * description=\"Here’s a regular tooltip with some with icon\n * inside of it that’s supposed to be substantially large.\">\n * <Badge>ICON</Badge>\n * </Tooltip>\n * <Tooltip\n * description=\"Here’s a regular tooltip with some text without icon\n * inside of it that’s supposed to be substantially large.\"\n * >\n * <Badge>NOICON</Badge>\n * </Tooltip>\n * <Tooltip\n * description={\n * <Box>\n * <Text>\n * Some text\n * </Text>\n * <UnorderedList>\n * <ListItem>\n * List item 1\n * </ListItem>\n * <ListItem>\n * List item 2\n * </ListItem>\n * <ListItem>\n * List item 3\n * </ListItem>\n * </UnorderedList>\n * </Box>\n * }\n * >\n * <Badge>With JSX content</Badge>\n * </Tooltip>\n * </HStack>\n * ?)\n *\n *\n * @example\n * (?\n * <HStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"success\"\n * description=\"This is a successful message\"\n * >\n * <Badge colorScheme=\"green\">Success</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"success\"\n * title=\"Please check fields\"\n * description=\"This is a successful message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"green\">Success</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"info\"\n * description=\"This is an informative text\"\n * >\n * <Badge colorScheme=\"blue\">Info</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"info\"\n * title=\"Please check fields\"\n * description=\"This is an informative text with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"blue\">Info</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"warning\"\n * description=\"This is a warning\"\n * >\n * <Badge colorScheme=\"yellow\">Warning</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"warning\"\n * title=\"Please check fields\"\n * description=\"This is a warning with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"yellow\">Warning</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"danger\"\n * description=\"This is an error message\"\n * >\n * <Badge colorScheme=\"red\">Error</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"danger\"\n * title=\"Please check fields\"\n * description=\"This is an error message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"red\">Error</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ai\"\n * description=\"This is an AI message\">\n * <Badge colorScheme=\"teal\" variant=\"subtle\">AI</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ai\"\n * title=\"Please check fields\"\n * description=\"This is an AI message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge colorScheme=\"teal\" variant=\"subtle\">AI</Badge>\n * </Tooltip>\n * </VStack>\n * <VStack>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ghost\"\n * description=\"This is an clean message\">\n * <Badge>Ghost</Badge>\n * </Tooltip>\n * <Tooltip\n * hasIcon={ true }\n * variant=\"ghost\"\n * title=\"Please check fields\"\n * description=\"This is an clean message with a title and an icon\n * that’s supposed to be substantially large.\"\n * >\n * <Badge>Ghost</Badge>\n * </Tooltip>\n * </VStack>\n * </HStack>\n * ?)\n */\n\nexport const Tooltip: React.FC<OurTooltipProps> = ({\n variant = 'default',\n hasArrow = true,\n title = '',\n description = '',\n hasIcon = false,\n ...rest\n}) => {\n const iconVariant: AlertVariants = variant as AlertVariants\n const icon = tooltipIconMap[iconVariant]\n\n const TooltipContent = (\n <HStack alignItems=\"flex-start\">\n { hasIcon && <Icon as={ icon } color={ `icon.toast.${iconVariant}` } /> }\n <VStack spacing={ 0 } alignItems=\"flex-start\">\n <Label size=\"sm\">{ title }</Label>\n <P\n variant=\"14\"\n sx={ {\n color: !variant || variant === 'ai' ? 'text.inverted' : 'text.default',\n } }\n >\n { description }\n </P>\n </VStack>\n </HStack>\n )\n return (\n <ChakraTooltip\n hasArrow={ hasArrow }\n hasIcon={ hasIcon }\n label={ title || description ? TooltipContent : undefined }\n variant={ variant }\n { ...rest }\n />\n )\n}\n","import React, { useRef } from 'react'\nimport { useDateRangePickerState } from '@react-stately/datepicker'\nimport { useDateRangePicker } from '@react-aria/datepicker'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { CheckSolid, XCloseSolid } from '@northlight/icons'\nimport { identity, isNil } from 'ramda'\nimport { DateValue, parseDate } from '@internationalized/date'\nimport { DateRange } from '@react-types/datepicker'\nimport { DateRangePickerProps, DateRange as NorthlightDateRange } from '../types'\nimport { RangeCalendar } from '../components/calendar/quick-navigation'\nimport { P } from '../../typography'\nimport { HStack } from '../../stack'\nimport { Popover, PopoverAnchor, PopoverContent } from '../../popover'\nimport { Portal } from '../../portal'\nimport { DateField, StyledField, Trigger } from '../components/date-field'\nimport { IconButton } from '../../icon-button'\nimport { InputGroup, InputRightElement } from '../../input'\nimport { Icon } from '../../icon'\nimport { isValidDateRange } from '../date-picker-field/utils'\nimport { DatePickerLocaleWrapper } from './date-picker-locale-wrapper'\nimport { Tooltip } from '../../tooltip'\n\nconst parseValue = (value: any) => {\n if (!isValidDateRange(value)) return null\n return { start: parseDate(value.startDate), end: parseDate(value.endDate) }\n}\n\nconst PortalWrapper = ({\n renderInPortal,\n children,\n}: {\n renderInPortal: boolean\n children: React.ReactNode\n}) => {\n if (renderInPortal) {\n return <Portal>{ children }</Portal>\n }\n return <>{ children }</>\n}\n\nconst isDatesEqual = (\n date1: NorthlightDateRange | null,\n date2: NorthlightDateRange | null\n) => date1?.startDate === date2?.startDate && date1?.endDate === date2?.endDate\n\n/**\n * Popover to choose date range on format {startDate:' yyyy-mm-dd', endDate: 'yyyy-mm-dd'}\n *\n * @see DatePicker\n * @see DateRangePickerField\n * @see {@link https://northlight.dev/reference/date-range-picker}\n * @example (Example)\n * ## Advanced Mode\n * (Due to it being harder to setup normal date range picker,\n * the date range picker field is demoed,\n * here, you need to pass down and parse a value for the date range picker for it to work properly,\n * consult the date picker documentation and the source code for date range picker\n * field for appropiate use)\n * (?\n * <Form initialValues={{date: null}}>\n * <DateRangePickerField name=\"date\"/>\n * </Form>\n * ?)\n *\n * @example (Example)\n * ## Simple mode\n * The previous example was the date range picker variant\n * for which we call advance, this one is a simpler version with the same core functionality:\n * (?\n * <Form initialValues={{date: null}}>\n * <DateRangePickerField name=\"date\" />\n * </Form>\n * ?)\n *\n * @example (Example)\n * ## Sophisticated example\n * The `DateRangePickerField` can have **fiscalStartMonth** and **fiscalStartDay** as a `number`\n * (?\n * <Form initialValues={{date: null}}>\n * <DateRangePickerField\n * name=\"date\"\n * mode=\"advanced\"\n * variant=\"filled\"\n * fiscalStartMonth={3}\n * fiscalStartDay={5}\n * dateFormat=\"mm|dd-yyyy\"\n * minValue=\"2023-01-01\"\n * maxValue=\"2028-01-01\"\n * />\n * </Form>\n * ?)\n */\nexport const DateRangePicker = (props: DateRangePickerProps) => {\n const {\n isDisabled,\n isClearable = true,\n resetDate,\n isInvalid = false,\n dateFormat,\n fiscalStartMonth,\n fiscalStartDay,\n variant = 'outline',\n onChange: onChangeCallback = identity,\n value,\n minValue = '1994-03-08',\n maxValue,\n renderInPortal = false,\n firstDayOfWeek,\n onSave,\n buttonLabel = 'Save',\n clearButtonLabel = 'Clear',\n savedDateRange,\n defaultDateRange,\n CustomResetButton,\n onCancelChanges,\n 'data-testid': dataTestId,\n defaultOpen = false,\n onOpenChange,\n } = props\n const ref = useRef() as React.MutableRefObject<HTMLInputElement>\n const { group } = useMultiStyleConfig('DatePicker')\n const parsedProps = {\n onChange: (date: DateRange) => {\n onChangeCallback({\n startDate: date?.start.toString(),\n endDate: date?.end.toString(),\n })\n },\n value: parseValue(value) as { start: DateValue, end: DateValue },\n minValue: isNil(minValue) ? undefined : (parseDate(minValue) as DateValue),\n maxValue: isNil(maxValue) ? undefined : (parseDate(maxValue) as DateValue),\n }\n const state = useDateRangePickerState({\n value: parsedProps.value,\n onChange: parsedProps.onChange,\n minValue: parsedProps.minValue,\n maxValue: parsedProps.maxValue,\n isDisabled,\n isInvalid,\n placeholderValue: props.placeholderValue,\n isDateUnavailable: props.isDateUnavailable,\n allowsNonContiguousRanges: props.allowsNonContiguousRanges,\n shouldCloseOnSelect: false,\n hideTimeZone: true,\n defaultOpen,\n onOpenChange,\n })\n\n const {\n groupProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDateRangePicker(\n {\n onChange: (date: DateRange) => {\n onChangeCallback({\n startDate: date?.start.toString(),\n endDate: date?.end.toString(),\n })\n },\n value: parseValue(value) as { start: DateValue, end: DateValue },\n minValue: parsedProps.minValue || parseDate('1994-03-08'),\n maxValue: parsedProps.maxValue,\n placeholderValue: props.placeholderValue,\n isDateUnavailable: props.isDateUnavailable,\n allowsNonContiguousRanges: props.allowsNonContiguousRanges,\n isDisabled,\n isInvalid,\n startName: props.startName,\n endName: props.endName,\n 'aria-label': 'Date range picker',\n ...(!isNil(dataTestId) && { 'data-testid': dataTestId }),\n },\n state,\n ref\n )\n\n const togglePopup = () => state.setOpen(!state.isOpen)\n\n const handleClose = () => {\n state.setOpen(false)\n }\n\n const ResetButton = CustomResetButton || (\n <IconButton\n aria-label=\"reset-date\"\n variant=\"danger\"\n size=\"sm\"\n fontSize=\"xs\"\n hidden={ !isClearable }\n isDisabled={ isDisabled }\n onClick={ resetDate }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n )\n\n const cancelOrResetDateChange = () => {\n if (onCancelChanges) {\n if (!isNil(savedDateRange)) onChangeCallback(savedDateRange)\n onCancelChanges()\n } else {\n if (!isNil(defaultDateRange)) onChangeCallback(defaultDateRange)\n resetDate()\n }\n }\n\n const handleSave = () => {\n onSave?.()\n handleClose()\n }\n\n const handleModalClose = () => {\n if (!isNil(savedDateRange)) onChangeCallback(savedDateRange)\n handleClose()\n }\n\n // If savedDateRange is null, we consider value saved\n const isCurrentDateSaved =\n isNil(savedDateRange) || isDatesEqual(value, savedDateRange)\n\n // If defaultDateRange is null, we consider value resettable\n const isDateResettable =\n isNil(defaultDateRange) || !isDatesEqual(value, defaultDateRange)\n\n const canShowSaveAndCancelButtons = !isNil(savedDateRange) && !isNil(defaultDateRange)\n\n const shouldShowResetButton =\n !state.isOpen && isCurrentDateSaved && isDateResettable\n\n const shouldShowSaveAndCancelButtons =\n canShowSaveAndCancelButtons && !state.isOpen && !isCurrentDateSaved\n\n return (\n <Popover\n isOpen={ state.isOpen }\n onClose={ handleModalClose }\n placement=\"bottom-start\"\n >\n <PopoverAnchor>\n <HStack>\n <InputGroup { ...groupProps } ref={ ref } __css={ group }>\n <StyledField\n isDisabled={ isDisabled }\n isInvalid={ isInvalid }\n variant={ variant }\n >\n <HStack paddingInlineStart=\"1a\" paddingInlineEnd={ 10 }>\n <DateField { ...startFieldProps } dateFormat={ dateFormat } />\n <P>-</P>\n <DateField { ...endFieldProps } dateFormat={ dateFormat } />\n </HStack>\n </StyledField>\n <InputRightElement sx={ { height: '100%', paddingRight: '1' } }>\n <Trigger\n { ...buttonProps }\n isDisabled={ isDisabled }\n handleClick={ togglePopup }\n />\n </InputRightElement>\n </InputGroup>\n { shouldShowResetButton && (\n ResetButton\n ) }\n { shouldShowSaveAndCancelButtons && (\n <>\n <Tooltip label={ clearButtonLabel }>\n <IconButton\n aria-label=\"cancel-date-change\"\n variant=\"ghost\"\n size=\"sm\"\n fontSize=\"xs\"\n onClick={ onCancelChanges }\n isDisabled={ isDisabled }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </Tooltip>\n <Tooltip label={ buttonLabel }>\n <IconButton\n aria-label=\"save-date\"\n variant=\"brand\"\n size=\"sm\"\n fontSize=\"xs\"\n onClick={ handleSave }\n isDisabled={ isDisabled }\n icon={ <Icon as={ CheckSolid } /> }\n />\n </Tooltip>\n </>\n ) }\n </HStack>\n </PopoverAnchor>\n <PortalWrapper renderInPortal={ renderInPortal }>\n { state.isOpen && (\n <PopoverContent { ...dialogProps } ref={ ref } w=\"max-content\">\n <DatePickerLocaleWrapper firstDayOfWeek={ firstDayOfWeek }>\n <RangeCalendar\n { ...calendarProps }\n resetDate={ cancelOrResetDateChange }\n handleClose={ handleModalClose }\n fiscalStartMonth={ fiscalStartMonth || 0 }\n fiscalStartDay={ fiscalStartDay || 0 }\n isClearable={ isClearable }\n firstDayOfWeek={ firstDayOfWeek }\n onSave={ onSave }\n clearButtonLabel={ clearButtonLabel }\n buttonLabel={ buttonLabel }\n />\n </DatePickerLocaleWrapper>\n </PopoverContent>\n ) }\n </PortalWrapper>\n </Popover>\n )\n}\n","import React from 'react'\nimport { all, isNil, not } from 'ramda'\nimport { InputGroup } from '../../components/input'\nimport { InputGroupWrapperProps } from './types'\n\nexport const InputGroupWrapper = ({\n inputLeftElement,\n inputRightElement,\n children,\n ...rest\n}: InputGroupWrapperProps) => {\n const containsInputGroupElement =\n not(all(isNil, [ inputLeftElement, inputRightElement ]))\n\n return containsInputGroupElement\n ? (\n <InputGroup { ...rest }>\n { inputLeftElement }\n { children }\n { inputRightElement }\n </InputGroup>\n )\n : <>{ children }</>\n}\n","import React, { forwardRef } from 'react'\nimport { DateValue, parseDate } from '@internationalized/date'\nimport { identity } from 'ramda'\nimport { DatePickerFieldProps } from '../types'\nimport { Field } from '../../form'\nimport { DatePicker } from '../date-picker/date-picker'\nimport { useFormContext } from '../../../hooks'\nimport { InputGroupWrapper } from '../../../internal-components/input-group-wrapper'\n\n/**\n * The <DatePicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see DatePicker\n * @see {@link https://northlight.dev/reference/date-picker-field}\n *\n * @example (Example)\n * ##Fill in your information:\n * (?\n * <Form initialValues={{date: null}}>\n * <DatePickerField name=\"date\" />\n * </Form>\n *\n * ?)\n * <br />\n * ###The simplest way\n * Using the date picker in a form is probably the easiest\n * way to use it, it will handle the state for you and you\n * can retrieve the date at the end as a string on format\n * yyyy-mm-dd on the onSubmit callback on <Form>\n *\n */\nexport const DatePickerField = forwardRef<HTMLDivElement, DatePickerFieldProps>(({\n name,\n minValue,\n maxValue,\n isRequired,\n direction = 'column',\n label,\n validate,\n firstDayOfWeek = 'monday',\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n}, ref) => {\n const { setValue, setError, trigger } = useFormContext()\n\n const handleChange = (date: DateValue) => {\n setValue(name, date?.toString())\n if ((minValue && date < parseDate(minValue)) || (maxValue && date > parseDate(maxValue))) {\n setError(name, {\n type: 'custom',\n message: minValue && maxValue\n ? `Date must be between ${minValue}-${maxValue}`\n : minValue\n ? `Select date earliest at ${minValue}`\n : `Select date latest at ${maxValue}`\n ,\n })\n } else {\n trigger(name)\n }\n onChangeCallback(date)\n }\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }, { formState: { errors } }) => (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <DatePicker\n firstDayOfWeek={ firstDayOfWeek }\n aria-label={ label }\n isInvalid={ !!errors[name] }\n onChange={ handleChange }\n resetDate={ () => onChange(null) }\n value={ value ? parseDate(value) as any : null }\n minValue={ minValue ? parseDate(minValue) as DateValue : undefined }\n maxValue={ maxValue ? parseDate(maxValue) as DateValue : undefined }\n validationState={ errors.name ? 'invalid' : 'valid' }\n { ...rest as any }\n />\n </InputGroupWrapper>\n ) }\n </Field>\n\n )\n})\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { DateRangePickerFieldProps, FormBody } from '../types'\nimport { Field } from '../../form'\nimport { DateRangePicker } from '../date-picker/date-range-picker'\nimport { useFormContext } from '../../../hooks'\n\n/**\n * The <DateRangePicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see DateRangePicker\n * @see {@link https://northlight.dev/reference/date-range-picker-field}\n *\n */\nexport const DateRangePickerField = forwardRef<HTMLDivElement, DateRangePickerFieldProps>(({\n name,\n minValue,\n maxValue,\n isRequired,\n direction = 'column',\n label,\n validate,\n firstDayOfWeek = 'monday',\n onChange: onChangeCallback = identity,\n isClearable = true,\n onSave,\n buttonLabel = 'Save',\n ...rest\n}, ref) => {\n const { setValue, setError, trigger } = useFormContext<FormBody>()\n\n const handleChange = (dateRange: { startDate: string, endDate: string }) => {\n setValue(name, dateRange)\n if (\n (minValue && dateRange?.startDate < minValue) ||\n (maxValue && dateRange?.endDate > maxValue)\n ) {\n setError(name, {\n type: 'custom',\n message:\n minValue && maxValue\n ? `Date must be between ${minValue}-${maxValue}`\n : minValue\n ? `Select date earliest at ${minValue}`\n : `Select date latest at ${maxValue}`,\n })\n } else {\n trigger(name)\n }\n onChangeCallback(dateRange)\n }\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }, { formState: { errors } }) => (\n <DateRangePicker\n firstDayOfWeek={ firstDayOfWeek }\n aria-label={ label }\n isInvalid={ !!errors[name] }\n onChange={ handleChange }\n onSave={ onSave }\n resetDate={ () => onChange(null) }\n value={ value }\n minValue={ minValue }\n maxValue={ maxValue }\n validationState={ errors.name ? 'invalid' : 'valid' }\n isClearable={ isClearable }\n buttonLabel={ buttonLabel }\n { ...(rest as any) }\n />\n ) }\n </Field>\n )\n})\n","import React from 'react'\nimport { Circle } from '@chakra-ui/react'\nimport { chakra } from '@chakra-ui/system'\nimport { TimeoutProgressCircleProps } from './types'\n\nexport const TimeoutProgressCircle = ({\n progress,\n ringColor = 'border.error',\n ...rest\n}: TimeoutProgressCircleProps) => {\n const RADIUS = 22\n const STROKE_WIDTH = 3\n const SVG_SIZE = 2 * (RADIUS + STROKE_WIDTH)\n const CIRCUMFERENCE = 2 * Math.PI * RADIUS\n const strokeDashoffset = CIRCUMFERENCE - (progress / 100) * CIRCUMFERENCE\n\n return (\n <Circle\n as=\"svg\"\n size={ `${SVG_SIZE}px` }\n viewBox={ `0 0 ${SVG_SIZE} ${SVG_SIZE}` }\n sx={ {\n transform: 'rotate(-90deg)',\n } }\n { ...rest }\n >\n <chakra.circle\n cx={ SVG_SIZE / 2 }\n cy={ SVG_SIZE / 2 }\n r={ RADIUS }\n fill=\"transparent\"\n stroke=\"border.hover\"\n strokeWidth={ STROKE_WIDTH }\n />\n <chakra.circle\n cx={ SVG_SIZE / 2 }\n cy={ SVG_SIZE / 2 }\n r={ RADIUS }\n fill=\"transparent\"\n stroke={ ringColor }\n strokeWidth={ STROKE_WIDTH }\n strokeDasharray={ CIRCUMFERENCE }\n strokeDashoffset={ strokeDashoffset }\n strokeLinecap=\"round\"\n />\n </Circle>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { TrashDuo } from '@northlight/icons'\nimport { Tooltip } from '../tooltip'\nimport { Center } from '../center'\nimport { Icon } from '../icon'\nimport { IntentButtonProps } from './types'\nimport { TimeoutProgressCircle } from './timeout-progress-circle'\nimport { IconButton } from '../icon-button'\n\n/**\n * @see {@link https://northlight.dev/reference/intent-button}\n *\n * Hold in to confirm delete\n *\n * @example\n * (?\n * +\n *\n * const Example = () => {\n * const [isShowing, setIsShowing] = useState(true)\n *\n * const handleDelete = () => {\n * setIsShowing(false)\n * }\n *\n * return (\n * <>\n * {isShowing && (\n * <IntentButton onTimeout={handleDelete} />\n * )}\n * </>\n * )\n *\n * }\n * render(<Example />)\n *?)\n *\n */\nexport const IntentButton = ({\n icon = TrashDuo,\n timeout = 1000,\n ringColor = 'border.error',\n onTimeout = () => {},\n tooltipText = 'Hold to Delete',\n 'aria-label': ariaLabel = 'confirm delete',\n ...rest\n}: IntentButtonProps) => {\n const [ progress, setProgress ] = useState(0)\n const [ isHovering, setIsHovering ] = useState(false)\n const timerRef = useRef<number | undefined>(undefined)\n\n const clearTimer = () => {\n if (timerRef.current) {\n clearInterval(timerRef.current)\n timerRef.current = undefined\n }\n setProgress(0)\n }\n\n useEffect(() => clearTimer, [])\n\n const startTimer = () => {\n clearTimer()\n\n const startTime = Date.now()\n timerRef.current = setInterval(() => {\n const elapsedTime = Date.now() - startTime\n const updatedProgress = (elapsedTime / timeout) * 100\n if (updatedProgress >= 100) {\n clearInterval(timerRef.current)\n onTimeout()\n } else {\n setProgress(updatedProgress)\n }\n }, 10)\n }\n\n const handleMouseEnter = () => {\n setIsHovering(true)\n }\n\n const handleMouseLeave = () => {\n setIsHovering(false)\n clearTimer()\n }\n\n return (\n <Tooltip label={ tooltipText } placement=\"top\">\n <Center\n position=\"relative\"\n cursor=\"pointer\"\n onMouseDown={ startTimer }\n onMouseUp={ clearTimer }\n onMouseLeave={ handleMouseLeave }\n onMouseEnter={ handleMouseEnter }\n boxSize=\"50px\"\n opacity={ `${(100 - progress) / 100}` }\n { ...rest }\n >\n <IconButton\n icon={ <Icon as={ icon } /> }\n size=\"md\"\n aria-label={ ariaLabel }\n variant=\"ghost\"\n />\n { isHovering && (\n <TimeoutProgressCircle\n ringColor={ ringColor }\n progress={ progress }\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n />\n ) }\n </Center>\n </Tooltip>\n )\n}\n","export const defaultFadeDelay = 250\nexport const defaultOffset = 20\n","import { useEffect, useState } from 'react'\nimport { identity } from 'ramda'\nimport { getChildrenWithProps } from '../../utils'\nimport {\n ChildrenType,\n DurationType,\n OffsetType,\n TransitionDirection,\n} from './types'\nimport { defaultFadeDelay, defaultOffset } from './constants'\n\nconst unFocusStyles = { tabIndex: '-1' }\nexport const getChildrenWithFocus = (\n children: ChildrenType,\n disableFocus: boolean,\n show: boolean\n) =>\n (show\n ? children\n : disableFocus\n ? getChildrenWithProps(children, unFocusStyles)\n : children)\n\nexport const getDuration = (\n enterDuration: DurationType,\n exitDuration: DurationType,\n duration: DurationType\n) => {\n const inDuration = enterDuration || duration || defaultFadeDelay\n const outDuration = exitDuration || duration || defaultFadeDelay\n const transition = {\n enter: {\n duration: inDuration / 1000,\n },\n exit: {\n duration: outDuration / 1000,\n },\n }\n return transition\n}\n\nexport const getOffsets = (\n direction: TransitionDirection,\n offset: OffsetType,\n offsetX: OffsetType,\n offsetY: OffsetType\n) => {\n if (offsetX || offsetY) {\n return { offsetX, offsetY }\n }\n if (direction) {\n const delta = offset || defaultOffset\n switch (direction) {\n case 'right':\n return { offsetX: delta, offsetY: 0 }\n case 'left':\n return { offsetX: -delta, offsetY: 0 }\n case 'top':\n return { offsetX: 0, offsetY: -delta }\n case 'bottom':\n return { offsetX: 0, offsetY: delta }\n default:\n break\n }\n }\n return { offsetX: defaultOffset, offsetY: defaultOffset }\n}\n\nexport const useDelay = (\n show: boolean,\n enterDelay: number,\n exitDelay: number\n) => {\n const [ showWithDelay, setShowWithDelay ] = useState(false)\n useEffect(() => {\n const ref = setTimeout(\n () => setShowWithDelay(show),\n show ? enterDelay : exitDelay\n )\n return () => clearTimeout(ref)\n }, [ show ])\n return showWithDelay\n}\n\nexport const useHiddenDisplay = (\n anchor = false,\n exitDelay = 0,\n exitDuration: DurationType = 0,\n duration: DurationType = 0,\n onTransitionComplete: (hidden: boolean) => void = identity\n) => {\n const [ hidden, setHidden ] = useState(anchor)\n\n useEffect(() => {\n const ref = setTimeout(() => {\n setHidden(anchor)\n onTransitionComplete(anchor)\n }, exitDelay + (exitDuration || duration || 0))\n return () => clearTimeout(ref)\n }, [ anchor ])\n\n return hidden\n}\n","import React from 'react'\nimport { Fade as ChakraFade } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { FadeProps } from './types'\n/**\n * Simple transition to hide/show content\n * @see ScaleFade\n * @see SlideFade\n * @see {@link https://northlight.dev/reference/fade}\n *\n * @example (Example)\n * ##View other options\n * (?\n *\n() => {\n const [ show, setShow ] = useState(false)\n const toggle = () => {\n setShow((prev) => !prev)\n\n }\n return (\n <>\n <Button onClick={toggle}>Render random number</Button>\n <Box borderRadius=\"sm\"\n borderWidth=\"sm\" borderColor=\"border.default\">\n <Fade in={ show} exitDuration={1}>\n <HStack p=\"10\" bg=\"bg.filled\" rounded=\"md\" >\n <H3>\n {Math.round(Math.random() * 100)}\n </H3>\n </HStack>\n </Fade>\n </Box>\n </>\n\n )\n\n}\n\n * ?)\n *\n */\nexport const Fade = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: FadeProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraFade\n in={ showWithDelay }\n transition={ transition }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraFade>\n )\n}\n","import React from 'react'\nimport { ScaleFade as ChakraScaleFade } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { ScaleFadeProps } from './types'\n\n/**\n * Simple transition to hide/show content\n * @see Fade\n * @see SlideFade\n * @see {@link https://northlight.dev/reference/slide-fade}\n *\n * @example (Example)\n * ##View other options\n * (?\n *\n() => {\n const [ show, setShow ] = useState(false)\n const toggle = () => {\n setShow((prev) => !prev)\n\n }\n return (\n <>\n <Button onClick={toggle}>Render random number</Button>\n <Box borderRadius=\"sm\"\n borderWidth=\"sm\" borderColor=\"border.default\">\n <SlideFade in={ show} exitDuration={1}>\n <HStack p=\"10\" bg=\"bg.filled\" rounded=\"md\" >\n <H3>\n {Math.round(Math.random() * 100)}\n </H3>\n </HStack>\n </SlideFade>\n </Box>\n </>\n )\n}\n * ?)\n *\n */\nexport const ScaleFade = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: ScaleFadeProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraScaleFade\n in={ showWithDelay }\n transition={ transition }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraScaleFade>\n )\n}\n","import React from 'react'\nimport { Slide as ChakraSlide } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { SlideProps } from './types'\n\nexport const Slide = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n direction = 'bottom',\n onTransitionComplete = identity,\n ...rest\n}: SlideProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraSlide\n in={ showWithDelay }\n transition={ transition }\n direction={ direction }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraSlide>\n )\n}\n","import React from 'react'\nimport { SlideFade as ChakraSlideFade } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, getOffsets, useDelay, useHiddenDisplay } from './utils'\nimport { SlideFadeProps } from './types'\nimport { defaultOffset } from './constants'\n\nexport const SlideFade = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n direction = 'bottom',\n offset: delta = defaultOffset,\n offsetX: deltaX = 0,\n offsetY: deltaY = 0,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: SlideFadeProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const { offsetX, offsetY } = getOffsets(direction, delta, deltaX, deltaY)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraSlideFade\n in={ showWithDelay }\n transition={ transition }\n offsetX={ offsetX }\n offsetY={ offsetY }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraSlideFade>\n )\n}\n","import React from 'react'\nimport { Collapse as ChakraCollapse } from '@chakra-ui/react'\nimport { identity } from 'ramda'\nimport { getChildrenWithFocus, getDuration, useDelay, useHiddenDisplay } from './utils'\nimport { CollapseProps } from './types'\n\n/**\n * Simple transition to hide/show content\n * @see Fade\n * @see ScaleFade\n * @see SlideFade\n * @see {@link https://northlight.dev/reference/collapse}\n *\n * @example (Example)\n * ##View other options\n * (?\n *\n() => {\n const [ show, setShow ] = useState(false)\n const toggle = () => {\n setShow((prev) => !prev)\n\n }\n return (\n <>\n <Button onClick={toggle}>Click Me</Button>\n <Box borderRadius=\"sm\"\n borderWidth=\"sm\" borderColor=\"border.default\">\n <Collapse in={ show}>\n <HStack p=\"10\" bg=\"bg.filled\" rounded=\"md\" >\n <P>\n Enable advanced mode\n </P>\n\n <Switch />\n </HStack>\n </Collapse>\n </Box>\n </>\n\n )\n\n}\n\n * ?)\n\n *\n */\n\nexport const Collapse = ({\n children,\n enterDuration = null,\n exitDuration = null,\n duration = null,\n in: show = false,\n disableFocus = true,\n hideDisplay = false,\n enterDelay = 0,\n exitDelay = 0,\n onTransitionComplete = identity,\n ...rest\n}: CollapseProps) => {\n const transition = getDuration(enterDuration, exitDuration, duration)\n const showWithDelay = useDelay(show, enterDelay, exitDelay)\n const isHidden = useHiddenDisplay(show, exitDelay, exitDuration, duration, onTransitionComplete)\n const childrenWithProps = getChildrenWithFocus(children, disableFocus, isHidden)\n\n return (\n <ChakraCollapse\n in={ showWithDelay }\n transition={ transition }\n unmountOnExit={ hideDisplay }\n { ...rest }\n >\n { childrenWithProps }\n </ChakraCollapse>\n )\n}\n","import React from 'react'\nimport { useMultiStyleConfig, useToken } from '@chakra-ui/system'\nimport { coreZIndex } from '@northlight/tokens'\nimport { FocusScope } from '@react-aria/focus'\nimport { useResizeWidth } from '../../hooks'\nimport { Flex } from '../flex'\nimport { Slide } from '../transitions'\nimport { Box } from '../box'\nimport { Portal } from '../portal'\nimport { ToolboxProps } from './types'\nimport { getChildrenWithProps } from '../../utils'\nimport { ResizeHandle } from '../resize-handle'\nimport { VStack } from '../stack'\n\n/**\n * Controllable Sidebar drawer\n * @see Slide\n * @see {@link https://northlight.dev/reference/toolbox}\n * @example\n * (?\n *() => {\n const { isOpen, onOpen, onClose } = useDisclosure()\n return (\n <Flex>\n <Button onClick={ onOpen } w=\"full\">\n Open Toolbox\n </Button>\n <Toolbox\n isOpen={ isOpen }\n isResizable={ true }\n onClose={ onClose }\n size=\"sm\"\n resizeLimit=\"half\"\n >\n <ToolboxHeader>Title</ToolboxHeader>\n <ToolboxContent>\n <Stack>\n <Input />\n <Input />\n </Stack>\n </ToolboxContent>\n <ToolboxFooter justifyContent=\"end\" gap=\"2\">\n <Button variant=\"ghost\">Cancel</Button>\n <Button variant=\"brand\">Save</Button>\n </ToolboxFooter>\n </Toolbox>\n </Flex>\n )\n }\n * ?)\n */\nexport const Toolbox = ({\n isResizable = false,\n isOpen = false,\n children,\n direction = 'right',\n shouldPush = false,\n size = 'sm',\n onClose,\n autoFocus = true,\n resizeLimit = 'full',\n zIndex = coreZIndex.overlay,\n slideProps,\n ...rest\n}: ToolboxProps) => {\n const { container } = useMultiStyleConfig('Toolbox', { size })\n const newChildren = getChildrenWithProps(\n children,\n { onClose },\n (_child, i) => i === 0\n )\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation()\n onClose?.()\n }\n }\n\n const getPixelSize = (sizeToken: string) => {\n const widthInRem = useToken('sizes', sizeToken)\n return parseFloat(widthInRem) * 16\n }\n\n const defaultWidthPx = getPixelSize(size)\n const minWidthPx = getPixelSize('sm')\n const maxWidthPx =\n resizeLimit === 'half' ? 0.5 * window.innerWidth : window.innerWidth\n\n const { adjustableWidth, resizeProps } = useResizeWidth({\n minWidthPx,\n maxWidthPx,\n defaultWidthPx,\n stationaryEdge: direction,\n })\n\n return (\n <Box\n w={ adjustableWidth }\n display={ isOpen && shouldPush ? 'initial' : 'none' }\n >\n <Portal>\n <Slide\n direction={ direction }\n in={ isOpen }\n style={ {\n height: container.h as string,\n width: adjustableWidth,\n zIndex,\n } }\n { ...slideProps }\n >\n <Flex\n sx={ { ...container, w: adjustableWidth } }\n onKeyDown={ handleKeyDown }\n position=\"relative\"\n overflow=\"hidden\"\n direction={ direction === 'left' ? 'row-reverse' : 'row' }\n { ...rest }\n >\n { isResizable && <ResizeHandle { ...resizeProps } /> }\n <FocusScope autoFocus={ autoFocus }>\n <VStack w=\"full\" h=\"full\" alignItems=\"normal\">\n { newChildren }\n </VStack>\n </FocusScope>\n </Flex>\n </Slide>\n </Portal>\n </Box>\n )\n}\n","import React from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/system'\nimport { CloseButton } from '../close-button'\nimport { Flex } from '../flex'\nimport { ToolboxHeaderProps } from './types'\nimport { H4 } from '../typography'\n\n/**\n * @see Toolbox\n * @see {@link https://northlight.dev/reference/toolbox-header}\n *\n */\nexport const ToolboxHeader = ({\n children,\n onClose,\n ...rest\n}: ToolboxHeaderProps) => {\n const { header } = useMultiStyleConfig('Toolbox', {})\n\n return (\n <Flex sx={ header } { ...rest }>\n { typeof children === 'string' ? <H4>{ children }</H4> : children }\n <CloseButton\n aria-label=\"Close toolbox\"\n position=\"fixed\"\n right={ 4 }\n onClick={ onClose }\n />\n </Flex>\n )\n}\n","import React from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/system'\nimport { merge } from 'ramda'\nimport { Flex } from '../flex'\nimport { ToolboxContentProps } from './types'\n\n/**\n * Main content of toolbox drawer\n * @see Toolbox\n * @see {@link https://northlight.dev/reference/toolbox-content}\n */\nexport const ToolboxContent = ({ sx = {}, children, ...rest }: ToolboxContentProps) => {\n const { body } = useMultiStyleConfig('Toolbox', {})\n\n return (\n <Flex\n sx={ merge(body, sx) }\n { ...rest }\n >\n { children }\n </Flex>\n )\n}\n","import { useMultiStyleConfig } from '@chakra-ui/system'\nimport React from 'react'\nimport { Flex } from '../flex'\nimport { ToolboxFooterProps } from './types'\n\n/**\n * @see Toolbox\n * @see {@link https://northlight.dev/reference/toolbox-footer}\n */\nexport const ToolboxFooter = ({ children, ...rest }: ToolboxFooterProps) => {\n const { footer } = useMultiStyleConfig('Toolbox', {})\n\n return (\n <Flex sx={ footer } { ...rest }>\n { children }\n </Flex>\n )\n}\n","import React from 'react'\nimport { Radio as ChakraRadio } from '@chakra-ui/react'\nimport { RadioProps } from './types'\n\n/**\n * @see RadioGroup\n * @see {@link https://northlight.dev/reference/radio}\n */\nexport const Radio = ({\n size = 'md',\n onChange,\n name,\n value,\n ...rest\n}: RadioProps) => (\n <ChakraRadio\n size={ size }\n id={ name }\n onChange={ onChange }\n value={ value }\n { ...rest }\n />\n)\n","import React from 'react'\nimport { RadioGroup as ChakraRadioGroup } from '@chakra-ui/react'\nimport { RadioGroupProps } from './types'\nimport { Stack } from '../stack'\n\n/**\n * Wrapper to select one of multiple options\n * @see {@link https://northlight.dev/reference/radio-group}\n * @example\n * (?\n <RadioGroup>\n <HStack>\n <Radio value=\"1\" />\n <Radio value=\"2\" />\n <Radio value=\"3\" />\n </HStack>\n </RadioGroup>\n * ?)\n *\n */\nexport const RadioGroup = ({\n direction = 'row',\n children,\n name,\n ...rest\n}: RadioGroupProps) => (\n <ChakraRadioGroup name={ name } id={ name } { ...rest }>\n <Stack direction={ direction }>{ children }</Stack>\n </ChakraRadioGroup>\n)\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { RadioFieldGroupProps } from './types'\nimport { Field } from '../form'\nimport { RadioGroup } from './radio-group'\nimport { Box } from '../box'\n\n/**\n * The radio group component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see RadioGroup\n * @see Radio\n * @see {@link https://northlight.dev/reference/radio-group-field}\n *\n */\nexport const RadioGroupField = forwardRef<HTMLDivElement, RadioFieldGroupProps>(({\n name,\n label,\n children,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}, ref) => (\n <Box w={ label ? 'full' : 'fit-content' }>\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <RadioGroup\n name={ name }\n onChange={ (e) => { onChange(e); onChangeCallback(e) } }\n direction={ direction }\n value={ value }\n data-testid=\"radio-group-field-test-id\"\n { ...rest }\n >\n { children }\n </RadioGroup>\n ) }\n </Field>\n </Box>\n))\n","export const carouselItemWidth = 150\nexport const carouselItemSpacing = 60\n","import React from 'react'\nimport { motion } from 'framer-motion'\nimport { Center } from '../center'\nimport { carouselItemWidth } from './constants'\nimport { CarouselItemProps } from './types'\n\nconst variants = {\n active: { scale: 1.15, opacity: 1 },\n inActive: { scale: 0.95, opacity: 0.7 },\n}\n\nexport const CarouselItem = ({\n children,\n isActive = false,\n itemWidth = carouselItemWidth,\n itemHeight = carouselItemWidth,\n}: CarouselItemProps) => (\n <motion.div animate={ isActive ? 'active' : 'inActive' } variants={ variants }>\n <Center minW={ `${itemWidth}px` } h={ `${itemHeight}px ` }>\n { children }\n </Center>\n </motion.div>\n)\n","import React from 'react'\nimport { ChevronLeftSolid, ChevronRightSolid } from '@northlight/icons'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Center } from '../center'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { CarouselArrowProps } from './types'\n\nexport const CarouselArrow = ({\n onClick,\n direction,\n ...rest\n}: CarouselArrowProps) => {\n const { arrow } = useMultiStyleConfig('Carousel', {})\n\n return (\n <Center\n sx={ arrow }\n onClick={ onClick }\n { ...rest }\n >\n <IconButton aria-label={ `move carousel to ${direction}` } variant=\"ghost\" size=\"lg\">\n <Icon as={ direction === 'right' ? ChevronRightSolid : ChevronLeftSolid } />\n </IconButton>\n </Center>\n )\n}\n","import React, { Children, useEffect, useRef, useState } from 'react'\nimport { animate, motion, useMotionValue } from 'framer-motion'\nimport { identity } from 'ramda'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Box } from '../box'\nimport { HStack } from '../stack'\nimport { Radio, RadioGroup } from '../radio'\nimport { CarouselItem } from './carousel-item'\nimport { CarouselArrow } from './carousel-arrow'\nimport { carouselItemSpacing, carouselItemWidth } from './constants'\nimport { CarouselProps } from './types'\n\n/**\n * Easiely one of the fanciest components, horizontal carousel wrapper for anything\n *\n * @see {@link https://northlight.dev/reference/carousel}\n *\n * @example (Example)\n * The carousel takes up 100% of its parents container width and height.\n * It then renders all children div into a draggable div using framer-motion\n\n * (?\n * +\n *const Item = ({ name, ...rest }) => (\n <Center color=\"white\" bg=\"teal.500\" rounded=\"md\" w=\"full\" h=\"full\" { ...rest }>\n { name }\n </Center>\n)\n\nconst MyCarousel = () => (\n<Box h=\"300px\">\n <Carousel>\n <Item name=\"Item 1\" />\n <Item name=\"Item 2\" />\n <Item name=\"Item 3\" />\n </Carousel>\n</Box>\n\n)\n\nrender(<MyCarousel />)\n *\n * ?)\n *\n * @example (Example)\n * ##Controling the carousel state\n * The carousel takes an **onChange** and value\n * (which is the index of the current active element), meaning it can be controlled.\n *\n * (?\n * +\n * const Item = ({ name, ...rest }) => (\n <Center color=\"white\" bg=\"teal.500\" rounded=\"md\" w=\"full\" h=\"full\" { ...rest }>\n { name }\n </Center>\n)\n\nconst MyCarousel = () => {\n const [index, setIndex ] = useState(0)\n return (\n\n <VStack\n borderColor=\"border.default\"\n borderWidth=\"sm\" borderStyle=\"solid\" p=\"2\" borderRadius=\"lg\">\n <Box w=\"full\" h=\"sm\">\n <Carousel\n showArrows={ false }\n showRadio={ false }\n value={ index }\n onChange={ (v) => setIndex(v) }\n >\n <Item name=\"Item 1\" />\n <Item name=\"Item 2\" />\n <Item name=\"Item 3\" />\n </Carousel>\n </Box>\n <FlipButtonGroup\n onChange={ (v) => setIndex(parseInt(v, 10)) }\n value={ `${index}` }\n variant=\"brand\"\n >\n <FlipButton value=\"0\">One</FlipButton>\n <FlipButton value=\"1\">Two</FlipButton>\n <FlipButton value=\"2\">Three</FlipButton>\n </FlipButtonGroup>\n </VStack>\n )\n}\n*\nrender(<MyCarousel/>)\n * ?)\n *(You can also hide the default\n navigational arrows and radio button using <b>showArrows</b> and\n <b>showRadio</b> as in example)\n */\nexport const Carousel = ({\n children,\n showArrows = true,\n showRadio = true,\n value: controlledIndex = 0,\n onChange = identity,\n itemWidth = carouselItemWidth,\n itemHeight = carouselItemWidth,\n spacing = carouselItemSpacing,\n carouselStyles = {},\n ...rest\n}: CarouselProps) => {\n const [ dragging, setDragging ] = useState(false)\n const [ containerWidth, setContainerWidth ] = useState(0)\n const [ activeIndex, setActiveIndex ] = useState(0)\n const x = useMotionValue(0)\n const { radio, container } = useMultiStyleConfig('Carousel', {})\n\n const childrenAsArray = Children.toArray(children) as JSX.Element[]\n const numberOfChildren = Children.count(children)\n const carouselTotalWidth = itemWidth + spacing\n const totalWidth = carouselTotalWidth * numberOfChildren\n\n const containerRef = useRef<any>(null)\n\n useEffect(() => {\n setContainerWidth(containerRef.current.clientWidth)\n }, [])\n\n const getNewX = () => -(activeIndex * carouselTotalWidth)\n\n const updateActiveIndex = () => {\n setActiveIndex(Math.abs(Math.round(x.get() / carouselTotalWidth)))\n }\n\n useEffect(() => {\n animate(x, getNewX())\n onChange(activeIndex)\n }, [ activeIndex ])\n\n useEffect(() => {\n setActiveIndex(controlledIndex)\n }, [ controlledIndex ])\n\n const handleRightArrowClick = () => {\n setActiveIndex((prev) =>\n (activeIndex === numberOfChildren - 1 ? 0 : prev + 1)\n )\n }\n\n const handleLeftArrowClick = () => {\n setActiveIndex((prev) =>\n (activeIndex === 0 ? numberOfChildren - 1 : prev - 1)\n )\n }\n\n return (\n <Box\n cursor={ dragging ? 'grabbing' : 'grab' }\n onMouseDown={ () => setDragging(true) }\n onMouseUp={ () => setDragging(false) }\n ref={ containerRef }\n pl={ `${(containerWidth - itemWidth) / 2}px` }\n sx={ container }\n { ...rest }\n >\n <motion.div\n drag=\"x\"\n style={ {\n width: `${totalWidth}px`,\n height: '100%',\n x,\n } }\n dragConstraints={ { right: 0, left: -(totalWidth - itemWidth) } }\n onDragEnd={ updateActiveIndex }\n >\n <HStack\n spacing={ `${spacing}px` }\n width={ `${totalWidth}px` }\n h=\"full\"\n { ...carouselStyles }\n >\n { childrenAsArray.map((child, index) => (\n <CarouselItem\n isActive={ index === activeIndex }\n itemWidth={ itemWidth }\n itemHeight={ itemHeight }\n key={ `carousel-item-${index as number}` }\n >\n { child }\n </CarouselItem>\n )) }\n </HStack>\n </motion.div>\n { showRadio && (\n <RadioGroup\n onChange={ (val) => setActiveIndex(parseInt(val, 10)) }\n value={ `${activeIndex}` }\n sx={ radio }\n >\n <HStack>\n { childrenAsArray.map((_child, i) => (\n <Radio\n value={ `${i}` }\n size=\"lg\"\n key={ `carousel-radio-${i as number}` }\n />\n )) }\n </HStack>\n </RadioGroup>\n ) }\n { showArrows && (\n <>\n <CarouselArrow\n direction=\"left\"\n onClick={ handleLeftArrowClick }\n left=\"2\"\n />\n <CarouselArrow\n direction=\"right\"\n onClick={ handleRightArrowClick }\n right=\"2\"\n />\n </>\n ) }\n </Box>\n )\n}\n","import { ChakraStylesConfig } from 'chakra-react-select'\nimport { merge } from 'ramda'\nimport { getContrastColor } from '../../utils'\n\nexport const searchBarStyles = (\n sx: ChakraStylesConfig<any>\n): ChakraStylesConfig<any> =>\n merge({\n container: (provided) => ({\n ...provided,\n width: '100%',\n color: 'text.default',\n alignSelf: 'center',\n }),\n option: (provided, state) => ({\n ...provided,\n background: state.isFocused && 'background.select.option-focus',\n _active: {\n background: 'background.select.option-active',\n },\n }),\n valueContainer: (provided) => ({\n ...provided,\n paddingInlineStart: 'padding-inline.select.default',\n }),\n downChevron: (provided) => ({\n ...provided,\n color: 'icon.select.default',\n }),\n placeholder: (provided) => ({\n ...provided,\n color: 'text.select.placeholder',\n }),\n multiValue: (provided, state) => {\n const background = state.data.isFixed\n ? 'background.select.option-disabled'\n : state.data.color ?? provided.bgColor\n return {\n ...provided,\n bgColor: background,\n color: getContrastColor(background),\n ...sx.multiValue,\n }\n },\n menuList: (provided) => ({\n ...provided,\n bgColor: 'background.default',\n }),\n } as ChakraStylesConfig<any>, sx)\n","import React from 'react'\nimport {\n ControlProps,\n DropdownIndicatorProps,\n GroupBase,\n MenuProps,\n MultiValueGenericProps,\n OptionProps,\n chakraComponents,\n} from 'chakra-react-select'\nimport { merge } from 'ramda'\nimport { Box } from '../box'\nimport { HStack } from '../stack'\nimport { Icon } from '../icon'\nimport { SearchBarOptionType } from './types'\n\nexport function getComponents<T extends SearchBarOptionType> (\n components?: Record<string, any>\n) {\n return merge(\n {\n Menu: (props: MenuProps<T>) => (\n <Box data-testid=\"select-menu-wrapper-test-id\">\n <chakraComponents.Menu { ...props }>\n { props.children }\n </chakraComponents.Menu>\n </Box>\n ),\n DropdownIndicator: (props: DropdownIndicatorProps<T>) =>\n (props.selectProps.icon ? (\n <chakraComponents.DropdownIndicator { ...props }>\n <Icon as={ props.selectProps.icon } />\n </chakraComponents.DropdownIndicator>\n ) : (\n <chakraComponents.DropdownIndicator { ...props } />\n )),\n Option: (props: OptionProps<T>) =>\n (props.selectProps.customOption ? (\n <chakraComponents.Option { ...props }>\n { props.selectProps.customOption(props.data) }\n </chakraComponents.Option>\n ) : (\n <chakraComponents.Option { ...props } />\n )),\n MultiValueContainer: (\n props: MultiValueGenericProps<T, boolean, GroupBase<T>>\n ) =>\n (props.selectProps.customTag ? (\n <chakraComponents.MultiValueContainer { ...props }>\n { props.selectProps.customTag(props.data) }\n </chakraComponents.MultiValueContainer>\n ) : (\n <chakraComponents.MultiValueContainer { ...props } />\n )),\n Control: ({\n children,\n ...props\n }: ControlProps<T, boolean, GroupBase<T>>) =>\n (props.selectProps.leftComponent ? (\n <chakraComponents.Control { ...props }>\n <HStack w=\"full\" pl=\"2\">\n { props.selectProps.leftComponent }\n <HStack w=\"full\" justify=\"space-between\">\n { children }\n </HStack>\n </HStack>\n </chakraComponents.Control>\n ) : (\n <chakraComponents.Control { ...props }>\n { children }\n </chakraComponents.Control>\n )),\n },\n components || {}\n )\n}\n","import React, { forwardRef, useMemo, useState } from 'react'\nimport {\n AsyncSelect,\n GroupBase,\n InputActionMeta,\n SelectInstance,\n} from 'chakra-react-select'\nimport { filter, identity, is, test, toLower } from 'ramda'\nimport { SearchDuo } from '@northlight/icons'\nimport { createDebounceFunctionInstance } from '../../utils'\nimport { searchBarStyles } from './styles'\nimport { useSelectCallbacks } from '../../hooks'\nimport { Box } from '../box'\nimport { SearchBarOptionType, SearchBarProps } from './types'\nimport { getComponents } from './get-components'\n\nexport const SearchBar = forwardRef(\n <T extends SearchBarOptionType, K extends boolean = false>({\n defaultOptions = [],\n isMulti,\n customOption = null,\n customTag = null,\n sx = {},\n debouncedWaitTime = 200,\n loadOptions: getCustomOptions = null,\n clearInputOnSelect = true,\n closeMenuOnSelect = false,\n onChange = identity,\n onAdd = identity,\n onRemove = identity,\n 'data-testid': testId,\n value,\n onSearchInputChange = identity,\n icon = SearchDuo,\n ...rest\n }: SearchBarProps<T, K>,\n ref: React.Ref<SelectInstance<T, K, GroupBase<T>>>\n ) => {\n const [ filtered, setFiltered ] = useState(defaultOptions)\n const [ filterInput, setFilterInput ] = useState('')\n const debounceFunction = useMemo(\n () => createDebounceFunctionInstance(debouncedWaitTime),\n [ debouncedWaitTime ]\n )\n const handleChange = useSelectCallbacks<T, K>({\n onChange,\n onAdd,\n onRemove,\n isMulti,\n value: is(Array, value) ? value as T[] : [],\n })\n\n const customComponents = useMemo(\n () => getComponents<T>(),\n []\n )\n\n const simpleFilter = (query: string) => {\n if (typeof defaultOptions === 'boolean') return []\n return filter(\n (option: T) =>\n test(new RegExp(toLower(query), 'g'), toLower(option.label)),\n defaultOptions\n )\n }\n const getOptions = async (query: string) => {\n const newOptions = getCustomOptions\n ? await getCustomOptions(query)\n : simpleFilter(query)\n setFiltered((prev) => {\n // If default value is a boolean we want default value to persist to it's initial value\n // this is to allow pre-fetching of values on first render\n if (typeof prev === 'boolean') return prev\n return newOptions\n })\n\n return newOptions\n }\n\n const loadOptions = debounceFunction(async (\n query: string,\n callback: (options: T[]) => void\n ) => {\n const newOptions = await getOptions(query)\n callback(newOptions)\n return []\n })\n\n const resetFiltered = (v: string, { action }: InputActionMeta) => {\n if (clearInputOnSelect || action !== 'set-value') {\n setFilterInput(v)\n onSearchInputChange(v)\n if (v === '') {\n setFiltered(defaultOptions)\n }\n }\n }\n\n return (\n <Box w=\"full\" data-testid={ testId }>\n <AsyncSelect<T, K>\n cacheOptions={ true }\n defaultOptions={ filtered }\n loadOptions={ loadOptions }\n onChange={ handleChange }\n placeholder=\"Search...\"\n chakraStyles={ searchBarStyles(sx) }\n isMulti={ isMulti }\n useBasicStyles={ true }\n selectedOptionStyle=\"check\"\n hideSelectedOptions={ false }\n closeMenuOnSelect={ closeMenuOnSelect }\n isClearable={ false }\n onInputChange={ resetFiltered }\n inputValue={ filterInput }\n customOption={ customOption }\n customTag={ customTag }\n icon={ icon }\n components={ customComponents }\n ref={ ref }\n value={ value }\n { ...rest }\n />\n </Box>\n )\n }\n)\n","import React, { forwardRef } from 'react'\nimport { FieldValues } from 'react-hook-form'\nimport { XCloseSolid } from '@northlight/icons'\nimport { identity, isEmpty } from 'ramda'\nimport { SearchBarFieldProps, SearchBarOptionType } from './types'\nimport { Field } from '../form'\nimport { SearchBar } from './search-bar'\nimport { HStack } from '../stack'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { InputGroupWrapper } from '../../internal-components/input-group-wrapper/input-group-wrapper'\n\nconst BaseSearchBarField = <T extends SearchBarOptionType, K extends boolean = false> ({\n name,\n label,\n direction = 'column',\n isMulti,\n isRequired,\n validate,\n isClearable = true,\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n}: SearchBarFieldProps<T, K>, ref: React.Ref<HTMLDivElement>) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n noLabelConnection={ true }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }) => (\n <HStack w=\"full\">\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <SearchBar\n name={ name }\n isMulti={ isMulti }\n onChange={ (values: FieldValues, event) => {\n onChange(\n isMulti\n ? values\n : values.value\n )\n onChangeCallback(values as T | T[], event)\n } }\n value={ value }\n { ...rest }\n />\n </InputGroupWrapper>\n <IconButton\n aria-label={ `${name}-close-button` }\n variant=\"danger\"\n size=\"lg\"\n fontSize=\"sm\"\n hidden={ isEmpty(value) || !isClearable }\n onClick={ () => onChange([]) }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </HStack>\n ) }\n </Field>\n )\n\nexport const SearchBarField = forwardRef(BaseSearchBarField)\n","import React from 'react'\nimport { DndContext, DndContextProps } from '@dnd-kit/core'\n\n/**\n * Context used for all drag and drop components\n * (Based on dnd-kit)\n * @see Draggable\n * @see Droppable\n * @see {@link https://northlight.dev}\n * @see {@link https://dndkit.com/}\n *\n */\nexport const DragAndDrop = (props: DndContextProps) => (\n <DndContext { ...props } />\n)\n","import React, { forwardRef } from 'react'\nimport { Tag as ChakraTag } from '@chakra-ui/react'\nimport { useCurrentTheme } from '../../utils'\nimport { TagProps } from './types'\n\n/**\n * Tag component is used for items that need to be labeled,\n * categorized, or organized using keywords that describe them.\n * @see TagGroup\n * @see {@link https://northlight.dev/reference/tag}\n *\n * @example\n * (?\n * <Tag>Hello</Tag>\n * ?)\n *\n * @example\n * (?\n * +\n * const colors = [\"mediatoolBlue\", \"blue\", \"gray\", \"red\", \"green\",\n * \"orange\", \"yellow\", \"teal\", \"purple\", \"pink\"]\n * const variants = [\"solid\", \"subtle\"]\n * const Example = () => {\n * return <Stack>\n * { colors.map((color) => (\n * <HStack spacing={ 4 }>\n * {\n * variants.map((variant) => (\n * <HStack spacing={ 4 }>\n * <Tag size=\"sm\" variant={variant} colorScheme={color}>\n * <TagLeftIcon size=\"xs\">\n* <Icon as={ MediatoolLogoDuo } />\n * </TagLeftIcon>\n * <TagLabel>\n * Hello\n * </TagLabel>\n * <TagRightIcon size=\"xs\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagRightIcon>\n * </Tag>\n * <Tag size=\"md\" variant={variant} colorScheme={color}>\n * <TagLeftIcon size=\"md\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagLeftIcon>\n * <TagLabel>\n * Hello\n * </TagLabel>\n * <TagRightIcon size=\"md\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagRightIcon>\n * </Tag>\n * <Tag size=\"lg\" variant={variant} colorScheme={color}>\n * <TagLeftIcon size=\"lg\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagLeftIcon>\n * <TagLabel>\n * Hello\n * </TagLabel>\n * <TagRightIcon size=\"lg\">\n * <Icon as={ MediatoolLogoDuo } />\n * </TagRightIcon>\n * </Tag>\n * </HStack>\n * ))\n * }\n * </HStack>\n * ))\n * }\n * </Stack>\n * }\n * render(<Example/>)\n * ?)\n *\n *\n*/\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(({\n children,\n variant = 'solid',\n bgColor,\n colorScheme,\n ...rest\n}, ref) => {\n const currentTheme = useCurrentTheme()\n\n return (\n <ChakraTag\n bgColor={ bgColor }\n colorScheme={ colorScheme }\n ref={ ref }\n variant={ variant }\n currentTheme={ currentTheme }\n { ...rest }\n >\n { children }\n </ChakraTag>\n )\n})\n","import React from 'react'\nimport { OverflowIndicatorProps } from './types'\nimport { Tag } from './tag'\n\nexport const OverflowIndicator = ({\n nbrRemainingTags,\n}: OverflowIndicatorProps) => (\n <Tag variant=\"subtle\" minW=\"max-content\">\n +{ nbrRemainingTags }\n </Tag>\n)\n","import React, { useState } from 'react'\nimport { HStack } from '../stack'\nimport { OverflowGroup, useOverflowGroup } from '../overflow-group'\nimport { TagGroupProps } from './types'\nimport { OverflowIndicator as DefaultOverflowIndicator } from './overflow-indicator'\n\n/**\n * Used when rending multiple tags in limited container for responsive layout\n * @see Tag\n * @see {@link https://northlight.dev/reference/tag-group}\n *\n * @example\n * ##Try resizing the window!\n * (?\n <TagGroup w=\"full\"\n borderWidth=\"sm\"\n borderColor=\"border.default\"\n borderStyle=\"solid\"\n p=\"2\"\n borderRadius=\"md\"\n >\n { Array.from({length: 20}, (_, i) => i).map((i) => (\n <Tag w=\"max-content\" key={ i }>Brand-{ i }</Tag>\n )) }\n </TagGroup>\n * ?)\n *\n *\n */\nexport const TagGroup = ({\n children,\n max = Infinity,\n spacing = '2',\n OverflowIndicator = DefaultOverflowIndicator,\n ...rest\n}: TagGroupProps) => {\n const [ nbrRemainingTags, setNbrRemainingTags ] = useState(0)\n const { rect, containerRef } = useOverflowGroup()\n\n return (\n <HStack\n bgColor=\"background.default\"\n ref={ containerRef }\n overflow=\"hidden\"\n { ...rest }\n >\n <HStack spacing={ spacing }>\n <OverflowGroup max={ max } onChange={ setNbrRemainingTags } rect={ rect }>\n { children }\n </OverflowGroup>\n </HStack>\n { nbrRemainingTags > 0 && (\n <OverflowIndicator nbrRemainingTags={ nbrRemainingTags } />\n ) }\n </HStack>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { DotsMatrixSolid } from '@northlight/icons'\nimport { Tag, TagLabel, TagRightIcon } from '../tag'\nimport { Icon } from '../icon'\nimport { DragItemProps } from './types'\n\n/**\n * Default draggable item none other provided in SortableList and MultiSort.\n * Renders a tag which can be used under the DragAndDrop context\n * @see DragAndDrop\n * @see SortableList\n * @see MultiSort\n * @see {@link https://northlight.dev/reference/drag-item}\n *\n * @example (Example)\n * (?\n * <DragItem itemLabel=\"Option 1\" bgColor=\"bg.filled\" />\n * ?)\n *\n */\nexport const DragItem = forwardRef<HTMLSpanElement, DragItemProps>(({\n size = 'md',\n isDragging,\n itemLabel = 'Drag Me',\n bgColor,\n ...rest\n}, ref) => (\n <Tag\n ref={ ref }\n cursor={ isDragging ? 'grabbing' : 'grab' }\n bgColor={ bgColor || (isDragging ? 'blue.200' : undefined) }\n size={ size }\n minW=\"max-content\"\n { ...rest }\n >\n <TagLabel>{ itemLabel }</TagLabel>\n <TagRightIcon>\n <Icon as={ DotsMatrixSolid } />\n </TagRightIcon>\n </Tag>\n)\n)\n","import React, { cloneElement, isValidElement } from 'react'\nimport { useDraggable } from '@dnd-kit/core'\nimport { CSS } from '@dnd-kit/utilities'\nimport { Box } from '../box'\nimport { DraggableProps } from './types'\nimport { DragItem } from './drag-item'\nimport { ring } from '../../utils'\n\n/**\n * Will turn it's childen into a draggable component when under DragAndDrop context\n * @see {@link https://northlight.dev/reference/draggable}\n *\n * @example (Example)\n * ##Basic exapmle\n * (?\n * <DragAndDrop>\n * <HStack>\n * <Draggable id=\"random-id\" />\n * <Draggable />\n * </HStack>\n * </DragAndDrop>\n * ?)\n * <br />\n * (Notice that the id prop is required)\n *\n * @example (Example)\n * ## With custom children\n *\n * (?\n * <DragAndDrop>\n * <Box p=\"4\">\n * <Draggable id=\"random-id\">\n * <Center\n * boxSize=\"3xs\"\n * boxShadow=\"xl\"\n * borderRadius=\"lg\"\n * bgColor=\"bg.overlayer\"\n * >I am draggable</Center>\n * </Draggable>\n * </Box>\n *\n * </DragAndDrop>\n * ?)\n *\n *\n */\nexport const Draggable = ({\n itemLabel,\n children,\n disableDrag = false,\n 'data-testid': dataTestId,\n ...rest\n}: DraggableProps) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n isDragging,\n ...props\n } = useDraggable({ ...rest })\n if (!listeners) {\n return (\n <DragItem itemLabel={ itemLabel } />\n )\n }\n\n const childrenWithDragCursor = isValidElement(children)\n ? cloneElement(children as JSX.Element, {\n cursor: isDragging ? 'grabbing' : 'grab',\n })\n : children\n\n const dragEventListeners = !disableDrag && listeners\n\n return (\n <Box\n ref={ setNodeRef }\n { ...attributes }\n transform={ CSS.Translate.toString(transform) }\n _focusVisible={ ring }\n tabIndex={ disableDrag ? -1 : 0 }\n w=\"max-content\"\n data-testid={ dataTestId }\n { ...dragEventListeners }\n >\n { typeof childrenWithDragCursor === 'function'\n ? childrenWithDragCursor(listeners, props)\n : childrenWithDragCursor || (\n <DragItem isDragging={ isDragging } itemLabel={ itemLabel } />\n ) }\n </Box>\n )\n}\n","import React from 'react'\nimport { useDroppable } from '@dnd-kit/core'\nimport { Box } from '../box'\nimport { Center } from '../center'\nimport { DroppableProps } from './types'\n\n/**\n * Wrapper where you can style a container to place draggable elements\n * @see DropZone\n * @see Draggable\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/droppable}\n *\n * @example (Example)\n * ## Move the item into the container\n * (?\n * () => {\n * const [ isDropped, setIsDropped ] = useState(false)\n * const handleDragEnd = (e) => {\n * setIsDropped(e.over && e.over.id === 'droppable')\n * }\n *\n * return (\n * <DragAndDrop onDragEnd={handleDragEnd}>\n * <HStack>\n * {!isDropped && <Draggable id=\"draggable\" />}\n * <Droppable id=\"droppable\">\n * <Center bgColor=\"bg.filled\" boxSize=\"3xs\">\n * {isDropped ? <Draggable id=\"draggable\"/> : <P>Drop here!</P>}\n * </Center>\n * </Droppable>\n * </HStack>\n *\n * </DragAndDrop>\n *\n * )\n *\n *\n * }\n * ?)\n *\n */\nexport const Droppable = ({\n children,\n 'data-testid': testId,\n ...rest\n}: DroppableProps) => {\n const { setNodeRef, ...props } = useDroppable({\n ...rest,\n })\n return (\n <Box ref={ setNodeRef } data-testid={ testId }>\n { typeof children === 'function'\n ? children(props)\n : children || <Center>Drop here</Center> }\n </Box>\n )\n}\n","import React from 'react'\nimport { SortableContext, SortableContextProps } from '@dnd-kit/sortable'\n\n/**\n * Wrapper that provides context for sortable elements using DnD-kit\n * @see DragAndDrop\n * @see SortableList\n * @see MultiSort\n * @see {@link https://northlight.dev}\n * @see {@link https://docs.dndkit.com/presets/sortable/sortable-context}\n * @example\n * **<a href=\"https://docs.dndkit.com/presets/sortable/sortable-context\" target=\"_blank\">Read more on dnd-docs</a>**\n * */\nexport const Sortable = (props: SortableContextProps) => (\n <SortableContext { ...props } />\n)\n","import React, { PointerEvent, cloneElement, isValidElement, useRef } from 'react'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { Box } from '../box'\nimport { DragItem } from './drag-item'\nimport { ring } from '../../utils'\nimport { SortableItemProps } from './types'\n\n/**\n * Renders a draggable item under sortable context\n * @see SortableList\n * @see MultiSort\n * @see {@link https://northlight.dev/reference/sortable-item}\n *\n * @example\n * (? <SortableItem id=\"sortable-1\"/> ?)\n * */\nexport const SortableItem = ({\n itemLabel = 'Drag me',\n dblClickThreshold = 300,\n children,\n disableDrag = false,\n 'data-testid': dataTestId,\n ...rest\n}: SortableItemProps) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n ...props\n } = useSortable({ ...rest })\n if (!listeners) {\n return (\n <DragItem itemLabel={ itemLabel } />\n )\n }\n\n const timeStampSnapchot = useRef(0)\n const inEditMode = useRef(false)\n const { onPointerDown, onKeyDown } = listeners\n const handlePointerDown = (e: PointerEvent<Element>) => {\n const elapsedTime = e.timeStamp - timeStampSnapchot.current\n if (elapsedTime > dblClickThreshold) {\n inEditMode.current = true\n onPointerDown(e)\n } else {\n inEditMode.current = false\n }\n timeStampSnapchot.current = e.timeStamp\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<Element>) => {\n if (inEditMode.current) {\n onKeyDown(e)\n }\n }\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition,\n }\n\n const childrenWithDragCursor = isValidElement(children)\n ? cloneElement(children as JSX.Element, {\n cursor: isDragging ? 'grabbing' : 'grab',\n })\n : children\n\n const dragEventListeners = !disableDrag && {\n onPointerDown: handlePointerDown,\n onKeyDown: handleKeyDown,\n }\n\n return (\n <Box\n ref={ setNodeRef }\n sx={ style }\n { ...attributes }\n _focusVisible={ ring }\n tabIndex={ disableDrag ? -1 : 0 }\n borderRadius=\"tag.default\"\n data-testid={ dataTestId }\n { ...dragEventListeners }\n >\n { (\n typeof childrenWithDragCursor === 'function'\n ? childrenWithDragCursor(listeners, props)\n : childrenWithDragCursor\n ) || <DragItem isDragging={ isDragging } itemLabel={ itemLabel } />\n }\n </Box>\n )\n}\n","import React from 'react'\nimport { DragDuo } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { DragHandleProps } from './types'\n\n/**\n * Util component to display drag handle icon\n * for draggable react components under DragAndDrop context\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/drag-handle}\n *\n * @example (Example)\n * (?\n * <DragHandle />\n * ?)\n */\nexport const DragHandle = ({ icon, isDragging, ...rest }: DragHandleProps) => (\n <Icon\n as={ icon || DragDuo }\n cursor={ isDragging ? 'grabbing' : 'grab' }\n { ...rest }\n />\n)\n","import React from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Stack } from '../stack'\nimport { Droppable } from './droppable'\nimport { DropZoneProps } from './types'\n\n/**\n * Prestyled droppable area to drop draggable components,\n * you can override the styles of dropzone with sx prop\n * @see Draggable\n * @see Droppable\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/drop-zone}\n *\n * @example (Example)\n * ## You can drop draggable components\n * (?\n * <DragAndDrop>\n * <DropZone name=\"random-id-2\"><Draggable id=\"test\"/></DropZone>\n * </DragAndDrop>\n * ?)\n */\nexport const DropZone = ({ sx = {}, name, children, ...rest }: DropZoneProps) => {\n const { dropZone } = useMultiStyleConfig('DragAndDrop', { sx })\n return (\n <Droppable id={ name }>\n <Stack sx={ dropZone } { ...rest }>\n { children }\n </Stack>\n </Droppable>\n )\n}\n","import React, { useState } from 'react'\nimport {\n DragOverEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n rectIntersection,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport { arrayMove, sortableKeyboardCoordinates } from '@dnd-kit/sortable'\nimport { indexOf, insert, keys, remove } from 'ramda'\nimport { DragAndDrop } from './drag-and-drop'\nimport { MultiSortProps } from './types'\n\n/**\n * Util component for sorting items in two dimensions(container and order in container)\n * @see SortableList\n * @see DragAndDrop\n * @see {@link https://northlight.dev/reference/multi-sort}\n *\n * @example\n * (?\n * () => {\n const [ multiItems, setMultiItems ] = useState({\n container1: [\n 'JavaScript',\n 'Python',\n 'Front end',\n 'Back end',\n ],\n container2: [ 'HTML', 'CSS' ],\n container3: [ 'Chakra UI', 'Next.js', 'Tailwind UI' ],\n })\n return (\n <Stack>\n <MultiSort\n items={ multiItems }\n onChange={ (items) => setMultiItems(items) }\n >\n { (items, activeId) => (\n <HStack alignItems=\"start\">\n <VStack>\n <Heading size=\"sm\">I like</Heading>\n <DropZone name=\"container1\">\n <SortableContainer items={ items.container1 } />\n </DropZone>\n </VStack>\n <VStack>\n <Heading size=\"sm\">I don't like</Heading>\n <DropZone name=\"container2\">\n <SortableContainer items={ items.container2 } />\n </DropZone>\n </VStack>\n <VStack>\n <Heading size=\"sm\">Neutral</Heading>\n <DropZone name=\"container3\">\n <SortableContainer items={ items.container3 } />\n </DropZone>\n </VStack>\n <DragOverlay>\n { activeId ? (\n <DragItem\n itemLabel={ activeId }\n isDragging={ true }\n bgColor=\"background.tag.default\"\n />\n ) : null }\n </DragOverlay>\n </HStack>\n ) }\n </MultiSort>\n <Text>Controlled output: </Text>\n <Code p={ 2 } borderRadius={ 4 }>\n <pre>{ JSON.stringify(multiItems, null, 2) }</pre>\n </Code>\n</Stack>\n )\n * }\n * ?)\n * <br />\n * Multisort abstracts logic away for setting up sortable items between multiple containers,\n * you can then separate, or create and style this containers as you want,\n * by putting them under <Droppable /> or a prestyled <Dropzone />\n\nSortableContainer is a wrapper for a <Sortable /> with a sortable item\n * */\nexport function MultiSort<itemKeys extends string | number | symbol> ({\n items,\n onChange = () => {},\n children,\n collisionDetection,\n sensors,\n}: MultiSortProps<itemKeys>) {\n const [ activeItem, setActiveItem ] = useState<UniqueIdentifier | null>(null)\n\n const moveBetweenContainers = (\n activeContainerName: itemKeys,\n activeIndex: number,\n overContainerName: itemKeys,\n overIndex: number,\n item: string\n ) => ({\n ...items,\n [activeContainerName]: remove(activeIndex, 1, items[activeContainerName]),\n [overContainerName]: insert(overIndex, item, items[overContainerName]),\n })\n\n const customSensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const findContainer = (id: string) =>\n (id in items ? id : keys(items).find((key) => items[key].includes(id)))\n\n const getContainers = (e: DragOverEvent) => {\n const { active, over } = e\n if (!over) return {}\n const { id } = active\n const { id: overId } = over\n\n const activeContainerName = findContainer(id as string) as itemKeys\n const overContainerName = findContainer(overId as string) as itemKeys\n return { activeContainerName, overContainerName, id, overId, active }\n }\n\n const handleDragStart = (e: DragOverEvent) => {\n const {\n active: { id },\n } = e\n setActiveItem(id)\n }\n\n const handleDragOver = (e: DragOverEvent) => {\n const { activeContainerName, overContainerName, id, overId } = getContainers(e)\n\n if (\n !(\n !activeContainerName ||\n !overContainerName ||\n activeContainerName === overContainerName\n )\n ) {\n const activeIndex = indexOf(id, items[activeContainerName])\n const overIndex = indexOf(overId, items[overContainerName])\n onChange(moveBetweenContainers(\n activeContainerName,\n activeIndex,\n overContainerName,\n overIndex,\n id as string\n ))\n }\n }\n\n const handleDragEnd = (e: DragOverEvent) => {\n const { activeContainerName, overContainerName, id, overId, active } = getContainers(e)\n\n if (!activeContainerName || !overContainerName) return\n\n const activeIndex = indexOf(id, items[activeContainerName])\n const overIndex = indexOf(overId, items[overContainerName])\n\n if (activeContainerName === overContainerName) {\n onChange({\n ...items,\n [overContainerName]: arrayMove(\n items[overContainerName],\n activeIndex,\n overIndex\n ),\n })\n } else {\n onChange(moveBetweenContainers(\n activeContainerName,\n activeIndex,\n overContainerName,\n overIndex,\n active?.id as string\n ))\n }\n }\n\n return (\n <DragAndDrop\n sensors={ sensors || customSensors }\n onDragStart={ handleDragStart }\n onDragOver={ handleDragOver }\n onDragEnd={ handleDragEnd }\n collisionDetection={ collisionDetection || rectIntersection }\n >\n { typeof children === 'function' ? children(items, activeItem) : children }\n </DragAndDrop>\n )\n}\n","import React, { useMemo, useState } from 'react'\nimport {\n DragOverEvent,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n rectIntersection,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n rectSortingStrategy,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable'\nimport { identity, indexOf, map } from 'ramda'\nimport { DragAndDrop } from './drag-and-drop'\nimport { Sortable } from './sortable'\nimport { SortableItem } from './sortable-item'\nimport { DragItem } from './drag-item'\nimport { SortableListProps } from './types'\n\n/**\n * Util component to render sortable items under sortable context\n * @see SortableItem\n * @see Sortable\n * @see {@link https://northlight.dev/reference/sortable-list}\n *\n * @example (Example)\n * ## You can render any layout of sortable components, for example grid:\n * (?\n * () => {\n * const [items, setItems] = useState(Array.from({length: 100}, (_, i) => i))\n * return (\n * <Stack>\n<SimpleGrid minChildWidth=\"50px\" spacing={ 4 }>\n <SortableList\n items={ items }\n onChange={ (items) => setItems(items) }\n />\n</SimpleGrid>\n <Code p={ 2 } borderRadius={ 4 }>\n { JSON.stringify(items, null, 2) }\n </Code>\n </Stack>\n * )}\n * ?)\n *\n * @example (Example)\n * ### With custom component\n * (?\n * () => {\n * const [items, setItems] = useState([ { name: 'item1' }, { name: 'item2' }, { name: 'item3' } ])\n * return (\n * <Stack>\n *\n * <SortableList\n items={ items }\n createKey={ (item) => item.name }\n disableDrag={ true }\n onChange={setItems}\n>\n { ({ name }, listeners, { isOver }) => (\n <HStack>\n <DragHandle { ...listeners } isDragging={ isOver } />\n <Input defaultValue={ name } />\n </HStack>\n ) }\n</SortableList>\n</Stack>\n )}\n * ?)\n<br />\nIf disableDrag=false, then when the user double clicks it will trigger\nthe default behaviour of the rendered component instead of the dragging,\n you can adjust the threshold with dblClickThreshold, default is 300ms\n *\n *\n */\nexport function SortableList<T> ({\n children,\n items,\n collisionDetection,\n createKey = identity as (t: T) => UniqueIdentifier,\n strategy,\n onChange = () => {},\n onMovedItem = identity,\n displayOverlay = false,\n sensors,\n dblClickThreshold = 300,\n disableDrag = false,\n modifiers,\n}: SortableListProps<T>) {\n const [ activeItem, setActiveItem ] = useState<UniqueIdentifier | null>(null)\n\n const identifierItems = useMemo(() => map(createKey, items), [ items ])\n\n const customSensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragStart = (event: DragOverEvent) => {\n const {\n active: { id },\n } = event\n setActiveItem(id)\n }\n\n const handleDragEnd = (event: DragOverEvent) => {\n const { active, over } = event\n if (active && over && active.id !== over.id) {\n const prevIds = map(createKey, items)\n const oldIndex = indexOf(active.id, prevIds)\n const newIndex = indexOf(over.id, prevIds)\n onMovedItem({ item: items[oldIndex], oldIndex, newIndex })\n const newItems = arrayMove(items, oldIndex, newIndex)\n onChange(newItems)\n }\n }\n\n return (\n <DragAndDrop\n sensors={ sensors || customSensors }\n collisionDetection={ collisionDetection || rectIntersection }\n onDragStart={ handleDragStart }\n onDragEnd={ handleDragEnd }\n modifiers={ modifiers }\n >\n <Sortable\n items={ identifierItems }\n strategy={ strategy || rectSortingStrategy }\n >\n { items.map((item, index) => {\n const id = createKey(item)\n return (\n <SortableItem\n key={ id }\n id={ id }\n itemLabel={ id }\n dblClickThreshold={ dblClickThreshold }\n disableDrag={ disableDrag }\n >\n { (listeners, props) =>\n (typeof children === 'function'\n ? children(item, listeners, props, index)\n : children)\n }\n </SortableItem>\n )\n }) }\n </Sortable>\n { displayOverlay && (\n <DragOverlay>\n { activeItem ? <DragItem itemLabel={ activeItem } /> : null }\n </DragOverlay>\n ) }\n </DragAndDrop>\n )\n}\n","import React from 'react'\nimport { rectSortingStrategy } from '@dnd-kit/sortable'\nimport { Sortable } from './sortable'\nimport { SortableItem } from './sortable-item'\nimport { SortableContainerProps } from './types'\n\n/**\n * Used with multi sort to render a sortable list inside a droppable\n * @see MultiSort\n * @see {@link https://northlight.dev/reference/sortable-container}\n *\n * @example\n * (?\n * <SortableContainer items={['item 1', 'item 2', 'item 3']} />\n * ?)\n *\n */\nexport const SortableContainer = ({ children, items, strategy }: SortableContainerProps) => (\n <Sortable items={ items } strategy={ strategy || rectSortingStrategy }>\n { items.map((id) => (\n <SortableItem key={ id } id={ id } itemLabel={ id }>\n { typeof children === 'function' ? children(id) : children }\n </SortableItem>\n )) }\n </Sortable>\n)\n","import React, { LegacyRef, forwardRef } from 'react'\nimport { VariableSizeList } from 'react-window'\nimport AutoSizer from 'react-virtualized-auto-sizer'\nimport { FastListProps } from './types'\n\n/**\n * Wrapper that renders children in a virtualized stacked layout\n * @see FastGrid\n * @see {@link https://northlight.dev/reference/fast-list}\n *\n * @example (Example)\n * (?\n * <Box h=\"500px\" w=\"300p\" border=\"1px solid gray\" p={ 4 } borderRadius={ 4 }>\n <FastList itemCount={ 10000 } itemSize={ 30 } overscanCount={ 100 }>\n { (index) => `item-${index}` }\n </FastList>\n</Box>\n * ?)\n *\n */\nexport const FastList = forwardRef(({\n itemCount,\n itemSize,\n direction = 'column',\n children,\n width,\n height,\n overscanCount = 0,\n initialScrollOffset,\n ...rest\n}: FastListProps, ref: LegacyRef<VariableSizeList<any>>) => (\n <AutoSizer>\n { ({ width: autoWidth, height: autoHeight }) => (\n <VariableSizeList\n itemCount={ itemCount }\n itemSize={ typeof itemSize === 'number' ? (_index) => itemSize : itemSize }\n height={ height ?? autoHeight }\n width={ width ?? autoWidth }\n layout={ direction === 'column' ? 'vertical' : 'horizontal' }\n initialScrollOffset={ initialScrollOffset }\n overscanCount={ overscanCount }\n ref={ ref }\n { ...rest }\n >\n { ({ style, index }) => (\n <div style={ style }>\n { typeof children === 'function' ? children(index) : children }\n </div>\n ) }\n </VariableSizeList>\n ) }\n </AutoSizer>\n))\n","import React, { LegacyRef, forwardRef } from 'react'\nimport { VariableSizeGrid } from 'react-window'\nimport AutoSizer from 'react-virtualized-auto-sizer'\nimport { FastGridProps } from './types'\n\n/**\n * Wrapper that renders children in a virtualized html grid layout\n * @see FastList\n * @see {@link https://northlight.dev/reference/fast-grid}\n *\n * @example (Example)\n * ## Simple example\n * (?\n * <Box h=\"500px\" w=\"full\" border=\"1px solid gray\" p={ 4 } borderRadius={ 4 }>\n <FastGrid\n columns={ 10000 }\n rows={ 10000 }\n rowSize={ 100 }\n columnSize={ 100 }\n overscanRowCount={ 10 }\n overscanColumnCount={ 1 }\n >\n { (rowIndex, columnIndex) => `[${rowIndex}, ${columnIndex}]` }\n </FastGrid>\n </Box>\n *\n * ?)\n *\n * @example (Example)\n * ## Spreadsheet example\n * (?\n * +\n *\nconst getCell = (rowIndex, columnIndex) => {\n if (rowIndex === 0 && columnIndex === 0) return ''\n if (rowIndex === 0) {\n return (\n <Lead w=\"full\">\n { ' ' }\n Col { columnIndex }\n </Lead>\n )\n }\n if (columnIndex === 0) {\n return (\n <Lead w=\"full\">\n { ' ' }\n Row { rowIndex }\n </Lead>\n )\n }\n return (\n <TextField name={ `${rowIndex}-${columnIndex}` } />\n )\n}\n *\n * const MyGrid = () => {\n * const [values, setValues ] = useState({})\n * return(\n * <Form initialValues={{}}>\n * {({getValues}) => (\n * <Stack>\n * <Box h=\"500px\" w=\"500p\" border=\"1px solid gray\" p={ 4 } borderRadius={ 4 }>\n <FastGrid\n columns={ 10000 }\n rows={ 10000 }\n rowSize={ 50 }\n columnSize={ 100 }\n overscanRowCount={ 10 }\n overscanColumnCount={ 1 }\n >\n {getCell}\n </FastGrid>\n</Box>\n<Button onClick={() => setValues(getValues())} variant=\"success\">Save</Button>\n<Code> <pre>{JSON.stringify(values, null, 2)}</pre></Code>\n</Stack>\n * )}\n </Form>\n * )}\n\nrender(<MyGrid />)\n *\n *\n * ?)\n * **(Note, FastGrid must be wrapped in a parent element with set height and width!)**\n *\n*/\nexport const FastGrid = forwardRef(({\n columns,\n rows,\n columnSize,\n rowSize,\n children,\n width,\n height,\n overscanRowCount = 0,\n overscanColumnCount = 0,\n ...rest\n}: FastGridProps, ref: LegacyRef<VariableSizeGrid<any>>) => (\n <AutoSizer>\n { ({ width: autoWidth, height: autoHeight }) => (\n <VariableSizeGrid\n rowCount={ rows }\n columnCount={ columns }\n columnWidth={ typeof columnSize === 'number' ? (_index) => columnSize : columnSize }\n rowHeight={ typeof rowSize === 'number' ? (_index) => rowSize : rowSize }\n height={ height ?? autoHeight }\n width={ width ?? autoWidth }\n overscanRowCount={ overscanRowCount }\n overscanColumnCount={ overscanColumnCount }\n ref={ ref }\n { ...rest }\n >\n { ({ style, rowIndex, columnIndex }) => (\n <div style={ style }>\n { typeof children === 'function' ? children(rowIndex, columnIndex) : children }\n </div>\n ) }\n </VariableSizeGrid>\n ) }\n </AutoSizer>\n))\n","import React from 'react'\nimport { CheckDuo, EditDuo, XCloseSolid } from '@northlight/icons'\nimport {\n HStack,\n useEditableControls,\n useEditableState,\n useMultiStyleConfig,\n} from '@chakra-ui/react'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { EditableControlsProps } from './types'\nimport { ButtonVariants } from '../button/types'\n\ntype MapVariantTypes = Record<EditableControlsProps['variant'], ButtonVariants>\n\nconst mapEditableVariantsToButtonSubmitVariants: MapVariantTypes = {\n brand: 'brand',\n default: 'success',\n}\n\nconst mapEditableVariantsToButtonCancelVariants: MapVariantTypes = {\n brand: 'ghost',\n default: 'danger',\n}\n\nexport const EditableControls = ({ size, variant = 'default' }: EditableControlsProps) => {\n const {\n getSubmitButtonProps,\n getCancelButtonProps,\n } = useEditableControls()\n\n const { onEdit, isEditing } = useEditableState()\n\n const { button, icon, controls } = useMultiStyleConfig('EditableText', { size, isEditing })\n\n return (\n <HStack spacing={ 1 } sx={ controls }>\n { isEditing\n ? (\n <>\n <IconButton\n aria-label=\"Cancel\"\n sx={ button }\n variant={ mapEditableVariantsToButtonCancelVariants[variant] }\n { ...getCancelButtonProps() }\n >\n <Icon sx={ icon } as={ XCloseSolid } />\n </IconButton>\n <IconButton\n aria-label=\"Save\"\n sx={ button }\n variant={ mapEditableVariantsToButtonSubmitVariants[variant] }\n { ...getSubmitButtonProps() }\n >\n <Icon sx={ icon } as={ CheckDuo } />\n </IconButton>\n </>\n )\n : (\n <IconButton\n aria-label=\"Edit\"\n variant=\"ghost\"\n sx={ button }\n onClick={ onEdit }\n >\n <Icon sx={ icon } as={ EditDuo } />\n </IconButton>\n )\n }\n </HStack>\n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { Input, InputGroup, InputLeftElement, InputRightElement } from '../input'\nimport { EditableInput as ChakraEditableInput, Editable, EditablePreview } from '../editable'\nimport { EditableProps } from './types'\nimport { EditableControls } from './editable-controls'\n\n/**\n * Used to safely modify text with default or previousely set value\n * @see {@link https://northlight.dev/reference/editable-text}\n *\n * @example (Example)\n * ##Edit password\n * (?\n * () => {\n * const [v, setV] = useState('123456789')\n * return (\n * <Box p=\"2\">\n * <EditableText value={v} onSubmit={setV} leftItem={<Icon as={LockDuo} />}/>\n * </Box>\n * )\n * }\n * ?)\n *\n * @example (Example)\n * ## Other notes\n <p>\n Pressing <b>ESC</b> or clicking on the\n <b> red icon</b> will delete the changes and go back to the original state\n </p>\n <p>\n Pressing <b>ENTER</b> or clicking on the\n <b> green icon</b> will save the changes internally and fire the{ ' ' }\n <Code>onSubmit</Code> callback.\n </p>\n *\n */\nexport const EditableText = ({\n size = 'md',\n value: inputValue,\n onSubmit,\n leftItem,\n variant = 'default',\n ...rest\n}: EditableProps) => {\n const [ value, setValue ] = useState(inputValue)\n const { input, preview } = useMultiStyleConfig('EditableText', { size, value })\n\n useEffect(() => {\n setValue(inputValue)\n }, [ inputValue ])\n\n return (\n <Editable\n isPreviewFocusable={ true }\n selectAllOnFocus={ false }\n value={ value }\n onChange={ (newValue) => setValue(newValue) }\n onSubmit={ onSubmit }\n { ...rest }\n >\n <InputGroup size={ size }>\n { leftItem && (\n <InputLeftElement>\n { leftItem }\n </InputLeftElement>\n ) }\n <Input\n as={ EditablePreview }\n sx={ preview }\n />\n <Input\n as={ ChakraEditableInput }\n size={ size }\n sx={ input }\n />\n <InputRightElement sx={ { width: 'min-content' } }>\n <EditableControls size={ size } variant={ variant } />\n </InputRightElement>\n </InputGroup>\n </Editable>\n )\n}\n","import { Modal as ChakraModal, ModalCloseButton, ModalContent, ModalOverlay } from '@chakra-ui/react'\nimport React from 'react'\nimport { ModalProps } from './types'\n\nexport const ModalBase = ({\n isCentered = true,\n children,\n ...rest\n}: ModalProps) => (\n <ChakraModal\n isCentered={ isCentered }\n scrollBehavior=\"inside\"\n motionPreset=\"slideInBottom\"\n { ...rest }\n >\n <ModalOverlay />\n <ModalContent data-testid=\"modal-test-id\">\n <ModalCloseButton data-testid=\"modal-test-button-id\" />\n { children }\n </ModalContent>\n </ChakraModal>\n)\n","import React from 'react'\nimport { ModalProps } from './types'\nimport { ModalBase } from './modal-base'\n\n/**\n * @see {@link https://northlight.dev/reference/modal}\n *\n * */\n\nexport const Modal = ({\n stayMountedOnClose = false,\n isOpen,\n ...rest\n}: ModalProps) => (\n <>\n { (stayMountedOnClose || isOpen) && <ModalBase isOpen={ isOpen } { ...rest } /> }\n </>\n)\n","import React from 'react'\nimport { ModalBody as ChakraModalBody, ModalBodyProps } from '@chakra-ui/react'\n\nexport const ModalBody = (props: ModalBodyProps) => (\n <ChakraModalBody minH={ props.h } maxH={ props.h } { ...props } />\n)\n","import React, { forwardRef, useState } from 'react'\nimport AvatarEditor from 'react-avatar-editor'\nimport { ZoomInDuo } from '@northlight/icons'\nimport { EditableText } from '../editable-text'\nimport { Icon } from '../icon'\nimport { HStack, Stack } from '../stack'\nimport { Box } from '../box'\nimport { Button } from '../button'\nimport { Slider, SliderFilledTrack, SliderThumb, SliderTrack } from '../slider'\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../modal'\nimport { FormLabel } from '../form-control'\nimport { FileEditorModalProps } from './types'\n\nexport const FileEditorModal = forwardRef(({\n fileName,\n setFileName,\n isOpen,\n onClose,\n image = '',\n handleCrop,\n isImage,\n canEditFileName = true,\n canCropImage = false,\n ...rest\n}: FileEditorModalProps, ref: any) => {\n const [ zoomLevel, setZoomLevel ] = useState(1)\n const [ position, setPosition ] = useState({ x: 0.5, y: 0.5 })\n\n const handleClose = () => {\n setZoomLevel(1)\n onClose()\n }\n\n return (\n <Modal\n isOpen={ isOpen }\n onClose={ onClose }\n closeOnOverlayClick={ false }\n { ...rest }\n >\n <ModalHeader>Edit { isImage ? 'image' : 'file' }</ModalHeader>\n <ModalBody\n display=\"flex\"\n justifyContent=\"start\"\n flexDirection=\"column\"\n alignItems=\"center\"\n gap={ 4 }\n minH=\"300px\"\n >\n <Stack display={ isImage && canCropImage ? 'inherit' : 'none' }>\n <AvatarEditor\n ref={ ref }\n image={ image || '' }\n onPositionChange={ (pos) => setPosition(pos) }\n position={ position }\n width={ 250 }\n height={ 250 }\n border={ 50 }\n color={ [ 255, 255, 255, 0.7 ] }\n scale={ zoomLevel }\n rotate={ 0 }\n />\n <HStack w=\"90%\">\n <FormLabel>Zoom</FormLabel>\n <Slider\n aria-label=\"zoom\"\n defaultValue={ zoomLevel }\n maxW=\"50%\"\n min={ 0.1 }\n step={ 0.05 }\n max={ 10 }\n onChange={ (value) => setZoomLevel(value) }\n >\n <SliderTrack>\n <SliderFilledTrack />\n </SliderTrack>\n <SliderThumb boxSize={ 6 }>\n <Icon as={ ZoomInDuo } />\n </SliderThumb>\n </Slider>\n </HStack>\n\n </Stack>\n { canEditFileName && (\n <Stack w=\"90%\" direction={ isImage ? 'row' : 'column' } pt={ 2 }>\n <FormLabel>Name the file:</FormLabel>\n <Box maxW=\"50%\">\n <EditableText onSubmit={ (v) => setFileName(v) } value={ fileName } size=\"sm\" />\n </Box>\n </Stack>\n ) }\n </ModalBody>\n <ModalFooter>\n <HStack>\n <Button variant=\"danger\" onClick={ handleClose }>\n Cancel\n </Button>\n <Button variant=\"success\" onClick={ handleCrop }>\n Save\n </Button>\n </HStack>\n </ModalFooter>\n </Modal>\n )\n})\n","import React from 'react'\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '../modal'\nimport { Button } from '../button'\nimport { ConfirmDeleteModalProps } from './types'\n\nexport const ConfirmDeleteModal = ({\n isOpen,\n onClose,\n confirmDelete,\n fileName,\n ...rest\n}: ConfirmDeleteModalProps) => {\n const handleDelete = () => {\n confirmDelete()\n onClose()\n }\n\n return (\n <Modal isOpen={ isOpen } onClose={ onClose } { ...rest }>\n <ModalHeader\n sx={ { fontSize: 'lg' } }\n overflow=\"hidden\"\n whiteSpace=\"nowrap\"\n textOverflow=\"ellipsis\"\n pr={ 16 }\n >\n Delete { fileName }\n </ModalHeader>\n <ModalBody>\n Deleting this file is a permanent action. You will not be able to\n recover this file at a later time.\n </ModalBody>\n <ModalFooter>\n <Button variant=\"danger\" onClick={ handleDelete }>\n Delete\n </Button>\n </ModalFooter>\n </Modal>\n )\n}\n","export const updateTimeThreshold = 0.5\nexport const animationSlideTime = 250\n","import React, { forwardRef } from 'react'\nimport {\n Progress as ChakraProgress,\n ProgressProps as ChakraProgressProps,\n} from '@chakra-ui/react'\nimport { animationSlideTime } from './constants'\n\nexport interface ProgressBarProps extends ChakraProgressProps {\n animationSlideTimeMs?: number\n}\n\n/**\n * @see {@link https:/northlight/reference/progress-bar}\n *\n * @example\n * (?\n * <ProgressBar value={40} />\n * ?)\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n ({ animationSlideTimeMs = animationSlideTime, sx, ...props }, ref) => (\n <ChakraProgress\n ref={ ref }\n width=\"full\"\n height=\"1a\"\n borderRadius=\"full\"\n sx={ {\n '>[role=\"progressbar\"]': {\n transition: `width ${animationSlideTimeMs}ms ease-out`,\n },\n ...sx,\n } }\n { ...props }\n />\n )\n)\n","export const formattedTime = (seconds: number) => {\n let baseString = ''\n const hours = Math.floor(seconds / 3600)\n if (hours > 0) {\n baseString += ` ${hours}h`\n }\n const minutes = Math.floor((seconds - hours * 3600) / 60)\n if (minutes > 0) {\n baseString += ` ${minutes}min`\n }\n const newSeconds = Math.floor(seconds - hours * 3600 - minutes * 60)\n if (newSeconds > 0) {\n baseString += ` ${newSeconds}s`\n }\n\n return baseString\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { ProgressBar } from './progress-bar'\nimport { VStack } from '../stack'\nimport { Small } from '../typography'\nimport { formattedTime } from './utils'\nimport { Fade } from '../transitions'\nimport { LoadingBarProps } from './types'\nimport { animationSlideTime, updateTimeThreshold } from './constants'\n\n/**\n * @see {@link https:/northlight/reference/loading-bar}\n *\n * @example\n * (?\n * () => {\n const [ progress, setProgress ] = useState(0)\n if (progress > 1 && buffer) {\n clearInterval(buffer)\n buffer = null\n }\n\n const handleClick = () => {\n setProgress(0)\n buffer = setInterval(\n () => setProgress((prev) => prev + Math.random() * 0.1),\n Math.random() * 300 + 200\n )\n }\n return (\n <Stack>\n <LoadingBar loaded={ progress } hideDisplay={true}/>\n <Button onClick={ handleClick }>Start Loading</Button>\n </Stack>\n )\n * }\n * ?)\n *\n */\nexport const LoadingBar = ({\n loaded,\n onLoadEnd = () => {},\n hideDisplay = true,\n ...rest\n}: LoadingBarProps) => {\n const ref = useRef<HTMLDivElement>(null)\n const timeRef = useRef<number>(0)\n const progress = Math.max(0, Math.min(loaded, 1))\n const [ timeLeft, setTimeLeft ] = useState(0)\n\n useEffect(() => {\n if (ref.current) {\n (ref.current.children[0] as HTMLDivElement).style.width = `${progress * 100}%`\n }\n\n if (timeRef.current) {\n const deltaTime = timeRef.current\n ? (Date.now() - timeRef.current) / 1000\n : 0\n if (deltaTime > updateTimeThreshold) {\n const newEstimate = progress !== 0 ? deltaTime / progress : 0\n setTimeLeft(Math.round(newEstimate - deltaTime))\n }\n } else if (progress > 0) {\n timeRef.current = Date.now()\n }\n }, [ progress ])\n\n return (\n <Fade\n in={ progress < 1 }\n enterDuration={ 1 }\n exitDelay={ 250 }\n exitDuration={ 1000 }\n hideDisplay={ hideDisplay }\n onTransitionComplete={ () => {\n if (progress >= 1) {\n onLoadEnd()\n }\n } }\n >\n <VStack { ...rest }>\n <Small>\n { Math.round(progress * 100) }%{ ' ' }\n { !!timeLeft && `· ${formattedTime(timeLeft)} left` }\n </Small>\n <ProgressBar\n ref={ ref }\n animationSlideTimeMs={ animationSlideTime }\n />\n </VStack>\n </Fade>\n )\n}\n","export const fiveHundredMB = 5.24288E8\nexport const imageLazyThreshold = 1.572854E7\nexport const defaultEditOptions = {\n canEdit: true,\n canEditImage: true,\n canEditName: true,\n}\n","import {\n all,\n difference,\n has,\n intersection,\n isEmpty,\n last,\n split,\n test,\n trim,\n} from 'ramda'\nimport { imageLazyThreshold } from './constants'\nimport {\n FileFormat,\n FileWithSizeAndType,\n FileWithSrcNameType,\n FileWithType,\n} from './types'\n\nexport const getResizingFactor = (\n imgWidth: number,\n imgHeight: number,\n maxWidth: number,\n maxHeight: number\n) => Math.min(1, Math.min(maxWidth / imgWidth, maxHeight / imgHeight))\n\nexport const convertBlobToFile = (\n blob: Blob,\n name: string,\n type: string\n) => new File([ blob ], name, { type })\n\nexport const compressImage = (\n file: File,\n maxWidth = 3000,\n maxHeight = 3000,\n quality = 0.75\n) => {\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n if (!context) return file\n\n const imageBuffer = new Image()\n imageBuffer.src = URL.createObjectURL(file as File)\n\n return new Promise((resolve) => {\n imageBuffer.onload = () => {\n const resizingFactor = getResizingFactor(\n imageBuffer.width,\n imageBuffer.height,\n maxWidth,\n maxHeight\n )\n const scaledWidth = imageBuffer.width * resizingFactor\n const scaledHeight = imageBuffer.height * resizingFactor\n canvas.width = scaledWidth\n canvas.height = scaledHeight\n context.drawImage(imageBuffer, 0, 0, scaledWidth, scaledHeight)\n canvas.toBlob(\n (blob) => {\n if (file && blob) {\n const newImage = convertBlobToFile(blob, file.name, file.type)\n resolve(newImage)\n } else {\n resolve(file)\n }\n },\n 'image/jpeg',\n quality\n )\n }\n })\n}\n\nexport const readableFileSize = (size: number) => {\n if (size <= 0) return 0\n const i = Math.floor(Math.log(size) / Math.log(1024))\n return `${(size / 1024 ** i).toFixed(1)} ${\n [ 'B', 'kB', 'MB', 'GB', 'TB' ][i]\n }`\n}\n\nexport const getImageAsFile = async <T extends FileWithSrcNameType>(\n image: T,\n name?: string\n): Promise<File> =>\n fetch(image.src as string)\n .then((res) => res.blob())\n .then(\n (blob) =>\n new Promise((resolve) => {\n const newImage = convertBlobToFile(blob, name || image.name, image.type)\n resolve(newImage)\n })\n )\n\nconst getFormatsAsArray = (acceptFormat: string) =>\n split(',', acceptFormat)\n .map((format) => trim(format))\n\nexport const getAcceptedExtensions = (acceptFormat: string) =>\n getFormatsAsArray(acceptFormat)\n .filter((format) => test(/^\\./, format))\n .map((format) => format.substring(1))\n\nexport const getAcceptedFormats = (acceptFormat: string) =>\n getFormatsAsArray(acceptFormat)\n .filter((format) => test(/\\//, format))\n .map((format) => split('/', format)[0])\n\nconst getFileExtension = <T extends FileWithType> (file: T) => last(split('/', file.type)) as string\n\nconst getFileFormat = <T extends FileWithType> (file: T) => split('/', file.type)[0]\n\nexport const validFileFormat = <T extends FileWithType> (\n file: T,\n acceptFormat: string\n) => (\n acceptFormat === '*'\n|| getAcceptedFormats(acceptFormat).includes(getFileFormat(file))\n|| getAcceptedExtensions(acceptFormat).includes(getFileExtension(file))\n )\n\nexport const isValidFile = <T extends FileWithSizeAndType> (\n file:T,\n acceptFormat: string,\n maxFileSize: number\n) => {\n const isValid =\n file.size as number < maxFileSize\n && validFileFormat(file, acceptFormat)\n\n return {\n isValid,\n errorMessage: file.size as number > maxFileSize\n ? 'File size is too big'\n : isValid\n ? ''\n : 'File format not supported',\n }\n}\n\nexport function getNewUploadingFiles<T extends FileFormat> (\n prev: T[],\n curr: T[],\n files: T[]\n) {\n let buffer = prev\n const prevIDs = prev ? prev.map((file) => file.name) : null\n const currentIDs = curr ? curr.map((file) => file.name) : null\n const removedItemsIDs =\n prevIDs && currentIDs && difference(prevIDs, currentIDs)\n const filesIDs = files.map((file) => file.name)\n\n if (removedItemsIDs) {\n if (\n removedItemsIDs.length === 0 ||\n intersection(removedItemsIDs, filesIDs).length > 0\n ) {\n buffer = curr\n } else {\n buffer.forEach((value, index) => {\n if (removedItemsIDs.includes(value.name)) {\n const updatedData = { ...value,\n uploaded: has('size', value) ? value.size : 0 }\n buffer[index] = updatedData\n }\n }\n )\n }\n } else {\n buffer = curr\n }\n return buffer\n}\n\nexport const generateId = () => Math.random().toString().substring(3)\n\nexport const isFile = (file: any) => 'File' in window && file instanceof File\n\nexport const isFileImage = <T extends FileWithType>(file: T) => {\n if (isFile(file)) {\n return getFileFormat(file) === 'image'\n }\n switch (getFileFormat(file)) {\n case 'image':\n case 'jpeg':\n case 'jpg':\n case 'png':\n case 'gif':\n case 'tiff':\n case 'jfif':\n return true\n default:\n return false\n }\n}\n\nexport const onlyAcceptsImages = (acceptFormat: string) => {\n if (acceptFormat === '*' || acceptFormat === '') {\n return false\n }\n const formats = getAcceptedFormats(acceptFormat)\n const extensions = getAcceptedExtensions(acceptFormat)\n\n const premiseOne = isEmpty(formats) || all((type: string) => type === 'image', formats)\n\n const premiseTwo = isEmpty(extensions)\n || all((type: string) => isFileImage({ type }), extensions)\n\n return premiseOne && premiseTwo\n}\n\nexport const createFileObject = <T extends FileFormat>(file: File): T => {\n const fileId = generateId()\n const fileObject = {\n _id: fileId,\n size: null,\n src: null,\n type: file.type,\n name: file.name,\n isUploading: true,\n isLazy: file.size > imageLazyThreshold && isFileImage(file),\n }\n return fileObject as T\n}\n\nexport const createPreviewFileObject = <T extends FileFormat>(file: File): T => {\n const fileId = generateId()\n const fileObject = {\n _id: fileId,\n size: file.size,\n src: URL.createObjectURL(file),\n type: file.type,\n name: file.name,\n isUploading: false,\n isLazy: false,\n }\n return fileObject as T\n}\n\nexport const createFileObjectFromSrc = <T extends FileWithSrcNameType>(file: T) => {\n const fileId = generateId()\n const fileObject = {\n _id: fileId,\n size: null,\n src: file.src,\n type: file.type,\n name: file.name,\n isUploading: false,\n isLazy: false,\n }\n return fileObject\n}\n\nexport const isOverflowing = (element: Element) => (element\n ? element.scrollHeight > element.clientHeight\n : false\n)\n\nexport const toBase64 = (file: File): Promise<string> => new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = () => resolve(reader.result as string)\n reader.onerror = (error) => reject(error)\n})\n\nconst correctFileExtension = (str: string) => test(/./g, str)\n\nconst getFileFormattedName = (file: File | FileFormat) => (correctFileExtension(file.name)\n ? file.name\n : `${file.name}.${getFileExtension(file)}`)\nexport const handleDownload = (file:\nFile | FileFormat | null | string | FileFormat\n) => () => {\n if (!file) return\n const anchor = document.createElement('a')\n anchor.href = isFile(file) ? URL.createObjectURL(file as File) : (file as FileFormat).src || ''\n anchor.download = isFile(file)\n ? 'downloaded-file.jpg'\n : getFileFormattedName(file as File)\n anchor.click()\n}\n","import React from 'react'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { FileIconButtonProps } from './types'\n\nexport const FileIconButton = ({\n icon,\n color = 'unset',\n ...rest\n}: FileIconButtonProps) => (\n <IconButton variant=\"ghost\" size=\"sm\" { ...rest }>\n <Icon as={ icon } boxSize=\"24px\" color={ color } />\n </IconButton>\n)\n","import React, { DragEvent, useEffect, useRef, useState } from 'react'\nimport { Fade, SlideFade, useMultiStyleConfig } from '@chakra-ui/react'\nimport {\n DownloadDuo,\n EditBoxDuo,\n FileBlankDuo,\n Image03Solid,\n TrashFullDuo,\n UploadCloudSolid,\n} from '@northlight/icons'\nimport { identity } from 'ramda'\nimport AvatarEditor from 'react-avatar-editor'\nimport { FileEditorModal } from './file-editor-modal'\nimport { ConfirmDeleteModal } from './confirm-delete-modal'\nimport { Icon } from '../icon'\nimport { Lead, P } from '../typography'\nimport { HStack, Stack } from '../stack'\nimport { FilePickerProps } from './types'\nimport { Input } from '../input'\nimport { Box } from '../box'\nimport { LoadingBar } from '../progress'\nimport { Spinner } from '../spinner'\nimport { Image } from '../image'\nimport { Clickable } from '../clickable'\nimport { useDisclosure } from '../../hooks'\nimport {\n compressImage,\n convertBlobToFile,\n handleDownload,\n isFile,\n isFileImage,\n isValidFile,\n onlyAcceptsImages,\n readableFileSize,\n} from './utils'\nimport { FileIconButton } from './file-icon-button'\nimport { defaultEditOptions, fiveHundredMB } from './constants'\nimport { useCurrentTheme } from '../../utils'\n\n/**\n * Lets user import file of any type as Javascript File Object\n * @see MultiFilePicker\n * @see {@link https://northlight.dev/reference/file-picker}\n *\n * @example (Example)\n * (?\n * <FilePicker />\n * ?)\n *\n *\n */\nexport const FilePicker = ({\n acceptFormat = '*',\n onChange = identity,\n compression,\n uploaded: uploadedInitial = 0,\n maxFileSize = fiveHundredMB,\n showProgress = false,\n value = '',\n loadWithSpinner = false,\n confirmDelete = false,\n editFileOptions = defaultEditOptions,\n sx = {},\n ...rest\n}: FilePickerProps) => {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const imageEditorRef = useRef<AvatarEditor>(null)\n const [ file, setFile ] = useState<File | null | string>(value)\n\n const [ isInvalid, setIsInvalid ] = useState(false)\n const [ name, setName ] = useState('')\n const editModal = useDisclosure()\n const deleteModal = useDisclosure()\n const [ editable, setEditable ] = useState(false)\n const [ hasLoaded, setHasLoaded ] = useState(false)\n const [ isLoading, setIsLoading ] = useState(false)\n const [ isImage, setIsImage ] = useState(true)\n const [ uploaded, setUploaded ] = useState(uploadedInitial)\n\n const onlyImageAccepted = onlyAcceptsImages(acceptFormat)\n\n const isUploading = uploaded < 1\n\n useEffect(() => {\n setUploaded(uploadedInitial)\n }, [ uploadedInitial ])\n\n useEffect(() => {\n if (!isUploading) {\n setIsLoading(false)\n setHasLoaded(true)\n }\n }, [ isUploading ])\n\n const currentTheme = useCurrentTheme()\n\n const { filePicker } = useMultiStyleConfig('FilePicker', {\n isImage,\n hasLoaded,\n isInvalid,\n currentTheme,\n sx,\n ...rest,\n })\n\n useEffect(() => {\n if (isInvalid) {\n setTimeout(() => {\n setIsInvalid(false)\n }, 1500)\n }\n }, [ isInvalid ])\n\n const handleOnClick = () => {\n if (fileInputRef.current && !file) {\n fileInputRef.current.click()\n }\n }\n\n const handleCrop = () => {\n if (imageEditorRef.current) {\n const canvas = imageEditorRef.current.getImageScaledToCanvas()\n canvas.toBlob((blob) => {\n if (file && blob) {\n const fileName = name\n || isFile(file)\n ? (file as File).name\n : 'downloaded-file'\n\n const fileType = isFile(file)\n ? (file as File).type\n : '.jpg'\n\n const newFile = convertBlobToFile(blob, fileName, fileType)\n setFile(newFile)\n setHasLoaded(true)\n onChange(newFile)\n }\n })\n editModal.onClose()\n }\n }\n\n const clearImage = () => {\n if (fileInputRef.current) {\n setIsInvalid(false)\n setName('')\n setFile(null)\n setIsImage(true)\n setHasLoaded(false)\n if (!showProgress) {\n setUploaded(0)\n }\n onChange(null)\n fileInputRef.current.value = ''\n }\n }\n\n const handleImageUpload = async (newImage: File | null) => {\n if (newImage) {\n setIsInvalid(false)\n const isFileTypeImage = isFileImage(newImage)\n setIsImage(isFileTypeImage)\n const compressedImage = isFileTypeImage\n ? ((await compressImage(\n newImage,\n compression?.width,\n compression?.height,\n compression?.quality\n )) as File)\n : newImage\n setFile(compressedImage)\n if (!showProgress) {\n setUploaded(1)\n }\n onChange(compressedImage)\n setIsLoading(isUploading)\n }\n }\n\n const handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n setIsInvalid(false)\n const newImage = e.target.files[0]\n handleImageUpload(newImage)\n }\n }\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault()\n if (e.dataTransfer.files) {\n const newFile = e.dataTransfer.files[0]\n if (isValidFile(newFile, acceptFormat, maxFileSize).isValid) {\n handleImageUpload(newFile)\n } else {\n setIsInvalid(true)\n }\n }\n }\n\n return (\n <Stack maxW={ filePicker.width as number } { ...rest }>\n <Clickable\n onClick={ handleOnClick }\n onDrop={ handleDrop }\n onDragOver={ (e: DragEvent) => e.preventDefault() }\n onMouseEnter={ () => setEditable(true) }\n onMouseLeave={ () => setEditable(false) }\n >\n <Box sx={ filePicker }>\n <SlideFade\n in={ hasLoaded }\n style={ {\n width: '100%',\n height: '100%',\n display: hasLoaded && isImage ? 'initial' : 'none',\n } }\n >\n <Image\n src={ file\n ? isFile(file)\n ? URL.createObjectURL(file as File)\n : file as string\n : '' }\n alt=\"preview-image\"\n objectFit=\"cover\"\n borderRadius={ 8 }\n display={ hasLoaded && isImage ? 'inherit' : 'none' }\n h=\"full\"\n w=\"full\"\n />\n </SlideFade>\n <Input\n type=\"file\"\n display=\"none\"\n accept={ acceptFormat }\n ref={ fileInputRef }\n onChange={ handleChange }\n />\n <Stack\n display={ hasLoaded && isImage ? 'none' : 'default' }\n alignItems=\"center\"\n w=\"85%\"\n spacing=\"0a\"\n >\n <Icon\n as={ onlyImageAccepted ? Image03Solid : UploadCloudSolid }\n boxSize=\"32px\"\n color={\n isInvalid\n ? 'destructive'\n : editable\n ? 'brand'\n : 'text.subdued'\n }\n display={ isImage && !hasLoaded ? 'inline-block' : 'none' }\n aria-label=\"file-icon-upload\"\n />\n <Icon\n as={ FileBlankDuo }\n boxSize=\"32px\"\n color=\"gray.300\"\n display={ hasLoaded && !isImage ? 'inline-block' : 'none' }\n />\n <P\n variant={ isInvalid ? '16' : '14' }\n whiteSpace=\"nowrap\"\n textOverflow=\"ellipsis\"\n overflow=\"hidden\"\n maxWidth={ filePicker.width as number }\n textAlign=\"center\"\n alignSelf=\"center\"\n >\n { isInvalid\n ? 'File not supported'\n : file && isFile(file)\n ? (file as File).name\n : `Drag & drop ${onlyImageAccepted ? 'image' : 'file'} or` }\n </P>\n <Lead\n sx={ {\n textDecoration: 'underline',\n color: isInvalid ? 'destructive' : 'brand',\n } }\n display={ isLoading || hasLoaded ? 'none' : 'default' }\n >\n Click to upload\n </Lead>\n <Box display={ isLoading ? 'block' : 'none' } pt={ 1 }>\n { loadWithSpinner\n ? <Spinner />\n : <LoadingBar loaded={ uploaded } />\n }\n </Box>\n </Stack>\n <Fade\n in={ hasLoaded && editable }\n style={ {\n display: hasLoaded && editable ? 'flex' : 'none',\n justifyContent: 'center',\n } }\n >\n <HStack\n spacing={ 2 }\n position=\"absolute\"\n bottom=\"3\"\n justifyContent=\"center\"\n bgColor=\"bg.layer\"\n borderRadius={ 6 }\n width=\"44\"\n py={ 2 }\n >\n { editFileOptions.canEdit && (\n <FileIconButton\n aria-label=\"edit-file\"\n onClick={ editModal.onOpen }\n icon={ EditBoxDuo }\n />\n ) }\n <FileIconButton\n aria-label=\"download-file\"\n onClick={ handleDownload(file) }\n icon={ DownloadDuo }\n />\n <FileIconButton\n aria-label=\"delete-file\"\n onClick={ confirmDelete ? deleteModal.onOpen : clearImage }\n icon={ TrashFullDuo }\n color=\"destructive\"\n />\n </HStack>\n </Fade>\n <P\n variant=\"14\"\n sx={ { color: 'gray.400' } }\n display={\n hasLoaded && !isImage && !isLoading\n ? 'inline-block'\n : 'none'\n }\n >\n { isFile(file) && readableFileSize((file as File)?.size as number) }\n </P>\n\n </Box>\n </Clickable>\n <FileEditorModal\n { ...editModal }\n fileName={ name }\n setFileName={ setName }\n image={ file }\n handleCrop={ handleCrop }\n isImage={ isImage }\n ref={ imageEditorRef }\n canEditFileName={ editFileOptions.canEditName }\n canCropImage={ editFileOptions.canEditImage }\n />\n <ConfirmDeleteModal\n { ...deleteModal }\n confirmDelete={ clearImage }\n fileName={ name || 'file' }\n />\n </Stack>\n )\n}\n","import React, { useState } from 'react'\nimport { identity } from 'ramda'\nimport { Field } from '../form'\nimport { FilePicker } from './file-picker'\nimport { toBase64 } from './utils'\nimport { FilePickerFieldProps } from './types'\n\n/**\n * The file picker component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see FilePicker\n * @see Field\n * @see {@link https://northlight.dev/reference/file-picker-field}\n *\n * @example (Example)\n * ## Meant for uploading images in a form\n * Where they handled as base64 string\n * (?\n * <Form initialValues={{image: ''}}>\n * {({watch}) => (\n * <Stack>\n * <FilePickerField name=\"image\" />\n * <Code maxH=\"xs\" overflowY=\"scroll\">{JSON.stringify(watch(), null, 2)}</Code>\n * </Stack>\n * )}\n * </Form>\n *\n * ?)\n *\n */\nexport const FilePickerField = ({\n name,\n label,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}: FilePickerFieldProps) => {\n const [ uploaded, setUploaded ] = useState(0)\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ onChange, value }) => (\n <FilePicker\n onChange={ async (file: File | null) => {\n if (file) {\n const formattedFile = await toBase64(file)\n setUploaded(1)\n onChange(formattedFile)\n onChangeCallback(formattedFile)\n } else {\n setUploaded(0)\n onChange(null)\n onChangeCallback(null)\n }\n } }\n value={ value }\n uploaded={ value ? 1 : uploaded }\n loadWithSpinner={ true }\n acceptFormat=\"image/*\"\n { ...rest }\n />\n ) }\n </Field>\n )\n}\n","import React, { DragEvent, useEffect, useRef, useState } from 'react'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { filter, identity } from 'ramda'\nimport { Image03Solid, UploadCloudSolid } from '@northlight/icons'\nimport { Box } from '../box'\nimport { Icon } from '../icon'\nimport { Input } from '../input'\nimport {\n compressImage,\n createFileObject,\n createPreviewFileObject,\n isFileImage,\n isValidFile,\n onlyAcceptsImages,\n readableFileSize,\n} from './utils'\nimport { Clickable } from '../clickable'\nimport { HStack, Stack } from '../stack'\nimport { Lead, P } from '../typography'\nimport { fiveHundredMB } from './constants'\nimport { FileFormat, MultiFileUploaderProps } from './types'\nimport { useCurrentTheme } from '../../utils'\n\n/**\n * Input to upload multiple files without ui to render files\n * @see MultiFilePicker\n * @see {@link https://northlight.dev/reference/multi-file-uploader}\n * @example\n * (?\n * () => {\n * const [ images, setImages ] = useState([])\n * return (\n * <Stack>\n <Box h=\"sm\">\n <Carousel>\n { images.map((imageSrc) => (\n <Image src={imageSrc} borderRadius=\"md\" />\n )) }\n </Carousel>\n </Box>\n <MultiFileUploader\n acceptFormat=\"image/*\"\n onChange={ (newFiles) =>\n setImages(\n newFiles.map((file) => URL.createObjectURL(file))\n )\n }\n />\n </Stack>\n * )\n * }\n * ?)\n *\n */\nexport function MultiFileUploader<T extends FileFormat> ({\n acceptFormat = '*',\n compression,\n onChange = identity,\n addFilesToQueue = identity,\n updatePreviewFiles = identity,\n maxFileSize = fiveHundredMB,\n ...rest\n}: MultiFileUploaderProps<T>) {\n const inputRef = useRef<HTMLInputElement>(null)\n const [ isInvalid, setIsInvalid ] = useState(false)\n const currentTheme = useCurrentTheme()\n const { multiFilePicker } = useMultiStyleConfig('FilePicker', { isInvalid, currentTheme, ...rest })\n const [ active, setActive ] = useState(false)\n const [ errorMessage, setErrorMessage ] = useState('')\n\n const onlyImageAccepted = onlyAcceptsImages(acceptFormat)\n\n useEffect(() => {\n if (isInvalid) {\n setTimeout(() => {\n setIsInvalid(false)\n }, 1500)\n }\n }, [ isInvalid ])\n\n const toggleHover = () => {\n setActive((prev) => !prev)\n }\n\n const handleClick = () => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }\n\n const updateMultipleFiles = async (newFiles: FileList) => {\n const filesArr: File[] = Array.prototype.slice.call(newFiles)\n const validFiles = filter((file) => {\n const fileCheck = isValidFile(file, acceptFormat, maxFileSize)\n if (!fileCheck.isValid) {\n setErrorMessage(fileCheck.errorMessage || '')\n }\n return fileCheck.isValid\n }, filesArr)\n if (filesArr.length > 0 && validFiles.length === 0) {\n setIsInvalid(true)\n }\n\n addFilesToQueue(validFiles.map((file) => createFileObject(file)))\n updatePreviewFiles(validFiles.map((file) => createPreviewFileObject(file)))\n const compressedFiles = validFiles.map(\n async (file) => (isFileImage(file)\n ? compressImage(\n file,\n compression?.width,\n compression?.height,\n compression?.quality\n ) as File\n : file)\n )\n Promise.all(compressedFiles).then((values) => {\n onChange(values)\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n })\n }\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault()\n updateMultipleFiles(e.dataTransfer.files)\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n updateMultipleFiles(e.target.files)\n }\n }\n return (\n <Clickable\n onClick={ handleClick }\n onDragOver={ (e: DragEvent) => e.preventDefault() }\n onDrop={ handleDrop }\n onMouseEnter={ toggleHover }\n onMouseLeave={ toggleHover }\n >\n <Box sx={ multiFilePicker } { ...rest }>\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n h=\"full\"\n w=\"full\"\n spacing={ 0 }\n >\n <Icon\n as={ onlyImageAccepted ? Image03Solid : UploadCloudSolid }\n boxSize=\"32px\"\n color={\n isInvalid\n ? 'destructive'\n : active\n ? 'brand'\n : 'text.subdued'\n }\n aria-label=\"image-icon-upload\"\n mb={ onlyImageAccepted ? '0a' : 0 }\n />\n <HStack spacing={ 1 } display={ isInvalid ? 'none' : 'flex' }>\n <P variant=\"14\" textAlign=\"center\" alignSelf=\"center\">\n Drag & drop { onlyImageAccepted ? 'images' : 'files' } here or\n </P>\n <Lead sx={ { textDecoration: 'underline', color: 'brand' } }>\n choose { onlyImageAccepted ? 'image' : 'file' }\n </Lead>\n </HStack>\n <P variant=\"14\" textAlign=\"center\" alignSelf=\"center\" display={ isInvalid ? 'initial' : 'none' }>\n { errorMessage }\n </P>\n <P variant=\"14\" sx={ { color: 'gray.400' } }>\n Max file size is { readableFileSize(maxFileSize) }\n </P>\n </Stack>\n <Input\n type=\"file\"\n display=\"none\"\n accept={ acceptFormat }\n onChange={ handleChange }\n multiple={ true }\n ref={ inputRef }\n />\n </Box>\n </Clickable>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { identity } from 'ramda'\nimport { useMultiStyleConfig } from '@chakra-ui/react'\nimport { DownloadDuo, EditBoxDuo, FileBlankDuo, Image03Duo } from '@northlight/icons'\nimport AvatarEditor from 'react-avatar-editor'\nimport { Icon } from '../icon'\nimport { SlideFade } from '../transitions'\nimport { P } from '../typography'\nimport { HStack, Stack } from '../stack'\nimport { convertBlobToFile, getImageAsFile, handleDownload, isFileImage, readableFileSize } from './utils'\nimport { Box } from '../box'\nimport { Image as ChakraImage } from '../image'\nimport { useDisclosure } from '../../hooks'\nimport { CloseButton } from '../close-button'\nimport { LoadingBar } from '../progress'\nimport { ConfirmDeleteModal } from './confirm-delete-modal'\nimport { FileEditorModal } from './file-editor-modal'\nimport { FileIconButton } from './file-icon-button'\nimport { FileFormat, FileItemProps } from './types'\nimport { defaultEditOptions } from './constants'\n\nexport function FileItem<T extends FileFormat> ({\n onChangeCallback,\n addFile = identity,\n deleteFile,\n file,\n confirmDelete = true,\n isLazy = false,\n editFileOptions = defaultEditOptions,\n}: FileItemProps<T>) {\n const { canEdit, canEditImage, canEditName } = editFileOptions\n const { fileItem } = useMultiStyleConfig('FilePicker')\n const editModalDisclosure = useDisclosure()\n const deleteModalDisclosure = useDisclosure()\n const imageEditorRef = useRef<AvatarEditor>(null)\n const [ fileName, setFileName ] = useState('')\n const [ show, setShow ] = useState(true)\n const [ hasLoaded, setHasLoaded ] = useState(false)\n const [ loadingImage, setLoadingImage ] = useState(true)\n\n useEffect(() => {\n if (file.src) {\n const buffer = new Image()\n buffer.src = file.src\n buffer.onload = () => {\n setLoadingImage(false)\n }\n }\n }, [ file.isUploading ])\n\n const handleCrop = async () => {\n if (imageEditorRef.current && isFileImage(file)) {\n const canvas = imageEditorRef.current.getImageScaledToCanvas()\n canvas.toBlob(async (blob) => {\n if (file && blob) {\n const newFile = convertBlobToFile(blob, fileName || file.name, file.type)\n deleteFile(file)\n addFile(newFile, file._id)\n onChangeCallback([ newFile ])\n }\n })\n editModalDisclosure.onClose()\n } else if (file.src) {\n const newFile = await getImageAsFile(file, fileName)\n deleteFile(file)\n addFile(newFile, file._id)\n onChangeCallback([ newFile ])\n }\n }\n\n const clearImage = () => {\n setShow(false)\n setTimeout(() => {\n deleteFile(file)\n }, 500)\n }\n\n return (\n <SlideFade\n in={ show }\n direction=\"left\"\n offset={ 30 }\n enterDuration={ !isLazy ? 300 : 1 }\n exitDuration={ 300 }\n >\n <Box sx={ fileItem }>\n <HStack\n w=\"full\"\n h=\"full\"\n borderRadius={ 6 }\n alignItems=\"center\"\n justifyContent=\"space-between\"\n px={ 2 }\n pt={ file.isUploading && !hasLoaded ? 2 : 0 }\n >\n <HStack spacing={ 4 } alignItems=\"start\" maxW=\"50%\">\n { isFileImage(file)\n ? file.isUploading || loadingImage\n ? (\n <Icon\n as={ Image03Duo }\n bgColor=\"gray.100\"\n color=\"gray.400\"\n boxSize=\"10\"\n borderRadius=\"8\"\n p=\"2\"\n />\n )\n : (\n <ChakraImage\n src={ file.src || '' }\n alt=\"preview-image\"\n objectFit=\"cover\"\n display={ file.src ? 'inherit' : 'none' }\n borderRadius=\"8\"\n boxSize=\"10\"\n />\n )\n : (\n <Icon\n as={ FileBlankDuo }\n boxSize=\"10\"\n p=\"1\"\n color=\"gray.300\"\n />\n )\n }\n <Stack\n alignItems=\"start\"\n justifyContent=\"start\"\n spacing=\"0\"\n maxW=\"100%\"\n >\n <P\n variant=\"14\"\n whiteSpace=\"nowrap\"\n textOverflow=\"ellipsis\"\n overflow=\"hidden\"\n maxW=\"100%\"\n >\n { file?.name }\n </P>\n <P variant=\"14\" sx={ { color: 'gray.400' } }>\n { file?.size && readableFileSize(file.size) }\n </P>\n </Stack>\n </HStack>\n <HStack\n spacing=\"3\"\n justifyContent=\"center\"\n borderRadius=\"6\"\n bgColor=\"bg.filled\"\n display={ file.isUploading ? 'none' : 'flex' }\n p=\"1\"\n >\n { canEdit && (\n <FileIconButton\n aria-label=\"Edit-image\"\n onClick={ editModalDisclosure.onOpen }\n icon={ EditBoxDuo }\n />\n ) }\n <FileIconButton\n aria-label=\"download-image\"\n onClick={ handleDownload(file) }\n icon={ DownloadDuo }\n />\n <CloseButton\n onClick={ confirmDelete ? deleteModalDisclosure.onOpen : clearImage }\n />\n </HStack>\n </HStack>\n <Box\n w=\"full\"\n pl=\"16\"\n pr=\"4\"\n pb=\"2\"\n mt=\"-2\"\n display={ file.isUploading ? 'block' : 'none' }\n >\n <LoadingBar\n loaded={ file.size ? (file?.uploaded || 0) / file.size : 0 }\n onLoadEnd={ () => setHasLoaded(true) }\n />\n </Box>\n { canEdit && (\n <FileEditorModal\n { ...editModalDisclosure }\n fileName={ fileName || file.name }\n setFileName={ setFileName }\n image={ file.src }\n canCropImage={ canEditImage }\n canEditFileName={ canEditName }\n handleCrop={ handleCrop }\n isImage={ isFileImage(file) }\n ref={ imageEditorRef }\n />\n ) }\n <ConfirmDeleteModal\n { ...deleteModalDisclosure }\n confirmDelete={ clearImage }\n fileName={ fileName || file.name }\n />\n </Box>\n </SlideFade>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { any, identity, map } from 'ramda'\nimport { FileItem } from './file-item'\nimport { Stack } from '../stack'\nimport { createPreviewFileObject, getNewUploadingFiles, isFile, isOverflowing } from './utils'\nimport { FileFormat, MultiFileListProps } from './types'\nimport { defaultEditOptions } from './constants'\n\n/**\n * Show list of files, their uploading progress as well as options to edit/delete them\n * @see MultiFileUploader\n * @see MultiFilePicker\n * @see {@link https://northlight.dev/multi-file-list}\n *\n */\nexport function MultiFileList<T extends FileFormat> ({\n files,\n uploadingFiles,\n onChange = identity,\n deleteFile = identity,\n addFile = identity,\n confirmDelete,\n editFileOptions = defaultEditOptions,\n enableSmartLoad = true,\n ...rest\n}: MultiFileListProps<T>) {\n const [ uploadingFilesReference, setUploadingFilesReference ] = useState(uploadingFiles)\n const [ overflowing, setOverflowing ] = useState(false)\n\n const formattedFiles = files?.map((file) => (\n isFile(file)\n ? createPreviewFileObject(file as unknown as File)\n : file\n ))\n\n const listRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (uploadingFiles && uploadingFilesReference && files) {\n if (enableSmartLoad) {\n const newVal = getNewUploadingFiles<T>(uploadingFilesReference, uploadingFiles, files)\n setUploadingFilesReference(newVal)\n } else {\n setUploadingFilesReference(uploadingFiles)\n }\n }\n if (listRef.current) {\n setOverflowing(isOverflowing(listRef.current))\n }\n }, [ uploadingFiles, files ])\n\n const isLazy = uploadingFilesReference\n ? any((file: T) => file.isLazy || false, uploadingFilesReference as T[])\n : false\n\n return (\n <Stack\n ref={ listRef }\n spacing={ 2 }\n maxH=\"sm\"\n pr={ overflowing ? 2 : 0 }\n overflowY=\"auto\"\n { ...rest }\n >\n { uploadingFilesReference && map((file) => (\n <FileItem\n onChangeCallback={ onChange }\n file={ file }\n key={ file._id }\n deleteFile={ deleteFile }\n confirmDelete={ confirmDelete }\n isLazy={ isLazy }\n editFileOptions={ editFileOptions }\n />\n ), uploadingFilesReference) }\n { formattedFiles && map((file) => (\n <FileItem\n onChangeCallback={ onChange }\n addFile={ addFile }\n file={ file }\n key={ file._id }\n deleteFile={ deleteFile }\n confirmDelete={ confirmDelete }\n editFileOptions={ editFileOptions }\n />\n ), formattedFiles) }\n </Stack>\n )\n}\n","import React, { useState } from 'react'\nimport { findIndex, identity, insert, isEmpty, isNil, remove } from 'ramda'\nimport { MultiFileList } from './multi-file-list'\nimport { createPreviewFileObject } from './utils'\nimport { MultiFileUploader } from './multi-file-uploader'\nimport { Stack } from '../stack'\nimport { defaultEditOptions, fiveHundredMB } from './constants'\nimport { FileFormat, MultiFilePickerProps } from './types'\n\n/**\n * Lets user import file of any type as Javascript File Object\n * @see FilePicker\n * @see {@link https://northlight.dev/reference/multi-file-picker}\n *\n * @example (Example)\n * (?\n * <MultiFilePicker />\n * ?)\n * ## For more information, view: <a href=\"https://northlight.dev/components/file%20picker\">guide</a>\n *\n *\n */\nexport function MultiFilePicker<T extends FileFormat> ({\n acceptFormat = '*',\n compression,\n onChange = identity,\n files = null,\n uploadingFiles,\n deleteFile = null,\n confirmDelete = true,\n maxFileSize = fiveHundredMB,\n enablePreLoad = true,\n enableSmartLoad = true,\n editFileOptions = defaultEditOptions,\n variant,\n ...rest\n}: MultiFilePickerProps<T>) {\n const [ bufferFiles, setBufferFiles ] = useState<T[]>([])\n const [ previewFiles, setPreviewFiles ] = useState<T[]>([])\n\n const getIndexById = (id: string) => findIndex((file) => file._id === id, previewFiles)\n\n const addFile = (file: File, id: string) => {\n const addedFile = createPreviewFileObject(file)\n const indexOfChanged = getIndexById(id)\n const newPreviewFiles = remove(indexOfChanged, 1, previewFiles)\n const newFiles = insert(indexOfChanged, addedFile, newPreviewFiles)\n setPreviewFiles(newFiles as T[])\n }\n\n const handleDelete = (file: T | FileFormat) => {\n const indexOfRemoved = getIndexById(file._id)\n const newPreviewFiles = remove(indexOfRemoved, 1, previewFiles)\n setPreviewFiles(newPreviewFiles)\n }\n\n const updateQueuedFiles = (queuedFiles: T[]) => {\n if (enablePreLoad) {\n setBufferFiles(queuedFiles)\n }\n }\n\n return (\n <Stack\n spacing={ 4 }\n maxW=\"inherit\"\n maxH=\"inherit\"\n { ...rest }\n >\n <MultiFileUploader\n acceptFormat={ acceptFormat }\n compression={ compression }\n onChange={ onChange }\n addFilesToQueue={ updateQueuedFiles }\n updatePreviewFiles={ setPreviewFiles }\n maxFileSize={ maxFileSize }\n variant={ variant }\n />\n <MultiFileList\n files={ files || previewFiles }\n onChange={ onChange }\n uploadingFiles={\n isEmpty(files) && (uploadingFiles?.length === 0 || isNil(uploadingFiles))\n ? bufferFiles\n : uploadingFiles\n }\n deleteFile={ deleteFile || handleDelete }\n confirmDelete={ confirmDelete }\n enableSmartLoad={ enableSmartLoad }\n editFileOptions={ editFileOptions }\n addFile={ addFile }\n />\n </Stack>\n )\n}\n","import React from 'react'\nimport { concat, findIndex, identity, isEmpty, map, remove } from 'ramda'\nimport { Field } from '../form'\nimport { MultiFilePicker } from './multi-file-picker'\nimport { createFileObjectFromSrc, isFile, toBase64 } from './utils'\nimport { FileFormat, MultiFilePickerFieldProps } from './types'\n\n/**\n * The multi file picker component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see MultiFilePicker\n * @see Field\n * @see {@link https://northlight.dev/reference/multi-file-picker-field}\n *\n * @example (Example)\n * ## Meant for uploading images in a form\n * Where they handled as base64 strings\n * (?\n * <Form initialValues={{images: []}}>\n * {({watch}) => (\n * <Stack>\n * <MultiFilePickerField name=\"images\" />\n * <Code maxH=\"xs\" overflowY=\"scroll\">{JSON.stringify(watch(), null, 2)}</Code>\n * </Stack>\n * )}\n * </Form>\n *\n * ?)\n *\n */\nexport const MultiFilePickerField = ({\n name,\n label,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n ...rest\n}: MultiFilePickerFieldProps) => {\n const getFiles = (sources: string[]) => {\n const buffer = map((source) => ({\n type: 'jpg',\n src: source,\n name: '',\n }), sources)\n const formattedFiles = map((file) => (isFile(file)\n ? file : createFileObjectFromSrc(file)), buffer)\n return formattedFiles as FileFormat[]\n }\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ onChange, value }) => {\n const handleDelete = (file: FileFormat) => {\n const removedIndex = findIndex((src) => src === file.src, value)\n const newValues = remove(removedIndex, 1, value)\n onChange(newValues)\n }\n\n return (\n <MultiFilePicker\n onChange={ async (files: File[] | null) => {\n if (!isEmpty(files)) {\n const newFiles = files?.map(async (file) => toBase64(file))\n if (newFiles) {\n Promise.all(newFiles).then((values) => {\n onChange(concat(value, values))\n onChangeCallback(values)\n })\n }\n } else {\n onChange([])\n onChangeCallback([])\n }\n } }\n enablePreLoad={ false }\n enableSmartLoad={ false }\n deleteFile={ handleDelete }\n acceptFormat=\"image/*\"\n editFileOptions={ { canEdit: true, canEditImage: true, canEditName: false } }\n confirmDelete={ false }\n files={ getFiles(value) }\n { ...rest }\n />\n )\n } }\n </Field>\n )\n}\n","import React from 'react'\nimport { ChakraProvider } from '@chakra-ui/react'\nimport { theme as webappTheme } from '../../theme'\nimport { MediatoolThemeProviderProps } from './types'\nimport { CustomTheme } from '../../utils/use-current-theme'\n\n/**\n * Should be at the root of you project, wraps the app in the theme context\n * @see {@link https://northlight.dev/reference/mediatool-theme-provider}\n *\n * @example\n * Should pass down a theme from northlight/ui, currently exports two themes:\n * * theme - light mode\n * * tottTheme - dark mode\n *\n *\n */\nexport const MediatoolThemeProvider = ({\n children,\n theme = webappTheme,\n themeName = 'webappTheme',\n}: MediatoolThemeProviderProps) => (\n <ChakraProvider resetCSS={ true } theme={ theme }>\n <CustomTheme.Provider value={ themeName }>\n { children }\n </CustomTheme.Provider>\n </ChakraProvider>\n)\n","import React from 'react'\nimport { Menu as ChakraMenu } from '@chakra-ui/react'\nimport { MenuProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/menu}\n *\n * @example (Example)\n * ##Clean menu with different options\n * The menu can be `relaxed` for primary menus, and `compact` for secodnary menus.\n * <br />\n * (?\n * +\n * const MyMenuComponent = () => {\n * const [selectedLabel, setSelectedLabel] = useState('Compare periods');\n *\n * const menuOptions = {\n * '1': 'No Comparison',\n * '2': 'Report date range',\n * '3': 'Previous week',\n * '4': 'Previous quarter',\n * '5': 'Previous month',\n * '6': 'Previous year',\n * '7': 'Previous period',\n *\n * }\n *\n * const handleMenuItemClick = (value) => {\n * setSelectedLabel(menuOptions[value] || 'Compare periods');\n * }\n *\n * return (\n * <Menu variant=\"relaxed\" closeOnSelect={false}>\n * <MenuButton\n * as={Button}\n * leftIcon={<VersionsDuo /> }\n * variant=\"brand\"\n * rightIcon={<ChevronDownDuo />}\n * >\n * { selectedLabel }\n * </MenuButton>\n * <MenuList>\n * <MenuOptionGroup onChange={ handleMenuItemClick } defaultValue=\"1\" type=\"radio\">\n * <MenuItemOption value=\"1\">No Comparison</MenuItemOption>\n * <MenuDivider />\n * <MenuItemOption isDisabled={true} value=\"2\">\n * <Box>\n * <Text>Report date range</Text>\n * <Text fontSize=\"xs\" color=\"text.subdued\">\n * 12-12-2022 01-01-23\n * </Text>\n * </Box>\n * </MenuItemOption>\n * <MenuDivider />\n * <MenuItemOption value=\"3\">Previous week</MenuItemOption>\n * <MenuItemOption value=\"4\">Previous quarter</MenuItemOption>\n * <MenuItemOption value=\"5\">Previous month</MenuItemOption>\n * <MenuItemOption value=\"6\">Previous year</MenuItemOption>\n * <MenuItemOption value=\"7\">Previous period</MenuItemOption>\n * </MenuOptionGroup>\n *<MenuDivider />\n * <MenuItem sx={ { placeContent: 'space-between' } }>\n * Custom Date\n * <Icon as={ ChevronRightDuo } aligh=\"right\" />\n * </MenuItem>\n * </MenuList>\n* </Menu>\n* )\n*\n* }\n*\n* render(<MyMenuComponent/>)\n* ?)\n*\n* @example (Example)\n* ##Menu with Group titles\n* To group related MenuItems, use the MenuGroup component and pass it a title for the group name\n* <br />\n* (?\n * <Menu closeOnSelect={false}>\n * <MenuButton as={Button} rightIcon={<ChevronDownDuo />}>\n * Actions\n * </MenuButton>\n * <MenuList minWidth='240px'>\n * <MenuOptionGroup defaultValue='asc' title='Order' type='radio'>\n * <MenuItemOption value='asc'>Ascending</MenuItemOption>\n * <MenuItemOption value='desc'>Descending</MenuItemOption>\n * </MenuOptionGroup>\n * <MenuDivider />\n * <MenuOptionGroup title='Country' type='checkbox'>\n * <MenuItemOption value='email'>Email</MenuItemOption>\n * <MenuItemOption value='phone'>Phone</MenuItemOption>\n * <MenuItemOption value='country'>Country</MenuItemOption>\n * </MenuOptionGroup>\n * </MenuList>\n* </Menu>\n* ?)\n*\n*/\n\nexport const Menu = ({ variant = 'relaxed', ...props }: MenuProps) => (\n <ChakraMenu variant={ variant } { ...props } />\n)\n","import React from 'react'\nimport {\n NumberInputStepper as ChakraNumberInputStepper,\n NumberDecrementStepper,\n NumberIncrementStepper,\n} from '@chakra-ui/react'\nimport { ChevronDownSolid, ChevronUpSolid } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { HStack } from '../stack'\nimport { Divider } from '../divider'\nimport { P } from '../typography'\nimport { Center } from '../center'\nimport { NumberInputStepperProps } from './types'\n\nexport const NumberInputStepper = ({\n includePercentage = false,\n enableStepperArrows = false,\n}: NumberInputStepperProps) => (\n <ChakraNumberInputStepper>\n <HStack alignItems=\"center\" h=\"full\">\n { includePercentage && (\n <Center bgColor=\"bg.layer\" borderRadius=\"md\" boxSize=\"6\">\n <P>%</P>\n </Center>\n ) }\n { enableStepperArrows && (\n <HStack alignItems=\"center\" h=\"full\">\n <Divider orientation=\"vertical\" h=\"50%\" />\n <NumberIncrementStepper border=\"none\">\n <Icon\n as={ ChevronUpSolid }\n color=\"icon.input-stepper.default\"\n boxSize={ 4 }\n />\n </NumberIncrementStepper>\n <NumberDecrementStepper>\n <Icon\n as={ ChevronDownSolid }\n color=\"icon.input-stepper.default\"\n boxSize={ 4 }\n />\n </NumberDecrementStepper>\n </HStack>\n ) }\n </HStack>\n </ChakraNumberInputStepper>\n)\n","import { head, isNil, last, length, match, split } from 'ramda'\n\nconst regex = /(9{13,}|0{13,})(\\d)*$/gm\n\nexport const advancedParseFloat = (value: number | string) => {\n if (isNil(value) || Number.isNaN(parseFloat(value as string))) {\n return value\n }\n\n const splitValue = split('.', `${value}`)\n const intPart = head(splitValue)\n const decimalPart = last(splitValue)\n\n if (isNil(decimalPart)) {\n return value\n }\n\n const roundingError = match(regex, decimalPart)\n if (isNil(roundingError)) {\n return value\n }\n\n const decimalsErrorLength = length(head(roundingError) as string)\n const correctDecimalsLength = decimalPart.length - decimalsErrorLength\n\n return parseFloat(\n parseFloat(`${intPart}.${decimalPart}`)\n .toFixed(correctDecimalsLength)\n )\n}\n","import React, { ChangeEvent } from 'react'\nimport {\n NumberInput as ChakraNumberInput,\n NumberInputField,\n} from '@chakra-ui/react'\nimport { defaultTo, identity, path } from 'ramda'\nimport { NumberInputStepper } from './number-input-stepper'\nimport { NumberInputProps } from './types'\nimport { advancedParseFloat } from './advanced-parse-float'\n\n/**\n * Basic accessible input that only allows numbers, with support for arrow keys,\n * min max values and percentages\n *\n * @example\n * (?\n * <Box p=\"3\">\n * <NumberInput max={100} min={0} step={3} onlyAcceptPercentage={true} enableStepperArrows={true}/>\n * </Box>\n * ?)\n *\n */\nexport const NumberInput = ({\n variant = 'default',\n size = 'md',\n onChange = identity,\n onInputChange = identity,\n enableStepperArrows = false,\n name,\n onlyAcceptPercentage = false,\n ...rest\n}: NumberInputProps) => {\n const percentageProps = onlyAcceptPercentage && {\n step: 0.1,\n }\n\n const percentageFactor = onlyAcceptPercentage ? 0.01 : 1\n const handleChange = (e: ChangeEvent<HTMLInputElement> | string) => {\n const input = defaultTo(e, path([ 'target', 'value' ], e)) as string\n onInputChange(input)\n\n const value = advancedParseFloat(parseFloat(input) * percentageFactor)\n\n const filteredNaN = Number.isNaN(value)\n ? ''\n : value\n\n onChange(`${filteredNaN}`)\n }\n\n return (\n <ChakraNumberInput\n variant={ variant }\n size={ size }\n onChange={ handleChange }\n id={ name }\n { ...percentageProps }\n { ...rest }\n >\n <NumberInputField onChange={ handleChange } />\n <NumberInputStepper\n includePercentage={ onlyAcceptPercentage }\n enableStepperArrows={ enableStepperArrows }\n />\n </ChakraNumberInput>\n )\n}\n","import React, { forwardRef, useState } from 'react'\nimport { identity, isNil } from 'ramda'\nimport { NumberInputFieldProps } from './types'\nimport { Field } from '../form'\nimport { NumberInput } from './number-input'\nimport { advancedParseFloat } from './advanced-parse-float'\nimport { InputGroupWrapper } from '../../internal-components/input-group-wrapper/input-group-wrapper'\n\n/**\n * The number input component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see NumberInput\n * @see {@link https://northlight.dev/reference/number-input-field}\n *\n */\nexport const NumberInputField = forwardRef<HTMLDivElement, NumberInputFieldProps>(({\n name,\n label,\n direction,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n onlyAcceptPercentage = false,\n inputLeftElement,\n inputRightElement,\n ...rest\n}, ref) => {\n const formatNumber = (value: number, factor: number) => (\n onlyAcceptPercentage\n ? advancedParseFloat(value * factor)\n : value\n )\n\n return (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => {\n const initialValue = isNil(value) || Number.isNaN(parseFloat(value))\n ? ''\n : formatNumber(value, 100)\n\n const [ displayValue, setDisplayValue ] = useState(initialValue)\n\n return (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <NumberInput\n name={ name }\n data-testid=\"number-input-field-test-id\"\n onInputChange={ (v) => {\n setDisplayValue(v)\n const parsed = formatNumber(parseFloat(v), 0.01)\n\n onChange(parsed)\n onChangeCallback(parsed)\n } }\n value={ displayValue }\n onlyAcceptPercentage={ onlyAcceptPercentage }\n { ...rest }\n />\n </InputGroupWrapper>\n )\n } }\n </Field>\n )\n})\n","import React, { forwardRef, useState } from 'react'\nimport { Box, useMultiStyleConfig } from '@chakra-ui/react'\nimport { Blinker } from '../blinker'\nimport { IconButton } from '../icon-button'\nimport { NotificationIconButtonProps } from './types'\n\n/**\n * A custom component that composes the IconButton and Blinker components.\n * The notification blinker blinks on hover.\n * @see {@link https://northlight.dev/reference/notification-icon-button}\n *\n * @example\n * (?\n * <Box w=\"min-content\">\n<NotificationIconButton\n variant=\"brand\"\n aria-label=\"conversations\"\n icon={ <Icon as={ ConversationDuo } /> }\n hasNotification={ true }\n size=\"lg\"\n/>\n</Box>\n * ?)\n */\nexport const NotificationIconButton = forwardRef(({\n variant = 'ghost',\n icon,\n 'aria-label': ariaLabel,\n hasNotification = false,\n blinkerColor = 'green.500',\n size,\n ...rest\n}: NotificationIconButtonProps, ref: any) => {\n const [ isBlinking, setIsBlinking ] = useState(false)\n const { container, notifier } = useMultiStyleConfig('NotificationIconButton', { size, variant })\n return (\n <Box\n onMouseEnter={ () => setIsBlinking(true) }\n onMouseLeave={ () => setIsBlinking(false) }\n sx={ container }\n >\n { hasNotification && (\n <Box sx={ notifier }>\n <Blinker isBlinking={ isBlinking } color={ blinkerColor } size=\"2xs\" />\n </Box>\n ) }\n <IconButton\n variant={ variant }\n icon={ icon }\n aria-label={ ariaLabel }\n ref={ ref }\n size={ size }\n { ...rest }\n />\n </Box>\n )\n})\n","import React from 'react'\nimport { PinInput as ChakraPinInput } from '@chakra-ui/react'\nimport { PinInputProps } from './types'\n\n/**\n * For entering numbers in ex two factor authentication\n * @see {@link https://northlight.dev/reference/pin-input}\n * @example\n * (?\n <HStack p=\"1\">\n <PinInput>\n <PinInputField />\n <PinInputField />\n <PinInputField />\n <PinInputField />\n </PinInput>\n </HStack>\n * ?)\n *\n *\n */\nexport const PinInput = ({\n variant = 'outline',\n hidden,\n children,\n ...rest\n}: PinInputProps) => (\n <ChakraPinInput { ...rest } variant={ variant } placeholder=\"●\" mask={ hidden }>\n { children }\n </ChakraPinInput>\n)\n","import { filter, find, is, length, propEq } from 'ramda'\nimport { Option, SelectProps } from './types'\n\nconst isStringArray = (value: any): value is string[] =>\n is(Array, value) && length(value) > 0 && typeof value[0] === 'string'\n\nexport const getMatchingValue = <T extends Option, K extends boolean>(\n value: SelectProps<T, K>['value'],\n options: SelectProps<T, K>['options']\n): T | T[] | undefined => {\n if (typeof value === 'string') {\n return find(propEq('value', value), options as T[])\n }\n\n if (isStringArray(value)) {\n return filter(\n (option) => (value).includes(option.value),\n options as T[]\n )\n }\n\n return value as K extends true ? T[] : T\n}\n","import React, { Ref, forwardRef, useMemo, useRef } from 'react'\nimport {\n Select as ChakraReactSelect,\n GroupBase,\n OptionsOrGroups,\n SelectInstance,\n} from 'chakra-react-select'\nimport { Box } from '@chakra-ui/react'\nimport { always, equals, identity, is } from 'ramda'\nimport { Option, SelectProps } from './types'\nimport { customSelectStyles } from '../../theme/components/select/custom-select'\nimport { useSelectCallbacks } from '../../hooks'\nimport { getComponents } from '../search-bar/get-components'\nimport { getMatchingValue } from './get-matching-value'\nimport { theme } from '../../theme'\n\n/**\n * Select component that provides a customizable and accessible select input.\n * It is built on top of Chakra UI and Chakra React Select components.\n *\n * @see SearchBar\n * @see {@link https://northlight.dev/reference/select}\n *\n * @example (Example)\n * ## Single Select\n * (?\n * <Select\n * options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}\n * onChange={(value, action) => console.log('Selected:', value)}\n * />\n * ?)\n *\n * @example (Example)\n * ## Clearable Select\n * (?\n * <Select\n * options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}\n * onChange={(value, action) => console.log('Selected:', value)}\n * isClearable={ true }\n * />\n * ?)\n *\n * @example (Example)\n * ## Multi select\n * (?\n * <Select\n * options={[{ label: 'Option 1', value: '1' }, { label: 'Option 2', value: '2' }]}\n * onChange={(value, action) => console.log('Selected:', value)}\n * isMulti\n * />\n * ?)\n *\n * @example (Example)\n * ## Event meta\n * _There is a second argument passed to the handlechange that can be useful\n * for knowing which elements where adding/removed_\n * (?\n * () => {\n * const handleChange = (val, e) => {\n switch (e.action) {\n case 'select-option':\n //on add value\n console.log(e.option)\n break\n case 'pop-value':\n //on remove value\n console.log(e.removedValue.categoryKey)\n break\n default:\n break\n }\n }\n * return <Select onChange={handleChange} options={[{label: '1', value: '1'}]} isMulti={true}/>\n *\n * }\n * ?)\n *\n * @example (Example)\n * ##Customizing\n * There are two special props for easy customization\n * * customOption\n * * customTag\n *\n * This are themselves react components\n * (?\n+const customOption = ({ label }) => (\n <HStack>\n <Avatar name={label} />\n <P>{label}</P>\n </HStack>\n);\n\nconst customTag = ({ label }) => {\n const [ isIncluded, setIsIncluded ] = useState(true)\n const toggle = () => setIsIncluded((prev) => !prev)\n\n return (\n <Flex>\n <Button\n size=\"xs\"\n onClick={ toggle }\n onMouseDown={ (e) => e.stopPropagation() }\n >\n { isIncluded ? 'Include' : 'Exclude' }\n </Button>\n <Tag>{ label }</Tag>\n </Flex>\n )\n}\n\nconst CustomSelect = () => (\n <Select\n customOption={customOption}\n customTag={ customTag }\n isMulti={true}\n options={[\n { label: 'Option 1', value: '1' },\n { label: 'Option 2', value: '2' },\n ]}\n\n />\n);\n\nrender(<CustomSelect />);\n *\n * ?)\n *\n *\n * @example (Example)\n * ## Testing\n * You can grab the test id for the select by\n * **screen.getByTestId('custom-testid)\n * .children[0].children[2].children[0].children[1].children[0]**\n * (?\n * <Select\n * data-testid=\"custom-test-id\"\n * />\n * ?)\n*/\nexport const Select = forwardRef(<T extends Option, K extends boolean = false>({\n options,\n isMulti,\n onChange = identity,\n onAdd = identity,\n onRemove = identity,\n isLoading,\n loadingList = () => null,\n 'data-testid': testId,\n customOption = null,\n customTag = null,\n isClearable = false,\n value,\n icon,\n components,\n generateComponentsUpdateKey = always(0),\n ...rest\n}: SelectProps<T, K>,\n ref: Ref<SelectInstance<T, K, GroupBase<T>>>\n) => {\n const handleChange = useSelectCallbacks<T, K>({\n onChange,\n onAdd,\n onRemove,\n isMulti,\n value: is(Array, value) ? (value as T[]) : [],\n })\n\n const customComponents = useMemo(\n () => getComponents<T>(components),\n [ generateComponentsUpdateKey() ]\n )\n\n const prevOptions = useRef<OptionsOrGroups<T, GroupBase<T>> | undefined>(\n options\n )\n const renderedOptions = useMemo(() => {\n if (!equals(prevOptions.current, options)) {\n prevOptions.current = options\n }\n return prevOptions.current\n }, [ options ])\n\n return (\n <Box w=\"full\" data-testid={ testId } cursor=\"pointer\">\n <ChakraReactSelect\n isMulti={ isMulti }\n options={ renderedOptions }\n useBasicStyles={ true }\n closeMenuOnSelect={ !isMulti }\n hideSelectedOptions={ false }\n isClearable={ isClearable }\n onChange={ handleChange }\n selectedOptionStyle=\"check\"\n chakraStyles={ customSelectStyles }\n isLoading={ isLoading }\n { ...(isLoading && { components: { MenuList: loadingList } }) }\n value={ getMatchingValue(value, options) }\n customOption={ customOption }\n customTag={ customTag }\n icon={ icon }\n components={ customComponents }\n ref={ ref }\n menuPortalTarget={ document.body }\n styles={ { menuPortal: (base) => ({ ...base, zIndex: theme.zIndices.popover }) } }\n { ...rest }\n />\n </Box>\n )\n})\n","import React, { forwardRef } from 'react'\nimport { XCloseSolid } from '@northlight/icons'\nimport { equals, identity, isNil } from 'ramda'\nimport { Option, SelectFieldProps } from './types'\nimport { Field } from '../form'\nimport { Select } from './select'\nimport { HStack } from '../stack'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { InputGroupWrapper } from '../../internal-components'\n\nconst BaseSelectField = <T extends Option, K extends boolean = false>(\n {\n name,\n label,\n options,\n direction = 'column',\n isMulti,\n isRequired,\n validate,\n isClearable = true,\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n }: SelectFieldProps<T, K>,\n ref: React.Ref<HTMLDivElement>\n) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n noLabelConnection={ true }\n validate={ validate }\n ref={ ref }\n >\n { ({ value, onChange }) => (\n <HStack w=\"full\">\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <Select<T, K>\n name={ name }\n options={ options }\n isMulti={ isMulti }\n onChange={ (values, event) => {\n onChange(\n isMulti\n ? (values as T[]).map((item: any) => item.value)\n : (values as T).value\n )\n onChangeCallback(values as K extends true ? T[] : T, event)\n } }\n value={\n value\n ? (options\n ?.flatMap((inner: any) =>\n (inner.options ? inner.options : inner)\n )\n .filter((option: any) =>\n (isMulti\n ? value.includes(option.value)\n : equals(value, option.value))\n ) as any)\n : null\n }\n { ...rest }\n />\n </InputGroupWrapper>\n <IconButton\n aria-label={ `${name}-close-button` }\n variant=\"danger\"\n size=\"sm\"\n fontSize=\"xs\"\n hidden={ isNil(value) || !isClearable }\n onClick={ () => {\n onChange(undefined)\n onChangeCallback(undefined, { action: 'clear', removedValues: value })\n } }\n icon={ <Icon as={ XCloseSolid } /> }\n />\n </HStack>\n ) }\n </Field>\n )\n\nexport const SelectField = forwardRef(BaseSelectField)\n","import React, { MouseEventHandler } from 'react'\nimport {\n MultiValueProps,\n MultiValueRemoveProps,\n chakraComponents,\n} from 'chakra-react-select'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { Box } from '@chakra-ui/react'\nimport { Option } from './types'\n\nexport const SortableMultiValue = <T extends Option>(props: MultiValueProps<T, true>) => {\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault()\n e.stopPropagation()\n }\n const innerProps = { ...props.innerProps, onMouseDown }\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({\n id: props.data.value,\n })\n\n return (\n <Box\n ref={ setNodeRef }\n transform={ CSS.Translate.toString(transform) }\n transition={ transition }\n cursor=\"grab\"\n _hover={ { opacity: 0.8 } }\n _active={ { cursor: 'grabbing' } }\n { ...attributes }\n { ...listeners }\n >\n <chakraComponents.MultiValue { ...props } innerProps={ innerProps } />\n </Box>\n )\n}\n\nexport const SortableMultiValueRemove = <T extends Option>(\n { innerProps, ...props }: MultiValueRemoveProps<T, true>\n) => (\n <chakraComponents.MultiValueRemove\n { ...props }\n innerProps={ {\n onPointerDown: (e) => e.stopPropagation(),\n ...innerProps,\n } }\n />\n )\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ActionMeta,\n MultiValue,\n OnChangeValue,\n} from 'chakra-react-select'\nimport { DndContext, DragEndEvent, DragOverEvent, closestCenter } from '@dnd-kit/core'\nimport { restrictToParentElement } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n arrayMove,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { Select } from './select'\nimport { Option, SelectProps } from './types'\nimport { SortableMultiValue, SortableMultiValueRemove } from './sortable-select-values'\n\nexport interface SortableSelectProps<T extends Option>\n extends Omit<SelectProps<T, true>, 'isMulti'> {\n /** The currently selected options */\n value?: T[] | string[]\n /** Callback when the order or selection changes */\n onChange?: (selected: MultiValue<T>, event: ActionMeta<T>) => void\n}\n\nconst isOptionArray = <T extends Option>(value: unknown): value is T[] =>\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'object' &&\n value[0] !== null &&\n 'value' in value[0]\n\nconst isStringArray = (value: unknown): value is string[] =>\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'string'\n\n/**\n * SortableSelect component that provides drag-and-drop reordering for multi-select options.\n * It is built on top of the Select component with @dnd-kit integration.\n *\n * Drag-and-drop reordering.\n * Supports both string arrays and option objects as values.\n * Preserves order from value prop (not options order).\n * Works seamlessly with react-hook-form.\n * All Select component props and styling supported.\n *\n * @see Select\n * @see MultiSort\n * @see Draggable\n * @see {@link https://northlight.dev/reference/sortable-select}\n *\n * @example (Example)\n * ## Basic Usage with String Array\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['USD', 'EUR', 'GBP'])\n *\n * const currencyOptions = [\n * { label: 'US Dollar', value: 'USD' },\n * { label: 'Euro', value: 'EUR' },\n * { label: 'British Pound', value: 'GBP' },\n * { label: 'Japanese Yen', value: 'JPY' },\n * ]\n *\n * return (\n * <SortableSelect\n * options={currencyOptions}\n * value={selected}\n * onChange={(value) => setSelected((value || []).map(v => v.value))}\n * placeholder=\"Select currencies\"\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## Usage with Option Objects\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState([\n * { label: 'Apple', value: 'apple' },\n * { label: 'Banana', value: 'banana' }\n * ])\n *\n * const fruitOptions = [\n * { label: 'Apple', value: 'apple' },\n * { label: 'Banana', value: 'banana' },\n * { label: 'Cherry', value: 'cherry' },\n * { label: 'Date', value: 'date' },\n * ]\n *\n * return (\n * <SortableSelect\n * options={fruitOptions}\n * value={selected}\n * onChange={(value) => setSelected(value || [])}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## React Hook Form Integration\n * _Use with react-hook-form for controlled form state with reordering_\n * (?\n * +\n * const tagOptions = [\n * { label: 'React', value: 'react' },\n * { label: 'TypeScript', value: 'typescript' },\n * { label: 'JavaScript', value: 'javascript' },\n * { label: 'Node.js', value: 'nodejs' },\n * ]\n *\n * const MyFormFields = () => {\n * const { setValue } = useFormContext()\n * const selectedTags = useWatch({ name: 'tags' })\n *\n * const handleChange = (value, actionMeta) => {\n * const tags = (value || []).map(v => v.value)\n * setValue('tags', tags, {\n * shouldDirty: true,\n * shouldValidate: true,\n * })\n * }\n *\n * return (\n * <SortableSelect\n * name=\"tags\"\n * options={tagOptions}\n * value={selectedTags}\n * onChange={handleChange}\n * />\n * )\n * }\n *\n * const MyForm = () => (\n * <Form\n * initialValues={{ tags: ['react'] }}\n * onSubmit={(values) => console.log(values)}\n * >\n * {() => <MyFormFields />}\n * </Form>\n * )\n *\n * render(<MyForm />)\n * ?)\n *\n * @example (Example)\n * ## Handling Different Actions\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['red'])\n *\n * const options = [\n * { label: 'Red', value: 'red' },\n * { label: 'Green', value: 'green' },\n * { label: 'Blue', value: 'blue' },\n * ]\n *\n * const handleChange = (value, actionMeta) => {\n * const { action, removedValue, option } = actionMeta\n *\n * switch (action) {\n * case 'select-option':\n * console.log('Added:', option)\n * break\n * case 'remove-value':\n * console.log('Removed:', removedValue)\n * break\n * case 'clear':\n * console.log('Reordered:', value?.map(v => v.value))\n * break\n * }\n *\n * setSelected((value || []).map(v => v.value))\n * }\n *\n * return (\n * <SortableSelect\n * options={options}\n * value={selected}\n * onChange={handleChange}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## Customizing Selected Options\n * _Customize the appearance of selected option pills while keeping drag functionality_\n * (?\n * +\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['js', 'ts'])\n *\n * const options = [\n * { label: 'JavaScript', value: 'js' },\n * { label: 'TypeScript', value: 'ts' },\n * { label: 'Python', value: 'py' },\n * { label: 'Rust', value: 'rust' },\n * ]\n *\n * return (\n * <SortableSelect\n * options={options}\n * value={selected}\n * onChange={(value) => setSelected((value || []).map(v => v.value))}\n * components={{\n * MultiValueLabel: (props) => (\n * <HStack spacing={1} px={2}>\n * <Icon as={Code} />\n * <Text>{props.children}</Text>\n * </HStack>\n * )\n * }}\n * chakraStyles={{\n * multiValue: (styles) => ({\n * ...styles,\n * backgroundColor: 'purple.100',\n * borderRadius: 'full',\n * }),\n * }}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## With Custom Tag Component\n * _Use customTag prop for simpler customization_\n * (?\n * +\n * const customTag = ({ label }) => (\n * <HStack spacing={1} px={2} py={1} bg=\"blue.50\" borderRadius=\"md\">\n * <Badge colorScheme=\"blue\" variant=\"solid\" fontSize=\"xs\">NEW</Badge>\n * <Text fontSize=\"sm\" fontWeight=\"medium\">{label}</Text>\n * </HStack>\n * )\n *\n * const MyComponent = () => {\n * const [selected, setSelected] = useState(['react'])\n *\n * return (\n * <SortableSelect\n * options={[\n * { label: 'React', value: 'react' },\n * { label: 'Vue', value: 'vue' },\n * { label: 'Angular', value: 'angular' },\n * ]}\n * value={selected}\n * onChange={(value) => setSelected((value || []).map(v => v.value))}\n * customTag={customTag}\n * />\n * )\n * }\n *\n * render(<MyComponent />)\n * ?)\n *\n * @example (Example)\n * ## Disabled State\n * (?\n * <SortableSelect\n * options={[\n * { label: 'Admin', value: 'admin' },\n * { label: 'Editor', value: 'editor' },\n * { label: 'Viewer', value: 'viewer' },\n * ]}\n * value={['viewer']}\n * onChange={(value) => console.log('Changed:', value)}\n * isDisabled={true}\n * placeholder=\"Select items (disabled)\"\n * />\n * ?)\n *\n * @example (Example)\n * ## With Styling\n * (?\n * <SortableSelect\n * options={[\n * { label: 'Apple', value: 'apple' },\n * { label: 'Banana', value: 'banana' },\n * { label: 'Orange', value: 'orange' },\n * { label: 'Pear', value: 'pear' },\n * ]}\n * value={['apple', 'banana']}\n * onChange={(value) => console.log('Changed:', value)}\n * colorScheme=\"blue\"\n * chakraStyles={{\n * multiValue: (styles) => ({\n * ...styles,\n * backgroundColor: 'red.100',\n * }),\n * }}\n * />\n * ?)\n */\nexport const SortableSelect = <T extends Option>({\n value,\n onChange,\n components: customComponents,\n options,\n ...rest\n}: SortableSelectProps<T>) => {\n const matchedValue = useMemo(() => {\n if (!value || !Array.isArray(value) || value.length === 0) return []\n\n const optionsArray = Array.isArray(options) ? options : []\n\n if (isOptionArray<T>(value)) {\n return value.filter((item) => item != null)\n }\n\n if (isStringArray(value)) {\n return value.reduce<T[]>((acc, val) => {\n const found = optionsArray.find((opt) => opt.value === val)\n if (found !== undefined) {\n acc.push(found)\n }\n return acc\n }, [])\n }\n\n return []\n }, [ value, options ])\n\n const [ activeItems, setActiveItems ] = useState<T[]>(matchedValue)\n const activeItemsRef = useRef<T[]>(activeItems)\n\n useEffect(() => {\n setActiveItems(matchedValue)\n activeItemsRef.current = matchedValue\n }, [ matchedValue ])\n\n useEffect(() => {\n activeItemsRef.current = activeItems\n }, [ activeItems ])\n\n const handleChange = (selectedOptions: OnChangeValue<T, true>, actionMeta: ActionMeta<T>) => {\n if (onChange) {\n onChange(selectedOptions, actionMeta)\n }\n }\n\n const handleDragOver = useCallback(\n (event: DragOverEvent) => {\n const { active, over } = event\n\n if (!active || !over || active.id === over.id) return\n\n setActiveItems((items) => {\n const oldIndex = items.findIndex((item) => item.value === active.id)\n const newIndex = items.findIndex((item) => item.value === over.id)\n\n if (oldIndex !== -1 && newIndex !== -1) {\n return arrayMove(items, oldIndex, newIndex)\n }\n return items\n })\n },\n []\n )\n\n const handleDragEnd = useCallback(\n (_event: DragEndEvent) => {\n if (!onChange) return\n\n const finalOrder = activeItemsRef.current\n if (finalOrder.length === 0) return\n\n const orderChanged = !matchedValue.every((item, index) =>\n item.value === finalOrder[index]?.value\n )\n\n if (orderChanged) {\n onChange(finalOrder as MultiValue<T>, {\n action: 'clear',\n name: rest.name,\n } as ActionMeta<T>)\n }\n },\n [ matchedValue, onChange, rest.name ]\n )\n\n const mergedComponents = {\n ...customComponents,\n MultiValue: SortableMultiValue,\n MultiValueRemove: SortableMultiValueRemove,\n }\n\n const sortableItems = activeItems.map((item) => item.value)\n\n return (\n <DndContext\n modifiers={ [ restrictToParentElement ] }\n onDragOver={ handleDragOver }\n onDragEnd={ handleDragEnd }\n collisionDetection={ closestCenter }\n >\n <SortableContext\n items={ sortableItems }\n strategy={ horizontalListSortingStrategy }\n >\n <Select\n isMulti={ true }\n options={ options }\n value={ activeItems }\n onChange={ handleChange }\n components={ mergedComponents }\n closeMenuOnSelect={ false }\n { ...rest }\n />\n </SortableContext>\n </DndContext>\n )\n}\n","import React from 'react'\nimport { Switch as ChakraSwitch } from '@chakra-ui/react'\nimport { SwitchProps } from './types'\n\n/**\n * @see SwitchField\n * @see {@link https://northlight.dev/reference/switch}\n *\n * @example (Example)\n * Mainly used for forms, however this component is controlled by\n * a value prop and an onChange callback\n *\n * (?\n * () => {\n * const [ advancedMode, setAdvancedMode ] = useState(false)\n *\n * return (\n * <Stack p=\"2\">\n * <Label size=\"sm\" htmlFor=\"advanced-mode-switch\">Advanced mode</Label>\n * <Switch name=\"vegan-checkbox\" onChange={() => setAdvancedMode((prev) => !prev)}\n * value={advancedMode} />\n * </Stack>\n * )\n * }\n * ?)\n */\nexport const Switch = ({\n value,\n onChange,\n name,\n size = 'md',\n ...rest\n}: SwitchProps) => (\n <ChakraSwitch\n size={ size }\n id={ name }\n isChecked={ value }\n onChange={ onChange }\n { ...rest }\n />\n)\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { SwitchFieldProps } from './types'\nimport { Field } from '../form'\nimport { Switch } from './switch'\nimport { Box } from '../box'\nimport { Flex } from '../flex'\nimport { Label } from '../typography'\n\n/**\n * The switch component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see switch\n * @see {@link https://northlight.dev/reference/switch-field}\n* @example (Example)\n * ## Basic\n * Tip:\n * * For `labelPlacement` you can use `\"left\" | \"right\"`\n * * For `labelSize` you can use `\"2xs\" | \"xs\" | \"md\" | \"lg\"` or leave it blank\n * (?\n * <Form initialValues={{name: ''}}>\n * <SwitchField\n * name=\"terms\"\n * label=\"I agree to the Terms & Conditions\"\n * labelPlacement=\"right\"\n * labelSize=\"md\"\n * />\n * </Form>\n * ?)\n *\n */\nexport const SwitchField = forwardRef<HTMLDivElement, SwitchFieldProps>(({\n name,\n label,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n direction = 'row',\n labelPlacement = 'right',\n labelSize = 'md',\n ...rest\n}, ref) => (\n <Box w={ label ? 'full' : 'fit-content' } display=\"inline-flex\">\n <Field\n name={ name }\n label=\"\"\n isRequired={ isRequired }\n direction={ direction }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <Flex\n display=\"inline-flex\"\n alignItems=\"center\"\n gap={ 2 }\n direction={ labelPlacement === 'left' ? 'row-reverse' : 'row' }\n >\n <Switch\n name={ name }\n onChange={ (e) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n data-testid=\"switch-field-test-id\"\n { ...rest }\n />\n <Label htmlFor={ name } sx={ { fontWeight: 'normal' } } size={ labelSize }>{ label }</Label>\n </Flex>\n ) }\n </Field>\n </Box>\n))\n","import React from 'react'\nimport { Tab as ChakraTab } from '@chakra-ui/react'\nimport { TabProps } from './types'\n\n/**\n * Tab component is used to display a tab in a Tabs component.\n * @see Tabs\n * @see {@link https://northlight.dev/reference/tab}\n *\n * @example\n * (?\n<Tabs variant=\"piped\">\n <TabList>\n <Tab elementColor=\"brand\">Social Media</Tab>\n <Tab elementColor=\"success\">Online</Tab>\n <Tab elementColor=\"warning\">TV</Tab>\n <Tab elementColor=\"ai\">Paid Search</Tab>\n </TabList>\n</Tabs>\n * ?)\n */\nexport const Tab = (props: TabProps) => {\n const { elementColor, sx, ...rest } = props\n const tabSx = elementColor\n ? { '&::before': { backgroundColor: elementColor }, ...sx }\n : sx\n\n return (\n <ChakraTab sx={ tabSx } { ...rest } />\n )\n}\n","import React from 'react'\nimport { TabPanel as ChakraTabPanel } from '@chakra-ui/react'\nimport { TabPanelProps } from './types'\n\n/**\n * Used to display content under tabs context\n * @see Tabs\n * @see {@link https://northlight.dev/reference/tab-panel}\n * @example\n * (? <TabPanel>Tab 1</TabPanel> ?)\n */\nexport const TabPanel = (props: TabPanelProps) => (\n <ChakraTabPanel padding={ 0 } { ...props } />\n)\n","import React from 'react'\nimport { Tabs as ChakraTabs } from '@chakra-ui/react'\nimport { TabsProps } from './types'\n\n/**\n * Tabs are used for secondary navigation between groups on the page of the same context.\n * @see TabList\n * @see TabPanels\n * @see {@link https://northlight.dev/reference/tabs}\n * @example\n * ## Structure\n * <br />\n * - **Tabs**: Context provider and state manager for tab components.\n * - **TabList**: Container for Tab items.\n * - **Tab**: Interactive label for displaying a TabPanel.\n * - **TabPanels**: Group wrapper for TabPanel items.\n * - **TabPanel**: Content area for a Tab.\n * <br />\n * <br />\n * You can render any element within `Tabs`, but `TabList` should only have `Tab` as children,\n * and `TabPanels` should have `TabPanel` as children. <br />\n * <br />\n * `Tabs` expects `TabList` and `TabPanels` as children. The order doesn't matter,\n * you can have `TabList` at the top, at the bottom, or both.\n * <br />\n * <br />\n *\n * ## Usage\n * <br />\n * **Tabs** have three main variatns:\n * `rounded` (default) or no variant, `soft-rounded` and `line`. <br />\n * Also there are multiple sub-variants: `ai`, `enclosed`,\n * `enclosed-colored`, `unstyled` and `piped`.\n * <br />\n * <br />\n * tip: `enclosed` and `enclosed-colored` can be combined with the `colorScheme=\"\"` prop.\n * <br />\n * <br />\n * (?\n <Tabs>\n <Stack spacing=\"2\">\n <TabList>\n <Tab><Icon as={ MediatoolLogoDuo } mr=\"2\" />One</Tab>\n <Tab><Icon as={ MediatoolLogoDuo } mr=\"2\" />Two</Tab>\n <Tab><Icon as={ MediatoolLogoDuo } mr=\"2\" />Three</Tab>\n </TabList>\n <TabPanels>\n <TabPanel>\n <P>one!</P>\n </TabPanel>\n <TabPanel>\n <P>two!</P>\n </TabPanel>\n <TabPanel>\n <P>three!</P>\n </TabPanel>\n </TabPanels>\n </Stack>\n </Tabs>\n * ?)\n *\n */\nexport const Tabs = (({\n children,\n variant = 'rounded',\n isManual = true,\n ...rest\n}: TabsProps) => (\n <ChakraTabs\n isManual={ isManual }\n variant={ variant }\n { ...rest }\n >\n { children }\n </ChakraTabs>\n))\n","import React from 'react'\nimport { Textarea as ChakraTextarea } from '@chakra-ui/react'\nimport { TextareaProps } from './types'\n\n/**\n * Text input for larger raw text\n * @see Input\n * @see {@link https://northlight.dev/reference/textarea}\n *\n * @example\n * (? <Textarea /> ?)\n */\nexport const Textarea = ({\n size = 'md',\n onChange,\n name,\n value,\n ...rest\n}: TextareaProps) => (\n <ChakraTextarea\n size={ size }\n id={ name }\n onChange={ onChange }\n value={ value }\n { ...rest }\n />\n)\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { TextareaFieldProps } from './types'\nimport { Field } from '../form'\nimport { Textarea } from './textarea'\n\nexport const TextareaField = forwardRef<HTMLDivElement, TextareaFieldProps>(({\n name,\n label,\n isRequired,\n validate,\n direction,\n onChange: onChangeCallback = identity,\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n validate={ validate }\n direction={ direction }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <Textarea\n name={ name }\n data-testid=\"textarea-field-test-id\"\n onChange={ (e) => { onChange(e); onChangeCallback(e) } }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n))\n","export const roundToPrecision = (\n value: number,\n numberOfDecimals: number\n): number => parseFloat(value.toFixed(numberOfDecimals))\n","import React, { ComponentType, useEffect } from 'react'\nimport { defaultTo, identity, isEmpty, isNil } from 'ramda'\nimport {\n InputAttributes,\n NumberFormatValues,\n NumericFormat,\n SourceInfo,\n numericFormatter,\n} from 'react-number-format'\nimport { InputGroupWrapper } from '../../internal-components'\nimport { Input } from '../input'\nimport {\n FormattedNumberInputPreset,\n FormattedNumberInputProps,\n PresetOptions,\n} from './types'\nimport { roundToPrecision } from './round-to-precision'\n\nconst presetMap: Record<FormattedNumberInputPreset, PresetOptions> = {\n eu: {\n thousandSeparator: ' ',\n decimalSeparator: ',',\n },\n us: {\n thousandSeparator: ',',\n decimalSeparator: '.',\n },\n nor: {\n thousandSeparator: '.',\n decimalSeparator: ',',\n },\n}\n\n/**\n * @see {@link https://northlight.dev/reference/formatted-number-input-field}\n @example (Example)\n * The formatted number input is built uppon react-number-format\n * It formats numbers by adjusting thousand and decimal separators\n * ex : 22345351.34234 => 222 453 51,34234\n * It comes with three presets: eu, us and nor.\n * These have the following separators:\n (?\n <FormattedNumberInput\n preset=\"us\"\n onChange={(values) => console.log(values.floatValue)}\n isPercentage={true}\n max={1E9}\n min={0}\n />\n ?)\n\n @example (Example)\n ### Nor preset\n (?\n <FormattedNumberInput\n preset=\"nor\"\n onChange={(values) => console.log(values.floatValue)}\n value={320341345102.34134}\n numberOfDecimals={5}\n />\n ?)\n\n @example (Example)\n ### Eu preset\n (?\n <FormattedNumberInput\n preset=\"eu\"\n onChange={(values) => console.log(values.floatValue)}\n value={320341345102.34134}\n numberOfDecimals={5}\n />\n ?)\n\n */\nexport const FormattedNumberInput = ({\n preset = 'eu',\n isPercentage = false,\n onChange = identity,\n value: valueProp,\n numberOfDecimals,\n max = Infinity,\n min = -Infinity,\n inputLeftElement,\n inputRightElement,\n onBlur,\n ...rest\n}: FormattedNumberInputProps) => {\n const props = presetMap[preset]\n\n const value = valueProp ?? ''\n\n const defaultNumberOfDecimals = defaultTo(2, numberOfDecimals)\n\n const getNumberFormatValues = (number: number) => ({\n floatValue: number,\n formattedValue: numericFormatter(number.toString(), props),\n value: number.toString(),\n })\n\n const validateRange = () => {\n if (isNil(value) || isEmpty(value)) return\n\n const vNum = typeof value === 'string' ? parseFloat(value) : value\n\n if (isNil(numberOfDecimals) && !isPercentage) {\n onChange(getNumberFormatValues(vNum))\n return\n }\n\n const factor = isPercentage ? 100 : 1\n if (vNum * factor > max) {\n const newValue = roundToPrecision(max / factor, defaultNumberOfDecimals)\n onChange(getNumberFormatValues(newValue))\n }\n if (vNum * factor < min) {\n const newValue = roundToPrecision(min / factor, defaultNumberOfDecimals)\n onChange(getNumberFormatValues(newValue))\n }\n }\n\n const onValueChangeHandler = (\n values: NumberFormatValues,\n sourceInfo: SourceInfo\n ) => {\n const newFloatValue =\n values.floatValue && isPercentage\n ? roundToPrecision(values.floatValue / 100, defaultNumberOfDecimals)\n : values.floatValue\n onChange(\n {\n ...values,\n floatValue: newFloatValue,\n },\n sourceInfo\n )\n }\n\n useEffect(() => {\n validateRange()\n }, [ value ])\n\n return (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <NumericFormat\n allowLeadingZeros={ true }\n customInput={ Input as ComponentType<InputAttributes> }\n onBlur={ (e) => {\n onBlur?.(e)\n validateRange()\n } }\n onValueChange={ onValueChangeHandler }\n decimalScale={ numberOfDecimals }\n value={\n isPercentage\n ? roundToPrecision(parseFloat(`${value ?? 0}`) * 100, defaultNumberOfDecimals)\n : value\n }\n suffix={ isPercentage ? '%' : '' }\n { ...props }\n { ...rest }\n />\n </InputGroupWrapper>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { identity } from 'ramda'\nimport { FormattedNumberInputFieldProps } from './types'\nimport { Field } from '../form'\nimport { FormattedNumberInput } from './formatted-number-input'\n\n/**\n * The formatted number input component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see FormattedNumberInput\n * @see {@link https://northlight.dev/reference/formatted-number-input-field}\n * @example (Example)\n * (?\n * <Form initialValues={{money: ''}}>\n * <FormattedNumberInputField\n * name=\"money\"\n * label=\"How much money is currently on your account\"\n * labelPosition=\"left\"\n * />\n * </Form>\n * ?)\n *\n */\nexport const FormattedNumberInputField =\nforwardRef<HTMLDivElement, FormattedNumberInputFieldProps>(({\n name,\n label,\n isRequired,\n validate,\n onChange: onChangeCallback = identity,\n direction = 'row',\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n direction={ direction }\n validate={ validate }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <FormattedNumberInput\n name={ name }\n onChange={ (values, sourceInfo) => {\n onChange(values.floatValue)\n onChangeCallback(values, sourceInfo)\n } }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n))\n","import React from 'react'\nimport InputMask from 'react-input-mask'\nimport { Input } from '../input'\nimport { MaskedTextInputProps } from './types'\n\n//! Overload error in @types/react-input-mask, overwriting faulty types as unknown as any\nconst CustomInput = InputMask as unknown as any\n\nexport const MaskedTextInput = ({\n mask,\n maskPlaceholder,\n alwaysShowMask,\n name,\n value,\n placeholder,\n onChange,\n onBlur,\n ...rest\n}: MaskedTextInputProps) => (\n <CustomInput\n mask={ mask }\n maskPlaceholder={ maskPlaceholder }\n alwaysShowMask={ alwaysShowMask }\n name={ name }\n value={ value }\n onChange={ onChange }\n onBlur={ onBlur }\n >\n { ({ name: nameProp }: any) => (\n <Input\n placeholder={ maskPlaceholder ?? placeholder }\n name={ nameProp }\n { ...rest }\n />\n ) }\n </CustomInput>\n)\n","import React, { forwardRef } from 'react'\nimport { identity, isNil } from 'ramda'\nimport { TextFieldProps } from './types'\nimport { Input } from '../input'\nimport { Field } from '../form'\nimport { InputGroupWrapper } from '../../internal-components/input-group-wrapper'\n\n/**\n * The Input component wrapped in <Field />\n * Also supported formmated and musked input via as prop\n * @see Input\n * @see MaskedTextInput\n * @see FormattedNumberInput\n * @see {@link https://northlight.dev/reference/text-field}\n *\n *\n */\nexport const TextField = forwardRef<HTMLDivElement, TextFieldProps>(({\n name,\n label,\n as: As = Input,\n isRequired,\n validate,\n direction = 'column',\n onChange: onChangeCallback = identity,\n inputLeftElement,\n inputRightElement,\n ...rest\n}, ref) => (\n <Field\n name={ name }\n label={ label }\n isRequired={ isRequired }\n validate={\n isNil(validate) && isRequired\n ? { validate: (value: string) => !!value.trim() }\n : validate\n }\n direction={ direction }\n ref={ ref }\n >\n { ({ onChange, value }) => (\n <InputGroupWrapper\n inputLeftElement={ inputLeftElement }\n inputRightElement={ inputRightElement }\n >\n <As\n id={ name }\n name={ name }\n onChange={ (e: React.ChangeEvent<HTMLInputElement> | string) => {\n onChange(e)\n onChangeCallback(e)\n } }\n value={ value }\n data-testid=\"text-field-test-id\"\n { ...rest }\n />\n </InputGroupWrapper>\n ) }\n </Field>\n))\n","import {\n AlertCircleSolid,\n AlertTriangleSolid,\n BellSolid,\n BrightnessSolid,\n CheckCircleSolid,\n HelpCircleSolid,\n} from '@northlight/icons'\nimport { AlertVariants } from '../../alert/types'\n\nexport const toastIconMap: Record<AlertVariants, any> = {\n success: CheckCircleSolid,\n warning: AlertTriangleSolid,\n error: AlertCircleSolid,\n danger: AlertCircleSolid,\n info: BellSolid,\n ai: BrightnessSolid,\n default: HelpCircleSolid,\n ghost: HelpCircleSolid,\n}\n","import React from 'react'\nimport { Alert as ChakraAlert } from '@chakra-ui/react'\nimport { toastIconMap } from '../types'\nimport { ToastProps } from './types'\nimport { Icon } from '../icon'\nimport { HStack, Stack } from '../stack'\nimport { CloseButton } from '../close-button'\nimport { Label, P } from '../typography'\n\n/**\n * Toast is a modified alert meant for popup alerts\n * @see useToast\n * @see Alert\n * @see {@link https://northlight.dev/reference/toast}\n * @example\n * (?\n *\n <HStack spacing={ 4 }>\n <Toast variant=\"default\" title=\"default\" />\n <Toast variant=\"success\" title=\"success\" />\n <Toast variant=\"warning\" title=\"warning\" />\n <Toast variant=\"error\" title=\"error\" />\n <Toast variant=\"info\" title=\"info\" />\n <Toast variant=\"ai\" title=\"mtGPT\" />\n </HStack>\n * ?)\n *\n */\nexport const Toast = ({\n variant = 'success',\n title = '',\n description = '',\n onClose,\n ...rest\n}: ToastProps) => {\n const icon = toastIconMap[variant]\n\n return (\n <ChakraAlert\n variant={ variant }\n data-testid=\"toast-test\"\n { ...rest }\n >\n <HStack alignItems=\"flex-start\">\n { icon && (\n <Icon\n as={ icon }\n color={ `icon.toast.${variant}` }\n boxSize={ 6 }\n />\n ) }\n <Stack spacing={ 0 } alignItems=\"flex-start\">\n { title && <Label size=\"md\">{ title }</Label> }\n { description && (\n <P\n sx={ {\n color: variant === 'ai' ? 'color.text.inverted' : 'text.default',\n } }\n >\n { description }\n </P>\n ) }\n </Stack>\n\n <CloseButton\n size=\"sm\"\n onClick={ onClose }\n position=\"absolute\"\n insetEnd={ 1 }\n top={ 1 }\n />\n </HStack>\n </ChakraAlert>\n )\n}\n","import React, { useRef } from 'react'\nimport { ToastId, useToast as useChakraToast } from '@chakra-ui/react'\nimport { Toast } from './toast'\nimport { UseToastOptions } from './types'\n\n/**\n * This hook returns a toast function that when called will popup a toast\n * @see Toast\n * @see {@link https://northlight.dev/reference/use-toast}\n * @example\n * (?\n * () => {\n * const toast = useToast()\n * const handleClick = () => {\n * toast({title: 'Success',\n * description: `${Math.random()}-string`,\n * replacePreviousToast: true })\n * }\n * return (\n * <Button onClick={handleClick} variant=\"success\">Save</Button>\n * )}\n * ?)\n */\nexport const useToast = (defaultOpts: UseToastOptions = {}) => {\n const toast = useChakraToast(defaultOpts)\n const toastIdRef = useRef<ToastId | null>(null)\n\n return (opts: UseToastOptions = {}) => {\n const toastProps: UseToastOptions = {\n render: ({ onClose }: { onClose: () => void }) => {\n const {\n variant = 'success',\n title = 'Success',\n description = '',\n } = opts\n\n return (\n <Toast\n variant={ variant }\n title={ title }\n description={ description }\n onClose={ onClose }\n />\n )\n },\n position: 'top',\n ...opts,\n }\n\n const { replacePreviousToast = false } = opts\n if (replacePreviousToast && toastIdRef && toastIdRef.current) {\n toast.update(toastIdRef.current, toastProps)\n } else {\n toastIdRef.current = toast(toastProps)\n }\n }\n}\n","import { PinVariant } from '../pin-input/types'\n\nexport const pinVariantMap: Record<PinVariant, string> = {\n green: 'success',\n running: 'success',\n yellow: 'info',\n inProgress: 'info',\n gray: 'subdued',\n notExecuted: 'subdued',\n red: 'destructive',\n rejected: 'destructive',\n}\n","import { PinSize, PinSizeTuple } from '../pin-input/types'\n\nexport const pinSizeMap: Record<PinSize, PinSizeTuple > = {\n sm: [ 4, 2 ],\n md: [ 5, 3 ],\n lg: [ 6, 4 ],\n}\n","import React from 'react'\nimport { Circle } from '../circle'\nimport { pinVariantMap } from './pin-variant-map'\nimport { pinSizeMap } from './pin-size-map'\nimport { StatusPinProps } from './types'\n\n/**\n * Status pins are meant to display the status of a specific entry.\n * @see Badge\n * @see {@link https://northlight/reference/status-pin}\n *\n * @example (Example)\n * (?\n * +\n * const sizes = ['lg', 'md', 'sm']\n * const variants = ['notExecuted', 'running', 'inProgress', 'rejected']\n *\n * const Example = () => {\n * return (\n * <Stack>\n * {variants.map((variant)=>(\n * <HStack spacing={4} alignItems=\"center\">\n * {sizes.map((size)=>(\n * <StatusPin size={size} variant={variant} />\n * ))}\n * </HStack>\n * ))}\n * </Stack>\n * )\n * }\n * render(<Example/>)\n * ?)\n *\n */\n\nexport const StatusPin = ({ size = 'md', variant, ...rest }: StatusPinProps) => {\n const pinColor = pinVariantMap[variant]\n const pinSizeTuple = pinSizeMap[size]\n const [ outerSize, innerSize ] = pinSizeTuple\n\n return (\n <Circle\n size={ outerSize }\n bg=\"transparent\"\n borderWidth=\"xs\"\n borderColor={ pinColor }\n { ...rest }\n >\n <Circle\n size={ innerSize }\n bg={ pinColor }\n />\n </Circle>\n )\n}\n","import React from 'react'\nimport {\n AlertDescription,\n AlertTitle,\n Alert as ChakraAlert,\n} from '@chakra-ui/react'\nimport { toastIconMap } from '../types'\nimport { Icon } from '../icon'\nimport { VStack } from '../stack'\nimport { AsyncErrorProps } from './types'\n\n/**\n * @see {@link https://northlight.dev/reference/async-error}\n * @example\n * (?\n * <AsyncError />\n * ?)\n *\n */\nexport const AsyncError = ({\n message = '',\n ...rest\n}: AsyncErrorProps) => (\n <ChakraAlert backgroundColor=\"background.default\" color=\"text.default\" width=\"100%\" { ...rest }>\n <VStack w=\"full\">\n <Icon as={ toastIconMap.error } color=\"icon.toast.error\" boxSize={ 6 } />\n <AlertTitle> Error </AlertTitle>\n { message && (\n <AlertDescription>{ message }</AlertDescription>\n ) }\n </VStack>\n </ChakraAlert>\n)\n","import React from 'react'\nimport { StepPanelProps } from './types'\nimport { TabPanel as ChakraStepPanel } from '../tabs'\n\n/**\n * Used to display content under specific step\n * @see Steps\n * @see StepPanels\n * @see {@link https://northlight.dev/reference/step-panel}\n * @example\n * (? <StepPanel>Step 1</StepPanel> ?)\n */\nexport const StepPanel = (props: StepPanelProps) => (\n <ChakraStepPanel padding={ 0 } { ...props } />\n)\n","import React from 'react'\nimport { Tabs as ChakraSteps } from '@chakra-ui/react'\nimport { StepsProps } from './types'\n\n/**\n * Context provider for steps tabs\n * @see StepList\n * @see StepPanels\n * @see {@link https://northlight.dev/reference/steps}\n * @example\n * (?\n <Steps>\n <StepList>\n <Step label=\"Step 1\" description=\"Name and email\" indicator={1} />\n <Step label=\"Step 2\" description=\"Pick a password\" indicator={2} />\n <Step label=\"Step 3\"\n description=\"Review\"\n indicator={<Icon as={ BrightnessSolid }\n size=\"xs\" /> }\n />\n </StepList>\n <StepPanels>\n <StepPanel>1</StepPanel>\n <StepPanel>2</StepPanel>\n <StepPanel>3</StepPanel>\n </StepPanels>\n </Steps>\n * ?)\n *\n *\n */\nexport const Steps = (props: StepsProps) => (\n <ChakraSteps isManual={ true } { ...props } />\n)\n","import React from 'react'\nimport { Box, Tab as ChakraStep, useMultiStyleConfig } from '@chakra-ui/react'\nimport { Capitalized, Lead } from '../typography'\nimport { Flex } from '../flex'\nimport { ring } from '../../utils'\nimport { StepProps } from './types'\n\n/**\n * Renders a step in a step list\n * @see StepList\n * @see Steps\n * @see {@link https://northlight.dev/reference/step}\n * @example\n * (?\n <Steps>\n <StepList>\n <Step label=\"Step 1\" description=\"Personal information\" indicator={1} />\n </StepList>\n</Steps>\n * ?)\n *\n */\nexport const Step = ({ label, description, indicator, ...rest }: StepProps) => {\n const {\n step,\n label: labelStyle,\n description: descriptionStyle,\n indicator: indicatorStyle,\n } = useMultiStyleConfig('Step')\n return (\n <ChakraStep\n sx={ step }\n { ...rest }\n >\n <Flex flexDirection=\"row\" alignItems=\"flex-start\" gap=\"4\" _groupFocusVisible={ ring }>\n { indicator && (\n <Box\n sx={ indicatorStyle }\n data-part=\"indicator\"\n justifyContent=\"center\"\n >\n { indicator }\n </Box>\n ) }\n <Flex flexDirection=\"column\">\n <Capitalized sx={ labelStyle }>{ label }</Capitalized>\n { description && <Lead sx={ descriptionStyle }>{ description }</Lead> }\n </Flex>\n </Flex>\n </ChakraStep>\n )\n}\n","import React, { Children } from 'react'\nimport { TabList as ChakraStepList, useStyleConfig } from '@chakra-ui/react'\nimport { StepListProps } from './types'\n\n/**\n * Used to render a navigational list of steps\n * @see Step\n * @see Steps\n * @see {@link https://northlight.dev/reference/step-list}\n * @example\n * (?\n * <Steps>\n <StepList>\n <Step label=\"Step 1\" description=\"Name and email\" />\n <Step label=\"Step 2\" description=\"Pick a password\" />\n <Step label=\"Step 3\" description=\"Review\" />\n </StepList>\n </Steps>\n * ?)\n *\n */\nexport const StepList = ({ children, ...rest }: StepListProps) => {\n const tabs = Children.count(children)\n const styles = useStyleConfig('StepList', { tabs })\n return (\n <ChakraStepList { ...rest } sx={ styles }>\n { children }\n </ChakraStepList>\n )\n}\n","import React, { forwardRef, useEffect } from 'react'\nimport { useClipboard, useMultiStyleConfig } from '@chakra-ui/react'\nimport { CheckDuo, CopyDuo } from '@northlight/icons'\nimport { IconButton } from '../icon-button'\nimport { Icon } from '../icon'\nimport { Tooltip } from '../tooltip'\nimport { Input, InputGroup, InputRightElement } from '../input'\nimport { ClipboardInputProps } from './types'\n\n/**\n * Meant to display non editable copiable text\n * @see {@link https://northlight.dev/reference/clipboard-input}\n *\n * @example (Example)\n * ## Your token\n * (?\n * <ClipboardInput value=\"8aa6d075-eae2-49b3-8f65-318ece801b3b\" aria-label=\"Copy token\" />\n * ?)\n *\n */\nexport const ClipboardInput = forwardRef<HTMLDivElement, ClipboardInputProps>(({\n size = 'md',\n value,\n 'aria-label': ariaLabel,\n ...rest\n}, ref) => {\n const { hasCopied, onCopy, setValue } = useClipboard(value)\n const { button, icon, tooltip } = useMultiStyleConfig('ClipboardInput', { size })\n\n useEffect(() => {\n setValue(value)\n }, [ value ])\n\n return (\n <InputGroup size={ size } data-testid=\"clipboard-input-test-id\" ref={ ref }>\n <Input\n textOverflow=\"ellipsis\"\n aria-label={ `Value to copy: ${value}` }\n isReadOnly={ true }\n value={ value }\n { ...rest }\n />\n <InputRightElement>\n <Tooltip\n label={ hasCopied ? 'Copied!' : 'Copy' }\n placement=\"left\"\n closeOnClick={ false }\n sx={ tooltip }\n >\n <IconButton\n aria-label={ ariaLabel || 'Click to copy' }\n onClick={ onCopy }\n variant={ hasCopied ? 'success' : 'default' }\n sx={ button }\n >\n <Icon\n as={ hasCopied ? CheckDuo : CopyDuo }\n sx={ icon }\n />\n </IconButton>\n </Tooltip>\n </InputRightElement>\n </InputGroup>\n )\n})\n","import React, { cloneElement, useCallback, useRef } from 'react'\nimport { Grid, useStyleConfig } from '@chakra-ui/react'\nimport { SplitPaneProps } from './types'\n\n/**\n * Used for split screen layouts\n * @see PaneItem\n * @see PaneDivider\n * @see {@link https://northlight.dev/reference/split-pane}\n *\n */\nexport const SplitPane = ({\n children,\n initialSplit = 50,\n isOpen,\n minLeftWidth = 25,\n minRightWidth = 50,\n ...rest\n}: SplitPaneProps) => {\n const dividerRef = useRef<HTMLDivElement | null>(null)\n\n const mouseDownHandler = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.target !== dividerRef.current) {\n return\n }\n let requestedFrame: number | null = null\n\n e.stopPropagation()\n e.preventDefault()\n\n const target = e.currentTarget\n\n target.setPointerCapture(e.pointerId)\n\n target.onpointermove = (moveEvent: PointerEvent) => {\n if (!(moveEvent.buttons && 1)) {\n target.onpointermove = null\n target.releasePointerCapture(moveEvent.pointerId)\n return\n }\n\n moveEvent.stopPropagation()\n moveEvent.preventDefault()\n\n if (!requestedFrame) {\n const { offsetX } = moveEvent\n\n requestedFrame = requestAnimationFrame(() => {\n target.style.setProperty(\n '--split-pos',\n `${Math.max(offsetX, 0)}px`\n )\n requestedFrame = null\n })\n }\n }\n },\n []\n )\n\n const containerStyle = useStyleConfig('SplitPane', { minLeftWidth, minRightWidth, initialSplit, isOpen })\n\n return (\n <Grid\n sx={ containerStyle }\n onPointerDown={ mouseDownHandler }\n { ...rest }\n >\n { children[0] }\n { isOpen && cloneElement(children[1], { ref: dividerRef }) }\n { isOpen && children[2] }\n </Grid>\n )\n}\n","import React from 'react'\nimport { GridItem, GridItemProps } from '@chakra-ui/react'\n\n/**\n * Wrapper around child of split pane\n * @see SplitPane\n * @see {@link https://northlight.dev/reference/PaneItem}\n *\n */\nexport const PaneItem = ({ children, ...rest } : GridItemProps) => (\n <GridItem overflow=\"hidden\" { ...rest }>\n { children }\n </GridItem>\n)\n","import React from 'react'\nimport { Box, BoxProps, forwardRef, useStyleConfig } from '@chakra-ui/react'\n\n/**\n * Simple vertical line for split screen\n * @see SplitPane\n * @see PaneItem\n * @see {@link https://northlight.dev/reference/pane-divider}\n * @example\n * (?\n * <Box h=\"xs\">\n * <PaneDivider />\n * </Box>\n * ?)\n * */\nexport const PaneDivider = forwardRef((props: BoxProps, ref: any) => {\n const style = useStyleConfig('PaneDivider')\n return (\n <Box\n ref={ ref }\n sx={ style }\n { ...props }\n />\n )\n})\n","import React from 'react'\nimport { useToken } from '@chakra-ui/system'\nimport { StepStackProps } from './types'\nimport { getChildrenWithProps } from '../../utils'\nimport { HStack, Stack } from '../stack'\nimport { Divider } from '../divider'\nimport { Label } from '../typography'\nimport { Box } from '../box'\n/**\n Util wrapper for creating ordered vertical layouts by stack\n @see {@link https://northlight.dev/reference/step-stack}\n @example\n The component takes all the props that a normal stack takes, with the addition of a\n rowHeight prop, which is needed to get the correct height for the grey\n line that goes between the steps. Any valid css height unit, px, rem, %,\n and tokens xs, sm are valid input for the <Code>rowHeight</Code> prop,\n for example, <Code>rowHeight=\"3rem\"</Code>.\n <br /><br />\n ## Simple step stack\n (?\n <StepStack maxW=\"sm\" spacing=\"4\" rowHeight=\"10\">\n { Array.from({length: 5}, (_, i) => i).map((i) => <Input key={ i } />) }\n </StepStack>\n ?)\n <br />\n ## Example with flex-start stepCircleAlignment prop\n (?\n <StepStack\n maxW=\"sm\"\n spacing=\"4\"\n rowHeight=\"10\"\n stepCircleAlignment=\"flex-start\"\n stepCircleMarginTopPx={ 40 }\n >\n { Array.from({ length: 5 }, (_, i) => i).map((i) => (\n <VStack key={ i }>\n <Center\n width={ 400 }\n height={ 24 }\n borderRadius={ 10 }\n backgroundColor=\"blue.500\"\n color=\"white\"\n >\n <VStack spacing=\"5\">\n <Text>Step { i + 1 }</Text>\n </VStack>\n </Center>\n <Center\n width={ 400 }\n height={ 36 }\n borderRadius={ 10 }\n backgroundColor=\"green.500\"\n color=\"white\"\n >\n <VStack spacing=\"5\">\n <Text>Some information</Text>\n </VStack>\n </Center>\n </VStack>\n )) }\n </StepStack>\n ?)\n*/\nexport const StepStack = ({\n children,\n spacing = '4',\n rowHeight = '10',\n stepCircleAlignment = 'center',\n stepCircleMarginTopPx = 0,\n ...rest\n}: StepStackProps) => {\n const rows = getChildrenWithProps(children, {})\n const parsedRowHeight = useToken('sizes', rowHeight)\n\n return (\n <Stack spacing={ spacing } position=\"relative\" { ...rest }>\n { rows.map(\n (row, i) => (\n <HStack key={ `row-${i as number}` } alignItems={ stepCircleAlignment }>\n <>\n <Box\n borderRadius=\"full\"\n bgColor=\"brand\"\n boxSize=\"6\"\n minW=\"6\"\n minH=\"6\"\n zIndex=\"docked\"\n marginTop={ `${stepCircleMarginTopPx}px` }\n >\n <Label\n size=\"sm\"\n sx={ { color: 'text.inverted' } }\n w=\"max-content\"\n textAlign=\"center\"\n >\n { i + 1 }\n </Label>\n </Box>\n { row }\n </>\n </HStack>\n )\n ) }\n <Divider\n orientation=\"vertical\"\n left=\"3\"\n top={ `calc(${parsedRowHeight} / 2 + ${stepCircleMarginTopPx}px)` }\n h={ `calc(100% - ${parsedRowHeight} - ${stepCircleMarginTopPx}px)` }\n position=\"absolute\"\n />\n </Stack>\n )\n}\n","import React from 'react'\nimport {\n GroupBase,\n SelectComponentsConfig,\n chakraComponents,\n} from 'chakra-react-select'\nimport { PlusSolid } from '@northlight/icons'\nimport { Icon } from '../icon'\nimport { Box } from '../box'\nimport { Flex } from '../flex'\nimport { Text } from '../text'\nimport { Option } from '../select'\n\nconst { Option: ChakraOption } = chakraComponents\n\ntype CustomComponents<T extends string> =\nSelectComponentsConfig<Option<T>, false, GroupBase<Option<T>>>\n\nexport const getCustomComponents = <T extends string = string>(): CustomComponents<T> => (\n {\n Option: ({ children, ...props }) => (\n <ChakraOption { ...props }>\n { props.data.isCreation && (\n <Flex\n mr={ 3 }\n width={ 1.5 }\n mb={ 0.5 }\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Icon as={ PlusSolid } color=\"brand\" />\n </Flex>\n ) }\n { !props.data.isCreation && <Box mr={ 3 } width={ 1.5 } /> }\n <Text\n color={ props.data.isCreation ? 'text.brand' : 'text.default' }\n fontWeight={ props.data.isCreation ? 'semibold' : 'normal' }\n >\n { children }\n </Text>\n </ChakraOption>\n ),\n }\n)\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ActionMeta,\n CreatableProps,\n CreatableSelect,\n GroupBase,\n SingleValue,\n} from 'chakra-react-select'\nimport { PlusSolid } from '@northlight/icons'\nimport { Box, Icon, theme } from '@chakra-ui/react'\nimport { any, isEmpty, prop, toLower, trim } from 'ramda'\nimport { uniqBy } from 'yafu'\nimport { customSelectStyles } from '../../theme/components/select/custom-select'\nimport type {\n CreatableSelectDropdownProps,\n CreationOption,\n CreationOptionValue,\n} from './types'\nimport { getCustomComponents } from './custom-components'\nimport { EditableText } from '../editable-text'\nimport type { Option } from '../select/types'\n\n/**\n * A dropdown component that allows users to select a value from given options\n * or create a new one if it doesn't exist.\n * @see {@link https://northlight.dev/reference/creatable-select-dropdown}\n *\n * @example (Example)\n * (?\n * () => {\n * const [artist, setArtist] = useState(null);\n * const [element, setElement] = useState({ label: 'Technique', value: 'technique' })\n * const someOptions = [\n * { label: 'Scooter', value: 'scooter' },\n * { label: 'Snoop Doggy Dogg', value: 'snoop-dogg' },\n * ];\n *\n * const someOtherOptions = [\n * { label: 'Vision', value: 'vision' },\n * { label: 'Technique', value: 'technique' },\n * { label: 'Expression', value: 'expression' }\n * ];\n *\n * return (\n * <VStack gap={10} alignItems={\"flex-start\"}>\n * <Box align=\"left\">\n * <H1>Basic example</H1>\n * <H3>Select the best artist</H3>\n * <CreatableSelectDropdown\n * standardOptions={someOptions}\n * onOptionChange={setArtist}\n * width=\"300px\"\n * value={artist ? artist.value : undefined}\n * />\n * {artist && artist.value !== 'Add option...' && (\n * <H3 py={8}>The best artist is: {artist.label}</H3>\n * )}\n * </Box>\n * <Box align=\"left\">\n * <H1>Pre-selected option</H1>\n * <H3>What is the quintessential element of an exceptional artisan?</H3>\n * <CreatableSelectDropdown\n * standardOptions={someOtherOptions}\n * onOptionChange={setElement}\n * width=\"300px\"\n * value={element ? element.value : undefined}\n * />\n * {element && element.value !== 'Add option...' && (\n * <H3 py={8}>\n * {element.value === 'vision' && (\n * 'The artist\\'s vision shapes their creative world.'\n * )}\n * {element.value === 'technique' && (\n * 'Technique is the legacy\\'s bedrock.'\n * )}\n * {element.value === 'expression' && (\n * 'Expression communicates the artist\\'s inner voice.'\n * )}\n * {element.value !== 'vision' &&\n * element.value !== 'technique' &&\n * element.value !== 'expression' && (\n * 'Absent the selection of legitimate alternatives.'\n * )}\n * </H3>\n * )}\n * </Box>\n * </VStack>\n * );\n * }\n * ?)\n */\n\nconst CREATION_OPTION_VALUE: CreationOptionValue = 'add_field'\n\nexport const CreatableSelectDropdown = <T extends string = string>({\n standardOptions,\n initialPlaceholder = 'Select or create...',\n addOptionPlaceholder = 'Select or create...',\n creationOption = {\n label: 'Add field',\n value: CREATION_OPTION_VALUE,\n isCreation: true,\n },\n onOptionChange,\n variant = 'outline',\n defaultValue,\n value,\n menuPlacement = 'bottom',\n ...restProps\n}: CreatableSelectDropdownProps<T>) => {\n const [ selectedOption, setSelectedOption ] =\n useState<Option<T | CreationOptionValue > | null>(() => {\n const targetValue = value ?? defaultValue ?? null\n return targetValue\n ? standardOptions.find((option) => option.value === targetValue) ?? null\n : null\n })\n\n const [ newOptionPlaceholder, setNewOptionPlaceholder ] =\n useState(initialPlaceholder)\n const [ createdOptions, setCreatedOptions ] = useState<Option<T>[]>([])\n const [ createNewOption, setCreateNewOption ] = useState<boolean>(false)\n const [ addFieldInputValue, setAddFieldInputValue ] = useState<string>('')\n\n function isCreationOption (option: any): option is CreationOption {\n return option && typeof option.isCreation === 'boolean'\n }\n\n const ref = useRef<HTMLDivElement>(null)\n\n const checkIfNewOptionTextExistsInOptions = (\n string: string,\n options: Option[]\n ) => any((option) => toLower(option.value) === string, options)\n\n const handleCreateOption = (newOptionTextString: T) => {\n setCreateNewOption(true)\n\n if (isEmpty(trim(newOptionTextString))) {\n return\n }\n\n const newOptionTextLower = toLower(newOptionTextString)\n\n const newOptionExistsInStandardOptions =\n checkIfNewOptionTextExistsInOptions(newOptionTextLower, standardOptions)\n\n const newOptionExistsInCreatedOptions = checkIfNewOptionTextExistsInOptions(\n newOptionTextLower,\n createdOptions\n )\n\n if (!newOptionExistsInCreatedOptions && !newOptionExistsInStandardOptions) {\n const newOption = {\n label: newOptionTextString,\n value: newOptionTextString,\n }\n setCreatedOptions((currentCreatedOptions) => [\n ...currentCreatedOptions,\n newOption,\n ])\n setSelectedOption(newOption)\n onOptionChange(newOption)\n }\n setNewOptionPlaceholder(initialPlaceholder)\n }\n\n const handleChange = (\n newValue: SingleValue<Option<T | CreationOptionValue>>,\n _actionMeta: ActionMeta<Option<T | CreationOptionValue>>\n ) => {\n const option = newValue\n\n if (newValue?.isCreation) {\n setCreateNewOption(true)\n }\n\n if (option == null) {\n return\n }\n\n if (isCreationOption(option)) {\n setNewOptionPlaceholder(addOptionPlaceholder)\n } else {\n setNewOptionPlaceholder(initialPlaceholder)\n }\n if (option.value !== CREATION_OPTION_VALUE) {\n setSelectedOption(option)\n onOptionChange(option)\n }\n }\n\n const combinedOptions = useMemo(\n (): Option<T>[] => uniqBy(prop('value'), [ ...standardOptions, ...createdOptions ]),\n [ standardOptions, createdOptions ]\n )\n\n const customOptions: Option<T | CreationOptionValue>[] = [\n {\n ...creationOption,\n icon: <Icon as={ PlusSolid } color=\"brand\" />,\n },\n ...combinedOptions,\n ]\n\n useEffect(() => {\n const newSelectedOption =\n combinedOptions.find((option) => option.value === value) ?? null\n if (selectedOption?.value !== newSelectedOption?.value) {\n setSelectedOption(newSelectedOption)\n }\n }, [ value, combinedOptions ])\n\n return (\n <Box\n ref={ ref }\n w=\"full\"\n borderRadius=\"none\"\n >\n { createNewOption && (\n <EditableText\n value={ addFieldInputValue }\n startWithEditView={ true }\n onChange={ (v) => {\n setAddFieldInputValue(v)\n } }\n submitOnBlur={ false }\n onCancel={ () => {\n setAddFieldInputValue('')\n setCreateNewOption(false)\n } }\n onSubmit={ (v) => {\n handleCreateOption(v as T)\n setCreateNewOption(false)\n } }\n variant=\"brand\"\n sx={ {\n minWidth: '100%',\n width: '100%',\n } }\n />\n ) }\n { !createNewOption && (\n <CreatableSelect<Option<T | CreationOptionValue>, false,\n GroupBase<Option<T | CreationOptionValue>>>\n menuPlacement={ menuPlacement }\n chakraStyles={ {\n ...customSelectStyles,\n container: (provided) => ({\n ...provided,\n width: '100%',\n }),\n option: (provided, { isSelected }) => ({\n ...provided,\n ...(isSelected && {\n color: 'black',\n }),\n }),\n } }\n components={ getCustomComponents<T | CreationOptionValue>() }\n options={ customOptions }\n menuPortalTarget={ document.body }\n styles={ { menuPortal: (base) => ({ ...base, zIndex: theme.zIndices.popover }) } }\n value={ selectedOption }\n onChange={ handleChange }\n isMulti={ false }\n onCreateOption={ (v) => {\n setCreateNewOption(true)\n setAddFieldInputValue(v)\n } }\n placeholder={ newOptionPlaceholder }\n useBasicStyles={ true }\n variant={ variant }\n { ...(restProps as CreatableProps<\n Option<T | CreationOptionValue>, false,\n GroupBase<Option<T | CreationOptionValue>>>\n ) }\n />\n ) }\n </Box>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { Button, InputRightElement, useDisclosure } from '@chakra-ui/react'\nimport { is } from 'ramda'\nimport { ComboPickerOption, ComboPickerProps, ComboPickerValue } from './types'\nimport { Select, SingleValue } from '../select'\nimport { Box } from '../box'\nimport { FormattedNumberInput } from '../text-field'\n\n/**\n * @see ComboPickerField\n * @see {@link https://northlight.dev/reference/combo-picker}\n */\nexport const ComboPicker = ({\n onChange,\n options,\n size,\n value: valueProp,\n placeholder,\n precision,\n formatPreset,\n isDisabled,\n isReadOnly,\n defaultToZeroIfEmpty = true,\n max = Infinity,\n min = -Infinity,\n ...rest\n}: ComboPickerProps) => {\n const { isOpen, onToggle, onClose } = useDisclosure()\n const [ inputValue, setInputValue ] = useState(valueProp?.input)\n const [ selectOption, setSelectOption ] = useState(valueProp?.option)\n const [ enableSelectInput, setEnableSelectInput ] = useState(false)\n\n const buttonRef = useRef<any>()\n const selectRef = useRef<any>()\n\n const getNewValue = (option?: ComboPickerOption, input?: number): ComboPickerValue => {\n const newValueOption = option ?? options[0]\n\n return (is(Number, input))\n ? { input: Number(input), option: newValueOption }\n : { option: newValueOption }\n }\n\n const handleInputChange = (newInputvalue?: number) => {\n const newValue = getNewValue(valueProp?.option, newInputvalue)\n\n onChange?.(newValue)\n }\n\n const handleSelectClose = () => {\n if (buttonRef.current) {\n buttonRef.current.focus()\n setEnableSelectInput(false)\n }\n\n onClose()\n }\n\n const handleSelectChange = (selectedOption: SingleValue<ComboPickerOption>) => {\n if (selectedOption) {\n onChange?.(getNewValue(selectedOption, valueProp?.input))\n\n if (isOpen) {\n handleSelectClose()\n }\n }\n }\n\n const handleSelectToggle = () => {\n if (!isOpen) {\n setEnableSelectInput(true)\n }\n\n onToggle()\n }\n\n useEffect(() => {\n if (enableSelectInput) {\n selectRef.current.focus()\n }\n }, [ enableSelectInput ])\n\n useEffect(() => {\n const option = valueProp?.option ?? options[0]\n const input = defaultToZeroIfEmpty ? valueProp?.input ?? 0 : valueProp?.input\n\n setSelectOption(option)\n setInputValue(input)\n\n onChange?.(getNewValue(option, input))\n }, [ valueProp?.input, valueProp?.option, defaultToZeroIfEmpty, options ])\n\n const buttonWidth = (buttonRef.current?.offsetWidth ?? 0)\n\n return (\n <>\n <FormattedNumberInput\n width=\"100%\"\n onChange={ (values) => handleInputChange(values.floatValue) }\n value={ inputValue }\n placeholder={ placeholder }\n size={ size }\n numberOfDecimals={ precision }\n preset={ formatPreset }\n disabled={ isDisabled }\n readOnly={ isReadOnly }\n min={ min }\n max={ max }\n { ...rest }\n pr={ `${buttonWidth >= 0 ? buttonWidth + 10 : 0}px` }\n inputRightElement={ (\n <InputRightElement\n width=\"auto\"\n display=\"flex\"\n justifyContent=\"flex-end\"\n py={ 2 }\n mr={ 2 }\n >\n <Button\n ref={ buttonRef }\n isDisabled={ isDisabled }\n onClick={ handleSelectToggle }\n flexShrink=\"0\"\n height=\"100%\"\n data-testid=\"combo-picker-button\"\n >\n { selectOption?.label ?? '' }\n </Button>\n </InputRightElement>\n ) }\n />\n {\n isOpen && (\n <Box position=\"absolute\" width=\"100%\" top={ 0 }>\n <Select\n ref={ selectRef }\n chakraStyles={ { container: (provided) => ({\n ...provided,\n position: 'absolute',\n visibility: 'hidden',\n right: '0',\n }),\n input: (provided) => ({\n ...provided,\n pointerEvents: 'none',\n color: 'transparent',\n display: enableSelectInput ? 'block' : 'none',\n }),\n menu: (provided) => ({\n ...provided,\n width: 'auto',\n right: '0',\n }) } }\n options={ options }\n value={ selectOption ? selectOption.value : undefined }\n onChange={ handleSelectChange }\n onBlur={ handleSelectClose }\n menuIsOpen={ isOpen }\n />\n </Box>\n )\n }\n </>\n )\n}\n","import React from 'react'\nimport { ComboPickerFieldProps } from './types'\nimport { ComboPicker } from './combo-picker'\nimport { Field } from '../form'\n\n/**\n * The <ComboPicker /> component wrapped in a <Field />\n * meant to be used only inside <Form />\n * @see ComboPicker\n * @see {@link https://northlight.dev/reference/combo-picker}\n *\n * @example (Example)\n * ##Default number format preset(EU) with default decimals(2):\n * (?\n * <Form initialValues={{\"budget\": {input: 123456789.123, option:{label: 'EUR', value: 'eur'}}}}>\n * <ComboPickerField\n * label=\"Budget\"\n * name=\"budget\"\n * placeholder=\"Amount\"\n * options={ [\n * { label: 'USD', value: 'usd' },\n * { label: 'EUR', value: 'eur' },\n * { label: 'SEK', value: 'sek' },\n * ] }\n * />\n * </Form>\n *\n * ?)\n * <br />\n * ##US number format preset with three decimals as Disabled:\n * (?\n * <Form initialValues={{\"budget\": {input: 123456789.1234, option:{label: 'USD', value: 'usd'}}}}>\n * <ComboPickerField\n * label=\"Budget\"\n * name=\"budget\"\n * precision={ 3 }\n * isDisabled={true}\n * formatPreset='us'\n * options={ [\n * { label: 'USD', value: 'usd' },\n * { label: 'EUR', value: 'eur' },\n * { label: 'SEK', value: 'sek' },\n * ] }\n * />\n * </Form>\n *\n * ?)\n * <br />\n * ##NOR number format preset with four decimals as ReadOnly:\n * (?\n * <Form initialValues={{\"budget\": {input: 123456789.1234, option:{label: 'SEK', value: 'sek'}}}}>\n * <ComboPickerField\n * label=\"Budget\"\n * name=\"budget\"\n * precision={ 4 }\n * isReadOnly={true}\n * formatPreset='nor'\n * options={ [\n * { label: 'USD', value: 'usd' },\n * { label: 'EUR', value: 'eur' },\n * { label: 'SEK', value: 'sek' },\n * ] }\n * />\n * </Form>\n *\n * ?)\n * <br />\n */\nexport const ComboPickerField = ({\n name,\n isRequired,\n direction = 'column',\n label,\n validate,\n onChange: onChangeCallback,\n ...rest\n}: ComboPickerFieldProps) => (\n <Field\n name={ name }\n label={ label }\n direction={ direction }\n isRequired={ isRequired }\n validate={ validate }\n >\n { ({ value, onChange }) => (\n <ComboPicker\n data-testid=\"combo-picker-test-id\"\n aria-label={ label }\n onChange={ (comboPickerValue) => {\n onChange(comboPickerValue)\n onChangeCallback?.(comboPickerValue)\n } }\n value={ value }\n { ...rest }\n />\n ) }\n </Field>\n\n)\n"],"names":["p","i","A","m","n","c","o","d","Accordion","props","React","ChakraAccordion","__spreadValues","u","r","t","AccordionButton","ChakraAccordionButton","P","e","a","AccordionPanel","ChakraAccordionPanel","AccordionItem","ChakraAccordionItem","useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","useLoadingMessage","prefix","dots","setDots","useInterval","smoothScrollToBottom","div","currentStep","targetScrollTop","originalScrollTop","scrollInterval","scrollProgress","easing","useScrollToBottom","scrollView","messages","useArrowFocus","columns","next","previous","focusFirst","focusLast","useFocusManager","defaultOpts","focusPrevious","repeat","wrap","focusNext","useSelectCallbacks","onChange","onAdd","onRemove","isMulti","items","useRef","val","event","_a","isNil","last","removedItems","map","prop","difference","isBetween","point","min","max","isEventInsideRect","ref","clientX","clientY","top","right","left","bottom","isHtmlElementRef","useOutsideRectClick","callback","state","handleMouseClick","onPointerDown","onMouseUp","onTouchEnd","useScreenSize","screenSizes","useMediaQuery","useDidUpdateEffect","effect","dependencies","didMountRef","luminosity","hexcolor","color","h","g","b","safeUseToken","tokenOrValue","useToken","getContrastColor","textDefault","textInverted","normalized","bgResolved","lInverted","lDefault","threshold","brightColor","darkColor","lBg","ring","highlight","getShades","startShade","endShade","start","end","palette","colors","shade","getInitials","name","firstName","lastName","getFieldError","errors","nameWithoutRightBracket","replace","fieldErrorPath","split","path","s","passPropsToChild","child","styles","isValidElement","cloneElement","getChildrenWithProps","children","predicate","T","Children","addAlpha","alpha","colorInHex","limitAlpha","opacity","createDebounceFunctionInstance","timeout","fn","args","CustomTheme","createContext","useCurrentTheme","useContext","clamp","minValue","maxValue","availableColorSchemes","keys","omit","djb2Hash","str","hash","char","getConsistentRandomColorFromString","index","useResizeWidth","stationaryEdge","minWidthPx","maxWidthPx","defaultWidthPx","adjustableWidth","setAdjustableWidth","startX","onMouseMove","newWidth","customSelectStyles","provided","__spreadProps","background","l","f","tagsInputStyles","isFocused","borderColor","scrollbarStyles","Breadcrumb","Button","sizing","spacing","borderRadius","pulseRing","keyframes","Blinker","isBlinking","Checkbox","Input","borderWidth","PinInput","Select","Radio","Tabs","coreFontWeight","Textarea","Link","colorScheme","Switch","themeMap","processColorSchemeBasedOnTheme","currentTheme","Tag","bgColor","processedColorScheme","tagBgColorRaw","tagBgColor","tagColor","Alert","coreSpacing","NumberInput","isReadOnly","minWidth","minW","NotificationIconButton","Calendar","DragAndDrop","sx","merge","DatePicker","FlipButton","numberOfButtons","Spinner","possibleBgColors","getAvatarBgColor","image","randomColor","Avatar","avatarBgColor","CloseButton","Modal","theme","h4","$arrowBg","cssVar","$arrowBorder","Tooltip","Icon","boxSize","ClipboardInput","ColorPicker","selectedColor","Step","fontWeights","StepList","tabs","H1","h1","H2","h2","H3","h3","H4","H5","h5","H6","h6","Blockquote","blockquote","Tiny","tiny","Capitalized","CAPITALIZED","Lead","lead","Small","small","body14","body16","Label","tinyLabel","xsLabel","smLabel","mdLabel","lgLabel","NumVal","tinyMono","xsMono","smMono","mdMono","lgMono","SplitPane","minLeftWidth","minRightWidth","initialSplit","isOpen","PaneDivider","Carousel","EditableText","isEditing","isEmpty","Toolbox","shakeAnimation","thickRing","getBgColor","getInvalidColorStyles","isInvalid","isImage","getAiColorStyles","textColor","bg","finalBg","sizes","hasLoaded","mode","WebappSkin","WebappSystemTokensSet","WebappComponentsTokensSet","typography","TottSkin","TottSystemTokensSet","TottComponentsTokensSet","CamphouseLightSkin","CamphouseLightSystemTokensSet","CamphouseLightComponentsTokensSet","overrides","components","coreZIndex","coreSizing","coreBoxShadow","coreFontSize","coreLineHeight","coreBorderRadius","extendTheme","tottTheme","camphouseLightTheme","v","z","H","C","M","S","TagsInput","_b","options","identity","isLoading","loadingList","testId","onError","rest","__objRest","menuIsOpen","setMenuIsOpen","inputValue","setInputValue","selectedOptions","setSelectedOptions","setIsFocused","CustomSelect","CreatableSelect","handleChange","values","actionMeta","isValidNewOption","input","availableOptions","any","option","addNewOption","newOption","updatedOptions","clearInput","handleInputChange","newInput","handleKeyDown","trimmedInputValue","handleFocus","Box","base","textInputValue","_","OrganizationLogo","variant","orgName","container","text","useMultiStyleConfig","chakra","ChakraAlert","AspectRatio","ChakraAspectRatio","k","forwardRef","As","size","CustomIcon","ChakraIcon","useStyleConfig","AvatarBadge","notificationCount","badge","q","userImage","icon","UserSquareDuo","BusinessContactDuo","Heading","x","ChakraText","L","FormLabel","VisuallyHidden","positiveOrZero","ifElse","gt","always","EMPTY_RECT","EMPTY_WINDOW","OverflowGroup","initMax","childrenProps","rect","setMax","windowState","setWindowState","isLocked","nbrChildren","updateMax","inc","dec","rectDependency","defaultTo","handleResize","nbrRemainingChildren","shownChildren","take","useOverflowGroup","setRect","node","AvatarGroup","nbrRemainingAvatars","setNbrRemainingAvatars","childrenWithMargin","_child","idx","HStack","Badge","withIcon","iconPosition","iconAs","IconComponent","NorthlightIcons","MediatoolLogoSolid","ChakraBadge","Flex","ChakraSpinner","SpinnerSizeMap","ChakraButton","ChakraCheckbox","shouldTrim","is","trimFormValues","obj","newObj","forEach","property","format","trim","Form","initialValues","onSubmit","validate","formSettings","methods","enableReinitialize","innerFormStyle","joiSchema","customResolver","_context","_options","newMethods","useForm","joiResolver","useImperativeHandle","initalValuesImage","equals","formatValues","handleSubmit","FormProvider","label","BaseField","direction","isRequired","noLabelConnection","passedControl","useFormContext","control","fieldError","FormControl","Stack","Controller","field","FormErrorMessage","Field","useSetValueRefreshed","setValue","watch","CheckboxField","onChangeCallback","labelPlacement","labelSize","CheckboxGroupField","CheckboxGroup","IconButton","ariaLabel","IconWithSize","ChakraIconButton","paletteColors","defaultColors","ColorButton","onClick","selected","defaultArrows","onKeyDown","colorButton","CheckDuo","Popover","ChakraPopover","ColorsExpandButton","expanded","ChevronUpDuo","ChevronDownDuo","RenderInPortal","shouldRenderInPortal","Portal","clearable","expandedColors","popoverProps","onToggle","onClose","useDisclosure","setExpanded","useBoolean","setSelectedColor","visibleColors","setVisibleColors","initialFocusRef","trigger","heading","parsedValue","baseColors","prev","expandColors","getNumberOfColumns","shouldBeFocused","colorVal","handleSelect","clearSelection","PopoverTrigger","ColorsDuo","PopoverContent","PopoverHeader","PopoverBody","FocusScope","SimpleGrid","ColorPickerField","G","FlipButtonContext","useFlipButtonState","useCheckboxGroupState","useRadioGroupState","useFlipButtonGroup","propsWithLabel","useCheckboxGroup","useRadioGroup","useFlipButton","flipButtonGroupProps","I","V","y","B","wrapperRef","isDisabled","iconPlacement","propsWithoutChildren","inputProps","useCheckboxGroupItem","useRadio","button","buttonIcon","focusProps","useFocusRing","focusStyles","focusRing","isSelected","flipButtonProps","mergeProps","mergeAll","CheckSolid","SlideFade","Text","O","W","FlipButtonGroup","childrenWithProps","restWithoutOnChange","FlipButtonGroupField","hoverAndActiveStyles","ResizeHandle","Trigger","handleClick","buttonProps","useButton","CalendarDuo","DateSegment","segment","segmentProps","useDateSegment","isDivider","dateSegment","mapFormat","formatQuery","query","toLower","delimeterIncluded","D","F","DateField","useDateFieldState","createCalendar","dateField","fieldProps","useDateField","segments","dateFormat","getMatchingSegment","find","sortedSegments","id","StyledField","styledField","Table","ChakraTable","CalendarCell","date","currentMonth","cellProps","formattedDate","useCalendarCell","isToday","today","isOutsideMonth","isSameMonth","DayLabels","memo","weekDays","dayLabel","weekDaysWithIds","day","_id","mondayFirstWeekDays","sundayFirstWeekDays","getWeekdays","firstDayOfWeek","CalendarGrid","locale","startDate","gridProps","headerProps","useCalendarGrid","weeksInMonth","getWeeksInMonth","Thead","Tr","Tbody","times","weekIndex","MonthButton","months","MonthSelect","dateSelect","selectedMonth","diff","month","YearSelect","years","year","useYearsCalendar","formatter","useDateFormatter","useYearsRangeCalendar","YearSelectCalendar","YearSelectRangeCalendar","getThursdayDate","thursdayDate","hasWeek53","firstDayOfYear","getWeekNumberAtStartOfMonth","firstDayOfMonth","thursdayOfFirstWeek","firstThursdayOfYear","daysDifference","weekNumber","isYearTransition","getDisplayWeek","baseWeek","nextWeek","RangeCell","range","baseIsSelected","isHighlighted","N","StandaloneCalendarGrid","useLocale","calendarProps","prevButtonProps","nextButtonProps","useCalendar","weekNumberStart","useMemo","ChevronLeftSolid","ChevronRightSolid","useCalendarState","GregorianCalendar","DatePickerLocaleWrapper","I18nProvider","isClearable","resetDate","group","useDatePickerState","groupProps","dialogProps","useDatePicker","parseDate","togglePopup","PopoverAnchor","InputGroup","InputRightElement","XCloseSolid","Clickable","href","linkProps","clickable","useClickable","ReactRouterLink","DateButton","isActive","validRange","getQuickSelectOptions","fiscalStartMonth","fiscalStartDay","thisDay","startOfMonthWithDays","days","endOfMonthWithDays","thisWeek","startOfWeek","endOfWeek","lastWeek","thisMonth","startOfMonth","endOfMonth","lastMonth","thisYear","startOfYear","endOfYear","lastYear","nextMonth","nextThreeMonths","nextSixMonths","nextYear","offsetFiscalYear","thisFiscalYear","lastFiscalYear","yearToDate","S1","S2","F1","F2","F3","F4","fiscalSemesters","fiscalQuarters","seperator","QuickSelect","height","quickDates","updateDate","newDate","getIsActive","shouldShow","dates","quickDate","Spacer","semester","quarter","RangeCalendar","setRange","handleClose","onSave","buttonLabel","clearButtonLabel","rangeCalendarContainer","calendarOneState","newVal","calendarTwoState","dateRange","focusedStartMonthProps","handleSave","handleReset","isValidDateRange","has","tooltipIconMap","CheckCircleSolid","AlertTriangleSolid","AlertCircleSolid","AlertOctagonSolid","InfoSolid","BrightnessSolid","HelpCircleSolid","hasArrow","title","description","hasIcon","iconVariant","TooltipContent","VStack","ChakraTooltip","se","ue","me","pe","ge","parseValue","PortalWrapper","renderInPortal","isDatesEqual","date1","date2","DateRangePicker","savedDateRange","defaultDateRange","CustomResetButton","onCancelChanges","dataTestId","defaultOpen","onOpenChange","parsedProps","useDateRangePickerState","startFieldProps","endFieldProps","useDateRangePicker","ResetButton","cancelOrResetDateChange","handleModalClose","isCurrentDateSaved","isDateResettable","canShowSaveAndCancelButtons","shouldShowResetButton","shouldShowSaveAndCancelButtons","InputGroupWrapper","inputLeftElement","inputRightElement","not","all","DatePickerField","setError","DateRangePickerField","TimeoutProgressCircle","progress","ringColor","CIRCUMFERENCE","strokeDashoffset","Circle","IntentButton","TrashDuo","onTimeout","tooltipText","setProgress","isHovering","setIsHovering","timerRef","clearTimer","Center","startTime","updatedProgress","defaultFadeDelay","defaultOffset","unFocusStyles","getChildrenWithFocus","disableFocus","show","getDuration","enterDuration","exitDuration","duration","inDuration","outDuration","getOffsets","offset","offsetX","offsetY","delta","useDelay","enterDelay","exitDelay","showWithDelay","setShowWithDelay","useHiddenDisplay","anchor","onTransitionComplete","hidden","setHidden","Fade","hideDisplay","transition","isHidden","ChakraFade","ScaleFade","ChakraScaleFade","Slide","ChakraSlide","deltaX","deltaY","ChakraSlideFade","Collapse","ChakraCollapse","w","isResizable","shouldPush","autoFocus","resizeLimit","zIndex","slideProps","newChildren","getPixelSize","sizeToken","widthInRem","resizeProps","ToolboxHeader","header","ToolboxContent","body","ToolboxFooter","footer","ChakraRadio","RadioGroup","ChakraRadioGroup","RadioGroupField","carouselItemWidth","carouselItemSpacing","variants","CarouselItem","itemWidth","itemHeight","motion","CarouselArrow","arrow","showArrows","showRadio","controlledIndex","carouselStyles","dragging","setDragging","containerWidth","setContainerWidth","activeIndex","setActiveIndex","useMotionValue","radio","childrenAsArray","numberOfChildren","carouselTotalWidth","totalWidth","containerRef","getNewX","updateActiveIndex","animate","handleRightArrowClick","handleLeftArrowClick","searchBarStyles","getComponents","chakraComponents","Q","SearchBar","defaultOptions","customOption","customTag","debouncedWaitTime","getCustomOptions","clearInputOnSelect","closeMenuOnSelect","onSearchInputChange","SearchDuo","filtered","setFiltered","filterInput","setFilterInput","debounceFunction","customComponents","simpleFilter","filter","test","getOptions","newOptions","loadOptions","resetFiltered","action","AsyncSelect","BaseSearchBarField","SearchBarField","DndContext","ChakraTag","OverflowIndicator","nbrRemainingTags","TagGroup","DefaultOverflowIndicator","setNbrRemainingTags","DragItem","isDragging","itemLabel","TagLabel","TagRightIcon","DotsMatrixSolid","Draggable","disableDrag","useDraggable","attributes","listeners","setNodeRef","transform","childrenWithDragCursor","dragEventListeners","CSS","Droppable","useDroppable","Sortable","SortableContext","SortableItem","dblClickThreshold","useSortable","timeStampSnapchot","inEditMode","handlePointerDown","style","DragHandle","DragDuo","Z","DropZone","dropZone","MultiSort","collisionDetection","sensors","activeItem","setActiveItem","moveBetweenContainers","activeContainerName","overContainerName","overIndex","item","remove","insert","customSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","findContainer","key","getContainers","active","over","overId","indexOf","arrayMove","rectIntersection","SortableList","createKey","strategy","onMovedItem","displayOverlay","modifiers","identifierItems","prevIds","oldIndex","newIndex","newItems","rectSortingStrategy","DragOverlay","SortableContainer","FastList","itemCount","itemSize","width","overscanCount","initialScrollOffset","AutoSizer","autoWidth","autoHeight","VariableSizeList","_index","FastGrid","rows","columnSize","rowSize","overscanRowCount","overscanColumnCount","VariableSizeGrid","rowIndex","columnIndex","E","mapEditableVariantsToButtonSubmitVariants","mapEditableVariantsToButtonCancelVariants","EditableControls","getSubmitButtonProps","getCancelButtonProps","useEditableControls","onEdit","useEditableState","controls","EditDuo","leftItem","preview","Editable","newValue","InputLeftElement","EditablePreview","ChakraEditableInput","ModalBase","isCentered","ChakraModal","ModalOverlay","ModalContent","ModalCloseButton","stayMountedOnClose","ModalBody","ChakraModalBody","FileEditorModal","fileName","setFileName","handleCrop","canEditFileName","canCropImage","zoomLevel","setZoomLevel","position","setPosition","ModalHeader","AvatarEditor","pos","Slider","SliderTrack","SliderFilledTrack","SliderThumb","ZoomInDuo","ModalFooter","ConfirmDeleteModal","confirmDelete","handleDelete","updateTimeThreshold","animationSlideTime","ProgressBar","animationSlideTimeMs","ChakraProgress","formattedTime","seconds","baseString","hours","minutes","newSeconds","LoadingBar","loaded","onLoadEnd","timeRef","timeLeft","setTimeLeft","deltaTime","newEstimate","fiveHundredMB","imageLazyThreshold","defaultEditOptions","j","U","getResizingFactor","imgWidth","imgHeight","maxWidth","maxHeight","convertBlobToFile","blob","type","compressImage","file","quality","canvas","context","imageBuffer","resolve","resizingFactor","scaledWidth","scaledHeight","newImage","readableFileSize","getImageAsFile","res","getFormatsAsArray","acceptFormat","getAcceptedExtensions","getAcceptedFormats","getFileExtension","getFileFormat","validFileFormat","isValidFile","maxFileSize","isValid","getNewUploadingFiles","curr","files","buffer","prevIDs","currentIDs","removedItemsIDs","filesIDs","intersection","updatedData","generateId","isFile","isFileImage","onlyAcceptsImages","formats","extensions","premiseOne","premiseTwo","createFileObject","createPreviewFileObject","createFileObjectFromSrc","isOverflowing","element","toBase64","reject","reader","error","correctFileExtension","getFileFormattedName","handleDownload","FileIconButton","FilePicker","compression","uploadedInitial","showProgress","loadWithSpinner","editFileOptions","fileInputRef","imageEditorRef","setFile","setIsInvalid","setName","editModal","deleteModal","editable","setEditable","setHasLoaded","setIsLoading","setIsImage","uploaded","setUploaded","onlyImageAccepted","isUploading","filePicker","handleOnClick","fileType","newFile","clearImage","handleImageUpload","isFileTypeImage","compressedImage","handleDrop","Image","Image03Solid","UploadCloudSolid","FileBlankDuo","EditBoxDuo","DownloadDuo","TrashFullDuo","FilePickerField","formattedFile","MultiFileUploader","addFilesToQueue","updatePreviewFiles","inputRef","multiFilePicker","setActive","errorMessage","setErrorMessage","toggleHover","updateMultipleFiles","newFiles","filesArr","validFiles","fileCheck","compressedFiles","FileItem","addFile","deleteFile","isLazy","canEdit","canEditImage","canEditName","fileItem","editModalDisclosure","deleteModalDisclosure","setShow","loadingImage","setLoadingImage","Image03Duo","ChakraImage","MultiFileList","uploadingFiles","enableSmartLoad","uploadingFilesReference","setUploadingFilesReference","overflowing","setOverflowing","formattedFiles","listRef","MultiFilePicker","enablePreLoad","bufferFiles","setBufferFiles","previewFiles","setPreviewFiles","getIndexById","findIndex","addedFile","indexOfChanged","newPreviewFiles","indexOfRemoved","updateQueuedFiles","queuedFiles","MultiFilePickerField","getFiles","sources","source","concat","removedIndex","src","newValues","MediatoolThemeProvider","webappTheme","themeName","ChakraProvider","Menu","ChakraMenu","NumberInputStepper","includePercentage","enableStepperArrows","ChakraNumberInputStepper","Divider","NumberIncrementStepper","ChevronUpSolid","NumberDecrementStepper","ChevronDownSolid","regex","advancedParseFloat","splitValue","intPart","head","decimalPart","roundingError","match","decimalsErrorLength","length","correctDecimalsLength","onInputChange","onlyAcceptPercentage","percentageProps","percentageFactor","filteredNaN","ChakraNumberInput","NumberInputField","formatNumber","factor","initialValue","displayValue","setDisplayValue","parsed","hasNotification","blinkerColor","setIsBlinking","notifier","ChakraPinInput","isStringArray","getMatchingValue","propEq","generateComponentsUpdateKey","prevOptions","renderedOptions","ChakraReactSelect","BaseSelectField","inner","SelectField","SortableMultiValue","onMouseDown","innerProps","SortableMultiValueRemove","isOptionArray","SortableSelect","matchedValue","optionsArray","acc","found","opt","activeItems","setActiveItems","activeItemsRef","handleDragOver","useCallback","handleDragEnd","_event","finalOrder","mergedComponents","sortableItems","restrictToParentElement","closestCenter","horizontalListSortingStrategy","ChakraSwitch","SwitchField","Tab","elementColor","tabSx","ChakraTab","TabPanel","ChakraTabPanel","isManual","ChakraTabs","ChakraTextarea","TextareaField","roundToPrecision","numberOfDecimals","presetMap","FormattedNumberInput","preset","isPercentage","valueProp","onBlur","defaultNumberOfDecimals","getNumberFormatValues","number","numericFormatter","validateRange","vNum","onValueChangeHandler","sourceInfo","newFloatValue","NumericFormat","FormattedNumberInputField","CustomInput","InputMask","MaskedTextInput","mask","maskPlaceholder","alwaysShowMask","placeholder","nameProp","TextField","toastIconMap","BellSolid","Toast","useToast","toast","useChakraToast","toastIdRef","opts","toastProps","replacePreviousToast","pinVariantMap","pinSizeMap","StatusPin","pinColor","pinSizeTuple","outerSize","innerSize","AsyncError","message","AlertTitle","AlertDescription","StepPanel","ChakraStepPanel","Steps","ChakraSteps","indicator","step","labelStyle","descriptionStyle","indicatorStyle","ChakraStep","ChakraStepList","hasCopied","onCopy","useClipboard","tooltip","CopyDuo","dividerRef","mouseDownHandler","requestedFrame","target","moveEvent","containerStyle","Grid","PaneItem","GridItem","StepStack","rowHeight","stepCircleAlignment","stepCircleMarginTopPx","parsedRowHeight","row","ChakraOption","getCustomComponents","PlusSolid","J","K","CREATION_OPTION_VALUE","CreatableSelectDropdown","standardOptions","initialPlaceholder","addOptionPlaceholder","creationOption","onOptionChange","defaultValue","menuPlacement","restProps","selectedOption","setSelectedOption","targetValue","newOptionPlaceholder","setNewOptionPlaceholder","createdOptions","setCreatedOptions","createNewOption","setCreateNewOption","addFieldInputValue","setAddFieldInputValue","isCreationOption","checkIfNewOptionTextExistsInOptions","string","handleCreateOption","newOptionTextString","newOptionTextLower","newOptionExistsInStandardOptions","currentCreatedOptions","_actionMeta","combinedOptions","uniqBy","customOptions","newSelectedOption","ComboPicker","precision","formatPreset","defaultToZeroIfEmpty","_c","selectOption","setSelectOption","enableSelectInput","setEnableSelectInput","buttonRef","selectRef","getNewValue","newValueOption","newInputvalue","handleSelectClose","handleSelectChange","handleSelectToggle","buttonWidth","ComboPickerField","comboPickerValue"],"mappings":"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"}