{"version":3,"file":"dropdown-menu.mjs","sources":["../src/dropdown-menu/DropdownMenuContent.ts","../src/dropdown-menu/DropdownMenuRoot.ts","../src/dropdown-menu/DropdownMenuContentImpl.ts","../src/dropdown-menu/DropdownMenuContentImpl.vue","../src/dropdown-menu/DropdownMenuContent.vue","../src/dropdown-menu/DropdownMenuRoot.vue","../src/dropdown-menu/DropdownMenuSub.ts","../src/dropdown-menu/DropdownMenuSub.vue","../src/dropdown-menu/DropdownMenuSubContent.ts","../src/dropdown-menu/DropdownMenuSubContentImpl.ts","../src/dropdown-menu/DropdownMenuSubContentImpl.vue","../src/dropdown-menu/DropdownMenuSubContent.vue","../src/dropdown-menu/DropdownMenuTrigger.ts","../src/dropdown-menu/DropdownMenuTrigger.vue"],"sourcesContent":["import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport { type MenuContentProps, useMenuContent, type UseMenuContentProps } from '../menu/index.ts'\n\nexport interface DropdownMenuContentProps extends MenuContentProps {}\n\nexport const DEFAULT_DROPDOWN_MENU_CONTENT_PROPS = {\n  forceMount: undefined,\n} satisfies PrimitiveDefaultProps<DropdownMenuContentProps>\n\nexport interface UseDropdownMenuContentProps extends UseMenuContentProps {}\n\nexport const useDropdownMenuContent = useMenuContent\n","import type { Direction } from '../direction/index.ts'\nimport type { EmitsToHookProps, PrimitiveDefaultProps } from '../shared/index.ts'\nimport { type MaybeRefOrGetter, useId } from 'vue'\nimport { createContext, type MutableRefObject, useControllableStateV2, useRef } from '../hooks/index.ts'\nimport { type MenuRootProps, useMenuRoot } from '../menu/index.ts'\n\nexport interface DropdownMenuRootProps extends MenuRootProps {\n  defaultOpen?: boolean\n}\n\nexport const DEFAULT_DROPDOWN_MENU_ROOT_PROPS = {\n  open: undefined,\n  defaultOpen: undefined,\n  modal: undefined,\n} satisfies PrimitiveDefaultProps<DropdownMenuRootProps>\n\nexport type DropdownMenuRootEmits = {\n  'update:open': [open: boolean]\n}\n\nexport interface DropdownMenuContextValue {\n  triggerId: string\n  triggerRef: MutableRefObject<HTMLElement | undefined>\n  contentId: string\n  open: () => boolean\n  onOpenChange: (open: boolean) => void\n  onOpenToggle: () => void\n  modal: boolean\n}\n\nexport const [provideDropdownMenuContext, useDropdownMenuContext] = createContext<DropdownMenuContextValue>('DropdownMenu')\n\nexport interface UseDropdownMenuRootProps extends EmitsToHookProps<DropdownMenuRootEmits> {\n  open?: () => boolean | undefined\n  defaultOpen?: boolean\n  dir?: MaybeRefOrGetter<Direction | undefined>\n  modal?: boolean\n}\n\nexport function useDropdownMenuRoot(props: UseDropdownMenuRootProps = {}) {\n  const {\n    defaultOpen = false,\n    modal = true,\n  } = props\n\n  const triggerRef = useRef<HTMLElement>()\n\n  const open = useControllableStateV2(props.open, props.onUpdateOpen, defaultOpen)\n\n  provideDropdownMenuContext({\n    triggerId: useId(),\n    triggerRef,\n    contentId: useId(),\n    open() {\n      return open.value\n    },\n    onOpenChange(value) {\n      open.value = value\n    },\n    onOpenToggle() {\n      open.value = !open.value\n    },\n    modal,\n  })\n\n  useMenuRoot({\n    open() {\n      return open.value\n    },\n    onUpdateOpen(v) {\n      open.value = v\n    },\n    dir: props.dir,\n    modal,\n  })\n}\n","import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport { type MenuContentImplEmits, type MenuContentImplProps, useMenuContentImpl, type UseMenuContentImplProps, type UseMenuContentImplSharedPeturns } from '../menu/index.ts'\nimport { useDropdownMenuContext } from './DropdownMenuRoot.ts'\n\nexport interface DropdownMenuContentImplProps extends MenuContentImplProps {}\n\nexport const DEFAULT_DROPDOWN_MENU_CONTENT_PROPS = {\n  avoidCollisions: undefined,\n  hideWhenDetached: undefined,\n  loop: undefined,\n} satisfies PrimitiveDefaultProps<DropdownMenuContentImplProps>\n\nexport type DropdownMenuContentImplEmits = MenuContentImplEmits\n\nexport interface UseDropdownMenuContentImplProps extends UseMenuContentImplProps {}\n\nexport function useDropdownMenuContentImpl(props: UseDropdownMenuContentImplProps = {}): UseMenuContentImplSharedPeturns {\n  const context = useDropdownMenuContext('DropdownMenuContent')\n\n  let hasInteractedOutsideRef = false\n\n  const menuContentImpl = useMenuContentImpl({\n    ...props,\n    onCloseAutoFocus(event) {\n      props.onCloseAutoFocus?.(event)\n      if (event.defaultPrevented)\n        return\n\n      if (!hasInteractedOutsideRef) {\n        context.triggerRef.value?.focus()\n      }\n      hasInteractedOutsideRef = false\n      // Always prevent auto focus because we either focus manually or want user agent focus\n      event.preventDefault()\n    },\n    onInteractOutside(event) {\n      props.onInteractOutside?.(event)\n      if (event.defaultPrevented)\n        return\n\n      const originalEvent = event.detail.originalEvent as PointerEvent\n      const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true\n      const isRightClick = originalEvent.button === 2 || ctrlLeftClick\n      if (!context.modal || isRightClick)\n        hasInteractedOutsideRef = true\n    },\n  })\n\n  const style = {\n    '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n    '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)',\n    '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)',\n    '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n    '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n  }\n\n  return {\n    wrapperAttrs: menuContentImpl.wrapperAttrs,\n    attrs(extraAttrs = []) {\n      const menuContentImplAttrs = {\n        'id': context.contentId,\n        'aria-labelledby': context.triggerId,\n        style,\n      }\n\n      return menuContentImpl.attrs([menuContentImplAttrs, ...extraAttrs])\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, type EmitsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { type DropdownMenuContentImplEmits, type DropdownMenuContentImplProps, useDropdownMenuContentImpl } from './DropdownMenuContentImpl.ts'\n\ndefineOptions({\n  name: 'DropdownMenuContentImpl',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DropdownMenuContentImplProps>(), {\n  avoidCollisions: true,\n  hideWhenDetached: false,\n  loop: false,\n})\n\nconst emit = defineEmits<DropdownMenuContentImplEmits>()\n\nconst menuContentImpl = useDropdownMenuContentImpl(convertPropsToHookProps(\n  props,\n  ['collisionBoundary'],\n  (): Required<EmitsToHookProps<DropdownMenuContentImplEmits>> => ({\n    onCloseAutoFocus(event) {\n      emit('closeAutoFocus', event)\n    },\n    onEntryFocus(event) {\n      emit('entryFocus', event)\n    },\n    onEscapeKeydown(event) {\n      emit('escapeKeydown', event)\n    },\n    onPointerdownOutside(event) {\n      emit('pointerdownOutside', event)\n    },\n    onFocusOutside(event) {\n      emit('focusOutside', event)\n    },\n    onInteractOutside(event) {\n      emit('interactOutside', event)\n    },\n  }),\n))\n</script>\n\n<template>\n  <div v-bind=\"menuContentImpl.wrapperAttrs()\">\n    <Primitive v-bind=\"normalizeAttrs(menuContentImpl.attrs([$attrs]))\">\n      <slot />\n    </Primitive>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { DEFAULT_DROPDOWN_MENU_CONTENT_PROPS, type DropdownMenuContentProps, useDropdownMenuContent } from './DropdownMenuContent.ts'\nimport DropdownMenuContentImpl from './DropdownMenuContentImpl.vue'\n\ndefineOptions({\n  name: 'DropdownMenuContent',\n})\n\nconst props = withDefaults(defineProps<DropdownMenuContentProps>(), DEFAULT_DROPDOWN_MENU_CONTENT_PROPS)\n\nconst dropdownMenuContent = useDropdownMenuContent(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <DropdownMenuContentImpl v-if=\"dropdownMenuContent.isPresent.value\">\n    <slot />\n  </DropdownMenuContentImpl>\n</template>\n","<script setup lang=\"ts\">\nimport type { EmitsToHookProps } from '../shared/index.ts'\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { DEFAULT_DROPDOWN_MENU_ROOT_PROPS, type DropdownMenuRootEmits, type DropdownMenuRootProps, useDropdownMenuRoot } from './DropdownMenuRoot.ts'\n\ndefineOptions({\n  name: 'DropdownMenuRoot',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DropdownMenuRootProps>(), DEFAULT_DROPDOWN_MENU_ROOT_PROPS)\nconst emit = defineEmits<DropdownMenuRootEmits>()\n\nuseDropdownMenuRoot(convertPropsToHookProps(\n  props,\n  ['open', 'dir'],\n  (): Required<EmitsToHookProps<DropdownMenuRootEmits>> => ({\n    onUpdateOpen(open) {\n      emit('update:open', open)\n    },\n  }),\n))\n</script>\n\n<template>\n  <slot />\n</template>\n","import type { EmitsToHookProps, PrimitiveDefaultProps } from '../shared/index.ts'\nimport { useControllableStateV2 } from '../hooks/index.ts'\nimport { useMenuSub } from '../menu/index.ts'\n\nexport interface DropdownMenuSubProps {\n  open?: boolean\n  defaultOpen?: boolean\n}\n\nexport const DEFAULT_DROPDOWN_MENU_SUB_PROPS = {\n  open: undefined,\n  defaultOpen: undefined,\n} satisfies PrimitiveDefaultProps<DropdownMenuSubProps>\n\nexport type DropdownMenuSubEmits = {\n  'update:open': [open: boolean]\n}\n\nexport interface UseDropdownMenuSubProps extends EmitsToHookProps<DropdownMenuSubEmits> {\n  open?: () => boolean | undefined\n  defaultOpen?: boolean\n}\n\nexport function useDropdownMenuSub(props: UseDropdownMenuSubProps = {}) {\n  const { defaultOpen = false } = props\n\n  const open = useControllableStateV2(props.open, props.onUpdateOpen, defaultOpen)\n\n  useMenuSub({\n    open() {\n      return open.value\n    },\n    onUpdateOpen(v) {\n      open.value = v\n    },\n  })\n}\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps, type EmitsToHookProps } from '../shared/index.ts'\nimport { DEFAULT_DROPDOWN_MENU_SUB_PROPS, type DropdownMenuSubEmits, type DropdownMenuSubProps, useDropdownMenuSub } from './DropdownMenuSub.ts'\n\ndefineOptions({\n  name: 'DropdownMenuSub',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DropdownMenuSubProps>(), DEFAULT_DROPDOWN_MENU_SUB_PROPS)\nconst emit = defineEmits<DropdownMenuSubEmits>()\n\nuseDropdownMenuSub(convertPropsToHookProps(\n  props,\n  ['open'],\n  (): Required<EmitsToHookProps<DropdownMenuSubEmits>> => ({\n    onUpdateOpen(open) {\n      emit('update:open', open)\n    },\n  }),\n))\n</script>\n\n<template>\n  <slot />\n</template>\n","import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport { type MenuSubContentProps, useMenuSubContent, type UseMenuSubContentProps } from '../menu/index.ts'\n\nexport interface DropdownMenuSubContentProps extends MenuSubContentProps {}\n\nexport const DEFAULT_DROPDOWN_MENU_SUB_CONTENT_PROPS = {\n  forceMount: undefined,\n} satisfies PrimitiveDefaultProps<DropdownMenuSubContentProps>\n\nexport interface UseDropdownMenuSubContentProps extends UseMenuSubContentProps {\n}\n\nexport const useDropdownMenuSubContent = useMenuSubContent\n","import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport {\n  type MenuSubContentImplEmits,\n  type MenuSubContentImplProps,\n  type UseMenuContentImplSharedPeturns,\n  useMenuSubContentImpl,\n  type UseMenuSubContentImplProps,\n} from '../menu/index.ts'\n\nexport interface DropdownMenuSubContentImplProps extends MenuSubContentImplProps {\n\n}\n\nexport const DEFAULT_DROPDOWN_MENU_SUB_CONTENT_IMPL_PROPS = {\n  avoidCollisions: undefined,\n  hideWhenDetached: undefined,\n  loop: undefined,\n} satisfies PrimitiveDefaultProps<DropdownMenuSubContentImplProps>\n\nexport type DropdownMenuSubContentImplEmits = MenuSubContentImplEmits\n\nexport interface UseDropdownMenuSubContentImplProps extends UseMenuSubContentImplProps {}\n\nexport function useDropdownMenuSubContentImpl(props: UseDropdownMenuSubContentImplProps = {}): UseMenuContentImplSharedPeturns {\n  const menuSubContentImpl = useMenuSubContentImpl(props)\n\n  const attrs = {\n    style: {\n      '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n      '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)',\n      '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)',\n      '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n      '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n    },\n  }\n\n  return {\n    wrapperAttrs: menuSubContentImpl.wrapperAttrs,\n    attrs(extraAttrs = []) {\n      return menuSubContentImpl.attrs([attrs, ...extraAttrs])\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, type EmitsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport {\n  DEFAULT_DROPDOWN_MENU_SUB_CONTENT_IMPL_PROPS,\n  type DropdownMenuSubContentImplEmits,\n  type DropdownMenuSubContentImplProps,\n  useDropdownMenuSubContentImpl,\n} from './DropdownMenuSubContentImpl.ts'\n\ndefineOptions({\n  name: 'DropdownMenuSubContentImpl',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DropdownMenuSubContentImplProps>(), DEFAULT_DROPDOWN_MENU_SUB_CONTENT_IMPL_PROPS)\nconst emit = defineEmits<DropdownMenuSubContentImplEmits>()\n\nconst menuSubContentImpl = useDropdownMenuSubContentImpl(convertPropsToHookProps(\n  props,\n  ['collisionBoundary'],\n  (): Required<EmitsToHookProps<DropdownMenuSubContentImplEmits>> => ({\n    onEscapeKeydown(event) {\n      emit('escapeKeydown', event)\n    },\n    onPointerdownOutside(event) {\n      emit('pointerdownOutside', event)\n    },\n    onFocusOutside(event) {\n      emit('focusOutside', event)\n    },\n    onInteractOutside(event) {\n      emit('interactOutside', event)\n    },\n  }),\n))\n</script>\n\n<template>\n  <div v-bind=\"menuSubContentImpl.wrapperAttrs()\">\n    <Primitive v-bind=\"normalizeAttrs(menuSubContentImpl.attrs([$attrs]))\">\n      <slot />\n    </Primitive>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { DEFAULT_DROPDOWN_MENU_SUB_CONTENT_PROPS, type DropdownMenuSubContentProps, useDropdownMenuSubContent } from './DropdownMenuSubContent.ts'\nimport DropdownMenuSubContentImpl from './DropdownMenuSubContentImpl.vue'\n\ndefineOptions({\n  name: 'DropdownMenuSubContent',\n})\n\nconst props = withDefaults(defineProps<DropdownMenuSubContentProps>(), DEFAULT_DROPDOWN_MENU_SUB_CONTENT_PROPS)\n\nconst menuContent = useDropdownMenuSubContent(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <DropdownMenuSubContentImpl v-if=\"menuContent.isPresent.value\">\n    <slot />\n  </DropdownMenuSubContentImpl>\n</template>\n","import type { PrimitiveProps } from '../primitive'\nimport { onMounted } from 'vue'\nimport { usePopperContext } from '../popper/index.ts'\nimport { mergePrimitiveAttrs, type PrimitiveDefaultProps, type PrimitiveElAttrs, type RadixPrimitiveReturns } from '../shared/index.ts'\nimport { useDropdownMenuContext } from './DropdownMenuRoot.ts'\n\nexport interface DropdownMenuTriggerProps {\n  as?: PrimitiveProps['as']\n  disabled?: boolean\n}\n\nexport const DEFAULT_DROPDOWN_MENU_TRIGGER_PROPS = {\n  as: 'button',\n  disabled: undefined,\n} satisfies PrimitiveDefaultProps<DropdownMenuTriggerProps>\n\nexport interface UseDropdownMenuTriggerProps {\n  disabled?: () => boolean | undefined\n}\n\nexport function useDropdownMenuTrigger(props: UseDropdownMenuTriggerProps = {}): RadixPrimitiveReturns {\n  const context = useDropdownMenuContext('DropdownMenuTrigger')\n  const popperContext = usePopperContext('DropdownMenuTrigger')\n\n  function onPointerdown(event: PointerEvent) {\n    if (event.defaultPrevented)\n      return\n    // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n    // but not when the control key is pressed (avoiding MacOS right click)\n    if (event.button === 0 && event.ctrlKey === false) {\n      const isOpen = context.open()\n      context.onOpenToggle()\n      // prevent trigger focusing when opening\n      // this allows the content to be given focus without competition\n      if (!isOpen)\n        event.preventDefault()\n    }\n  }\n\n  function onKeydown(event: KeyboardEvent) {\n    if (event.defaultPrevented)\n      return\n    if (['Enter', ' '].includes(event.key))\n      context.onOpenToggle()\n    if (event.key === 'ArrowDown')\n      context.onOpenChange(true)\n    // prevent keydown from scrolling window / first focused item to execute\n    // that keydown (inadvertently closing the menu)\n    if (['Enter', ' ', 'ArrowDown'].includes(event.key))\n      event.preventDefault()\n  }\n\n  // COMP::MenuAnchor COMP::PopperAnchor\n\n  function setElRef(el: HTMLElement | undefined) {\n    context.triggerRef.value = el\n  }\n\n  onMounted(() => {\n    popperContext.onAnchorChange(context.triggerRef.value)\n  })\n\n  return {\n    attrs(extraAttrs) {\n      const _open = context.open()\n      const _disabled = props.disabled?.()\n      const attrs: PrimitiveElAttrs = {\n        'elRef': setElRef,\n        'id': context.triggerId,\n        'type': 'button',\n        'aria-haspopup': 'menu',\n        'aria-expanded': _open,\n        'aria-controls': _open ? context.contentId : undefined,\n        'data-disabled': _disabled ? '' : undefined,\n        'disabled': _disabled,\n        onPointerdown,\n        onKeydown,\n      }\n\n      if (extraAttrs && extraAttrs.length > 0)\n        mergePrimitiveAttrs(attrs, extraAttrs)\n\n      return attrs\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { DEFAULT_DROPDOWN_MENU_TRIGGER_PROPS, type DropdownMenuTriggerProps, useDropdownMenuTrigger } from './DropdownMenuTrigger.ts'\n\ndefineOptions({\n  name: 'DropdownMenuTrigger',\n})\n\nconst props = withDefaults(defineProps<DropdownMenuTriggerProps>(), DEFAULT_DROPDOWN_MENU_TRIGGER_PROPS)\n\nconst dropdownMenuTrigger = useDropdownMenuTrigger(convertPropsToHookProps(props, ['disabled']))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(dropdownMenuTrigger.attrs([$attrs, { as }]))\">\n    <slot />\n  </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;AAKO,MAAM,mCAAsC,GAAA;AAAA,EACjD,UAAY,EAAA,KAAA;AACd;AAIO,MAAM,sBAAyB,GAAA;;ACD/B,MAAM,gCAAmC,GAAA;AAAA,EAC9C,IAAM,EAAA,KAAA,CAAA;AAAA,EACN,WAAa,EAAA,KAAA,CAAA;AAAA,EACb,KAAO,EAAA,KAAA;AACT;AAgBO,MAAM,CAAC,0BAAA,EAA4B,sBAAsB,CAAA,GAAI,cAAwC,cAAc;AAS1G,SAAA,mBAAA,CAAoB,KAAkC,GAAA,EAAI,EAAA;AACxE,EAAM,MAAA;AAAA,IACJ,WAAc,GAAA,KAAA;AAAA,IACd,KAAQ,GAAA;AAAA,GACN,GAAA,KAAA;AAEJ,EAAA,MAAM,aAAa,MAAoB,EAAA;AAEvC,EAAA,MAAM,OAAO,sBAAuB,CAAA,KAAA,CAAM,IAAM,EAAA,KAAA,CAAM,cAAc,WAAW,CAAA;AAE/E,EAA2B,0BAAA,CAAA;AAAA,IACzB,WAAW,KAAM,EAAA;AAAA,IACjB,UAAA;AAAA,IACA,WAAW,KAAM,EAAA;AAAA,IACjB,IAAO,GAAA;AACL,MAAA,OAAO,IAAK,CAAA,KAAA;AAAA,KACd;AAAA,IACA,aAAa,KAAO,EAAA;AAClB,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAAA,KACf;AAAA,IACA,YAAe,GAAA;AACb,MAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA,KACrB;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAY,WAAA,CAAA;AAAA,IACV,IAAO,GAAA;AACL,MAAA,OAAO,IAAK,CAAA,KAAA;AAAA,KACd;AAAA,IACA,aAAa,CAAG,EAAA;AACd,MAAA,IAAA,CAAK,KAAQ,GAAA,CAAA;AAAA,KACf;AAAA,IACA,KAAK,KAAM,CAAA,GAAA;AAAA,IACX;AAAA,GACD,CAAA;AACH;;AC3DgB,SAAA,0BAAA,CAA2B,KAAyC,GAAA,EAAqC,EAAA;AACvH,EAAM,MAAA,OAAA,GAAU,uBAAuB,qBAAqB,CAAA;AAE5D,EAAA,IAAI,uBAA0B,GAAA,KAAA;AAE9B,EAAA,MAAM,kBAAkB,kBAAmB,CAAA;AAAA,IACzC,GAAG,KAAA;AAAA,IACH,iBAAiB,KAAO,EAAA;AACtB,MAAA,KAAA,CAAM,mBAAmB,KAAK,CAAA;AAC9B,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AAEF,MAAA,IAAI,CAAC,uBAAyB,EAAA;AAC5B,QAAQ,OAAA,CAAA,UAAA,CAAW,OAAO,KAAM,EAAA;AAAA;AAElC,MAA0B,uBAAA,GAAA,KAAA;AAE1B,MAAA,KAAA,CAAM,cAAe,EAAA;AAAA,KACvB;AAAA,IACA,kBAAkB,KAAO,EAAA;AACvB,MAAA,KAAA,CAAM,oBAAoB,KAAK,CAAA;AAC/B,MAAA,IAAI,KAAM,CAAA,gBAAA;AACR,QAAA;AAEF,MAAM,MAAA,aAAA,GAAgB,MAAM,MAAO,CAAA,aAAA;AACnC,MAAA,MAAM,aAAgB,GAAA,aAAA,CAAc,MAAW,KAAA,CAAA,IAAK,cAAc,OAAY,KAAA,IAAA;AAC9E,MAAM,MAAA,YAAA,GAAe,aAAc,CAAA,MAAA,KAAW,CAAK,IAAA,aAAA;AACnD,MAAI,IAAA,CAAC,QAAQ,KAAS,IAAA,YAAA;AACpB,QAA0B,uBAAA,GAAA,IAAA;AAAA;AAC9B,GACD,CAAA;AAED,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,gDAAkD,EAAA,sCAAA;AAAA,IAClD,+CAAiD,EAAA,qCAAA;AAAA,IACjD,gDAAkD,EAAA,sCAAA;AAAA,IAClD,qCAAuC,EAAA,kCAAA;AAAA,IACvC,sCAAwC,EAAA;AAAA,GAC1C;AAEA,EAAO,OAAA;AAAA,IACL,cAAc,eAAgB,CAAA,YAAA;AAAA,IAC9B,KAAA,CAAM,UAAa,GAAA,EAAI,EAAA;AACrB,MAAA,MAAM,oBAAuB,GAAA;AAAA,QAC3B,MAAM,OAAQ,CAAA,SAAA;AAAA,QACd,mBAAmB,OAAQ,CAAA,SAAA;AAAA,QAC3B;AAAA,OACF;AAEA,MAAA,OAAO,gBAAgB,KAAM,CAAA,CAAC,oBAAsB,EAAA,GAAG,UAAU,CAAC,CAAA;AAAA;AACpE,GACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;AC1DA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AAEb,IAAA,MAAM,kBAAkB,0BAA2B,CAAA,uBAAA;AAAA,MACjD,KAAA;AAAA,MACA,CAAC,mBAAmB,CAAA;AAAA,MACpB,OAAiE;AAAA,QAC/D,iBAAiB,KAAO,EAAA;AACtB,UAAA,IAAA,CAAK,kBAAkB,KAAK,CAAA;AAAA,SAC9B;AAAA,QACA,aAAa,KAAO,EAAA;AAClB,UAAA,IAAA,CAAK,cAAc,KAAK,CAAA;AAAA,SAC1B;AAAA,QACA,gBAAgB,KAAO,EAAA;AACrB,UAAA,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAAA,SAC7B;AAAA,QACA,qBAAqB,KAAO,EAAA;AAC1B,UAAA,IAAA,CAAK,sBAAsB,KAAK,CAAA;AAAA,SAClC;AAAA,QACA,eAAe,KAAO,EAAA;AACpB,UAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA;AAAA,SAC5B;AAAA,QACA,kBAAkB,KAAO,EAAA;AACvB,UAAA,IAAA,CAAK,mBAAmB,KAAK,CAAA;AAAA;AAC/B,OACF;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;AChCD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,mBAAsB,GAAA,sBAAA,CAAuB,uBAAwB,CAAA,KAAK,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACDjF,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA;AAEb,IAAoB,mBAAA,CAAA,uBAAA;AAAA,MAClB,KAAA;AAAA,MACA,CAAC,QAAQ,KAAK,CAAA;AAAA,MACd,OAA0D;AAAA,QACxD,aAAa,IAAM,EAAA;AACjB,UAAA,IAAA,CAAK,eAAe,IAAI,CAAA;AAAA;AAC1B,OACF;AAAA,KACD,CAAA;;;;;;;ACZM,MAAM,+BAAkC,GAAA;AAAA,EAC7C,IAAM,EAAA,KAAA,CAAA;AAAA,EACN,WAAa,EAAA,KAAA;AACf;AAWgB,SAAA,kBAAA,CAAmB,KAAiC,GAAA,EAAI,EAAA;AACtE,EAAM,MAAA,EAAE,WAAc,GAAA,KAAA,EAAU,GAAA,KAAA;AAEhC,EAAA,MAAM,OAAO,sBAAuB,CAAA,KAAA,CAAM,IAAM,EAAA,KAAA,CAAM,cAAc,WAAW,CAAA;AAE/E,EAAW,UAAA,CAAA;AAAA,IACT,IAAO,GAAA;AACL,MAAA,OAAO,IAAK,CAAA,KAAA;AAAA,KACd;AAAA,IACA,aAAa,CAAG,EAAA;AACd,MAAA,IAAA,CAAK,KAAQ,GAAA,CAAA;AAAA;AACf,GACD,CAAA;AACH;;;;;;;;;;;;;;AC3BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA;AAEb,IAAmB,kBAAA,CAAA,uBAAA;AAAA,MACjB,KAAA;AAAA,MACA,CAAC,MAAM,CAAA;AAAA,MACP,OAAyD;AAAA,QACvD,aAAa,IAAM,EAAA;AACjB,UAAA,IAAA,CAAK,eAAe,IAAI,CAAA;AAAA;AAC1B,OACF;AAAA,KACD,CAAA;;;;;;;ACfM,MAAM,uCAA0C,GAAA;AAAA,EACrD,UAAY,EAAA,KAAA;AACd;AAKO,MAAM,yBAA4B,GAAA;;ACClC,MAAM,4CAA+C,GAAA;AAAA,EAC1D,eAAiB,EAAA,KAAA,CAAA;AAAA,EACjB,gBAAkB,EAAA,KAAA,CAAA;AAAA,EAClB,IAAM,EAAA,KAAA;AACR;AAMgB,SAAA,6BAAA,CAA8B,KAA4C,GAAA,EAAqC,EAAA;AAC7H,EAAM,MAAA,kBAAA,GAAqB,sBAAsB,KAAK,CAAA;AAEtD,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,KAAO,EAAA;AAAA,MACL,gDAAkD,EAAA,sCAAA;AAAA,MAClD,+CAAiD,EAAA,qCAAA;AAAA,MACjD,gDAAkD,EAAA,sCAAA;AAAA,MAClD,qCAAuC,EAAA,kCAAA;AAAA,MACvC,sCAAwC,EAAA;AAAA;AAC1C,GACF;AAEA,EAAO,OAAA;AAAA,IACL,cAAc,kBAAmB,CAAA,YAAA;AAAA,IACjC,KAAA,CAAM,UAAa,GAAA,EAAI,EAAA;AACrB,MAAA,OAAO,mBAAmB,KAAM,CAAA,CAAC,KAAO,EAAA,GAAG,UAAU,CAAC,CAAA;AAAA;AACxD,GACF;AACF;;;;;;;;;;;;;;;;;;;;;;AC3BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA;AAEb,IAAA,MAAM,qBAAqB,6BAA8B,CAAA,uBAAA;AAAA,MACvD,KAAA;AAAA,MACA,CAAC,mBAAmB,CAAA;AAAA,MACpB,OAAoE;AAAA,QAClE,gBAAgB,KAAO,EAAA;AACrB,UAAA,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAAA,SAC7B;AAAA,QACA,qBAAqB,KAAO,EAAA;AAC1B,UAAA,IAAA,CAAK,sBAAsB,KAAK,CAAA;AAAA,SAClC;AAAA,QACA,eAAe,KAAO,EAAA;AACpB,UAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA;AAAA,SAC5B;AAAA,QACA,kBAAkB,KAAO,EAAA;AACvB,UAAA,IAAA,CAAK,mBAAmB,KAAK,CAAA;AAAA;AAC/B,OACF;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;AC1BD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,WAAc,GAAA,yBAAA,CAA0B,uBAAwB,CAAA,KAAK,CAAC,CAAA;;;;;;;;;;;;ACArE,MAAM,mCAAsC,GAAA;AAAA,EACjD,EAAI,EAAA,QAAA;AAAA,EACJ,QAAU,EAAA,KAAA;AACZ;AAMgB,SAAA,sBAAA,CAAuB,KAAqC,GAAA,EAA2B,EAAA;AACrG,EAAM,MAAA,OAAA,GAAU,uBAAuB,qBAAqB,CAAA;AAC5D,EAAM,MAAA,aAAA,GAAgB,iBAAiB,qBAAqB,CAAA;AAE5D,EAAA,SAAS,cAAc,KAAqB,EAAA;AAC1C,IAAA,IAAI,KAAM,CAAA,gBAAA;AACR,MAAA;AAGF,IAAA,IAAI,KAAM,CAAA,MAAA,KAAW,CAAK,IAAA,KAAA,CAAM,YAAY,KAAO,EAAA;AACjD,MAAM,MAAA,MAAA,GAAS,QAAQ,IAAK,EAAA;AAC5B,MAAA,OAAA,CAAQ,YAAa,EAAA;AAGrB,MAAA,IAAI,CAAC,MAAA;AACH,QAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AACzB;AAGF,EAAA,SAAS,UAAU,KAAsB,EAAA;AACvC,IAAA,IAAI,KAAM,CAAA,gBAAA;AACR,MAAA;AACF,IAAA,IAAI,CAAC,OAAS,EAAA,GAAG,CAAE,CAAA,QAAA,CAAS,MAAM,GAAG,CAAA;AACnC,MAAA,OAAA,CAAQ,YAAa,EAAA;AACvB,IAAA,IAAI,MAAM,GAAQ,KAAA,WAAA;AAChB,MAAA,OAAA,CAAQ,aAAa,IAAI,CAAA;AAG3B,IAAA,IAAI,CAAC,OAAS,EAAA,GAAA,EAAK,WAAW,CAAE,CAAA,QAAA,CAAS,MAAM,GAAG,CAAA;AAChD,MAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AAKzB,EAAA,SAAS,SAAS,EAA6B,EAAA;AAC7C,IAAA,OAAA,CAAQ,WAAW,KAAQ,GAAA,EAAA;AAAA;AAG7B,EAAA,SAAA,CAAU,MAAM;AACd,IAAc,aAAA,CAAA,cAAA,CAAe,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAAA,GACtD,CAAA;AAED,EAAO,OAAA;AAAA,IACL,MAAM,UAAY,EAAA;AAChB,MAAM,MAAA,KAAA,GAAQ,QAAQ,IAAK,EAAA;AAC3B,MAAM,MAAA,SAAA,GAAY,MAAM,QAAW,IAAA;AACnC,MAAA,MAAM,KAA0B,GAAA;AAAA,QAC9B,OAAS,EAAA,QAAA;AAAA,QACT,MAAM,OAAQ,CAAA,SAAA;AAAA,QACd,MAAQ,EAAA,QAAA;AAAA,QACR,eAAiB,EAAA,MAAA;AAAA,QACjB,eAAiB,EAAA,KAAA;AAAA,QACjB,eAAA,EAAiB,KAAQ,GAAA,OAAA,CAAQ,SAAY,GAAA,KAAA,CAAA;AAAA,QAC7C,eAAA,EAAiB,YAAY,EAAK,GAAA,KAAA,CAAA;AAAA,QAClC,UAAY,EAAA,SAAA;AAAA,QACZ,aAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAI,IAAA,UAAA,IAAc,WAAW,MAAS,GAAA,CAAA;AACpC,QAAA,mBAAA,CAAoB,OAAO,UAAU,CAAA;AAEvC,MAAO,OAAA,KAAA;AAAA;AACT,GACF;AACF;;;;;;;;;;;;AC5EA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,sBAAsB,sBAAuB,CAAA,uBAAA,CAAwB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;;;;;;;;;;;;;;"}