@fictjs/ui-primitives 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +181 -0
  3. package/dist/index.cjs +5091 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +1123 -0
  6. package/dist/index.d.ts +1123 -0
  7. package/dist/index.js +4907 -0
  8. package/dist/index.js.map +1 -0
  9. package/docs/README.md +39 -0
  10. package/docs/accessibility.md +50 -0
  11. package/docs/api-reference.md +200 -0
  12. package/docs/architecture.md +113 -0
  13. package/docs/components/core/accessible-icon.md +23 -0
  14. package/docs/components/core/id.md +26 -0
  15. package/docs/components/core/portal.md +30 -0
  16. package/docs/components/core/presence.md +27 -0
  17. package/docs/components/core/primitive.md +22 -0
  18. package/docs/components/core/separator.md +25 -0
  19. package/docs/components/core/slot.md +25 -0
  20. package/docs/components/core/visually-hidden.md +21 -0
  21. package/docs/components/disclosure/accordion.md +33 -0
  22. package/docs/components/disclosure/collapsible.md +29 -0
  23. package/docs/components/disclosure/navigation-menu.md +43 -0
  24. package/docs/components/disclosure/tabs.md +35 -0
  25. package/docs/components/feedback/toast.md +60 -0
  26. package/docs/components/form/calendar.md +35 -0
  27. package/docs/components/form/controls.md +52 -0
  28. package/docs/components/form/date-picker.md +44 -0
  29. package/docs/components/form/form-field.md +39 -0
  30. package/docs/components/form/inputs.md +99 -0
  31. package/docs/components/interaction/dismissable-layer.md +28 -0
  32. package/docs/components/interaction/focus-scope.md +27 -0
  33. package/docs/components/interaction/live-region.md +26 -0
  34. package/docs/components/interaction/popper.md +30 -0
  35. package/docs/components/interaction/roving-focus.md +27 -0
  36. package/docs/components/interaction/scroll-lock.md +22 -0
  37. package/docs/components/layout/layout.md +61 -0
  38. package/docs/components/menu/context-menu.md +44 -0
  39. package/docs/components/menu/dropdown-menu.md +62 -0
  40. package/docs/components/menu/menubar.md +38 -0
  41. package/docs/components/overlay/alert-dialog.md +46 -0
  42. package/docs/components/overlay/command-palette.md +54 -0
  43. package/docs/components/overlay/dialog.md +69 -0
  44. package/docs/components/overlay/hover-card.md +25 -0
  45. package/docs/components/overlay/popover.md +36 -0
  46. package/docs/components/overlay/tooltip.md +28 -0
  47. package/docs/examples.md +155 -0
  48. package/docs/release.md +60 -0
  49. package/docs/testing.md +36 -0
  50. package/package.json +89 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/event.ts","../src/internal/ref.ts","../src/internal/vnode.ts","../src/components/core/slot.ts","../src/components/core/primitive.ts","../src/internal/accessor.ts","../src/components/core/presence.ts","../src/components/core/portal.ts","../src/components/core/visually-hidden.ts","../src/components/core/separator.ts","../src/components/core/accessible-icon.ts","../src/internal/ids.ts","../src/components/disclosure/collapsible.ts","../src/internal/state.ts","../src/components/disclosure/accordion.ts","../src/components/disclosure/tabs.ts","../src/components/interaction/roving-focus.ts","../src/components/disclosure/navigation-menu.ts","../src/components/form/label.ts","../src/components/form/checkbox.ts","../src/components/form/radio-group.ts","../src/components/form/switch.ts","../src/components/form/toggle.ts","../src/components/form/slider.ts","../src/components/form/calendar.ts","../src/components/form/date-picker.ts","../src/components/overlay/popover.ts","../src/components/interaction/dismissable-layer.ts","../src/components/interaction/popper.ts","../src/components/form/select.ts","../src/components/form/combobox.ts","../src/components/form/form-field.ts","../src/components/interaction/focus-scope.ts","../src/internal/dom.ts","../src/components/interaction/scroll-lock.ts","../src/components/interaction/live-region.ts","../src/components/layout/scroll-area.ts","../src/components/layout/resizable.ts","../src/components/layout/aspect-ratio.ts","../src/components/layout/progress.ts","../src/components/layout/skeleton.ts","../src/components/layout/focus-visible.ts","../src/components/overlay/dialog.ts","../src/components/overlay/alert-dialog.ts","../src/components/overlay/tooltip.ts","../src/components/overlay/hover-card.ts","../src/components/overlay/command-palette.ts","../src/components/menu/dropdown-menu.ts","../src/components/menu/context-menu.ts","../src/components/menu/menubar.ts","../src/components/feedback/toast.ts"],"sourcesContent":["export function composeEventHandlers<E extends Event>(\n original?: (event: E) => void,\n extra?: (event: E) => void,\n options: { checkDefaultPrevented?: boolean } = { checkDefaultPrevented: true },\n): (event: E) => void {\n return (event: E) => {\n original?.(event)\n if (!options.checkDefaultPrevented || !event.defaultPrevented) {\n extra?.(event)\n }\n }\n}\n","export type RefLike<T> = ((node: T | null) => void) | { current: T | null } | undefined\n\nexport function assignRef<T>(ref: RefLike<T>, value: T | null): void {\n if (!ref) return\n if (typeof ref === 'function') {\n ref(value)\n return\n }\n ref.current = value\n}\n\nexport function composeRefs<T>(...refs: RefLike<T>[]): (node: T | null) => void {\n return (node: T | null) => {\n for (const ref of refs) {\n assignRef(ref, node)\n }\n }\n}\n","import type { VNodeLike } from './types'\nimport { composeEventHandlers } from './event'\nimport { composeRefs } from './ref'\n\nfunction isEventKey(key: string): boolean {\n return key.startsWith('on') && key.length > 2\n}\n\nfunction mergeClassName(a: unknown, b: unknown): unknown {\n if (!a) return b\n if (!b) return a\n return `${String(a)} ${String(b)}`\n}\n\nfunction mergeStyle(a: unknown, b: unknown): unknown {\n if (!a) return b\n if (!b) return a\n\n if (typeof a === 'string' || typeof b === 'string') {\n return `${String(a)}; ${String(b)}`\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n return { ...(a as Record<string, unknown>), ...(b as Record<string, unknown>) }\n }\n\n return b\n}\n\nfunction mergePropValue(key: string, targetValue: unknown, sourceValue: unknown): unknown {\n if (key === 'class' || key === 'className') {\n return mergeClassName(targetValue, sourceValue)\n }\n\n if (key === 'style') {\n return mergeStyle(targetValue, sourceValue)\n }\n\n if (key === 'ref') {\n return composeRefs(\n targetValue as ((node: Element | null) => void) | { current: Element | null } | undefined,\n sourceValue as ((node: Element | null) => void) | { current: Element | null } | undefined,\n )\n }\n\n if (isEventKey(key)) {\n if (typeof targetValue === 'function' || typeof sourceValue === 'function') {\n return composeEventHandlers(\n targetValue as ((event: Event) => void) | undefined,\n sourceValue as ((event: Event) => void) | undefined,\n )\n }\n }\n\n return sourceValue\n}\n\nexport function isVNodeLike(value: unknown): value is VNodeLike {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'type' in value &&\n 'props' in value &&\n !(value instanceof Node)\n )\n}\n\nexport function mergeVNodeProps(\n target: Record<string, unknown> | null,\n source: Record<string, unknown>,\n): Record<string, unknown> {\n const next: Record<string, unknown> = { ...(target ?? {}) }\n\n for (const [key, sourceValue] of Object.entries(source)) {\n if (key === 'children' && sourceValue === undefined) continue\n const targetValue = next[key]\n next[key] = mergePropValue(key, targetValue, sourceValue)\n }\n\n return next\n}\n\nexport function cloneVNodeWithProps(\n vnode: VNodeLike,\n props: Record<string, unknown>,\n children?: unknown,\n): VNodeLike {\n const merged = mergeVNodeProps(vnode.props, props)\n\n if (children !== undefined) {\n merged.children = children\n }\n\n return {\n type: vnode.type,\n props: merged,\n key: vnode.key,\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { cloneVNodeWithProps, isVNodeLike } from '../../internal/vnode'\n\nexport interface SlotProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nfunction getFirstChild(children: FictNode): FictNode | null {\n if (Array.isArray(children)) {\n return (children.find(child => child !== null && child !== undefined && child !== false) ?? null) as\n | FictNode\n | null\n }\n return children ?? null\n}\n\nexport function Slot(props: SlotProps): FictNode {\n const { children, ...slotProps } = props\n if (children === undefined || children === null) {\n return null\n }\n\n const child = getFirstChild(children)\n if (!child) {\n return null\n }\n\n if (!isVNodeLike(child)) {\n return child\n }\n\n return cloneVNodeWithProps(child, slotProps) as unknown as FictNode\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { Slot } from './slot'\n\ntype PrimitiveTag = string\n\nexport interface PrimitiveProps {\n as?: PrimitiveTag\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function Primitive(props: PrimitiveProps): FictNode {\n const { as = 'div', asChild = false, children, ...rest } = props\n\n if (asChild) {\n return Slot({ ...rest, children })\n }\n\n return {\n type: as,\n props: {\n ...rest,\n children,\n },\n }\n}\n\nfunction createPrimitive(tag: PrimitiveTag) {\n return (props: Omit<PrimitiveProps, 'as'>) => Primitive({ ...props, as: tag })\n}\n\nexport const PrimitiveElements = {\n div: createPrimitive('div'),\n span: createPrimitive('span'),\n button: createPrimitive('button'),\n input: createPrimitive('input'),\n label: createPrimitive('label'),\n form: createPrimitive('form'),\n ul: createPrimitive('ul'),\n li: createPrimitive('li'),\n nav: createPrimitive('nav'),\n section: createPrimitive('section'),\n article: createPrimitive('article'),\n} as const\n","import type { MaybeAccessor } from './types'\n\nexport function read<T>(value: MaybeAccessor<T> | undefined, fallback?: T): T {\n if (typeof value === 'function') {\n return (value as () => T)()\n }\n if (value === undefined) {\n return fallback as T\n }\n return value\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { read } from '../../internal/accessor'\nimport type { MaybeAccessor } from '../../internal/types'\n\nexport interface PresenceProps {\n present?: MaybeAccessor<boolean>\n forceMount?: MaybeAccessor<boolean>\n children?: FictNode | ((state: { present: boolean }) => FictNode)\n}\n\nexport function Presence(props: PresenceProps): () => FictNode {\n return () => {\n const present = read(props.present, true)\n const forceMount = read(props.forceMount, false)\n\n if (!present && !forceMount) {\n return null\n }\n\n if (typeof props.children === 'function') {\n return (props.children as (state: { present: boolean }) => FictNode)({ present })\n }\n\n return props.children ?? null\n }\n}\n","import {\n createContext,\n createPortal,\n createElement,\n type FictNode,\n useContext,\n createMemo,\n onMount,\n} from '@fictjs/runtime'\n\nimport { read } from '../../internal/accessor'\nimport type { MaybeAccessor } from '../../internal/types'\n\nexport interface PortalHostProps {\n container?: MaybeAccessor<HTMLElement | null | undefined>\n children?: FictNode\n}\n\nexport interface PortalProps {\n container?: MaybeAccessor<HTMLElement | null | undefined>\n disabled?: MaybeAccessor<boolean>\n children?: FictNode\n}\n\nconst PortalContainerContext = createContext<() => HTMLElement | null>(() =>\n typeof document !== 'undefined' ? document.body : null,\n)\n\nfunction resolveContainer(\n container?: MaybeAccessor<HTMLElement | null | undefined>,\n): HTMLElement | null {\n if (container === undefined) {\n return null\n }\n\n return read(container, null) ?? null\n}\n\nexport function PortalHost(props: PortalHostProps): FictNode {\n const container = createMemo(() => resolveContainer(props.container))\n return {\n type: PortalContainerContext.Provider,\n props: {\n value: container,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function Portal(props: PortalProps): FictNode {\n if (read(props.disabled, false)) {\n return props.children ?? null\n }\n\n const hostContainerAccessor = useContext(PortalContainerContext)\n onMount(() => {\n const container =\n (props.container !== undefined ? resolveContainer(props.container) : hostContainerAccessor()) ??\n (typeof document !== 'undefined' ? document.body : null)\n\n if (!container) return\n\n createPortal(\n container,\n () => (typeof props.children === 'function' ? (props.children as () => FictNode)() : props.children ?? null),\n createElement,\n )\n })\n\n return null\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nexport interface VisuallyHiddenProps {\n as?: string\n children?: FictNode\n [key: string]: unknown\n}\n\nconst visuallyHiddenStyle: Record<string, string> = {\n position: 'absolute',\n border: '0',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n}\n\nexport function VisuallyHidden(props: VisuallyHiddenProps): FictNode {\n const { as = 'span', children, style, ...rest } = props\n\n return {\n type: as,\n props: {\n ...rest,\n style:\n typeof style === 'object' && style !== null\n ? { ...visuallyHiddenStyle, ...(style as Record<string, string>) }\n : visuallyHiddenStyle,\n children,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { read } from '../../internal/accessor'\nimport type { MaybeAccessor } from '../../internal/types'\n\nexport interface SeparatorProps {\n orientation?: MaybeAccessor<'horizontal' | 'vertical'>\n decorative?: MaybeAccessor<boolean>\n as?: string\n [key: string]: unknown\n}\n\nexport function Separator(props: SeparatorProps): FictNode {\n const orientation = read(props.orientation, 'horizontal')\n const decorative = read(props.decorative, false)\n const tag = props.as ?? 'div'\n\n return {\n type: tag,\n props: {\n ...props,\n as: undefined,\n role: decorative ? 'presentation' : 'separator',\n 'aria-orientation': orientation,\n 'aria-hidden': decorative || undefined,\n 'data-orientation': orientation,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { VisuallyHidden } from './visually-hidden'\n\nexport interface AccessibleIconProps {\n label: string\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function AccessibleIcon(props: AccessibleIconProps): FictNode {\n const { label, children, ...rest } = props\n\n return {\n type: 'span',\n props: {\n ...rest,\n children: [\n {\n type: 'span',\n props: {\n 'aria-hidden': 'true',\n children,\n },\n },\n {\n type: VisuallyHidden,\n props: {\n children: label,\n },\n },\n ],\n },\n }\n}\n","import { createContext, hasContext, useContext, type FictNode } from '@fictjs/runtime'\n\ninterface IdContextValue {\n prefix: string\n next: () => number\n}\n\nexport interface IdProviderProps {\n prefix?: string\n children?: FictNode\n}\n\nconst IdContext = createContext<IdContextValue | null>(null)\nconst globalCounters = new Map<string, number>()\n\nfunction nextCounter(prefix: string): number {\n const current = globalCounters.get(prefix) ?? 0\n const next = current + 1\n globalCounters.set(prefix, next)\n return next\n}\n\nfunction tryReadIdContext(): IdContextValue | null {\n try {\n if (!hasContext(IdContext)) {\n return null\n }\n return useContext(IdContext)\n } catch {\n return null\n }\n}\n\nexport function createId(prefix = 'fict-ui'): string {\n return `${prefix}-${nextCounter(prefix)}`\n}\n\nexport function useId(id: string | undefined, prefix = 'fict-ui'): string {\n if (id) return id\n\n const context = tryReadIdContext()\n if (context) {\n return `${context.prefix}-${context.next()}`\n }\n\n return createId(prefix)\n}\n\nexport function IdProvider(props: IdProviderProps): FictNode {\n const parent = tryReadIdContext()\n let localCounter = 0\n\n const prefix = props.prefix ?? parent?.prefix ?? 'fict-ui'\n const context: IdContextValue = {\n prefix,\n next: () => {\n localCounter += 1\n return localCounter\n },\n }\n\n return {\n type: IdContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\n\nexport interface CollapsibleRootProps {\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n children?: FictNode\n}\n\nexport interface CollapsibleTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CollapsibleContentProps {\n forceMount?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface CollapsibleContextValue {\n open: () => boolean\n setOpen: (open: boolean) => void\n disabled: () => boolean\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextValue | null>(null)\n\nfunction useCollapsibleContext(component: string): CollapsibleContextValue {\n const context = useContext(CollapsibleContext)\n if (!context) {\n throw new Error(`${component} must be used inside CollapsibleRoot`)\n }\n return context\n}\n\nexport function CollapsibleRoot(props: CollapsibleRootProps): FictNode {\n const state = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n const context: CollapsibleContextValue = {\n open: () => state.get(),\n setOpen: open => state.set(open),\n disabled: () => props.disabled ?? false,\n }\n\n return {\n type: CollapsibleContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function CollapsibleTrigger(props: CollapsibleTriggerProps): FictNode {\n const context = useCollapsibleContext('CollapsibleTrigger')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n disabled: () => context.disabled(),\n 'aria-expanded': () => context.open(),\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n if (context.disabled()) return\n context.setOpen(!context.open())\n },\n children: props.children,\n })\n}\n\nexport function CollapsibleContent(props: CollapsibleContentProps): FictNode {\n const context = useCollapsibleContext('CollapsibleContent')\n\n return {\n type: 'div',\n props: {\n 'data-collapsible-content-wrapper': '',\n children: () =>\n context.open() || props.forceMount\n ? {\n type: 'div',\n props: {\n ...props,\n forceMount: undefined,\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n 'data-collapsible-content': '',\n children: props.children,\n },\n }\n : null,\n },\n }\n}\n","import { createSignal } from '@fictjs/runtime/advanced'\n\nimport { read } from './accessor'\nimport type { MaybeAccessor } from './types'\n\nexport interface ControllableStateOptions<T> {\n value?: MaybeAccessor<T | undefined>\n defaultValue: T\n onChange?: (next: T) => void\n equals?: (a: T, b: T) => boolean\n}\n\nexport interface ControllableStateHandle<T> {\n get: () => T\n set: (next: T) => void\n isControlled: () => boolean\n}\n\nexport function createControllableState<T>(\n options: ControllableStateOptions<T>,\n): ControllableStateHandle<T> {\n const uncontrolled = createSignal(options.defaultValue)\n\n const isControlled = () => options.value !== undefined\n\n const get = () => {\n if (isControlled()) {\n return read(options.value, options.defaultValue) as T\n }\n return uncontrolled()\n }\n\n const set = (next: T) => {\n const prev = get()\n const equals = options.equals ?? Object.is\n if (equals(prev, next)) return\n\n if (!isControlled()) {\n uncontrolled(next)\n }\n\n options.onChange?.(next)\n }\n\n return { get, set, isControlled }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\nimport {\n CollapsibleContent,\n CollapsibleRoot,\n CollapsibleTrigger,\n type CollapsibleContentProps,\n type CollapsibleTriggerProps,\n} from './collapsible'\n\nexport interface AccordionRootProps {\n type?: 'single' | 'multiple'\n value?: string | string[] | (() => string | string[])\n defaultValue?: string | string[]\n onValueChange?: (value: string | string[]) => void\n collapsible?: boolean\n children?: FictNode\n}\n\nexport interface AccordionItemProps {\n value: string\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface AccordionContextValue {\n type: () => 'single' | 'multiple'\n values: () => string[]\n toggle: (value: string) => void\n}\n\ninterface AccordionItemContextValue {\n value: string\n open: () => boolean\n}\n\nconst AccordionContext = createContext<AccordionContextValue | null>(null)\nconst AccordionItemContext = createContext<AccordionItemContextValue | null>(null)\n\nfunction useAccordionContext(component: string): AccordionContextValue {\n const context = useContext(AccordionContext)\n if (!context) {\n throw new Error(`${component} must be used inside AccordionRoot`)\n }\n return context\n}\n\nfunction useAccordionItemContext(component: string): AccordionItemContextValue {\n const context = useContext(AccordionItemContext)\n if (!context) {\n throw new Error(`${component} must be used inside AccordionItem`)\n }\n return context\n}\n\nfunction normalize(value: string | string[] | undefined): string[] {\n if (value === undefined) return []\n return Array.isArray(value) ? value : [value]\n}\n\nexport function AccordionRoot(props: AccordionRootProps): FictNode {\n const type = props.type ?? 'single'\n const initialValues = normalize(props.defaultValue)\n\n const valuesState = createControllableState<string[]>({\n value:\n props.value === undefined\n ? undefined\n : typeof props.value === 'function'\n ? (() => normalize((props.value as () => string | string[])()))\n : normalize(props.value as string | string[]),\n defaultValue: initialValues,\n onChange: next => {\n props.onValueChange?.(type === 'single' ? (next[0] ?? '') : next)\n },\n })\n\n const context: AccordionContextValue = {\n type: () => type,\n values: () => valuesState.get(),\n toggle: value => {\n const current = valuesState.get()\n const exists = current.includes(value)\n\n if (type === 'single') {\n if (exists) {\n if (props.collapsible ?? false) {\n valuesState.set([])\n }\n return\n }\n valuesState.set([value])\n return\n }\n\n if (exists) {\n valuesState.set(current.filter(item => item !== value))\n } else {\n valuesState.set([...current, value])\n }\n },\n }\n\n return {\n type: AccordionContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function AccordionItem(props: AccordionItemProps): FictNode {\n const accordion = useAccordionContext('AccordionItem')\n const tag = props.as ?? 'div'\n\n const itemContext: AccordionItemContextValue = {\n value: props.value,\n open: () => accordion.values().includes(props.value),\n }\n\n return {\n type: AccordionItemContext.Provider,\n props: {\n value: itemContext,\n children: {\n type: CollapsibleRoot,\n props: {\n open: () => itemContext.open(),\n onOpenChange: (open: boolean) => {\n const shouldOpen = open\n if (shouldOpen !== itemContext.open()) {\n accordion.toggle(props.value)\n }\n },\n children: Primitive({\n ...props,\n value: undefined,\n as: tag,\n 'data-accordion-item': props.value,\n 'data-state': () => (itemContext.open() ? 'open' : 'closed'),\n children: props.children,\n }),\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function AccordionTrigger(props: CollapsibleTriggerProps): FictNode {\n useAccordionContext('AccordionTrigger')\n useAccordionItemContext('AccordionTrigger')\n\n return {\n type: CollapsibleTrigger,\n props,\n }\n}\n\nexport function AccordionContent(props: CollapsibleContentProps): FictNode {\n return {\n type: CollapsibleContent,\n props,\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { useId } from '../../internal/ids'\nimport { Primitive } from '../core/primitive'\nimport { RovingFocusGroup } from '../interaction/roving-focus'\n\nexport interface TabsRootProps {\n id?: string\n value?: string | (() => string)\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n children?: FictNode\n}\n\nexport interface TabsListProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface TabsTriggerProps {\n value: string\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface TabsContentProps {\n value: string\n forceMount?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface TabsContextValue {\n value: () => string\n setValue: (value: string) => void\n orientation: () => 'horizontal' | 'vertical'\n baseId: string\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null)\n\nfunction useTabsContext(component: string): TabsContextValue {\n const context = useContext(TabsContext)\n if (!context) {\n throw new Error(`${component} must be used inside TabsRoot`)\n }\n return context\n}\n\nexport function TabsRoot(props: TabsRootProps): FictNode {\n const valueState = createControllableState<string>({\n value: props.value,\n defaultValue: props.defaultValue ?? '',\n onChange: props.onValueChange,\n })\n const baseId = useId(props.id, 'tabs')\n\n const context: TabsContextValue = {\n value: () => valueState.get(),\n setValue: value => valueState.set(value),\n orientation: () => props.orientation ?? 'horizontal',\n baseId,\n }\n\n return {\n type: TabsContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function TabsList(props: TabsListProps): FictNode {\n const context = useTabsContext('TabsList')\n\n return {\n type: 'div',\n props: {\n ...props,\n role: 'tablist',\n 'aria-orientation': () => context.orientation(),\n 'data-tabs-list': '',\n children: {\n type: RovingFocusGroup,\n props: {\n orientation: () => context.orientation(),\n loop: true,\n children: props.children,\n },\n },\n },\n }\n}\n\nexport function TabsTrigger(props: TabsTriggerProps): FictNode {\n const context = useTabsContext('TabsTrigger')\n const tag = props.as ?? 'button'\n\n const selected = () => context.value() === props.value\n\n return Primitive({\n ...props,\n as: tag,\n value: undefined,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n role: 'tab',\n id: `${context.baseId}-trigger-${props.value}`,\n 'aria-controls': `${context.baseId}-content-${props.value}`,\n 'aria-selected': selected,\n 'data-state': () => (selected() ? 'active' : 'inactive'),\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (!event.defaultPrevented) {\n context.setValue(props.value)\n }\n },\n children: props.children,\n })\n}\n\nexport function TabsContent(props: TabsContentProps): FictNode {\n const context = useTabsContext('TabsContent')\n\n return {\n type: 'div',\n props: {\n 'data-tabs-content-wrapper': props.value,\n children: () =>\n context.value() === props.value || props.forceMount\n ? {\n type: 'div',\n props: {\n ...props,\n value: undefined,\n forceMount: undefined,\n role: 'tabpanel',\n id: `${context.baseId}-content-${props.value}`,\n 'aria-labelledby': `${context.baseId}-trigger-${props.value}`,\n 'data-state': () => (context.value() === props.value ? 'active' : 'inactive'),\n 'data-tabs-content': props.value,\n children: props.children,\n },\n }\n : null,\n },\n }\n}\n","import { createContext, createEffect, onCleanup, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useEventListener } from '@fictjs/hooks'\n\nimport { read } from '../../internal/accessor'\nimport { useId } from '../../internal/ids'\nimport { composeRefs } from '../../internal/ref'\nimport type { MaybeAccessor } from '../../internal/types'\nimport { Primitive } from '../core/primitive'\n\nexport interface RovingFocusGroupProps {\n orientation?: MaybeAccessor<'horizontal' | 'vertical'>\n loop?: MaybeAccessor<boolean>\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface RovingFocusItemProps {\n disabled?: MaybeAccessor<boolean>\n children?: FictNode\n as?: string\n asChild?: boolean\n onFocus?: (event: FocusEvent) => void\n onKeyDown?: (event: KeyboardEvent) => void\n [key: string]: unknown\n}\n\ninterface ItemRecord {\n id: string\n element: HTMLElement\n disabled: boolean\n}\n\ninterface RovingContextValue {\n orientation: () => 'horizontal' | 'vertical'\n loop: () => boolean\n currentId: () => string | null\n setCurrentId: (id: string | null) => void\n register: (item: ItemRecord) => () => void\n getItems: () => ItemRecord[]\n moveFocus: (direction: 1 | -1) => void\n focusFirst: () => void\n focusLast: () => void\n}\n\nconst RovingContext = createContext<RovingContextValue | null>(null)\n\nexport function RovingFocusGroup(props: RovingFocusGroupProps): FictNode {\n const currentIdSignal = createSignal<string | null>(null)\n const items: ItemRecord[] = []\n const groupNode = createSignal<HTMLElement | null>(null)\n\n const syncDomState = (activeId: string | null) => {\n for (const item of items) {\n const isActive = item.id === activeId && !item.disabled\n item.element.tabIndex = isActive ? 0 : -1\n if (isActive) {\n item.element.setAttribute('data-active', '')\n } else {\n item.element.removeAttribute('data-active')\n }\n }\n }\n\n const moveFocus = (direction: 1 | -1) => {\n const activeItems = context.getItems().filter(item => !item.disabled)\n if (activeItems.length === 0) return\n\n const currentId = context.currentId()\n const currentIndex = activeItems.findIndex(item => item.id === currentId)\n const baseIndex = currentIndex >= 0 ? currentIndex : 0\n\n let nextIndex = baseIndex + direction\n if (nextIndex < 0) {\n nextIndex = context.loop() ? activeItems.length - 1 : 0\n } else if (nextIndex >= activeItems.length) {\n nextIndex = context.loop() ? 0 : activeItems.length - 1\n }\n\n const nextItem = activeItems[nextIndex]\n if (!nextItem) return\n\n context.setCurrentId(nextItem.id)\n nextItem.element.focus()\n }\n\n const focusFirst = () => {\n const first = context.getItems().find(item => !item.disabled)\n if (!first) return\n context.setCurrentId(first.id)\n first.element.focus()\n }\n\n const focusLast = () => {\n const reversed = context\n .getItems()\n .slice()\n .reverse()\n const last = reversed.find(item => !item.disabled)\n if (!last) return\n context.setCurrentId(last.id)\n last.element.focus()\n }\n\n const context: RovingContextValue = {\n orientation: () => read(props.orientation, 'horizontal'),\n loop: () => read(props.loop, true),\n currentId: () => currentIdSignal(),\n setCurrentId: id => {\n currentIdSignal(id)\n syncDomState(id)\n },\n register: item => {\n items.push(item)\n if (!currentIdSignal() && !item.disabled) {\n context.setCurrentId(item.id)\n } else {\n syncDomState(currentIdSignal())\n }\n return () => {\n const index = items.findIndex(entry => entry.id === item.id)\n if (index >= 0) {\n items.splice(index, 1)\n }\n if (currentIdSignal() === item.id) {\n context.setCurrentId(items.find(entry => !entry.disabled)?.id ?? null)\n } else {\n syncDomState(currentIdSignal())\n }\n }\n },\n getItems: () => items.slice(),\n moveFocus,\n focusFirst,\n focusLast,\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n const orientation = context.orientation()\n const key = event.key\n\n if (orientation === 'horizontal') {\n if (key === 'ArrowRight') {\n event.preventDefault()\n moveFocus(1)\n } else if (key === 'ArrowLeft') {\n event.preventDefault()\n moveFocus(-1)\n }\n }\n\n if (orientation === 'vertical') {\n if (key === 'ArrowDown') {\n event.preventDefault()\n moveFocus(1)\n } else if (key === 'ArrowUp') {\n event.preventDefault()\n moveFocus(-1)\n }\n }\n\n if (key === 'Home') {\n event.preventDefault()\n context.focusFirst()\n }\n\n if (key === 'End') {\n event.preventDefault()\n context.focusLast()\n }\n }\n\n const onDocumentKeyDown = (event: KeyboardEvent) => {\n const target = event.target\n const group = groupNode()\n if (!group || !(target instanceof Node)) return\n if (!group.contains(target)) return\n onKeyDown(event)\n }\n\n const targetDocument = () => groupNode()?.ownerDocument ?? (typeof document !== 'undefined' ? document : null)\n useEventListener<KeyboardEvent>(targetDocument, 'keydown', onDocumentKeyDown, { capture: true })\n\n return {\n type: RovingContext.Provider,\n props: {\n value: context,\n children: {\n type: 'div',\n props: {\n ...props,\n orientation: undefined,\n loop: undefined,\n role: 'group',\n 'data-roving-focus-group': '',\n ref: (node: HTMLElement | null) => {\n groupNode(node)\n const refProp = props.ref as\n | ((el: HTMLElement | null) => void)\n | { current: HTMLElement | null }\n | undefined\n if (typeof refProp === 'function') {\n refProp(node)\n } else if (refProp) {\n refProp.current = node\n }\n },\n onKeyDown,\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function RovingFocusItem(props: RovingFocusItemProps): FictNode {\n const context = useContext(RovingContext)\n if (!context) {\n throw new Error('RovingFocusItem must be used inside RovingFocusGroup')\n }\n\n const id = useId(props.id as string | undefined, 'rf-item')\n const tag = props.as ?? 'button'\n const itemNode = createSignal<HTMLElement | null>(null)\n let cleanup: (() => void) | null = null\n\n const onFocus = (event: FocusEvent) => {\n props.onFocus?.(event)\n context.setCurrentId(id)\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n props.onKeyDown?.(event)\n if (event.defaultPrevented) return\n\n const orientation = context.orientation()\n if (orientation === 'horizontal') {\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n context.moveFocus(1)\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault()\n context.moveFocus(-1)\n }\n } else if (orientation === 'vertical') {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n context.moveFocus(1)\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n context.moveFocus(-1)\n }\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n context.focusFirst()\n }\n if (event.key === 'End') {\n event.preventDefault()\n context.focusLast()\n }\n }\n\n useEventListener<KeyboardEvent>(() => itemNode(), 'keydown', onKeyDown)\n\n createEffect(() => {\n const node = itemNode()\n cleanup?.()\n cleanup = null\n if (!node) return\n\n cleanup = context.register({\n id,\n element: node,\n disabled: read(props.disabled, false),\n })\n\n onCleanup(() => {\n cleanup?.()\n cleanup = null\n })\n })\n\n const register = (node: HTMLElement | null) => {\n itemNode(node)\n }\n\n return Primitive({\n ...props,\n as: tag,\n disabled: read(props.disabled, false),\n ref: composeRefs(props.ref as ((node: HTMLElement | null) => void) | { current: HTMLElement | null }, register),\n tabIndex: -1,\n 'data-roving-focus-item': '',\n onFocus,\n children: props.children,\n })\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\n\nimport { useId } from '../../internal/ids'\nimport { Primitive } from '../core/primitive'\n\nexport interface NavigationMenuRootProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface NavigationMenuListProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface NavigationMenuItemProps {\n value?: string\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface NavigationMenuTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface NavigationMenuContentProps {\n forceMount?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface NavigationMenuLinkProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface NavigationMenuRootContextValue {\n activeItem: () => string | null\n setActiveItem: (value: string | null) => void\n}\n\ninterface NavigationMenuItemContextValue {\n value: string\n}\n\nconst NavigationMenuRootContext = createContext<NavigationMenuRootContextValue | null>(null)\nconst NavigationMenuItemContext = createContext<NavigationMenuItemContextValue | null>(null)\n\nfunction useNavigationRootContext(component: string): NavigationMenuRootContextValue {\n const context = useContext(NavigationMenuRootContext)\n if (!context) {\n throw new Error(`${component} must be used inside NavigationMenuRoot`)\n }\n return context\n}\n\nfunction useNavigationItemContext(component: string): NavigationMenuItemContextValue {\n const context = useContext(NavigationMenuItemContext)\n if (!context) {\n throw new Error(`${component} must be used inside NavigationMenuItem`)\n }\n return context\n}\n\nexport function NavigationMenuRoot(props: NavigationMenuRootProps): FictNode {\n const activeItemSignal = createSignal<string | null>(null)\n\n const context: NavigationMenuRootContextValue = {\n activeItem: () => activeItemSignal(),\n setActiveItem: value => activeItemSignal(value),\n }\n\n return {\n type: NavigationMenuRootContext.Provider,\n props: {\n value: context,\n children: {\n type: 'nav',\n props: {\n ...props,\n 'data-navigation-menu-root': '',\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function NavigationMenuList(props: NavigationMenuListProps): FictNode {\n return {\n type: 'ul',\n props: {\n ...props,\n 'data-navigation-menu-list': '',\n children: props.children,\n },\n }\n}\n\nexport function NavigationMenuItem(props: NavigationMenuItemProps): FictNode {\n const value = useId(props.value, 'navigation-menu-item')\n const tag = props.as ?? 'li'\n\n return {\n type: NavigationMenuItemContext.Provider,\n props: {\n value: { value },\n children: Primitive({\n ...props,\n value: undefined,\n as: tag,\n 'data-navigation-menu-item': value,\n children: props.children,\n }),\n },\n } as unknown as FictNode\n}\n\nexport function NavigationMenuTrigger(props: NavigationMenuTriggerProps): FictNode {\n const root = useNavigationRootContext('NavigationMenuTrigger')\n const item = useNavigationItemContext('NavigationMenuTrigger')\n const tag = props.as ?? 'button'\n\n const open = () => root.activeItem() === item.value\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n 'aria-expanded': open,\n 'aria-haspopup': 'menu',\n 'data-state': () => (open() ? 'open' : 'closed'),\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n root.setActiveItem(open() ? null : item.value)\n },\n children: props.children,\n })\n}\n\nexport function NavigationMenuContent(props: NavigationMenuContentProps): FictNode {\n const root = useNavigationRootContext('NavigationMenuContent')\n const item = useNavigationItemContext('NavigationMenuContent')\n\n const open = () => root.activeItem() === item.value\n\n return {\n type: 'div',\n props: {\n 'data-navigation-menu-content-wrapper': item.value,\n children: () =>\n open() || props.forceMount\n ? {\n type: 'div',\n props: {\n ...props,\n forceMount: undefined,\n role: 'menu',\n 'data-state': () => (open() ? 'open' : 'closed'),\n 'data-navigation-menu-content': item.value,\n children: props.children,\n },\n }\n : null,\n },\n }\n}\n\nexport function NavigationMenuLink(props: NavigationMenuLinkProps): FictNode {\n const tag = props.as ?? 'a'\n\n return Primitive({\n ...props,\n as: tag,\n 'data-navigation-menu-link': '',\n children: props.children,\n })\n}\n\nexport function NavigationMenuIndicator(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n 'data-navigation-menu-indicator': '',\n children: props.children,\n },\n }\n}\n\nexport function NavigationMenuViewport(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n 'data-navigation-menu-viewport': '',\n children: props.children,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nexport interface LabelProps {\n htmlFor?: string\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function Label(props: LabelProps): FictNode {\n return {\n type: 'label',\n props: {\n ...props,\n 'data-label': '',\n children: props.children,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\n\nexport interface CheckboxProps {\n checked?: boolean | (() => boolean)\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n disabled?: boolean\n name?: string\n value?: string\n required?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function Checkbox(props: CheckboxProps): FictNode {\n const checkedState = createControllableState<boolean>({\n value: props.checked,\n defaultValue: props.defaultChecked ?? false,\n onChange: props.onCheckedChange,\n })\n\n return {\n type: 'button',\n props: {\n ...props,\n type: 'button',\n role: 'checkbox',\n disabled: props.disabled,\n 'aria-checked': () => checkedState.get(),\n 'data-state': () => (checkedState.get() ? 'checked' : 'unchecked'),\n 'data-checkbox': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented || props.disabled) return\n checkedState.set(!checkedState.get())\n },\n children: [\n props.children,\n props.name\n ? {\n type: 'input',\n props: {\n type: 'checkbox',\n hidden: true,\n tabIndex: -1,\n name: props.name,\n value: props.value,\n checked: () => checkedState.get(),\n required: props.required,\n readOnly: true,\n },\n }\n : null,\n ],\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\n\nexport interface RadioGroupProps {\n value?: string | (() => string)\n defaultValue?: string\n onValueChange?: (value: string) => void\n name?: string\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface RadioItemProps {\n value: string\n as?: string\n asChild?: boolean\n disabled?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface RadioGroupContextValue {\n value: () => string\n setValue: (value: string) => void\n name?: string\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nfunction useRadioGroupContext(component: string): RadioGroupContextValue {\n const context = useContext(RadioGroupContext)\n if (!context) {\n throw new Error(`${component} must be used inside RadioGroup`)\n }\n return context\n}\n\nexport function RadioGroup(props: RadioGroupProps): FictNode {\n const valueState = createControllableState<string>({\n value: props.value,\n defaultValue: props.defaultValue ?? '',\n onChange: props.onValueChange,\n })\n\n const context: RadioGroupContextValue = {\n value: () => valueState.get(),\n setValue: value => valueState.set(value),\n name: props.name,\n }\n\n return {\n type: RadioGroupContext.Provider,\n props: {\n value: context,\n children: {\n type: 'div',\n props: {\n ...props,\n role: 'radiogroup',\n 'data-radio-group': '',\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function RadioItem(props: RadioItemProps): FictNode {\n const group = useRadioGroupContext('RadioItem')\n const checked = () => group.value() === props.value\n const tag = props.as ?? 'button'\n const hiddenInput = group.name\n ? {\n type: 'input',\n props: {\n type: 'radio',\n hidden: true,\n tabIndex: -1,\n name: group.name,\n checked,\n value: props.value,\n readOnly: true,\n },\n }\n : null\n\n if (props.asChild) {\n return [\n Primitive({\n ...props,\n as: tag,\n type: props.type,\n role: 'radio',\n disabled: props.disabled,\n 'aria-checked': checked,\n 'data-state': () => (checked() ? 'checked' : 'unchecked'),\n 'data-radio-item': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented || props.disabled) return\n group.setValue(props.value)\n },\n children: props.children,\n }),\n hiddenInput,\n ]\n }\n\n return Primitive({\n ...props,\n as: tag,\n type: tag === 'button' ? 'button' : props.type,\n role: 'radio',\n disabled: props.disabled,\n 'aria-checked': checked,\n 'data-state': () => (checked() ? 'checked' : 'unchecked'),\n 'data-radio-item': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented || props.disabled) return\n group.setValue(props.value)\n },\n children: [props.children, hiddenInput],\n })\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\n\nexport interface SwitchProps {\n checked?: boolean | (() => boolean)\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n disabled?: boolean\n name?: string\n value?: string\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface SwitchThumbProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function Switch(props: SwitchProps): FictNode {\n const checkedState = createControllableState<boolean>({\n value: props.checked,\n defaultValue: props.defaultChecked ?? false,\n onChange: props.onCheckedChange,\n })\n\n return {\n type: 'button',\n props: {\n ...props,\n type: 'button',\n role: 'switch',\n disabled: props.disabled,\n 'aria-checked': () => checkedState.get(),\n 'data-state': () => (checkedState.get() ? 'checked' : 'unchecked'),\n 'data-switch': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented || props.disabled) return\n checkedState.set(!checkedState.get())\n },\n children: [\n props.children,\n props.name\n ? {\n type: 'input',\n props: {\n type: 'checkbox',\n hidden: true,\n tabIndex: -1,\n name: props.name,\n value: props.value,\n checked: () => checkedState.get(),\n readOnly: true,\n },\n }\n : null,\n ],\n },\n }\n}\n\nexport function SwitchThumb(props: SwitchThumbProps): FictNode {\n return {\n type: 'span',\n props: {\n ...props,\n 'data-switch-thumb': '',\n children: props.children,\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\n\nexport interface ToggleProps {\n pressed?: boolean | (() => boolean)\n defaultPressed?: boolean\n onPressedChange?: (pressed: boolean) => void\n disabled?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ToggleGroupProps {\n type?: 'single' | 'multiple'\n value?: string | string[] | (() => string | string[])\n defaultValue?: string | string[]\n onValueChange?: (value: string | string[]) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ToggleGroupItemProps {\n value: string\n as?: string\n asChild?: boolean\n disabled?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface ToggleGroupContextValue {\n type: () => 'single' | 'multiple'\n values: () => string[]\n toggle: (value: string) => void\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\n\nfunction normalize(value: string | string[] | undefined): string[] {\n if (value === undefined) return []\n return Array.isArray(value) ? value : [value]\n}\n\nexport function Toggle(props: ToggleProps): FictNode {\n const pressedState = createControllableState<boolean>({\n value: props.pressed,\n defaultValue: props.defaultPressed ?? false,\n onChange: props.onPressedChange,\n })\n\n return {\n type: 'button',\n props: {\n ...props,\n type: 'button',\n disabled: props.disabled,\n 'aria-pressed': () => pressedState.get(),\n 'data-state': () => (pressedState.get() ? 'on' : 'off'),\n 'data-toggle': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented || props.disabled) return\n pressedState.set(!pressedState.get())\n },\n children: props.children,\n },\n }\n}\n\nexport function ToggleGroup(props: ToggleGroupProps): FictNode {\n const type = props.type ?? 'single'\n const valuesState = createControllableState<string[]>({\n value:\n props.value === undefined\n ? undefined\n : typeof props.value === 'function'\n ? (() => normalize((props.value as () => string | string[])()))\n : normalize(props.value as string | string[]),\n defaultValue: normalize(props.defaultValue),\n onChange: next => {\n props.onValueChange?.(type === 'single' ? (next[0] ?? '') : next)\n },\n })\n\n const context: ToggleGroupContextValue = {\n type: () => type,\n values: () => valuesState.get(),\n toggle: value => {\n const current = valuesState.get()\n const exists = current.includes(value)\n\n if (type === 'single') {\n valuesState.set(exists ? [] : [value])\n return\n }\n\n if (exists) {\n valuesState.set(current.filter(item => item !== value))\n } else {\n valuesState.set([...current, value])\n }\n },\n }\n\n return {\n type: ToggleGroupContext.Provider,\n props: {\n value: context,\n children: {\n type: 'div',\n props: {\n ...props,\n role: 'group',\n 'data-toggle-group': '',\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function ToggleGroupItem(props: ToggleGroupItemProps): FictNode {\n const group = useContext(ToggleGroupContext)\n if (!group) {\n throw new Error('ToggleGroupItem must be used inside ToggleGroup')\n }\n\n const pressed = () => group.values().includes(props.value)\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? 'button' : props.type,\n disabled: props.disabled,\n 'aria-pressed': pressed,\n 'data-state': () => (pressed() ? 'on' : 'off'),\n 'data-toggle-group-item': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented || props.disabled) return\n group.toggle(props.value)\n },\n children: props.children,\n })\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\n\nexport interface SliderProps {\n value?: number | (() => number)\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n onValueChange?: (value: number) => void\n [key: string]: unknown\n}\n\nexport interface RangeSliderProps {\n value?: [number, number] | (() => [number, number])\n defaultValue?: [number, number]\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n onValueChange?: (value: [number, number]) => void\n [key: string]: unknown\n}\n\nexport function Slider(props: SliderProps): FictNode {\n const valueState = createControllableState<number>({\n value: props.value,\n defaultValue: props.defaultValue ?? 0,\n onChange: props.onValueChange,\n })\n\n return {\n type: 'input',\n props: {\n ...props,\n type: 'range',\n min: props.min ?? 0,\n max: props.max ?? 100,\n step: props.step ?? 1,\n value: () => valueState.get(),\n disabled: props.disabled,\n 'data-slider': '',\n onInput: (event: Event) => {\n ;(props.onInput as ((event: Event) => void) | undefined)?.(event)\n const target = event.target as HTMLInputElement | null\n if (!target) return\n valueState.set(Number(target.value))\n },\n },\n }\n}\n\nexport function RangeSlider(props: RangeSliderProps): FictNode {\n const valueState = createControllableState<[number, number]>({\n value: props.value,\n defaultValue: props.defaultValue ?? [0, 100],\n onChange: props.onValueChange,\n })\n\n const min = props.min ?? 0\n const max = props.max ?? 100\n const step = props.step ?? 1\n\n const setStart = (nextStart: number) => {\n const [, end] = valueState.get()\n valueState.set([Math.min(nextStart, end), end])\n }\n\n const setEnd = (nextEnd: number) => {\n const [start] = valueState.get()\n valueState.set([start, Math.max(start, nextEnd)])\n }\n\n return {\n type: 'div',\n props: {\n ...props,\n 'data-range-slider': '',\n children: [\n {\n type: 'input',\n props: {\n type: 'range',\n min,\n max,\n step,\n value: () => valueState.get()[0],\n disabled: props.disabled,\n 'data-range-slider-start': '',\n onInput: (event: Event) => {\n ;(props.onInput as ((event: Event) => void) | undefined)?.(event)\n const target = event.target as HTMLInputElement | null\n if (!target) return\n setStart(Number(target.value))\n },\n },\n },\n {\n type: 'input',\n props: {\n type: 'range',\n min,\n max,\n step,\n value: () => valueState.get()[1],\n disabled: props.disabled,\n 'data-range-slider-end': '',\n onInput: (event: Event) => {\n ;(props.onInput as ((event: Event) => void) | undefined)?.(event)\n const target = event.target as HTMLInputElement | null\n if (!target) return\n setEnd(Number(target.value))\n },\n },\n },\n ],\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { read } from '../../internal/accessor'\nimport { useId } from '../../internal/ids'\nimport { createControllableState } from '../../internal/state'\nimport type { MaybeAccessor } from '../../internal/types'\nimport { Primitive } from '../core/primitive'\n\ntype DateLike = Date | string | null | undefined\n\nfunction toDate(value: DateLike): Date | null {\n if (value === null || value === undefined) return null\n const next = value instanceof Date ? new Date(value.getTime()) : new Date(value)\n return Number.isNaN(next.getTime()) ? null : next\n}\n\nfunction normalizeDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nfunction normalizeMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction clampWeekday(value: number): number {\n if (!Number.isFinite(value)) return 0\n const next = Math.floor(value)\n if (next < 0) return 0\n if (next > 6) return 6\n return next\n}\n\nfunction isSameDay(a: Date | null, b: Date | null): boolean {\n if (!a || !b) return a === b\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nfunction isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\n}\n\nfunction addMonths(month: Date, offset: number): Date {\n return normalizeMonth(new Date(month.getFullYear(), month.getMonth() + offset, 1))\n}\n\nfunction formatDateKey(date: Date): string {\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n}\n\nfunction resolveDate(value: MaybeAccessor<DateLike>): Date | null {\n const next = toDate(read(value, undefined))\n return next ? normalizeDate(next) : null\n}\n\nfunction buildVisibleDays(month: Date, weekStartsOn: number): Date[] {\n const firstOfMonth = normalizeMonth(month)\n const firstWeekday = firstOfMonth.getDay()\n const offset = (firstWeekday - weekStartsOn + 7) % 7\n const start = new Date(firstOfMonth.getFullYear(), firstOfMonth.getMonth(), 1 - offset)\n\n return Array.from({ length: 42 }, (_, index) => normalizeDate(new Date(start.getFullYear(), start.getMonth(), start.getDate() + index)))\n}\n\nfunction weekdayLabels(locale: string, format: 'narrow' | 'short' | 'long', weekStartsOn: number): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: format })\n const start = new Date(2026, 0, 4) // Sunday\n return Array.from({ length: 7 }, (_, index) => {\n const day = new Date(start.getFullYear(), start.getMonth(), start.getDate() + ((weekStartsOn + index) % 7))\n return formatter.format(day)\n })\n}\n\nexport interface CalendarRootProps {\n id?: string\n value?: MaybeAccessor<DateLike>\n defaultValue?: DateLike\n onValueChange?: (value: Date | null) => void\n month?: MaybeAccessor<DateLike>\n defaultMonth?: DateLike\n onMonthChange?: (month: Date) => void\n locale?: MaybeAccessor<string>\n weekStartsOn?: MaybeAccessor<number>\n weekdayFormat?: MaybeAccessor<'narrow' | 'short' | 'long'>\n showOutsideDays?: MaybeAccessor<boolean>\n disabled?: (date: Date) => boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CalendarHeaderProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CalendarTitleProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CalendarNavButtonProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CalendarGridProps {\n showOutsideDays?: MaybeAccessor<boolean>\n onDaySelect?: (day: Date, event: MouseEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface CalendarContextValue {\n baseId: string\n gridId: string\n value: () => Date | null\n setValue: (value: Date | null) => void\n month: () => Date\n setMonth: (month: Date) => void\n locale: () => string\n weekStartsOn: () => number\n weekdayFormat: () => 'narrow' | 'short' | 'long'\n showOutsideDays: () => boolean\n disabled: (date: Date) => boolean\n}\n\nconst CalendarContext = createContext<CalendarContextValue | null>(null)\n\nfunction useCalendarContext(component: string): CalendarContextValue {\n const context = useContext(CalendarContext)\n if (!context) {\n throw new Error(`${component} must be used inside CalendarRoot`)\n }\n return context\n}\n\nexport function CalendarRoot(props: CalendarRootProps): FictNode {\n const initialValue = toDate(props.defaultValue)\n const initialMonth = normalizeMonth(toDate(props.defaultMonth) ?? initialValue ?? new Date())\n const baseId = useId(props.id, 'calendar')\n\n const valueState = createControllableState<Date | null>({\n value: props.value === undefined ? undefined : (() => resolveDate(props.value as MaybeAccessor<DateLike>)),\n defaultValue: initialValue ? normalizeDate(initialValue) : null,\n onChange: props.onValueChange,\n equals: (a, b) => isSameDay(a, b),\n })\n\n const monthState = createControllableState<Date>({\n value:\n props.month === undefined\n ? undefined\n : (() => {\n const next = toDate(read(props.month as MaybeAccessor<DateLike>, undefined))\n return normalizeMonth(next ?? initialMonth)\n }),\n defaultValue: initialMonth,\n onChange: props.onMonthChange,\n equals: (a, b) => isSameMonth(a, b),\n })\n\n const context: CalendarContextValue = {\n baseId,\n gridId: `${baseId}-grid`,\n value: () => valueState.get(),\n setValue: value => valueState.set(value ? normalizeDate(value) : null),\n month: () => normalizeMonth(monthState.get()),\n setMonth: month => monthState.set(normalizeMonth(month)),\n locale: () => read(props.locale, 'en-US'),\n weekStartsOn: () => clampWeekday(read(props.weekStartsOn, 0)),\n weekdayFormat: () => read(props.weekdayFormat, 'short'),\n showOutsideDays: () => read(props.showOutsideDays, true),\n disabled: date => props.disabled?.(normalizeDate(date)) ?? false,\n }\n\n const defaultChildren = [\n {\n type: CalendarHeader,\n props: {\n children: [\n { type: CalendarPrevButton, props: { 'data-calendar-prev-button': '', children: 'Prev' } },\n { type: CalendarTitle, props: {} },\n { type: CalendarNextButton, props: { 'data-calendar-next-button': '', children: 'Next' } },\n ],\n },\n },\n { type: CalendarGrid, props: {} },\n ]\n\n return {\n type: CalendarContext.Provider,\n props: {\n value: context,\n children: {\n type: 'div',\n props: {\n ...props,\n id: baseId,\n value: undefined,\n defaultValue: undefined,\n onValueChange: undefined,\n month: undefined,\n defaultMonth: undefined,\n onMonthChange: undefined,\n locale: undefined,\n weekStartsOn: undefined,\n weekdayFormat: undefined,\n showOutsideDays: undefined,\n disabled: undefined,\n 'data-calendar-root': '',\n children: props.children ?? defaultChildren,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport const Calendar = CalendarRoot\n\nexport function CalendarHeader(props: CalendarHeaderProps): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n 'data-calendar-header': '',\n children: props.children,\n },\n }\n}\n\nexport function CalendarTitle(props: CalendarTitleProps): FictNode {\n const context = useCalendarContext('CalendarTitle')\n\n return {\n type: 'span',\n props: {\n ...props,\n 'data-calendar-title': '',\n children:\n props.children ??\n (() =>\n new Intl.DateTimeFormat(context.locale(), {\n month: 'long',\n year: 'numeric',\n }).format(context.month())),\n },\n }\n}\n\nexport function CalendarPrevButton(props: CalendarNavButtonProps): FictNode {\n const context = useCalendarContext('CalendarPrevButton')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n 'aria-controls': context.gridId,\n 'data-calendar-prev': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n context.setMonth(addMonths(context.month(), -1))\n },\n children: props.children ?? 'Prev',\n })\n}\n\nexport function CalendarNextButton(props: CalendarNavButtonProps): FictNode {\n const context = useCalendarContext('CalendarNextButton')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n 'aria-controls': context.gridId,\n 'data-calendar-next': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n context.setMonth(addMonths(context.month(), 1))\n },\n children: props.children ?? 'Next',\n })\n}\n\nexport function CalendarGrid(props: CalendarGridProps): FictNode {\n const context = useCalendarContext('CalendarGrid')\n\n return {\n type: 'div',\n props: {\n ...props,\n showOutsideDays: undefined,\n onDaySelect: undefined,\n id: props.id ?? context.gridId,\n role: 'grid',\n 'data-calendar-grid': '',\n children: () => {\n const month = context.month()\n const weekStartsOn = context.weekStartsOn()\n const showOutside = read(props.showOutsideDays, context.showOutsideDays())\n const labels = weekdayLabels(context.locale(), context.weekdayFormat(), weekStartsOn)\n const days = buildVisibleDays(month, weekStartsOn)\n\n const header = {\n type: 'div',\n props: {\n role: 'row',\n 'data-calendar-weekdays': '',\n children: labels.map((label, index) => ({\n type: 'span',\n props: {\n role: 'columnheader',\n 'data-calendar-weekday': index,\n children: label,\n },\n })),\n },\n }\n\n const rows = Array.from({ length: 6 }, (_, weekIndex) => {\n const start = weekIndex * 7\n const weekDays = days.slice(start, start + 7)\n\n return {\n type: 'div',\n props: {\n role: 'row',\n 'data-calendar-week': weekIndex,\n children: weekDays.map(day => {\n const key = formatDateKey(day)\n const outsideMonth = !isSameMonth(day, month)\n const selected = isSameDay(context.value(), day)\n const disabled = context.disabled(day)\n\n if (!showOutside && outsideMonth) {\n return {\n type: 'span',\n props: {\n role: 'gridcell',\n 'data-calendar-day-placeholder': key,\n 'aria-hidden': 'true',\n children: '',\n },\n }\n }\n\n return {\n type: 'button',\n props: {\n type: 'button',\n role: 'gridcell',\n 'aria-selected': selected,\n disabled,\n 'data-calendar-day': key,\n 'data-state': selected ? 'selected' : 'idle',\n 'data-outside-month': outsideMonth ? 'true' : undefined,\n onClick: (event: MouseEvent) => {\n ;(props.onDaySelect as ((day: Date, event: MouseEvent) => void) | undefined)?.(day, event)\n if (event.defaultPrevented || disabled) return\n context.setValue(day)\n context.setMonth(day)\n },\n children: String(day.getDate()),\n },\n }\n }),\n },\n }\n })\n\n return [header, ...rows]\n },\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { read } from '../../internal/accessor'\nimport { useId } from '../../internal/ids'\nimport { createControllableState } from '../../internal/state'\nimport type { MaybeAccessor } from '../../internal/types'\nimport {\n PopoverContent,\n PopoverRoot,\n PopoverTrigger,\n type PopoverContentPropsExt,\n} from '../overlay/popover'\nimport { CalendarRoot, type CalendarRootProps } from './calendar'\n\ntype DateLike = Date | string | null | undefined\n\nfunction toDate(value: DateLike): Date | null {\n if (value === null || value === undefined) return null\n const next = value instanceof Date ? new Date(value.getTime()) : new Date(value)\n return Number.isNaN(next.getTime()) ? null : next\n}\n\nfunction sameDay(a: Date | null, b: Date | null): boolean {\n if (!a || !b) return a === b\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\ninterface DatePickerContextValue {\n baseId: string\n value: () => Date | null\n setValue: (value: Date | null) => void\n open: () => boolean\n setOpen: (open: boolean) => void\n locale: () => string\n}\n\nexport interface DatePickerRootProps {\n id?: string\n value?: MaybeAccessor<DateLike>\n defaultValue?: DateLike\n onValueChange?: (value: Date | null) => void\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n locale?: MaybeAccessor<string>\n children?: FictNode\n}\n\nexport interface DatePickerTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface DatePickerValueProps {\n placeholder?: string\n locale?: string\n formatOptions?: Intl.DateTimeFormatOptions\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface DatePickerContentProps extends PopoverContentPropsExt {\n closeOnSelect?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface DatePickerCalendarProps\n extends Omit<CalendarRootProps, 'value' | 'defaultValue' | 'onValueChange' | 'locale'> {\n closeOnSelect?: boolean\n locale?: MaybeAccessor<string>\n onValueChange?: (value: Date | null) => void\n children?: FictNode\n}\n\nconst DatePickerContext = createContext<DatePickerContextValue | null>(null)\n\nfunction useDatePickerContext(component: string): DatePickerContextValue {\n const context = useContext(DatePickerContext)\n if (!context) {\n throw new Error(`${component} must be used inside DatePickerRoot`)\n }\n return context\n}\n\nexport function DatePickerRoot(props: DatePickerRootProps): FictNode {\n const baseId = useId(props.id, 'date-picker')\n\n const valueState = createControllableState<Date | null>({\n value:\n props.value === undefined\n ? undefined\n : (() => {\n const next = toDate(read(props.value as MaybeAccessor<DateLike>, undefined))\n return next ? new Date(next.getFullYear(), next.getMonth(), next.getDate()) : null\n }),\n defaultValue: toDate(props.defaultValue),\n onChange: props.onValueChange,\n equals: (a, b) => sameDay(a, b),\n })\n\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n const context: DatePickerContextValue = {\n baseId,\n value: () => valueState.get(),\n setValue: value => valueState.set(value),\n open: () => openState.get(),\n setOpen: open => openState.set(open),\n locale: () => read(props.locale, 'en-US'),\n }\n\n return {\n type: DatePickerContext.Provider,\n props: {\n value: context,\n children: {\n type: PopoverRoot,\n props: {\n id: baseId,\n open: () => context.open(),\n onOpenChange: (open: boolean) => context.setOpen(open),\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function DatePickerTrigger(props: DatePickerTriggerProps): FictNode {\n return {\n type: PopoverTrigger,\n props: {\n ...props,\n 'data-date-picker-trigger': '',\n children: props.children ?? { type: DatePickerValue, props: {} },\n },\n }\n}\n\nexport function DatePickerValue(props: DatePickerValueProps): FictNode {\n const context = useDatePickerContext('DatePickerValue')\n\n return {\n type: 'span',\n props: {\n ...props,\n locale: undefined,\n formatOptions: undefined,\n placeholder: undefined,\n 'data-date-picker-value': '',\n children:\n props.children ??\n (() => {\n const value = context.value()\n if (!value) {\n return props.placeholder ?? ''\n }\n return new Intl.DateTimeFormat(props.locale ?? context.locale(), props.formatOptions ?? { dateStyle: 'medium' }).format(value)\n }),\n },\n }\n}\n\nexport function DatePickerContent(props: DatePickerContentProps): FictNode {\n const context = useDatePickerContext('DatePickerContent')\n\n return {\n type: PopoverContent,\n props: {\n ...props,\n closeOnSelect: undefined,\n id: props.id ?? `${context.baseId}-content`,\n role: props.role ?? 'dialog',\n 'data-date-picker-content': '',\n children:\n props.children ??\n ({\n type: DatePickerCalendar,\n props: {\n closeOnSelect: props.closeOnSelect,\n },\n } as FictNode),\n },\n }\n}\n\nexport function DatePickerCalendar(props: DatePickerCalendarProps): FictNode {\n const context = useDatePickerContext('DatePickerCalendar')\n\n return {\n type: CalendarRoot,\n props: {\n ...props,\n closeOnSelect: undefined,\n locale: props.locale ?? context.locale,\n value: () => context.value(),\n onValueChange: (value: Date | null) => {\n props.onValueChange?.(value)\n context.setValue(value)\n if ((props.closeOnSelect ?? true) && value) {\n context.setOpen(false)\n }\n },\n 'data-date-picker-calendar': '',\n children: props.children,\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { createRef } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { useId } from '../../internal/ids'\nimport { composeRefs } from '../../internal/ref'\nimport { Primitive } from '../core/primitive'\nimport { Portal } from '../core/portal'\nimport { DismissableLayer } from '../interaction/dismissable-layer'\nimport { PopperAnchor, PopperContent, PopperRoot, type PopperContentProps } from '../interaction/popper'\n\nexport interface PopoverRootProps {\n id?: string\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: FictNode\n}\n\nexport interface PopoverTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n onClick?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\nexport interface PopoverContentPropsExt extends PopperContentProps {\n forceMount?: boolean\n portal?: boolean\n onDismiss?: () => void\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n onInteractOutside?: (event: PointerEvent | FocusEvent) => void\n onPointerDownOutside?: (event: PointerEvent) => void\n onFocusOutside?: (event: FocusEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface PopoverCloseProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n onClick?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\ninterface PopoverContextValue {\n open: () => boolean\n setOpen: (open: boolean) => void\n contentId: string\n triggerRef: { current: HTMLElement | null }\n}\n\ntype ElementRefProp = ((node: HTMLElement | null) => void) | { current: HTMLElement | null } | undefined\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null)\n\nfunction usePopoverContext(component: string): PopoverContextValue {\n const context = useContext(PopoverContext)\n if (!context) {\n throw new Error(`${component} must be used inside PopoverRoot`)\n }\n return context\n}\n\nexport function PopoverRoot(props: PopoverRootProps): FictNode {\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n const baseId = useId(props.id, 'popover')\n\n const context: PopoverContextValue = {\n open: () => openState.get(),\n setOpen: value => openState.set(value),\n contentId: `${baseId}-content`,\n triggerRef: createRef<HTMLElement>(),\n }\n\n return {\n type: PopoverContext.Provider,\n props: {\n value: context,\n children: {\n type: PopperRoot,\n props: {\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function PopoverTrigger(props: PopoverTriggerProps): FictNode {\n const context = usePopoverContext('PopoverTrigger')\n const tag = props.as ?? 'button'\n const refProp = props.ref as ElementRefProp\n\n return {\n type: PopperAnchor,\n props: {\n children: Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n ref: composeRefs(context.triggerRef, refProp),\n 'aria-haspopup': (props['aria-haspopup'] as string | undefined) ?? 'dialog',\n 'aria-expanded': () => context.open(),\n 'aria-controls': context.contentId,\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n onClick: (event: MouseEvent) => {\n props.onClick?.(event)\n if (event.defaultPrevented) return\n context.setOpen(!context.open())\n },\n children: props.children,\n }),\n },\n }\n}\n\nfunction buildPopoverContent(context: PopoverContextValue, props: PopoverContentPropsExt): FictNode {\n return {\n type: DismissableLayer,\n props: {\n onEscapeKeyDown: props.onEscapeKeyDown,\n onInteractOutside: props.onInteractOutside,\n onPointerDownOutside: props.onPointerDownOutside,\n onFocusOutside: props.onFocusOutside,\n onDismiss: () => {\n props.onDismiss?.()\n context.setOpen(false)\n },\n children: {\n type: PopperContent,\n props: {\n ...props,\n portal: undefined,\n forceMount: undefined,\n onDismiss: undefined,\n onEscapeKeyDown: undefined,\n onInteractOutside: undefined,\n onPointerDownOutside: undefined,\n onFocusOutside: undefined,\n id: props.id ?? context.contentId,\n role: props.role ?? 'dialog',\n 'data-popover-content': '',\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n children: props.children,\n },\n },\n },\n }\n}\n\nexport function PopoverContent(props: PopoverContentPropsExt): FictNode {\n const context = usePopoverContext('PopoverContent')\n const content = buildPopoverContent(context, props)\n\n const child = () => ((context.open() || props.forceMount) ? content : null)\n\n if (props.portal ?? true) {\n return {\n type: Portal,\n props: {\n children: child,\n },\n }\n }\n\n return {\n type: 'div',\n props: {\n 'data-popover-inline-container': '',\n children: child,\n },\n }\n}\n\nexport function PopoverClose(props: PopoverCloseProps): FictNode {\n const context = usePopoverContext('PopoverClose')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? ((props.type as string | undefined) ?? 'button') : props.type,\n onClick: (event: MouseEvent) => {\n props.onClick?.(event)\n if (event.defaultPrevented) return\n context.setOpen(false)\n },\n children: props.children,\n })\n}\n","import { onDestroy, onMount, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useEventListener } from '@fictjs/hooks'\n\nimport { read } from '../../internal/accessor'\nimport type { MaybeAccessor } from '../../internal/types'\n\nexport type DismissableLayerOutsideEvent = PointerEvent | FocusEvent\n\nexport interface DismissableLayerProps {\n disabled?: MaybeAccessor<boolean>\n onDismiss?: () => void\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n onInteractOutside?: (event: DismissableLayerOutsideEvent) => void\n onPointerDownOutside?: (event: PointerEvent) => void\n onFocusOutside?: (event: FocusEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nconst activeLayers: HTMLElement[] = []\n\nfunction isTopLayer(node: HTMLElement | null): boolean {\n if (!node) return false\n return activeLayers[activeLayers.length - 1] === node\n}\n\nexport function DismissableLayer(props: DismissableLayerProps): FictNode {\n const node = createSignal<HTMLElement | null>(null)\n\n const dismiss = () => {\n if (read(props.disabled, false)) return\n props.onDismiss?.()\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!isTopLayer(node())) return\n if (event.key !== 'Escape') return\n\n props.onEscapeKeyDown?.(event)\n if (!event.defaultPrevented) {\n dismiss()\n }\n }\n\n const onPointerDown = (event: PointerEvent) => {\n const layer = node()\n if (!layer || !isTopLayer(layer)) return\n\n const target = event.target as Node | null\n const isOutside = !target || !layer.contains(target)\n if (!isOutside) return\n\n props.onInteractOutside?.(event)\n props.onPointerDownOutside?.(event)\n if (!event.defaultPrevented) {\n dismiss()\n }\n }\n\n const onFocusIn = (event: FocusEvent) => {\n const layer = node()\n if (!layer || !isTopLayer(layer)) return\n\n const target = event.target as Node | null\n const isOutside = !target || !layer.contains(target)\n if (!isOutside) return\n\n props.onInteractOutside?.(event)\n props.onFocusOutside?.(event)\n if (!event.defaultPrevented) {\n dismiss()\n }\n }\n\n const targetDocument = () => node()?.ownerDocument ?? (typeof document !== 'undefined' ? document : null)\n\n const keydownListener = useEventListener<KeyboardEvent>(targetDocument, 'keydown', onKeyDown, {\n capture: true,\n immediate: false,\n })\n const pointerDownListener = useEventListener<PointerEvent>(targetDocument, 'pointerdown', onPointerDown, {\n capture: true,\n immediate: false,\n })\n const focusInListener = useEventListener<FocusEvent>(targetDocument, 'focusin', onFocusIn, {\n capture: true,\n immediate: false,\n })\n\n onMount(() => {\n const layer = node()\n if (!layer) return\n activeLayers.push(layer)\n keydownListener.start()\n pointerDownListener.start()\n focusInListener.start()\n })\n\n onDestroy(() => {\n keydownListener.stop()\n pointerDownListener.stop()\n focusInListener.stop()\n\n const layer = node()\n if (!layer) return\n const index = activeLayers.indexOf(layer)\n if (index >= 0) {\n activeLayers.splice(index, 1)\n }\n })\n\n return {\n type: 'div',\n props: {\n ...props,\n disabled: undefined,\n onDismiss: undefined,\n onEscapeKeyDown: undefined,\n onInteractOutside: undefined,\n onPointerDownOutside: undefined,\n onFocusOutside: undefined,\n ref: (el: HTMLElement | null) => {\n node(el)\n },\n 'data-dismissable-layer': '',\n children: props.children,\n },\n }\n}\n","import { createContext, createEffect, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useEventListener } from '@fictjs/hooks'\n\nimport { useId } from '../../internal/ids'\n\nexport type PopperPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n\nexport interface PopperRootProps {\n children?: FictNode\n}\n\nexport interface PopperAnchorProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface PopperContentProps {\n side?: 'top' | 'right' | 'bottom' | 'left'\n align?: 'start' | 'center' | 'end'\n sideOffset?: number\n alignOffset?: number\n strategy?: 'absolute' | 'fixed'\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface PopperArrowProps {\n size?: number\n [key: string]: unknown\n}\n\ninterface PopperContextValue {\n anchor: () => HTMLElement | null\n setAnchor: (node: HTMLElement | null) => void\n content: () => HTMLElement | null\n setContent: (node: HTMLElement | null) => void\n placement: () => PopperPlacement\n setPlacement: (placement: PopperPlacement) => void\n}\n\nconst PopperContext = createContext<PopperContextValue | null>(null)\n\nfunction computePosition(\n anchorRect: DOMRect,\n contentRect: DOMRect,\n side: 'top' | 'right' | 'bottom' | 'left',\n align: 'start' | 'center' | 'end',\n sideOffset: number,\n alignOffset: number,\n): { x: number; y: number; placement: PopperPlacement } {\n let x: number\n let y: number\n\n if (side === 'bottom') {\n y = anchorRect.bottom + sideOffset\n } else if (side === 'top') {\n y = anchorRect.top - contentRect.height - sideOffset\n } else {\n y = anchorRect.top\n }\n\n if (side === 'right') {\n x = anchorRect.right + sideOffset\n } else if (side === 'left') {\n x = anchorRect.left - contentRect.width - sideOffset\n } else {\n x = anchorRect.left\n }\n\n if (side === 'top' || side === 'bottom') {\n if (align === 'center') {\n x = anchorRect.left + (anchorRect.width - contentRect.width) / 2\n } else if (align === 'end') {\n x = anchorRect.right - contentRect.width\n }\n x += alignOffset\n } else {\n if (align === 'center') {\n y = anchorRect.top + (anchorRect.height - contentRect.height) / 2\n } else if (align === 'end') {\n y = anchorRect.bottom - contentRect.height\n }\n y += alignOffset\n }\n\n const placement =\n align === 'center' ? (side as PopperPlacement) : (`${side}-${align}` as PopperPlacement)\n\n return { x, y, placement }\n}\n\nexport function PopperRoot(props: PopperRootProps): FictNode {\n const anchorNode = createSignal<HTMLElement | null>(null)\n const contentNode = createSignal<HTMLElement | null>(null)\n const currentPlacement = createSignal<PopperPlacement>('bottom')\n\n const context: PopperContextValue = {\n anchor: () => anchorNode(),\n setAnchor: node => {\n anchorNode(node)\n },\n content: () => contentNode(),\n setContent: node => {\n contentNode(node)\n },\n placement: () => currentPlacement(),\n setPlacement: placement => {\n currentPlacement(placement)\n },\n }\n\n return {\n type: PopperContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function PopperAnchor(props: PopperAnchorProps): FictNode {\n const context = useContext(PopperContext)\n if (!context) {\n throw new Error('PopperAnchor must be used inside PopperRoot')\n }\n\n return {\n type: 'div',\n props: {\n ...props,\n ref: (node: HTMLElement | null) => {\n context.setAnchor(node)\n if (typeof props.ref === 'function') {\n props.ref(node)\n }\n },\n 'data-popper-anchor': '',\n children: props.children,\n },\n }\n}\n\nexport function PopperContent(props: PopperContentProps): FictNode {\n const context = useContext(PopperContext)\n if (!context) {\n throw new Error('PopperContent must be used inside PopperRoot')\n }\n\n const side = props.side ?? 'bottom'\n const align = props.align ?? 'center'\n const sideOffset = props.sideOffset ?? 8\n const alignOffset = props.alignOffset ?? 0\n const strategy = props.strategy ?? 'absolute'\n const contentId = useId(props.id as string | undefined, 'popper-content')\n\n const update = () => {\n const anchor = context.anchor()\n const content = context.content()\n if (!anchor || !content) return\n\n const anchorRect = anchor.getBoundingClientRect()\n const contentRect = content.getBoundingClientRect()\n const { x, y, placement } = computePosition(\n anchorRect,\n contentRect,\n side,\n align,\n sideOffset,\n alignOffset,\n )\n\n content.style.position = strategy\n content.style.left = `${Math.round(x)}px`\n content.style.top = `${Math.round(y)}px`\n content.dataset.placement = placement\n context.setPlacement(placement)\n }\n\n createEffect(() => {\n context.anchor()\n context.content()\n update()\n })\n\n const onWindowUpdate = () => update()\n const targetDocument = () =>\n context.anchor()?.ownerDocument ?? (typeof document !== 'undefined' ? document : null)\n const targetWindow = () => targetDocument()?.defaultView ?? null\n\n useEventListener(targetWindow, 'resize', onWindowUpdate)\n useEventListener(targetDocument, 'scroll', onWindowUpdate, { capture: true })\n\n return {\n type: 'div',\n props: {\n ...props,\n side: undefined,\n align: undefined,\n sideOffset: undefined,\n alignOffset: undefined,\n strategy: undefined,\n id: contentId,\n ref: (node: HTMLElement | null) => {\n context.setContent(node)\n if (typeof props.ref === 'function') {\n props.ref(node)\n }\n },\n role: props.role ?? 'dialog',\n 'data-popper-content': '',\n 'data-placement': () => context.placement(),\n children: props.children,\n },\n }\n}\n\nexport function PopperArrow(props: PopperArrowProps): FictNode {\n const size = props.size ?? 8\n\n return {\n type: 'span',\n props: {\n ...props,\n size: undefined,\n 'data-popper-arrow': '',\n style: {\n width: `${size}px`,\n height: `${size}px`,\n display: 'inline-block',\n transform: 'rotate(45deg)',\n ...(typeof props.style === 'object' && props.style !== null\n ? (props.style as Record<string, unknown>)\n : {}),\n },\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\n\nexport interface SelectRootProps {\n value?: string | (() => string)\n defaultValue?: string\n onValueChange?: (value: string) => void\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n children?: FictNode\n}\n\nexport interface SelectTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface SelectContentProps {\n forceMount?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface SelectItemProps {\n value: string\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface SelectContextValue {\n value: () => string\n setValue: (value: string) => void\n open: () => boolean\n setOpen: (open: boolean) => void\n disabled: () => boolean\n}\n\nconst SelectContext = createContext<SelectContextValue | null>(null)\n\nfunction useSelectContext(component: string): SelectContextValue {\n const context = useContext(SelectContext)\n if (!context) {\n throw new Error(`${component} must be used inside SelectRoot`)\n }\n return context\n}\n\nexport function SelectRoot(props: SelectRootProps): FictNode {\n const valueState = createControllableState<string>({\n value: props.value,\n defaultValue: props.defaultValue ?? '',\n onChange: props.onValueChange,\n })\n\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n const context: SelectContextValue = {\n value: () => valueState.get(),\n setValue: value => valueState.set(value),\n open: () => openState.get(),\n setOpen: open => openState.set(open),\n disabled: () => props.disabled ?? false,\n }\n\n return {\n type: SelectContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function SelectTrigger(props: SelectTriggerProps): FictNode {\n const context = useSelectContext('SelectTrigger')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n disabled: () => context.disabled(),\n 'aria-haspopup': 'listbox',\n 'aria-expanded': () => context.open(),\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n 'data-select-trigger': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented || context.disabled()) return\n context.setOpen(!context.open())\n },\n children: props.children,\n })\n}\n\nexport function SelectValue(props: Record<string, unknown> & { placeholder?: string }): FictNode {\n const context = useSelectContext('SelectValue')\n\n return {\n type: 'span',\n props: {\n ...props,\n 'data-select-value': '',\n children: () => context.value() || props.placeholder || '',\n },\n }\n}\n\nexport function SelectContent(props: SelectContentProps): FictNode {\n const context = useSelectContext('SelectContent')\n\n return {\n type: 'div',\n props: {\n 'data-select-content-wrapper': '',\n children: () =>\n context.open() || props.forceMount\n ? {\n type: 'div',\n props: {\n ...props,\n forceMount: undefined,\n role: 'listbox',\n 'data-select-content': '',\n children: props.children,\n },\n }\n : null,\n },\n }\n}\n\nexport function SelectItem(props: SelectItemProps): FictNode {\n const context = useSelectContext('SelectItem')\n const selected = () => context.value() === props.value\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? 'button' : props.type,\n role: 'option',\n 'aria-selected': selected,\n 'data-state': () => (selected() ? 'checked' : 'unchecked'),\n 'data-select-item': props.value,\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n context.setValue(props.value)\n context.setOpen(false)\n },\n children: props.children,\n })\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\n\nexport interface ComboboxRootProps {\n value?: string | (() => string)\n defaultValue?: string\n onValueChange?: (value: string) => void\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: FictNode\n}\n\nexport interface ComboboxInputProps {\n placeholder?: string\n [key: string]: unknown\n}\n\nexport interface ComboboxListProps {\n forceMount?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ComboboxItemProps {\n value: string\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface ComboboxContextValue {\n value: () => string\n setValue: (value: string) => void\n open: () => boolean\n setOpen: (open: boolean) => void\n query: () => string\n setQuery: (value: string) => void\n}\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null)\n\nfunction useComboboxContext(component: string): ComboboxContextValue {\n const context = useContext(ComboboxContext)\n if (!context) {\n throw new Error(`${component} must be used inside ComboboxRoot`)\n }\n return context\n}\n\nexport function ComboboxRoot(props: ComboboxRootProps): FictNode {\n const valueState = createControllableState<string>({\n value: props.value,\n defaultValue: props.defaultValue ?? '',\n onChange: props.onValueChange,\n })\n\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n const querySignal = createSignal('')\n\n const context: ComboboxContextValue = {\n value: () => valueState.get(),\n setValue: value => valueState.set(value),\n open: () => openState.get(),\n setOpen: open => openState.set(open),\n query: () => querySignal(),\n setQuery: query => querySignal(query),\n }\n\n return {\n type: ComboboxContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function ComboboxInput(props: ComboboxInputProps): FictNode {\n const context = useComboboxContext('ComboboxInput')\n\n return {\n type: 'input',\n props: {\n ...props,\n type: 'text',\n role: 'combobox',\n 'aria-expanded': () => context.open(),\n 'aria-autocomplete': 'list',\n value: () => context.query() || context.value(),\n 'data-combobox-input': '',\n onFocus: (event: FocusEvent) => {\n ;(props.onFocus as ((event: FocusEvent) => void) | undefined)?.(event)\n context.setOpen(true)\n },\n onInput: (event: Event) => {\n ;(props.onInput as ((event: Event) => void) | undefined)?.(event)\n const target = event.target as HTMLInputElement | null\n if (!target) return\n context.setQuery(target.value)\n context.setOpen(true)\n },\n },\n }\n}\n\nexport function ComboboxList(props: ComboboxListProps): FictNode {\n const context = useComboboxContext('ComboboxList')\n\n return {\n type: 'div',\n props: {\n 'data-combobox-list-wrapper': '',\n children: () =>\n context.open() || props.forceMount\n ? {\n type: 'div',\n props: {\n ...props,\n forceMount: undefined,\n role: 'listbox',\n 'data-combobox-list': '',\n children: props.children,\n },\n }\n : null,\n },\n }\n}\n\nexport function ComboboxItem(props: ComboboxItemProps): FictNode {\n const context = useComboboxContext('ComboboxItem')\n const tag = props.as ?? 'button'\n\n const matches = () => {\n const query = context.query().trim().toLowerCase()\n if (!query) return true\n\n const text =\n typeof props.children === 'string'\n ? props.children\n : Array.isArray(props.children)\n ? props.children.join(' ')\n : props.value\n\n return String(text).toLowerCase().includes(query)\n }\n\n return {\n type: 'div',\n props: {\n 'data-combobox-item-wrapper': props.value,\n children: () =>\n matches()\n ? Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? 'button' : props.type,\n role: 'option',\n 'data-combobox-item': props.value,\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n context.setValue(props.value)\n context.setQuery(props.value)\n context.setOpen(false)\n },\n children: props.children,\n })\n : null,\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { useId } from '../../internal/ids'\nimport { Label } from './label'\n\nexport interface FormProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface FormFieldProps {\n id?: string\n name?: string\n children?: FictNode\n}\n\nexport interface FormControlProps {\n as?: string\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface FormDescriptionProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface FormMessageProps {\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n messageId: string\n}\n\nconst FieldContext = createContext<FieldContextValue | null>(null)\n\nfunction useFieldContext(component: string): FieldContextValue {\n const context = useContext(FieldContext)\n if (!context) {\n throw new Error(`${component} must be used inside FormField`)\n }\n return context\n}\n\nexport function Form(props: FormProps): FictNode {\n return {\n type: 'form',\n props: {\n ...props,\n 'data-form': '',\n children: props.children,\n },\n }\n}\n\nexport function FormField(props: FormFieldProps): FictNode {\n const fieldId = useId(props.id ?? (props.name ? `field-${props.name}` : undefined), 'field')\n\n const context: FieldContextValue = {\n controlId: fieldId,\n descriptionId: `${fieldId}-description`,\n messageId: `${fieldId}-message`,\n }\n\n return {\n type: FieldContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function FormLabel(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n const field = useFieldContext('FormLabel')\n\n return {\n type: Label,\n props: {\n ...props,\n htmlFor: props.htmlFor ?? field.controlId,\n 'data-form-label': '',\n children: props.children,\n },\n }\n}\n\nexport function FormControl(props: FormControlProps): FictNode {\n const field = useFieldContext('FormControl')\n const tag = props.as ?? 'input'\n\n return {\n type: tag,\n props: {\n ...props,\n as: undefined,\n id: props.id ?? field.controlId,\n 'aria-describedby': `${field.descriptionId} ${field.messageId}`,\n 'data-form-control': '',\n children: props.children,\n },\n }\n}\n\nexport function FormDescription(props: FormDescriptionProps): FictNode {\n const field = useFieldContext('FormDescription')\n\n return {\n type: 'p',\n props: {\n ...props,\n id: props.id ?? field.descriptionId,\n 'data-form-description': '',\n children: props.children,\n },\n }\n}\n\nexport function FormMessage(props: FormMessageProps): FictNode {\n const field = useFieldContext('FormMessage')\n\n return {\n type: 'p',\n props: {\n ...props,\n id: props.id ?? field.messageId,\n role: props.role ?? 'alert',\n 'data-form-message': '',\n children: props.children,\n },\n }\n}\n","import { onDestroy, onMount, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useEventListener } from '@fictjs/hooks'\n\nimport { read } from '../../internal/accessor'\nimport { focusFirst, getFocusableCandidates } from '../../internal/dom'\nimport type { MaybeAccessor } from '../../internal/types'\n\nexport interface FocusScopeProps {\n trapped?: MaybeAccessor<boolean>\n loop?: MaybeAccessor<boolean>\n autoFocus?: MaybeAccessor<boolean>\n restoreFocus?: MaybeAccessor<boolean>\n onMountAutoFocus?: (event: Event) => void\n onUnmountAutoFocus?: (event: Event) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function FocusScope(props: FocusScopeProps): FictNode {\n const node = createSignal<HTMLElement | null>(null)\n let previousFocused: Element | null = null\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Tab') return\n const scope = node()\n if (!scope) return\n\n const trapped = read(props.trapped, true)\n if (!trapped) return\n\n const candidates = getFocusableCandidates(scope)\n if (candidates.length === 0) {\n event.preventDefault()\n return\n }\n\n const first = candidates[0]!\n const last = candidates[candidates.length - 1]!\n const active = (scope.ownerDocument ?? document).activeElement\n\n if (event.shiftKey) {\n if (active === first || !scope.contains(active)) {\n if (read(props.loop, true)) {\n event.preventDefault()\n last.focus()\n }\n }\n return\n }\n\n if (active === last) {\n if (read(props.loop, true)) {\n event.preventDefault()\n first.focus()\n }\n }\n }\n\n const targetDocument = () => node()?.ownerDocument ?? (typeof document !== 'undefined' ? document : null)\n useEventListener<KeyboardEvent>(targetDocument, 'keydown', onKeyDown, { capture: true })\n\n onMount(() => {\n const scope = node()\n if (!scope) return\n const doc = targetDocument()\n if (!doc) return\n previousFocused = doc.activeElement\n\n if (read(props.autoFocus, true)) {\n const mountEvent = new CustomEvent('fict-focus-scope.mount')\n props.onMountAutoFocus?.(mountEvent)\n if (!mountEvent.defaultPrevented) {\n focusFirst(scope)\n }\n }\n })\n\n onDestroy(() => {\n if (read(props.restoreFocus, true) && previousFocused instanceof HTMLElement) {\n const unmountEvent = new CustomEvent('fict-focus-scope.unmount')\n props.onUnmountAutoFocus?.(unmountEvent)\n if (!unmountEvent.defaultPrevented) {\n previousFocused.focus()\n }\n }\n })\n\n return {\n type: 'div',\n props: {\n ...props,\n trapped: undefined,\n loop: undefined,\n autoFocus: undefined,\n restoreFocus: undefined,\n onMountAutoFocus: undefined,\n onUnmountAutoFocus: undefined,\n ref: (el: HTMLElement | null) => {\n node(el)\n },\n 'data-focus-scope': '',\n children: props.children,\n },\n }\n}\n\nexport function FocusTrap(props: Omit<FocusScopeProps, 'trapped'>): FictNode {\n return {\n type: FocusScope,\n props: {\n ...props,\n trapped: true,\n },\n }\n}\n","export function getDocument(node?: Node | null): Document | null {\n if (node && 'ownerDocument' in node && node.ownerDocument) {\n return node.ownerDocument\n }\n if (typeof document !== 'undefined') {\n return document\n }\n return null\n}\n\nexport function getFocusableCandidates(container: HTMLElement): HTMLElement[] {\n const selectors = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n ]\n\n return Array.from(container.querySelectorAll<HTMLElement>(selectors.join(','))).filter(element => {\n if (element.hasAttribute('disabled')) return false\n if (element.getAttribute('aria-hidden') === 'true') return false\n if (element.tabIndex < 0) return false\n const style = window.getComputedStyle(element)\n return style.display !== 'none' && style.visibility !== 'hidden'\n })\n}\n\nexport function focusFirst(container: HTMLElement): void {\n const [first] = getFocusableCandidates(container)\n first?.focus()\n}\n\nexport function focusLast(container: HTMLElement): void {\n const candidates = getFocusableCandidates(container)\n candidates[candidates.length - 1]?.focus()\n}\n","import { createEffect, onDestroy, type FictNode } from '@fictjs/runtime'\n\nimport { read } from '../../internal/accessor'\nimport type { MaybeAccessor } from '../../internal/types'\n\nexport interface ScrollLockProps {\n enabled?: MaybeAccessor<boolean>\n}\n\nlet lockCount = 0\nlet previousOverflow = ''\nlet previousPaddingRight = ''\n\nfunction lockBodyScroll(): void {\n if (typeof document === 'undefined') return\n\n if (lockCount === 0) {\n const body = document.body\n previousOverflow = body.style.overflow\n previousPaddingRight = body.style.paddingRight\n\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n body.style.overflow = 'hidden'\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n lockCount += 1\n}\n\nfunction unlockBodyScroll(): void {\n if (typeof document === 'undefined') return\n if (lockCount === 0) return\n\n lockCount -= 1\n\n if (lockCount === 0) {\n const body = document.body\n body.style.overflow = previousOverflow\n body.style.paddingRight = previousPaddingRight\n }\n}\n\nexport function ScrollLock(props: ScrollLockProps): FictNode {\n let locked = false\n\n createEffect(() => {\n const enabled = read(props.enabled, true)\n\n if (enabled && !locked) {\n lockBodyScroll()\n locked = true\n return\n }\n\n if (!enabled && locked) {\n unlockBodyScroll()\n locked = false\n }\n })\n\n onDestroy(() => {\n if (locked) {\n unlockBodyScroll()\n locked = false\n }\n })\n\n return null\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { VisuallyHidden } from '../core/visually-hidden'\n\nexport type AnnouncePoliteness = 'polite' | 'assertive'\n\nexport interface AnnounceOptions {\n politeness?: AnnouncePoliteness\n}\n\nexport interface LiveRegionProviderProps {\n children?: FictNode\n}\n\nexport interface AnnounceProps extends AnnounceOptions {\n message?: string | null\n}\n\ninterface AnnouncerContextValue {\n announce: (message: string, options?: AnnounceOptions) => void\n}\n\nconst LiveRegionContext = createContext<AnnouncerContextValue | null>(null)\n\nexport function LiveRegionProvider(props: LiveRegionProviderProps): FictNode {\n let politeNode: HTMLElement | null = null\n let assertiveNode: HTMLElement | null = null\n let pendingPolite: string | null = null\n let pendingAssertive: string | null = null\n\n const writeRegion = (node: HTMLElement | null, message: string) => {\n if (!node) return\n node.textContent = ''\n queueMicrotask(() => {\n if (node) {\n node.textContent = message\n }\n })\n }\n\n const announce = (message: string, options?: AnnounceOptions) => {\n const politeness = options?.politeness ?? 'polite'\n if (politeness === 'assertive') {\n if (assertiveNode) {\n writeRegion(assertiveNode, message)\n } else {\n pendingAssertive = message\n }\n return\n }\n\n if (politeNode) {\n writeRegion(politeNode, message)\n } else {\n pendingPolite = message\n }\n }\n\n return {\n type: LiveRegionContext.Provider,\n props: {\n value: { announce },\n children: [\n props.children,\n {\n type: VisuallyHidden,\n props: {\n 'aria-live': 'polite',\n 'aria-atomic': 'true',\n 'data-live-region': 'polite',\n ref: (node: HTMLElement | null) => {\n politeNode = node\n if (node && pendingPolite) {\n writeRegion(node, pendingPolite)\n pendingPolite = null\n }\n },\n children: '',\n },\n },\n {\n type: VisuallyHidden,\n props: {\n 'aria-live': 'assertive',\n 'aria-atomic': 'true',\n 'data-live-region': 'assertive',\n ref: (node: HTMLElement | null) => {\n assertiveNode = node\n if (node && pendingAssertive) {\n writeRegion(node, pendingAssertive)\n pendingAssertive = null\n }\n },\n children: '',\n },\n },\n ],\n },\n } as unknown as FictNode\n}\n\nexport function useAnnouncer(): AnnouncerContextValue['announce'] {\n const context = useContext(LiveRegionContext)\n if (!context) {\n throw new Error('useAnnouncer must be used inside LiveRegionProvider')\n }\n return context.announce\n}\n\nexport function Announce(props: AnnounceProps): FictNode {\n const announce = useAnnouncer()\n\n if (props.message) {\n announce(props.message, { politeness: props.politeness })\n }\n\n return null\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nexport interface ScrollAreaProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ScrollAreaViewportProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ScrollAreaScrollbarProps {\n orientation?: 'vertical' | 'horizontal'\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ScrollAreaThumbProps {\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface ScrollAreaContextValue {\n viewportRef: { current: HTMLElement | null }\n}\n\nconst ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nfunction useScrollAreaContext(component: string): ScrollAreaContextValue {\n const context = useContext(ScrollAreaContext)\n if (!context) {\n throw new Error(`${component} must be used inside ScrollArea`)\n }\n return context\n}\n\nexport function ScrollArea(props: ScrollAreaProps): FictNode {\n const context: ScrollAreaContextValue = {\n viewportRef: { current: null },\n }\n\n return {\n type: ScrollAreaContext.Provider,\n props: {\n value: context,\n children: {\n type: 'div',\n props: {\n ...props,\n 'data-scroll-area': '',\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function ScrollAreaViewport(props: ScrollAreaViewportProps): FictNode {\n const context = useScrollAreaContext('ScrollAreaViewport')\n\n return {\n type: 'div',\n props: {\n ...props,\n ref: (node: HTMLElement | null) => {\n context.viewportRef.current = node\n },\n style: {\n overflow: 'auto',\n ...(typeof props.style === 'object' && props.style !== null\n ? (props.style as Record<string, unknown>)\n : {}),\n },\n 'data-scroll-area-viewport': '',\n children: props.children,\n },\n }\n}\n\nexport function ScrollAreaScrollbar(props: ScrollAreaScrollbarProps): FictNode {\n const orientation = props.orientation ?? 'vertical'\n\n return {\n type: 'div',\n props: {\n ...props,\n orientation: undefined,\n 'data-orientation': orientation,\n 'data-scroll-area-scrollbar': '',\n children: props.children,\n },\n }\n}\n\nexport function ScrollAreaThumb(props: ScrollAreaThumbProps): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n 'data-scroll-area-thumb': '',\n children: props.children,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useEventListener } from '@fictjs/hooks'\n\nexport interface ResizablePanelGroupProps {\n direction?: 'horizontal' | 'vertical'\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ResizablePanelProps {\n defaultSize?: number\n minSize?: number\n maxSize?: number\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ResizableHandleProps {\n withHandle?: boolean\n [key: string]: unknown\n}\n\ninterface ResizeDragState {\n direction: 'horizontal' | 'vertical'\n startPos: number\n prevStart: number\n nextStart: number\n groupSize: number\n minPrev: number\n minNext: number\n maxPrev: number\n maxNext: number\n prev: HTMLElement\n next: HTMLElement\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value))\n}\n\nexport function ResizablePanelGroup(props: ResizablePanelGroupProps): FictNode {\n const direction = props.direction ?? 'horizontal'\n\n return {\n type: 'div',\n props: {\n ...props,\n direction: undefined,\n 'data-resizable-panel-group': '',\n 'data-direction': direction,\n style: {\n display: 'flex',\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\n ...(typeof props.style === 'object' && props.style !== null\n ? (props.style as Record<string, unknown>)\n : {}),\n },\n children: props.children,\n },\n }\n}\n\nexport function ResizablePanel(props: ResizablePanelProps): FictNode {\n const defaultSize = props.defaultSize ?? 50\n\n return {\n type: 'div',\n props: {\n ...props,\n defaultSize: undefined,\n minSize: undefined,\n maxSize: undefined,\n 'data-resizable-panel': '',\n style: {\n flexBasis: `${defaultSize}%`,\n flexGrow: 0,\n flexShrink: 0,\n overflow: 'auto',\n ...(typeof props.style === 'object' && props.style !== null\n ? (props.style as Record<string, unknown>)\n : {}),\n },\n children: props.children,\n },\n }\n}\n\nexport function ResizableHandle(props: ResizableHandleProps): FictNode {\n let node: HTMLElement | null = null\n const dragState = createSignal<ResizeDragState | null>(null)\n const targetWindow = () => (typeof window !== 'undefined' ? window : null)\n\n const onMove = (moveEvent: PointerEvent) => {\n const state = dragState()\n if (!state) return\n\n const currentPos = state.direction === 'horizontal' ? moveEvent.clientX : moveEvent.clientY\n const delta = currentPos - state.startPos\n\n const nextPrevPx = state.prevStart + delta\n const nextNextPx = state.nextStart - delta\n\n const nextPrevPercent = clamp((nextPrevPx / state.groupSize) * 100, state.minPrev, state.maxPrev)\n const nextNextPercent = clamp((nextNextPx / state.groupSize) * 100, state.minNext, state.maxNext)\n\n state.prev.style.flexBasis = `${nextPrevPercent}%`\n state.next.style.flexBasis = `${nextNextPercent}%`\n }\n\n const moveListener = useEventListener<PointerEvent>(targetWindow, 'pointermove', onMove, {\n immediate: false,\n })\n const upListener = useEventListener<PointerEvent>(\n targetWindow,\n 'pointerup',\n () => {\n dragState(null)\n moveListener.stop()\n upListener.stop()\n },\n { immediate: false },\n )\n\n const onPointerDown = (event: PointerEvent) => {\n if (!node) return\n\n const group = node.parentElement\n const prev = node.previousElementSibling as HTMLElement | null\n const next = node.nextElementSibling as HTMLElement | null\n\n if (!group || !prev || !next) return\n\n const direction = (group.getAttribute('data-direction') as 'horizontal' | 'vertical') ?? 'horizontal'\n const groupRect = group.getBoundingClientRect()\n\n const prevRect = prev.getBoundingClientRect()\n const nextRect = next.getBoundingClientRect()\n\n const startPos = direction === 'horizontal' ? event.clientX : event.clientY\n const prevStart = direction === 'horizontal' ? prevRect.width : prevRect.height\n const nextStart = direction === 'horizontal' ? nextRect.width : nextRect.height\n const groupSize = direction === 'horizontal' ? groupRect.width : groupRect.height\n\n const minPrev = Number(prev.getAttribute('data-min-size') ?? '5')\n const minNext = Number(next.getAttribute('data-min-size') ?? '5')\n const maxPrev = Number(prev.getAttribute('data-max-size') ?? '95')\n const maxNext = Number(next.getAttribute('data-max-size') ?? '95')\n dragState({\n direction,\n startPos,\n prevStart,\n nextStart,\n groupSize,\n minPrev,\n minNext,\n maxPrev,\n maxNext,\n prev,\n next,\n })\n moveListener.start()\n upListener.start()\n }\n\n return {\n type: 'div',\n props: {\n ...props,\n withHandle: undefined,\n ref: (el: HTMLElement | null) => {\n node = el\n },\n role: 'separator',\n tabIndex: 0,\n 'data-resizable-handle': '',\n onPointerDown,\n children: props.withHandle\n ? {\n type: 'div',\n props: {\n 'data-resizable-handle-grip': '',\n },\n }\n : null,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nexport interface AspectRatioProps {\n ratio?: number\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function AspectRatio(props: AspectRatioProps): FictNode {\n const ratio = props.ratio ?? 1\n const paddingBottom = `${(1 / ratio) * 100}%`\n\n return {\n type: 'div',\n props: {\n ...props,\n ratio: undefined,\n 'data-aspect-ratio': '',\n style: {\n position: 'relative',\n width: '100%',\n paddingBottom,\n ...(typeof props.style === 'object' && props.style !== null\n ? (props.style as Record<string, unknown>)\n : {}),\n },\n children: {\n type: 'div',\n props: {\n style: {\n position: 'absolute',\n inset: 0,\n },\n 'data-aspect-ratio-content': '',\n children: props.children,\n },\n },\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nexport interface ProgressProps {\n value?: number\n max?: number\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface MeterProps {\n value?: number\n min?: number\n max?: number\n low?: number\n high?: number\n optimum?: number\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function Progress(props: ProgressProps): FictNode {\n const max = props.max ?? 100\n const value = Math.min(max, Math.max(0, props.value ?? 0))\n\n return {\n type: 'div',\n props: {\n ...props,\n value: undefined,\n max: undefined,\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'data-progress': '',\n children: {\n type: 'div',\n props: {\n 'data-progress-indicator': '',\n style: {\n width: `${(value / max) * 100}%`,\n },\n },\n },\n },\n }\n}\n\nexport function Meter(props: MeterProps): FictNode {\n const min = props.min ?? 0\n const max = props.max ?? 100\n const value = Math.min(max, Math.max(min, props.value ?? 0))\n\n return {\n type: 'meter',\n props: {\n ...props,\n min,\n max,\n value,\n low: props.low,\n high: props.high,\n optimum: props.optimum,\n 'data-meter': '',\n children: props.children,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nexport interface SkeletonProps {\n loading?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport function Skeleton(props: SkeletonProps): FictNode {\n const loading = props.loading ?? true\n\n return {\n type: 'div',\n props: {\n ...props,\n loading: undefined,\n 'aria-busy': loading ? 'true' : 'false',\n 'data-skeleton': '',\n children: loading\n ? {\n type: 'span',\n props: {\n 'data-skeleton-placeholder': '',\n children: props.children ?? null,\n },\n }\n : props.children,\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useEventListener } from '@fictjs/hooks'\n\nexport interface KeyboardModeProviderProps {\n children?: FictNode\n}\n\nexport interface FocusVisibleProps {\n as?: string\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface KeyboardModeContextValue {\n isKeyboardMode: () => boolean\n}\n\nconst KeyboardModeContext = createContext<KeyboardModeContextValue>({\n isKeyboardMode: () => false,\n})\n\nexport function KeyboardModeProvider(props: KeyboardModeProviderProps): FictNode {\n const keyboardModeSignal = createSignal(false)\n const targetDocument = () => (typeof document !== 'undefined' ? document : null)\n\n useEventListener(targetDocument, 'keydown', () => keyboardModeSignal(true), { capture: true })\n useEventListener(targetDocument, 'pointerdown', () => keyboardModeSignal(false), { capture: true })\n\n const context: KeyboardModeContextValue = {\n isKeyboardMode: () => keyboardModeSignal(),\n }\n\n return {\n type: KeyboardModeContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function useKeyboardMode(): () => boolean {\n const context = useContext(KeyboardModeContext)\n return context.isKeyboardMode\n}\n\nexport function FocusVisible(props: FocusVisibleProps): FictNode {\n const isKeyboardMode = useKeyboardMode()\n const tag = props.as ?? 'div'\n\n return {\n type: tag,\n props: {\n ...props,\n as: undefined,\n 'data-focus-visible': () => (isKeyboardMode() ? 'true' : 'false'),\n children: props.children,\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { createRef } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { useId } from '../../internal/ids'\nimport { composeRefs } from '../../internal/ref'\nimport { Primitive } from '../core/primitive'\nimport { Portal } from '../core/portal'\nimport { DismissableLayer } from '../interaction/dismissable-layer'\nimport { FocusScope } from '../interaction/focus-scope'\nimport { ScrollLock } from '../interaction/scroll-lock'\n\nexport interface DialogRootProps {\n id?: string\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n children?: FictNode\n}\n\nexport interface DialogPortalProps {\n container?: HTMLElement | null | (() => HTMLElement | null)\n forceMount?: boolean\n children?: FictNode\n}\n\nexport interface DialogTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n onClick?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\nexport interface DialogOverlayProps {\n forceMount?: boolean\n children?: FictNode\n onClick?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\nexport interface DialogContentProps {\n forceMount?: boolean\n portal?: boolean\n onDismiss?: () => void\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n onInteractOutside?: (event: PointerEvent | FocusEvent) => void\n onPointerDownOutside?: (event: PointerEvent) => void\n onFocusOutside?: (event: FocusEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface DialogCloseProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n onClick?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\ninterface DialogContextValue {\n open: () => boolean\n setOpen: (open: boolean) => void\n modal: () => boolean\n contentId: string\n titleId: string\n descriptionId: string\n triggerRef: { current: HTMLElement | null }\n contentRef: { current: HTMLElement | null }\n}\n\ntype ElementRefProp = ((node: HTMLElement | null) => void) | { current: HTMLElement | null } | undefined\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nfunction useDialogContext(component: string): DialogContextValue {\n const context = useContext(DialogContext)\n if (!context) {\n throw new Error(`${component} must be used inside DialogRoot`)\n }\n return context\n}\n\nfunction shouldRender(open: boolean, forceMount?: boolean): boolean {\n return open || !!forceMount\n}\n\nexport function DialogRoot(props: DialogRootProps): FictNode {\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n const baseId = useId(props.id, 'dialog')\n\n const context: DialogContextValue = {\n open: () => openState.get(),\n setOpen: value => openState.set(value),\n modal: () => props.modal ?? true,\n contentId: `${baseId}-content`,\n titleId: `${baseId}-title`,\n descriptionId: `${baseId}-description`,\n triggerRef: createRef<HTMLElement>(),\n contentRef: createRef<HTMLElement>(),\n }\n\n return {\n type: DialogContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function DialogPortal(props: DialogPortalProps): FictNode {\n const context = useDialogContext('DialogPortal')\n\n return {\n type: Portal,\n props: {\n container: props.container,\n children: () => (shouldRender(context.open(), props.forceMount) ? props.children ?? null : null),\n },\n }\n}\n\nexport function DialogTrigger(props: DialogTriggerProps): FictNode {\n const context = useDialogContext('DialogTrigger')\n const tag = props.as ?? 'button'\n const refProp = props.ref as ElementRefProp\n\n const onClick = (event: MouseEvent) => {\n props.onClick?.(event)\n if (event.defaultPrevented) return\n context.setOpen(!context.open())\n }\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n ref: composeRefs(context.triggerRef, refProp),\n 'aria-haspopup': 'dialog',\n 'aria-expanded': () => context.open(),\n 'aria-controls': context.contentId,\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n onClick,\n children: props.children,\n })\n}\n\nexport function DialogOverlay(props: DialogOverlayProps): FictNode {\n const context = useDialogContext('DialogOverlay')\n\n const overlayNode = {\n type: 'div',\n props: {\n ...props,\n forceMount: undefined,\n role: 'presentation',\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n 'data-dialog-overlay': '',\n onClick: (event: MouseEvent) => {\n props.onClick?.(event)\n if (event.defaultPrevented) return\n context.setOpen(false)\n },\n children: props.children,\n },\n }\n\n return {\n type: DialogPortal,\n props: {\n forceMount: props.forceMount,\n children: overlayNode,\n },\n }\n}\n\nfunction buildDialogContentNode(context: DialogContextValue, props: DialogContentProps): FictNode {\n const refProp = props.ref as ElementRefProp\n\n return {\n type: DismissableLayer,\n props: {\n onEscapeKeyDown: props.onEscapeKeyDown,\n onInteractOutside: props.onInteractOutside,\n onPointerDownOutside: props.onPointerDownOutside,\n onFocusOutside: props.onFocusOutside,\n onDismiss: () => {\n props.onDismiss?.()\n context.setOpen(false)\n },\n children: {\n type: FocusScope,\n props: {\n trapped: () => context.modal(),\n loop: true,\n autoFocus: true,\n restoreFocus: true,\n children: [\n context.modal() ? { type: ScrollLock, props: { enabled: true } } : null,\n {\n type: 'div',\n props: {\n ...props,\n portal: undefined,\n forceMount: undefined,\n onDismiss: undefined,\n onEscapeKeyDown: undefined,\n onInteractOutside: undefined,\n onPointerDownOutside: undefined,\n onFocusOutside: undefined,\n ref: composeRefs(context.contentRef, refProp),\n id: props.id ?? context.contentId,\n role: props.role ?? 'dialog',\n 'aria-modal': context.modal() ? 'true' : undefined,\n 'aria-labelledby': props['aria-labelledby'] ?? context.titleId,\n 'aria-describedby': props['aria-describedby'] ?? context.descriptionId,\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n 'data-dialog-content': '',\n children: props.children,\n },\n },\n ],\n },\n },\n },\n }\n}\n\nexport function DialogContent(props: DialogContentProps): FictNode {\n const context = useDialogContext('DialogContent')\n const node = buildDialogContentNode(context, props)\n\n if (props.portal ?? true) {\n return {\n type: DialogPortal,\n props: {\n forceMount: props.forceMount,\n children: node,\n },\n }\n }\n\n return {\n type: 'div',\n props: {\n 'data-dialog-inline-container': '',\n children: () => (shouldRender(context.open(), props.forceMount) ? node : null),\n },\n }\n}\n\nexport function DialogClose(props: DialogCloseProps): FictNode {\n const context = useDialogContext('DialogClose')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n onClick: (event: MouseEvent) => {\n props.onClick?.(event)\n if (event.defaultPrevented) return\n context.setOpen(false)\n },\n children: props.children,\n })\n}\n\nexport function DialogTitle(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n const context = useDialogContext('DialogTitle')\n\n return {\n type: 'h2',\n props: {\n ...props,\n id: (props.id as string | undefined) ?? context.titleId,\n 'data-dialog-title': '',\n children: props.children,\n },\n }\n}\n\nexport function DialogDescription(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n const context = useDialogContext('DialogDescription')\n\n return {\n type: 'p',\n props: {\n ...props,\n id: (props.id as string | undefined) ?? context.descriptionId,\n 'data-dialog-description': '',\n children: props.children,\n },\n }\n}\n","import type { FictNode } from '@fictjs/runtime'\n\nimport {\n DialogRoot,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n type DialogRootProps,\n type DialogContentProps,\n} from './dialog'\n\nexport function AlertDialogRoot(props: DialogRootProps): FictNode {\n return {\n type: DialogRoot,\n props: {\n ...props,\n modal: true,\n },\n }\n}\n\nexport const AlertDialogTrigger = DialogTrigger\nexport const AlertDialogPortal = DialogPortal\nexport const AlertDialogOverlay = DialogOverlay\nexport const AlertDialogTitle = DialogTitle\nexport const AlertDialogDescription = DialogDescription\n\nexport function AlertDialogContent(props: DialogContentProps): FictNode {\n return {\n type: DialogContent,\n props: {\n ...props,\n role: props.role ?? 'alertdialog',\n },\n }\n}\n\nexport function AlertDialogAction(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n return {\n type: DialogClose,\n props,\n }\n}\n\nexport function AlertDialogCancel(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n return {\n type: DialogClose,\n props,\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { useDebounceFn } from '@fictjs/hooks'\n\nimport { createControllableState } from '../../internal/state'\nimport { useId } from '../../internal/ids'\nimport { Primitive } from '../core/primitive'\nimport { Portal } from '../core/portal'\nimport { PopperAnchor, PopperContent, PopperRoot, type PopperContentProps } from '../interaction/popper'\n\nexport interface TooltipProviderProps {\n delayDuration?: number\n children?: FictNode\n}\n\nexport interface TooltipRootProps {\n id?: string\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n delayDuration?: number\n children?: FictNode\n}\n\nexport interface TooltipTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n onPointerEnter?: (event: PointerEvent) => void\n onPointerLeave?: (event: PointerEvent) => void\n onMouseEnter?: (event: MouseEvent) => void\n onMouseLeave?: (event: MouseEvent) => void\n onMouseOver?: (event: MouseEvent) => void\n onMouseOut?: (event: MouseEvent) => void\n onFocus?: (event: FocusEvent) => void\n onBlur?: (event: FocusEvent) => void\n [key: string]: unknown\n}\n\nexport interface TooltipContentProps extends PopperContentProps {\n forceMount?: boolean\n portal?: boolean\n children?: FictNode\n onPointerEnter?: (event: PointerEvent) => void\n onPointerLeave?: (event: PointerEvent) => void\n onMouseEnter?: (event: MouseEvent) => void\n onMouseLeave?: (event: MouseEvent) => void\n onMouseOver?: (event: MouseEvent) => void\n onMouseOut?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\ninterface TooltipProviderContextValue {\n delayDuration: number\n}\n\ninterface TooltipRootContextValue {\n open: () => boolean\n setOpen: (value: boolean) => void\n delayDuration: () => number\n contentId: string\n scheduleOpen: () => void\n clearSchedule: () => void\n}\n\ntype TriggerElementRef = ((node: HTMLElement | null) => void) | { current: HTMLElement | null } | undefined\n\nconst TooltipProviderContext = createContext<TooltipProviderContextValue>({\n delayDuration: 700,\n})\n\nconst TooltipRootContext = createContext<TooltipRootContextValue | null>(null)\n\nfunction useTooltipRootContext(component: string): TooltipRootContextValue {\n const context = useContext(TooltipRootContext)\n if (!context) {\n throw new Error(`${component} must be used inside TooltipRoot`)\n }\n return context\n}\n\nexport function TooltipProvider(props: TooltipProviderProps): FictNode {\n return {\n type: TooltipProviderContext.Provider,\n props: {\n value: {\n delayDuration: props.delayDuration ?? 700,\n },\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function TooltipRoot(props: TooltipRootProps): FictNode {\n const provider = useContext(TooltipProviderContext)\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n const baseId = useId(props.id, 'tooltip')\n const openDebounced = useDebounceFn(\n () => {\n openState.set(true)\n },\n props.delayDuration ?? provider.delayDuration,\n )\n\n const clearSchedule = () => openDebounced.cancel()\n const scheduleOpen = () => openDebounced.run()\n\n const context: TooltipRootContextValue = {\n open: () => openState.get(),\n setOpen: value => openState.set(value),\n delayDuration: () => props.delayDuration ?? provider.delayDuration,\n contentId: `${baseId}-content`,\n scheduleOpen,\n clearSchedule,\n }\n\n return {\n type: TooltipRootContext.Provider,\n props: {\n value: context,\n children: {\n type: PopperRoot,\n props: {\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function TooltipTrigger(props: TooltipTriggerProps): FictNode {\n const context = useTooltipRootContext('TooltipTrigger')\n const tag = props.as ?? 'button'\n const refProp = props.ref as TriggerElementRef\n let cleanupListeners: (() => void) | null = null\n\n const open = (event: Event) => {\n context.scheduleOpen()\n if (event instanceof PointerEvent) props.onPointerEnter?.(event)\n if (event instanceof MouseEvent) {\n props.onMouseEnter?.(event)\n props.onMouseOver?.(event)\n }\n }\n\n const close = (event: Event) => {\n context.clearSchedule()\n context.setOpen(false)\n if (event instanceof PointerEvent) props.onPointerLeave?.(event)\n if (event instanceof MouseEvent) {\n props.onMouseLeave?.(event)\n props.onMouseOut?.(event)\n }\n }\n\n const onFocus = (event: FocusEvent) => {\n props.onFocus?.(event)\n context.scheduleOpen()\n }\n\n const onBlur = (event: FocusEvent) => {\n props.onBlur?.(event)\n context.clearSchedule()\n context.setOpen(false)\n }\n\n const registerRef = (node: HTMLElement | null) => {\n cleanupListeners?.()\n cleanupListeners = null\n\n if (typeof refProp === 'function') {\n refProp(node)\n } else if (refProp) {\n refProp.current = node\n }\n\n if (!node) return\n\n node.addEventListener('pointerenter', open)\n node.addEventListener('pointerleave', close)\n node.addEventListener('mouseover', open)\n node.addEventListener('mouseout', close)\n node.addEventListener('focus', onFocus)\n node.addEventListener('blur', onBlur)\n\n cleanupListeners = () => {\n node.removeEventListener('pointerenter', open)\n node.removeEventListener('pointerleave', close)\n node.removeEventListener('mouseover', open)\n node.removeEventListener('mouseout', close)\n node.removeEventListener('focus', onFocus)\n node.removeEventListener('blur', onBlur)\n }\n }\n\n return {\n type: PopperAnchor,\n props: {\n children: Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n ref: registerRef,\n 'aria-describedby': () => (context.open() ? context.contentId : undefined),\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n children: props.children,\n }),\n },\n }\n}\n\nexport function TooltipContent(props: TooltipContentProps): FictNode {\n const context = useTooltipRootContext('TooltipContent')\n\n const contentNode = {\n type: PopperContent,\n props: {\n ...props,\n forceMount: undefined,\n portal: undefined,\n id: props.id ?? context.contentId,\n role: props.role ?? 'tooltip',\n 'data-tooltip-content': '',\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n onPointerEnter: (event: PointerEvent) => {\n props.onPointerEnter?.(event)\n context.clearSchedule()\n },\n onPointerLeave: (event: PointerEvent) => {\n props.onPointerLeave?.(event)\n context.setOpen(false)\n },\n onMouseEnter: (event: MouseEvent) => {\n props.onMouseEnter?.(event)\n context.clearSchedule()\n },\n onMouseLeave: (event: MouseEvent) => {\n props.onMouseLeave?.(event)\n context.setOpen(false)\n },\n onMouseOver: (event: MouseEvent) => {\n props.onMouseOver?.(event)\n context.clearSchedule()\n },\n onMouseOut: (event: MouseEvent) => {\n props.onMouseOut?.(event)\n context.setOpen(false)\n },\n children: props.children,\n },\n }\n\n const child = () => ((context.open() || props.forceMount) ? contentNode : null)\n\n if (props.portal ?? true) {\n return {\n type: Portal,\n props: {\n children: child,\n },\n }\n }\n\n return {\n type: 'div',\n props: {\n 'data-tooltip-inline-container': '',\n children: child,\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { useDebounceFn } from '@fictjs/hooks'\n\nimport { createControllableState } from '../../internal/state'\nimport { useId } from '../../internal/ids'\nimport { Primitive } from '../core/primitive'\nimport { Portal } from '../core/portal'\nimport { PopperAnchor, PopperContent, PopperRoot, type PopperContentProps } from '../interaction/popper'\n\nexport interface HoverCardRootProps {\n id?: string\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n openDelay?: number\n closeDelay?: number\n children?: FictNode\n}\n\nexport interface HoverCardTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n onPointerEnter?: (event: PointerEvent) => void\n onPointerLeave?: (event: PointerEvent) => void\n onMouseEnter?: (event: MouseEvent) => void\n onMouseLeave?: (event: MouseEvent) => void\n onMouseOver?: (event: MouseEvent) => void\n onMouseOut?: (event: MouseEvent) => void\n onFocus?: (event: FocusEvent) => void\n onBlur?: (event: FocusEvent) => void\n [key: string]: unknown\n}\n\nexport interface HoverCardContentProps extends PopperContentProps {\n forceMount?: boolean\n portal?: boolean\n children?: FictNode\n onPointerEnter?: (event: PointerEvent) => void\n onPointerLeave?: (event: PointerEvent) => void\n onMouseEnter?: (event: MouseEvent) => void\n onMouseLeave?: (event: MouseEvent) => void\n onMouseOver?: (event: MouseEvent) => void\n onMouseOut?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\ninterface HoverCardContextValue {\n open: () => boolean\n setOpen: (value: boolean) => void\n contentId: string\n scheduleOpen: () => void\n scheduleClose: () => void\n clearTimers: () => void\n}\n\ntype TriggerElementRef = ((node: HTMLElement | null) => void) | { current: HTMLElement | null } | undefined\n\nconst HoverCardContext = createContext<HoverCardContextValue | null>(null)\n\nfunction useHoverCardContext(component: string): HoverCardContextValue {\n const context = useContext(HoverCardContext)\n if (!context) {\n throw new Error(`${component} must be used inside HoverCardRoot`)\n }\n return context\n}\n\nexport function HoverCardRoot(props: HoverCardRootProps): FictNode {\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n const baseId = useId(props.id, 'hover-card')\n const openDebounced = useDebounceFn(\n () => {\n openState.set(true)\n },\n props.openDelay ?? 200,\n )\n const closeDebounced = useDebounceFn(\n () => {\n openState.set(false)\n },\n props.closeDelay ?? 200,\n )\n\n const clearTimers = () => {\n openDebounced.cancel()\n closeDebounced.cancel()\n }\n\n const scheduleOpen = () => {\n closeDebounced.cancel()\n openDebounced.run()\n }\n\n const scheduleClose = () => {\n openDebounced.cancel()\n closeDebounced.run()\n }\n\n const context: HoverCardContextValue = {\n open: () => openState.get(),\n setOpen: value => openState.set(value),\n contentId: `${baseId}-content`,\n scheduleOpen,\n scheduleClose,\n clearTimers,\n }\n\n return {\n type: HoverCardContext.Provider,\n props: {\n value: context,\n children: {\n type: PopperRoot,\n props: {\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function HoverCardTrigger(props: HoverCardTriggerProps): FictNode {\n const context = useHoverCardContext('HoverCardTrigger')\n const tag = props.as ?? 'button'\n const refProp = props.ref as TriggerElementRef\n let cleanupListeners: (() => void) | null = null\n\n const open = (event: Event) => {\n context.scheduleOpen()\n if (event instanceof PointerEvent) props.onPointerEnter?.(event)\n if (event instanceof MouseEvent) {\n props.onMouseEnter?.(event)\n props.onMouseOver?.(event)\n }\n }\n\n const close = (event: Event) => {\n context.scheduleClose()\n if (event instanceof PointerEvent) props.onPointerLeave?.(event)\n if (event instanceof MouseEvent) {\n props.onMouseLeave?.(event)\n props.onMouseOut?.(event)\n }\n }\n\n const onFocus = (event: FocusEvent) => {\n props.onFocus?.(event)\n context.scheduleOpen()\n }\n\n const onBlur = (event: FocusEvent) => {\n props.onBlur?.(event)\n context.scheduleClose()\n }\n\n const registerRef = (node: HTMLElement | null) => {\n cleanupListeners?.()\n cleanupListeners = null\n\n if (typeof refProp === 'function') {\n refProp(node)\n } else if (refProp) {\n refProp.current = node\n }\n\n if (!node) return\n\n node.addEventListener('pointerenter', open)\n node.addEventListener('pointerleave', close)\n node.addEventListener('mouseover', open)\n node.addEventListener('mouseout', close)\n node.addEventListener('focus', onFocus)\n node.addEventListener('blur', onBlur)\n\n cleanupListeners = () => {\n node.removeEventListener('pointerenter', open)\n node.removeEventListener('pointerleave', close)\n node.removeEventListener('mouseover', open)\n node.removeEventListener('mouseout', close)\n node.removeEventListener('focus', onFocus)\n node.removeEventListener('blur', onBlur)\n }\n }\n\n return {\n type: PopperAnchor,\n props: {\n children: Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n ref: registerRef,\n 'aria-describedby': () => (context.open() ? context.contentId : undefined),\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n children: props.children,\n }),\n },\n }\n}\n\nexport function HoverCardContent(props: HoverCardContentProps): FictNode {\n const context = useHoverCardContext('HoverCardContent')\n\n const contentNode = {\n type: PopperContent,\n props: {\n ...props,\n forceMount: undefined,\n portal: undefined,\n id: props.id ?? context.contentId,\n role: props.role ?? 'dialog',\n 'data-hover-card-content': '',\n 'data-state': () => (context.open() ? 'open' : 'closed'),\n onPointerEnter: (event: PointerEvent) => {\n props.onPointerEnter?.(event)\n context.clearTimers()\n },\n onPointerLeave: (event: PointerEvent) => {\n props.onPointerLeave?.(event)\n context.scheduleClose()\n },\n onMouseEnter: (event: MouseEvent) => {\n props.onMouseEnter?.(event)\n context.clearTimers()\n },\n onMouseLeave: (event: MouseEvent) => {\n props.onMouseLeave?.(event)\n context.scheduleClose()\n },\n onMouseOver: (event: MouseEvent) => {\n props.onMouseOver?.(event)\n context.clearTimers()\n },\n onMouseOut: (event: MouseEvent) => {\n props.onMouseOut?.(event)\n context.scheduleClose()\n },\n children: props.children,\n },\n }\n\n const child = () => ((context.open() || props.forceMount) ? contentNode : null)\n\n if (props.portal ?? true) {\n return {\n type: Portal,\n props: {\n children: child,\n },\n }\n }\n\n return {\n type: 'div',\n props: {\n 'data-hover-card-inline-container': '',\n children: child,\n },\n }\n}\n","import { createContext, onDestroy, onMount, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\n\nimport { useId } from '../../internal/ids'\nimport { createControllableState } from '../../internal/state'\nimport type { MaybeAccessor } from '../../internal/types'\nimport { Primitive } from '../core/primitive'\nimport { Separator } from '../core/separator'\nimport { RovingFocusGroup } from '../interaction/roving-focus'\nimport { DialogClose, DialogContent, DialogRoot, DialogTrigger } from './dialog'\n\ninterface CommandRecord {\n value: string\n text: string\n keywords: string[]\n}\n\nfunction normalizeText(node: FictNode): string {\n if (node === null || node === undefined || node === false) return ''\n if (typeof node === 'string' || typeof node === 'number') return String(node)\n if (Array.isArray(node)) {\n return node.map(item => normalizeText(item as FictNode)).join(' ').trim()\n }\n return ''\n}\n\nfunction matchCommand(query: string, item: CommandRecord): boolean {\n const normalized = query.trim().toLowerCase()\n if (!normalized) return true\n\n const searchable = [item.value, item.text, ...item.keywords]\n .map(value => value.toLowerCase())\n .join(' ')\n\n return searchable.includes(normalized)\n}\n\nexport interface CommandPaletteRootProps {\n id?: string\n open?: MaybeAccessor<boolean>\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n value?: MaybeAccessor<string | undefined>\n defaultValue?: string\n onValueChange?: (value: string) => void\n query?: MaybeAccessor<string | undefined>\n defaultQuery?: string\n onQueryChange?: (query: string) => void\n resetQueryOnClose?: boolean\n children?: FictNode\n}\n\nexport interface CommandPaletteTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CommandPaletteContentProps {\n forceMount?: boolean\n portal?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CommandPaletteInputProps {\n placeholder?: string\n [key: string]: unknown\n}\n\nexport interface CommandPaletteListProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CommandPaletteItemProps {\n value: string\n keywords?: string[]\n keepOpen?: boolean\n as?: string\n asChild?: boolean\n onSelect?: (value: string, event: MouseEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CommandPaletteEmptyProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface CommandPaletteGroupProps {\n heading?: FictNode\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface CommandPaletteContextValue {\n listId: string\n open: () => boolean\n setOpen: (open: boolean) => void\n value: () => string\n setValue: (value: string) => void\n query: () => string\n setQuery: (query: string) => void\n registerItem: (item: CommandRecord) => () => void\n hasMatches: () => boolean\n}\n\nconst CommandPaletteContext = createContext<CommandPaletteContextValue | null>(null)\n\nfunction useCommandPaletteContext(component: string): CommandPaletteContextValue {\n const context = useContext(CommandPaletteContext)\n if (!context) {\n throw new Error(`${component} must be used inside CommandPaletteRoot`)\n }\n return context\n}\n\nexport function CommandPaletteRoot(props: CommandPaletteRootProps): FictNode {\n const baseId = useId(props.id, 'command-palette')\n\n const openState = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n const valueState = createControllableState<string>({\n value: props.value,\n defaultValue: props.defaultValue ?? '',\n onChange: props.onValueChange,\n })\n\n const queryState = createControllableState<string>({\n value: props.query,\n defaultValue: props.defaultQuery ?? '',\n onChange: props.onQueryChange,\n })\n\n const itemsSignal = createSignal<CommandRecord[]>([])\n\n const context: CommandPaletteContextValue = {\n listId: `${baseId}-list`,\n open: () => openState.get(),\n setOpen: open => {\n openState.set(open)\n if (!open && (props.resetQueryOnClose ?? true)) {\n queryState.set('')\n }\n },\n value: () => valueState.get(),\n setValue: value => valueState.set(value),\n query: () => queryState.get(),\n setQuery: query => queryState.set(query),\n registerItem: item => {\n itemsSignal([...itemsSignal(), item])\n return () => {\n itemsSignal(itemsSignal().filter(entry => entry !== item))\n }\n },\n hasMatches: () => {\n const items = itemsSignal()\n if (items.length === 0) return false\n return items.some(item => matchCommand(queryState.get(), item))\n },\n }\n\n return {\n type: CommandPaletteContext.Provider,\n props: {\n value: context,\n children: {\n type: DialogRoot,\n props: {\n id: baseId,\n modal: true,\n open: () => context.open(),\n onOpenChange: (open: boolean) => context.setOpen(open),\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function CommandPaletteTrigger(props: CommandPaletteTriggerProps): FictNode {\n return {\n type: DialogTrigger,\n props: {\n ...props,\n 'data-command-trigger': '',\n children: props.children,\n },\n }\n}\n\nexport function CommandPaletteContent(props: CommandPaletteContentProps): FictNode {\n return {\n type: DialogContent,\n props: {\n ...props,\n role: props.role ?? 'dialog',\n 'data-command-content': '',\n children: props.children,\n },\n }\n}\n\nexport function CommandPaletteInput(props: CommandPaletteInputProps): FictNode {\n const context = useCommandPaletteContext('CommandPaletteInput')\n\n return {\n type: 'input',\n props: {\n ...props,\n type: 'text',\n role: 'combobox',\n 'aria-expanded': () => context.open(),\n 'aria-controls': context.listId,\n value: () => context.query(),\n 'data-command-input': '',\n onFocus: (event: FocusEvent) => {\n ;(props.onFocus as ((event: FocusEvent) => void) | undefined)?.(event)\n if (!event.defaultPrevented) {\n context.setOpen(true)\n }\n },\n onInput: (event: Event) => {\n ;(props.onInput as ((event: Event) => void) | undefined)?.(event)\n const target = event.target as HTMLInputElement | null\n if (!target) return\n context.setQuery(target.value)\n },\n onKeyDown: (event: KeyboardEvent) => {\n ;(props.onKeyDown as ((event: KeyboardEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n if (event.key === 'ArrowDown') {\n const list = document.getElementById(context.listId)\n const firstItem = list?.querySelector('[data-command-item]') as HTMLElement | null\n firstItem?.focus()\n event.preventDefault()\n }\n },\n },\n }\n}\n\nexport function CommandPaletteList(props: CommandPaletteListProps): FictNode {\n const context = useCommandPaletteContext('CommandPaletteList')\n\n return {\n type: 'div',\n props: {\n ...props,\n id: props.id ?? context.listId,\n role: 'listbox',\n 'data-command-list': '',\n children: {\n type: RovingFocusGroup,\n props: {\n orientation: 'vertical',\n loop: true,\n children: props.children,\n },\n },\n },\n }\n}\n\nexport function CommandPaletteItem(props: CommandPaletteItemProps): FictNode {\n const context = useCommandPaletteContext('CommandPaletteItem')\n const tag = props.as ?? 'button'\n const text = normalizeText(props.children) || props.value\n\n let cleanup: (() => void) | null = null\n\n onMount(() => {\n cleanup = context.registerItem({\n value: props.value,\n text,\n keywords: props.keywords ?? [],\n })\n })\n\n onDestroy(() => {\n cleanup?.()\n cleanup = null\n })\n\n const matches = () =>\n matchCommand(context.query(), {\n value: props.value,\n text,\n keywords: props.keywords ?? [],\n })\n\n return {\n type: 'div',\n props: {\n 'data-command-item-wrapper': props.value,\n children: () =>\n matches()\n ? Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n role: props.role ?? 'option',\n 'aria-selected': () => context.value() === props.value,\n 'data-state': () => (context.value() === props.value ? 'selected' : 'idle'),\n 'data-command-item': props.value,\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n props.onSelect?.(props.value, event)\n if (event.defaultPrevented) return\n context.setValue(props.value)\n if (!props.keepOpen) {\n context.setOpen(false)\n }\n },\n children: props.children,\n })\n : null,\n },\n }\n}\n\nexport function CommandPaletteEmpty(props: CommandPaletteEmptyProps): FictNode {\n const context = useCommandPaletteContext('CommandPaletteEmpty')\n\n return {\n type: 'div',\n props: {\n ...props,\n 'data-command-empty': '',\n children: () => (!context.hasMatches() ? props.children ?? 'No results found.' : null),\n },\n }\n}\n\nexport function CommandPaletteGroup(props: CommandPaletteGroupProps): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n heading: undefined,\n role: props.role ?? 'group',\n 'data-command-group': '',\n children: [\n props.heading\n ? {\n type: 'div',\n props: {\n 'data-command-group-heading': '',\n children: props.heading,\n },\n }\n : null,\n props.children,\n ],\n },\n }\n}\n\nexport const CommandPaletteSeparator = Separator\nexport const CommandPaletteClose = DialogClose\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\nimport { PopoverContent, PopoverRoot, PopoverTrigger, type PopoverContentPropsExt } from '../overlay/popover'\nimport { RovingFocusGroup } from '../interaction/roving-focus'\nimport { Separator } from '../core/separator'\n\nexport interface DropdownMenuRootProps {\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: FictNode\n}\n\nexport interface DropdownMenuTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface DropdownMenuContentProps extends Omit<PopoverContentPropsExt, 'role'> {\n children?: FictNode\n}\n\nexport interface DropdownMenuItemProps {\n as?: string\n asChild?: boolean\n keepOpen?: boolean\n onSelect?: (event: MouseEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface DropdownMenuCheckboxItemProps extends DropdownMenuItemProps {\n checked?: boolean | (() => boolean)\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n}\n\nexport interface DropdownMenuRadioGroupProps {\n value?: string | (() => string)\n defaultValue?: string\n onValueChange?: (value: string) => void\n children?: FictNode\n}\n\nexport interface DropdownMenuRadioItemProps extends DropdownMenuItemProps {\n value: string\n}\n\nexport interface DropdownMenuSubProps {\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: FictNode\n}\n\nexport type DropdownMenuSubTriggerProps = Omit<DropdownMenuItemProps, 'keepOpen'>\n\nexport interface DropdownMenuSubContentProps extends Omit<DropdownMenuContentProps, 'role'> {\n children?: FictNode\n}\n\ninterface DropdownMenuContextValue {\n open: () => boolean\n setOpen: (open: boolean) => void\n}\n\ninterface DropdownRadioContextValue {\n value: () => string\n setValue: (value: string) => void\n}\n\nconst DropdownMenuContext = createContext<DropdownMenuContextValue | null>(null)\nconst DropdownRadioContext = createContext<DropdownRadioContextValue | null>(null)\n\nfunction useDropdownMenuContext(component: string): DropdownMenuContextValue {\n const context = useContext(DropdownMenuContext)\n if (!context) {\n throw new Error(`${component} must be used inside DropdownMenuRoot`)\n }\n return context\n}\n\nexport function DropdownMenuRoot(props: DropdownMenuRootProps): FictNode {\n const state = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n const context: DropdownMenuContextValue = {\n open: () => state.get(),\n setOpen: open => state.set(open),\n }\n\n return {\n type: DropdownMenuContext.Provider,\n props: {\n value: context,\n children: {\n type: PopoverRoot,\n props: {\n open: () => context.open(),\n onOpenChange: (open: boolean) => context.setOpen(open),\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function DropdownMenuTrigger(props: DropdownMenuTriggerProps): FictNode {\n return {\n type: PopoverTrigger,\n props,\n }\n}\n\nexport function DropdownMenuContent(props: DropdownMenuContentProps): FictNode {\n return {\n type: PopoverContent,\n props: {\n ...props,\n role: 'menu',\n 'aria-orientation': 'vertical',\n 'data-dropdown-menu-content': '',\n children: {\n type: RovingFocusGroup,\n props: {\n orientation: 'vertical',\n loop: true,\n children: props.children,\n },\n },\n },\n }\n}\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps): FictNode {\n const context = useDropdownMenuContext('DropdownMenuItem')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n role: props.role ?? 'menuitem',\n 'data-dropdown-menu-item': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n props.onSelect?.(event)\n if (event.defaultPrevented) return\n if (!props.keepOpen) {\n context.setOpen(false)\n }\n },\n children: props.children,\n })\n}\n\nexport function DropdownMenuCheckboxItem(props: DropdownMenuCheckboxItemProps): FictNode {\n const checkedState = createControllableState<boolean>({\n value: props.checked,\n defaultValue: props.defaultChecked ?? false,\n onChange: props.onCheckedChange,\n })\n\n return {\n type: DropdownMenuItem,\n props: {\n ...props,\n keepOpen: props.keepOpen ?? true,\n role: 'menuitemcheckbox',\n 'aria-checked': () => checkedState.get(),\n 'data-checked': () => (checkedState.get() ? 'true' : 'false'),\n onSelect: (event: MouseEvent) => {\n props.onSelect?.(event)\n if (event.defaultPrevented) return\n checkedState.set(!checkedState.get())\n },\n children: props.children,\n },\n }\n}\n\nexport function DropdownMenuRadioGroup(props: DropdownMenuRadioGroupProps): FictNode {\n const valueState = createControllableState<string>({\n value: props.value,\n defaultValue: props.defaultValue ?? '',\n onChange: props.onValueChange,\n })\n\n const context: DropdownRadioContextValue = {\n value: () => valueState.get(),\n setValue: value => valueState.set(value),\n }\n\n return {\n type: DropdownRadioContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function DropdownMenuRadioItem(props: DropdownMenuRadioItemProps): FictNode {\n const radio = useContext(DropdownRadioContext)\n if (!radio) {\n throw new Error('DropdownMenuRadioItem must be used inside DropdownMenuRadioGroup')\n }\n\n return {\n type: DropdownMenuItem,\n props: {\n ...props,\n keepOpen: props.keepOpen ?? true,\n role: 'menuitemradio',\n 'aria-checked': () => radio.value() === props.value,\n 'data-checked': () => (radio.value() === props.value ? 'true' : 'false'),\n onSelect: (event: MouseEvent) => {\n props.onSelect?.(event)\n if (event.defaultPrevented) return\n radio.setValue(props.value)\n },\n children: props.children,\n },\n }\n}\n\nexport function DropdownMenuSub(props: DropdownMenuSubProps): FictNode {\n const state = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n return {\n type: PopoverRoot,\n props: {\n open: () => state.get(),\n onOpenChange: (open: boolean) => state.set(open),\n children: props.children,\n },\n }\n}\n\nexport function DropdownMenuSubTrigger(props: DropdownMenuSubTriggerProps): FictNode {\n return {\n type: PopoverTrigger,\n props: {\n asChild: true,\n 'aria-haspopup': 'menu',\n children: {\n type: DropdownMenuItem,\n props: {\n ...props,\n keepOpen: true,\n 'aria-haspopup': props['aria-haspopup'] ?? 'menu',\n 'aria-expanded': props['aria-expanded'],\n 'data-dropdown-menu-sub-trigger': '',\n children: props.children,\n },\n },\n },\n }\n}\n\nexport function DropdownMenuSubContent(props: DropdownMenuSubContentProps): FictNode {\n return {\n type: PopoverContent,\n props: {\n ...props,\n role: 'menu',\n side: props.side ?? 'right',\n align: props.align ?? 'start',\n 'aria-orientation': 'vertical',\n 'data-dropdown-menu-sub-content': '',\n children: {\n type: RovingFocusGroup,\n props: {\n orientation: 'vertical',\n loop: true,\n children: props.children,\n },\n },\n },\n }\n}\n\nexport function DropdownMenuLabel(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n role: props.role ?? 'presentation',\n 'data-dropdown-menu-label': '',\n children: props.children,\n },\n }\n}\n\nexport const DropdownMenuSeparator = Separator\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useEventListener } from '@fictjs/hooks'\n\nimport { createControllableState } from '../../internal/state'\nimport { Primitive } from '../core/primitive'\nimport { Portal } from '../core/portal'\nimport { DismissableLayer } from '../interaction/dismissable-layer'\nimport { RovingFocusGroup } from '../interaction/roving-focus'\nimport { PopoverContent, PopoverRoot, PopoverTrigger, type PopoverContentPropsExt } from '../overlay/popover'\n\nexport interface ContextMenuRootProps {\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: FictNode\n}\n\nexport interface ContextMenuTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\ntype TriggerRefProp = ((node: HTMLElement | null) => void) | { current: HTMLElement | null } | undefined\n\nexport interface ContextMenuContentProps {\n forceMount?: boolean\n portal?: boolean\n onDismiss?: () => void\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n onInteractOutside?: (event: PointerEvent | FocusEvent) => void\n onPointerDownOutside?: (event: PointerEvent) => void\n onFocusOutside?: (event: FocusEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ContextMenuItemProps {\n as?: string\n asChild?: boolean\n keepOpen?: boolean\n onSelect?: (event: MouseEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ContextMenuSubProps {\n open?: boolean | (() => boolean)\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n children?: FictNode\n}\n\nexport type ContextMenuSubTriggerProps = Omit<ContextMenuItemProps, 'keepOpen'>\n\nexport interface ContextMenuSubContentProps extends Omit<PopoverContentPropsExt, 'role'> {\n children?: FictNode\n}\n\ninterface ContextMenuContextValue {\n open: () => boolean\n setOpen: (open: boolean) => void\n x: () => number\n y: () => number\n setPosition: (x: number, y: number) => void\n}\n\nconst ContextMenuContext = createContext<ContextMenuContextValue | null>(null)\n\nfunction useContextMenuContext(component: string): ContextMenuContextValue {\n const context = useContext(ContextMenuContext)\n if (!context) {\n throw new Error(`${component} must be used inside ContextMenuRoot`)\n }\n return context\n}\n\nexport function ContextMenuRoot(props: ContextMenuRootProps): FictNode {\n const state = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n const position = createSignal({ x: 0, y: 0 })\n\n const context: ContextMenuContextValue = {\n open: () => state.get(),\n setOpen: open => state.set(open),\n x: () => position().x,\n y: () => position().y,\n setPosition: (x, y) => position({ x, y }),\n }\n\n return {\n type: ContextMenuContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function ContextMenuTrigger(props: ContextMenuTriggerProps): FictNode {\n const context = useContextMenuContext('ContextMenuTrigger')\n const tag = props.as ?? 'div'\n const refProp = props.ref as TriggerRefProp\n const triggerNode = createSignal<HTMLElement | null>(null)\n\n const handleContextMenu = (event: MouseEvent) => {\n ;(props.onContextMenu as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n event.preventDefault()\n context.setPosition(event.clientX, event.clientY)\n context.setOpen(true)\n }\n\n const contextMenuListener = useEventListener<MouseEvent>(\n () => triggerNode(),\n 'contextmenu',\n handleContextMenu,\n { immediate: false },\n )\n\n const registerRef = (node: HTMLElement | null) => {\n contextMenuListener.stop()\n\n if (typeof refProp === 'function') {\n refProp(node)\n } else if (refProp) {\n refProp.current = node\n }\n triggerNode(node)\n if (node) {\n contextMenuListener.start()\n }\n }\n\n return Primitive({\n ...props,\n as: tag,\n ref: registerRef,\n onContextMenu: handleContextMenu,\n children: props.children,\n })\n}\n\nexport function ContextMenuContent(props: ContextMenuContentProps): FictNode {\n const context = useContextMenuContext('ContextMenuContent')\n\n const content = {\n type: DismissableLayer,\n props: {\n onEscapeKeyDown: props.onEscapeKeyDown,\n onInteractOutside: props.onInteractOutside,\n onPointerDownOutside: props.onPointerDownOutside,\n onFocusOutside: props.onFocusOutside,\n onDismiss: () => {\n props.onDismiss?.()\n context.setOpen(false)\n },\n children: {\n type: 'div',\n props: {\n ...props,\n forceMount: undefined,\n portal: undefined,\n onDismiss: undefined,\n onEscapeKeyDown: undefined,\n onInteractOutside: undefined,\n onPointerDownOutside: undefined,\n onFocusOutside: undefined,\n role: 'menu',\n 'data-context-menu-content': '',\n style: {\n position: 'fixed',\n left: `${context.x()}px`,\n top: `${context.y()}px`,\n },\n children: {\n type: RovingFocusGroup,\n props: {\n orientation: 'vertical',\n loop: true,\n children: props.children,\n },\n },\n },\n },\n },\n }\n\n const child = () => ((context.open() || props.forceMount) ? content : null)\n\n if (props.portal ?? true) {\n return {\n type: Portal,\n props: {\n children: child,\n },\n }\n }\n\n return {\n type: 'div',\n props: {\n 'data-context-menu-inline-container': '',\n children: child,\n },\n }\n}\n\nexport function ContextMenuItem(props: ContextMenuItemProps): FictNode {\n const context = useContextMenuContext('ContextMenuItem')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n role: props.role ?? 'menuitem',\n 'data-context-menu-item': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n props.onSelect?.(event)\n if (event.defaultPrevented) return\n if (!props.keepOpen) {\n context.setOpen(false)\n }\n },\n children: props.children,\n })\n}\n\nexport function ContextMenuSub(props: ContextMenuSubProps): FictNode {\n const state = createControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n })\n\n return {\n type: PopoverRoot,\n props: {\n open: () => state.get(),\n onOpenChange: (open: boolean) => state.set(open),\n children: props.children,\n },\n }\n}\n\nexport function ContextMenuSubTrigger(props: ContextMenuSubTriggerProps): FictNode {\n return {\n type: PopoverTrigger,\n props: {\n asChild: true,\n 'aria-haspopup': 'menu',\n children: {\n type: ContextMenuItem,\n props: {\n ...props,\n keepOpen: true,\n 'aria-haspopup': props['aria-haspopup'] ?? 'menu',\n 'aria-expanded': props['aria-expanded'],\n 'data-context-menu-sub-trigger': '',\n children: props.children,\n },\n },\n },\n }\n}\n\nexport function ContextMenuSubContent(props: ContextMenuSubContentProps): FictNode {\n return {\n type: PopoverContent,\n props: {\n ...props,\n role: 'menu',\n side: props.side ?? 'right',\n align: props.align ?? 'start',\n 'aria-orientation': 'vertical',\n 'data-context-menu-sub-content': '',\n children: {\n type: RovingFocusGroup,\n props: {\n orientation: 'vertical',\n loop: true,\n children: props.children,\n },\n },\n },\n }\n}\n","import { createContext, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\n\nimport { useId } from '../../internal/ids'\nimport { Primitive } from '../core/primitive'\nimport { RovingFocusGroup } from '../interaction/roving-focus'\n\nexport interface MenubarRootProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface MenubarMenuProps {\n value?: string\n children?: FictNode\n}\n\nexport interface MenubarTriggerProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface MenubarContentProps {\n forceMount?: boolean\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface MenubarItemProps {\n as?: string\n asChild?: boolean\n children?: FictNode\n onSelect?: (event: MouseEvent) => void\n [key: string]: unknown\n}\n\ninterface MenubarRootContextValue {\n activeMenu: () => string | null\n setActiveMenu: (id: string | null) => void\n}\n\ninterface MenubarMenuContextValue {\n id: string\n}\n\nconst MenubarRootContext = createContext<MenubarRootContextValue | null>(null)\nconst MenubarMenuContext = createContext<MenubarMenuContextValue | null>(null)\n\nfunction useMenubarRootContext(component: string): MenubarRootContextValue {\n const context = useContext(MenubarRootContext)\n if (!context) {\n throw new Error(`${component} must be used inside MenubarRoot`)\n }\n return context\n}\n\nfunction useMenubarMenuContext(component: string): MenubarMenuContextValue {\n const context = useContext(MenubarMenuContext)\n if (!context) {\n throw new Error(`${component} must be used inside MenubarMenu`)\n }\n return context\n}\n\nexport function MenubarRoot(props: MenubarRootProps): FictNode {\n const activeMenuSignal = createSignal<string | null>(null)\n\n const context: MenubarRootContextValue = {\n activeMenu: () => activeMenuSignal(),\n setActiveMenu: id => activeMenuSignal(id),\n }\n\n return {\n type: MenubarRootContext.Provider,\n props: {\n value: context,\n children: {\n type: 'div',\n props: {\n ...props,\n role: 'menubar',\n 'data-menubar-root': '',\n children: {\n type: RovingFocusGroup,\n props: {\n orientation: 'horizontal',\n loop: true,\n children: props.children,\n },\n },\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function MenubarMenu(props: MenubarMenuProps): FictNode {\n const id = useId(props.value, 'menubar-menu')\n\n return {\n type: MenubarMenuContext.Provider,\n props: {\n value: { id },\n children: {\n type: 'div',\n props: {\n 'data-menubar-menu': id,\n children: props.children,\n },\n },\n },\n } as unknown as FictNode\n}\n\nexport function MenubarTrigger(props: MenubarTriggerProps): FictNode {\n const root = useMenubarRootContext('MenubarTrigger')\n const menu = useMenubarMenuContext('MenubarTrigger')\n const tag = props.as ?? 'button'\n\n const open = () => root.activeMenu() === menu.id\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n role: 'menuitem',\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n 'data-state': () => (open() ? 'open' : 'closed'),\n 'data-menubar-trigger': menu.id,\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n root.setActiveMenu(open() ? null : menu.id)\n },\n onMouseOver: (event: MouseEvent) => {\n ;(props.onMouseOver as ((event: MouseEvent) => void) | undefined)?.(event)\n if (event.defaultPrevented) return\n root.setActiveMenu(menu.id)\n },\n children: props.children,\n })\n}\n\nexport function MenubarContent(props: MenubarContentProps): FictNode {\n const root = useMenubarRootContext('MenubarContent')\n const menu = useMenubarMenuContext('MenubarContent')\n\n const open = () => root.activeMenu() === menu.id\n\n return {\n type: 'div',\n props: {\n 'data-menubar-content-wrapper': menu.id,\n children: () =>\n open() || props.forceMount\n ? {\n type: 'div',\n props: {\n ...props,\n forceMount: undefined,\n role: 'menu',\n 'data-menubar-content': menu.id,\n children: props.children,\n },\n }\n : null,\n },\n }\n}\n\nexport function MenubarItem(props: MenubarItemProps): FictNode {\n const root = useMenubarRootContext('MenubarItem')\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? (props.type ?? 'button') : props.type,\n role: props.role ?? 'menuitem',\n 'data-menubar-item': '',\n onClick: (event: MouseEvent) => {\n ;(props.onClick as ((event: MouseEvent) => void) | undefined)?.(event)\n props.onSelect?.(event)\n if (!event.defaultPrevented) {\n root.setActiveMenu(null)\n }\n },\n children: props.children,\n })\n}\n","import { createContext, onDestroy, useContext, type FictNode } from '@fictjs/runtime'\nimport { createSignal } from '@fictjs/runtime/advanced'\nimport { useDebounceFn } from '@fictjs/hooks'\n\nimport { createId } from '../../internal/ids'\nimport { Primitive } from '../core/primitive'\nimport { VisuallyHidden } from '../core/visually-hidden'\n\nexport interface ToastProviderProps {\n duration?: number\n children?: FictNode\n}\n\nexport interface ToastViewportProps {\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ToastRootProps {\n id?: string\n title?: string\n description?: string\n duration?: number\n open?: boolean\n onOpenChange?: (open: boolean) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ToastActionProps {\n altText: string\n onClick?: (event: MouseEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\nexport interface ToastCloseProps {\n as?: string\n asChild?: boolean\n onClick?: (event: MouseEvent) => void\n children?: FictNode\n [key: string]: unknown\n}\n\ninterface ToastRecord {\n id: string\n title?: string\n description?: string\n duration?: number\n}\n\ninterface ToastContextValue {\n toasts: () => ToastRecord[]\n show: (toast: Omit<ToastRecord, 'id'> & { id?: string }) => string\n dismiss: (id: string) => void\n duration: () => number\n}\n\ninterface ToastTimerController {\n run: () => void\n cancel: () => void\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\nfunction useToastContext(component: string): ToastContextValue {\n const context = useContext(ToastContext)\n if (!context) {\n throw new Error(`${component} must be used inside ToastProvider`)\n }\n return context\n}\n\nexport function ToastProvider(props: ToastProviderProps): FictNode {\n const toastsSignal = createSignal<ToastRecord[]>([])\n const timers = new Map<string, ToastTimerController>()\n\n const dismiss = (id: string) => {\n toastsSignal(toastsSignal().filter(toast => toast.id !== id))\n const timer = timers.get(id)\n if (timer) {\n timer.cancel()\n timers.delete(id)\n }\n }\n\n const show = (toast: Omit<ToastRecord, 'id'> & { id?: string }): string => {\n const id = toast.id ?? createId('toast')\n const existingTimer = timers.get(id)\n existingTimer?.cancel()\n timers.delete(id)\n const nextToast: ToastRecord = {\n id,\n title: toast.title,\n description: toast.description,\n duration: toast.duration,\n }\n\n toastsSignal([...toastsSignal(), nextToast])\n\n const timer = useDebounceFn(\n () => {\n dismiss(id)\n },\n toast.duration ?? props.duration ?? 5000,\n )\n timer.run()\n timers.set(id, timer)\n\n return id\n }\n\n onDestroy(() => {\n for (const timer of timers.values()) {\n timer.cancel()\n }\n timers.clear()\n })\n\n const context: ToastContextValue = {\n toasts: () => toastsSignal(),\n show,\n dismiss,\n duration: () => props.duration ?? 5000,\n }\n\n return {\n type: ToastContext.Provider,\n props: {\n value: context,\n children: props.children,\n },\n } as unknown as FictNode\n}\n\nexport function useToast() {\n const context = useToastContext('useToast')\n return {\n show: context.show,\n dismiss: context.dismiss,\n toasts: context.toasts,\n }\n}\n\nexport function ToastViewport(props: ToastViewportProps): FictNode {\n const context = useToastContext('ToastViewport')\n\n return {\n type: 'div',\n props: {\n ...props,\n role: 'region',\n 'aria-live': 'polite',\n 'aria-relevant': 'additions text',\n 'data-toast-viewport': '',\n children: [\n props.children,\n {\n type: 'div',\n props: {\n children: () =>\n context.toasts().map(toast => ({\n type: ToastRoot,\n props: {\n id: toast.id,\n title: toast.title,\n description: toast.description,\n duration: toast.duration ?? context.duration(),\n },\n })),\n },\n },\n ],\n },\n }\n}\n\nexport function ToastRoot(props: ToastRootProps): FictNode {\n const context = useContext(ToastContext)\n\n const close = () => {\n if (props.id && context) {\n context.dismiss(props.id)\n }\n props.onOpenChange?.(false)\n }\n\n return {\n type: 'div',\n props: {\n ...props,\n role: props.role ?? 'status',\n 'data-toast-root': '',\n children: [\n props.title ? { type: ToastTitle, props: { children: props.title } } : null,\n props.description ? { type: ToastDescription, props: { children: props.description } } : null,\n props.children,\n {\n type: ToastClose,\n props: {\n onClick: () => close(),\n children: props['data-close-label'] ?? 'Dismiss',\n },\n },\n ],\n },\n }\n}\n\nexport function ToastTitle(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n 'data-toast-title': '',\n children: props.children,\n },\n }\n}\n\nexport function ToastDescription(props: Record<string, unknown> & { children?: FictNode }): FictNode {\n return {\n type: 'div',\n props: {\n ...props,\n 'data-toast-description': '',\n children: props.children,\n },\n }\n}\n\nexport function ToastAction(props: ToastActionProps): FictNode {\n return {\n type: 'button',\n props: {\n ...props,\n type: 'button',\n 'data-toast-action': '',\n 'aria-label': props.altText,\n children: [props.children, { type: VisuallyHidden, props: { children: props.altText } }],\n },\n }\n}\n\nexport function ToastClose(props: ToastCloseProps): FictNode {\n const tag = props.as ?? 'button'\n\n return Primitive({\n ...props,\n as: tag,\n type: !props.asChild && tag === 'button' ? 'button' : props.type,\n 'data-toast-close': '',\n onClick: (event: MouseEvent) => {\n props.onClick?.(event)\n },\n children: props.children ?? 'Close',\n })\n}\n"],"mappings":";AAAO,SAAS,qBACd,UACA,OACA,UAA+C,EAAE,uBAAuB,KAAK,GACzD;AACpB,SAAO,CAAC,UAAa;AACnB,eAAW,KAAK;AAChB,QAAI,CAAC,QAAQ,yBAAyB,CAAC,MAAM,kBAAkB;AAC7D,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACF;;;ACTO,SAAS,UAAa,KAAiB,OAAuB;AACnE,MAAI,CAAC,IAAK;AACV,MAAI,OAAO,QAAQ,YAAY;AAC7B,QAAI,KAAK;AACT;AAAA,EACF;AACA,MAAI,UAAU;AAChB;AAEO,SAAS,eAAkB,MAA8C;AAC9E,SAAO,CAAC,SAAmB;AACzB,eAAW,OAAO,MAAM;AACtB,gBAAU,KAAK,IAAI;AAAA,IACrB;AAAA,EACF;AACF;;;ACbA,SAAS,WAAW,KAAsB;AACxC,SAAO,IAAI,WAAW,IAAI,KAAK,IAAI,SAAS;AAC9C;AAEA,SAAS,eAAe,GAAY,GAAqB;AACvD,MAAI,CAAC,EAAG,QAAO;AACf,MAAI,CAAC,EAAG,QAAO;AACf,SAAO,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAClC;AAEA,SAAS,WAAW,GAAY,GAAqB;AACnD,MAAI,CAAC,EAAG,QAAO;AACf,MAAI,CAAC,EAAG,QAAO;AAEf,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,UAAU;AAClD,WAAO,GAAG,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;AAAA,EACnC;AAEA,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,UAAU;AAClD,WAAO,EAAE,GAAI,GAA+B,GAAI,EAA8B;AAAA,EAChF;AAEA,SAAO;AACT;AAEA,SAAS,eAAe,KAAa,aAAsB,aAA+B;AACxF,MAAI,QAAQ,WAAW,QAAQ,aAAa;AAC1C,WAAO,eAAe,aAAa,WAAW;AAAA,EAChD;AAEA,MAAI,QAAQ,SAAS;AACnB,WAAO,WAAW,aAAa,WAAW;AAAA,EAC5C;AAEA,MAAI,QAAQ,OAAO;AACjB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAW,GAAG,GAAG;AACnB,QAAI,OAAO,gBAAgB,cAAc,OAAO,gBAAgB,YAAY;AAC1E,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,YAAY,OAAoC;AAC9D,SACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,WAAW,SACX,EAAE,iBAAiB;AAEvB;AAEO,SAAS,gBACd,QACA,QACyB;AACzB,QAAM,OAAgC,EAAE,GAAI,UAAU,CAAC,EAAG;AAE1D,aAAW,CAAC,KAAK,WAAW,KAAK,OAAO,QAAQ,MAAM,GAAG;AACvD,QAAI,QAAQ,cAAc,gBAAgB,OAAW;AACrD,UAAM,cAAc,KAAK,GAAG;AAC5B,SAAK,GAAG,IAAI,eAAe,KAAK,aAAa,WAAW;AAAA,EAC1D;AAEA,SAAO;AACT;AAEO,SAAS,oBACd,OACA,OACA,UACW;AACX,QAAM,SAAS,gBAAgB,MAAM,OAAO,KAAK;AAEjD,MAAI,aAAa,QAAW;AAC1B,WAAO,WAAW;AAAA,EACpB;AAEA,SAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ,OAAO;AAAA,IACP,KAAK,MAAM;AAAA,EACb;AACF;;;ACzFA,SAAS,cAAc,UAAqC;AAC1D,MAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,WAAQ,SAAS,KAAK,WAAS,UAAU,QAAQ,UAAU,UAAa,UAAU,KAAK,KAAK;AAAA,EAG9F;AACA,SAAO,YAAY;AACrB;AAEO,SAAS,KAAK,OAA4B;AAC/C,QAAM,EAAE,UAAU,GAAG,UAAU,IAAI;AACnC,MAAI,aAAa,UAAa,aAAa,MAAM;AAC/C,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,cAAc,QAAQ;AACpC,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,YAAY,KAAK,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,SAAO,oBAAoB,OAAO,SAAS;AAC7C;;;ACrBO,SAAS,UAAU,OAAiC;AACzD,QAAM,EAAE,KAAK,OAAO,UAAU,OAAO,UAAU,GAAG,KAAK,IAAI;AAE3D,MAAI,SAAS;AACX,WAAO,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC;AAAA,EACnC;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,KAAmB;AAC1C,SAAO,CAAC,UAAsC,UAAU,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC;AAC/E;AAEO,IAAM,oBAAoB;AAAA,EAC/B,KAAK,gBAAgB,KAAK;AAAA,EAC1B,MAAM,gBAAgB,MAAM;AAAA,EAC5B,QAAQ,gBAAgB,QAAQ;AAAA,EAChC,OAAO,gBAAgB,OAAO;AAAA,EAC9B,OAAO,gBAAgB,OAAO;AAAA,EAC9B,MAAM,gBAAgB,MAAM;AAAA,EAC5B,IAAI,gBAAgB,IAAI;AAAA,EACxB,IAAI,gBAAgB,IAAI;AAAA,EACxB,KAAK,gBAAgB,KAAK;AAAA,EAC1B,SAAS,gBAAgB,SAAS;AAAA,EAClC,SAAS,gBAAgB,SAAS;AACpC;;;AC3CO,SAAS,KAAQ,OAAqC,UAAiB;AAC5E,MAAI,OAAO,UAAU,YAAY;AAC/B,WAAQ,MAAkB;AAAA,EAC5B;AACA,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACCO,SAAS,SAAS,OAAsC;AAC7D,SAAO,MAAM;AACX,UAAM,UAAU,KAAK,MAAM,SAAS,IAAI;AACxC,UAAM,aAAa,KAAK,MAAM,YAAY,KAAK;AAE/C,QAAI,CAAC,WAAW,CAAC,YAAY;AAC3B,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,MAAM,aAAa,YAAY;AACxC,aAAQ,MAAM,SAAuD,EAAE,QAAQ,CAAC;AAAA,IAClF;AAEA,WAAO,MAAM,YAAY;AAAA,EAC3B;AACF;;;AC1BA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAgBP,IAAM,yBAAyB;AAAA,EAAwC,MACrE,OAAO,aAAa,cAAc,SAAS,OAAO;AACpD;AAEA,SAAS,iBACP,WACoB;AACpB,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,WAAW,IAAI,KAAK;AAClC;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,YAAY,WAAW,MAAM,iBAAiB,MAAM,SAAS,CAAC;AACpE,SAAO;AAAA,IACL,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,OAAO,OAA8B;AACnD,MAAI,KAAK,MAAM,UAAU,KAAK,GAAG;AAC/B,WAAO,MAAM,YAAY;AAAA,EAC3B;AAEA,QAAM,wBAAwB,WAAW,sBAAsB;AAC/D,UAAQ,MAAM;AACZ,UAAM,aACH,MAAM,cAAc,SAAY,iBAAiB,MAAM,SAAS,IAAI,sBAAsB,OAC1F,OAAO,aAAa,cAAc,SAAS,OAAO;AAErD,QAAI,CAAC,UAAW;AAEhB;AAAA,MACE;AAAA,MACA,MAAO,OAAO,MAAM,aAAa,aAAc,MAAM,SAA4B,IAAI,MAAM,YAAY;AAAA,MACvG;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AC9DA,IAAM,sBAA8C;AAAA,EAClD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,YAAY;AACd;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,EAAE,KAAK,QAAQ,UAAU,OAAO,GAAG,KAAK,IAAI;AAElD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,OACE,OAAO,UAAU,YAAY,UAAU,OACnC,EAAE,GAAG,qBAAqB,GAAI,MAAiC,IAC/D;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACF;;;ACtBO,SAAS,UAAU,OAAiC;AACzD,QAAM,cAAc,KAAK,MAAM,aAAa,YAAY;AACxD,QAAM,aAAa,KAAK,MAAM,YAAY,KAAK;AAC/C,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,MAAM,aAAa,iBAAiB;AAAA,MACpC,oBAAoB;AAAA,MACpB,eAAe,cAAc;AAAA,MAC7B,oBAAoB;AAAA,IACtB;AAAA,EACF;AACF;;;AClBO,SAAS,eAAe,OAAsC;AACnE,QAAM,EAAE,OAAO,UAAU,GAAG,KAAK,IAAI;AAErC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,eAAe;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AClCA,SAAS,iBAAAA,gBAAe,YAAY,cAAAC,mBAAiC;AAYrE,IAAM,YAAYD,eAAqC,IAAI;AAC3D,IAAM,iBAAiB,oBAAI,IAAoB;AAE/C,SAAS,YAAY,QAAwB;AAC3C,QAAM,UAAU,eAAe,IAAI,MAAM,KAAK;AAC9C,QAAM,OAAO,UAAU;AACvB,iBAAe,IAAI,QAAQ,IAAI;AAC/B,SAAO;AACT;AAEA,SAAS,mBAA0C;AACjD,MAAI;AACF,QAAI,CAAC,WAAW,SAAS,GAAG;AAC1B,aAAO;AAAA,IACT;AACA,WAAOC,YAAW,SAAS;AAAA,EAC7B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,SAAS,SAAS,WAAmB;AACnD,SAAO,GAAG,MAAM,IAAI,YAAY,MAAM,CAAC;AACzC;AAEO,SAAS,MAAM,IAAwB,SAAS,WAAmB;AACxE,MAAI,GAAI,QAAO;AAEf,QAAM,UAAU,iBAAiB;AACjC,MAAI,SAAS;AACX,WAAO,GAAG,QAAQ,MAAM,IAAI,QAAQ,KAAK,CAAC;AAAA,EAC5C;AAEA,SAAO,SAAS,MAAM;AACxB;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,SAAS,iBAAiB;AAChC,MAAI,eAAe;AAEnB,QAAM,SAAS,MAAM,UAAU,QAAQ,UAAU;AACjD,QAAM,UAA0B;AAAA,IAC9B;AAAA,IACA,MAAM,MAAM;AACV,sBAAgB;AAChB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,UAAU;AAAA,IAChB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;ACpEA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAiC;;;ACAzD,SAAS,oBAAoB;AAkBtB,SAAS,wBACd,SAC4B;AAC5B,QAAM,eAAe,aAAa,QAAQ,YAAY;AAEtD,QAAM,eAAe,MAAM,QAAQ,UAAU;AAE7C,QAAM,MAAM,MAAM;AAChB,QAAI,aAAa,GAAG;AAClB,aAAO,KAAK,QAAQ,OAAO,QAAQ,YAAY;AAAA,IACjD;AACA,WAAO,aAAa;AAAA,EACtB;AAEA,QAAM,MAAM,CAAC,SAAY;AACvB,UAAM,OAAO,IAAI;AACjB,UAAM,SAAS,QAAQ,UAAU,OAAO;AACxC,QAAI,OAAO,MAAM,IAAI,EAAG;AAExB,QAAI,CAAC,aAAa,GAAG;AACnB,mBAAa,IAAI;AAAA,IACnB;AAEA,YAAQ,WAAW,IAAI;AAAA,EACzB;AAEA,SAAO,EAAE,KAAK,KAAK,aAAa;AAClC;;;ADbA,IAAM,qBAAqBC,eAA8C,IAAI;AAE7E,SAAS,sBAAsB,WAA4C;AACzE,QAAM,UAAUC,YAAW,kBAAkB;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,sCAAsC;AAAA,EACpE;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,QAAQ,wBAAiC;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,UAAmC;AAAA,IACvC,MAAM,MAAM,MAAM,IAAI;AAAA,IACtB,SAAS,UAAQ,MAAM,IAAI,IAAI;AAAA,IAC/B,UAAU,MAAM,MAAM,YAAY;AAAA,EACpC;AAEA,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,sBAAsB,oBAAoB;AAC1D,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,UAAU,MAAM,QAAQ,SAAS;AAAA,IACjC,iBAAiB,MAAM,QAAQ,KAAK;AAAA,IACpC,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,IAC/C,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,iBAAkB;AAC5B,UAAI,QAAQ,SAAS,EAAG;AACxB,cAAQ,QAAQ,CAAC,QAAQ,KAAK,CAAC;AAAA,IACjC;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,sBAAsB,oBAAoB;AAE1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,oCAAoC;AAAA,MACpC,UAAU,MACR,QAAQ,KAAK,KAAK,MAAM,aACpB;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,YAAY;AAAA,UACZ,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,UAC/C,4BAA4B;AAAA,UAC5B,UAAU,MAAM;AAAA,QAClB;AAAA,MACF,IACA;AAAA,IACR;AAAA,EACF;AACF;;;AE3GA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAiC;AAwCzD,IAAM,mBAAmBC,eAA4C,IAAI;AACzE,IAAM,uBAAuBA,eAAgD,IAAI;AAEjF,SAAS,oBAAoB,WAA0C;AACrE,QAAM,UAAUC,YAAW,gBAAgB;AAC3C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,oCAAoC;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,wBAAwB,WAA8C;AAC7E,QAAM,UAAUA,YAAW,oBAAoB;AAC/C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,oCAAoC;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,UAAU,OAAgD;AACjE,MAAI,UAAU,OAAW,QAAO,CAAC;AACjC,SAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC9C;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,OAAO,MAAM,QAAQ;AAC3B,QAAM,gBAAgB,UAAU,MAAM,YAAY;AAElD,QAAM,cAAc,wBAAkC;AAAA,IACpD,OACE,MAAM,UAAU,SACZ,SACA,OAAO,MAAM,UAAU,cACpB,MAAM,UAAW,MAAM,MAAkC,CAAC,KAC3D,UAAU,MAAM,KAA0B;AAAA,IAClD,cAAc;AAAA,IACd,UAAU,UAAQ;AAChB,YAAM,gBAAgB,SAAS,WAAY,KAAK,CAAC,KAAK,KAAM,IAAI;AAAA,IAClE;AAAA,EACF,CAAC;AAED,QAAM,UAAiC;AAAA,IACrC,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM,YAAY,IAAI;AAAA,IAC9B,QAAQ,WAAS;AACf,YAAM,UAAU,YAAY,IAAI;AAChC,YAAM,SAAS,QAAQ,SAAS,KAAK;AAErC,UAAI,SAAS,UAAU;AACrB,YAAI,QAAQ;AACV,cAAI,MAAM,eAAe,OAAO;AAC9B,wBAAY,IAAI,CAAC,CAAC;AAAA,UACpB;AACA;AAAA,QACF;AACA,oBAAY,IAAI,CAAC,KAAK,CAAC;AACvB;AAAA,MACF;AAEA,UAAI,QAAQ;AACV,oBAAY,IAAI,QAAQ,OAAO,UAAQ,SAAS,KAAK,CAAC;AAAA,MACxD,OAAO;AACL,oBAAY,IAAI,CAAC,GAAG,SAAS,KAAK,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,iBAAiB;AAAA,IACvB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,YAAY,oBAAoB,eAAe;AACrD,QAAM,MAAM,MAAM,MAAM;AAExB,QAAM,cAAyC;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,MAAM,MAAM,UAAU,OAAO,EAAE,SAAS,MAAM,KAAK;AAAA,EACrD;AAEA,SAAO;AAAA,IACL,MAAM,qBAAqB;AAAA,IAC3B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,MAAM,MAAM,YAAY,KAAK;AAAA,UAC7B,cAAc,CAAC,SAAkB;AAC/B,kBAAM,aAAa;AACnB,gBAAI,eAAe,YAAY,KAAK,GAAG;AACrC,wBAAU,OAAO,MAAM,KAAK;AAAA,YAC9B;AAAA,UACF;AAAA,UACA,UAAU,UAAU;AAAA,YAClB,GAAG;AAAA,YACH,OAAO;AAAA,YACP,IAAI;AAAA,YACJ,uBAAuB,MAAM;AAAA,YAC7B,cAAc,MAAO,YAAY,KAAK,IAAI,SAAS;AAAA,YACnD,UAAU,MAAM;AAAA,UAClB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,OAA0C;AACzE,sBAAoB,kBAAkB;AACtC,0BAAwB,kBAAkB;AAE1C,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,OAA0C;AACzE,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,EACF;AACF;;;ACxKA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAiC;;;ACAzD,SAAS,iBAAAC,gBAAe,cAAc,WAAW,cAAAC,mBAAiC;AAClF,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,wBAAwB;AA2CjC,IAAM,gBAAgBC,eAAyC,IAAI;AAE5D,SAAS,iBAAiB,OAAwC;AACvE,QAAM,kBAAkBC,cAA4B,IAAI;AACxD,QAAM,QAAsB,CAAC;AAC7B,QAAM,YAAYA,cAAiC,IAAI;AAEvD,QAAM,eAAe,CAAC,aAA4B;AAChD,eAAW,QAAQ,OAAO;AACxB,YAAM,WAAW,KAAK,OAAO,YAAY,CAAC,KAAK;AAC/C,WAAK,QAAQ,WAAW,WAAW,IAAI;AACvC,UAAI,UAAU;AACZ,aAAK,QAAQ,aAAa,eAAe,EAAE;AAAA,MAC7C,OAAO;AACL,aAAK,QAAQ,gBAAgB,aAAa;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,cAAsB;AACvC,UAAM,cAAc,QAAQ,SAAS,EAAE,OAAO,UAAQ,CAAC,KAAK,QAAQ;AACpE,QAAI,YAAY,WAAW,EAAG;AAE9B,UAAM,YAAY,QAAQ,UAAU;AACpC,UAAM,eAAe,YAAY,UAAU,UAAQ,KAAK,OAAO,SAAS;AACxE,UAAM,YAAY,gBAAgB,IAAI,eAAe;AAErD,QAAI,YAAY,YAAY;AAC5B,QAAI,YAAY,GAAG;AACjB,kBAAY,QAAQ,KAAK,IAAI,YAAY,SAAS,IAAI;AAAA,IACxD,WAAW,aAAa,YAAY,QAAQ;AAC1C,kBAAY,QAAQ,KAAK,IAAI,IAAI,YAAY,SAAS;AAAA,IACxD;AAEA,UAAM,WAAW,YAAY,SAAS;AACtC,QAAI,CAAC,SAAU;AAEf,YAAQ,aAAa,SAAS,EAAE;AAChC,aAAS,QAAQ,MAAM;AAAA,EACzB;AAEA,QAAMC,cAAa,MAAM;AACvB,UAAM,QAAQ,QAAQ,SAAS,EAAE,KAAK,UAAQ,CAAC,KAAK,QAAQ;AAC5D,QAAI,CAAC,MAAO;AACZ,YAAQ,aAAa,MAAM,EAAE;AAC7B,UAAM,QAAQ,MAAM;AAAA,EACtB;AAEA,QAAM,YAAY,MAAM;AACtB,UAAM,WAAW,QACd,SAAS,EACT,MAAM,EACN,QAAQ;AACX,UAAM,OAAO,SAAS,KAAK,UAAQ,CAAC,KAAK,QAAQ;AACjD,QAAI,CAAC,KAAM;AACX,YAAQ,aAAa,KAAK,EAAE;AAC5B,SAAK,QAAQ,MAAM;AAAA,EACrB;AAEA,QAAM,UAA8B;AAAA,IAClC,aAAa,MAAM,KAAK,MAAM,aAAa,YAAY;AAAA,IACvD,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AAAA,IACjC,WAAW,MAAM,gBAAgB;AAAA,IACjC,cAAc,QAAM;AAClB,sBAAgB,EAAE;AAClB,mBAAa,EAAE;AAAA,IACjB;AAAA,IACA,UAAU,UAAQ;AAChB,YAAM,KAAK,IAAI;AACf,UAAI,CAAC,gBAAgB,KAAK,CAAC,KAAK,UAAU;AACxC,gBAAQ,aAAa,KAAK,EAAE;AAAA,MAC9B,OAAO;AACL,qBAAa,gBAAgB,CAAC;AAAA,MAChC;AACA,aAAO,MAAM;AACX,cAAM,QAAQ,MAAM,UAAU,WAAS,MAAM,OAAO,KAAK,EAAE;AAC3D,YAAI,SAAS,GAAG;AACd,gBAAM,OAAO,OAAO,CAAC;AAAA,QACvB;AACA,YAAI,gBAAgB,MAAM,KAAK,IAAI;AACjC,kBAAQ,aAAa,MAAM,KAAK,WAAS,CAAC,MAAM,QAAQ,GAAG,MAAM,IAAI;AAAA,QACvE,OAAO;AACL,uBAAa,gBAAgB,CAAC;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,MAAM,MAAM,MAAM;AAAA,IAC5B;AAAA,IACA,YAAAA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,UAAyB;AAC1C,UAAM,cAAc,QAAQ,YAAY;AACxC,UAAM,MAAM,MAAM;AAElB,QAAI,gBAAgB,cAAc;AAChC,UAAI,QAAQ,cAAc;AACxB,cAAM,eAAe;AACrB,kBAAU,CAAC;AAAA,MACb,WAAW,QAAQ,aAAa;AAC9B,cAAM,eAAe;AACrB,kBAAU,EAAE;AAAA,MACd;AAAA,IACF;AAEA,QAAI,gBAAgB,YAAY;AAC9B,UAAI,QAAQ,aAAa;AACvB,cAAM,eAAe;AACrB,kBAAU,CAAC;AAAA,MACb,WAAW,QAAQ,WAAW;AAC5B,cAAM,eAAe;AACrB,kBAAU,EAAE;AAAA,MACd;AAAA,IACF;AAEA,QAAI,QAAQ,QAAQ;AAClB,YAAM,eAAe;AACrB,cAAQ,WAAW;AAAA,IACrB;AAEA,QAAI,QAAQ,OAAO;AACjB,YAAM,eAAe;AACrB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,UAAyB;AAClD,UAAM,SAAS,MAAM;AACrB,UAAM,QAAQ,UAAU;AACxB,QAAI,CAAC,SAAS,EAAE,kBAAkB,MAAO;AACzC,QAAI,CAAC,MAAM,SAAS,MAAM,EAAG;AAC7B,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,iBAAiB,MAAM,UAAU,GAAG,kBAAkB,OAAO,aAAa,cAAc,WAAW;AACzG,mBAAgC,gBAAgB,WAAW,mBAAmB,EAAE,SAAS,KAAK,CAAC;AAE/F,SAAO;AAAA,IACL,MAAM,cAAc;AAAA,IACpB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,2BAA2B;AAAA,UAC3B,KAAK,CAAC,SAA6B;AACjC,sBAAU,IAAI;AACd,kBAAM,UAAU,MAAM;AAItB,gBAAI,OAAO,YAAY,YAAY;AACjC,sBAAQ,IAAI;AAAA,YACd,WAAW,SAAS;AAClB,sBAAQ,UAAU;AAAA,YACpB;AAAA,UACF;AAAA,UACA;AAAA,UACA,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,UAAUC,YAAW,aAAa;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AAEA,QAAM,KAAK,MAAM,MAAM,IAA0B,SAAS;AAC1D,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,WAAWF,cAAiC,IAAI;AACtD,MAAI,UAA+B;AAEnC,QAAM,UAAU,CAAC,UAAsB;AACrC,UAAM,UAAU,KAAK;AACrB,YAAQ,aAAa,EAAE;AAAA,EACzB;AAEA,QAAM,YAAY,CAAC,UAAyB;AAC1C,UAAM,YAAY,KAAK;AACvB,QAAI,MAAM,iBAAkB;AAE5B,UAAM,cAAc,QAAQ,YAAY;AACxC,QAAI,gBAAgB,cAAc;AAChC,UAAI,MAAM,QAAQ,cAAc;AAC9B,cAAM,eAAe;AACrB,gBAAQ,UAAU,CAAC;AAAA,MACrB,WAAW,MAAM,QAAQ,aAAa;AACpC,cAAM,eAAe;AACrB,gBAAQ,UAAU,EAAE;AAAA,MACtB;AAAA,IACF,WAAW,gBAAgB,YAAY;AACrC,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,gBAAQ,UAAU,CAAC;AAAA,MACrB,WAAW,MAAM,QAAQ,WAAW;AAClC,cAAM,eAAe;AACrB,gBAAQ,UAAU,EAAE;AAAA,MACtB;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,QAAQ;AACxB,YAAM,eAAe;AACrB,cAAQ,WAAW;AAAA,IACrB;AACA,QAAI,MAAM,QAAQ,OAAO;AACvB,YAAM,eAAe;AACrB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF;AAEA,mBAAgC,MAAM,SAAS,GAAG,WAAW,SAAS;AAEtE,eAAa,MAAM;AACjB,UAAM,OAAO,SAAS;AACtB,cAAU;AACV,cAAU;AACV,QAAI,CAAC,KAAM;AAEX,cAAU,QAAQ,SAAS;AAAA,MACzB;AAAA,MACA,SAAS;AAAA,MACT,UAAU,KAAK,MAAM,UAAU,KAAK;AAAA,IACtC,CAAC;AAED,cAAU,MAAM;AACd,gBAAU;AACV,gBAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AAED,QAAM,WAAW,CAAC,SAA6B;AAC7C,aAAS,IAAI;AAAA,EACf;AAEA,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,UAAU,KAAK,MAAM,UAAU,KAAK;AAAA,IACpC,KAAK,YAAY,MAAM,KAA+E,QAAQ;AAAA,IAC9G,UAAU;AAAA,IACV,0BAA0B;AAAA,IAC1B;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;;;AD/PA,IAAM,cAAcG,eAAuC,IAAI;AAE/D,SAAS,eAAe,WAAqC;AAC3D,QAAM,UAAUC,YAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,+BAA+B;AAAA,EAC7D;AACA,SAAO;AACT;AAEO,SAAS,SAAS,OAAgC;AACvD,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AACD,QAAM,SAAS,MAAM,MAAM,IAAI,MAAM;AAErC,QAAM,UAA4B;AAAA,IAChC,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,IACvC,aAAa,MAAM,MAAM,eAAe;AAAA,IACxC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,YAAY;AAAA,IAClB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,SAAS,OAAgC;AACvD,QAAM,UAAU,eAAe,UAAU;AAEzC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,oBAAoB,MAAM,QAAQ,YAAY;AAAA,MAC9C,kBAAkB;AAAA,MAClB,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa,MAAM,QAAQ,YAAY;AAAA,UACvC,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,UAAU,eAAe,aAAa;AAC5C,QAAM,MAAM,MAAM,MAAM;AAExB,QAAM,WAAW,MAAM,QAAQ,MAAM,MAAM,MAAM;AAEjD,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,MAAM;AAAA,IACN,IAAI,GAAG,QAAQ,MAAM,YAAY,MAAM,KAAK;AAAA,IAC5C,iBAAiB,GAAG,QAAQ,MAAM,YAAY,MAAM,KAAK;AAAA,IACzD,iBAAiB;AAAA,IACjB,cAAc,MAAO,SAAS,IAAI,WAAW;AAAA,IAC7C,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,CAAC,MAAM,kBAAkB;AAC3B,gBAAQ,SAAS,MAAM,KAAK;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,UAAU,eAAe,aAAa;AAE5C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,6BAA6B,MAAM;AAAA,MACnC,UAAU,MACR,QAAQ,MAAM,MAAM,MAAM,SAAS,MAAM,aACrC;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,IAAI,GAAG,QAAQ,MAAM,YAAY,MAAM,KAAK;AAAA,UAC5C,mBAAmB,GAAG,QAAQ,MAAM,YAAY,MAAM,KAAK;AAAA,UAC3D,cAAc,MAAO,QAAQ,MAAM,MAAM,MAAM,QAAQ,WAAW;AAAA,UAClE,qBAAqB,MAAM;AAAA,UAC3B,UAAU,MAAM;AAAA,QAClB;AAAA,MACF,IACA;AAAA,IACR;AAAA,EACF;AACF;;;AEvJA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAiC;AACzD,SAAS,gBAAAC,qBAAoB;AAoD7B,IAAM,4BAA4BC,eAAqD,IAAI;AAC3F,IAAM,4BAA4BA,eAAqD,IAAI;AAE3F,SAAS,yBAAyB,WAAmD;AACnF,QAAM,UAAUC,YAAW,yBAAyB;AACpD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,yCAAyC;AAAA,EACvE;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB,WAAmD;AACnF,QAAM,UAAUA,YAAW,yBAAyB;AACpD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,yCAAyC;AAAA,EACvE;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,mBAAmBC,cAA4B,IAAI;AAEzD,QAAM,UAA0C;AAAA,IAC9C,YAAY,MAAM,iBAAiB;AAAA,IACnC,eAAe,WAAS,iBAAiB,KAAK;AAAA,EAChD;AAEA,SAAO;AAAA,IACL,MAAM,0BAA0B;AAAA,IAChC,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,6BAA6B;AAAA,UAC7B,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,6BAA6B;AAAA,MAC7B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,QAAQ,MAAM,MAAM,OAAO,sBAAsB;AACvD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO;AAAA,IACL,MAAM,0BAA0B;AAAA,IAChC,OAAO;AAAA,MACL,OAAO,EAAE,MAAM;AAAA,MACf,UAAU,UAAU;AAAA,QAClB,GAAG;AAAA,QACH,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,6BAA6B;AAAA,QAC7B,UAAU,MAAM;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,OAA6C;AACjF,QAAM,OAAO,yBAAyB,uBAAuB;AAC7D,QAAM,OAAO,yBAAyB,uBAAuB;AAC7D,QAAM,MAAM,MAAM,MAAM;AAExB,QAAM,OAAO,MAAM,KAAK,WAAW,MAAM,KAAK;AAE9C,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,cAAc,MAAO,KAAK,IAAI,SAAS;AAAA,IACvC,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,iBAAkB;AAC5B,WAAK,cAAc,KAAK,IAAI,OAAO,KAAK,KAAK;AAAA,IAC/C;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,sBAAsB,OAA6C;AACjF,QAAM,OAAO,yBAAyB,uBAAuB;AAC7D,QAAM,OAAO,yBAAyB,uBAAuB;AAE7D,QAAM,OAAO,MAAM,KAAK,WAAW,MAAM,KAAK;AAE9C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,wCAAwC,KAAK;AAAA,MAC7C,UAAU,MACR,KAAK,KAAK,MAAM,aACZ;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,cAAc,MAAO,KAAK,IAAI,SAAS;AAAA,UACvC,gCAAgC,KAAK;AAAA,UACrC,UAAU,MAAM;AAAA,QAClB;AAAA,MACF,IACA;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,6BAA6B;AAAA,IAC7B,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,wBAAwB,OAAoE;AAC1G,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,kCAAkC;AAAA,MAClC,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,uBAAuB,OAAoE;AACzG,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,iCAAiC;AAAA,MACjC,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;ACxMO,SAAS,MAAM,OAA6B;AACjD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,cAAc;AAAA,MACd,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;ACDO,SAAS,SAAS,OAAgC;AACvD,QAAM,eAAe,wBAAiC;AAAA,IACpD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,kBAAkB;AAAA,IACtC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,gBAAgB,MAAM,aAAa,IAAI;AAAA,MACvC,cAAc,MAAO,aAAa,IAAI,IAAI,YAAY;AAAA,MACtD,iBAAiB;AAAA,MACjB,SAAS,CAAC,UAAsB;AAC9B;AAAC,QAAC,MAAM,UAAwD,KAAK;AACrE,YAAI,MAAM,oBAAoB,MAAM,SAAU;AAC9C,qBAAa,IAAI,CAAC,aAAa,IAAI,CAAC;AAAA,MACtC;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,MAAM,OACF;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,MAAM,MAAM;AAAA,YACZ,OAAO,MAAM;AAAA,YACb,SAAS,MAAM,aAAa,IAAI;AAAA,YAChC,UAAU,MAAM;AAAA,YAChB,UAAU;AAAA,UACZ;AAAA,QACF,IACA;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACF;;;AC1DA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAiC;AA6BzD,IAAM,oBAAoBC,eAA6C,IAAI;AAE3E,SAAS,qBAAqB,WAA2C;AACvE,QAAM,UAAUC,YAAW,iBAAiB;AAC5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,iCAAiC;AAAA,EAC/D;AACA,SAAO;AACT;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,UAAkC;AAAA,IACtC,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,IACvC,MAAM,MAAM;AAAA,EACd;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB;AAAA,IACxB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,MAAM;AAAA,UACN,oBAAoB;AAAA,UACpB,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,UAAU,OAAiC;AACzD,QAAM,QAAQ,qBAAqB,WAAW;AAC9C,QAAM,UAAU,MAAM,MAAM,MAAM,MAAM,MAAM;AAC9C,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,cAAc,MAAM,OACtB;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM,MAAM;AAAA,MACZ;AAAA,MACA,OAAO,MAAM;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,EACF,IACA;AAEJ,MAAI,MAAM,SAAS;AACjB,WAAO;AAAA,MACL,UAAU;AAAA,QACR,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,MAAM,MAAM;AAAA,QACZ,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB,gBAAgB;AAAA,QAChB,cAAc,MAAO,QAAQ,IAAI,YAAY;AAAA,QAC7C,mBAAmB;AAAA,QACnB,SAAS,CAAC,UAAsB;AAC9B;AAAC,UAAC,MAAM,UAAwD,KAAK;AACrE,cAAI,MAAM,oBAAoB,MAAM,SAAU;AAC9C,gBAAM,SAAS,MAAM,KAAK;AAAA,QAC5B;AAAA,QACA,UAAU,MAAM;AAAA,MAClB,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAEA,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,QAAQ,WAAW,WAAW,MAAM;AAAA,IAC1C,MAAM;AAAA,IACN,UAAU,MAAM;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAc,MAAO,QAAQ,IAAI,YAAY;AAAA,IAC7C,mBAAmB;AAAA,IACnB,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,oBAAoB,MAAM,SAAU;AAC9C,YAAM,SAAS,MAAM,KAAK;AAAA,IAC5B;AAAA,IACA,UAAU,CAAC,MAAM,UAAU,WAAW;AAAA,EACxC,CAAC;AACH;;;AC1GO,SAAS,OAAO,OAA8B;AACnD,QAAM,eAAe,wBAAiC;AAAA,IACpD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,kBAAkB;AAAA,IACtC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,gBAAgB,MAAM,aAAa,IAAI;AAAA,MACvC,cAAc,MAAO,aAAa,IAAI,IAAI,YAAY;AAAA,MACtD,eAAe;AAAA,MACf,SAAS,CAAC,UAAsB;AAC9B;AAAC,QAAC,MAAM,UAAwD,KAAK;AACrE,YAAI,MAAM,oBAAoB,MAAM,SAAU;AAC9C,qBAAa,IAAI,CAAC,aAAa,IAAI,CAAC;AAAA,MACtC;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,MAAM,OACF;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,MAAM,MAAM;AAAA,YACZ,OAAO,MAAM;AAAA,YACb,SAAS,MAAM,aAAa,IAAI;AAAA,YAChC,UAAU;AAAA,UACZ;AAAA,QACF,IACA;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,qBAAqB;AAAA,MACrB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;ACxEA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAiC;AAsCzD,IAAM,qBAAqBC,eAA8C,IAAI;AAE7E,SAASC,WAAU,OAAgD;AACjE,MAAI,UAAU,OAAW,QAAO,CAAC;AACjC,SAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC9C;AAEO,SAAS,OAAO,OAA8B;AACnD,QAAM,eAAe,wBAAiC;AAAA,IACpD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,kBAAkB;AAAA,IACtC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,gBAAgB,MAAM,aAAa,IAAI;AAAA,MACvC,cAAc,MAAO,aAAa,IAAI,IAAI,OAAO;AAAA,MACjD,eAAe;AAAA,MACf,SAAS,CAAC,UAAsB;AAC9B;AAAC,QAAC,MAAM,UAAwD,KAAK;AACrE,YAAI,MAAM,oBAAoB,MAAM,SAAU;AAC9C,qBAAa,IAAI,CAAC,aAAa,IAAI,CAAC;AAAA,MACtC;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,OAAO,MAAM,QAAQ;AAC3B,QAAM,cAAc,wBAAkC;AAAA,IACpD,OACE,MAAM,UAAU,SACZ,SACA,OAAO,MAAM,UAAU,cACpB,MAAMA,WAAW,MAAM,MAAkC,CAAC,KAC3DA,WAAU,MAAM,KAA0B;AAAA,IAClD,cAAcA,WAAU,MAAM,YAAY;AAAA,IAC1C,UAAU,UAAQ;AAChB,YAAM,gBAAgB,SAAS,WAAY,KAAK,CAAC,KAAK,KAAM,IAAI;AAAA,IAClE;AAAA,EACF,CAAC;AAED,QAAM,UAAmC;AAAA,IACvC,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM,YAAY,IAAI;AAAA,IAC9B,QAAQ,WAAS;AACf,YAAM,UAAU,YAAY,IAAI;AAChC,YAAM,SAAS,QAAQ,SAAS,KAAK;AAErC,UAAI,SAAS,UAAU;AACrB,oBAAY,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC;AAAA,MACF;AAEA,UAAI,QAAQ;AACV,oBAAY,IAAI,QAAQ,OAAO,UAAQ,SAAS,KAAK,CAAC;AAAA,MACxD,OAAO;AACL,oBAAY,IAAI,CAAC,GAAG,SAAS,KAAK,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,MAAM;AAAA,UACN,qBAAqB;AAAA,UACrB,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,QAAQC,YAAW,kBAAkB;AAC3C,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAEA,QAAM,UAAU,MAAM,MAAM,OAAO,EAAE,SAAS,MAAM,KAAK;AACzD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAW,WAAW,MAAM;AAAA,IAC5D,UAAU,MAAM;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAc,MAAO,QAAQ,IAAI,OAAO;AAAA,IACxC,0BAA0B;AAAA,IAC1B,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,oBAAoB,MAAM,SAAU;AAC9C,YAAM,OAAO,MAAM,KAAK;AAAA,IAC1B;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;;;ACzHO,SAAS,OAAO,OAA8B;AACnD,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,KAAK,MAAM,OAAO;AAAA,MAClB,KAAK,MAAM,OAAO;AAAA,MAClB,MAAM,MAAM,QAAQ;AAAA,MACpB,OAAO,MAAM,WAAW,IAAI;AAAA,MAC5B,UAAU,MAAM;AAAA,MAChB,eAAe;AAAA,MACf,SAAS,CAAC,UAAiB;AACzB;AAAC,QAAC,MAAM,UAAmD,KAAK;AAChE,cAAM,SAAS,MAAM;AACrB,YAAI,CAAC,OAAQ;AACb,mBAAW,IAAI,OAAO,OAAO,KAAK,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,aAAa,wBAA0C;AAAA,IAC3D,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB,CAAC,GAAG,GAAG;AAAA,IAC3C,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,MAAM,MAAM,OAAO;AACzB,QAAM,MAAM,MAAM,OAAO;AACzB,QAAM,OAAO,MAAM,QAAQ;AAE3B,QAAM,WAAW,CAAC,cAAsB;AACtC,UAAM,CAAC,EAAE,GAAG,IAAI,WAAW,IAAI;AAC/B,eAAW,IAAI,CAAC,KAAK,IAAI,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,EAChD;AAEA,QAAM,SAAS,CAAC,YAAoB;AAClC,UAAM,CAAC,KAAK,IAAI,WAAW,IAAI;AAC/B,eAAW,IAAI,CAAC,OAAO,KAAK,IAAI,OAAO,OAAO,CAAC,CAAC;AAAA,EAClD;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,qBAAqB;AAAA,MACrB,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO,MAAM,WAAW,IAAI,EAAE,CAAC;AAAA,YAC/B,UAAU,MAAM;AAAA,YAChB,2BAA2B;AAAA,YAC3B,SAAS,CAAC,UAAiB;AACzB;AAAC,cAAC,MAAM,UAAmD,KAAK;AAChE,oBAAM,SAAS,MAAM;AACrB,kBAAI,CAAC,OAAQ;AACb,uBAAS,OAAO,OAAO,KAAK,CAAC;AAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO,MAAM,WAAW,IAAI,EAAE,CAAC;AAAA,YAC/B,UAAU,MAAM;AAAA,YAChB,yBAAyB;AAAA,YACzB,SAAS,CAAC,UAAiB;AACzB;AAAC,cAAC,MAAM,UAAmD,KAAK;AAChE,oBAAM,SAAS,MAAM;AACrB,kBAAI,CAAC,OAAQ;AACb,qBAAO,OAAO,OAAO,KAAK,CAAC;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACxHA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AAUzD,SAAS,OAAO,OAA8B;AAC5C,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAM,OAAO,iBAAiB,OAAO,IAAI,KAAK,MAAM,QAAQ,CAAC,IAAI,IAAI,KAAK,KAAK;AAC/E,SAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,OAAO;AAC/C;AAEA,SAAS,cAAc,MAAkB;AACvC,SAAO,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AACrE;AAEA,SAAS,eAAe,MAAkB;AACxC,SAAO,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,CAAC;AACxD;AAEA,SAAS,aAAa,OAAuB;AAC3C,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,QAAM,OAAO,KAAK,MAAM,KAAK;AAC7B,MAAI,OAAO,EAAG,QAAO;AACrB,MAAI,OAAO,EAAG,QAAO;AACrB,SAAO;AACT;AAEA,SAAS,UAAU,GAAgB,GAAyB;AAC1D,MAAI,CAAC,KAAK,CAAC,EAAG,QAAO,MAAM;AAC3B,SACE,EAAE,YAAY,MAAM,EAAE,YAAY,KAClC,EAAE,SAAS,MAAM,EAAE,SAAS,KAC5B,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAE9B;AAEA,SAAS,YAAY,GAAS,GAAkB;AAC9C,SAAO,EAAE,YAAY,MAAM,EAAE,YAAY,KAAK,EAAE,SAAS,MAAM,EAAE,SAAS;AAC5E;AAEA,SAAS,UAAU,OAAa,QAAsB;AACpD,SAAO,eAAe,IAAI,KAAK,MAAM,YAAY,GAAG,MAAM,SAAS,IAAI,QAAQ,CAAC,CAAC;AACnF;AAEA,SAAS,cAAc,MAAoB;AACzC,QAAM,IAAI,KAAK,YAAY;AAC3B,QAAM,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACrD,QAAM,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAChD,SAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB;AAEA,SAAS,YAAY,OAA6C;AAChE,QAAM,OAAO,OAAO,KAAK,OAAO,MAAS,CAAC;AAC1C,SAAO,OAAO,cAAc,IAAI,IAAI;AACtC;AAEA,SAAS,iBAAiB,OAAa,cAA8B;AACnE,QAAM,eAAe,eAAe,KAAK;AACzC,QAAM,eAAe,aAAa,OAAO;AACzC,QAAM,UAAU,eAAe,eAAe,KAAK;AACnD,QAAM,QAAQ,IAAI,KAAK,aAAa,YAAY,GAAG,aAAa,SAAS,GAAG,IAAI,MAAM;AAEtF,SAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,UAAU,cAAc,IAAI,KAAK,MAAM,YAAY,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,IAAI,KAAK,CAAC,CAAC;AACzI;AAEA,SAAS,cAAc,QAAgB,QAAqC,cAAgC;AAC1G,QAAM,YAAY,IAAI,KAAK,eAAe,QAAQ,EAAE,SAAS,OAAO,CAAC;AACrE,QAAM,QAAQ,IAAI,KAAK,MAAM,GAAG,CAAC;AACjC,SAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,UAAU;AAC7C,UAAM,MAAM,IAAI,KAAK,MAAM,YAAY,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,KAAM,eAAe,SAAS,CAAE;AAC1G,WAAO,UAAU,OAAO,GAAG;AAAA,EAC7B,CAAC;AACH;AAyDA,IAAM,kBAAkBC,gBAA2C,IAAI;AAEvE,SAAS,mBAAmB,WAAyC;AACnE,QAAM,UAAUC,aAAW,eAAe;AAC1C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,mCAAmC;AAAA,EACjE;AACA,SAAO;AACT;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,eAAe,OAAO,MAAM,YAAY;AAC9C,QAAM,eAAe,eAAe,OAAO,MAAM,YAAY,KAAK,gBAAgB,oBAAI,KAAK,CAAC;AAC5F,QAAM,SAAS,MAAM,MAAM,IAAI,UAAU;AAEzC,QAAM,aAAa,wBAAqC;AAAA,IACtD,OAAO,MAAM,UAAU,SAAY,UAAa,MAAM,YAAY,MAAM,KAAgC;AAAA,IACxG,cAAc,eAAe,cAAc,YAAY,IAAI;AAAA,IAC3D,UAAU,MAAM;AAAA,IAChB,QAAQ,CAAC,GAAG,MAAM,UAAU,GAAG,CAAC;AAAA,EAClC,CAAC;AAED,QAAM,aAAa,wBAA8B;AAAA,IAC/C,OACE,MAAM,UAAU,SACZ,UACC,MAAM;AACL,YAAM,OAAO,OAAO,KAAK,MAAM,OAAkC,MAAS,CAAC;AAC3E,aAAO,eAAe,QAAQ,YAAY;AAAA,IAC5C;AAAA,IACN,cAAc;AAAA,IACd,UAAU,MAAM;AAAA,IAChB,QAAQ,CAAC,GAAG,MAAM,YAAY,GAAG,CAAC;AAAA,EACpC,CAAC;AAED,QAAM,UAAgC;AAAA,IACpC;AAAA,IACA,QAAQ,GAAG,MAAM;AAAA,IACjB,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,QAAQ,cAAc,KAAK,IAAI,IAAI;AAAA,IACrE,OAAO,MAAM,eAAe,WAAW,IAAI,CAAC;AAAA,IAC5C,UAAU,WAAS,WAAW,IAAI,eAAe,KAAK,CAAC;AAAA,IACvD,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO;AAAA,IACxC,cAAc,MAAM,aAAa,KAAK,MAAM,cAAc,CAAC,CAAC;AAAA,IAC5D,eAAe,MAAM,KAAK,MAAM,eAAe,OAAO;AAAA,IACtD,iBAAiB,MAAM,KAAK,MAAM,iBAAiB,IAAI;AAAA,IACvD,UAAU,UAAQ,MAAM,WAAW,cAAc,IAAI,CAAC,KAAK;AAAA,EAC7D;AAEA,QAAM,kBAAkB;AAAA,IACtB;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,QACL,UAAU;AAAA,UACR,EAAE,MAAM,oBAAoB,OAAO,EAAE,6BAA6B,IAAI,UAAU,OAAO,EAAE;AAAA,UACzF,EAAE,MAAM,eAAe,OAAO,CAAC,EAAE;AAAA,UACjC,EAAE,MAAM,oBAAoB,OAAO,EAAE,6BAA6B,IAAI,UAAU,OAAO,EAAE;AAAA,QAC3F;AAAA,MACF;AAAA,IACF;AAAA,IACA,EAAE,MAAM,cAAc,OAAO,CAAC,EAAE;AAAA,EAClC;AAEA,SAAO;AAAA,IACL,MAAM,gBAAgB;AAAA,IACtB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,cAAc;AAAA,UACd,eAAe;AAAA,UACf,OAAO;AAAA,UACP,cAAc;AAAA,UACd,eAAe;AAAA,UACf,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,sBAAsB;AAAA,UACtB,UAAU,MAAM,YAAY;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,WAAW;AAEjB,SAAS,eAAe,OAAsC;AACnE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,wBAAwB;AAAA,MACxB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,mBAAmB,eAAe;AAElD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,uBAAuB;AAAA,MACvB,UACE,MAAM,aACL,MACC,IAAI,KAAK,eAAe,QAAQ,OAAO,GAAG;AAAA,QACxC,OAAO;AAAA,QACP,MAAM;AAAA,MACR,CAAC,EAAE,OAAO,QAAQ,MAAM,CAAC;AAAA,IAC/B;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAAyC;AAC1E,QAAM,UAAU,mBAAmB,oBAAoB;AACvD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,iBAAiB,QAAQ;AAAA,IACzB,sBAAsB;AAAA,IACtB,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,SAAS,UAAU,QAAQ,MAAM,GAAG,EAAE,CAAC;AAAA,IACjD;AAAA,IACA,UAAU,MAAM,YAAY;AAAA,EAC9B,CAAC;AACH;AAEO,SAAS,mBAAmB,OAAyC;AAC1E,QAAM,UAAU,mBAAmB,oBAAoB;AACvD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,iBAAiB,QAAQ;AAAA,IACzB,sBAAsB;AAAA,IACtB,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,SAAS,UAAU,QAAQ,MAAM,GAAG,CAAC,CAAC;AAAA,IAChD;AAAA,IACA,UAAU,MAAM,YAAY;AAAA,EAC9B,CAAC;AACH;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,UAAU,mBAAmB,cAAc;AAEjD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,IAAI,MAAM,MAAM,QAAQ;AAAA,MACxB,MAAM;AAAA,MACN,sBAAsB;AAAA,MACtB,UAAU,MAAM;AACd,cAAM,QAAQ,QAAQ,MAAM;AAC5B,cAAM,eAAe,QAAQ,aAAa;AAC1C,cAAM,cAAc,KAAK,MAAM,iBAAiB,QAAQ,gBAAgB,CAAC;AACzE,cAAM,SAAS,cAAc,QAAQ,OAAO,GAAG,QAAQ,cAAc,GAAG,YAAY;AACpF,cAAM,OAAO,iBAAiB,OAAO,YAAY;AAEjD,cAAM,SAAS;AAAA,UACb,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,YACN,0BAA0B;AAAA,YAC1B,UAAU,OAAO,IAAI,CAAC,OAAO,WAAW;AAAA,cACtC,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MAAM;AAAA,gBACN,yBAAyB;AAAA,gBACzB,UAAU;AAAA,cACZ;AAAA,YACF,EAAE;AAAA,UACJ;AAAA,QACF;AAEA,cAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,cAAc;AACvD,gBAAM,QAAQ,YAAY;AAC1B,gBAAM,WAAW,KAAK,MAAM,OAAO,QAAQ,CAAC;AAE5C,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,cACL,MAAM;AAAA,cACN,sBAAsB;AAAA,cACtB,UAAU,SAAS,IAAI,SAAO;AAC5B,sBAAM,MAAM,cAAc,GAAG;AAC7B,sBAAM,eAAe,CAAC,YAAY,KAAK,KAAK;AAC5C,sBAAM,WAAW,UAAU,QAAQ,MAAM,GAAG,GAAG;AAC/C,sBAAM,WAAW,QAAQ,SAAS,GAAG;AAErC,oBAAI,CAAC,eAAe,cAAc;AAChC,yBAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,sBACL,MAAM;AAAA,sBACN,iCAAiC;AAAA,sBACjC,eAAe;AAAA,sBACf,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAEA,uBAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,iBAAiB;AAAA,oBACjB;AAAA,oBACA,qBAAqB;AAAA,oBACrB,cAAc,WAAW,aAAa;AAAA,oBACtC,sBAAsB,eAAe,SAAS;AAAA,oBAC9C,SAAS,CAAC,UAAsB;AAC9B;AAAC,sBAAC,MAAM,cAAuE,KAAK,KAAK;AACzF,0BAAI,MAAM,oBAAoB,SAAU;AACxC,8BAAQ,SAAS,GAAG;AACpB,8BAAQ,SAAS,GAAG;AAAA,oBACtB;AAAA,oBACA,UAAU,OAAO,IAAI,QAAQ,CAAC;AAAA,kBAChC;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF,CAAC;AAED,eAAO,CAAC,QAAQ,GAAG,IAAI;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AACF;;;ACjYA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;;;ACAzD,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,iBAAiB;;;ACD1B,SAAS,WAAW,WAAAC,gBAA8B;AAClD,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,oBAAAC,yBAAwB;AAkBjC,IAAM,eAA8B,CAAC;AAErC,SAAS,WAAW,MAAmC;AACrD,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO,aAAa,aAAa,SAAS,CAAC,MAAM;AACnD;AAEO,SAAS,iBAAiB,OAAwC;AACvE,QAAM,OAAOC,cAAiC,IAAI;AAElD,QAAM,UAAU,MAAM;AACpB,QAAI,KAAK,MAAM,UAAU,KAAK,EAAG;AACjC,UAAM,YAAY;AAAA,EACpB;AAEA,QAAM,YAAY,CAAC,UAAyB;AAC1C,QAAI,CAAC,WAAW,KAAK,CAAC,EAAG;AACzB,QAAI,MAAM,QAAQ,SAAU;AAE5B,UAAM,kBAAkB,KAAK;AAC7B,QAAI,CAAC,MAAM,kBAAkB;AAC3B,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,UAAwB;AAC7C,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,SAAS,CAAC,WAAW,KAAK,EAAG;AAElC,UAAM,SAAS,MAAM;AACrB,UAAM,YAAY,CAAC,UAAU,CAAC,MAAM,SAAS,MAAM;AACnD,QAAI,CAAC,UAAW;AAEhB,UAAM,oBAAoB,KAAK;AAC/B,UAAM,uBAAuB,KAAK;AAClC,QAAI,CAAC,MAAM,kBAAkB;AAC3B,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,UAAsB;AACvC,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,SAAS,CAAC,WAAW,KAAK,EAAG;AAElC,UAAM,SAAS,MAAM;AACrB,UAAM,YAAY,CAAC,UAAU,CAAC,MAAM,SAAS,MAAM;AACnD,QAAI,CAAC,UAAW;AAEhB,UAAM,oBAAoB,KAAK;AAC/B,UAAM,iBAAiB,KAAK;AAC5B,QAAI,CAAC,MAAM,kBAAkB;AAC3B,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM,KAAK,GAAG,kBAAkB,OAAO,aAAa,cAAc,WAAW;AAEpG,QAAM,kBAAkBC,kBAAgC,gBAAgB,WAAW,WAAW;AAAA,IAC5F,SAAS;AAAA,IACT,WAAW;AAAA,EACb,CAAC;AACD,QAAM,sBAAsBA,kBAA+B,gBAAgB,eAAe,eAAe;AAAA,IACvG,SAAS;AAAA,IACT,WAAW;AAAA,EACb,CAAC;AACD,QAAM,kBAAkBA,kBAA6B,gBAAgB,WAAW,WAAW;AAAA,IACzF,SAAS;AAAA,IACT,WAAW;AAAA,EACb,CAAC;AAED,EAAAC,SAAQ,MAAM;AACZ,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,MAAO;AACZ,iBAAa,KAAK,KAAK;AACvB,oBAAgB,MAAM;AACtB,wBAAoB,MAAM;AAC1B,oBAAgB,MAAM;AAAA,EACxB,CAAC;AAED,YAAU,MAAM;AACd,oBAAgB,KAAK;AACrB,wBAAoB,KAAK;AACzB,oBAAgB,KAAK;AAErB,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,MAAO;AACZ,UAAM,QAAQ,aAAa,QAAQ,KAAK;AACxC,QAAI,SAAS,GAAG;AACd,mBAAa,OAAO,OAAO,CAAC;AAAA,IAC9B;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,UAAU;AAAA,MACV,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,MAChB,KAAK,CAAC,OAA2B;AAC/B,aAAK,EAAE;AAAA,MACT;AAAA,MACA,0BAA0B;AAAA,MAC1B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;ACjIA,SAAS,iBAAAC,iBAAe,gBAAAC,eAAc,cAAAC,oBAAiC;AACvE,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,oBAAAC,yBAAwB;AAmDjC,IAAM,gBAAgBC,gBAAyC,IAAI;AAEnE,SAAS,gBACP,YACA,aACA,MACA,OACA,YACA,aACsD;AACtD,MAAI;AACJ,MAAI;AAEJ,MAAI,SAAS,UAAU;AACrB,QAAI,WAAW,SAAS;AAAA,EAC1B,WAAW,SAAS,OAAO;AACzB,QAAI,WAAW,MAAM,YAAY,SAAS;AAAA,EAC5C,OAAO;AACL,QAAI,WAAW;AAAA,EACjB;AAEA,MAAI,SAAS,SAAS;AACpB,QAAI,WAAW,QAAQ;AAAA,EACzB,WAAW,SAAS,QAAQ;AAC1B,QAAI,WAAW,OAAO,YAAY,QAAQ;AAAA,EAC5C,OAAO;AACL,QAAI,WAAW;AAAA,EACjB;AAEA,MAAI,SAAS,SAAS,SAAS,UAAU;AACvC,QAAI,UAAU,UAAU;AACtB,UAAI,WAAW,QAAQ,WAAW,QAAQ,YAAY,SAAS;AAAA,IACjE,WAAW,UAAU,OAAO;AAC1B,UAAI,WAAW,QAAQ,YAAY;AAAA,IACrC;AACA,SAAK;AAAA,EACP,OAAO;AACL,QAAI,UAAU,UAAU;AACtB,UAAI,WAAW,OAAO,WAAW,SAAS,YAAY,UAAU;AAAA,IAClE,WAAW,UAAU,OAAO;AAC1B,UAAI,WAAW,SAAS,YAAY;AAAA,IACtC;AACA,SAAK;AAAA,EACP;AAEA,QAAM,YACJ,UAAU,WAAY,OAA4B,GAAG,IAAI,IAAI,KAAK;AAEpE,SAAO,EAAE,GAAG,GAAG,UAAU;AAC3B;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,aAAaC,cAAiC,IAAI;AACxD,QAAM,cAAcA,cAAiC,IAAI;AACzD,QAAM,mBAAmBA,cAA8B,QAAQ;AAE/D,QAAM,UAA8B;AAAA,IAClC,QAAQ,MAAM,WAAW;AAAA,IACzB,WAAW,UAAQ;AACjB,iBAAW,IAAI;AAAA,IACjB;AAAA,IACA,SAAS,MAAM,YAAY;AAAA,IAC3B,YAAY,UAAQ;AAClB,kBAAY,IAAI;AAAA,IAClB;AAAA,IACA,WAAW,MAAM,iBAAiB;AAAA,IAClC,cAAc,eAAa;AACzB,uBAAiB,SAAS;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,cAAc;AAAA,IACpB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,UAAUC,aAAW,aAAa;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,KAAK,CAAC,SAA6B;AACjC,gBAAQ,UAAU,IAAI;AACtB,YAAI,OAAO,MAAM,QAAQ,YAAY;AACnC,gBAAM,IAAI,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACA,sBAAsB;AAAA,MACtB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAUA,aAAW,aAAa;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAEA,QAAM,OAAO,MAAM,QAAQ;AAC3B,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,aAAa,MAAM,cAAc;AACvC,QAAM,cAAc,MAAM,eAAe;AACzC,QAAM,WAAW,MAAM,YAAY;AACnC,QAAM,YAAY,MAAM,MAAM,IAA0B,gBAAgB;AAExE,QAAM,SAAS,MAAM;AACnB,UAAM,SAAS,QAAQ,OAAO;AAC9B,UAAM,UAAU,QAAQ,QAAQ;AAChC,QAAI,CAAC,UAAU,CAAC,QAAS;AAEzB,UAAM,aAAa,OAAO,sBAAsB;AAChD,UAAM,cAAc,QAAQ,sBAAsB;AAClD,UAAM,EAAE,GAAG,GAAG,UAAU,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,YAAQ,MAAM,WAAW;AACzB,YAAQ,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC;AACrC,YAAQ,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC,CAAC;AACpC,YAAQ,QAAQ,YAAY;AAC5B,YAAQ,aAAa,SAAS;AAAA,EAChC;AAEA,EAAAC,cAAa,MAAM;AACjB,YAAQ,OAAO;AACf,YAAQ,QAAQ;AAChB,WAAO;AAAA,EACT,CAAC;AAED,QAAM,iBAAiB,MAAM,OAAO;AACpC,QAAM,iBAAiB,MACrB,QAAQ,OAAO,GAAG,kBAAkB,OAAO,aAAa,cAAc,WAAW;AACnF,QAAM,eAAe,MAAM,eAAe,GAAG,eAAe;AAE5D,EAAAC,kBAAiB,cAAc,UAAU,cAAc;AACvD,EAAAA,kBAAiB,gBAAgB,UAAU,gBAAgB,EAAE,SAAS,KAAK,CAAC;AAE5E,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,IAAI;AAAA,MACJ,KAAK,CAAC,SAA6B;AACjC,gBAAQ,WAAW,IAAI;AACvB,YAAI,OAAO,MAAM,QAAQ,YAAY;AACnC,gBAAM,IAAI,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACA,MAAM,MAAM,QAAQ;AAAA,MACpB,uBAAuB;AAAA,MACvB,kBAAkB,MAAM,QAAQ,UAAU;AAAA,MAC1C,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,OAAO,MAAM,QAAQ;AAE3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,OAAO;AAAA,QACL,OAAO,GAAG,IAAI;AAAA,QACd,QAAQ,GAAG,IAAI;AAAA,QACf,SAAS;AAAA,QACT,WAAW;AAAA,QACX,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAClD,MAAM,QACP,CAAC;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACF;;;AFjMA,IAAM,iBAAiBC,gBAA0C,IAAI;AAErE,SAAS,kBAAkB,WAAwC;AACjE,QAAM,UAAUC,aAAW,cAAc;AACzC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,kCAAkC;AAAA,EAChE;AACA,SAAO;AACT;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AACD,QAAM,SAAS,MAAM,MAAM,IAAI,SAAS;AAExC,QAAM,UAA+B;AAAA,IACnC,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,WAAS,UAAU,IAAI,KAAK;AAAA,IACrC,WAAW,GAAG,MAAM;AAAA,IACpB,YAAY,UAAuB;AAAA,EACrC;AAEA,SAAO;AAAA,IACL,MAAM,eAAe;AAAA,IACrB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,UAAU,kBAAkB,gBAAgB;AAClD,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,UAAU,MAAM;AAEtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,UAAU,UAAU;AAAA,QAClB,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,QAC5E,KAAK,YAAY,QAAQ,YAAY,OAAO;AAAA,QAC5C,iBAAkB,MAAM,eAAe,KAA4B;AAAA,QACnE,iBAAiB,MAAM,QAAQ,KAAK;AAAA,QACpC,iBAAiB,QAAQ;AAAA,QACzB,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,QAC/C,SAAS,CAAC,UAAsB;AAC9B,gBAAM,UAAU,KAAK;AACrB,cAAI,MAAM,iBAAkB;AAC5B,kBAAQ,QAAQ,CAAC,QAAQ,KAAK,CAAC;AAAA,QACjC;AAAA,QACA,UAAU,MAAM;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,SAA8B,OAAyC;AAClG,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,iBAAiB,MAAM;AAAA,MACvB,mBAAmB,MAAM;AAAA,MACzB,sBAAsB,MAAM;AAAA,MAC5B,gBAAgB,MAAM;AAAA,MACtB,WAAW,MAAM;AACf,cAAM,YAAY;AAClB,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,iBAAiB;AAAA,UACjB,mBAAmB;AAAA,UACnB,sBAAsB;AAAA,UACtB,gBAAgB;AAAA,UAChB,IAAI,MAAM,MAAM,QAAQ;AAAA,UACxB,MAAM,MAAM,QAAQ;AAAA,UACpB,wBAAwB;AAAA,UACxB,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,UAC/C,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eAAe,OAAyC;AACtE,QAAM,UAAU,kBAAkB,gBAAgB;AAClD,QAAM,UAAU,oBAAoB,SAAS,KAAK;AAElD,QAAM,QAAQ,MAAQ,QAAQ,KAAK,KAAK,MAAM,aAAc,UAAU;AAEtE,MAAI,MAAM,UAAU,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,iCAAiC;AAAA,MACjC,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,UAAU,kBAAkB,cAAc;AAChD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAa,MAAM,QAA+B,WAAY,MAAM;AAAA,IACpG,SAAS,CAAC,UAAsB;AAC9B,YAAM,UAAU,KAAK;AACrB,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,QAAQ,KAAK;AAAA,IACvB;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;;;ADpLA,SAASC,QAAO,OAA8B;AAC5C,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAM,OAAO,iBAAiB,OAAO,IAAI,KAAK,MAAM,QAAQ,CAAC,IAAI,IAAI,KAAK,KAAK;AAC/E,SAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,OAAO;AAC/C;AAEA,SAAS,QAAQ,GAAgB,GAAyB;AACxD,MAAI,CAAC,KAAK,CAAC,EAAG,QAAO,MAAM;AAC3B,SACE,EAAE,YAAY,MAAM,EAAE,YAAY,KAClC,EAAE,SAAS,MAAM,EAAE,SAAS,KAC5B,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAE9B;AAoDA,IAAM,oBAAoBC,gBAA6C,IAAI;AAE3E,SAAS,qBAAqB,WAA2C;AACvE,QAAM,UAAUC,aAAW,iBAAiB;AAC5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,qCAAqC;AAAA,EACnE;AACA,SAAO;AACT;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,SAAS,MAAM,MAAM,IAAI,aAAa;AAE5C,QAAM,aAAa,wBAAqC;AAAA,IACtD,OACE,MAAM,UAAU,SACZ,UACC,MAAM;AACL,YAAM,OAAOF,QAAO,KAAK,MAAM,OAAkC,MAAS,CAAC;AAC3E,aAAO,OAAO,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC,IAAI;AAAA,IAChF;AAAA,IACN,cAAcA,QAAO,MAAM,YAAY;AAAA,IACvC,UAAU,MAAM;AAAA,IAChB,QAAQ,CAAC,GAAG,MAAM,QAAQ,GAAG,CAAC;AAAA,EAChC,CAAC;AAED,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,UAAkC;AAAA,IACtC;AAAA,IACA,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,IACvC,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,UAAQ,UAAU,IAAI,IAAI;AAAA,IACnC,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB;AAAA,IACxB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,MAAM,MAAM,QAAQ,KAAK;AAAA,UACzB,cAAc,CAAC,SAAkB,QAAQ,QAAQ,IAAI;AAAA,UACrD,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,OAAyC;AACzE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,4BAA4B;AAAA,MAC5B,UAAU,MAAM,YAAY,EAAE,MAAM,iBAAiB,OAAO,CAAC,EAAE;AAAA,IACjE;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,UAAU,qBAAqB,iBAAiB;AAEtD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,aAAa;AAAA,MACb,0BAA0B;AAAA,MAC1B,UACE,MAAM,aACL,MAAM;AACL,cAAM,QAAQ,QAAQ,MAAM;AAC5B,YAAI,CAAC,OAAO;AACV,iBAAO,MAAM,eAAe;AAAA,QAC9B;AACA,eAAO,IAAI,KAAK,eAAe,MAAM,UAAU,QAAQ,OAAO,GAAG,MAAM,iBAAiB,EAAE,WAAW,SAAS,CAAC,EAAE,OAAO,KAAK;AAAA,MAC/H;AAAA,IACJ;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,OAAyC;AACzE,QAAM,UAAU,qBAAqB,mBAAmB;AAExD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,eAAe;AAAA,MACf,IAAI,MAAM,MAAM,GAAG,QAAQ,MAAM;AAAA,MACjC,MAAM,MAAM,QAAQ;AAAA,MACpB,4BAA4B;AAAA,MAC5B,UACE,MAAM,YACL;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,eAAe,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,IACJ;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,qBAAqB,oBAAoB;AAEzD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,eAAe;AAAA,MACf,QAAQ,MAAM,UAAU,QAAQ;AAAA,MAChC,OAAO,MAAM,QAAQ,MAAM;AAAA,MAC3B,eAAe,CAAC,UAAuB;AACrC,cAAM,gBAAgB,KAAK;AAC3B,gBAAQ,SAAS,KAAK;AACtB,aAAK,MAAM,iBAAiB,SAAS,OAAO;AAC1C,kBAAQ,QAAQ,KAAK;AAAA,QACvB;AAAA,MACF;AAAA,MACA,6BAA6B;AAAA,MAC7B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;AI1NA,SAAS,iBAAAG,iBAAe,cAAAC,oBAAiC;AA6CzD,IAAM,gBAAgBC,gBAAyC,IAAI;AAEnE,SAAS,iBAAiB,WAAuC;AAC/D,QAAM,UAAUC,aAAW,aAAa;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,iCAAiC;AAAA,EAC/D;AACA,SAAO;AACT;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,UAA8B;AAAA,IAClC,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,IACvC,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,UAAQ,UAAU,IAAI,IAAI;AAAA,IACnC,UAAU,MAAM,MAAM,YAAY;AAAA,EACpC;AAEA,SAAO;AAAA,IACL,MAAM,cAAc;AAAA,IACpB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,iBAAiB,eAAe;AAChD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,UAAU,MAAM,QAAQ,SAAS;AAAA,IACjC,iBAAiB;AAAA,IACjB,iBAAiB,MAAM,QAAQ,KAAK;AAAA,IACpC,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,IAC/C,uBAAuB;AAAA,IACvB,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,oBAAoB,QAAQ,SAAS,EAAG;AAClD,cAAQ,QAAQ,CAAC,QAAQ,KAAK,CAAC;AAAA,IACjC;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,YAAY,OAAqE;AAC/F,QAAM,UAAU,iBAAiB,aAAa;AAE9C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,qBAAqB;AAAA,MACrB,UAAU,MAAM,QAAQ,MAAM,KAAK,MAAM,eAAe;AAAA,IAC1D;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,iBAAiB,eAAe;AAEhD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,+BAA+B;AAAA,MAC/B,UAAU,MACR,QAAQ,KAAK,KAAK,MAAM,aACpB;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,uBAAuB;AAAA,UACvB,UAAU,MAAM;AAAA,QAClB;AAAA,MACF,IACA;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,UAAU,iBAAiB,YAAY;AAC7C,QAAM,WAAW,MAAM,QAAQ,MAAM,MAAM,MAAM;AACjD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAW,WAAW,MAAM;AAAA,IAC5D,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,cAAc,MAAO,SAAS,IAAI,YAAY;AAAA,IAC9C,oBAAoB,MAAM;AAAA,IAC1B,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,SAAS,MAAM,KAAK;AAC5B,cAAQ,QAAQ,KAAK;AAAA,IACvB;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;;;ACrKA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,gBAAAC,qBAAoB;AA2C7B,IAAM,kBAAkBC,gBAA2C,IAAI;AAEvE,SAAS,mBAAmB,WAAyC;AACnE,QAAM,UAAUC,aAAW,eAAe;AAC1C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,mCAAmC;AAAA,EACjE;AACA,SAAO;AACT;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,cAAcC,cAAa,EAAE;AAEnC,QAAM,UAAgC;AAAA,IACpC,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,IACvC,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,UAAQ,UAAU,IAAI,IAAI;AAAA,IACnC,OAAO,MAAM,YAAY;AAAA,IACzB,UAAU,WAAS,YAAY,KAAK;AAAA,EACtC;AAEA,SAAO;AAAA,IACL,MAAM,gBAAgB;AAAA,IACtB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,mBAAmB,eAAe;AAElD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,iBAAiB,MAAM,QAAQ,KAAK;AAAA,MACpC,qBAAqB;AAAA,MACrB,OAAO,MAAM,QAAQ,MAAM,KAAK,QAAQ,MAAM;AAAA,MAC9C,uBAAuB;AAAA,MACvB,SAAS,CAAC,UAAsB;AAC9B;AAAC,QAAC,MAAM,UAAwD,KAAK;AACrE,gBAAQ,QAAQ,IAAI;AAAA,MACtB;AAAA,MACA,SAAS,CAAC,UAAiB;AACzB;AAAC,QAAC,MAAM,UAAmD,KAAK;AAChE,cAAM,SAAS,MAAM;AACrB,YAAI,CAAC,OAAQ;AACb,gBAAQ,SAAS,OAAO,KAAK;AAC7B,gBAAQ,QAAQ,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,UAAU,mBAAmB,cAAc;AAEjD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,8BAA8B;AAAA,MAC9B,UAAU,MACR,QAAQ,KAAK,KAAK,MAAM,aACpB;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,sBAAsB;AAAA,UACtB,UAAU,MAAM;AAAA,QAClB;AAAA,MACF,IACA;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,UAAU,mBAAmB,cAAc;AACjD,QAAM,MAAM,MAAM,MAAM;AAExB,QAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,QAAQ,MAAM,EAAE,KAAK,EAAE,YAAY;AACjD,QAAI,CAAC,MAAO,QAAO;AAEnB,UAAM,OACJ,OAAO,MAAM,aAAa,WACtB,MAAM,WACN,MAAM,QAAQ,MAAM,QAAQ,IAC1B,MAAM,SAAS,KAAK,GAAG,IACvB,MAAM;AAEd,WAAO,OAAO,IAAI,EAAE,YAAY,EAAE,SAAS,KAAK;AAAA,EAClD;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,8BAA8B,MAAM;AAAA,MACpC,UAAU,MACR,QAAQ,IACJ,UAAU;AAAA,QACR,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAW,WAAW,MAAM;AAAA,QAC5D,MAAM;AAAA,QACN,sBAAsB,MAAM;AAAA,QAC5B,SAAS,CAAC,UAAsB;AAC9B;AAAC,UAAC,MAAM,UAAwD,KAAK;AACrE,cAAI,MAAM,iBAAkB;AAC5B,kBAAQ,SAAS,MAAM,KAAK;AAC5B,kBAAQ,SAAS,MAAM,KAAK;AAC5B,kBAAQ,QAAQ,KAAK;AAAA,QACvB;AAAA,QACA,UAAU,MAAM;AAAA,MAClB,CAAC,IACD;AAAA,IACR;AAAA,EACF;AACF;;;ACrLA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AAsCzD,IAAM,eAAeC,gBAAwC,IAAI;AAEjE,SAAS,gBAAgB,WAAsC;AAC7D,QAAM,UAAUC,aAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,gCAAgC;AAAA,EAC9D;AACA,SAAO;AACT;AAEO,SAAS,KAAK,OAA4B;AAC/C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa;AAAA,MACb,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,UAAU,OAAiC;AACzD,QAAM,UAAU,MAAM,MAAM,OAAO,MAAM,OAAO,SAAS,MAAM,IAAI,KAAK,SAAY,OAAO;AAE3F,QAAM,UAA6B;AAAA,IACjC,WAAW;AAAA,IACX,eAAe,GAAG,OAAO;AAAA,IACzB,WAAW,GAAG,OAAO;AAAA,EACvB;AAEA,SAAO;AAAA,IACL,MAAM,aAAa;AAAA,IACnB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,UAAU,OAAoE;AAC5F,QAAM,QAAQ,gBAAgB,WAAW;AAEzC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS,MAAM,WAAW,MAAM;AAAA,MAChC,mBAAmB;AAAA,MACnB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,QAAQ,gBAAgB,aAAa;AAC3C,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI,MAAM,MAAM,MAAM;AAAA,MACtB,oBAAoB,GAAG,MAAM,aAAa,IAAI,MAAM,SAAS;AAAA,MAC7D,qBAAqB;AAAA,MACrB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,QAAQ,gBAAgB,iBAAiB;AAE/C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAI,MAAM,MAAM,MAAM;AAAA,MACtB,yBAAyB;AAAA,MACzB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,QAAQ,gBAAgB,aAAa;AAE3C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAI,MAAM,MAAM,MAAM;AAAA,MACtB,MAAM,MAAM,QAAQ;AAAA,MACpB,qBAAqB;AAAA,MACrB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;ACvIA,SAAS,aAAAC,YAAW,WAAAC,gBAA8B;AAClD,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,oBAAAC,yBAAwB;;;ACQ1B,SAAS,uBAAuB,WAAuC;AAC5E,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,UAAU,iBAA8B,UAAU,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,aAAW;AAChG,QAAI,QAAQ,aAAa,UAAU,EAAG,QAAO;AAC7C,QAAI,QAAQ,aAAa,aAAa,MAAM,OAAQ,QAAO;AAC3D,QAAI,QAAQ,WAAW,EAAG,QAAO;AACjC,UAAM,QAAQ,OAAO,iBAAiB,OAAO;AAC7C,WAAO,MAAM,YAAY,UAAU,MAAM,eAAe;AAAA,EAC1D,CAAC;AACH;AAEO,SAAS,WAAW,WAA8B;AACvD,QAAM,CAAC,KAAK,IAAI,uBAAuB,SAAS;AAChD,SAAO,MAAM;AACf;;;ADdO,SAAS,WAAW,OAAkC;AAC3D,QAAM,OAAOC,cAAiC,IAAI;AAClD,MAAI,kBAAkC;AAEtC,QAAM,YAAY,CAAC,UAAyB;AAC1C,QAAI,MAAM,QAAQ,MAAO;AACzB,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,MAAO;AAEZ,UAAM,UAAU,KAAK,MAAM,SAAS,IAAI;AACxC,QAAI,CAAC,QAAS;AAEd,UAAM,aAAa,uBAAuB,KAAK;AAC/C,QAAI,WAAW,WAAW,GAAG;AAC3B,YAAM,eAAe;AACrB;AAAA,IACF;AAEA,UAAM,QAAQ,WAAW,CAAC;AAC1B,UAAM,OAAO,WAAW,WAAW,SAAS,CAAC;AAC7C,UAAM,UAAU,MAAM,iBAAiB,UAAU;AAEjD,QAAI,MAAM,UAAU;AAClB,UAAI,WAAW,SAAS,CAAC,MAAM,SAAS,MAAM,GAAG;AAC/C,YAAI,KAAK,MAAM,MAAM,IAAI,GAAG;AAC1B,gBAAM,eAAe;AACrB,eAAK,MAAM;AAAA,QACb;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,WAAW,MAAM;AACnB,UAAI,KAAK,MAAM,MAAM,IAAI,GAAG;AAC1B,cAAM,eAAe;AACrB,cAAM,MAAM;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM,KAAK,GAAG,kBAAkB,OAAO,aAAa,cAAc,WAAW;AACpG,EAAAC,kBAAgC,gBAAgB,WAAW,WAAW,EAAE,SAAS,KAAK,CAAC;AAEvF,EAAAC,SAAQ,MAAM;AACZ,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,MAAO;AACZ,UAAM,MAAM,eAAe;AAC3B,QAAI,CAAC,IAAK;AACV,sBAAkB,IAAI;AAEtB,QAAI,KAAK,MAAM,WAAW,IAAI,GAAG;AAC/B,YAAM,aAAa,IAAI,YAAY,wBAAwB;AAC3D,YAAM,mBAAmB,UAAU;AACnC,UAAI,CAAC,WAAW,kBAAkB;AAChC,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,QAAI,KAAK,MAAM,cAAc,IAAI,KAAK,2BAA2B,aAAa;AAC5E,YAAM,eAAe,IAAI,YAAY,0BAA0B;AAC/D,YAAM,qBAAqB,YAAY;AACvC,UAAI,CAAC,aAAa,kBAAkB;AAClC,wBAAgB,MAAM;AAAA,MACxB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,MAAM;AAAA,MACN,WAAW;AAAA,MACX,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,KAAK,CAAC,OAA2B;AAC/B,aAAK,EAAE;AAAA,MACT;AAAA,MACA,oBAAoB;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,UAAU,OAAmD;AAC3E,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;AEnHA,SAAS,gBAAAC,eAAc,aAAAC,kBAAgC;AASvD,IAAI,YAAY;AAChB,IAAI,mBAAmB;AACvB,IAAI,uBAAuB;AAE3B,SAAS,iBAAuB;AAC9B,MAAI,OAAO,aAAa,YAAa;AAErC,MAAI,cAAc,GAAG;AACnB,UAAM,OAAO,SAAS;AACtB,uBAAmB,KAAK,MAAM;AAC9B,2BAAuB,KAAK,MAAM;AAElC,UAAM,iBAAiB,OAAO,aAAa,SAAS,gBAAgB;AACpE,SAAK,MAAM,WAAW;AACtB,QAAI,iBAAiB,GAAG;AACtB,WAAK,MAAM,eAAe,GAAG,cAAc;AAAA,IAC7C;AAAA,EACF;AAEA,eAAa;AACf;AAEA,SAAS,mBAAyB;AAChC,MAAI,OAAO,aAAa,YAAa;AACrC,MAAI,cAAc,EAAG;AAErB,eAAa;AAEb,MAAI,cAAc,GAAG;AACnB,UAAM,OAAO,SAAS;AACtB,SAAK,MAAM,WAAW;AACtB,SAAK,MAAM,eAAe;AAAA,EAC5B;AACF;AAEO,SAAS,WAAW,OAAkC;AAC3D,MAAI,SAAS;AAEb,EAAAC,cAAa,MAAM;AACjB,UAAM,UAAU,KAAK,MAAM,SAAS,IAAI;AAExC,QAAI,WAAW,CAAC,QAAQ;AACtB,qBAAe;AACf,eAAS;AACT;AAAA,IACF;AAEA,QAAI,CAAC,WAAW,QAAQ;AACtB,uBAAiB;AACjB,eAAS;AAAA,IACX;AAAA,EACF,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,QAAI,QAAQ;AACV,uBAAiB;AACjB,eAAS;AAAA,IACX;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ACtEA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AAsBzD,IAAM,oBAAoBC,gBAA4C,IAAI;AAEnE,SAAS,mBAAmB,OAA0C;AAC3E,MAAI,aAAiC;AACrC,MAAI,gBAAoC;AACxC,MAAI,gBAA+B;AACnC,MAAI,mBAAkC;AAEtC,QAAM,cAAc,CAAC,MAA0B,YAAoB;AACjE,QAAI,CAAC,KAAM;AACX,SAAK,cAAc;AACnB,mBAAe,MAAM;AACnB,UAAI,MAAM;AACR,aAAK,cAAc;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,SAAiB,YAA8B;AAC/D,UAAM,aAAa,SAAS,cAAc;AAC1C,QAAI,eAAe,aAAa;AAC9B,UAAI,eAAe;AACjB,oBAAY,eAAe,OAAO;AAAA,MACpC,OAAO;AACL,2BAAmB;AAAA,MACrB;AACA;AAAA,IACF;AAEA,QAAI,YAAY;AACd,kBAAY,YAAY,OAAO;AAAA,IACjC,OAAO;AACL,sBAAgB;AAAA,IAClB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB;AAAA,IACxB,OAAO;AAAA,MACL,OAAO,EAAE,SAAS;AAAA,MAClB,UAAU;AAAA,QACR,MAAM;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,aAAa;AAAA,YACb,eAAe;AAAA,YACf,oBAAoB;AAAA,YACpB,KAAK,CAAC,SAA6B;AACjC,2BAAa;AACb,kBAAI,QAAQ,eAAe;AACzB,4BAAY,MAAM,aAAa;AAC/B,gCAAgB;AAAA,cAClB;AAAA,YACF;AAAA,YACA,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,aAAa;AAAA,YACb,eAAe;AAAA,YACf,oBAAoB;AAAA,YACpB,KAAK,CAAC,SAA6B;AACjC,8BAAgB;AAChB,kBAAI,QAAQ,kBAAkB;AAC5B,4BAAY,MAAM,gBAAgB;AAClC,mCAAmB;AAAA,cACrB;AAAA,YACF;AAAA,YACA,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eAAkD;AAChE,QAAM,UAAUC,aAAW,iBAAiB;AAC5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AACA,SAAO,QAAQ;AACjB;AAEO,SAAS,SAAS,OAAgC;AACvD,QAAM,WAAW,aAAa;AAE9B,MAAI,MAAM,SAAS;AACjB,aAAS,MAAM,SAAS,EAAE,YAAY,MAAM,WAAW,CAAC;AAAA,EAC1D;AAEA,SAAO;AACT;;;ACrHA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AA2BzD,IAAM,oBAAoBD,gBAA6C,IAAI;AAE3E,SAAS,qBAAqB,WAA2C;AACvE,QAAM,UAAUC,aAAW,iBAAiB;AAC5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,iCAAiC;AAAA,EAC/D;AACA,SAAO;AACT;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,UAAkC;AAAA,IACtC,aAAa,EAAE,SAAS,KAAK;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB;AAAA,IACxB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,oBAAoB;AAAA,UACpB,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,qBAAqB,oBAAoB;AAEzD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,KAAK,CAAC,SAA6B;AACjC,gBAAQ,YAAY,UAAU;AAAA,MAChC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAClD,MAAM,QACP,CAAC;AAAA,MACP;AAAA,MACA,6BAA6B;AAAA,MAC7B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,QAAM,cAAc,MAAM,eAAe;AAEzC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,8BAA8B;AAAA,MAC9B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,0BAA0B;AAAA,MAC1B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;ACvGA,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,oBAAAC,yBAAwB;AAmCjC,SAAS,MAAM,OAAe,KAAa,KAAqB;AAC9D,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC;AAC3C;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,QAAM,YAAY,MAAM,aAAa;AAErC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,WAAW;AAAA,MACX,8BAA8B;AAAA,MAC9B,kBAAkB;AAAA,MAClB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,eAAe,cAAc,eAAe,QAAQ;AAAA,QACpD,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAClD,MAAM,QACP,CAAC;AAAA,MACP;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,cAAc,MAAM,eAAe;AAEzC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,wBAAwB;AAAA,MACxB,OAAO;AAAA,QACL,WAAW,GAAG,WAAW;AAAA,QACzB,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAClD,MAAM,QACP,CAAC;AAAA,MACP;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,MAAI,OAA2B;AAC/B,QAAM,YAAYD,cAAqC,IAAI;AAC3D,QAAM,eAAe,MAAO,OAAO,WAAW,cAAc,SAAS;AAErE,QAAM,SAAS,CAAC,cAA4B;AAC1C,UAAM,QAAQ,UAAU;AACxB,QAAI,CAAC,MAAO;AAEZ,UAAM,aAAa,MAAM,cAAc,eAAe,UAAU,UAAU,UAAU;AACpF,UAAM,QAAQ,aAAa,MAAM;AAEjC,UAAM,aAAa,MAAM,YAAY;AACrC,UAAM,aAAa,MAAM,YAAY;AAErC,UAAM,kBAAkB,MAAO,aAAa,MAAM,YAAa,KAAK,MAAM,SAAS,MAAM,OAAO;AAChG,UAAM,kBAAkB,MAAO,aAAa,MAAM,YAAa,KAAK,MAAM,SAAS,MAAM,OAAO;AAEhG,UAAM,KAAK,MAAM,YAAY,GAAG,eAAe;AAC/C,UAAM,KAAK,MAAM,YAAY,GAAG,eAAe;AAAA,EACjD;AAEA,QAAM,eAAeC,kBAA+B,cAAc,eAAe,QAAQ;AAAA,IACvF,WAAW;AAAA,EACb,CAAC;AACD,QAAM,aAAaA;AAAA,IACjB;AAAA,IACA;AAAA,IACA,MAAM;AACJ,gBAAU,IAAI;AACd,mBAAa,KAAK;AAClB,iBAAW,KAAK;AAAA,IAClB;AAAA,IACA,EAAE,WAAW,MAAM;AAAA,EACrB;AAEA,QAAM,gBAAgB,CAAC,UAAwB;AAC7C,QAAI,CAAC,KAAM;AAEX,UAAM,QAAQ,KAAK;AACnB,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,KAAK;AAElB,QAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAM;AAE9B,UAAM,YAAa,MAAM,aAAa,gBAAgB,KAAmC;AACzF,UAAM,YAAY,MAAM,sBAAsB;AAE9C,UAAM,WAAW,KAAK,sBAAsB;AAC5C,UAAM,WAAW,KAAK,sBAAsB;AAE5C,UAAM,WAAW,cAAc,eAAe,MAAM,UAAU,MAAM;AACpE,UAAM,YAAY,cAAc,eAAe,SAAS,QAAQ,SAAS;AACzE,UAAM,YAAY,cAAc,eAAe,SAAS,QAAQ,SAAS;AACzE,UAAM,YAAY,cAAc,eAAe,UAAU,QAAQ,UAAU;AAE3E,UAAM,UAAU,OAAO,KAAK,aAAa,eAAe,KAAK,GAAG;AAChE,UAAM,UAAU,OAAO,KAAK,aAAa,eAAe,KAAK,GAAG;AAChE,UAAM,UAAU,OAAO,KAAK,aAAa,eAAe,KAAK,IAAI;AACjE,UAAM,UAAU,OAAO,KAAK,aAAa,eAAe,KAAK,IAAI;AACjE,cAAU;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,iBAAa,MAAM;AACnB,eAAW,MAAM;AAAA,EACnB;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,KAAK,CAAC,OAA2B;AAC/B,eAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,MACV,yBAAyB;AAAA,MACzB;AAAA,MACA,UAAU,MAAM,aACZ;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,8BAA8B;AAAA,QAChC;AAAA,MACF,IACA;AAAA,IACN;AAAA,EACF;AACF;;;ACnLO,SAAS,YAAY,OAAmC;AAC7D,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,gBAAgB,GAAI,IAAI,QAAS,GAAG;AAE1C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO;AAAA,MACP,qBAAqB;AAAA,MACrB,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAClD,MAAM,QACP,CAAC;AAAA,MACP;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,OAAO;AAAA,YACL,UAAU;AAAA,YACV,OAAO;AAAA,UACT;AAAA,UACA,6BAA6B;AAAA,UAC7B,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACnBO,SAAS,SAAS,OAAgC;AACvD,QAAM,MAAM,MAAM,OAAO;AACzB,QAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,SAAS,CAAC,CAAC;AAEzD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO;AAAA,MACP,KAAK;AAAA,MACL,MAAM;AAAA,MACN,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,2BAA2B;AAAA,UAC3B,OAAO;AAAA,YACL,OAAO,GAAI,QAAQ,MAAO,GAAG;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,MAAM,OAA6B;AACjD,QAAM,MAAM,MAAM,OAAO;AACzB,QAAM,MAAM,MAAM,OAAO;AACzB,QAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,SAAS,CAAC,CAAC;AAE3D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,MAAM;AAAA,MACX,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,cAAc;AAAA,MACd,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;AC3DO,SAAS,SAAS,OAAgC;AACvD,QAAM,UAAU,MAAM,WAAW;AAEjC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,aAAa,UAAU,SAAS;AAAA,MAChC,iBAAiB;AAAA,MACjB,UAAU,UACN;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,6BAA6B;AAAA,UAC7B,UAAU,MAAM,YAAY;AAAA,QAC9B;AAAA,MACF,IACA,MAAM;AAAA,IACZ;AAAA,EACF;AACF;;;AC7BA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,oBAAAC,yBAAwB;AAgBjC,IAAM,sBAAsBH,gBAAwC;AAAA,EAClE,gBAAgB,MAAM;AACxB,CAAC;AAEM,SAAS,qBAAqB,OAA4C;AAC/E,QAAM,qBAAqBE,cAAa,KAAK;AAC7C,QAAM,iBAAiB,MAAO,OAAO,aAAa,cAAc,WAAW;AAE3E,EAAAC,kBAAiB,gBAAgB,WAAW,MAAM,mBAAmB,IAAI,GAAG,EAAE,SAAS,KAAK,CAAC;AAC7F,EAAAA,kBAAiB,gBAAgB,eAAe,MAAM,mBAAmB,KAAK,GAAG,EAAE,SAAS,KAAK,CAAC;AAElG,QAAM,UAAoC;AAAA,IACxC,gBAAgB,MAAM,mBAAmB;AAAA,EAC3C;AAEA,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,kBAAiC;AAC/C,QAAM,UAAUF,aAAW,mBAAmB;AAC9C,SAAO,QAAQ;AACjB;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,iBAAiB,gBAAgB;AACvC,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,sBAAsB,MAAO,eAAe,IAAI,SAAS;AAAA,MACzD,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;AC5DA,SAAS,iBAAAG,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,aAAAC,kBAAiB;AA0E1B,IAAM,gBAAgBC,gBAAyC,IAAI;AAEnE,SAAS,iBAAiB,WAAuC;AAC/D,QAAM,UAAUC,aAAW,aAAa;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,iCAAiC;AAAA,EAC/D;AACA,SAAO;AACT;AAEA,SAAS,aAAa,MAAe,YAA+B;AAClE,SAAO,QAAQ,CAAC,CAAC;AACnB;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AACD,QAAM,SAAS,MAAM,MAAM,IAAI,QAAQ;AAEvC,QAAM,UAA8B;AAAA,IAClC,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,WAAS,UAAU,IAAI,KAAK;AAAA,IACrC,OAAO,MAAM,MAAM,SAAS;AAAA,IAC5B,WAAW,GAAG,MAAM;AAAA,IACpB,SAAS,GAAG,MAAM;AAAA,IAClB,eAAe,GAAG,MAAM;AAAA,IACxB,YAAYC,WAAuB;AAAA,IACnC,YAAYA,WAAuB;AAAA,EACrC;AAEA,SAAO;AAAA,IACL,MAAM,cAAc;AAAA,IACpB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,aAAa,OAAoC;AAC/D,QAAM,UAAU,iBAAiB,cAAc;AAE/C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW,MAAM;AAAA,MACjB,UAAU,MAAO,aAAa,QAAQ,KAAK,GAAG,MAAM,UAAU,IAAI,MAAM,YAAY,OAAO;AAAA,IAC7F;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,iBAAiB,eAAe;AAChD,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,UAAU,MAAM;AAEtB,QAAM,UAAU,CAAC,UAAsB;AACrC,UAAM,UAAU,KAAK;AACrB,QAAI,MAAM,iBAAkB;AAC5B,YAAQ,QAAQ,CAAC,QAAQ,KAAK,CAAC;AAAA,EACjC;AAEA,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,KAAK,YAAY,QAAQ,YAAY,OAAO;AAAA,IAC5C,iBAAiB;AAAA,IACjB,iBAAiB,MAAM,QAAQ,KAAK;AAAA,IACpC,iBAAiB,QAAQ;AAAA,IACzB,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,IAC/C;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,iBAAiB,eAAe;AAEhD,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,MAC/C,uBAAuB;AAAA,MACvB,SAAS,CAAC,UAAsB;AAC9B,cAAM,UAAU,KAAK;AACrB,YAAI,MAAM,iBAAkB;AAC5B,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,YAAY,MAAM;AAAA,MAClB,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB,SAA6B,OAAqC;AAChG,QAAM,UAAU,MAAM;AAEtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,iBAAiB,MAAM;AAAA,MACvB,mBAAmB,MAAM;AAAA,MACzB,sBAAsB,MAAM;AAAA,MAC5B,gBAAgB,MAAM;AAAA,MACtB,WAAW,MAAM;AACf,cAAM,YAAY;AAClB,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS,MAAM,QAAQ,MAAM;AAAA,UAC7B,MAAM;AAAA,UACN,WAAW;AAAA,UACX,cAAc;AAAA,UACd,UAAU;AAAA,YACR,QAAQ,MAAM,IAAI,EAAE,MAAM,YAAY,OAAO,EAAE,SAAS,KAAK,EAAE,IAAI;AAAA,YACnE;AAAA,cACE,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,GAAG;AAAA,gBACH,QAAQ;AAAA,gBACR,YAAY;AAAA,gBACZ,WAAW;AAAA,gBACX,iBAAiB;AAAA,gBACjB,mBAAmB;AAAA,gBACnB,sBAAsB;AAAA,gBACtB,gBAAgB;AAAA,gBAChB,KAAK,YAAY,QAAQ,YAAY,OAAO;AAAA,gBAC5C,IAAI,MAAM,MAAM,QAAQ;AAAA,gBACxB,MAAM,MAAM,QAAQ;AAAA,gBACpB,cAAc,QAAQ,MAAM,IAAI,SAAS;AAAA,gBACzC,mBAAmB,MAAM,iBAAiB,KAAK,QAAQ;AAAA,gBACvD,oBAAoB,MAAM,kBAAkB,KAAK,QAAQ;AAAA,gBACzD,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,gBAC/C,uBAAuB;AAAA,gBACvB,UAAU,MAAM;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,iBAAiB,eAAe;AAChD,QAAM,OAAO,uBAAuB,SAAS,KAAK;AAElD,MAAI,MAAM,UAAU,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,YAAY,MAAM;AAAA,QAClB,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,gCAAgC;AAAA,MAChC,UAAU,MAAO,aAAa,QAAQ,KAAK,GAAG,MAAM,UAAU,IAAI,OAAO;AAAA,IAC3E;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,UAAU,iBAAiB,aAAa;AAC9C,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,SAAS,CAAC,UAAsB;AAC9B,YAAM,UAAU,KAAK;AACrB,UAAI,MAAM,iBAAkB;AAC5B,cAAQ,QAAQ,KAAK;AAAA,IACvB;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,YAAY,OAAoE;AAC9F,QAAM,UAAU,iBAAiB,aAAa;AAE9C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAK,MAAM,MAA6B,QAAQ;AAAA,MAChD,qBAAqB;AAAA,MACrB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,OAAoE;AACpG,QAAM,UAAU,iBAAiB,mBAAmB;AAEpD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAK,MAAM,MAA6B,QAAQ;AAAA,MAChD,2BAA2B;AAAA,MAC3B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;;;AC9RO,SAAS,gBAAgB,OAAkC;AAChE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,qBAAqB;AAC3B,IAAM,oBAAoB;AAC1B,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,yBAAyB;AAE/B,SAAS,mBAAmB,OAAqC;AACtE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,MAAM,QAAQ;AAAA,IACtB;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,OAAoE;AACpG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,OAAoE;AACpG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,EACF;AACF;;;ACrDA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,qBAAqB;AAiE9B,IAAM,yBAAyBC,gBAA2C;AAAA,EACxE,eAAe;AACjB,CAAC;AAED,IAAM,qBAAqBA,gBAA8C,IAAI;AAE7E,SAAS,sBAAsB,WAA4C;AACzE,QAAM,UAAUC,aAAW,kBAAkB;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,kCAAkC;AAAA,EAChE;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,OAAuC;AACrE,SAAO;AAAA,IACL,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,OAAO;AAAA,QACL,eAAe,MAAM,iBAAiB;AAAA,MACxC;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,WAAWA,aAAW,sBAAsB;AAClD,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AACD,QAAM,SAAS,MAAM,MAAM,IAAI,SAAS;AACxC,QAAM,gBAAgB;AAAA,IACpB,MAAM;AACJ,gBAAU,IAAI,IAAI;AAAA,IACpB;AAAA,IACA,MAAM,iBAAiB,SAAS;AAAA,EAClC;AAEA,QAAM,gBAAgB,MAAM,cAAc,OAAO;AACjD,QAAM,eAAe,MAAM,cAAc,IAAI;AAE7C,QAAM,UAAmC;AAAA,IACvC,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,WAAS,UAAU,IAAI,KAAK;AAAA,IACrC,eAAe,MAAM,MAAM,iBAAiB,SAAS;AAAA,IACrD,WAAW,GAAG,MAAM;AAAA,IACpB;AAAA,IACA;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,UAAU,sBAAsB,gBAAgB;AACtD,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,UAAU,MAAM;AACtB,MAAI,mBAAwC;AAE5C,QAAM,OAAO,CAAC,UAAiB;AAC7B,YAAQ,aAAa;AACrB,QAAI,iBAAiB,aAAc,OAAM,iBAAiB,KAAK;AAC/D,QAAI,iBAAiB,YAAY;AAC/B,YAAM,eAAe,KAAK;AAC1B,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,QAAQ,CAAC,UAAiB;AAC9B,YAAQ,cAAc;AACtB,YAAQ,QAAQ,KAAK;AACrB,QAAI,iBAAiB,aAAc,OAAM,iBAAiB,KAAK;AAC/D,QAAI,iBAAiB,YAAY;AAC/B,YAAM,eAAe,KAAK;AAC1B,YAAM,aAAa,KAAK;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,UAAU,CAAC,UAAsB;AACrC,UAAM,UAAU,KAAK;AACrB,YAAQ,aAAa;AAAA,EACvB;AAEA,QAAM,SAAS,CAAC,UAAsB;AACpC,UAAM,SAAS,KAAK;AACpB,YAAQ,cAAc;AACtB,YAAQ,QAAQ,KAAK;AAAA,EACvB;AAEA,QAAM,cAAc,CAAC,SAA6B;AAChD,uBAAmB;AACnB,uBAAmB;AAEnB,QAAI,OAAO,YAAY,YAAY;AACjC,cAAQ,IAAI;AAAA,IACd,WAAW,SAAS;AAClB,cAAQ,UAAU;AAAA,IACpB;AAEA,QAAI,CAAC,KAAM;AAEX,SAAK,iBAAiB,gBAAgB,IAAI;AAC1C,SAAK,iBAAiB,gBAAgB,KAAK;AAC3C,SAAK,iBAAiB,aAAa,IAAI;AACvC,SAAK,iBAAiB,YAAY,KAAK;AACvC,SAAK,iBAAiB,SAAS,OAAO;AACtC,SAAK,iBAAiB,QAAQ,MAAM;AAEpC,uBAAmB,MAAM;AACvB,WAAK,oBAAoB,gBAAgB,IAAI;AAC7C,WAAK,oBAAoB,gBAAgB,KAAK;AAC9C,WAAK,oBAAoB,aAAa,IAAI;AAC1C,WAAK,oBAAoB,YAAY,KAAK;AAC1C,WAAK,oBAAoB,SAAS,OAAO;AACzC,WAAK,oBAAoB,QAAQ,MAAM;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,UAAU,UAAU;AAAA,QAClB,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,QAC5E,KAAK;AAAA,QACL,oBAAoB,MAAO,QAAQ,KAAK,IAAI,QAAQ,YAAY;AAAA,QAChE,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,QAC/C,UAAU,MAAM;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,UAAU,sBAAsB,gBAAgB;AAEtD,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,IAAI,MAAM,MAAM,QAAQ;AAAA,MACxB,MAAM,MAAM,QAAQ;AAAA,MACpB,wBAAwB;AAAA,MACxB,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,MAC/C,gBAAgB,CAAC,UAAwB;AACvC,cAAM,iBAAiB,KAAK;AAC5B,gBAAQ,cAAc;AAAA,MACxB;AAAA,MACA,gBAAgB,CAAC,UAAwB;AACvC,cAAM,iBAAiB,KAAK;AAC5B,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,MACA,cAAc,CAAC,UAAsB;AACnC,cAAM,eAAe,KAAK;AAC1B,gBAAQ,cAAc;AAAA,MACxB;AAAA,MACA,cAAc,CAAC,UAAsB;AACnC,cAAM,eAAe,KAAK;AAC1B,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,MACA,aAAa,CAAC,UAAsB;AAClC,cAAM,cAAc,KAAK;AACzB,gBAAQ,cAAc;AAAA,MACxB;AAAA,MACA,YAAY,CAAC,UAAsB;AACjC,cAAM,aAAa,KAAK;AACxB,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,QAAQ,MAAQ,QAAQ,KAAK,KAAK,MAAM,aAAc,cAAc;AAE1E,MAAI,MAAM,UAAU,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,iCAAiC;AAAA,MACjC,UAAU;AAAA,IACZ;AAAA,EACF;AACF;;;ACjRA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,iBAAAC,sBAAqB;AAyD9B,IAAM,mBAAmBC,gBAA4C,IAAI;AAEzE,SAAS,oBAAoB,WAA0C;AACrE,QAAM,UAAUC,aAAW,gBAAgB;AAC3C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,oCAAoC;AAAA,EAClE;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AACD,QAAM,SAAS,MAAM,MAAM,IAAI,YAAY;AAC3C,QAAM,gBAAgBC;AAAA,IACpB,MAAM;AACJ,gBAAU,IAAI,IAAI;AAAA,IACpB;AAAA,IACA,MAAM,aAAa;AAAA,EACrB;AACA,QAAM,iBAAiBA;AAAA,IACrB,MAAM;AACJ,gBAAU,IAAI,KAAK;AAAA,IACrB;AAAA,IACA,MAAM,cAAc;AAAA,EACtB;AAEA,QAAM,cAAc,MAAM;AACxB,kBAAc,OAAO;AACrB,mBAAe,OAAO;AAAA,EACxB;AAEA,QAAM,eAAe,MAAM;AACzB,mBAAe,OAAO;AACtB,kBAAc,IAAI;AAAA,EACpB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,kBAAc,OAAO;AACrB,mBAAe,IAAI;AAAA,EACrB;AAEA,QAAM,UAAiC;AAAA,IACrC,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,WAAS,UAAU,IAAI,KAAK;AAAA,IACrC,WAAW,GAAG,MAAM;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,iBAAiB;AAAA,IACvB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,OAAwC;AACvE,QAAM,UAAU,oBAAoB,kBAAkB;AACtD,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,UAAU,MAAM;AACtB,MAAI,mBAAwC;AAE5C,QAAM,OAAO,CAAC,UAAiB;AAC7B,YAAQ,aAAa;AACrB,QAAI,iBAAiB,aAAc,OAAM,iBAAiB,KAAK;AAC/D,QAAI,iBAAiB,YAAY;AAC/B,YAAM,eAAe,KAAK;AAC1B,YAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,QAAQ,CAAC,UAAiB;AAC9B,YAAQ,cAAc;AACtB,QAAI,iBAAiB,aAAc,OAAM,iBAAiB,KAAK;AAC/D,QAAI,iBAAiB,YAAY;AAC/B,YAAM,eAAe,KAAK;AAC1B,YAAM,aAAa,KAAK;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,UAAU,CAAC,UAAsB;AACrC,UAAM,UAAU,KAAK;AACrB,YAAQ,aAAa;AAAA,EACvB;AAEA,QAAM,SAAS,CAAC,UAAsB;AACpC,UAAM,SAAS,KAAK;AACpB,YAAQ,cAAc;AAAA,EACxB;AAEA,QAAM,cAAc,CAAC,SAA6B;AAChD,uBAAmB;AACnB,uBAAmB;AAEnB,QAAI,OAAO,YAAY,YAAY;AACjC,cAAQ,IAAI;AAAA,IACd,WAAW,SAAS;AAClB,cAAQ,UAAU;AAAA,IACpB;AAEA,QAAI,CAAC,KAAM;AAEX,SAAK,iBAAiB,gBAAgB,IAAI;AAC1C,SAAK,iBAAiB,gBAAgB,KAAK;AAC3C,SAAK,iBAAiB,aAAa,IAAI;AACvC,SAAK,iBAAiB,YAAY,KAAK;AACvC,SAAK,iBAAiB,SAAS,OAAO;AACtC,SAAK,iBAAiB,QAAQ,MAAM;AAEpC,uBAAmB,MAAM;AACvB,WAAK,oBAAoB,gBAAgB,IAAI;AAC7C,WAAK,oBAAoB,gBAAgB,KAAK;AAC9C,WAAK,oBAAoB,aAAa,IAAI;AAC1C,WAAK,oBAAoB,YAAY,KAAK;AAC1C,WAAK,oBAAoB,SAAS,OAAO;AACzC,WAAK,oBAAoB,QAAQ,MAAM;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,UAAU,UAAU;AAAA,QAClB,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,QAC5E,KAAK;AAAA,QACL,oBAAoB,MAAO,QAAQ,KAAK,IAAI,QAAQ,YAAY;AAAA,QAChE,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,QAC/C,UAAU,MAAM;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,OAAwC;AACvE,QAAM,UAAU,oBAAoB,kBAAkB;AAEtD,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,IAAI,MAAM,MAAM,QAAQ;AAAA,MACxB,MAAM,MAAM,QAAQ;AAAA,MACpB,2BAA2B;AAAA,MAC3B,cAAc,MAAO,QAAQ,KAAK,IAAI,SAAS;AAAA,MAC/C,gBAAgB,CAAC,UAAwB;AACvC,cAAM,iBAAiB,KAAK;AAC5B,gBAAQ,YAAY;AAAA,MACtB;AAAA,MACA,gBAAgB,CAAC,UAAwB;AACvC,cAAM,iBAAiB,KAAK;AAC5B,gBAAQ,cAAc;AAAA,MACxB;AAAA,MACA,cAAc,CAAC,UAAsB;AACnC,cAAM,eAAe,KAAK;AAC1B,gBAAQ,YAAY;AAAA,MACtB;AAAA,MACA,cAAc,CAAC,UAAsB;AACnC,cAAM,eAAe,KAAK;AAC1B,gBAAQ,cAAc;AAAA,MACxB;AAAA,MACA,aAAa,CAAC,UAAsB;AAClC,cAAM,cAAc,KAAK;AACzB,gBAAQ,YAAY;AAAA,MACtB;AAAA,MACA,YAAY,CAAC,UAAsB;AACjC,cAAM,aAAa,KAAK;AACxB,gBAAQ,cAAc;AAAA,MACxB;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,QAAQ,MAAQ,QAAQ,KAAK,KAAK,MAAM,aAAc,cAAc;AAE1E,MAAI,MAAM,UAAU,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,oCAAoC;AAAA,MACpC,UAAU;AAAA,IACZ;AAAA,EACF;AACF;;;ACxQA,SAAS,iBAAAC,iBAAe,aAAAC,YAAW,WAAAC,UAAS,cAAAC,oBAAiC;AAC7E,SAAS,gBAAAC,sBAAoB;AAgB7B,SAAS,cAAc,MAAwB;AAC7C,MAAI,SAAS,QAAQ,SAAS,UAAa,SAAS,MAAO,QAAO;AAClE,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,SAAU,QAAO,OAAO,IAAI;AAC5E,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,UAAQ,cAAc,IAAgB,CAAC,EAAE,KAAK,GAAG,EAAE,KAAK;AAAA,EAC1E;AACA,SAAO;AACT;AAEA,SAAS,aAAa,OAAe,MAA8B;AACjE,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,aAAa,CAAC,KAAK,OAAO,KAAK,MAAM,GAAG,KAAK,QAAQ,EACxD,IAAI,WAAS,MAAM,YAAY,CAAC,EAChC,KAAK,GAAG;AAEX,SAAO,WAAW,SAAS,UAAU;AACvC;AA2EA,IAAM,wBAAwBC,gBAAiD,IAAI;AAEnF,SAAS,yBAAyB,WAA+C;AAC/E,QAAM,UAAUC,aAAW,qBAAqB;AAChD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,yCAAyC;AAAA,EACvE;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,SAAS,MAAM,MAAM,IAAI,iBAAiB;AAEhD,QAAM,YAAY,wBAAiC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,cAAcC,eAA8B,CAAC,CAAC;AAEpD,QAAM,UAAsC;AAAA,IAC1C,QAAQ,GAAG,MAAM;AAAA,IACjB,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,SAAS,UAAQ;AACf,gBAAU,IAAI,IAAI;AAClB,UAAI,CAAC,SAAS,MAAM,qBAAqB,OAAO;AAC9C,mBAAW,IAAI,EAAE;AAAA,MACnB;AAAA,IACF;AAAA,IACA,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,IACvC,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,IACvC,cAAc,UAAQ;AACpB,kBAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;AACpC,aAAO,MAAM;AACX,oBAAY,YAAY,EAAE,OAAO,WAAS,UAAU,IAAI,CAAC;AAAA,MAC3D;AAAA,IACF;AAAA,IACA,YAAY,MAAM;AAChB,YAAM,QAAQ,YAAY;AAC1B,UAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,aAAO,MAAM,KAAK,UAAQ,aAAa,WAAW,IAAI,GAAG,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,sBAAsB;AAAA,IAC5B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,MAAM,MAAM,QAAQ,KAAK;AAAA,UACzB,cAAc,CAAC,SAAkB,QAAQ,QAAQ,IAAI;AAAA,UACrD,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,OAA6C;AACjF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,wBAAwB;AAAA,MACxB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,OAA6C;AACjF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,MAAM,QAAQ;AAAA,MACpB,wBAAwB;AAAA,MACxB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,QAAM,UAAU,yBAAyB,qBAAqB;AAE9D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,iBAAiB,MAAM,QAAQ,KAAK;AAAA,MACpC,iBAAiB,QAAQ;AAAA,MACzB,OAAO,MAAM,QAAQ,MAAM;AAAA,MAC3B,sBAAsB;AAAA,MACtB,SAAS,CAAC,UAAsB;AAC9B;AAAC,QAAC,MAAM,UAAwD,KAAK;AACrE,YAAI,CAAC,MAAM,kBAAkB;AAC3B,kBAAQ,QAAQ,IAAI;AAAA,QACtB;AAAA,MACF;AAAA,MACA,SAAS,CAAC,UAAiB;AACzB;AAAC,QAAC,MAAM,UAAmD,KAAK;AAChE,cAAM,SAAS,MAAM;AACrB,YAAI,CAAC,OAAQ;AACb,gBAAQ,SAAS,OAAO,KAAK;AAAA,MAC/B;AAAA,MACA,WAAW,CAAC,UAAyB;AACnC;AAAC,QAAC,MAAM,YAA6D,KAAK;AAC1E,YAAI,MAAM,iBAAkB;AAC5B,YAAI,MAAM,QAAQ,aAAa;AAC7B,gBAAM,OAAO,SAAS,eAAe,QAAQ,MAAM;AACnD,gBAAM,YAAY,MAAM,cAAc,qBAAqB;AAC3D,qBAAW,MAAM;AACjB,gBAAM,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,yBAAyB,oBAAoB;AAE7D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,IAAI,MAAM,MAAM,QAAQ;AAAA,MACxB,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa;AAAA,UACb,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,yBAAyB,oBAAoB;AAC7D,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,OAAO,cAAc,MAAM,QAAQ,KAAK,MAAM;AAEpD,MAAI,UAA+B;AAEnC,EAAAC,SAAQ,MAAM;AACZ,cAAU,QAAQ,aAAa;AAAA,MAC7B,OAAO,MAAM;AAAA,MACb;AAAA,MACA,UAAU,MAAM,YAAY,CAAC;AAAA,IAC/B,CAAC;AAAA,EACH,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,cAAU;AACV,cAAU;AAAA,EACZ,CAAC;AAED,QAAM,UAAU,MACd,aAAa,QAAQ,MAAM,GAAG;AAAA,IAC5B,OAAO,MAAM;AAAA,IACb;AAAA,IACA,UAAU,MAAM,YAAY,CAAC;AAAA,EAC/B,CAAC;AAEH,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,6BAA6B,MAAM;AAAA,MACnC,UAAU,MACR,QAAQ,IACJ,UAAU;AAAA,QACR,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,QAC5E,MAAM,MAAM,QAAQ;AAAA,QACpB,iBAAiB,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,QACjD,cAAc,MAAO,QAAQ,MAAM,MAAM,MAAM,QAAQ,aAAa;AAAA,QACpE,qBAAqB,MAAM;AAAA,QAC3B,SAAS,CAAC,UAAsB;AAC9B;AAAC,UAAC,MAAM,UAAwD,KAAK;AACrE,gBAAM,WAAW,MAAM,OAAO,KAAK;AACnC,cAAI,MAAM,iBAAkB;AAC5B,kBAAQ,SAAS,MAAM,KAAK;AAC5B,cAAI,CAAC,MAAM,UAAU;AACnB,oBAAQ,QAAQ,KAAK;AAAA,UACvB;AAAA,QACF;AAAA,QACA,UAAU,MAAM;AAAA,MAClB,CAAC,IACD;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,QAAM,UAAU,yBAAyB,qBAAqB;AAE9D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,sBAAsB;AAAA,MACtB,UAAU,MAAO,CAAC,QAAQ,WAAW,IAAI,MAAM,YAAY,sBAAsB;AAAA,IACnF;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,MAAM,MAAM,QAAQ;AAAA,MACpB,sBAAsB;AAAA,MACtB,UAAU;AAAA,QACR,MAAM,UACF;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,8BAA8B;AAAA,YAC9B,UAAU,MAAM;AAAA,UAClB;AAAA,QACF,IACA;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,0BAA0B;AAChC,IAAM,sBAAsB;;;AC9WnC,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AA2EzD,IAAM,sBAAsBC,gBAA+C,IAAI;AAC/E,IAAM,uBAAuBA,gBAAgD,IAAI;AAEjF,SAAS,uBAAuB,WAA6C;AAC3E,QAAM,UAAUC,aAAW,mBAAmB;AAC9C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,uCAAuC;AAAA,EACrE;AACA,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAwC;AACvE,QAAM,QAAQ,wBAAiC;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,UAAoC;AAAA,IACxC,MAAM,MAAM,MAAM,IAAI;AAAA,IACtB,SAAS,UAAQ,MAAM,IAAI,IAAI;AAAA,EACjC;AAEA,SAAO;AAAA,IACL,MAAM,oBAAoB;AAAA,IAC1B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,MAAM,MAAM,QAAQ,KAAK;AAAA,UACzB,cAAc,CAAC,SAAkB,QAAQ,QAAQ,IAAI;AAAA,UACrD,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB,8BAA8B;AAAA,MAC9B,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa;AAAA,UACb,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,OAAwC;AACvE,QAAM,UAAU,uBAAuB,kBAAkB;AACzD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,MAAM,MAAM,QAAQ;AAAA,IACpB,2BAA2B;AAAA,IAC3B,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,YAAM,WAAW,KAAK;AACtB,UAAI,MAAM,iBAAkB;AAC5B,UAAI,CAAC,MAAM,UAAU;AACnB,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,yBAAyB,OAAgD;AACvF,QAAM,eAAe,wBAAiC;AAAA,IACpD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,kBAAkB;AAAA,IACtC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,UAAU,MAAM,YAAY;AAAA,MAC5B,MAAM;AAAA,MACN,gBAAgB,MAAM,aAAa,IAAI;AAAA,MACvC,gBAAgB,MAAO,aAAa,IAAI,IAAI,SAAS;AAAA,MACrD,UAAU,CAAC,UAAsB;AAC/B,cAAM,WAAW,KAAK;AACtB,YAAI,MAAM,iBAAkB;AAC5B,qBAAa,IAAI,CAAC,aAAa,IAAI,CAAC;AAAA,MACtC;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,uBAAuB,OAA8C;AACnF,QAAM,aAAa,wBAAgC;AAAA,IACjD,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,UAAqC;AAAA,IACzC,OAAO,MAAM,WAAW,IAAI;AAAA,IAC5B,UAAU,WAAS,WAAW,IAAI,KAAK;AAAA,EACzC;AAEA,SAAO;AAAA,IACL,MAAM,qBAAqB;AAAA,IAC3B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,OAA6C;AACjF,QAAM,QAAQA,aAAW,oBAAoB;AAC7C,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,kEAAkE;AAAA,EACpF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,UAAU,MAAM,YAAY;AAAA,MAC5B,MAAM;AAAA,MACN,gBAAgB,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA,MAC9C,gBAAgB,MAAO,MAAM,MAAM,MAAM,MAAM,QAAQ,SAAS;AAAA,MAChE,UAAU,CAAC,UAAsB;AAC/B,cAAM,WAAW,KAAK;AACtB,YAAI,MAAM,iBAAkB;AAC5B,cAAM,SAAS,MAAM,KAAK;AAAA,MAC5B;AAAA,MACA,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,QAAQ,wBAAiC;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM,MAAM,MAAM,IAAI;AAAA,MACtB,cAAc,CAAC,SAAkB,MAAM,IAAI,IAAI;AAAA,MAC/C,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,uBAAuB,OAA8C;AACnF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,UACV,iBAAiB,MAAM,eAAe,KAAK;AAAA,UAC3C,iBAAiB,MAAM,eAAe;AAAA,UACtC,kCAAkC;AAAA,UAClC,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,uBAAuB,OAA8C;AACnF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,MAAM,MAAM,QAAQ;AAAA,MACpB,OAAO,MAAM,SAAS;AAAA,MACtB,oBAAoB;AAAA,MACpB,kCAAkC;AAAA,MAClC,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa;AAAA,UACb,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,OAAoE;AACpG,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,MAAM,QAAQ;AAAA,MACpB,4BAA4B;AAAA,MAC5B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,IAAM,wBAAwB;;;ACjTrC,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,gBAAAC,sBAAoB;AAC7B,SAAS,oBAAAC,yBAAwB;AAmEjC,IAAM,qBAAqBC,gBAA8C,IAAI;AAE7E,SAAS,sBAAsB,WAA4C;AACzE,QAAM,UAAUC,aAAW,kBAAkB;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,sCAAsC;AAAA,EACpE;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,QAAQ,wBAAiC;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,QAAM,WAAWC,eAAa,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAE5C,QAAM,UAAmC;AAAA,IACvC,MAAM,MAAM,MAAM,IAAI;AAAA,IACtB,SAAS,UAAQ,MAAM,IAAI,IAAI;AAAA,IAC/B,GAAG,MAAM,SAAS,EAAE;AAAA,IACpB,GAAG,MAAM,SAAS,EAAE;AAAA,IACpB,aAAa,CAAC,GAAG,MAAM,SAAS,EAAE,GAAG,EAAE,CAAC;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,sBAAsB,oBAAoB;AAC1D,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,UAAU,MAAM;AACtB,QAAM,cAAcA,eAAiC,IAAI;AAEzD,QAAM,oBAAoB,CAAC,UAAsB;AAC/C;AAAC,IAAC,MAAM,gBAA8D,KAAK;AAC3E,QAAI,MAAM,iBAAkB;AAC5B,UAAM,eAAe;AACrB,YAAQ,YAAY,MAAM,SAAS,MAAM,OAAO;AAChD,YAAQ,QAAQ,IAAI;AAAA,EACtB;AAEA,QAAM,sBAAsBC;AAAA,IAC1B,MAAM,YAAY;AAAA,IAClB;AAAA,IACA;AAAA,IACA,EAAE,WAAW,MAAM;AAAA,EACrB;AAEA,QAAM,cAAc,CAAC,SAA6B;AAChD,wBAAoB,KAAK;AAEzB,QAAI,OAAO,YAAY,YAAY;AACjC,cAAQ,IAAI;AAAA,IACd,WAAW,SAAS;AAClB,cAAQ,UAAU;AAAA,IACpB;AACA,gBAAY,IAAI;AAChB,QAAI,MAAM;AACR,0BAAoB,MAAM;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,eAAe;AAAA,IACf,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,QAAM,UAAU,sBAAsB,oBAAoB;AAE1D,QAAM,UAAU;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,MACL,iBAAiB,MAAM;AAAA,MACvB,mBAAmB,MAAM;AAAA,MACzB,sBAAsB,MAAM;AAAA,MAC5B,gBAAgB,MAAM;AAAA,MACtB,WAAW,MAAM;AACf,cAAM,YAAY;AAClB,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,iBAAiB;AAAA,UACjB,mBAAmB;AAAA,UACnB,sBAAsB;AAAA,UACtB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,6BAA6B;AAAA,UAC7B,OAAO;AAAA,YACL,UAAU;AAAA,YACV,MAAM,GAAG,QAAQ,EAAE,CAAC;AAAA,YACpB,KAAK,GAAG,QAAQ,EAAE,CAAC;AAAA,UACrB;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,cACN,UAAU,MAAM;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,MAAQ,QAAQ,KAAK,KAAK,MAAM,aAAc,UAAU;AAEtE,MAAI,MAAM,UAAU,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,sCAAsC;AAAA,MACtC,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAuC;AACrE,QAAM,UAAU,sBAAsB,iBAAiB;AACvD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,MAAM,MAAM,QAAQ;AAAA,IACpB,0BAA0B;AAAA,IAC1B,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,YAAM,WAAW,KAAK;AACtB,UAAI,MAAM,iBAAkB;AAC5B,UAAI,CAAC,MAAM,UAAU;AACnB,gBAAQ,QAAQ,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,QAAQ,wBAAiC;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,eAAe;AAAA,IACnC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM,MAAM,MAAM,IAAI;AAAA,MACtB,cAAc,CAAC,SAAkB,MAAM,IAAI,IAAI;AAAA,MAC/C,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,OAA6C;AACjF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,UAAU;AAAA,UACV,iBAAiB,MAAM,eAAe,KAAK;AAAA,UAC3C,iBAAiB,MAAM,eAAe;AAAA,UACtC,iCAAiC;AAAA,UACjC,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,OAA6C;AACjF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,MAAM,MAAM,QAAQ;AAAA,MACpB,OAAO,MAAM,SAAS;AAAA,MACtB,oBAAoB;AAAA,MACpB,iCAAiC;AAAA,MACjC,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa;AAAA,UACb,MAAM;AAAA,UACN,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACtSA,SAAS,iBAAAC,iBAAe,cAAAC,oBAAiC;AACzD,SAAS,gBAAAC,sBAAoB;AA8C7B,IAAM,qBAAqBC,gBAA8C,IAAI;AAC7E,IAAM,qBAAqBA,gBAA8C,IAAI;AAE7E,SAAS,sBAAsB,WAA4C;AACzE,QAAM,UAAUC,aAAW,kBAAkB;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,kCAAkC;AAAA,EAChE;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,WAA4C;AACzE,QAAM,UAAUA,aAAW,kBAAkB;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,kCAAkC;AAAA,EAChE;AACA,SAAO;AACT;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,mBAAmBC,eAA4B,IAAI;AAEzD,QAAM,UAAmC;AAAA,IACvC,YAAY,MAAM,iBAAiB;AAAA,IACnC,eAAe,QAAM,iBAAiB,EAAE;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,MAAM;AAAA,UACN,qBAAqB;AAAA,UACrB,UAAU;AAAA,YACR,MAAM;AAAA,YACN,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,cACN,UAAU,MAAM;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,KAAK,MAAM,MAAM,OAAO,cAAc;AAE5C,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACL,OAAO,EAAE,GAAG;AAAA,MACZ,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,UACL,qBAAqB;AAAA,UACrB,UAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,OAAO,sBAAsB,gBAAgB;AACnD,QAAM,OAAO,sBAAsB,gBAAgB;AACnD,QAAM,MAAM,MAAM,MAAM;AAExB,QAAM,OAAO,MAAM,KAAK,WAAW,MAAM,KAAK;AAE9C,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,cAAc,MAAO,KAAK,IAAI,SAAS;AAAA,IACvC,wBAAwB,KAAK;AAAA,IAC7B,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,UAAI,MAAM,iBAAkB;AAC5B,WAAK,cAAc,KAAK,IAAI,OAAO,KAAK,EAAE;AAAA,IAC5C;AAAA,IACA,aAAa,CAAC,UAAsB;AAClC;AAAC,MAAC,MAAM,cAA4D,KAAK;AACzE,UAAI,MAAM,iBAAkB;AAC5B,WAAK,cAAc,KAAK,EAAE;AAAA,IAC5B;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;AAEO,SAAS,eAAe,OAAsC;AACnE,QAAM,OAAO,sBAAsB,gBAAgB;AACnD,QAAM,OAAO,sBAAsB,gBAAgB;AAEnD,QAAM,OAAO,MAAM,KAAK,WAAW,MAAM,KAAK;AAE9C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,gCAAgC,KAAK;AAAA,MACrC,UAAU,MACR,KAAK,KAAK,MAAM,aACZ;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,UACL,GAAG;AAAA,UACH,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,wBAAwB,KAAK;AAAA,UAC7B,UAAU,MAAM;AAAA,QAClB;AAAA,MACF,IACA;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,QAAM,OAAO,sBAAsB,aAAa;AAChD,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAY,MAAM,QAAQ,WAAY,MAAM;AAAA,IAC5E,MAAM,MAAM,QAAQ;AAAA,IACpB,qBAAqB;AAAA,IACrB,SAAS,CAAC,UAAsB;AAC9B;AAAC,MAAC,MAAM,UAAwD,KAAK;AACrE,YAAM,WAAW,KAAK;AACtB,UAAI,CAAC,MAAM,kBAAkB;AAC3B,aAAK,cAAc,IAAI;AAAA,MACzB;AAAA,IACF;AAAA,IACA,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;;;AChMA,SAAS,iBAAAC,iBAAe,aAAAC,YAAW,cAAAC,oBAAiC;AACpE,SAAS,gBAAAC,sBAAoB;AAC7B,SAAS,iBAAAC,sBAAqB;AA6D9B,IAAM,eAAeC,gBAAwC,IAAI;AAEjE,SAAS,gBAAgB,WAAsC;AAC7D,QAAM,UAAUC,aAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,oCAAoC;AAAA,EAClE;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,eAAeC,eAA4B,CAAC,CAAC;AACnD,QAAM,SAAS,oBAAI,IAAkC;AAErD,QAAM,UAAU,CAAC,OAAe;AAC9B,iBAAa,aAAa,EAAE,OAAO,WAAS,MAAM,OAAO,EAAE,CAAC;AAC5D,UAAM,QAAQ,OAAO,IAAI,EAAE;AAC3B,QAAI,OAAO;AACT,YAAM,OAAO;AACb,aAAO,OAAO,EAAE;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,OAAO,CAAC,UAA6D;AACzE,UAAM,KAAK,MAAM,MAAM,SAAS,OAAO;AACvC,UAAM,gBAAgB,OAAO,IAAI,EAAE;AACnC,mBAAe,OAAO;AACtB,WAAO,OAAO,EAAE;AAChB,UAAM,YAAyB;AAAA,MAC7B;AAAA,MACA,OAAO,MAAM;AAAA,MACb,aAAa,MAAM;AAAA,MACnB,UAAU,MAAM;AAAA,IAClB;AAEA,iBAAa,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;AAE3C,UAAM,QAAQC;AAAA,MACZ,MAAM;AACJ,gBAAQ,EAAE;AAAA,MACZ;AAAA,MACA,MAAM,YAAY,MAAM,YAAY;AAAA,IACtC;AACA,UAAM,IAAI;AACV,WAAO,IAAI,IAAI,KAAK;AAEpB,WAAO;AAAA,EACT;AAEA,EAAAC,WAAU,MAAM;AACd,eAAW,SAAS,OAAO,OAAO,GAAG;AACnC,YAAM,OAAO;AAAA,IACf;AACA,WAAO,MAAM;AAAA,EACf,CAAC;AAED,QAAM,UAA6B;AAAA,IACjC,QAAQ,MAAM,aAAa;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,UAAU,MAAM,MAAM,YAAY;AAAA,EACpC;AAEA,SAAO;AAAA,IACL,MAAM,aAAa;AAAA,IACnB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,WAAW;AACzB,QAAM,UAAU,gBAAgB,UAAU;AAC1C,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,SAAS,QAAQ;AAAA,IACjB,QAAQ,QAAQ;AAAA,EAClB;AACF;AAEO,SAAS,cAAc,OAAqC;AACjE,QAAM,UAAU,gBAAgB,eAAe;AAE/C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,uBAAuB;AAAA,MACvB,UAAU;AAAA,QACR,MAAM;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,UAAU,MACR,QAAQ,OAAO,EAAE,IAAI,YAAU;AAAA,cAC7B,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,IAAI,MAAM;AAAA,gBACV,OAAO,MAAM;AAAA,gBACb,aAAa,MAAM;AAAA,gBACnB,UAAU,MAAM,YAAY,QAAQ,SAAS;AAAA,cAC/C;AAAA,YACF,EAAE;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,UAAU,OAAiC;AACzD,QAAM,UAAUH,aAAW,YAAY;AAEvC,QAAM,QAAQ,MAAM;AAClB,QAAI,MAAM,MAAM,SAAS;AACvB,cAAQ,QAAQ,MAAM,EAAE;AAAA,IAC1B;AACA,UAAM,eAAe,KAAK;AAAA,EAC5B;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,MAAM,QAAQ;AAAA,MACpB,mBAAmB;AAAA,MACnB,UAAU;AAAA,QACR,MAAM,QAAQ,EAAE,MAAM,YAAY,OAAO,EAAE,UAAU,MAAM,MAAM,EAAE,IAAI;AAAA,QACvE,MAAM,cAAc,EAAE,MAAM,kBAAkB,OAAO,EAAE,UAAU,MAAM,YAAY,EAAE,IAAI;AAAA,QACzF,MAAM;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,YACL,SAAS,MAAM,MAAM;AAAA,YACrB,UAAU,MAAM,kBAAkB,KAAK;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,WAAW,OAAoE;AAC7F,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,oBAAoB;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,OAAoE;AACnG,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,0BAA0B;AAAA,MAC1B,UAAU,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,YAAY,OAAmC;AAC7D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,cAAc,MAAM;AAAA,MACpB,UAAU,CAAC,MAAM,UAAU,EAAE,MAAM,gBAAgB,OAAO,EAAE,UAAU,MAAM,QAAQ,EAAE,CAAC;AAAA,IACzF;AAAA,EACF;AACF;AAEO,SAAS,WAAW,OAAkC;AAC3D,QAAM,MAAM,MAAM,MAAM;AAExB,SAAO,UAAU;AAAA,IACf,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAW,WAAW,MAAM;AAAA,IAC5D,oBAAoB;AAAA,IACpB,SAAS,CAAC,UAAsB;AAC9B,YAAM,UAAU,KAAK;AAAA,IACvB;AAAA,IACA,UAAU,MAAM,YAAY;AAAA,EAC9B,CAAC;AACH;","names":["createContext","useContext","createContext","useContext","createContext","useContext","createContext","useContext","createContext","useContext","createContext","useContext","createContext","useContext","createSignal","createContext","createSignal","focusFirst","useContext","createContext","useContext","createContext","useContext","createSignal","createContext","useContext","createSignal","createContext","useContext","createContext","useContext","createContext","useContext","createContext","normalize","useContext","createContext","useContext","createContext","useContext","createContext","useContext","createContext","useContext","onMount","createSignal","useEventListener","createSignal","useEventListener","onMount","createContext","createEffect","useContext","createSignal","useEventListener","createContext","createSignal","useContext","createEffect","useEventListener","createContext","useContext","toDate","createContext","useContext","createContext","useContext","createContext","useContext","createContext","useContext","createSignal","createContext","useContext","createSignal","createContext","useContext","createContext","useContext","onDestroy","onMount","createSignal","useEventListener","createSignal","useEventListener","onMount","onDestroy","createEffect","onDestroy","createEffect","onDestroy","createContext","useContext","createContext","useContext","createContext","useContext","createSignal","useEventListener","createContext","useContext","createSignal","useEventListener","createContext","useContext","createRef","createContext","useContext","createRef","createContext","useContext","createContext","useContext","createContext","useContext","useDebounceFn","createContext","useContext","useDebounceFn","createContext","onDestroy","onMount","useContext","createSignal","createContext","useContext","createSignal","onMount","onDestroy","createContext","useContext","createContext","useContext","createContext","useContext","createSignal","useEventListener","createContext","useContext","createSignal","useEventListener","createContext","useContext","createSignal","createContext","useContext","createSignal","createContext","onDestroy","useContext","createSignal","useDebounceFn","createContext","useContext","createSignal","useDebounceFn","onDestroy"]}