{"version":3,"file":"useShowHide-BtntDBmL.mjs","sources":["../src/composables/useShowHide.ts"],"sourcesContent":["import {\n  type ComponentInternalInstance,\n  computed,\n  type EmitFn,\n  getCurrentInstance,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  onUnmounted,\n  readonly,\n  ref,\n  type Ref,\n  watch,\n} from 'vue'\nimport {globalShowHideStorageInjectionKey} from '../utils/keys'\nimport {BvTriggerableEvent} from '../utils'\nimport {useEventListener, useThrottleFn} from '@vueuse/core'\n\nexport const fadeBaseTransitionProps = {\n  name: 'fade',\n  enterActiveClass: '',\n  enterFromClass: 'showing',\n  enterToClass: '',\n  leaveActiveClass: '',\n  leaveFromClass: '',\n  leaveToClass: 'showing',\n  css: true,\n}\n\ninterface TransitionProps {\n  onBeforeEnter?: (el: Element) => void\n  onEnter?: (el: Element) => void\n  onAfterEnter?: (el: Element) => void\n  onBeforeLeave?: (el: Element) => void\n  onLeave?: (el: Element) => void\n  onAfterLeave?: (el: Element) => void\n  enterToClass?: string\n  leaveToClass?: string\n  enterFromClass?: string\n  leaveFromClass?: string\n  enterActiveClass?: string\n  leaveActiveClass?: string\n}\n\nexport const useShowHide = (\n  modelValue: Ref<boolean | number>,\n  props: {\n    visible?: boolean\n    show?: boolean\n    noAnimation?: boolean\n    noFade?: boolean\n    noCloseOnBackdrop?: boolean\n    noCloseOnEsc?: boolean\n    transitionProps?: TransitionProps\n    lazy?: boolean\n    initialAnimation?: boolean\n    delay?:\n      | number\n      | {\n          show: number\n          hide: number\n        }\n  } & Record<string, unknown>,\n  emit: EmitFn,\n  element: Ref<HTMLElement | null>,\n  computedId: Ref<string>,\n  options: {\n    transitionProps?: TransitionProps\n    showFn?: () => void\n    hideFn?: () => void\n  } = {\n    transitionProps: {},\n    showFn: () => {},\n    hideFn: () => {},\n  }\n) => {\n  let noAction = false\n  const initialShow = (!!modelValue.value && !props.initialAnimation) || props.visible || false\n  const showRef = ref<boolean>(initialShow)\n  const renderRef = ref<boolean>(initialShow)\n  const renderBackdropRef = ref<boolean>(initialShow)\n\n  let isCountdown = typeof modelValue.value !== 'boolean'\n\n  watch(modelValue, () => {\n    isCountdown = typeof modelValue.value !== 'boolean'\n    if (noAction) {\n      noAction = false\n      return\n    }\n    if (modelValue.value) {\n      show()\n    } else {\n      hide('modelValue', true)\n    }\n  })\n\n  const localNoAnimation = ref(initialShow)\n  const localTemporaryHide = ref(false)\n  const computedNoAnimation = computed(\n    () => props.noAnimation || props.noFade || localNoAnimation.value || false\n  )\n  let isMounted = false\n  onMounted(() => {\n    isMounted = true\n    if (!props.show && initialShow) {\n      // show without delay or animation\n      const event = buildTriggerableEvent('show', {cancelable: true})\n      emit('show', event)\n\n      if (event.defaultPrevented) {\n        emit('show-prevented', buildTriggerableEvent('show-prevented'))\n        return\n      }\n      localNoAnimation.value = true\n      if (!modelValue.value) {\n        noAction = true\n        modelValue.value = true\n      }\n      renderRef.value = true\n      renderBackdropRef.value = true\n      isVisible.value = true\n      backdropVisible.value = true\n      backdropReady.value = true\n      showRef.value = true\n      options.showFn?.()\n    } else if (props.show || (!!modelValue.value && props.initialAnimation)) {\n      show()\n    }\n  })\n\n  watch(\n    () => props.visible,\n    (newval) => {\n      localNoAnimation.value = true\n\n      nextTick(() => {\n        if (newval) isVisible.value = true\n        if (newval) {\n          show()\n        } else {\n          hide('visible-prop', true)\n        }\n      })\n    }\n  )\n  watch(\n    () => props.show,\n    (newval) => {\n      if (newval) {\n        show()\n      } else {\n        hide('show-prop', true)\n      }\n    }\n  )\n  // todo: remove\n  useEventListener(element, 'bv-toggle', () => {\n    modelValue.value = !modelValue.value\n  })\n\n  const buildTriggerableEvent = (\n    type: string,\n    opts: Readonly<Partial<BvTriggerableEvent>> = {}\n  ): BvTriggerableEvent =>\n    new BvTriggerableEvent(type, {\n      cancelable: false,\n      target: element?.value || null,\n      relatedTarget: null,\n      trigger: null,\n      ...opts,\n      componentId: computedId?.value,\n    })\n\n  let showTimeout: ReturnType<typeof setTimeout> | undefined\n  let hideTimeout: ReturnType<typeof setTimeout> | undefined\n  let _Resolve: ((value: boolean | string) => void) | undefined\n  let _Promise: Promise<boolean | string> | undefined\n  let _resolveOnHide: boolean | undefined\n  const show = (resolveOnHide: boolean = false): Promise<boolean | string> => {\n    if (showRef.value && !hideTimeout && !_Promise) return Promise.resolve(true)\n    _resolveOnHide = resolveOnHide\n    if (showRef.value && !hideTimeout && _Promise) return _Promise\n\n    _Promise = new Promise<boolean | string>((resolve) => {\n      _Resolve = resolve\n    })\n\n    const event = buildTriggerableEvent('show', {cancelable: true})\n    emit('show', event)\n\n    if (event.defaultPrevented) {\n      emit('show-prevented', buildTriggerableEvent('show-prevented'))\n      if (isVisible.value) {\n        isVisible.value = false\n      }\n      if (modelValue.value && !isCountdown) {\n        noAction = true\n        nextTick(() => {\n          modelValue.value = false\n        })\n      }\n      _Resolve?.('show-prevented')\n      return _Promise\n    }\n    if (hideTimeout) {\n      clearTimeout(hideTimeout)\n      hideTimeout = undefined\n    }\n    renderRef.value = true\n    renderBackdropRef.value = true\n    requestAnimationFrame(() => {\n      if (localNoAnimation.value || props.delay === undefined) {\n        if (!isMounted) return\n        showTimeout = undefined\n        showRef.value = true\n        options.showFn?.()\n        if (!modelValue.value) {\n          noAction = true\n          nextTick(() => {\n            modelValue.value = true\n          })\n        }\n        return\n      }\n      showTimeout = setTimeout(\n        () => {\n          if (!isMounted) return\n          showTimeout = undefined\n          showRef.value = true\n          options.showFn?.()\n          if (!modelValue.value) {\n            noAction = true\n            nextTick(() => {\n              modelValue.value = true\n            })\n          }\n        },\n        typeof props.delay === 'number' ? props.delay : props.delay?.show || 0\n      )\n    })\n    return _Promise\n  }\n\n  let leaveTrigger: string | undefined\n  const hide = (trigger?: string, noTriggerEmit?: boolean): Promise<string> => {\n    if (!showRef.value && !showTimeout) return Promise.resolve('')\n    if (!_Promise)\n      _Promise = new Promise<string>((resolve) => {\n        ;(_Resolve as (value: string | PromiseLike<string>) => void) = resolve\n      })\n    if (typeof trigger !== 'string') trigger = undefined\n    leaveTrigger = trigger\n    const event = buildTriggerableEvent('hide', {cancelable: true, trigger})\n    const event2 = buildTriggerableEvent(trigger || 'ignore', {cancelable: true, trigger})\n    if (\n      (trigger === 'backdrop' && props.noCloseOnBackdrop) ||\n      (trigger === 'esc' && props.noCloseOnEsc)\n    ) {\n      emit('hide-prevented', buildTriggerableEvent('hide-prevented', {trigger}))\n      _Resolve?.('hide-prevented')\n      return _Promise as Promise<string>\n    }\n    if (showTimeout) {\n      clearTimeout(showTimeout)\n      showTimeout = undefined\n    }\n    if (trigger && !noTriggerEmit) {\n      emit(trigger, event2)\n    }\n    emit('hide', event)\n\n    if (event.defaultPrevented || event2.defaultPrevented) {\n      emit('hide-prevented', buildTriggerableEvent('hide-prevented', {trigger}))\n      if (!modelValue.value) {\n        nextTick(() => {\n          noAction = true\n          modelValue.value = true\n        })\n      }\n      _Resolve?.('hide-prevented')\n      return _Promise as Promise<string>\n    }\n    trapActive.value = false\n    if (showTimeout) {\n      clearTimeout(showTimeout)\n      showTimeout = undefined\n      if (!localTemporaryHide.value) renderRef.value = false\n      renderBackdropRef.value = false\n    }\n    hideTimeout = setTimeout(\n      () => {\n        if (!isMounted) return\n        hideTimeout = undefined\n        isLeaving.value = true\n        showRef.value = false\n        options.hideFn?.()\n        if (modelValue.value) {\n          noAction = true\n          modelValue.value = isCountdown ? 0 : false\n        }\n      },\n      localNoAnimation.value\n        ? 0\n        : typeof props.delay === 'number'\n          ? props.delay\n          : props.delay?.hide || 0\n    )\n    return _Promise as Promise<string>\n  }\n  const throttleHide = useThrottleFn((a) => hide(a), 500)\n  const throttleShow = useThrottleFn(() => show(), 500)\n\n  const toggle = (resolveOnHide: boolean = false): Promise<boolean | string> => {\n    const e = buildTriggerableEvent('toggle', {cancelable: true})\n    emit('toggle', e)\n    if (e.defaultPrevented) {\n      emit('toggle-prevented', buildTriggerableEvent('toggle-prevented'))\n      return Promise.resolve('toggle-prevented')\n    }\n    if (showRef.value) {\n      return hide('toggle-function', true)\n    }\n    return show(resolveOnHide)\n  }\n  const triggerToggle = () => {\n    const e = buildTriggerableEvent('toggle', {cancelable: true})\n    emit('toggle', e)\n    if (e.defaultPrevented) {\n      emit('toggle-prevented', buildTriggerableEvent('toggle-prevented'))\n      return\n    }\n    if (showRef.value) {\n      hide('toggle-trigger', true)\n    } else {\n      show()\n    }\n  }\n  const triggerRegistry: {trigger: string; el: Element}[] = []\n  const registerTrigger = (trigger: string, el: Element) => {\n    triggerRegistry.push({trigger, el})\n    el.addEventListener(trigger, triggerToggle)\n    checkVisibility(el)\n  }\n  const unregisterTrigger = (trigger: string, el: Element, clean = true) => {\n    const idx = triggerRegistry.findIndex((t) => t?.trigger === trigger && t.el === el)\n    if (idx > -1) {\n      triggerRegistry.splice(idx, 1)\n      el.removeEventListener(trigger, triggerToggle)\n      if (clean) {\n        el.removeAttribute('aria-expanded')\n        el.classList.remove('collapsed')\n        el.classList.remove('not-collapsed')\n      }\n    }\n  }\n\n  const appRegistry = inject(globalShowHideStorageInjectionKey, undefined)?.register({\n    id: computedId.value,\n    toggle,\n    show,\n    hide,\n    value: readonly(showRef),\n    registerTrigger,\n    unregisterTrigger,\n    component: getCurrentInstance() as ComponentInternalInstance,\n  })\n  const checkVisibility = (el: Element) => {\n    el.setAttribute('aria-expanded', modelValue.value ? 'true' : 'false')\n    el.classList.toggle('collapsed', !modelValue.value)\n    el.classList.toggle('not-collapsed', !!modelValue.value)\n  }\n\n  watch(modelValue, () => {\n    triggerRegistry.forEach((t) => {\n      checkVisibility(t.el)\n    })\n  })\n\n  watch(computedId, (newId, oldId) => {\n    appRegistry?.updateId(newId, oldId)\n  })\n\n  onBeforeUnmount(() => {\n    appRegistry?.unregister()\n    triggerRegistry.forEach((t) => {\n      t.el.removeEventListener(t.trigger, triggerToggle)\n    })\n  })\n  onUnmounted(() => {\n    isMounted = false\n    clearTimeout(showTimeout)\n    clearTimeout(hideTimeout)\n    showTimeout = undefined\n    hideTimeout = undefined\n  })\n\n  const lazyLoadCompleted = ref(false)\n  const markLazyLoadCompleted = () => {\n    if (props.lazy === true) lazyLoadCompleted.value = true\n  }\n\n  const isLeaving = ref(false)\n  const isActive = ref(initialShow)\n  const isVisible = ref(initialShow)\n\n  const onBeforeEnter = (el: Element) => {\n    options.transitionProps?.onBeforeEnter?.(el)\n    props.transitionProps?.onBeforeEnter?.(el)\n    isActive.value = true\n  }\n  const onEnter = (el: Element) => {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        // sometimes one just isn't enough (offcanvas on the first load after refresh)\n        isVisible.value = true\n      })\n    })\n    options.transitionProps?.onEnter?.(el)\n    props.transitionProps?.onEnter?.(el)\n  }\n  const onAfterEnter = (el: Element) => {\n    markLazyLoadCompleted()\n    options.transitionProps?.onAfterEnter?.(el)\n    props.transitionProps?.onAfterEnter?.(el)\n    if (localNoAnimation.value) {\n      requestAnimationFrame(() => {\n        localNoAnimation.value = false\n      })\n    }\n    if (localTemporaryHide.value) {\n      localTemporaryHide.value = false\n    }\n    requestAnimationFrame(() => {\n      trapActive.value = true\n      nextTick(() => {\n        emit('shown', buildTriggerableEvent('shown', {cancelable: false}))\n      })\n    })\n    if (!_resolveOnHide) {\n      _Resolve?.(true)\n      _Promise = undefined\n      _Resolve = undefined\n    }\n  }\n  const onBeforeLeave = (el: Element) => {\n    if (!isLeaving.value) isLeaving.value = true\n    options.transitionProps?.onBeforeLeave?.(el)\n    props.transitionProps?.onBeforeLeave?.(el)\n    trapActive.value = false\n  }\n  const onLeave = (el: Element) => {\n    isVisible.value = false\n    options.transitionProps?.onLeave?.(el)\n    props.transitionProps?.onLeave?.(el)\n  }\n  const onAfterLeave = (el: Element) => {\n    emit('hidden', buildTriggerableEvent('hidden', {trigger: leaveTrigger, cancelable: false}))\n    options.transitionProps?.onAfterLeave?.(el)\n    props.transitionProps?.onAfterLeave?.(el)\n    isLeaving.value = false\n    isActive.value = false\n    if (localNoAnimation.value) {\n      requestAnimationFrame(() => {\n        localNoAnimation.value = false\n      })\n    }\n    requestAnimationFrame(() => {\n      if (!localTemporaryHide.value) renderRef.value = false\n    })\n    _Resolve?.(leaveTrigger || '')\n    _Promise = undefined\n    _Resolve = undefined\n    leaveTrigger = undefined\n  }\n\n  const contentShowing = computed(\n    () =>\n      localTemporaryHide.value === true ||\n      isActive.value === true ||\n      props.lazy === false ||\n      (props.lazy === true && lazyLoadCompleted.value === true && props.unmountLazy === false)\n  )\n  const trapActive = ref(false)\n  const backdropVisible = ref(false)\n  const backdropReady = ref(false)\n\n  const transitionFunctions = {\n    ...options.transitionProps,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n  }\n  return {\n    showRef,\n    renderRef,\n    renderBackdropRef,\n    isVisible,\n    isActive,\n    trapActive,\n    show,\n    hide,\n    toggle,\n    throttleHide,\n    throttleShow,\n    buildTriggerableEvent,\n    computedNoAnimation,\n    localNoAnimation,\n    localTemporaryHide,\n    isLeaving,\n    transitionProps: {\n      ...fadeBaseTransitionProps,\n      ...props.transitionProps,\n      ...transitionFunctions,\n    },\n\n    lazyLoadCompleted,\n    markLazyLoadCompleted,\n    contentShowing,\n    backdropReady,\n    backdropVisible,\n    backdropTransitionProps: {\n      ...fadeBaseTransitionProps,\n      onBeforeEnter: () => {\n        requestAnimationFrame(() => {\n          requestAnimationFrame(() => {\n            backdropVisible.value = true\n          })\n        })\n        backdropReady.value = false\n      },\n      onAfterEnter: () => {\n        backdropReady.value = true\n      },\n      onBeforeLeave: () => {\n        backdropVisible.value = false\n      },\n      onAfterLeave: () => {\n        backdropReady.value = false\n        requestAnimationFrame(() => {\n          renderBackdropRef.value = false\n        })\n      },\n    },\n  }\n}\n"],"names":["_a"],"mappings":";;;;;AAmBO,MAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,KAAK;AACP;AAiBO,MAAM,cAAc,CACzB,YACA,OAiBA,MACA,SACA,YACA,UAII;AAAA,EACF,iBAAiB,CAAC;AAAA,EAClB,QAAQ,MAAM;AAAA,EAAC;AAAA,EACf,QAAQ,MAAM;AAAA,EAAA;AAChB,MACG;;AACH,MAAI,WAAW;AACT,QAAA,cAAe,CAAC,CAAC,WAAW,SAAS,CAAC,MAAM,oBAAqB,MAAM,WAAW;AAClF,QAAA,UAAU,IAAa,WAAW;AAClC,QAAA,YAAY,IAAa,WAAW;AACpC,QAAA,oBAAoB,IAAa,WAAW;AAE9C,MAAA,cAAc,OAAO,WAAW,UAAU;AAE9C,QAAM,YAAY,MAAM;AACR,kBAAA,OAAO,WAAW,UAAU;AAC1C,QAAI,UAAU;AACD,iBAAA;AACX;AAAA,IAAA;AAEF,QAAI,WAAW,OAAO;AACf,WAAA;AAAA,IAAA,OACA;AACL,WAAK,cAAc,IAAI;AAAA,IAAA;AAAA,EACzB,CACD;AAEK,QAAA,mBAAmB,IAAI,WAAW;AAClC,QAAA,qBAAqB,IAAI,KAAK;AACpC,QAAM,sBAAsB;AAAA,IAC1B,MAAM,MAAM,eAAe,MAAM,UAAU,iBAAiB,SAAS;AAAA,EACvE;AACA,MAAI,YAAY;AAChB,YAAU,MAAM;;AACF,gBAAA;AACR,QAAA,CAAC,MAAM,QAAQ,aAAa;AAE9B,YAAM,QAAQ,sBAAsB,QAAQ,EAAC,YAAY,MAAK;AAC9D,WAAK,QAAQ,KAAK;AAElB,UAAI,MAAM,kBAAkB;AACrB,aAAA,kBAAkB,sBAAsB,gBAAgB,CAAC;AAC9D;AAAA,MAAA;AAEF,uBAAiB,QAAQ;AACrB,UAAA,CAAC,WAAW,OAAO;AACV,mBAAA;AACX,mBAAW,QAAQ;AAAA,MAAA;AAErB,gBAAU,QAAQ;AAClB,wBAAkB,QAAQ;AAC1B,gBAAU,QAAQ;AAClB,sBAAgB,QAAQ;AACxB,oBAAc,QAAQ;AACtB,cAAQ,QAAQ;AAChB,OAAAA,MAAA,QAAQ,WAAR,gBAAAA,IAAA;AAAA,IAAiB,WACR,MAAM,QAAS,CAAC,CAAC,WAAW,SAAS,MAAM,kBAAmB;AAClE,WAAA;AAAA,IAAA;AAAA,EACP,CACD;AAED;AAAA,IACE,MAAM,MAAM;AAAA,IACZ,CAAC,WAAW;AACV,uBAAiB,QAAQ;AAEzB,eAAS,MAAM;AACT,YAAA,kBAAkB,QAAQ;AAC9B,YAAI,QAAQ;AACL,eAAA;AAAA,QAAA,OACA;AACL,eAAK,gBAAgB,IAAI;AAAA,QAAA;AAAA,MAC3B,CACD;AAAA,IAAA;AAAA,EAEL;AACA;AAAA,IACE,MAAM,MAAM;AAAA,IACZ,CAAC,WAAW;AACV,UAAI,QAAQ;AACL,aAAA;AAAA,MAAA,OACA;AACL,aAAK,aAAa,IAAI;AAAA,MAAA;AAAA,IACxB;AAAA,EAEJ;AAEiB,mBAAA,SAAS,aAAa,MAAM;AAChC,eAAA,QAAQ,CAAC,WAAW;AAAA,EAAA,CAChC;AAEK,QAAA,wBAAwB,CAC5B,MACA,OAA8C,CAAA,MAE9C,IAAI,mBAAmB,MAAM;AAAA,IAC3B,YAAY;AAAA,IACZ,SAAQ,mCAAS,UAAS;AAAA,IAC1B,eAAe;AAAA,IACf,SAAS;AAAA,IACT,GAAG;AAAA,IACH,aAAa,yCAAY;AAAA,EAAA,CAC1B;AAEC,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA,OAAO,CAAC,gBAAyB,UAAqC;AACtE,QAAA,QAAQ,SAAS,CAAC,eAAe,CAAC,SAAU,QAAO,QAAQ,QAAQ,IAAI;AAC1D,qBAAA;AACjB,QAAI,QAAQ,SAAS,CAAC,eAAe,SAAiB,QAAA;AAE3C,eAAA,IAAI,QAA0B,CAAC,YAAY;AACzC,iBAAA;AAAA,IAAA,CACZ;AAED,UAAM,QAAQ,sBAAsB,QAAQ,EAAC,YAAY,MAAK;AAC9D,SAAK,QAAQ,KAAK;AAElB,QAAI,MAAM,kBAAkB;AACrB,WAAA,kBAAkB,sBAAsB,gBAAgB,CAAC;AAC9D,UAAI,UAAU,OAAO;AACnB,kBAAU,QAAQ;AAAA,MAAA;AAEhB,UAAA,WAAW,SAAS,CAAC,aAAa;AACzB,mBAAA;AACX,iBAAS,MAAM;AACb,qBAAW,QAAQ;AAAA,QAAA,CACpB;AAAA,MAAA;AAEH,2CAAW;AACJ,aAAA;AAAA,IAAA;AAET,QAAI,aAAa;AACf,mBAAa,WAAW;AACV,oBAAA;AAAA,IAAA;AAEhB,cAAU,QAAQ;AAClB,sBAAkB,QAAQ;AAC1B,0BAAsB,MAAM;;AAC1B,UAAI,iBAAiB,SAAS,MAAM,UAAU,QAAW;AACvD,YAAI,CAAC,UAAW;AACF,sBAAA;AACd,gBAAQ,QAAQ;AAChB,SAAAA,MAAA,QAAQ,WAAR,gBAAAA,IAAA;AACI,YAAA,CAAC,WAAW,OAAO;AACV,qBAAA;AACX,mBAAS,MAAM;AACb,uBAAW,QAAQ;AAAA,UAAA,CACpB;AAAA,QAAA;AAEH;AAAA,MAAA;AAEY,oBAAA;AAAA,QACZ,MAAM;;AACJ,cAAI,CAAC,UAAW;AACF,wBAAA;AACd,kBAAQ,QAAQ;AAChB,WAAAA,MAAA,QAAQ,WAAR,gBAAAA,IAAA;AACI,cAAA,CAAC,WAAW,OAAO;AACV,uBAAA;AACX,qBAAS,MAAM;AACb,yBAAW,QAAQ;AAAA,YAAA,CACpB;AAAA,UAAA;AAAA,QAEL;AAAA,QACA,OAAO,MAAM,UAAU,WAAW,MAAM,UAAQ,WAAM,UAAN,mBAAa,SAAQ;AAAA,MACvE;AAAA,IAAA,CACD;AACM,WAAA;AAAA,EACT;AAEI,MAAA;AACE,QAAA,OAAO,CAAC,SAAkB,kBAA6C;;AACvE,QAAA,CAAC,QAAQ,SAAS,CAAC,YAAoB,QAAA,QAAQ,QAAQ,EAAE;AAC7D,QAAI,CAAC;AACQ,iBAAA,IAAI,QAAgB,CAAC,YAAY;AACxC,mBAA6D;AAAA,MAAA,CAChE;AACC,QAAA,OAAO,YAAY,SAAoB,WAAA;AAC5B,mBAAA;AACf,UAAM,QAAQ,sBAAsB,QAAQ,EAAC,YAAY,MAAM,SAAQ;AACjE,UAAA,SAAS,sBAAsB,WAAW,UAAU,EAAC,YAAY,MAAM,SAAQ;AACrF,QACG,YAAY,cAAc,MAAM,qBAChC,YAAY,SAAS,MAAM,cAC5B;AACA,WAAK,kBAAkB,sBAAsB,kBAAkB,EAAC,QAAQ,CAAA,CAAC;AACzE,2CAAW;AACJ,aAAA;AAAA,IAAA;AAET,QAAI,aAAa;AACf,mBAAa,WAAW;AACV,oBAAA;AAAA,IAAA;AAEZ,QAAA,WAAW,CAAC,eAAe;AAC7B,WAAK,SAAS,MAAM;AAAA,IAAA;AAEtB,SAAK,QAAQ,KAAK;AAEd,QAAA,MAAM,oBAAoB,OAAO,kBAAkB;AACrD,WAAK,kBAAkB,sBAAsB,kBAAkB,EAAC,QAAQ,CAAA,CAAC;AACrE,UAAA,CAAC,WAAW,OAAO;AACrB,iBAAS,MAAM;AACF,qBAAA;AACX,qBAAW,QAAQ;AAAA,QAAA,CACpB;AAAA,MAAA;AAEH,2CAAW;AACJ,aAAA;AAAA,IAAA;AAET,eAAW,QAAQ;AACnB,QAAI,aAAa;AACf,mBAAa,WAAW;AACV,oBAAA;AACd,UAAI,CAAC,mBAAmB,MAAO,WAAU,QAAQ;AACjD,wBAAkB,QAAQ;AAAA,IAAA;AAEd,kBAAA;AAAA,MACZ,MAAM;;AACJ,YAAI,CAAC,UAAW;AACF,sBAAA;AACd,kBAAU,QAAQ;AAClB,gBAAQ,QAAQ;AAChB,SAAAA,MAAA,QAAQ,WAAR,gBAAAA,IAAA;AACA,YAAI,WAAW,OAAO;AACT,qBAAA;AACA,qBAAA,QAAQ,cAAc,IAAI;AAAA,QAAA;AAAA,MAEzC;AAAA,MACA,iBAAiB,QACb,IACA,OAAO,MAAM,UAAU,WACrB,MAAM,UACNA,MAAA,MAAM,UAAN,gBAAAA,IAAa,SAAQ;AAAA,IAC7B;AACO,WAAA;AAAA,EACT;AACA,QAAM,eAAe,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG;AACtD,QAAM,eAAe,cAAc,MAAM,KAAA,GAAQ,GAAG;AAE9C,QAAA,SAAS,CAAC,gBAAyB,UAAqC;AAC5E,UAAM,IAAI,sBAAsB,UAAU,EAAC,YAAY,MAAK;AAC5D,SAAK,UAAU,CAAC;AAChB,QAAI,EAAE,kBAAkB;AACjB,WAAA,oBAAoB,sBAAsB,kBAAkB,CAAC;AAC3D,aAAA,QAAQ,QAAQ,kBAAkB;AAAA,IAAA;AAE3C,QAAI,QAAQ,OAAO;AACV,aAAA,KAAK,mBAAmB,IAAI;AAAA,IAAA;AAErC,WAAO,KAAK,aAAa;AAAA,EAC3B;AACA,QAAM,gBAAgB,MAAM;AAC1B,UAAM,IAAI,sBAAsB,UAAU,EAAC,YAAY,MAAK;AAC5D,SAAK,UAAU,CAAC;AAChB,QAAI,EAAE,kBAAkB;AACjB,WAAA,oBAAoB,sBAAsB,kBAAkB,CAAC;AAClE;AAAA,IAAA;AAEF,QAAI,QAAQ,OAAO;AACjB,WAAK,kBAAkB,IAAI;AAAA,IAAA,OACtB;AACA,WAAA;AAAA,IAAA;AAAA,EAET;AACA,QAAM,kBAAoD,CAAC;AACrD,QAAA,kBAAkB,CAAC,SAAiB,OAAgB;AACxD,oBAAgB,KAAK,EAAC,SAAS,GAAA,CAAG;AAC/B,OAAA,iBAAiB,SAAS,aAAa;AAC1C,oBAAgB,EAAE;AAAA,EACpB;AACA,QAAM,oBAAoB,CAAC,SAAiB,IAAa,QAAQ,SAAS;AAClE,UAAA,MAAM,gBAAgB,UAAU,CAAC,OAAM,uBAAG,aAAY,WAAW,EAAE,OAAO,EAAE;AAClF,QAAI,MAAM,IAAI;AACI,sBAAA,OAAO,KAAK,CAAC;AAC1B,SAAA,oBAAoB,SAAS,aAAa;AAC7C,UAAI,OAAO;AACT,WAAG,gBAAgB,eAAe;AAC/B,WAAA,UAAU,OAAO,WAAW;AAC5B,WAAA,UAAU,OAAO,eAAe;AAAA,MAAA;AAAA,IACrC;AAAA,EAEJ;AAEA,QAAM,eAAc,YAAO,mCAAmC,MAAS,MAAnD,mBAAsD,SAAS;AAAA,IACjF,IAAI,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,SAAS,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,IACA,WAAW,mBAAmB;AAAA,EAAA;AAE1B,QAAA,kBAAkB,CAAC,OAAgB;AACvC,OAAG,aAAa,iBAAiB,WAAW,QAAQ,SAAS,OAAO;AACpE,OAAG,UAAU,OAAO,aAAa,CAAC,WAAW,KAAK;AAClD,OAAG,UAAU,OAAO,iBAAiB,CAAC,CAAC,WAAW,KAAK;AAAA,EACzD;AAEA,QAAM,YAAY,MAAM;AACN,oBAAA,QAAQ,CAAC,MAAM;AAC7B,sBAAgB,EAAE,EAAE;AAAA,IAAA,CACrB;AAAA,EAAA,CACF;AAEK,QAAA,YAAY,CAAC,OAAO,UAAU;AACrB,+CAAA,SAAS,OAAO;AAAA,EAAK,CACnC;AAED,kBAAgB,MAAM;AACpB,+CAAa;AACG,oBAAA,QAAQ,CAAC,MAAM;AAC7B,QAAE,GAAG,oBAAoB,EAAE,SAAS,aAAa;AAAA,IAAA,CAClD;AAAA,EAAA,CACF;AACD,cAAY,MAAM;AACJ,gBAAA;AACZ,iBAAa,WAAW;AACxB,iBAAa,WAAW;AACV,kBAAA;AACA,kBAAA;AAAA,EAAA,CACf;AAEK,QAAA,oBAAoB,IAAI,KAAK;AACnC,QAAM,wBAAwB,MAAM;AAClC,QAAI,MAAM,SAAS,KAAM,mBAAkB,QAAQ;AAAA,EACrD;AAEM,QAAA,YAAY,IAAI,KAAK;AACrB,QAAA,WAAW,IAAI,WAAW;AAC1B,QAAA,YAAY,IAAI,WAAW;AAE3B,QAAA,gBAAgB,CAAC,OAAgB;;AAC7B,WAAAA,MAAA,QAAA,oBAAA,gBAAAA,IAAiB,kBAAjB,wBAAAA,KAAiC;AACnC,sBAAA,oBAAA,mBAAiB,kBAAjB,4BAAiC;AACvC,aAAS,QAAQ;AAAA,EACnB;AACM,QAAA,UAAU,CAAC,OAAgB;;AAC/B,0BAAsB,MAAM;AAC1B,4BAAsB,MAAM;AAE1B,kBAAU,QAAQ;AAAA,MAAA,CACnB;AAAA,IAAA,CACF;AACO,WAAAA,MAAA,QAAA,oBAAA,gBAAAA,IAAiB,YAAjB,wBAAAA,KAA2B;AAC7B,sBAAA,oBAAA,mBAAiB,YAAjB,4BAA2B;AAAA,EACnC;AACM,QAAA,eAAe,CAAC,OAAgB;;AACd,0BAAA;AACd,WAAAA,MAAA,QAAA,oBAAA,gBAAAA,IAAiB,iBAAjB,wBAAAA,KAAgC;AAClC,sBAAA,oBAAA,mBAAiB,iBAAjB,4BAAgC;AACtC,QAAI,iBAAiB,OAAO;AAC1B,4BAAsB,MAAM;AAC1B,yBAAiB,QAAQ;AAAA,MAAA,CAC1B;AAAA,IAAA;AAEH,QAAI,mBAAmB,OAAO;AAC5B,yBAAmB,QAAQ;AAAA,IAAA;AAE7B,0BAAsB,MAAM;AAC1B,iBAAW,QAAQ;AACnB,eAAS,MAAM;AACb,aAAK,SAAS,sBAAsB,SAAS,EAAC,YAAY,MAAA,CAAM,CAAC;AAAA,MAAA,CAClE;AAAA,IAAA,CACF;AACD,QAAI,CAAC,gBAAgB;AACnB,2CAAW;AACA,iBAAA;AACA,iBAAA;AAAA,IAAA;AAAA,EAEf;AACM,QAAA,gBAAgB,CAAC,OAAgB;;AACrC,QAAI,CAAC,UAAU,MAAO,WAAU,QAAQ;AAChC,WAAAA,MAAA,QAAA,oBAAA,gBAAAA,IAAiB,kBAAjB,wBAAAA,KAAiC;AACnC,sBAAA,oBAAA,mBAAiB,kBAAjB,4BAAiC;AACvC,eAAW,QAAQ;AAAA,EACrB;AACM,QAAA,UAAU,CAAC,OAAgB;;AAC/B,cAAU,QAAQ;AACV,WAAAA,MAAA,QAAA,oBAAA,gBAAAA,IAAiB,YAAjB,wBAAAA,KAA2B;AAC7B,sBAAA,oBAAA,mBAAiB,YAAjB,4BAA2B;AAAA,EACnC;AACM,QAAA,eAAe,CAAC,OAAgB;;AAC/B,SAAA,UAAU,sBAAsB,UAAU,EAAC,SAAS,cAAc,YAAY,MAAK,CAAC,CAAC;AAClF,WAAAA,MAAA,QAAA,oBAAA,gBAAAA,IAAiB,iBAAjB,wBAAAA,KAAgC;AAClC,sBAAA,oBAAA,mBAAiB,iBAAjB,4BAAgC;AACtC,cAAU,QAAQ;AAClB,aAAS,QAAQ;AACjB,QAAI,iBAAiB,OAAO;AAC1B,4BAAsB,MAAM;AAC1B,yBAAiB,QAAQ;AAAA,MAAA,CAC1B;AAAA,IAAA;AAEH,0BAAsB,MAAM;AAC1B,UAAI,CAAC,mBAAmB,MAAO,WAAU,QAAQ;AAAA,IAAA,CAClD;AACD,yCAAW,gBAAgB;AAChB,eAAA;AACA,eAAA;AACI,mBAAA;AAAA,EACjB;AAEA,QAAM,iBAAiB;AAAA,IACrB,MACE,mBAAmB,UAAU,QAC7B,SAAS,UAAU,QACnB,MAAM,SAAS,SACd,MAAM,SAAS,QAAQ,kBAAkB,UAAU,QAAQ,MAAM,gBAAgB;AAAA,EACtF;AACM,QAAA,aAAa,IAAI,KAAK;AACtB,QAAA,kBAAkB,IAAI,KAAK;AAC3B,QAAA,gBAAgB,IAAI,KAAK;AAE/B,QAAM,sBAAsB;AAAA,IAC1B,GAAG,QAAQ;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,MACf,GAAG;AAAA,MACH,GAAG,MAAM;AAAA,MACT,GAAG;AAAA,IACL;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,yBAAyB;AAAA,MACvB,GAAG;AAAA,MACH,eAAe,MAAM;AACnB,8BAAsB,MAAM;AAC1B,gCAAsB,MAAM;AAC1B,4BAAgB,QAAQ;AAAA,UAAA,CACzB;AAAA,QAAA,CACF;AACD,sBAAc,QAAQ;AAAA,MACxB;AAAA,MACA,cAAc,MAAM;AAClB,sBAAc,QAAQ;AAAA,MACxB;AAAA,MACA,eAAe,MAAM;AACnB,wBAAgB,QAAQ;AAAA,MAC1B;AAAA,MACA,cAAc,MAAM;AAClB,sBAAc,QAAQ;AACtB,8BAAsB,MAAM;AAC1B,4BAAkB,QAAQ;AAAA,QAAA,CAC3B;AAAA,MAAA;AAAA,IACH;AAAA,EAEJ;AACF;"}