{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/usePopWindow/src/index.tsx"],"sourcesContent":["import { type AppContext, type Component, type ComponentInternalInstance, getCurrentInstance, nextTick, render } from 'vue'\n\nimport { type PopWindowInfoProps, type PopWindowProps } from './interface'\nimport { ElScrollbar } from 'element-plus'\n\nlet appContextConst: AppContext | undefined\nlet popWindowList: Array<any> = []\nconst getBody = (): Element => {\n  return document.querySelector('body') as HTMLBodyElement\n}\n/**\n * 显示弹出窗口\n *\n * 此函数用于创建并显示一个弹出窗口，支持自定义样式和内容通过参数传递\n * 可以选择附加到特定的父元素，并且在渲染后会将自身添加到弹出窗口列表中\n *\n * @param props 弹出窗口的属性，包括位置、尺寸等样式属性以及附加属性\n * @param component 可选参数，用于指定弹出窗口内渲染的自定义组件类型,如果props中传了render函数，则无效\n * @param componentProps 可选参数，传递给自定义组件的属性\n */\nexport const showPopWindow = (props: PopWindowProps, component?: Component, componentProps?: any) => {\n  const op = {\n    left: '0',\n    top: '0',\n    width: '100px',\n    height: '100px',\n    position: 'absolute',\n    id: 'popwindow_' + Math.ceil(Math.random() * 1000000),\n    animate: true,\n    animateInClass: 'animate__animated animate__faster animate__fadeIn',\n    animateOutClass: 'animate__animated animate__faster animate__fadeOut'\n  }\n  const option: PopWindowProps = Object.assign(op, props)\n  const close = () => {\n    closePopWindowById(option.id)\n  }\n\n  // 相同的id只会存在一个\n  closePopWindowById(option.id)\n  let animateClass = option.animate ? option.animateInClass : ''\n\n  const vm = (\n    <div\n      class={'popWindow ' + animateClass}\n      style={{ width: option.width, height: option.height, left: option.left, top: option.top, position: option.position }}>\n      <ElScrollbar>\n        {props.render ? props.render({ close, option }) : <component is={component} {...componentProps} onClose={() => close()}></component>}\n      </ElScrollbar>\n    </div>\n  )\n  vm.appContext = appContextConst\n  // debugger\n  // if (vm.children?.length) {\n  //   vm.children[0].appContext = appContextConst\n  // }\n  const container = document.createElement('div')\n  container.id = 'popwindow_' + Math.ceil(Math.random() * 1000000)\n\n  let parentEl = getBody()\n  if (props.appendParent) {\n    parentEl = document.getElementById(props.appendParent)\n  }\n  parentEl.appendChild(container)\n  render(vm, container)\n\n  nextTick(() => {\n    const popWindowInfo = { id: option.id, tag: option.tag, node: container, option }\n    popWindowList.push(popWindowInfo)\n  })\n  return { id: option.id, close }\n}\n\nconst removePopWindow = (popWindowInfo: PopWindowInfoProps) => {\n  if (!popWindowInfo) return\n  const { option, node } = popWindowInfo\n  option.onClose?.()\n  if (option.animate) {\n    const popWindowNode = node.querySelector('.popWindow')\n    popWindowNode.className = 'popWindow ' + option.animateOutClass\n    popWindowNode.addEventListener('animationend', () => {\n      render(null, node)\n      node.remove()\n      popWindowList.splice(popWindowList.indexOf(popWindowInfo), 1)\n    })\n  } else {\n    render(null, node)\n    node.remove()\n    popWindowList.splice(popWindowList.indexOf(popWindowInfo), 1)\n  }\n}\nexport const closePopWindowById = (id: string) => {\n  const popWindowItem = popWindowList.find((item) => item.id === id)\n  if (popWindowItem) {\n    removePopWindow(popWindowItem)\n  }\n}\n\nexport const closePopWindowByTag = (tag: string) => {\n  const popWindows = popWindowList.filter((item) => item.tag === tag)\n  popWindows.forEach((item) => removePopWindow(item))\n}\n\nexport const getAllPopWindows = () => {\n  return popWindowList\n}\n\nexport const initPopWindow = (ctx?: ComponentInternalInstance) => {\n  const { appContext } = ctx || getCurrentInstance() || {}\n  appContextConst = appContext\n\n  return { showPopWindow }\n}\n"],"names":["appContextConst","popWindowList","getBody","document","querySelector","showPopWindow","props","component","componentProps","op","left","top","width","height","position","id","Math","ceil","random","animate","animateInClass","animateOutClass","option","Object","assign","close","closePopWindowById","animateClass","vm","_createVNode","ElScrollbar","default","render","_mergeProps","onClose","appContext","container","createElement","parentEl","appendParent","getElementById","appendChild","nextTick","popWindowInfo","tag","node","push","removePopWindow","popWindowNode","className","addEventListener","remove","splice","indexOf","popWindowItem","find","item","closePopWindowByTag","popWindows","filter","forEach","getAllPopWindows","initPopWindow","ctx","getCurrentInstance"],"mappings":";;;;;AAKA,IAAIA,eAAAA;AACJ,IAAIC,gBAA4B,EAAE;AAClC,MAAMC,0BAAyB,MAAA,CAAA,MAAA;AAC7B,EAAOC,OAAAA,QAAAA,CAASC,cAAc,MAAM,CAAA;AACtC,CAFgBF,EAAAA,SAAAA,CAAAA;AAaT,MAAMG,aAAgBA,mBAAAA,MAAAA,CAAAA,CAACC,KAAuBC,EAAAA,SAAAA,EAAuBC,cAAyB,KAAA;AACnG,EAAA,MAAMC,EAAK,GAAA;AAAA,IACTC,IAAM,EAAA,GAAA;AAAA,IACNC,GAAK,EAAA,GAAA;AAAA,IACLC,KAAO,EAAA,OAAA;AAAA,IACPC,MAAQ,EAAA,OAAA;AAAA,IACRC,QAAU,EAAA,UAAA;AAAA,IACVC,IAAI,YAAeC,GAAAA,IAAAA,CAAKC,KAAKD,IAAKE,CAAAA,MAAAA,KAAW,GAAO,CAAA;AAAA,IACpDC,OAAS,EAAA,IAAA;AAAA,IACTC,cAAgB,EAAA,mDAAA;AAAA,IAChBC,eAAiB,EAAA;AAAA,GACnB;AACA,EAAA,MAAMC,MAAyBC,GAAAA,MAAAA,CAAOC,MAAOf,CAAAA,EAAAA,EAAIH,KAAK,CAAA;AACtD,EAAA,MAAMmB,wBAAc,MAAA,CAAA,MAAA;AAClBC,IAAAA,kBAAAA,CAAmBJ,OAAOP,EAAE,CAAA;AAAA,GADhBU,EAAAA,OAAAA,CAAAA;AAKdC,EAAAA,kBAAAA,CAAmBJ,OAAOP,EAAE,CAAA;AAC5B,EAAA,IAAIY,YAAeL,GAAAA,MAAAA,CAAOH,OAAUG,GAAAA,MAAAA,CAAOF,cAAiB,GAAA,EAAA;AAE5D,EAAMQ,MAAAA,EAAAA,GAAEC,YAAA,KAAA,EAAA;AAAA,IAAA,SAEG,YAAeF,GAAAA,YAAAA;AAAAA,IAAY,OAC3B,EAAA;AAAA,MAAEf,OAAOU,MAAOV,CAAAA,KAAAA;AAAAA,MAAOC,QAAQS,MAAOT,CAAAA,MAAAA;AAAAA,MAAQH,MAAMY,MAAOZ,CAAAA,IAAAA;AAAAA,MAAMC,KAAKW,MAAOX,CAAAA,GAAAA;AAAAA,MAAKG,UAAUQ,MAAOR,CAAAA;AAAAA;AAAS,GAACe,EAAAA,CAAAA,WAAAC,CAAAA,WAAAA,EAAA,IAAA,EAAA;AAAA,IAAAC,yBAAA,MAAA,CAAA,MAAA,CAEjHzB,KAAM0B,CAAAA,MAAAA,GAAS1B,MAAM0B,MAAO,CAAA;AAAA,MAAEP,KAAAA;AAAAA,MAAOH;AAAAA,KAAQ,CAAA,GAACO,WAAAtB,CAAAA,SAAAA,EAAA0B,UAAA,CAAA;AAAA,MAAA,IAAkB1B,EAAAA;AAAAA,OAAeC,cAAc,EAAA;AAAA,MAAA,SAAA,kBAAiBiB,MAAAA,CAAAA,MAAAA,KAAAA,EAANS,EAAAA,SAAAA;AAAAA,KAA2B,CAAA,EAAA,IAAA,CAAA,CAFlBH,EAAAA,SAAAA;AAAAA,GAKvH,CAAA,CAAA,CAAA;AACDH,EAAAA,EAAAA,CAAGO,UAAanC,GAAAA,eAAAA;AAKhB,EAAMoC,MAAAA,SAAAA,GAAYjC,QAASkC,CAAAA,aAAAA,CAAc,KAAK,CAAA;AAC9CD,EAAAA,SAAAA,CAAUrB,KAAK,YAAeC,GAAAA,IAAAA,CAAKC,KAAKD,IAAKE,CAAAA,MAAAA,KAAW,GAAO,CAAA;AAE/D,EAAA,IAAIoB,WAAWpC,OAAQ,EAAA;AACvB,EAAA,IAAII,MAAMiC,YAAc,EAAA;AACtBD,IAAWnC,QAAAA,GAAAA,QAAAA,CAASqC,cAAelC,CAAAA,KAAAA,CAAMiC,YAAY,CAAA;AAAA;AAEvDD,EAAAA,QAAAA,CAASG,YAAYL,SAAS,CAAA;AAC9BJ,EAAAA,MAAAA,CAAOJ,IAAIQ,SAAS,CAAA;AAEpBM,EAAAA,QAAAA,CAAS,MAAM;AACb,IAAA,MAAMC,aAAgB,GAAA;AAAA,MAAE5B,IAAIO,MAAOP,CAAAA,EAAAA;AAAAA,MAAI6B,KAAKtB,MAAOsB,CAAAA,GAAAA;AAAAA,MAAKC,IAAMT,EAAAA,SAAAA;AAAAA,MAAWd;AAAAA,KAAO;AAChFrB,IAAAA,aAAAA,CAAc6C,KAAKH,aAAa,CAAA;AAAA,GACjC,CAAA;AACD,EAAO,OAAA;AAAA,IAAE5B,IAAIO,MAAOP,CAAAA,EAAAA;AAAAA,IAAIU;AAAAA,GAAM;AAChC,CAlD6BpB,EAAAA,eAAAA;AAoD7B,MAAM0C,kCAAyD,MAAA,CAAA,CAAA,aAAA,KAAA;AAxE/D,EAAA,IAAA,EAAA;AAyEE,EAAA,IAAI,CAACJ,aAAe,EAAA;AACpB,EAAM,MAAA;AAAA,IAAErB,MAAAA;AAAAA,IAAQuB;AAAAA,GAASF,GAAAA,aAAAA;AACzBrB,EAAAA,CAAAA,EAAAA,GAAAA,MAAAA,CAAOY,OAAPZ,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,MAAAA,CAAAA;AACA,EAAA,IAAIA,OAAOH,OAAS,EAAA;AAClB,IAAM6B,MAAAA,aAAAA,GAAgBH,IAAKzC,CAAAA,aAAAA,CAAc,YAAY,CAAA;AACrD4C,IAAcC,aAAAA,CAAAA,SAAAA,GAAY,eAAe3B,MAAOD,CAAAA,eAAAA;AAChD2B,IAAcE,aAAAA,CAAAA,gBAAAA,CAAiB,gBAAgB,MAAM;AACnDlB,MAAAA,MAAAA,CAAO,MAAMa,IAAI,CAAA;AACjBA,MAAAA,IAAAA,CAAKM,MAAO,EAAA;AACZlD,MAAAA,aAAAA,CAAcmD,MAAOnD,CAAAA,aAAAA,CAAcoD,OAAQV,CAAAA,aAAa,GAAG,CAAC,CAAA;AAAA,KAC7D,CAAA;AAAA,GACI,MAAA;AACLX,IAAAA,MAAAA,CAAO,MAAMa,IAAI,CAAA;AACjBA,IAAAA,IAAAA,CAAKM,MAAO,EAAA;AACZlD,IAAAA,aAAAA,CAAcmD,MAAOnD,CAAAA,aAAAA,CAAcoD,OAAQV,CAAAA,aAAa,GAAG,CAAC,CAAA;AAAA;AAEhE,CAjByBA,EAAAA,iBAAAA,CAAAA;AAkBlB,MAAMjB,qCAAqC,MAAA,CAAA,CAAA,EAAA,KAAA;AAChD,EAAA,MAAM4B,gBAAgBrD,aAAcsD,CAAAA,IAAAA,CAAMC,CAASA,IAAAA,KAAAA,IAAAA,CAAKzC,OAAOA,EAAE,CAAA;AACjE,EAAA,IAAIuC,aAAe,EAAA;AACjBP,IAAAA,eAAAA,CAAgBO,aAAa,CAAA;AAAA;AAEjC,CALmCvC,EAAAA,oBAAAA;AAO5B,MAAM0C,sCAAuC,MAAA,CAAA,CAAA,GAAA,KAAA;AAClD,EAAA,MAAMC,aAAazD,aAAc0D,CAAAA,MAAAA,CAAQH,CAASA,IAAAA,KAAAA,IAAAA,CAAKZ,QAAQA,GAAG,CAAA;AAClEc,EAAAA,UAAAA,CAAWE,OAASJ,CAAAA,CAAAA,IAAAA,KAAST,eAAgBS,CAAAA,IAAI,CAAC,CAAA;AACpD,CAHoCZ,EAAAA,qBAAAA;AAK7B,MAAMiB,mCAAyB,MAAA,CAAA,MAAA;AACpC,EAAO5D,OAAAA,aAAAA;AACT,CAFgC4D,EAAAA,kBAAAA;AAIzB,MAAMC,gCAAqD,MAAA,CAAA,CAAA,GAAA,KAAA;AAChE,EAAM,MAAA;AAAA,IAAE3B;AAAAA,GAAe4B,GAAAA,GAAAA,IAAOC,kBAAmB,EAAA,IAAK,EAAC;AACvDhE,EAAkBmC,eAAAA,GAAAA,UAAAA;AAElB,EAAO,OAAA;AAAA,IAAE9B;AAAAA,GAAc;AACzB,CAL8B0D,EAAAA,eAAAA;;;;"}