{"version":3,"sources":["../src/schemes/control.ts","../src/schemes/action.ts","../src/schemes/dynamic.ts","../src/injections.ts","../src/service.ts","../src/plugin.ts","../src/logger.ts","../src/composables/service.ts","../src/composables/teleport.ts","../src/constants.ts","../src/composables/control.tsx","../src/composables/component.ts","../src/composables/action.tsx","../src/components/VDynamicStacks.tsx","../src/components/VDialog.tsx","../src/components/VSnackbarTransition.tsx","../src/components/VSnackbar.tsx","../src/utils/getScrollParent.ts","../src/components/VMenu.tsx"],"names":["computed","_isVNode","ref","inject","_withDirectives","_createVNode","_vShow","attrs","name","props","markRaw","opts","TransitionDefine","node","_mergeProps","_Fragment","control","cloneVNode","h","defineComponent","nextTick","_isSlot","IN_WINDOW","reactive","watch","onBeforeUnmount","withDirectives"],"mappings":"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","file":"vue-stack.mjs","sourcesContent":["import {\n  Ref,\n  Transition,\n  VNode,\n  VNodeChild,\n  PropType,\n  ExtractPropTypes,\n  SetupContext,\n  SlotsType,\n  ComponentPublicInstance,\n  type HTMLAttributes,\n} from 'vue';\nimport { RouteLocationNormalized } from 'vue-router';\nimport { StyleValue, defineSlots, rawNumberProp } from '@fastkit/vue-utils';\nimport { UseKeyboardRef } from '@fastkit/vue-keyboard';\nimport { JavaScriptTransition } from '@fastkit/vue-transitions';\nimport type { VueStackService } from '../service';\n\ntype DelayTimerProps = 'openDelay' | 'closeDelay';\n\n/**\n * Reason for becoming hidden\n *\n * - `indeterminate` Not determined reason\n * - `resolved` - User performed an 'OK'-like action\n * - `canceled` - User performed a 'Cancel'-like action\n */\nexport type StackableCloseReason = 'indeterminate' | 'resolved' | 'canceled';\n\n/**\n * Configuration for closing the stack with the Tab key\n *\n * - `always` Always close.\n * - `not-focused` When the Tab key is pressed and the active element of the document is outside the stack and its activator.\n */\nexport type StackableTabCloseSetting = 'always' | 'not-focused';\n\n/**\n * Configuration for closing the stack with the Tab key\n *\n * If `true` is specified, it is treated as `always`.\n *\n * @see {@link StackableTabCloseSetting}\n */\nexport type StackableTabCloseSpec = boolean | StackableTabCloseSetting;\n\nexport type VStackNavigationGuard = (\n  to: RouteLocationNormalized,\n  from: RouteLocationNormalized,\n) => boolean | Promise<boolean>;\n\n/**\n * Handler function for resolving the stack.\n *\n * Handler function for resolving the stack, which may include validation processes or asynchronous submission tasks.\n *\n * @returns A boolean or undefined value or a Promise that resolves to a boolean or undefined value.\n *   - If `false`, the stack resolution is canceled.\n */\nexport type StackableResolveHandler = (\n  ctx: VStackControl,\n) => boolean | void | undefined | Promise<boolean | void | undefined>;\n\n/**\n * Attributes to apply to the stack element's activator\n */\nexport interface VStackActivatorAttributes {\n  /** VNode ref */\n  ref: Ref;\n  /** Click handler */\n  onClick?: (ev: PointerEvent) => void;\n  /** Context menu handler */\n  onContextmenu?: (ev: PointerEvent) => void;\n  /** Mouse enter handler */\n  onMouseenter?: (ev: MouseEvent) => void;\n  /** Mouse leave handler */\n  onMouseleave?: (ev: MouseEvent) => void;\n  /** Focus handler */\n  onFocus?: (ev: FocusEvent) => void;\n}\n\n/** State of the stack control */\nexport interface VStackControlState {\n  /** Display state */\n  isActive: boolean;\n  /** Activator element */\n  readonly activator: HTMLElement | undefined;\n  /**\n   * Reason for becoming hidden\n   *\n   * @see {@link StackableCloseReason}\n   */\n  closeReason: StackableCloseReason;\n  /** Initial value */\n  initialValue: any;\n  /** Input value */\n  inputValue: any;\n  /**\n   * If the asynchronous resolution handler is in progress, its type.\n   */\n  guardInProgressType: null | 'cancel' | 'resolve';\n  /** During display animation */\n  showing: boolean;\n  /** During hide animation */\n  closing: boolean;\n  /** During guard animation */\n  guardAnimating: boolean;\n  /** Guard animation timer ID */\n  guardAnimateTimeId: number | null;\n  /** Activation order */\n  activateOrder: number;\n  /** Auto-hide timer ID */\n  timeoutId: number | null;\n  /** List of delay request timer IDs */\n  delayTimers: number[];\n  /** Rendering required */\n  needRender: boolean;\n  /** Component mounted */\n  booted: boolean;\n  /** Component destroyed */\n  isDestroyed: boolean;\n  /** Whether the activator element is being hovered. */\n  isActivatorHovered: boolean;\n  /** Whether the stack content is being hovered. */\n  isContentHovered: boolean;\n}\n\n/**\n * Close option\n */\nexport interface VStackCloseOptions {\n  /**\n   * Force close\n   *\n   * When the `persistent` setting is enabled, the stack will not close unless this option is also activated.\n   */\n  force?: boolean;\n  /**\n   * Reason for becoming hidden\n   *\n   * @see {@link StackableCloseReason}\n   */\n  reason?: StackableCloseReason;\n}\n\n/**\n * Check if the specified value is an instance of the stack control\n *\n * @param source - The value to check\n * @returns - If it is a stack control, returns `true`\n */\nexport function isStackControl(source: unknown): source is VStackControl {\n  return (\n    !!source &&\n    typeof source === 'object' &&\n    (source as VStackControl).__isStackControl === true\n  );\n}\n\n/**\n * Stack control\n */\nexport interface VStackControl {\n  readonly __isStackControl: true;\n  readonly props: VStackProps;\n  /** Display state */\n  readonly isActive: boolean;\n  /**\n   * The value entered into the stack\n   *\n   * This is always `undefined` if the `closeReason` is not `resolved`.\n   */\n  value: any;\n  /**\n   * Stack service\n   *\n   * @see {@link VueStackService}\n   */\n  readonly $service: VueStackService;\n  /** List of class attributes */\n  readonly classes: any[];\n  /** List of style attributes */\n  readonly styles: StyleValue[];\n  /** During animation */\n  readonly transitioning: boolean;\n  /** Activation order */\n  readonly activateOrder: number;\n  /** Timeout setting (milliseconds) */\n  readonly timeout: number;\n  /**\n   * Persistently display\n   *\n   * If this setting is enabled, it will attempt to block hide requests or page transitions\n   */\n  readonly persistent: boolean;\n  /** The user has performed a confirmation action, such as 'OK,' for the stack display */\n  readonly isResolved: boolean;\n  /** The user has performed a negative action, such as 'Cancel,' for the stack display */\n  readonly isCanceled: boolean;\n  /** z index */\n  readonly zIndex: number;\n  /** Restore focus after hiding */\n  readonly focusRestorable: boolean;\n  /** Close when the ESC key is pressed */\n  readonly closeOnEsc: boolean;\n  /**\n   * Close when the ESC key is pressed\n   *\n   * @see {@link StackableTabCloseSetting}\n   */\n  readonly closeOnTab: false | StackableTabCloseSetting;\n  /** Close on navigation occurrence */\n  readonly closeOnNavigation: boolean;\n  /** Close when clicking outside the stack area */\n  readonly closeOnOutsideClick: boolean;\n  /** Delay time for display (in milliseconds) */\n  readonly openDelay: number;\n  /** Delay time for hiding (in milliseconds) */\n  readonly closeDelay: number;\n  /** Component destroyed */\n  readonly isDestroyed: boolean;\n  /** Stack content element */\n  readonly contentRef: Ref<HTMLElement | null>;\n  /** Activator element */\n  readonly activator: HTMLElement | undefined;\n  /** Backdrop element */\n  readonly backdropRef: Ref<HTMLElement | null>;\n  /** Stack type */\n  readonly stackType?: string | symbol;\n  /**\n   * Inactivate the stack and disable all display processing\n   */\n  readonly disabled: boolean;\n  /**\n   * If the asynchronous resolution handler is in progress, its type.\n   */\n  readonly guardInProgressType: null | 'cancel' | 'resolve';\n  /**\n   * A boolean flag indicating whether the guard process is currently in progress.\n   * When true, it signifies that the guard is actively executing.\n   */\n  readonly guardInProgress: boolean;\n  /**\n   * The VStackControl instance in the parent hierarchy of the component tree.\n   */\n  readonly parent: VStackControl | undefined;\n  /**\n   * List of VStackControl instances located below this component in the component tree.\n   */\n  readonly children: VStackControl[];\n  /**\n   * List of all nested VStackControl instances, including children.\n   */\n  readonly allChildren: VStackControl[];\n  /**\n   * Whether the mouse pointer is hovering over its activator or stack content.\n   */\n  readonly isHovered: boolean;\n  /**\n   * Whether the specified element is part of its activator or stack element.\n   * @param el - Element\n   */\n  contains(el: Element): boolean;\n\n  /** @private */\n  readonly _: {\n    readonly attrs: Record<string, unknown>;\n    /**\n     * State of the stack control\n     *\n     * @see {@link VStackControlState}\n     */\n    readonly state: VStackControlState;\n    /**\n     * Attributes to apply to the stack element's activator\n     *\n     * @see {@link VStackActivatorAttributes}\n     */\n    readonly activatorAttrs: VStackActivatorAttributes;\n    /** Transition settings */\n    readonly Transition: {\n      readonly Ctor: typeof Transition;\n      readonly props: any;\n    };\n    /**\n     * Keyboard composable\n     *\n     * @see {@link UseKeyboardRef}\n     */\n    readonly keyboard: UseKeyboardRef;\n    /** Listener object related to transitions */\n    readonly transitionListeners: {\n      onBeforeEnter: (el: HTMLElement) => void;\n      onAfterEnter: (el: HTMLElement) => void;\n      onEnterCancelled: (el: HTMLElement) => void;\n      onBeforeLeave: (el: HTMLElement) => void;\n      onAfterLeave: (el: HTMLElement) => void;\n      onLeaveCancelled: (el: HTMLElement) => void;\n    };\n    /** Handler to trap focus */\n    focusTrapper?: (ev: FocusEvent) => void;\n    /**\n     * Set the active state\n     * @param isActive - active state\n     * @param withEmit - Notify of changes\n     */\n    setIsActive(isActive: boolean, withEmit?: boolean): void;\n    /** Clear the auto-hide timer */\n    clearTimeoutId(): void;\n    /** Perform delayed processing */\n    runDelay(prop: number | DelayTimerProps, cb: () => any): void;\n    /** Clear the delayed processing queue */\n    clearDelay(): void;\n    /** Trap focus */\n    trapFocus(ev?: FocusEvent): boolean | void;\n    /** Prepare handler for focus trapping */\n    setupFocusTrapper(): void;\n    /** Remove handler for focus trapping */\n    removeFocusTrapper(): void;\n    /** Update focus trap settings */\n    checkFocusTrap(): void;\n    /** Set rendering request */\n    setNeedRender(needRender: boolean): void;\n    /** Process for determining hide on outside-click */\n    outsideClickCloseConditional(ev: PointerEvent, pre?: boolean): boolean;\n    /** Clear guard effect */\n    clearGuardEffect(): void;\n    joinChild(child: VStackControl): () => void;\n  };\n  /**\n   * Set the activator\n   *\n   * @param query - Specifying the activator element or its query\n   *\n   * @see {@link VStackActivatorQuery}\n   */\n  setActivator(query: VStackActivatorQuery): this;\n  /** Show the stack */\n  show(): Promise<void>;\n  /** Toggle the display state */\n  toggle(): Promise<void>;\n  /**\n   * Close the stack\n   *\n   * @param opts - Close option\n   *\n   * @see {@link VStackCloseOptions}\n   */\n  close(opts?: VStackCloseOptions): Promise<void>;\n  /**\n   * Confirm the stack input\n   *\n   * The stack will close with the `force` option.\n   *\n   * @param payload - The confirmed value (if any)\n   */\n  resolve(payload?: any): Promise<void | undefined | false>;\n  /**\n   * Cancel the stack input\n   *\n   * @param force - Forcefully close\n   */\n  cancel(force?: boolean): Promise<void>;\n  /**\n   * Render the stack\n   *\n   * @param fn - Renderer\n   * @param opts - Rendering options\n   */\n  render(\n    fn: (\n      children: VNodeChild | undefined,\n      opts: {\n        withClickOutside: (node: VNode) => VNode;\n      },\n    ) => VNode,\n    opts?: {\n      transition?: (child?: VNode) => VNode;\n    },\n  ): VNode;\n  /** Bring the stack to the forefront */\n  toFront(): void;\n  /** Reset the stack input */\n  resetValue(): void;\n  /**\n   * Check if the stack is in the foreground\n   * @param filter - Exclude filter for specific stacks\n   */\n  isFront(filter?: (control: VStackControl) => boolean): boolean;\n\n  /**\n   * If the specified element is a comprehensive descendant of this stack or is the same, it returns the included element.\n   *\n   * @param other - The element to be checked.\n   * @param includingActivator - Check if it might be included in the activator element.\n   */\n  getContainsOrSameElement(\n    other: Node | Event | EventTarget | null | undefined,\n    includingActivator?: boolean,\n  ): HTMLElement | undefined;\n  /**\n   * If the specified element is a comprehensive descendant of this stack or is the same, it returns `true`.\n   *\n   * @param other - The element to be checked.\n   * @param includingActivator - Check if it might be included in the activator element.\n   */\n  containsOrSameElement(\n    other: Node | Event | EventTarget | null | undefined,\n    includingActivator?: boolean,\n  ): boolean;\n  /** Execute guard effect */\n  guardEffect(): void;\n}\n\nexport const stackableEmits = {\n  /**\n   * Update display state\n   * @param modelValue - display state\n   */\n  'update:modelValue': (modelValue: boolean) => true,\n  /**\n   * When updating the display state\n   * @param modelValue - display state\n   */\n  change: (modelValue: boolean) => true,\n  /**\n   * When updating the stack input\n   * @param value - Stack input\n   */\n  payload: (value: any) => true,\n  /**\n   * When the stack is displayed\n   * @param control - Stack control\n   */\n  show: (control: VStackControl) => true,\n  /**\n   * When the stack is closed\n   * @param control - Stack control\n   */\n  close: (control: VStackControl) => true,\n  /**\n   * Before the enter transition starts\n   * @param el - Element\n   * @param control - Stack control\n   */\n  beforeEnter: (el: HTMLElement, control: VStackControl) => true,\n  /**\n   * After the enter transition starts\n   * @param el - Element\n   * @param control - Stack control\n   */\n  afterEnter: (el: HTMLElement, control: VStackControl) => true,\n  /**\n   * When the enter transition start is canceled\n   * @param el - Element\n   * @param control - Stack control\n   */\n  enterCancelled: (el: HTMLElement, control: VStackControl) => true,\n  /**\n   * Before the leave transition starts\n   * @param el - Element\n   * @param control - Stack control\n   */\n  beforeLeave: (el: HTMLElement, control: VStackControl) => true,\n  /**\n   * After the leave transition starts\n   * @param el - Element\n   * @param control - Stack control\n   */\n  afterLeave: (el: HTMLElement, control: VStackControl) => true,\n  /**\n   * When the leave transition start is canceled\n   * @param el - Element\n   * @param control - Stack control\n   */\n  leaveCancelled: (el: HTMLElement, control: VStackControl) => true,\n};\n\nexport type StackableEmits = typeof stackableEmits;\n\n/**\n * Payload for the activator slot\n */\nexport interface VStackActivatorPayload {\n  /**\n   * Attributes to apply to the stack element's activator\n   *\n   * @see {@link VStackActivatorAttributes}\n   */\n  get attrs(): VStackActivatorAttributes;\n  /**\n   * Stack control\n   *\n   * @see {@link VStackControl}\n   */\n  get control(): VStackControl;\n}\n\nexport type VStackSlots = {\n  default?: (control: VStackControl) => VNodeChild;\n  /**\n   * Activator rendering slot\n   *\n   * @param payload - Payload for the activator slot\n   *\n   * @see {@link VStackActivatorPayload}\n   */\n  activator?: (payload: VStackActivatorPayload) => VNodeChild;\n};\n\nexport const V_STACK_SLOTS = defineSlots<VStackSlots>();\n\ntype MergeSlots<A extends SlotsType, B extends SlotsType> = SlotsType<\n  NonNullable<A[keyof A]> & NonNullable<B[keyof B]>\n>;\n\nexport type MergeStackBaseSlots<Slots extends SlotsType> = MergeSlots<\n  Slots,\n  typeof V_STACK_SLOTS\n>;\n\nexport interface CreateStackablePropsOptions {\n  /* extends ColorSchemePropsStaticOptions */\n  /** @default \"v-stack-fade\" */\n  defaultTransition?: string;\n  /** @default false */\n  defaultFocusTrap?: boolean;\n  /** @default false */\n  defaultFocusRestorable?: boolean;\n  /** @default false */\n  defaultScrollLock?: boolean;\n  /** @default false */\n  defaultBackdrop?: string | boolean;\n  /** @default true */\n  defaultCloseOnOutsideClick?: boolean;\n  /** @default true */\n  defaultCloseOnNavigation?: boolean;\n  /** @default true */\n  defaultCloseOnEsc?: boolean;\n  /** @default false */\n  defaultCloseOnTab?: StackableTabCloseSpec;\n  /** @default 0 */\n  defaultTimeout?: number;\n  /** @default false */\n  defaultPersistent?: boolean;\n}\n\nexport interface VStackObjectTransitionProp<\n  T extends string | JavaScriptTransition,\n> {\n  transition: T;\n  props?: T extends JavaScriptTransition ? T['props'] : typeof Transition.props;\n}\n\nexport type RawVStackObjectTransitionProp<\n  T extends string | JavaScriptTransition,\n> = string | VStackObjectTransitionProp<T>;\n\n/**\n * Specifying the activator element or its query\n */\nexport type VStackActivatorQuery =\n  | string\n  | Event\n  | Element\n  | ComponentPublicInstance\n  | (() => Element | ComponentPublicInstance | void | undefined | null);\n\nexport type VStackActivatorAttrsObject = HTMLAttributes & Record<string, any>;\n\nexport type VStackActivatorAttrsFn = (ctx: {\n  control: VStackControl;\n}) => VStackActivatorAttrsObject | undefined;\n\nexport type VStackActivatorAttrsSpec =\n  | VStackActivatorAttrsFn\n  | VStackActivatorAttrsObject;\n\nexport function createStackableProps<T extends string | JavaScriptTransition>(\n  opts: CreateStackablePropsOptions = {},\n) {\n  const {\n    defaultTransition = 'v-stack-fade',\n    defaultFocusTrap = false,\n    defaultFocusRestorable = false,\n    defaultScrollLock = false,\n    defaultBackdrop = false,\n    defaultCloseOnOutsideClick = true,\n    defaultCloseOnNavigation = true,\n    defaultCloseOnEsc = true,\n    defaultCloseOnTab = false,\n    defaultTimeout = 0,\n    defaultPersistent = false,\n  } = opts;\n\n  return {\n    /** Display state */\n    modelValue: Boolean,\n    /** Do not display until the component is mounted */\n    lazyBoot: Boolean,\n    /** Stack input */\n    value: null,\n    /** Class attributes */\n    class: null,\n    /** Style attributes */\n    style: null as unknown as PropType<StyleValue>,\n    /**\n     * Transition settings\n     *\n     * @see {@link RawVStackObjectTransitionProp}\n     */\n    transition: {\n      type: [String, Object, Function] as PropType<\n        RawVStackObjectTransitionProp<T>\n      >,\n      default: defaultTransition,\n    },\n    /**\n     * Always draw the stack even when it is invisible\n     *\n     * If your application relies on drawing small elements in the stack, try this setting\n     */\n    alwaysRender: Boolean,\n    /**\n     * Display a backdrop behind the stack\n     *\n     * If string is specified, it will be displayed in that color\n     */\n    backdrop: {\n      type: [Boolean, String] as PropType<boolean | string>,\n      default: defaultBackdrop,\n    },\n    /**\n     * Trap user focus\n     */\n    focusTrap: {\n      type: Boolean,\n      default: defaultFocusTrap,\n    },\n    /**\n     * Restore focus when stack is hidden\n     */\n    focusRestorable: {\n      type: Boolean,\n      default: defaultFocusRestorable,\n    },\n    /**\n     * Lock document scrolling\n     */\n    scrollLock: {\n      type: Boolean,\n      default: defaultScrollLock,\n    },\n    /**\n     * Show stack on activator click\n     */\n    openOnClick: {\n      type: Boolean,\n      default: undefined,\n    },\n    /**\n     * Show stack when hovering over activator\n     */\n    openOnHover: Boolean,\n    /**\n     * Display stack when opening context menu on activator\n     */\n    openOnContextmenu: Boolean,\n    /**\n     * Show stack when focus is on activator\n     */\n    openOnFocus: {\n      type: Boolean,\n      default: undefined,\n    },\n    /**\n     * Time to delay display (in milliseconds)\n     */\n    openDelay: rawNumberProp(0),\n    /**\n     * Time to delay hiding (in milliseconds)\n     */\n    closeDelay: rawNumberProp(200),\n    /**\n     * Close stack when clicking outside the stack\n     */\n    closeOnOutsideClick: {\n      type: Boolean,\n      default: defaultCloseOnOutsideClick,\n    },\n    /**\n     * Close stack when ECS key is pressed\n     */\n    closeOnEsc: {\n      type: Boolean,\n      default: defaultCloseOnEsc,\n    },\n    /**\n     * Close when the ESC key is pressed\n     *\n     * @see {@link StackableTabCloseSpec}\n     */\n    closeOnTab: {\n      type: [Boolean, String] as PropType<StackableTabCloseSpec>,\n      default: defaultCloseOnTab,\n    },\n    /**\n     * Close stack when navigation occurs\n     */\n    closeOnNavigation: {\n      type: Boolean,\n      default: defaultCloseOnNavigation,\n    },\n    /**\n     * Persistently display\n     *\n     * If this setting is enabled, it will attempt to block hide requests or page transitions\n     */\n    persistent: {\n      type: Boolean,\n      default: defaultPersistent,\n    },\n    /**\n     * Inactivate the stack and disable all display processing\n     */\n    disabled: Boolean,\n    /** z index */\n    zIndex: rawNumberProp(0),\n    /** Timeout setting (milliseconds) */\n    timeout: rawNumberProp(defaultTimeout),\n    /**\n     * Guard navigation while viewing stacks\n     *\n     * @see {@link VStackNavigationGuard}\n     */\n    navigationGuard: {\n      type: [Boolean, Function] as PropType<boolean | VStackNavigationGuard>,\n      default: false,\n    },\n    /**\n     * Show hidden guard effects\n     */\n    guardEffect: {\n      type: [Boolean, String],\n      default: true,\n    },\n    /**\n     * Elements to include in the click-outside-directive check\n     *\n     * By specifying this, it is possible to skip the hiding process when clicking outside the stack elements.\n     */\n    includeElements: Function as PropType<() => Element[]>,\n    /**\n     * Specifying the activator element or its query\n     *\n     * @see {@link VStackActivatorQuery}\n     */\n    activator: {} as PropType<VStackActivatorQuery>,\n    /**\n     * Handler function for when the stack is resolved with a positive value.\n     *\n     * Which may include validation processes or asynchronous submission tasks.\n     *\n     * @returns A boolean or undefined value or a Promise that resolves to a boolean or undefined value.\n     *   - If `false`, the stack resolution is canceled.\n     *\n     * @see {@link StackableResolveHandler}\n     */\n    resolveHandler: Function as PropType<StackableResolveHandler>,\n    /**\n     * Handler function for when the stack is resolved with a negative value.\n     *\n     * Which may include validation processes or asynchronous submission tasks.\n     *\n     * @returns A boolean or undefined value or a Promise that resolves to a boolean or undefined value.\n     *   - If `false`, the stack resolution is canceled.\n     *\n     * @see {@link StackableResolveHandler}\n     */\n    cancelHandler: Function as PropType<StackableResolveHandler>,\n    /**\n     * Additional attributes to apply to the element attributes of the activator slot parameters\n     *\n     * If set, the attributes will be added to the `attrs` property\n     * object of the activator slot.\n     *\n     * @see {@link VStackActivatorAttrsSpec}\n     */\n    activatorAttrs: [Function, Object] as PropType<VStackActivatorAttrsSpec>,\n\n    ...V_STACK_SLOTS(),\n  };\n}\n\nexport type StackablePropsOptions = ReturnType<typeof createStackableProps>;\n\nexport type VStackProps = ExtractPropTypes<StackablePropsOptions>;\n\nexport type VStackSetupContext = SetupContext<typeof stackableEmits>;\n\nexport function createStackableDefine(opts?: CreateStackablePropsOptions) {\n  return {\n    props: createStackableProps(opts),\n    emits: stackableEmits,\n  };\n}\n","import { VNodeChild, PropType, ExtractPropTypes } from 'vue';\nimport { VStackControl } from './control';\nimport type { VueStackService } from '../service';\n\nexport interface VStackActionContext {\n  control: VStackControl;\n  key: string | number;\n  onClick: (control: VStackControl, ev: PointerEvent) => any;\n}\n\nexport type VStackActionFn = (ctx: VStackActionContext) => VNodeChild;\n\nexport interface VStackAction {\n  key: string | number;\n  content: VStackActionFn;\n  onClick?: (control: VStackControl, ev: PointerEvent) => any;\n}\n\nexport function createStackActionProps() {\n  return {\n    actions: {\n      type: [Array] as PropType<VStackAction[]>,\n      default: () => [],\n    },\n  };\n}\n\nexport type VStackActionProps = ExtractPropTypes<\n  ReturnType<typeof createStackActionProps>\n>;\n\nexport interface VStackActionControl {\n  readonly control: VStackControl;\n  readonly actions: VStackAction[];\n  readonly $actions: VNodeChild[];\n}\n\nexport type VStackBuiltinActionType = 'ok' | 'cancel' | 'close';\n\nexport interface VStackBuiltinActionContext {\n  service: VueStackService;\n  control: VStackControl;\n  key: string | number;\n  bindings: {\n    onClick?: (ev: PointerEvent) => void;\n  };\n}\n\nexport type VStackBuiltinAction = (\n  context: VStackBuiltinActionContext,\n) => VNodeChild;\n\nexport type VStackBuiltinActions = Record<\n  VStackBuiltinActionType,\n  VStackBuiltinAction\n>;\n\nexport const BUILTIN_ACTION_HANDLERS: Record<\n  VStackBuiltinActionType,\n  (control: VStackControl, ev: PointerEvent) => any\n> = {\n  ok: (control, ev) => {\n    control.resolve(true);\n  },\n  cancel: (control, ev) => {\n    control.resolve(false);\n  },\n  close: (control, ev) => {\n    control.close({ force: true });\n  },\n};\n","import { ComponentPublicInstance, VNodeChild, h, VNode } from 'vue';\nimport { VStackControl } from './control';\n\nexport interface StackableComponent {\n  new (): ComponentPublicInstance<\n    any,\n    any,\n    any,\n    any,\n    any,\n    any,\n    any,\n    any,\n    any,\n    any,\n    any,\n    any\n  >;\n}\n\ntype ComponentProps<T extends StackableComponent> = InstanceType<T>['$props'];\n\ntype ComponentSlots<T extends StackableComponent> = Omit<\n  InstanceType<T>['$slots'],\n  'default'\n> & {\n  default?: DefaultSlot;\n};\n\ntype SlotLike = (...args: any[]) => any;\n\ntype SlotsLike = Record<keyof any, SlotLike>;\n\ntype NormalizeSlot<Slot extends SlotLike | undefined> = (\n  ...args: Parameters<Exclude<Slot, undefined>>\n) => VNodeChild;\n\ntype RawSlots<Slots extends SlotsLike> = {\n  [K in keyof Slots]: NormalizeSlot<Slots[K]> | VNodeChild;\n};\n\ntype DefaultSlot = (stackControl: VStackControl) => VNodeChild;\n\nexport type DefaultContent = VNodeChild | DefaultSlot;\n\nexport type ExtractDynamicStackProps<\n  T extends StackableComponent,\n  _Slots = ComponentSlots<T>,\n> = (ComponentProps<T> & { content?: DefaultContent }) | null;\n\nexport type ExtractDynamicStackSlots<\n  T extends StackableComponent,\n  _Slots = ComponentSlots<T>,\n> = RawSlots<_Slots extends SlotsLike ? _Slots : SlotsLike>;\n\nexport type DynamicStackPayload<Payload = any> = Promise<Payload>;\n\nexport type StackableLauncher<\n  T extends StackableComponent,\n  Payload = any,\n  _Props = ExtractDynamicStackProps<T>,\n> = ((content: DefaultContent) => DynamicStackPayload<Payload>) &\n  ((props: _Props, content: DefaultContent) => DynamicStackPayload<Payload>) &\n  ((\n    props: _Props,\n    slots: ExtractDynamicStackSlots<T>,\n  ) => DynamicStackPayload<Payload>);\n\nexport interface DynamicStackSettings<T extends StackableComponent> {\n  Ctor: T;\n  props: any;\n  slots: any;\n}\n\nconst isObject = (source: unknown): source is Record<keyof any, any> =>\n  !!source && typeof source === 'object' && !Array.isArray(source);\n\nconst normalizeSlot = (source: unknown) => {\n  if (typeof source === 'function') return source;\n  if (typeof source === 'string') {\n    const tmp: (VNode | string)[] = [];\n    const lines = source.trim().split('\\n');\n    lines.forEach((line, index) => {\n      if (index !== 0) tmp.push(h('br'));\n      tmp.push(line);\n    });\n    return () => tmp;\n  }\n  return () => source;\n};\n\nexport function resolveDynamicStackSettings<T extends StackableComponent>(\n  Ctor: T,\n  contentOrProps: DefaultContent | ExtractDynamicStackProps<T>,\n  contentOrSlots?: DefaultContent | ExtractDynamicStackSlots<T>,\n  propsResolver?: (\n    props: ExtractDynamicStackProps<T>,\n  ) => ExtractDynamicStackProps<T>,\n): DynamicStackSettings<T> {\n  let slots: any;\n  let props: any;\n\n  if (isObject(contentOrProps)) {\n    slots = isObject(contentOrSlots)\n      ? {\n          ...contentOrSlots,\n        }\n      : {\n          default: contentOrSlots,\n        };\n    props = {\n      ...contentOrProps,\n    };\n    if ('content' in props) {\n      slots.default = props.content;\n      delete props.content;\n    }\n  } else {\n    slots = {\n      default: contentOrProps,\n    };\n  }\n\n  for (const key of Object.keys(slots)) {\n    slots[key] = normalizeSlot(slots[key]);\n  }\n\n  if (propsResolver) {\n    props = propsResolver(props);\n  }\n\n  return {\n    Ctor,\n    props: {\n      ...props,\n      lazyBoot: true,\n      modelValue: true,\n    },\n    slots,\n  };\n}\n\nexport type DynamicStackResolver = (value: any) => void;\n\nexport interface DynamicStackInternalSetting {\n  id: number;\n  setting: DynamicStackSettings<any>;\n  remove: () => void;\n  resolve: DynamicStackResolver;\n  reject: () => any;\n}\n","import { InjectionKey } from 'vue';\nimport type { VueStackService } from './service';\n\nexport const VueStackInjectionKey: InjectionKey<VueStackService> =\n  Symbol('VueStack');\n\nexport const V_STACK_CONTAINER_CLASS = 'v-stack-container';\n","import { Ref, ref, markRaw, ComputedRef, computed } from 'vue';\nimport { VStackControl } from './schemes/control';\nimport {\n  DynamicStackInternalSetting,\n  StackableComponent,\n  ExtractDynamicStackProps,\n  DefaultContent,\n  ExtractDynamicStackSlots,\n  DynamicStackPayload,\n  resolveDynamicStackSettings,\n  StackableLauncher,\n} from './schemes/dynamic';\n\nexport type { VStackControl } from './schemes/control';\n\nexport { VueStackInjectionKey } from './injections';\n\nexport interface VueStackServiceOptions {\n  zIndex?: number;\n  snackbarDefaultPosition?: 'top' | 'bottom';\n}\n\n/**\n * Stack service\n */\nexport class VueStackService {\n  private readonly _controls: Ref<(() => VStackControl)[]> = ref([]);\n\n  private readonly __controls: ComputedRef<VStackControl[]>;\n\n  /** z-index as a reference for all stacks */\n  readonly zIndex: number;\n\n  /** Snackbar default position */\n  readonly snackbarDefaultPosition: 'top' | 'bottom';\n\n  private _increment = 0;\n\n  private readonly _dynamicSettings: Ref<DynamicStackInternalSetting[]> = ref(\n    [],\n  );\n\n  /**\n   * List of mounted stack control instances\n   *\n   * @see {@link VStackControl}\n   */\n  get controls() {\n    return this.__controls.value;\n  }\n\n  /**\n   * List of dynamic stack display settings\n   *\n   * @see {@link DynamicStackInternalSetting}\n   */\n  get dynamicSettings() {\n    return this._dynamicSettings.value;\n  }\n\n  constructor(opts: VueStackServiceOptions = {}) {\n    const { zIndex = 32767, snackbarDefaultPosition = 'top' } = opts;\n    this.zIndex = zIndex;\n    this.snackbarDefaultPosition = snackbarDefaultPosition;\n\n    this.__controls = computed(() => this._controls.value.map((c) => c()));\n  }\n\n  /** Generate a new stack ID */\n  genId() {\n    return ++this._increment;\n  }\n\n  /**\n   * Add a stack control\n   *\n   * @param control - Stack control\n   * @returns If added, its index within the list. -1 if it already exists\n   */\n  add(control: VStackControl): number {\n    let index = -1;\n    if (!this.__controls.value.includes(control)) {\n      index = this._controls.value.push(() => control);\n    }\n    return index;\n  }\n\n  /**\n   * Remove stack\n   *\n   * @param control - Stack control\n   * @returns If removed, its index. -1 if it doesn't exist\n   */\n  remove(control: VStackControl): VStackControl[] {\n    const index = this.__controls.value.indexOf(control);\n    return this._controls.value.splice(index, 1).map((c) => c());\n  }\n\n  /**\n   * Check if any stack is animated\n   *\n   * @returns - `true` if animation is in progress\n   */\n  someTransitioning() {\n    return this.controls.some((control) => control.transitioning);\n  }\n\n  /**\n   * Get all displayed stacks\n   *\n   * @returns All displayed stacks\n   */\n  getActiveStacks() {\n    return this.controls.filter((control) => control.isActive);\n  }\n\n  /**\n   * Retrieve the stack currently displayed in the foreground.\n   *\n   * @param filter - Filter to exclude stacks\n   * @returns Stack currently displayed in the foreground\n   */\n  getFront(filter?: (control: VStackControl) => boolean) {\n    const controls = this.controls.filter((control) => control.isActive);\n    if (controls.length === 0) return;\n    let maxControl: VStackControl | undefined;\n    let maxActivateOrder = 0;\n    controls.forEach((control) => {\n      if (filter && !filter(control)) return;\n      const { activateOrder } = control;\n      if (activateOrder > maxActivateOrder) {\n        maxActivateOrder = activateOrder;\n        maxControl = control;\n      }\n    });\n    return maxControl;\n  }\n\n  /**\n   * Check if the specified stack is currently displayed in the foreground\n   *\n   * @param control - The stack to check\n   * @returns Stack currently displayed in the foreground\n   * @returns `true` if it is currently displayed in the foreground\n   */\n  isFront(\n    control: VStackControl,\n    filter?: (control: VStackControl) => boolean,\n  ) {\n    return this.getFront(filter) === control;\n  }\n\n  private removeDynamicSetting(setting: DynamicStackInternalSetting) {\n    const settings = this._dynamicSettings.value;\n    const index = settings.indexOf(setting);\n    if (index !== -1) {\n      settings.splice(index, 1);\n    }\n  }\n\n  dynamic<T extends StackableComponent, Payload = any>(\n    Ctor: T,\n    content: DefaultContent,\n  ): DynamicStackPayload<Payload>;\n\n  dynamic<T extends StackableComponent, Payload = any>(\n    Ctor: T,\n    props: ExtractDynamicStackProps<T>,\n    content: DefaultContent,\n    propsResolver?: (\n      props: ExtractDynamicStackProps<T>,\n    ) => ExtractDynamicStackProps<T>,\n  ): DynamicStackPayload<Payload>;\n\n  dynamic<T extends StackableComponent, Payload = any>(\n    Ctor: T,\n    props: ExtractDynamicStackProps<T>,\n    slots: ExtractDynamicStackSlots<T>,\n    propsResolver?: (\n      props: ExtractDynamicStackProps<T>,\n    ) => ExtractDynamicStackProps<T>,\n  ): DynamicStackPayload<Payload>;\n\n  dynamic<T extends StackableComponent, Payload = any>(\n    Ctor: T,\n    contentOrProps: DefaultContent | ExtractDynamicStackProps<T>,\n    contentOrSlots?: DefaultContent | ExtractDynamicStackSlots<T>,\n    propsResolver?: (\n      props: ExtractDynamicStackProps<T>,\n    ) => ExtractDynamicStackProps<T>,\n  ): DynamicStackPayload<Payload> {\n    const setting = resolveDynamicStackSettings(\n      Ctor,\n      contentOrProps,\n      contentOrSlots,\n      propsResolver,\n    );\n    return new Promise<any>((resolve, reject) => {\n      const _setting: DynamicStackInternalSetting = markRaw({\n        id: this.genId(),\n        setting,\n        resolve,\n        reject,\n        remove: () => {\n          this.removeDynamicSetting(_setting);\n        },\n      });\n      this._dynamicSettings.value.push(_setting);\n    });\n  }\n\n  createLauncher<T extends StackableComponent, Payload = any>(\n    Ctor: T,\n    propsResolver?: (\n      props: ExtractDynamicStackProps<T>,\n    ) => ExtractDynamicStackProps<T>,\n  ): StackableLauncher<T, Payload> {\n    return ((contentOrProps: any, contentOrSlots: any) =>\n      this.dynamic(\n        Ctor,\n        contentOrProps,\n        contentOrSlots,\n        propsResolver,\n      )) as StackableLauncher<T, Payload>;\n  }\n}\n","import { App } from 'vue';\nimport { onAppUnmount } from '@fastkit/vue-utils';\nimport {\n  VueStackService,\n  VueStackServiceOptions,\n  VueStackInjectionKey,\n} from './service';\n\ndeclare module 'vue' {\n  export interface ComponentCustomProperties {\n    $vstack: VueStackService;\n  }\n}\n\nexport class VueStackPlugin {\n  static install(app: App, opts?: VueStackServiceOptions) {\n    const $vstack = new VueStackService(opts);\n    app.provide(VueStackInjectionKey, $vstack);\n    app.config.globalProperties.$vstack = $vstack;\n\n    onAppUnmount(app, () => {\n      delete (app.config.globalProperties as any).$vstack;\n    });\n  }\n}\n\nexport function installVueStackPlugin(app: App, opts?: VueStackServiceOptions) {\n  return app.use(VueStackPlugin, opts);\n}\n","import { TinyLogger, createTinyError } from '@fastkit/tiny-logger';\n\nconst name = 'vue-stack';\n\nexport const logger = new TinyLogger(name);\n\nexport const VueStackError = createTinyError(name);\n","import { inject } from 'vue';\nimport { VueStackInjectionKey } from '../injections';\nimport { VueStackError } from '../logger';\n\nexport function useVueStack() {\n  const $vstack = inject(VueStackInjectionKey);\n  if (!$vstack) {\n    throw new VueStackError('missing vue stack service.');\n  }\n  return $vstack;\n}\n","import { computed, ComputedRef } from 'vue';\nimport { IN_DOCUMENT } from '@fastkit/helpers';\nimport { V_STACK_CONTAINER_CLASS } from '../injections';\n\nexport function useTeleport(): ComputedRef<Element | undefined> {\n  const teleportTarget = computed(() => {\n    if (!IN_DOCUMENT) return undefined;\n\n    const parent = document.body;\n\n    let container = parent.querySelector(\n      `:scope > .${V_STACK_CONTAINER_CLASS}`,\n    );\n\n    if (!container) {\n      container = document.createElement('div');\n      container.className = V_STACK_CONTAINER_CLASS;\n      parent.appendChild(container);\n    }\n\n    return container;\n  });\n\n  return teleportTarget;\n}\n","export const V_STACK_ACTIVATED_ATTR = 'data-v-stack-activated';\n\nexport const V_STACK_TYPE_ATTR = 'data-v-stack-type';\n","import { reactive, computed, Transition, onBeforeMount, onMounted, onBeforeUnmount, Teleport, watch, ref, withDirectives, vShow, nextTick, cloneVNode, watchEffect, inject, provide, markRaw, vShow as _vShow, createVNode as _createVNode, withDirectives as _withDirectives, mergeProps as _mergeProps, isVNode as _isVNode, Fragment as _Fragment } from 'vue';\nimport { toInt, IN_WINDOW, arrayRemove } from '@fastkit/helpers';\nimport { attemptFocus, focusFirstDescendant } from '@fastkit/dom';\nimport { clickOutsideDirectiveArgument } from '@fastkit/vue-click-outside';\nimport { bodyScrollLockDirectiveArgument } from '@fastkit/vue-body-scroll-lock';\nimport { useKeyboard } from '@fastkit/vue-keyboard';\nimport { useRouter, isNavigationFailure } from 'vue-router';\nimport { useVueStack } from './service';\nimport { useTeleport } from './teleport';\nimport { V_STACK_ACTIVATED_ATTR, V_STACK_TYPE_ATTR } from '../constants';\nfunction _isSlot(s) {\n  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s);\n}\nconst V_STACK_CONTROL_INJECTION_KEY = Symbol('VStackControl');\nfunction flattenChildren(stacks) {\n  return stacks.flatMap(stack => [stack, ...flattenChildren(stack.children)]);\n}\nconst outsideClickControlFilter = control => control.closeOnOutsideClick;\nconst SUPPORTS_FOCUS_VISIBLE = IN_WINDOW && typeof CSS !== 'undefined' && typeof CSS.supports !== 'undefined' && CSS.supports('selector(:focus-visible)');\nexport function useStackControl(props, ctx, opts = {}) {\n  const {\n    onActivated,\n    onContentMounted,\n    onContentDetached,\n    transitionResolver,\n    manualAttrs\n  } = opts;\n  const router = useRouter();\n  const teleportTarget = useTeleport();\n  const beforeEachHookRemover = router.beforeEach(async (to, from) => {\n    if (!control.isActive) return true;\n    const result = await navigationGuard.value(to, from);\n    if (!result) {\n      control.guardEffect();\n    }\n    return result;\n  });\n  const afterEachHookRemover = router.afterEach((_to, _from, failure) => {\n    if (!isNavigationFailure(failure) && control.closeOnNavigation) {\n      control.close({\n        force: true\n      });\n    }\n  });\n  const activatorRef = ref();\n  const activatorEl = ref();\n  watchEffect(() => {\n    if (!activatorRef.value) return;\n    nextTick(() => {\n      activatorEl.value = refElement(activatorRef.value);\n    });\n  });\n  watch(() => props.activator, activator => {\n    activatorEl.value = getActivator(activator);\n  }, {\n    immediate: true\n  });\n  const parent = inject(V_STACK_CONTROL_INJECTION_KEY, undefined);\n  const $vstack = useVueStack();\n  const state = reactive({\n    isActive: props.lazyBoot ? false : props.modelValue,\n    get activator() {\n      return activatorEl.value;\n    },\n    closeReason: 'indeterminate',\n    initialValue: props.value,\n    inputValue: props.value,\n    showing: false,\n    closing: false,\n    activateOrder: 0,\n    timeoutId: null,\n    delayTimers: [],\n    needRender: false,\n    guardAnimating: false,\n    guardAnimateTimeId: null,\n    booted: false,\n    guardInProgressType: null,\n    isDestroyed: false,\n    isActivatorHovered: false,\n    isContentHovered: false\n  });\n  const transitioning = computed(() => state.showing || state.closing);\n  const persistent = computed(() => props.persistent);\n  const closeOnEsc = computed(() => props.closeOnEsc);\n  const closeOnTab = computed(() => {\n    const {\n      closeOnTab: _closeOnTab\n    } = props;\n    return _closeOnTab === true ? 'always' : _closeOnTab;\n  });\n  const closeOnNavigation = computed(() => props.closeOnNavigation);\n  const closeOnOutsideClick = computed(() => props.closeOnOutsideClick);\n  const alwaysRender = computed(() => props.alwaysRender);\n  const guardEffect = computed(() => props.guardEffect);\n  const scrollLock = computed(() => props.scrollLock);\n  const timeout = computed(() => toInt(props.timeout));\n  const openDelay = computed(() => toInt(props.openDelay));\n  const closeDelay = computed(() => toInt(props.closeDelay));\n  const contentRef = ref(null);\n  const backdropRef = ref(null);\n  const focusTrap = computed(() => props.focusTrap);\n  const focusRestorable = computed(() => props.focusRestorable);\n\n  // const computedActivator = computed(() => props.activator);\n\n  const openOnFocus = computed(() => props.openOnFocus || props.openOnFocus == null && props.openOnHover);\n  const openOnClick = computed(() => props.openOnClick || props.openOnClick == null && !props.openOnContextmenu && !props.openOnHover && !openOnFocus.value);\n  const backdrop = computed(() => {\n    const {\n      backdrop: _backdrop\n    } = props;\n    if (!_backdrop) return;\n    const index = zIndex.value;\n    const style = {\n      zIndex: index,\n      backgroundColor: typeof _backdrop === 'string' ? _backdrop : undefined\n    };\n    return _withDirectives(_createVNode(\"div\", {\n      \"class\": \"v-stack-backdrop\",\n      \"style\": style,\n      \"ref\": backdropRef\n    }, null), [[_vShow, control.isActive]]);\n  });\n  const navigationGuard = computed(() => {\n    const {\n      navigationGuard: _navigationGuard\n    } = props;\n    if (typeof _navigationGuard === 'function') {\n      return _navigationGuard;\n    }\n    return function guard() {\n      if (_navigationGuard || persistent.value || control.guardInProgress) return false;\n      return true;\n    };\n  });\n  const inheritedAttrs = computed(() => {\n    if (manualAttrs) return;\n    const {\n      class: classes,\n      style: styles\n    } = props;\n    return {\n      classes: classes,\n      styles: [styles]\n    };\n  });\n  const zIndex = computed(() => {\n    const _zIndex = toInt(props.zIndex);\n    return _zIndex || $vstack.zIndex + control.activateOrder;\n  });\n  const keyboard = useKeyboard([{\n    key: 'Escape',\n    handler: _ev => {\n      if (!state.isActive || !closeOnEsc.value || !control.isFront() || control.guardInProgress) return;\n      if (persistent.value) {\n        control.guardEffect();\n        return;\n      }\n      control.cancel(false);\n    }\n  }, {\n    key: 'Tab',\n    handler: _ev => {\n      const setting = closeOnTab.value;\n      if (!state.isActive || !setting || !control.isFront() || control.guardInProgress) return;\n      if (persistent.value) {\n        control.guardEffect();\n        return;\n      }\n      if (setting === 'always') {\n        control.cancel(false);\n      }\n\n      // @NOTE Not sure if this delay duration is sufficient.\n      setTimeout(() => {\n        if (!containsOrSameElement(document.activeElement, true)) {\n          control.cancel(false);\n        }\n      });\n    }\n  }], {\n    autorun: true\n  });\n  const setActivatorByEvent = ev => {\n    activatorEl.value = ev.currentTarget || ev.target || undefined;\n  };\n  const isHovered = () => state.isActivatorHovered || state.isContentHovered;\n  const isSelfOrNestedHovered = () => isHovered() || allChildren.value.some(c => c.isHovered);\n  // const hasActiveChild = () => allChildren.value.some((c) => c.isActive);\n\n  function StackMouseStates(acceptLeave) {\n    const delay = 100;\n    let closeDelayTimerId = null;\n    const clearCloseDelayTimer = () => {\n      if (closeDelayTimerId !== null) {\n        clearTimeout(closeDelayTimerId);\n        closeDelayTimerId = null;\n      }\n    };\n    const startCloseDelayTimer = () => {\n      clearCloseDelayTimer();\n      closeDelayTimerId = window.setTimeout(() => {\n        clearCloseDelayTimer();\n        if (!isSelfOrNestedHovered()) {\n          acceptLeave();\n        }\n      }, delay);\n    };\n    const onEnterActivator = () => {\n      state.isActivatorHovered = true;\n      clearCloseDelayTimer();\n    };\n    const onLeaveActivator = () => {\n      state.isActivatorHovered = false;\n      startCloseDelayTimer();\n    };\n    const onEnterContent = () => {\n      state.isContentHovered = true;\n      clearCloseDelayTimer();\n    };\n    const onLeaveContent = () => {\n      state.isContentHovered = false;\n      startCloseDelayTimer();\n    };\n    onBeforeUnmount(clearCloseDelayTimer);\n    return {\n      get delay() {\n        return delay;\n      },\n      onEnterActivator,\n      onLeaveActivator,\n      onEnterContent,\n      onLeaveContent,\n      clear: clearCloseDelayTimer\n    };\n  }\n  const contains = el => {\n    const activator = activatorEl.value;\n    const content = contentRef.value;\n    return !!activator?.contains(el) || !!content?.contains(el) || false;\n  };\n  const mouseStates = StackMouseStates(() => {\n    if (!control.isActive) return;\n    const delay = closeDelay.value;\n    const normalizedDelay = Math.max(delay - mouseStates.delay, 0);\n    privateApi.runDelay(normalizedDelay, () => {\n      if (!control.isActive) return;\n      control.close();\n    });\n  });\n  const handleMouseenterContent = () => {\n    mouseStates.onEnterContent();\n  };\n  const handleMouseleaveContent = () => {\n    // if (hasActiveChild()) return;\n    privateApi.clearDelay();\n    mouseStates.onLeaveContent();\n  };\n  const availableEvents = {\n    onClick: ev => {\n      if (props.disabled) return;\n      setActivatorByEvent(ev);\n      control.toggle();\n    },\n    onMouseenter: ev => {\n      if (props.disabled) return;\n      mouseStates.onEnterActivator();\n      if (state.showing) return;\n      // Show immediately when hovered during hide transition\n      // if (control.transitioning) return;\n      privateApi.clearDelay();\n      if (control.isActive) return;\n      setActivatorByEvent(ev);\n      privateApi.runDelay('openDelay', () => {\n        !control.isActive && control.show();\n      });\n    },\n    onMouseleave: ev => {\n      // if (hasActiveChild()) return;\n      privateApi.clearDelay();\n      mouseStates.onLeaveActivator();\n    },\n    onContextmenu: ev => {\n      if (props.disabled || ev.defaultPrevented) return;\n      ev.preventDefault();\n      setActivatorByEvent(ev);\n      control.toggle();\n    },\n    onFocus: ev => {\n      if (props.disabled) return;\n      if (SUPPORTS_FOCUS_VISIBLE && !ev.target.matches(':focus-visible')) return;\n      setActivatorByEvent(ev);\n      control.show();\n    }\n  };\n  const resolveActivatorAttrsSpec = spec => {\n    if (typeof spec === 'function') {\n      return spec({\n        control\n      });\n    }\n    return spec;\n  };\n  const stackTypeName = (typeof opts.stackType === 'string' ? opts.stackType : opts.stackType?.description) || undefined;\n  const activatorAttrs = computed(() => {\n    const baseAttr = stackTypeName ? {\n      [V_STACK_TYPE_ATTR]: stackTypeName\n    } : {};\n    const setupAttrs = resolveActivatorAttrsSpec(opts.activatorAttrs);\n    const propAttrs = resolveActivatorAttrsSpec(props.activatorAttrs);\n    const classNames = [];\n    setupAttrs?.class && classNames.push(setupAttrs?.class);\n    propAttrs?.class && classNames.push(propAttrs?.class);\n    const attrs = {\n      ...baseAttr,\n      ...setupAttrs,\n      ...propAttrs,\n      ref: activatorRef\n    };\n    if (classNames.length) {\n      attrs.class = classNames;\n    }\n    if (openOnClick.value) {\n      attrs.onClick = availableEvents.onClick;\n    }\n    if (props.openOnHover) {\n      attrs.onMouseenter = availableEvents.onMouseenter;\n      attrs.onMouseleave = availableEvents.onMouseleave;\n    }\n    if (props.openOnContextmenu) {\n      attrs.onContextmenu = availableEvents.onContextmenu;\n    }\n    if (openOnFocus.value) {\n      attrs.onFocus = availableEvents.onFocus;\n    }\n    return attrs;\n  });\n  const TransitionDefine = computed(() => {\n    if (transitionResolver) {\n      return {\n        Ctor: Transition,\n        props: {\n          name: transitionResolver(control)\n        }\n      };\n    }\n    const {\n      transition\n    } = props;\n    if (typeof transition === 'string') {\n      return {\n        Ctor: Transition,\n        props: {\n          name: transition\n        }\n      };\n    } else {\n      let Ctor = transition.transition;\n      let name;\n      if (typeof Ctor === 'string' || Ctor == null) {\n        name = Ctor || undefined;\n        Ctor = Transition;\n      }\n      const props = {\n        ...transition.props\n      };\n      if (name) {\n        props.name = name;\n      }\n      return {\n        Ctor: Transition,\n        props\n      };\n    }\n  });\n  const attrs = computed(() => {\n    const _attrs = {\n      ...ctx.attrs\n    };\n    if (manualAttrs) {\n      const {\n        class: classes,\n        style\n      } = props;\n      if (classes) {\n        _attrs.class = classes;\n      }\n      if (style) {\n        _attrs.style = style;\n      }\n    }\n    return _attrs;\n  });\n  const privateApi = {\n    get attrs() {\n      return attrs.value;\n    },\n    get state() {\n      return state;\n    },\n    get activatorAttrs() {\n      return activatorAttrs.value;\n    },\n    get Transition() {\n      return TransitionDefine.value;\n    },\n    get keyboard() {\n      return keyboard;\n    },\n    transitionListeners: {\n      onBeforeEnter: el => {\n        ctx.emit('beforeEnter', el, control);\n      },\n      onAfterEnter: el => {\n        state.showing = false;\n        state.closing = false;\n        privateApi.clearTimeoutId();\n        if (control.timeout) {\n          state.timeoutId = window.setTimeout(() => {\n            privateApi.clearTimeoutId();\n            control.close({\n              force: true\n            });\n          }, control.timeout);\n        }\n        if (focusTrap.value && control.isFront()) {\n          privateApi.trapFocus();\n        }\n        ctx.emit('afterEnter', el, control);\n      },\n      onEnterCancelled: el => {\n        state.showing = false;\n        state.closing = false;\n        ctx.emit('enterCancelled', el, control);\n      },\n      onBeforeLeave: el => {\n        ctx.emit('beforeLeave', el, control);\n      },\n      onAfterLeave: el => {\n        state.showing = false;\n        state.closing = false;\n        onContentDetached && onContentDetached(control);\n        nextTick(() => {\n          !control.isActive && privateApi.setNeedRender(false);\n        });\n        ctx.emit('afterLeave', el, control);\n      },\n      onLeaveCancelled: el => {\n        state.showing = false;\n        state.closing = false;\n        ctx.emit('leaveCancelled', el, control);\n      }\n    },\n    clearTimeoutId: () => {\n      if (state.timeoutId !== null) {\n        clearTimeout(state.timeoutId);\n        state.timeoutId = null;\n      }\n    },\n    setIsActive(value, withEmit = true) {\n      if (state.isActive === value || value && props.disabled) return;\n      privateApi.clearTimeoutId();\n      value && triggerContentMountedTick();\n      state.isActive = value;\n      withEmit && ctx.emit('update:modelValue', value);\n      ctx.emit('change', value);\n      if (value) {\n        state.showing = true;\n        control.toFront();\n        ctx.emit('show', control);\n      } else {\n        state.closing = true;\n        ctx.emit('close', control);\n      }\n    },\n    clearDelay() {\n      for (const timer of state.delayTimers) {\n        clearTimeout(timer);\n      }\n      state.delayTimers = [];\n    },\n    runDelay(prop, cb) {\n      privateApi.clearDelay();\n      const amount = typeof prop === 'number' ? prop : control[prop];\n      if (!amount) return cb();\n      state.delayTimers.push(window.setTimeout(cb, toInt(amount)));\n    },\n    trapFocus(ev) {\n      const $content = contentRef.value;\n      if (!$content) return;\n      const activeElement = ev?.target || document.activeElement;\n      if (activeElement && $content.contains(activeElement)) {\n        return;\n      }\n      const nodes = [$content, ...Array.from($content.childNodes)];\n      for (const node of nodes) {\n        if (attemptFocus(node) || focusFirstDescendant(node)) {\n          return true;\n        }\n      }\n      return false;\n    },\n    setupFocusTrapper() {\n      privateApi.removeFocusTrapper();\n      privateApi.focusTrapper = ev => {\n        if ($vstack.isFront(control)) {\n          privateApi.trapFocus(ev);\n        }\n      };\n      document.addEventListener('focus', privateApi.focusTrapper, true);\n    },\n    removeFocusTrapper() {\n      if (privateApi.focusTrapper) {\n        document.removeEventListener('focus', privateApi.focusTrapper, true);\n        delete privateApi.focusTrapper;\n      }\n    },\n    checkFocusTrap() {\n      if (!IN_WINDOW) return;\n      if (control.isActive && focusTrap.value) {\n        privateApi.setupFocusTrapper();\n      } else {\n        privateApi.removeFocusTrapper();\n      }\n    },\n    setNeedRender(needRender) {\n      if (!needRender) state.activateOrder = 0;\n      state.needRender = alwaysRender.value || needRender;\n    },\n    outsideClickCloseConditional(ev, pre) {\n      if (control.guardInProgress || !closeOnOutsideClick.value || state.showing || !control.isFront(outsideClickControlFilter) || $vstack.someTransitioning()) {\n        return false;\n      }\n      if (!pre && persistent.value) {\n        control.guardEffect();\n        return false;\n      }\n      const target = ev.target;\n      if (allChildren.value.some(c => c.contains(target))) {\n        return false;\n      }\n      return control.isActive;\n    },\n    clearGuardEffect() {\n      if (state.guardAnimateTimeId !== null) {\n        clearTimeout(state.guardAnimateTimeId);\n      }\n      state.guardAnimating = false;\n    },\n    joinChild(child) {\n      nestedChildren.value.push(child);\n      const remover = () => {\n        arrayRemove(nestedChildren.value, child);\n      };\n      onBeforeUnmount(remover);\n      return remover;\n    }\n  };\n  const getContainsOrSameElement = (other, includingActivator) => {\n    if (other instanceof Event) {\n      other = other.target;\n    }\n    if (!other || !(other instanceof Node)) return;\n    const content = contentRef.value;\n    if (!content) return;\n    if (content && (content === other || content.contains(other))) return content;\n    if (!includingActivator) return;\n    const activator = activatorEl.value;\n    if (activator && (activator === other || activator.contains(other))) return activator;\n  };\n  const containsOrSameElement = (other, includingActivator) => !!getContainsOrSameElement(other, includingActivator);\n  const dispatchResolveHandler = async type => {\n    const handler = type === 'resolve' ? props.resolveHandler : props.cancelHandler;\n    if (!handler) return;\n    try {\n      state.guardInProgressType = type;\n      const result = await handler(control);\n      state.guardInProgressType = null;\n      return result;\n    } catch (err) {\n      state.guardInProgressType = null;\n      throw err;\n    }\n  };\n  const nestedChildren = ref([]);\n  const allChildren = computed(() => flattenChildren(nestedChildren.value));\n  const control = markRaw({\n    __isStackControl: true,\n    _: privateApi,\n    get props() {\n      return props;\n    },\n    get parent() {\n      return parent;\n    },\n    get children() {\n      return nestedChildren.value;\n    },\n    get allChildren() {\n      return allChildren.value;\n    },\n    get isHovered() {\n      return isHovered();\n    },\n    get $service() {\n      return $vstack;\n    },\n    get stackType() {\n      return opts.stackType;\n    },\n    get transitioning() {\n      return transitioning.value;\n    },\n    get persistent() {\n      return persistent.value;\n    },\n    get closeOnEsc() {\n      return closeOnEsc.value;\n    },\n    get closeOnTab() {\n      return closeOnTab.value;\n    },\n    get closeOnNavigation() {\n      return closeOnNavigation.value;\n    },\n    get closeOnOutsideClick() {\n      return closeOnOutsideClick.value;\n    },\n    get zIndex() {\n      return zIndex.value;\n    },\n    get isActive() {\n      return state.isActive;\n    },\n    get timeout() {\n      return timeout.value;\n    },\n    get classes() {\n      const classes = ['v-stack', inheritedAttrs.value?.classes];\n      if (state.guardAnimating) {\n        classes.push('v-stack-guard-effect');\n      }\n      return classes;\n    },\n    get styles() {\n      const styles = [{\n        zIndex: zIndex.value\n      }];\n      const inheritedStyle = inheritedAttrs.value?.styles;\n      inheritedStyle && styles.unshift(inheritedStyle);\n      return styles;\n    },\n    get activateOrder() {\n      return state.activateOrder;\n    },\n    get isResolved() {\n      return state.closeReason === 'resolved';\n    },\n    get isCanceled() {\n      return state.closeReason === 'canceled';\n    },\n    get value() {\n      return control.isResolved ? state.inputValue : undefined;\n    },\n    set value(value) {\n      if (state.inputValue !== value) {\n        state.inputValue = value;\n        ctx.emit('payload', value);\n      }\n    },\n    get focusRestorable() {\n      return focusRestorable.value;\n    },\n    get openDelay() {\n      return openDelay.value;\n    },\n    get closeDelay() {\n      return closeDelay.value;\n    },\n    get isDestroyed() {\n      return state.isDestroyed;\n    },\n    get contentRef() {\n      return contentRef;\n    },\n    get activator() {\n      return state.activator;\n    },\n    get backdropRef() {\n      return backdropRef;\n    },\n    get guardInProgressType() {\n      return state.guardInProgressType;\n    },\n    get guardInProgress() {\n      return !!state.guardInProgressType;\n    },\n    get disabled() {\n      return props.disabled;\n    },\n    contains,\n    setActivator(query) {\n      activatorEl.value = getActivator(query);\n      return this;\n    },\n    show() {\n      // Fix for bubbling cue.\n      return new Promise(resolve => setTimeout(() => {\n        privateApi.setIsActive(true);\n        resolve();\n      }, 0));\n    },\n    toggle() {\n      return control.isActive ? control.close() : control.show();\n    },\n    close(opts = {}) {\n      const {\n        force = false,\n        reason = 'indeterminate'\n      } = opts;\n      if ((control.guardInProgress || persistent.value) && !force) return Promise.resolve();\n      state.closeReason = reason;\n      privateApi.setIsActive(false);\n      return Promise.resolve();\n    },\n    resetValue() {\n      control.value = state.initialValue;\n    },\n    async resolve(value) {\n      if (control.guardInProgress) return;\n      if ((await dispatchResolveHandler(value ? 'resolve' : 'cancel')) === false) {\n        return false;\n      }\n      if (value !== undefined) {\n        control.value = value;\n      }\n      return this.close({\n        force: true,\n        reason: 'resolved'\n      });\n    },\n    async cancel(force) {\n      if (!control.isActive) return;\n      if (!force && (await dispatchResolveHandler('cancel')) === false) {\n        return;\n      }\n      return control.close({\n        force,\n        reason: 'canceled'\n      });\n    },\n    toFront() {\n      const front = $vstack.getFront();\n      const maxActivateOrder = front ? front.activateOrder : 0;\n      state.activateOrder = maxActivateOrder + 1;\n    },\n    isFront(filter) {\n      return $vstack.isFront(control, filter);\n    },\n    guardEffect() {\n      if (!guardEffect.value) return;\n      state.guardAnimating = false;\n      nextTick(() => {\n        state.guardAnimating = true;\n        state.guardAnimateTimeId = window.setTimeout(privateApi.clearGuardEffect, 150);\n      });\n    },\n    getContainsOrSameElement,\n    containsOrSameElement,\n    render(fn, opts = {}) {\n      const {\n        booted,\n        needRender\n      } = state;\n      const {\n        default: defaultSlot,\n        activator: activatorSlot\n      } = ctx.slots;\n      const {\n        transitionListeners,\n        Transition: TransitionDefine\n      } = privateApi;\n      const $activator = activatorSlot && activatorSlot({\n        attrs: privateApi.activatorAttrs,\n        control\n      });\n      const $contents = [];\n      // if ($activator) {\n      //   $contents.push(...$activator);\n      // }\n\n      let $child;\n      if (booted) {\n        if (needRender) {\n          const children = defaultSlot && defaultSlot(control);\n          const _clickOutside = clickOutsideDirectiveArgument({\n            handler: _ev => {\n              control.close();\n            },\n            conditional: privateApi.outsideClickCloseConditional,\n            include: props.includeElements\n          });\n          let usedClickOutside = false;\n          const withClickOutside = node => {\n            usedClickOutside = true;\n            return withDirectives(node, [_clickOutside]);\n          };\n          const node = fn(children, {\n            withClickOutside\n          });\n          const dirs = [[vShow, control.isActive], bodyScrollLockDirectiveArgument(scrollLock.value && control.isActive)];\n          if (!usedClickOutside) {\n            dirs.push(_clickOutside);\n          }\n          $child = withDirectives(node, dirs);\n          const _props = {\n            class: control.classes,\n            style: control.styles,\n            ref: contentRef\n          };\n          if (props.openOnHover) {\n            _props.onMouseenter = handleMouseenterContent;\n            _props.onMouseleave = handleMouseleaveContent;\n          }\n          $child = cloneVNode($child, _props);\n        }\n        const {\n          transition\n        } = opts;\n        let $transition;\n        if (transition) {\n          $transition = cloneVNode(transition($child), transitionListeners);\n        } else {\n          const {\n            Ctor: TransitionCtor,\n            props: transitionProps\n          } = TransitionDefine;\n          $transition = _createVNode(TransitionCtor, _mergeProps(transitionProps, transitionListeners), _isSlot($child) ? $child : {\n            default: () => [$child]\n          });\n        }\n        $contents.push(_createVNode(Teleport, {\n          \"to\": teleportTarget.value\n        }, {\n          default: () => [[_createVNode(Transition, {\n            \"name\": \"v-stack-fade\"\n          }, {\n            default: () => [backdrop.value]\n          }), $transition]]\n        }));\n      }\n      return _createVNode(_Fragment, null, [$activator, $contents]);\n    }\n  });\n  provide(V_STACK_CONTROL_INJECTION_KEY, control);\n  parent?._.joinChild(control);\n  onBeforeMount(() => {\n    $vstack.add(control);\n  });\n  onMounted(() => {\n    state.booted = true;\n    if (props.lazyBoot && props.modelValue) {\n      control.show();\n    }\n    if (control.isActive) {\n      control.toFront();\n      triggerContentMountedTick();\n      privateApi.checkFocusTrap();\n    }\n  });\n  let _stopWatchActivatorActiveHandle;\n  const stopWatchActivatorActive = () => {\n    if (_stopWatchActivatorActiveHandle) {\n      _stopWatchActivatorActiveHandle();\n      _stopWatchActivatorActiveHandle = undefined;\n    }\n  };\n  onBeforeUnmount(() => {\n    stopWatchActivatorActive();\n    privateApi.clearDelay();\n    privateApi.clearTimeoutId();\n    privateApi.removeFocusTrapper();\n    state.isDestroyed = true;\n    activatorEl.value = undefined;\n    beforeEachHookRemover();\n    afterEachHookRemover();\n    $vstack.remove(control);\n  });\n  watch(() => props.modelValue, modelValue => {\n    privateApi.setIsActive(modelValue, false);\n  });\n  watch(() => props.value, value => {\n    state.inputValue = value;\n    state.initialValue = value;\n  });\n  watch(() => state.isActive, value => {\n    if (!value) {\n      state.isContentHovered = false;\n\n      // @TODO In a structure like Tooltip > Modal, the Modal may unintentionally be hidden\n      // for (const child of allChildren.value) {\n      //   child.close();\n      // }\n    }\n    if (value) {\n      privateApi.setNeedRender(true);\n    } else if (state.activator) {\n      if (focusRestorable.value) {\n        attemptFocus(state.activator);\n      }\n    }\n    privateApi.checkFocusTrap();\n    onActivated?.(value, control);\n  }, {\n    immediate: true\n  });\n  watch(activatorEl, (el, beforeEl) => {\n    beforeEl?.removeAttribute(V_STACK_ACTIVATED_ATTR);\n    stopWatchActivatorActive();\n    if (!el) {\n      state.isActivatorHovered = false;\n      return;\n    }\n    if (!IN_WINDOW) return;\n    _stopWatchActivatorActiveHandle = watch(() => state.isActive, isActive => {\n      // @TODO There are cases where el is not an Element, but this is probably due to an unexpected assignment occurring somewhere.\n      // Specifically, it has been confirmed that it is a Proxy instance.\n      if (!(el instanceof Element)) {\n        return;\n      }\n      if (isActive) {\n        el.setAttribute(V_STACK_ACTIVATED_ATTR, '');\n      } else {\n        el.removeAttribute(V_STACK_ACTIVATED_ATTR);\n      }\n    }, {\n      immediate: true\n    });\n  }, {\n    immediate: true\n  });\n  watch(() => props.alwaysRender, value => {\n    if (value) {\n      privateApi.setNeedRender(true);\n    }\n  }, {\n    immediate: true\n  });\n  watch(() => props.disabled, disabled => {\n    disabled && control.close({\n      force: true\n    });\n  });\n  function triggerContentMountedTick(count = 0) {\n    const content = contentRef.value;\n    if (content) {\n      // this.autofocus();\n      onContentMounted && onContentMounted(content, control);\n      return;\n    }\n    count++;\n    if (count < 3) {\n      nextTick(() => {\n        triggerContentMountedTick(count);\n      });\n    }\n  }\n  return control;\n}\nfunction refElement(obj) {\n  return (obj && '$el' in obj ? obj.$el : obj) || undefined;\n}\nfunction getActivator(query) {\n  if (!IN_WINDOW || !query) return;\n  if (typeof query === 'string') return document.querySelector(query) || undefined;\n  const queryOrEl = typeof query === 'function' ? query() : query;\n  if (!queryOrEl) return;\n  if (queryOrEl instanceof Event) {\n    const {\n      currentTarget\n    } = queryOrEl;\n    if (currentTarget && currentTarget !== document) {\n      return currentTarget;\n    }\n    return queryOrEl.target || undefined;\n  }\n  return refElement(queryOrEl);\n}","import {\n  ExtractPropTypes,\n  VNode,\n  VNodeChild,\n  ComponentPropsOptions,\n  EmitsOptions,\n  SetupContext,\n  SlotsType,\n  PropType,\n  ObjectEmitsOptions,\n} from 'vue';\nimport {\n  VStackControl,\n  StackablePropsOptions,\n  StackableEmits,\n} from '../schemes';\nimport { useStackControl, UseStackControlOptions } from './control';\n\nexport type StackableSetupContext<\n  Props extends Readonly<ComponentPropsOptions>,\n  Emits extends EmitsOptions,\n  Slots extends SlotsType,\n  CustomAPI extends Record<keyof any, any>,\n> = {\n  readonly control: VStackControl;\n  readonly props: ExtractPropTypes<StackablePropsOptions & Props>;\n  readonly setupContext: SetupContext<StackableEmits & Emits, Slots>;\n} & CustomAPI;\n\nexport interface DefineStackableSettings<\n  Props extends Readonly<ComponentPropsOptions>,\n  Emits extends EmitsOptions,\n  Slots extends SlotsType,\n  CustomAPI extends Record<keyof any, any> = {},\n> {\n  name?: string;\n  setup?: (\n    ctx: StackableSetupContext<Props, Emits, Slots, CustomAPI>,\n  ) =>\n    | ((\n        children: VNodeChild,\n        ctx: StackableSetupContext<Props, Emits, Slots, CustomAPI>,\n      ) => VNode)\n    | void;\n  render?: (\n    children: VNodeChild,\n    ctx: StackableSetupContext<Props, Emits, Slots, CustomAPI>,\n  ) => VNode;\n}\n\n/**\n * @TODO Utility to temporarily deal with the fact that emits options can no longer be merged since vue3.4.\n */\nexport type EmitsToPropOptions<T extends EmitsOptions> = T extends string[]\n  ? {\n      [K in string & `on${Capitalize<T[number]>}`]: PropType<\n        (...args: any[]) => any\n      >;\n    }\n  : T extends ObjectEmitsOptions\n    ? {\n        [K in string &\n          `on${Capitalize<string & keyof T>}`]: K extends `on${infer C}`\n          ? T[Uncapitalize<C>] extends null\n            ? never // PropType<(...args: any[]) => any>\n            : PropType<\n                (\n                  ...args: T[Uncapitalize<C>] extends (...args: infer P) => any\n                    ? P\n                    : never\n                ) => any\n              >\n          : never;\n      }\n    : {};\n\nexport function setupStackableComponent<\n  Props extends Readonly<ComponentPropsOptions>,\n  Emits extends EmitsOptions = EmitsOptions,\n  Slots extends SlotsType = SlotsType,\n  CustomAPI extends Record<keyof any, any> = Record<keyof any, any>,\n>(\n  props: any,\n  setupContext: any,\n  options?: UseStackControlOptions,\n): StackableSetupContext<Props, Emits, Slots, CustomAPI> {\n  const control = useStackControl(props, setupContext, options);\n  return {\n    control,\n    props,\n    setupContext: setupContext as any,\n  } as any;\n}\n","import { computed } from 'vue';\nexport function useStackAction(props, control, opts = {}) {\n  const {\n    resolver\n  } = opts;\n  const actions = computed(() => {\n    const {\n      actions: _actions\n    } = props;\n    return resolver ? resolver(_actions) : _actions;\n  });\n  const $actions = computed(() => actions.value.map(action => {\n    const onClick = (control, ev) => action.onClick?.(control, ev);\n    const content = action.content({\n      control,\n      key: action.key,\n      onClick\n    });\n    return content;\n  }));\n  const actionControl = {\n    get control() {\n      return control;\n    },\n    get actions() {\n      return actions.value;\n    },\n    get $actions() {\n      return $actions.value;\n    }\n  };\n  return actionControl;\n}","import { defineComponent, h, cloneVNode, Fragment as _Fragment, createVNode as _createVNode } from 'vue';\nimport { useVueStack } from '../composables';\nexport const VDynamicStacks = defineComponent({\n  name: 'VDynamicStacks',\n  setup(_props, ctx) {\n    const $vstack = useVueStack();\n    return () => {\n      const {\n        dynamicSettings: settings\n      } = $vstack;\n      const $dynamicStacks = settings.map(({\n        id: key,\n        setting,\n        resolve,\n        remove\n      }) => {\n        const {\n          Ctor,\n          props,\n          slots\n        } = setting;\n        const node = cloneVNode(h(Ctor, {\n          ...props,\n          key\n        }, slots), {\n          onClose: control => {\n            resolve(control.value);\n          },\n          onAfterLeave: () => {\n            remove();\n          }\n        });\n        return node;\n      });\n      return _createVNode(_Fragment, null, [ctx.slots.default?.(), $dynamicStacks]);\n    };\n  }\n});","import { createVNode as _createVNode } from \"vue\";\nimport './VDialog.scss';\nimport { defineComponent } from 'vue';\nimport { createStackableDefine } from '../schemes';\nimport { setupStackableComponent } from '../composables';\nimport { VueStackError } from '../logger';\nfunction createDialogScheme(options = {}) {\n  const {\n    defaultTransition = 'v-stack-slide-y',\n    defaultScrollLock = true,\n    defaultBackdrop = false,\n    defaultCloseOnOutsideClick = true,\n    defaultPersistent = false\n  } = options;\n  const {\n    props,\n    emits\n  } = createStackableDefine({\n    defaultTransition,\n    defaultFocusTrap: true,\n    defaultFocusRestorable: true,\n    defaultScrollLock,\n    defaultBackdrop,\n    defaultCloseOnOutsideClick,\n    defaultPersistent\n  });\n  return {\n    props,\n    emits\n  };\n}\nexport function defineDialogComponent(settings) {\n  const baseScheme = createDialogScheme(settings);\n  const {\n    name,\n    props,\n    emits,\n    manualAttrs\n  } = settings;\n  const Component = defineComponent({\n    name,\n    inheritAttrs: false,\n    props: {\n      ...baseScheme.props,\n      ...props\n    },\n    emits: {\n      ...baseScheme.emits,\n      ...emits\n    },\n    slots: settings.slots,\n    setup(_props, _ctx) {\n      const dialogCtx = setupStackableComponent(_props, _ctx, {\n        manualAttrs\n      });\n      const {\n        control\n      } = dialogCtx;\n      const render = settings.setup?.(dialogCtx) || settings.render;\n      if (!render) {\n        throw new VueStackError('render function is required.');\n      }\n      const hostBaseAttrs = settings.attrs || {};\n      const hostAttrs = {\n        ...hostBaseAttrs,\n        class: ['v-stack-dialog', hostBaseAttrs.class],\n        tabindex: '0'\n      };\n      return () => control.render((children, {\n        withClickOutside\n      }) => _createVNode(\"div\", hostAttrs, [_createVNode(\"div\", {\n        \"class\": \"v-stack-dialog__scroller\"\n      }, [_createVNode(\"div\", {\n        \"class\": \"v-stack-dialog__centerer\"\n      }, [withClickOutside(render(children, dialogCtx))])])]));\n    }\n  });\n  return Component;\n}","import { nextTick } from 'vue';\nimport { generateJavaScriptTransition } from '@fastkit/vue-transitions';\nimport { addTransitionendEvent } from '@fastkit/dom';\nconst HORIZONTAL_MARGIN = 24;\nconst SAFE_TIMEOUT = 1000;\nconst getHeight = el => {\n  const {\n    height\n  } = el.getBoundingClientRect();\n  if (height) return Promise.resolve(height);\n  return new Promise(resolve => {\n    nextTick(() => {\n      resolve(el.getBoundingClientRect().height);\n    });\n  });\n};\nexport const stackSnackbarTransitionProps = {\n  top: Boolean,\n  bottom: Boolean,\n  left: Boolean,\n  right: Boolean\n};\nexport const VSnackbarTransition = generateJavaScriptTransition({\n  displayName: 'VSnackbarTransition',\n  props: stackSnackbarTransitionProps,\n  setup(props) {\n    const {\n      top,\n      left,\n      right\n    } = props;\n    const hasHorizontal = left || right;\n    const marginProp = top ? 'marginTop' : 'marginBottom';\n    let safeTimer = null;\n    const setOffset = (el, disableTransition = false) => new Promise(resolve => {\n      getHeight(el).then(height => {\n        let offset = -height;\n        if (hasHorizontal) offset -= HORIZONTAL_MARGIN;\n        if (!disableTransition) {\n          el.style[marginProp] = `${offset}px`;\n          return resolve();\n        }\n        el.style.transition = 'none';\n        el.style[marginProp] = `${offset}px`;\n        setTimeout(() => {\n          el.style.transition = '';\n          setTimeout(resolve, 0);\n        }, 30);\n      });\n    });\n    const removeOffset = (el, disableTransition = false) => {\n      if (!disableTransition) {\n        el.style[marginProp] = '';\n        return Promise.resolve();\n      }\n      return new Promise(resolve => {\n        el.style.transition = 'none';\n        el.style[marginProp] = '';\n        setTimeout(() => {\n          el.style.transition = '';\n          setTimeout(resolve, 0);\n        }, 0);\n      });\n    };\n    const clearSafeTimer = () => {\n      if (safeTimer !== null) {\n        clearTimeout(safeTimer);\n        safeTimer = null;\n      }\n    };\n    function reset(_el, disableTransition) {\n      removeOffset(_el, disableTransition);\n      clearSafeTimer();\n    }\n    return {\n      onEnter: (_el, done) => {\n        const el = _el;\n        clearSafeTimer();\n        safeTimer = window.setTimeout(() => {\n          clearSafeTimer();\n          done();\n        }, SAFE_TIMEOUT);\n        const beforeTimer = safeTimer;\n        setOffset(el, true).then(() => {\n          addTransitionendEvent(el, () => {\n            if (beforeTimer !== safeTimer) return;\n            clearSafeTimer();\n            done();\n          }, {\n            once: true,\n            properties: prop => prop.indexOf('margin') === 0\n          });\n          removeOffset(el);\n        });\n      },\n      onAfterEnter: reset,\n      onEnterCancelled: reset,\n      onLeave: (_el, done) => {\n        const el = _el;\n        clearSafeTimer();\n        safeTimer = window.setTimeout(() => {\n          clearSafeTimer();\n          done();\n        }, SAFE_TIMEOUT);\n        const beforeTimer = safeTimer;\n        setOffset(el).then(() => {\n          addTransitionendEvent(el, () => {\n            if (beforeTimer !== safeTimer) return;\n            reset(el, true);\n            done();\n          }, {\n            once: true,\n            properties: prop => prop.indexOf('margin') === 0\n          });\n        });\n      },\n      onAfterLeave: reset,\n      onLeaveCancelled: reset\n    };\n  }\n});","import { isVNode as _isVNode, createVNode as _createVNode } from \"vue\";\nimport './VSnackbar.scss';\nimport { defineComponent, computed } from 'vue';\nimport { createStackableDefine } from '../schemes';\nimport { setupStackableComponent } from '../composables';\nimport { VSnackbarTransition, stackSnackbarTransitionProps } from './VSnackbarTransition';\nimport { VueStackError } from '../logger';\n\n/**\n * Snackbar position\n */\nfunction _isSlot(s) {\n  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s);\n}\nexport function defineSnackbarComponent(settings) {\n  const {\n    name,\n    defaultTransition = 'v-stack-fade',\n    defaultTimeout = 6000\n  } = settings;\n  const {\n    props,\n    emits\n  } = createStackableDefine({\n    defaultTransition,\n    defaultCloseOnOutsideClick: false,\n    defaultCloseOnNavigation: false,\n    defaultTimeout\n  });\n  const stackSnackbarProps = {\n    ...props,\n    ...stackSnackbarTransitionProps\n  };\n  const Component = defineComponent({\n    name,\n    inheritAttrs: false,\n    props: {\n      ...stackSnackbarProps,\n      ...settings.props\n    },\n    emits: {\n      ...emits,\n      ...settings.emits\n    },\n    slots: settings.slots,\n    setup(_props, _ctx) {\n      const baseCtx = setupStackableComponent(_props, _ctx);\n      const {\n        control,\n        props\n      } = baseCtx;\n      const {\n        snackbarDefaultPosition\n      } = control.$service;\n      const snackPosition = computed(() => {\n        let {\n          top,\n          bottom,\n          left\n        } = props;\n        const {\n          right\n        } = props;\n        if (top === bottom) {\n          top = snackbarDefaultPosition === 'top';\n          bottom = !top;\n        }\n        if (left && right) {\n          left = false;\n        }\n        return {\n          top,\n          bottom,\n          left,\n          right\n        };\n      });\n      const snackClasses = computed(() => {\n        const {\n          left,\n          right,\n          top,\n          bottom\n        } = snackPosition.value;\n        const hasHorizontal = left || right;\n        return ['v-stack-snackbar', {\n          'v-stack-snackbar--top': top,\n          'v-stack-snackbar--bottom': bottom,\n          'v-stack-snackbar--left': left,\n          'v-stack-snackbar--right': right,\n          'v-stack-snackbar--x-center': !hasHorizontal,\n          'v-stack-snackbar--has-horizontal': hasHorizontal\n        }];\n      });\n      const snackbarContext = {\n        ...baseCtx,\n        get position() {\n          return snackPosition.value;\n        },\n        get attrs() {\n          return {\n            class: snackClasses.value\n          };\n        }\n      };\n      const render = settings.setup?.(snackbarContext) || settings.render;\n      if (!render) {\n        throw new VueStackError('render function is required.');\n      }\n      return () => control.render(children => render(children, snackbarContext), {\n        transition: child => _createVNode(VSnackbarTransition, snackPosition.value, _isSlot(child) ? child : {\n          default: () => [child]\n        })\n      });\n    }\n  });\n  return Component;\n}","export function getScrollParent(el?: HTMLElement | null): HTMLElement {\n  while (el) {\n    if (hasScrollbar(el)) return el;\n    el = el.parentElement!;\n  }\n\n  return document.scrollingElement as HTMLElement;\n}\n\nexport function getScrollParents(\n  el?: Element | null,\n  stopAt?: Element | null,\n): HTMLElement[] {\n  const elements: HTMLElement[] = [];\n  if (stopAt && el && !stopAt.contains(el)) return elements;\n\n  const { scrollingElement } = document;\n\n  let hasDocumentScrollingElement = false;\n\n  while (el) {\n    if (hasScrollbar(el)) {\n      elements.push(el as HTMLElement);\n      if (el === scrollingElement) {\n        hasDocumentScrollingElement = true;\n      }\n    }\n    if (el === stopAt) break;\n    el = el.parentElement!;\n  }\n\n  if (scrollingElement && !hasDocumentScrollingElement) {\n    elements.push(scrollingElement as HTMLElement);\n  }\n\n  return elements;\n}\n\nexport function hasScrollbar(el?: Element | null) {\n  if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n\n  const style = window.getComputedStyle(el);\n  return (\n    style.overflowY === 'scroll' ||\n    (style.overflowY === 'auto' && el.scrollHeight > el.clientHeight)\n  );\n}\n","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\nimport './VMenu.scss';\nimport { defineComponent, computed, reactive, withDirectives, ref, watch, onBeforeUnmount } from 'vue';\nimport { useWindow, resizeDirectiveArgument } from '@fastkit/vue-resize';\nimport { IN_WINDOW } from '@fastkit/helpers';\nimport { createStackableDefine } from '../schemes';\nimport { setupStackableComponent } from '../composables';\nimport { logger, VueStackError } from '../logger';\nimport { getScrollParents } from '../utils';\nconst DEFAULT_EDGE_MARGIN = 20;\nconst DEFAULT_FORCE_EDGE_MARGIN = false;\nconst DEFAULT_DISTANCE = 10;\nconst DEFAULT_RESIZE_WATCH_DEBOUNCE = 250;\nconst DEFAULT_TRANSITION = 'v-menu-auto';\n\n/**\n * Overlap settings with the activator\n *\n * - `allow` Allow overlapping if display space is insufficient\n * - `disallow` Do not allow overlapping even when display space is insufficient.\n * - `overlap` Overlap on the activator\n *\n * If internal position settings like (left, right, top, bottom)-inner are used, this configuration does not apply to that axis.\n */\n\nconst RAW_MENU_SIZE_PROP = {\n  type: [Number, String],\n  default: undefined\n};\nconst RAW_MENU_MAX_SIZE_PROP = [Number, String, Function];\nexport function createMenuProps(options = {}) {\n  const {\n    defaultDistance = DEFAULT_DISTANCE,\n    defaultEdgeMargin = DEFAULT_EDGE_MARGIN,\n    defaultForceEdgeMargin = DEFAULT_FORCE_EDGE_MARGIN,\n    defaultResizeWatchDebounce = DEFAULT_RESIZE_WATCH_DEBOUNCE,\n    defaultAllowOverflow = false,\n    defaultOverlap = false,\n    defaultHideOnScroll = false,\n    defaultHideOnInvisible = true\n  } = options;\n  return {\n    /**\n     * Horizontal Axis Position\n     *\n     * - `left` To the left of the activator.\n     * - `left-inner` Align to the left edge of the activator.\n     * - `center` Align to the center of the activator.\n     * - `right` To the right of the activator.\n     * - `right-inner` Align to the right edge of the activator.\n     */\n    x: String,\n    /**\n     * Vertical Axis Position\n     *\n     * - `top` To the top of the activator.\n     * - `top-inner` Align to the top edge of the activator.\n     * - `center` Align to the center of the activator.\n     * - `bottom` To the bottom of the activator.\n     * - `bottom-inner` Align to the bottom edge of the activator.\n     */\n    y: String,\n    /**\n     * Allow overflow from the screen.\n     *\n     * If this setting is not enabled, the element's size will be reduced when exceeding coordinates beyond the screen edge, subtracting the edge margin.\n     */\n    allowOverflow: {\n      type: Boolean,\n      default: defaultAllowOverflow\n    },\n    /**\n     * width\n     *\n     * Either specify a pixel size or use \"fit\". When \"fit\" is chosen, the width will match that of the activator.\n     */\n    width: RAW_MENU_SIZE_PROP,\n    /**\n     * height\n     *\n     * Either specify a pixel size or use \"fit\". When \"fit\" is chosen, the height will match that of the activator.\n     */\n    height: RAW_MENU_SIZE_PROP,\n    /**\n     * Minimum width\n     *\n     * Either specify a pixel size or use \"fit\". When \"fit\" is chosen, the width will match that of the activator.\n     */\n    minWidth: RAW_MENU_SIZE_PROP,\n    /**\n     * Minimum height\n     *\n     * Either specify a pixel size or use \"fit\". When \"fit\" is chosen, the width will match that of the activator.\n     */\n    minHeight: RAW_MENU_SIZE_PROP,\n    /**\n     * Maximum width\n     *\n     * It is possible to set values that can be configured as CSS or dynamic sizes through callback functions.\n     *\n     * This setting is ignored if `allowOverflow` is enabled.\n     *\n     * @see {@link RAW_MENU_MAX_SIZE_PROP}\n     */\n    maxWidth: RAW_MENU_MAX_SIZE_PROP,\n    /**\n     * Maximum height\n     *\n     * It is possible to set values that can be configured as CSS or dynamic sizes through callback functions.\n     *\n     * This setting is ignored if `allowOverflow` is enabled.\n     *\n     * @see {@link RAW_MENU_MAX_SIZE_PROP}\n     */\n    maxHeight: RAW_MENU_MAX_SIZE_PROP,\n    /**\n     * Distance from the activator (in pixels).\n     *\n     * If a position setting, such as (left, right, top, bottom)-inner, is used, the distance is not applied to that axis.\n     */\n    distance: {\n      type: Number,\n      default: defaultDistance\n    },\n    /**\n     * Margin from the screen edge\n     *\n     * By default, it is controlled to ensure that the coordinates, subtracted by this margin from the screen edge, do not overflow.\n     */\n    edgeMargin: {\n      type: Number,\n      default: defaultEdgeMargin\n    },\n    /**\n     * Force margin at edge\n     *\n     * By default, even if `edgeMargin` is set, the activator may snap outside that margin. Enabling this option forces the component to always maintain the specified `edgeMargin` from the screen edge.\n     */\n    forceEdgeMargin: {\n      type: Boolean,\n      default: defaultForceEdgeMargin\n    },\n    /**\n     * Overlap settings with the activator\n     *\n     * - `allow` | `false` Allow overlapping if display space is insufficient\n     * - `disallow` Do not allow overlapping even when display space is insufficient.\n     * - `overlap` | `true` Overlap on the activator\n     *\n     * If internal position settings like (left, right, top, bottom)-inner are used, this configuration does not apply to that axis.\n     *\n     * @see {@link MenuOverlapSettings}\n     */\n    overlap: {\n      type: [Boolean, String],\n      default: defaultOverlap\n    },\n    resizeWatchDebounce: {\n      type: Number,\n      default: defaultResizeWatchDebounce\n    },\n    /**\n     * Hide when scrolling\n     *\n     * If a value is specified, the tooltip will be hidden after scrolling by the specified number of pixels (px).\n     */\n    hideOnScroll: {\n      type: [Boolean, String, Number],\n      default: defaultHideOnScroll\n    },\n    /**\n     * Hide the stack element when the activator is scrolled out of view.\n     */\n    hideOnInvisible: {\n      type: Boolean,\n      default: defaultHideOnInvisible\n    }\n  };\n}\nfunction createMenuScheme(options = {}) {\n  const {\n    defaultTransition = DEFAULT_TRANSITION,\n    defaultScrollLock = false,\n    defaultCloseOnEsc = true,\n    defaultCloseOnTab = true\n  } = options;\n  const {\n    props,\n    emits\n  } = createStackableDefine({\n    defaultTransition,\n    defaultScrollLock,\n    defaultCloseOnEsc,\n    defaultCloseOnTab\n  });\n  return {\n    props: {\n      ...props,\n      ...createMenuProps(options)\n    },\n    emits\n  };\n}\nconst getScrollingElement = () => {\n  if (!IN_WINDOW) return;\n  const {\n    scrollingElement\n  } = document;\n  if (!scrollingElement) {\n    logger.warn('document.scrollingElement is not scrollable.');\n  }\n  return scrollingElement;\n};\nexport function defineMenuComponent(settings) {\n  const baseScheme = createMenuScheme(settings);\n  const {\n    name,\n    props: customProps,\n    emits,\n    activatorAttrs,\n    stackType\n  } = settings;\n  const Component = defineComponent({\n    name,\n    inheritAttrs: false,\n    props: {\n      ...baseScheme.props,\n      ...customProps\n    },\n    emits: {\n      ...baseScheme.emits,\n      ...emits\n    },\n    slots: settings.slots,\n    setup(_props, _ctx) {\n      const __props = _props;\n      let _intersectionObserver;\n      const state = reactive({\n        pageXOffset: 0,\n        pageYOffset: 0,\n        rect: null,\n        activatorRect: null\n      });\n      const startOffsets = ref({\n        pageXOffset: 0,\n        pageYOffset: 0\n      });\n      const menuResizeHandler = rect => {\n        menuResizeHandler._clear();\n        menuResizeHandler._id = requestAnimationFrame(() => {\n          updateRects(rect);\n        });\n      };\n      menuResizeHandler._id = undefined;\n      menuResizeHandler._clear = () => {\n        if (menuResizeHandler._id !== undefined) {\n          cancelAnimationFrame(menuResizeHandler._id);\n          menuResizeHandler._id = undefined;\n        }\n      };\n      const _disposeIntersectionObserver = () => {\n        if (_intersectionObserver) {\n          _intersectionObserver.disconnect();\n          _intersectionObserver = undefined;\n        }\n      };\n      const getActivatorElement = _control => {\n        const $activator = _control.activator;\n        return $activator instanceof Event ? $activator.target : $activator;\n      };\n      const onActivated = (isActive, _control) => {\n        if (!isActive) {\n          _disposeIntersectionObserver();\n          return;\n        }\n        const scrollingElement = getScrollingElement();\n        if (!scrollingElement) return;\n        startOffsets.value = {\n          pageXOffset: scrollingElement.scrollLeft,\n          pageYOffset: scrollingElement.scrollTop\n        };\n        if (!__props.hideOnInvisible) return;\n        const activator = getActivatorElement(_control);\n        if (!activator) return;\n        _intersectionObserver = new IntersectionObserver(entries => {\n          if (!control.isActive) return;\n          for (const entry of entries) {\n            const inview = entry.isIntersecting;\n            if (!inview) {\n              _control.close();\n              break;\n            }\n          }\n        }, {\n          // root: scrollingElement,\n        });\n        _intersectionObserver.observe(activator);\n      };\n      const _transition = computed(() => {\n        const {\n          transition\n        } = __props;\n        if (typeof transition === 'string' && transition !== DEFAULT_TRANSITION) return transition;\n        const {\n          x,\n          y\n        } = _positionFlags.value;\n        if (y === 'top') return 'v-stack-slide-y-reverse';\n        if (y === 'bottom') return 'v-stack-slide-y';\n        if (x === 'left') return 'v-stack-slide-x-reverse';\n        if (x === 'right') return 'v-stack-slide-x';\n        if (y === 'top-inner') return 'v-stack-slide-y';\n        if (y === 'bottom-inner') return 'v-stack-slide-y-reverse';\n        if (x === 'left-inner') return 'v-stack-slide-x';\n        if (x === 'right-inner') return 'v-stack-slide-x-reverse';\n        return 'v-stack-scale';\n      });\n      const transitionResolver = () => {\n        return _transition.value;\n      };\n      const baseCtx = setupStackableComponent(_props, _ctx, {\n        onActivated,\n        onContentMounted: () => {\n          updateRects();\n        },\n        transitionResolver,\n        stackType,\n        activatorAttrs\n      });\n      const {\n        props,\n        control\n      } = baseCtx;\n      const _scrollerRef = ref(null);\n      const _bodyRef = ref(null);\n      const _distance = computed(() => props.distance);\n      const _resizeWatchDebounce = computed(() => props.resizeWatchDebounce);\n      const $window = useWindow();\n      const hideOnScrollOffset = computed(() => {\n        let {\n          hideOnScroll\n        } = props;\n        if (typeof hideOnScroll === 'string') {\n          hideOnScroll = Number(hideOnScroll);\n        }\n        if (hideOnScroll === true) {\n          hideOnScroll = 0;\n        }\n        if (hideOnScroll === false) return;\n        return hideOnScroll;\n      });\n      const _overlap = computed(() => {\n        const {\n          overlap\n        } = props;\n        if (typeof overlap === 'boolean') {\n          return overlap ? 'overlap' : 'allow';\n        }\n        return overlap;\n      });\n      const _edgeMargin = computed(() => props.edgeMargin);\n      const _forceEdgeMargin = computed(() => props.forceEdgeMargin);\n      const calcMinEdge = direction => {\n        const pageOffset = direction === 'left' ? state.pageXOffset : state.pageYOffset;\n        const min = _edgeMargin.value + pageOffset;\n        if (_forceEdgeMargin.value) return min;\n        const activatorEdge = state.activatorRect?.[direction];\n        if (activatorEdge === undefined) return min;\n        if (activatorEdge < 0) {\n          return pageOffset;\n        }\n        if (activatorEdge < min) {\n          return activatorEdge;\n        }\n        return min;\n      };\n      const calcMaxEdge = direction => {\n        const isX = direction === 'right';\n        const pageOffset = isX ? state.pageXOffset : state.pageYOffset;\n        const windowSize = isX ? $window.width : $window.height;\n        const max = windowSize - _edgeMargin.value + pageOffset;\n        if (_forceEdgeMargin.value) return max;\n        const activatorEdge = state.activatorRect?.[direction];\n        if (activatorEdge === undefined) return max;\n        if (activatorEdge > windowSize) {\n          return pageOffset + windowSize;\n        }\n        if (activatorEdge + pageOffset > max) {\n          return activatorEdge + pageOffset;\n        }\n        return max;\n      };\n      const _minLeft = computed(() => calcMinEdge('left'));\n      const _minTop = computed(() => calcMinEdge('top'));\n      const _maxRight = computed(() => calcMaxEdge('right'));\n      const _maxBottom = computed(() => calcMaxEdge('bottom'));\n      const resolveMaxSize = raw => {\n        if (raw == null) return raw;\n        if (typeof raw === 'function') {\n          return baseCtx.control.isActive ? raw($window) : undefined;\n        }\n        return raw;\n      };\n      const resolveSize = size => size === 'free' ? undefined : size;\n      const _width = computed(() => resolveSize(props.width));\n      const _height = computed(() => resolveSize(props.height));\n      const _minWidth = computed(() => resolveSize(props.minWidth));\n      const _minHeight = computed(() => resolveSize(props.minHeight));\n      const _maxWidth = computed(() => resolveMaxSize(props.maxWidth));\n      const _maxHeight = computed(() => resolveMaxSize(props.maxHeight));\n      const _positionFlags = computed(() => {\n        let {\n          x,\n          y\n        } = props;\n        if (!y && (!x || x === 'left-inner' || x === 'right-inner')) {\n          y = 'bottom';\n        }\n        if (!y) {\n          y = 'center';\n        }\n        if (!x) {\n          if (y === 'bottom-inner' || y === 'top-inner') {\n            x = 'left';\n          } else {\n            x = 'center';\n          }\n        }\n        return {\n          x,\n          y,\n          xInner: x === 'left-inner' || x === 'right-inner',\n          yInner: y === 'top-inner' || y === 'bottom-inner',\n          left: x === 'left' || x === 'left-inner',\n          right: x === 'right' || x === 'right-inner',\n          top: y === 'top' || y === 'top-inner',\n          bottom: y === 'bottom' || y === 'bottom-inner'\n        };\n      });\n      const _rect = computed(() => {\n        const {\n          rect,\n          activatorRect\n        } = state;\n        if (!rect) return null;\n        if (!activatorRect) return null;\n        const {\n          allowOverflow\n        } = props;\n        const {\n          pageXOffset,\n          pageYOffset\n        } = state;\n        const minLeft = _minLeft.value;\n        const minTop = _minTop.value;\n        const maxRight = _maxRight.value;\n        const maxBottom = _maxBottom.value;\n        const distance = _distance.value;\n        const overlapSettings = _overlap.value;\n        const isOverlap = overlapSettings === 'overlap';\n        const disallowOverlap = overlapSettings === 'disallow';\n        let computedWidth = _width.value;\n        let computedHeight = _height.value;\n        let computedMinWidth = _minWidth.value;\n        const computedMinHeight = _minHeight.value;\n        let computedMaxWidth = _maxWidth.value;\n        let computedMaxHeight = _maxHeight.value;\n        let left;\n        let top;\n        let width;\n        let height;\n        const {\n          width: myWidth,\n          height: myHeight\n        } = rect;\n        const {\n          top: activatorTop,\n          left: activatorLeft,\n          right: activatorRight,\n          bottom: activatorBottom,\n          width: activatorWidth,\n          height: activatorHeight\n        } = activatorRect;\n        const _mw = computedWidth;\n        const _mh = computedHeight;\n        if (computedWidth === 'fit') computedWidth = Math.max(activatorWidth, myWidth);\n        if (computedHeight === 'fit') computedHeight = Math.max(activatorHeight, myHeight);\n        if (computedMaxWidth === 'fit') computedMaxWidth = activatorWidth;\n        if (computedMaxHeight === 'fit') computedMaxHeight = activatorHeight;\n        if (computedMinWidth === 'fit') computedMinWidth = activatorWidth;\n        if (computedMinHeight === 'fit') computedMinWidth = activatorHeight;\n        let {\n          top: isTop,\n          bottom: isBottom,\n          left: isLeft,\n          right: isRight\n        } = _positionFlags.value;\n        const {\n          xInner,\n          yInner\n        } = _positionFlags.value;\n        width = typeof computedWidth === 'number' ? computedWidth : myWidth;\n        height = typeof computedHeight === 'number' ? computedHeight : myHeight;\n        const overlapHeight = isOverlap ? activatorHeight : 0;\n        const overlapWidth = isOverlap ? activatorWidth : 0;\n        const topFree = activatorTop - _edgeMargin.value + overlapHeight;\n        const bottomFree = $window.height - _edgeMargin.value - activatorBottom + overlapHeight;\n        const leftFree = activatorLeft - _edgeMargin.value + overlapWidth;\n        const rightFree = $window.width - _edgeMargin.value - activatorRight + overlapWidth;\n        if (typeof computedMinWidth === 'number' && width < computedMinWidth) {\n          width = computedMinWidth;\n        }\n        if (typeof computedMaxWidth === 'number' && width > computedMaxWidth) {\n          width = computedMaxWidth;\n        }\n        if (typeof computedMinHeight === 'number' && height < computedMinHeight) {\n          height = computedMinHeight;\n        }\n        if (typeof computedMaxHeight === 'number' && height > computedMaxHeight) {\n          height = computedMaxHeight;\n        }\n        if (!yInner && (computedMaxHeight == null || _mh !== 'fit')) {\n          if (isBottom) {\n            if (height > bottomFree) {\n              if (bottomFree < topFree) {\n                isBottom = false;\n                isTop = true;\n                computedMaxHeight = topFree;\n              } else {\n                computedMaxHeight = bottomFree;\n              }\n            }\n          } else if (isTop) {\n            if (height > topFree) {\n              if (topFree < bottomFree) {\n                isTop = false;\n                isBottom = true;\n                computedMaxHeight = bottomFree;\n              } else {\n                computedMaxHeight = topFree;\n              }\n            }\n          }\n        }\n        if (!xInner && (computedMaxWidth == null || _mw !== 'fit')) {\n          if (isRight) {\n            if (width > rightFree) {\n              if (rightFree < leftFree) {\n                isRight = false;\n                isLeft = true;\n                computedMaxWidth = leftFree;\n              } else {\n                computedMaxWidth = rightFree;\n              }\n            }\n          } else if (isLeft) {\n            if (width > leftFree) {\n              if (leftFree < rightFree) {\n                isLeft = false;\n                isRight = true;\n                computedMaxWidth = rightFree;\n              } else {\n                computedMaxWidth = leftFree;\n              }\n            }\n          }\n        }\n        if (!allowOverflow && typeof computedMaxWidth === 'number' && width > computedMaxWidth) {\n          width = computedMaxWidth;\n        }\n        if (!allowOverflow && typeof computedMaxHeight === 'number' && height > computedMaxHeight) {\n          height = computedMaxHeight;\n        }\n        if (isTop) {\n          if (yInner) {\n            top = activatorTop;\n          } else {\n            top = activatorTop - height;\n            if (isOverlap) top += activatorHeight;\n          }\n        } else if (isBottom) {\n          if (yInner) {\n            top = activatorBottom - height;\n          } else {\n            top = activatorBottom;\n            if (isOverlap) top -= activatorHeight;\n          }\n        } else {\n          top = activatorTop - (height - activatorHeight) / 2;\n        }\n        top += pageYOffset;\n        if (isLeft) {\n          if (xInner) {\n            left = activatorLeft;\n          } else {\n            left = activatorLeft - width;\n            if (isOverlap) left += activatorWidth;\n          }\n        } else if (isRight) {\n          if (xInner) {\n            left = activatorRight - width;\n          } else {\n            left = activatorRight;\n            if (isOverlap) left -= activatorWidth;\n          }\n        } else {\n          left = activatorLeft - (width - activatorWidth) / 2;\n        }\n        left += pageXOffset;\n        if (!isOverlap) {\n          if (!yInner) {\n            if (isBottom) {\n              top += distance;\n            } else if (isTop) {\n              top -= distance;\n            }\n          }\n          if (!xInner) {\n            if (isRight) {\n              left += distance;\n            } else if (isLeft) {\n              left -= distance;\n            }\n          }\n        }\n        let right = left + width;\n        let bottom = top + height;\n\n        // ==================================================\n        // If it extends beyond the screen (plus edge margin), it will move towards the inside.\n        // ==================================================\n\n        const rightOverflow = right - maxRight;\n        if (rightOverflow > 0) {\n          left -= rightOverflow;\n          right -= rightOverflow;\n          if (isRight && disallowOverlap) {\n            const overlapSize = activatorRight + distance + pageXOffset - left;\n            if (overlapSize > 0) {\n              left += overlapSize;\n              right += overlapSize;\n            }\n          }\n        }\n        const bottomOverflow = bottom - maxBottom;\n        if (bottomOverflow > 0) {\n          top -= bottomOverflow;\n          bottom -= bottomOverflow;\n          if (isBottom && disallowOverlap) {\n            const overlapSize = activatorBottom + distance + pageYOffset - top;\n            if (overlapSize > 0) {\n              top += overlapSize;\n              bottom += overlapSize;\n            }\n          }\n        }\n        const leftOverflow = minLeft - left;\n        if (leftOverflow > 0) {\n          left += leftOverflow;\n          right += leftOverflow;\n          if (isLeft && disallowOverlap) {\n            const overlapSize = right - (activatorLeft - distance + pageXOffset);\n            if (overlapSize > 0) {\n              left -= overlapSize;\n              right -= overlapSize;\n            }\n          }\n        }\n        const topOverflow = minTop - top;\n        if (topOverflow > 0) {\n          top += topOverflow;\n          bottom += topOverflow;\n          if (isTop && disallowOverlap) {\n            const overlapSize = bottom - (activatorTop - distance + pageYOffset);\n            if (overlapSize > 0) {\n              top -= overlapSize;\n              bottom -= overlapSize;\n            }\n          }\n        }\n\n        // ==================================================\n        // If allowOverflow is disabled and it extends beyond the screen (plus edge margin), then reduce the size.\n        // ==================================================\n        if (!allowOverflow) {\n          const overflowRight = right - maxRight;\n          if (overflowRight > 0) {\n            width -= overflowRight;\n            right -= overflowRight;\n          }\n          const overflowBottom = bottom - maxBottom;\n          if (overflowBottom > 0) {\n            height -= overflowBottom;\n            bottom -= overflowBottom;\n          }\n          const overflowLeft = minLeft - left;\n          if (overflowLeft > 0) {\n            width -= overflowLeft;\n            left += overflowLeft;\n          }\n          const overflowTop = minTop - top;\n          if (overflowTop > 0) {\n            height -= overflowTop;\n            top += overflowTop;\n          }\n        }\n        const bubbleStyles = {};\n        if (isTop) {\n          if (yInner) {\n            bubbleStyles['--bubble-top'] = `${activatorHeight * 0.5}px`;\n          } else {\n            bubbleStyles['--bubble-top'] = '100%';\n          }\n        } else if (isBottom) {\n          if (yInner) {\n            bubbleStyles['--bubble-bottom'] = `${activatorHeight * 0.5}px`;\n          } else {\n            bubbleStyles['--bubble-bottom'] = '100%';\n          }\n        } else {\n          bubbleStyles['--bubble-top'] = '50%';\n          // bubbleStyles['--bubble-top'] = `${\n          //   activatorHeight * 0.5 + (activatorTop - top)\n          // }px`;\n        }\n        if (isLeft) {\n          if (xInner) {\n            bubbleStyles['--bubble-left'] = `${Math.min(width * 0.5, activatorWidth * 0.5)}px`;\n          } else {\n            bubbleStyles['--bubble-left'] = '100%';\n          }\n        } else if (isRight) {\n          if (xInner) {\n            bubbleStyles['--bubble-right'] = `${Math.min(width * 0.5, activatorWidth * 0.5)}px`;\n          } else {\n            bubbleStyles['--bubble-right'] = '100%';\n          }\n        } else {\n          bubbleStyles['--bubble-left'] = `${activatorWidth * 0.5 + (activatorLeft - left)}px`;\n        }\n        return {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          positions: {\n            top: isTop,\n            bottom: isBottom,\n            left: isLeft,\n            right: isRight,\n            xInner,\n            yInner\n          },\n          bubble: {\n            styles: bubbleStyles\n          }\n        };\n      });\n      const _styles = computed(() => {\n        const styles = {\n          position: 'absolute'\n        };\n        const rect = _rect.value;\n        if (rect) {\n          styles.left = `${rect.left}px`;\n          styles.top = `${rect.top}px`;\n          styles.width = `${rect.width}px`;\n          styles.height = `${rect.height}px`;\n          Object.assign(styles, rect.bubble.styles);\n        } else {\n          styles.visibility = 'hidden';\n        }\n        return styles;\n      });\n      const updatePageOffset = () => {\n        const scrollingElement = getScrollingElement();\n        if (scrollingElement) {\n          state.pageXOffset = scrollingElement.scrollLeft;\n          state.pageYOffset = scrollingElement.scrollTop;\n        }\n      };\n      const updateMenuRect = menuBodyRect => {\n        const content = control.contentRef.value;\n        const body = _bodyRef.value;\n        if (!content || !body) {\n          state.rect = null;\n          return;\n        }\n        const originalDisplay = content.style.display;\n        const originalWidth = content.style.width;\n        const originalHeight = content.style.height;\n        const originalMaxWidth = content.style.maxWidth;\n        const originalMaxHeight = content.style.maxHeight;\n        const rect = body.getBoundingClientRect();\n        content.style.display = '';\n        content.style.width = '';\n        content.style.height = '';\n        content.style.maxWidth = '';\n        content.style.maxHeight = '';\n        content.style.display = originalDisplay;\n        content.style.width = originalWidth;\n        content.style.height = originalHeight;\n        content.style.maxWidth = originalMaxWidth;\n        content.style.maxHeight = originalMaxHeight;\n        state.rect = {\n          left: rect.left,\n          right: rect.right,\n          top: rect.top,\n          bottom: rect.bottom,\n          // width: menuBodyRect ? menuBodyRect.width : rect.width,\n          // height: menuBodyRect ? menuBodyRect.height : rect.height,\n          width: rect.width,\n          height: rect.height\n        };\n      };\n      const getCurrentScrollParents = () => {\n        const activator = getActivatorElement(control);\n        if (!activator) return;\n        const parents = getScrollParents(activator);\n        return {\n          activator,\n          parents\n        };\n      };\n      const updateActivatorRect = () => {\n        const el = getActivatorElement(control);\n        if (!el) {\n          // state.activatorRect = null;\n          return;\n        }\n        const rect = el.getBoundingClientRect();\n        const {\n          width,\n          height\n        } = rect;\n        if (width === 0 && height === 0) return;\n        state.activatorRect = {\n          left: rect.left,\n          right: rect.right,\n          top: rect.top,\n          bottom: rect.bottom,\n          width,\n          height\n        };\n      };\n      const updateRects = menuBodyRect => {\n        if (!IN_WINDOW) return;\n        updatePageOffset();\n        updateMenuRect(menuBodyRect);\n        updateActivatorRect();\n      };\n      let _currentScrollParents;\n      let _activatorResizeObserver;\n      let _activatorResizeRAF_ID;\n      const _clearActivatorResizeRAF = () => {\n        if (_activatorResizeRAF_ID !== undefined) {\n          cancelAnimationFrame(_activatorResizeRAF_ID);\n          _activatorResizeRAF_ID = undefined;\n        }\n      };\n      const _handleActivatorResize = () => {\n        _clearActivatorResizeRAF();\n        _activatorResizeRAF_ID = requestAnimationFrame(() => {\n          _clearActivatorResizeRAF();\n          updateRects();\n        });\n      };\n      const handleScrollerScroll = ev => {\n        updateRects();\n        const _hideOnScrollOffset = hideOnScrollOffset.value;\n        if (_hideOnScrollOffset === undefined) return;\n        if (Math.abs(state.pageYOffset - startOffsets.value.pageYOffset) > _hideOnScrollOffset || Math.abs(state.pageXOffset - startOffsets.value.pageXOffset) > _hideOnScrollOffset) {\n          control.close();\n        }\n      };\n      const resetScrollerScroll = () => {\n        if (_activatorResizeObserver) {\n          _activatorResizeObserver.disconnect();\n          _activatorResizeObserver = undefined;\n        }\n        _clearActivatorResizeRAF();\n        if (!_currentScrollParents) return;\n        for (const el of _currentScrollParents.parents) {\n          const eventTarget = el === document.documentElement ? document : el;\n          eventTarget.removeEventListener('scroll', handleScrollerScroll, {\n            capture: false\n          });\n        }\n        _currentScrollParents = undefined;\n      };\n      const setupScrollerScroll = () => {\n        resetScrollerScroll();\n        _currentScrollParents = getCurrentScrollParents();\n        if (!_currentScrollParents) return;\n        const {\n          activator,\n          parents\n        } = _currentScrollParents;\n        _activatorResizeObserver = new ResizeObserver(_handleActivatorResize);\n        _activatorResizeObserver.observe(activator);\n        for (const el of parents) {\n          const eventTarget = el === document.documentElement ? document : el;\n          eventTarget.addEventListener('scroll', handleScrollerScroll, {\n            capture: false,\n            passive: true\n          });\n        }\n      };\n      watch(() => control.isActive, isActive => isActive ? setupScrollerScroll() : resetScrollerScroll());\n      onBeforeUnmount(() => {\n        _disposeIntersectionObserver();\n        resetScrollerScroll();\n        menuResizeHandler._clear();\n      });\n      const stackMenuCtx = {\n        ...baseCtx,\n        get pageXOffset() {\n          return state.pageXOffset;\n        },\n        get pageYOffset() {\n          return state.pageYOffset;\n        },\n        get distance() {\n          return _distance.value;\n        },\n        get resizeWatchDebounce() {\n          return _resizeWatchDebounce.value;\n        },\n        get overlap() {\n          return _overlap.value;\n        },\n        get edgeMargin() {\n          return _edgeMargin.value;\n        },\n        get minLeft() {\n          return _minLeft.value;\n        },\n        get minTop() {\n          return _minTop.value;\n        },\n        get maxRight() {\n          return _maxRight.value;\n        },\n        get maxBottom() {\n          return _maxBottom.value;\n        },\n        get rect() {\n          return _rect.value;\n        },\n        get styles() {\n          return _styles.value;\n        },\n        get attrs() {\n          return {\n            // class: snackClasses.value,\n            ref: _bodyRef\n          };\n        },\n        bodyRef: _bodyRef,\n        scrollerRef: _scrollerRef,\n        updatePageOffset,\n        updateMenuRect,\n        updateActivatorRect,\n        updateRects\n      };\n      const render = settings.setup?.(stackMenuCtx) || settings.render;\n      if (!render) {\n        throw new VueStackError('render function is required.');\n      }\n      const hostAttrs = computed(() => {\n        const {\n          attrs = {}\n        } = settings;\n        const _attrs = typeof attrs === 'function' ? attrs(stackMenuCtx) : attrs;\n        return {\n          ..._attrs,\n          class: ['v-stack-menu', _attrs.class]\n        };\n      });\n      return () => control.render(children => _createVNode(\"div\", _mergeProps(hostAttrs.value, {\n        \"style\": _styles.value,\n        \"ref\": _scrollerRef\n      }), [withDirectives(render(children, stackMenuCtx), [resizeDirectiveArgument(menuResizeHandler)])]));\n    }\n  });\n  return Component;\n}"]}