{"file":"AnimatePresence.vue-phFYAo6_.js","mappings":"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","names":[],"sources":["../../../../node_modules/motion-v/dist/es/components/animate-presence/use-pop-layout.mjs","../../../../node_modules/motion-v/dist/es/utils/delay.mjs","../../../../node_modules/motion-v/dist/es/components/animate-presence/AnimatePresence.vue.mjs"],"sourcesContent":["import { useMotionConfig } from \"../motion-config/context.mjs\";\nimport { frame } from \"../../external/.pnpm/motion-dom@12.23.12/external/motion-dom/dist/es/frameloop/frame.mjs\";\nfunction usePopLayout(props) {\n  const styles = /* @__PURE__ */ new WeakMap();\n  const config = useMotionConfig();\n  function addPopStyle(state) {\n    if (props.mode !== \"popLayout\")\n      return;\n    const element = state.element;\n    const parent = element.offsetParent;\n    const parentWidth = parent instanceof HTMLElement ? parent.offsetWidth || 0 : 0;\n    const size = {\n      height: element.offsetHeight || 0,\n      width: element.offsetWidth || 0,\n      top: element.offsetTop,\n      left: element.offsetLeft,\n      right: 0\n    };\n    size.right = parentWidth - size.width - size.left;\n    const x = props.anchorX === \"left\" ? `left: ${size.left}` : `right: ${size.right}`;\n    state.element.dataset.motionPopId = state.id;\n    const style = document.createElement(\"style\");\n    if (config.value.nonce) {\n      style.nonce = config.value.nonce;\n    }\n    styles.set(state, style);\n    document.head.appendChild(style);\n    if (style.sheet) {\n      style.sheet.insertRule(`\n    [data-motion-pop-id=\"${state.id}\"] {\n      position: absolute !important;\n      width: ${size.width}px !important;\n      height: ${size.height}px !important;\n      top: ${size.top}px !important;\n      ${x}px !important;\n      }\n      `);\n    }\n  }\n  function removePopStyle(state) {\n    const style = styles.get(state);\n    if (!style)\n      return;\n    styles.delete(state);\n    frame.render(() => {\n      document.head.removeChild(style);\n    });\n  }\n  return {\n    addPopStyle,\n    removePopStyle,\n    styles\n  };\n}\nexport {\n  usePopLayout\n};\n","function delay(fn) {\n  return Promise.resolve().then(() => {\n    fn();\n  });\n}\nexport {\n  delay\n};\n","import { defineComponent, onUnmounted, computed, openBlock, createBlock, resolveDynamicComponent, Transition, TransitionGroup, mergeProps, withCtx, renderSlot } from \"vue\";\nimport { mountedStates } from \"../../state/motion-state.mjs\";\nimport { useAnimatePresence, removeDoneCallback, doneCallbacks } from \"./presence.mjs\";\nimport { usePopLayout } from \"./use-pop-layout.mjs\";\nimport { delay } from \"../../utils/delay.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n  ...{\n    name: \"AnimatePresence\",\n    inheritAttrs: true\n  },\n  __name: \"AnimatePresence\",\n  props: {\n    mode: { default: \"sync\" },\n    initial: { type: Boolean, default: true },\n    as: {},\n    custom: {},\n    onExitComplete: {},\n    anchorX: { default: \"left\" }\n  },\n  setup(__props) {\n    const props = __props;\n    useAnimatePresence(props);\n    const { addPopStyle, removePopStyle, styles } = usePopLayout(props);\n    function findMotionElement(el) {\n      let current = el;\n      while (current) {\n        if (mountedStates.get(current)) {\n          return current;\n        }\n        current = current.firstElementChild;\n      }\n      return null;\n    }\n    function enter(el) {\n      const state = mountedStates.get(el);\n      if (!state) {\n        return;\n      }\n      removePopStyle(state);\n      state.isVShow = true;\n      removeDoneCallback(el);\n      delay(() => {\n        state.setActive(\"exit\", false);\n      });\n    }\n    const exitDom = /* @__PURE__ */ new Map();\n    onUnmounted(() => {\n      exitDom.clear();\n    });\n    function exit(el, done) {\n      var _a;\n      const motionEl = findMotionElement(el);\n      const state = mountedStates.get(motionEl);\n      if (!motionEl || !state) {\n        done();\n        if (exitDom.size === 0) {\n          (_a = props.onExitComplete) == null ? void 0 : _a.call(props);\n        }\n        return;\n      }\n      exitDom.set(motionEl, true);\n      removeDoneCallback(motionEl);\n      addPopStyle(state);\n      function doneCallback(e) {\n        var _a2, _b;\n        if ((_a2 = e == null ? void 0 : e.detail) == null ? void 0 : _a2.isExit) {\n          const projection = state.visualElement.projection;\n          if ((projection == null ? void 0 : projection.animationProgress) > 0 && !state.isSafeToRemove && !state.isVShow) {\n            return;\n          }\n          removeDoneCallback(motionEl);\n          exitDom.delete(motionEl);\n          if (exitDom.size === 0) {\n            (_b = props.onExitComplete) == null ? void 0 : _b.call(props);\n          }\n          if (!styles.has(state)) {\n            state.willUpdate(\"done\");\n          } else {\n            removePopStyle(state);\n          }\n          done();\n          if (!motionEl.isConnected) {\n            state.unmount(true);\n          }\n        }\n      }\n      delay(() => {\n        state.setActive(\"exit\", true);\n        doneCallbacks.set(motionEl, doneCallback);\n        motionEl.addEventListener(\"motioncomplete\", doneCallback);\n      });\n    }\n    const transitionProps = computed(() => {\n      if (props.mode !== \"wait\") {\n        return {\n          tag: props.as\n        };\n      }\n      return {\n        mode: props.mode === \"wait\" ? \"out-in\" : void 0\n      };\n    });\n    return (_ctx, _cache) => {\n      return openBlock(), createBlock(resolveDynamicComponent(_ctx.mode === \"wait\" ? Transition : TransitionGroup), mergeProps({ css: false }, transitionProps.value, {\n        appear: \"\",\n        onEnter: enter,\n        onLeave: exit\n      }), {\n        default: withCtx(() => [\n          renderSlot(_ctx.$slots, \"default\")\n        ]),\n        _: 3\n      }, 16);\n    };\n  }\n});\nexport {\n  _sfc_main as default\n};\n"],"version":3}