{"version":3,"file":"popup.mjs","sources":["../../../components/popup/popup.tsx"],"sourcesContent":["import { createPopper, Placement } from '@popperjs/core';\nimport { inRange, max, min, isObject, debounce, isString, isFunction } from 'lodash-es';\nimport {\n  computed,\n  CSSProperties,\n  defineComponent,\n  inject,\n  InjectionKey,\n  nextTick,\n  onUnmounted,\n  provide,\n  ref,\n  Ref,\n  toRefs,\n  Transition,\n  watch,\n} from 'vue';\nimport { useVModel, useContent, useTNodeJSX, usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\n\nimport { off, on, once, isServer } from '@tdesign/shared-utils';\nimport setStyle from '@tdesign/common-js/utils/setStyle';\nimport Container from './container';\nimport props from './props';\nimport { PopupTriggerEvent, TdPopupProps } from './type';\n\nconst POPUP_ATTR_NAME = 'data-td-popup';\nconst POPUP_PARENT_ATTR_NAME = 'data-td-popup-parent';\n\n/**\n * @param id\n * @param upwards query upwards poppers\n */\nfunction getPopperTree(id: number | string, upwards?: boolean): Element[] {\n  const list = [] as any;\n  const selectors = [POPUP_PARENT_ATTR_NAME, POPUP_ATTR_NAME];\n\n  if (!id) return list;\n  if (upwards) {\n    selectors.unshift(selectors.pop());\n  }\n\n  recurse(id);\n\n  return list;\n\n  function recurse(id: number | string) {\n    const children = document.querySelectorAll(`[${selectors[0]}=\"${id}\"]`);\n    children.forEach((el) => {\n      list.push(el);\n      const childId = el.getAttribute(selectors[1]);\n      if (childId && childId !== id) {\n        recurse(childId);\n      }\n    });\n  }\n}\n\nconst parentKey = Symbol() as InjectionKey<{\n  id: string;\n  assertMouseLeave: (ev: MouseEvent) => void;\n}>;\n\nfunction getPopperPlacement(placement: TdPopupProps['placement']): Placement {\n  return placement.replace(/-(left|top)$/, '-start').replace(/-(right|bottom)$/, '-end') as Placement;\n}\n\nfunction attachListeners(elm: Ref<Element>) {\n  const offs: Array<() => void> = [];\n  return {\n    add<K extends keyof HTMLElementEventMap>(type: K, listener: (ev: HTMLElementEventMap[K]) => void) {\n      if (!type) return;\n      on(elm.value, type, listener);\n      offs.push(() => {\n        off(elm.value, type, listener);\n      });\n    },\n    clean() {\n      offs.forEach((handler) => handler?.());\n      offs.length = 0;\n    },\n  };\n}\n\nexport default defineComponent({\n  name: 'TPopup',\n  props: {\n    ...props,\n    expandAnimation: {\n      type: Boolean,\n    },\n  },\n  setup(props, { expose }) {\n    const { visible: propVisible, modelValue } = toRefs(props);\n    const [visible, setVisible] = useVModel(\n      propVisible,\n      modelValue,\n      props.defaultVisible,\n      props.onVisibleChange,\n      'visible',\n    );\n    const renderTNodeJSX = useTNodeJSX();\n    const renderContent = useContent();\n\n    /** popperjs instance */\n    let popper: ReturnType<typeof createPopper>;\n    /** timeout id */\n    let showTimeout: any;\n    let hideTimeout: any;\n\n    const triggerEl = ref<HTMLElement>();\n    const overlayEl = ref<HTMLElement>();\n    const popperEl = ref<HTMLElement>();\n    const containerRef = ref<typeof Container>();\n    const isOverlayHover = ref(false);\n\n    const arrowStyle = ref<CSSProperties>({});\n\n    const id = typeof process !== 'undefined' && process.env?.TEST ? '' : Date.now().toString(36);\n    const parent = inject(parentKey, undefined);\n\n    provide(parentKey, {\n      id,\n      assertMouseLeave: onMouseLeave,\n    });\n\n    const prefixCls = usePrefixClass('popup');\n    const { STATUS: commonCls } = useCommonClassName();\n    const delay = computed(() => {\n      const delay = props.trigger !== 'hover' ? [0, 0] : [].concat(props.delay ?? [250, 150]);\n      return {\n        show: delay[0],\n        hide: delay[1] ?? delay[0],\n      };\n    });\n\n    const trigger = attachListeners(triggerEl);\n\n    watch(\n      () => [props.trigger, triggerEl.value],\n      () => {\n        if (!triggerEl.value) return;\n        trigger.clean();\n\n        trigger.add(\n          (\n            {\n              hover: 'mouseenter',\n              focus: 'focusin',\n              'context-menu': 'contextmenu',\n              click: 'click',\n            } as any\n          )[props.trigger],\n          (ev: MouseEvent) => {\n            if (props.disabled) return;\n\n            if (ev.type === 'contextmenu') {\n              ev.preventDefault();\n            }\n\n            if ((ev.type === 'click' || ev.type === 'contextmenu') && visible.value) {\n              hide(ev);\n              return;\n            }\n\n            show(ev);\n          },\n        );\n\n        trigger.add(\n          (\n            {\n              hover: 'mouseleave',\n              focus: 'focusout',\n            } as any\n          )[props.trigger],\n          hide,\n        );\n      },\n    );\n\n    watch(\n      () => [props.overlayStyle, props.overlayInnerStyle, overlayEl.value],\n      () => {\n        updateOverlayInnerStyle();\n        updatePopper();\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => props.triggerElement,\n      (v) => {\n        // triggerElement 为字符串的情况，作为元素选择器使用\n        if (typeof v === 'string') {\n          nextTick(() => {\n            triggerEl.value = document.querySelector(v);\n          });\n        }\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => props.placement,\n      () => {\n        destroyPopper();\n        updatePopper();\n      },\n    );\n\n    watch(\n      () => visible.value,\n      (visible) => {\n        if (visible) {\n          !isServer && on(document, 'mousedown', onDocumentMouseDown, true);\n          if (props.trigger === 'focus') {\n            once(triggerEl.value, 'keydown', (ev: KeyboardEvent) => {\n              const code = typeof process !== 'undefined' && process.env?.TEST ? '27' : 'Escape';\n              if (ev.code === code) {\n                hide(ev);\n              }\n            });\n          }\n          return;\n        }\n        !isServer && off(document, 'mousedown', onDocumentMouseDown, true);\n      },\n      { immediate: true },\n    );\n\n    watch(\n      () => [visible.value, overlayEl.value],\n      () => {\n        if (visible.value && overlayEl.value && updateScrollTop) {\n          updateScrollTop?.(overlayEl.value);\n        }\n      },\n    );\n\n    onUnmounted(() => {\n      destroyPopper();\n      clearAllTimeout();\n      off(document, 'mousedown', onDocumentMouseDown, true);\n    });\n\n    expose({\n      update: updatePopper,\n      getOverlay: () => overlayEl.value,\n      getOverlayState: () => ({\n        hover: isOverlayHover.value,\n      }),\n      getPopper: () => popper,\n      /** close is going to be deprecated. visible is enough */\n      close: () => hide(),\n    });\n\n    function getOverlayStyle() {\n      const { overlayStyle } = props;\n\n      if (!triggerEl.value || !overlayEl.value) return;\n      if (isFunction(overlayStyle)) {\n        return overlayStyle(triggerEl.value, overlayEl.value);\n      }\n      if (isObject(overlayStyle)) {\n        return overlayStyle;\n      }\n    }\n\n    function updateOverlayInnerStyle() {\n      const { overlayInnerStyle } = props;\n\n      if (!triggerEl.value || !overlayEl.value) return;\n      if (isFunction(overlayInnerStyle)) {\n        setStyle(overlayEl.value, overlayInnerStyle(triggerEl.value, overlayEl.value));\n      } else if (isObject(overlayInnerStyle)) {\n        setStyle(overlayEl.value, overlayInnerStyle);\n      }\n    }\n\n    function getArrowStyle() {\n      if (!triggerEl.value || !popperEl.value) {\n        // 不做修改\n        return {};\n      }\n\n      const triggerRect = triggerEl.value.getBoundingClientRect();\n      const popupRect = popperEl.value.getBoundingClientRect();\n\n      const position = props.placement;\n\n      if (position.startsWith('top') || position.startsWith('bottom')) {\n        // 距离中线的距离\n        const offsetLeft = Math.abs(triggerRect.left + triggerRect.width / 2 - popupRect.left);\n\n        const popupWidth = popperEl.value.offsetWidth ?? popperEl.value.offsetWidth;\n\n        // 保留 padding 的安全 offset\n        const maxPopupOffsetLeft = popupWidth - 4;\n        const minPopupOffsetLeft = 12;\n\n        // 偏移超出元素本身\n        if (inRange(offsetLeft, 0, popupWidth)) {\n          return {\n            // 加上箭头元素本身的偏移\n            left: `${max([minPopupOffsetLeft, min([maxPopupOffsetLeft, offsetLeft])]) - 4}px`,\n            // 覆盖可能的 margin\n            marginLeft: 0,\n          };\n        } else {\n          // 此时箭头的指向将不准确\n          // 不作偏移保持默认\n          // 或许考虑隐藏箭头或尽可能偏移\n          return {};\n        }\n      }\n\n      // 判断元素顶部和触发器中线的距离\n      const offsetTop = triggerRect.top + triggerRect.height / 2 - popupRect.top;\n\n      const popupHeight = popperEl.value.offsetHeight ?? popperEl.value.clientHeight;\n\n      // 保留 padding 的安全 offset\n      const maxPopupOffsetTop = popupHeight - 8;\n      const minPopupOffsetTop = 8;\n\n      // 偏移超出元素本身\n      if (inRange(offsetTop, 0, popupHeight)) {\n        return {\n          // 加上箭头元素本身的偏移\n          top: `${max([minPopupOffsetTop, min([maxPopupOffsetTop, offsetTop])]) - 4}px`,\n          // 覆盖可能的 margin\n          marginTop: 0,\n        };\n      } else {\n        // 此时箭头的指向将不准确\n        // 不作偏移保持默认\n        // 或许考虑隐藏箭头或尽可能偏移\n        return {};\n      }\n    }\n\n    function updatePopper() {\n      if (!popperEl.value || !visible.value) return;\n      if (popper) {\n        /**\n         * web component 内的元素限制在了shadow root内，\n         * 无法通过寻找父元素的方式判定是否在当前文档内\n         */\n        if (triggerEl.value.getRootNode() instanceof ShadowRoot) {\n          popper.state.elements.reference = triggerEl.value;\n          popper.update();\n        } else {\n          const rect = triggerEl.value.getBoundingClientRect();\n          let parent = triggerEl.value;\n          while (parent && parent !== document.body) {\n            parent = parent.parentElement;\n          }\n          const isHidden = parent !== document.body || (rect.width === 0 && rect.height === 0);\n          if (!isHidden) {\n            popper.state.elements.reference = triggerEl.value;\n            popper.update();\n          } else {\n            setVisible(false, { trigger: getTriggerType({ type: 'mouseenter' } as MouseEvent) });\n          }\n        }\n        if (props.showArrow) {\n          arrowStyle.value = getArrowStyle();\n        }\n        return;\n      }\n\n      popper = createPopper(triggerEl.value, popperEl.value, {\n        placement: getPopperPlacement(props.placement),\n        onFirstUpdate: () => {\n          nextTick(updatePopper);\n        },\n        ...props.popperOptions,\n      });\n      if (props.showArrow) {\n        arrowStyle.value = getArrowStyle();\n      }\n    }\n\n    function destroyPopper() {\n      if (popper) {\n        popper?.destroy();\n        popper = null;\n      }\n      if (props.destroyOnClose) {\n        containerRef.value?.unmountContent();\n      }\n    }\n\n    function show(ev: PopupTriggerEvent) {\n      clearAllTimeout();\n      showTimeout = setTimeout(() => {\n        setVisible(true, { trigger: getTriggerType(ev) });\n      }, delay.value.show);\n    }\n\n    function hide(ev?: PopupTriggerEvent) {\n      clearAllTimeout();\n      hideTimeout = setTimeout(() => {\n        setVisible(false, { trigger: getTriggerType(ev), e: ev });\n      }, delay.value.hide);\n    }\n\n    function clearAllTimeout() {\n      clearTimeout(showTimeout);\n      clearTimeout(hideTimeout);\n    }\n\n    function getTriggerType(ev?: PopupTriggerEvent) {\n      switch (ev?.type) {\n        case 'mouseenter':\n          return 'trigger-element-hover';\n        case 'mouseleave':\n          return 'trigger-element-hover';\n        case 'focusin':\n          return 'trigger-element-focus';\n        case 'focusout':\n          return 'trigger-element-blur';\n        case 'click':\n          return 'trigger-element-click';\n        case 'context-menu':\n        case 'keydown':\n          return 'keydown-esc';\n        case 'mousedown':\n          return 'document';\n        default:\n          return 'trigger-element-close';\n      }\n    }\n\n    function onDocumentMouseDown(ev: MouseEvent) {\n      // click content\n      if (popperEl.value?.contains(ev.target as Node)) {\n        return;\n      }\n\n      // click trigger element\n      if (triggerEl.value?.contains(ev.target as Node)) {\n        return;\n      }\n\n      // ignore upwards\n      const activedPopper = getPopperTree(id).find((el) => el.contains(ev.target as Node));\n      if (\n        activedPopper &&\n        getPopperTree(activedPopper.getAttribute(POPUP_PARENT_ATTR_NAME), true).some((el) => el === popperEl.value)\n      ) {\n        return;\n      }\n\n      hide(ev);\n    }\n\n    function onMouseLeave(ev: MouseEvent) {\n      isOverlayHover.value = false;\n      if (props.trigger !== 'hover' || triggerEl.value.contains(ev.target as Node)) return;\n\n      const isCursorOverlaps = getPopperTree(id).some((el) => {\n        const rect = el.getBoundingClientRect();\n\n        return ev.x > rect.x && ev.x < rect.x + rect.width && ev.y > rect.y && ev.y < rect.y + rect.height;\n      });\n      if (!isCursorOverlaps) {\n        hide(ev);\n        parent?.assertMouseLeave(ev);\n      }\n    }\n\n    function onMouseenter() {\n      isOverlayHover.value = true;\n      if (visible.value && props.trigger === 'hover') {\n        clearAllTimeout();\n      }\n    }\n\n    function onOverlayClick(e: MouseEvent) {\n      props.onOverlayClick?.({ e });\n    }\n\n    const updateScrollTop = inject('updateScrollTop', undefined);\n\n    function handleOnScroll(e: WheelEvent) {\n      const { scrollTop, clientHeight, scrollHeight } = e.target as HTMLDivElement;\n\n      // 防止多次触发添加截流\n      const debounceOnScrollBottom = debounce((e) => props.onScrollToBottom?.({ e }), 100);\n\n      // 页面缩放时，scrollTop/clientHeight/scrollHeight 可能出现小数，使用容差值进行比较\n      // When page is zoomed, scrollTop/clientHeight/scrollHeight may have decimal values, use tolerance for comparison\n      if (Math.abs(clientHeight + scrollTop - scrollHeight) < 1) {\n        // touch bottom\n        debounceOnScrollBottom(e);\n      }\n      props.onScroll?.({ e });\n    }\n\n    return () => {\n      const content = renderTNodeJSX('content');\n      const hidePopup = props.hideEmptyPopup && ['', undefined, null].includes(content);\n      const overlay =\n        visible.value || !props.destroyOnClose ? (\n          <div\n            {...{\n              [POPUP_ATTR_NAME]: id,\n              [POPUP_PARENT_ATTR_NAME]: parent?.id,\n            }}\n            class={[prefixCls.value, props.overlayClassName]}\n            ref={(ref: HTMLElement) => (popperEl.value = ref)}\n            style={[{ zIndex: props.zIndex }, getOverlayStyle(), hidePopup && { visibility: 'hidden' }]}\n            v-show={visible.value}\n            onClick={onOverlayClick}\n            onMouseenter={onMouseenter}\n            onMouseleave={onMouseLeave}\n          >\n            <div\n              class={[\n                `${prefixCls.value}__content`,\n                {\n                  [`${prefixCls.value}__content--text`]: isString(props.content),\n                  [`${prefixCls.value}__content--arrow`]: props.showArrow,\n                  [commonCls.value.disabled]: props.disabled,\n                },\n                props.overlayInnerClassName,\n              ]}\n              ref={overlayEl}\n              onScroll={handleOnScroll}\n            >\n              {content}\n              {props.showArrow && <div class={`${prefixCls.value}__arrow`} style={arrowStyle.value} />}\n            </div>\n          </div>\n        ) : null;\n\n      return (\n        <Container\n          ref={(ref: any) => (containerRef.value = ref)}\n          forwardRef={(ref) => {\n            if (typeof props.triggerElement !== 'string') triggerEl.value = ref;\n          }}\n          onContentMounted={() => {\n            if (visible.value) {\n              updatePopper();\n\n              const timer = setTimeout(() => {\n                /** compted after animation finished */\n                updateOverlayInnerStyle();\n                clearTimeout(timer);\n              }, 60);\n            }\n          }}\n          onResize={() => {\n            if (visible.value) {\n              updatePopper();\n            }\n          }}\n          visible={visible.value}\n          attach={props.attach}\n        >\n          {{\n            content: () => (\n              <Transition\n                name={`${prefixCls.value}--animation${props.expandAnimation ? '-expand' : ''}`}\n                appear\n                onEnter={updatePopper}\n                onAfterLeave={destroyPopper}\n              >\n                {overlay}\n              </Transition>\n            ),\n            default: () => {\n              if (typeof props.triggerElement === 'string') return null;\n              return renderContent('default', 'triggerElement');\n            },\n          }}\n        </Container>\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","POPUP_ATTR_NAME","POPUP_PARENT_ATTR_NAME","getPopperTree","id","upwards","list","selectors","unshift","pop","recurse","children","document","querySelectorAll","concat","forEach","el","push","childId","getAttribute","parentKey","Symbol","getPopperPlacement","placement","replace","attachListeners","elm","offs","add","type","listener","on","value","off","clean","handler","length","defineComponent","name","props","_objectSpread","expandAnimation","Boolean","setup","_process$env","expose","_ref","_toRefs","toRefs","propVisible","visible","modelValue","_useVModel","useVModel","defaultVisible","onVisibleChange","_useVModel2","_slicedToArray","setVisible","renderTNodeJSX","useTNodeJSX","renderContent","useContent","popper","showTimeout","hideTimeout","triggerEl","ref","overlayEl","popperEl","containerRef","isOverlayHover","arrowStyle","process","env","TEST","Date","now","parent","inject","provide","assertMouseLeave","onMouseLeave","prefixCls","usePrefixClass","_useCommonClassName","useCommonClassName","commonCls","STATUS","delay","computed","_props2$delay","_delay2$","trigger","show","hide","watch","hover","focus","click","ev","disabled","preventDefault","overlayStyle","overlayInnerStyle","updateOverlayInnerStyle","updatePopper","immediate","triggerElement","v","nextTick","querySelector","destroyPopper","isServer","onDocumentMouseDown","once","_process$env2","code","updateScrollTop","onUnmounted","clearAllTimeout","update","getOverlay","getOverlayState","getPopper","close","getOverlayStyle","isFunction","isObject","setStyle","getArrowStyle","_popperEl$value$offse2","triggerRect","getBoundingClientRect","popupRect","position","startsWith","_popperEl$value$offse","offsetLeft","Math","abs","left","width","popupWidth","offsetWidth","maxPopupOffsetLeft","minPopupOffsetLeft","inRange","max","min","marginLeft","offsetTop","top","height","popupHeight","offsetHeight","clientHeight","maxPopupOffsetTop","minPopupOffsetTop","marginTop","getRootNode","ShadowRoot","state","elements","reference","rect","body","parentElement","isHidden","getTriggerType","showArrow","createPopper","onFirstUpdate","popperOptions","_popper","destroy","destroyOnClose","_containerRef$value","unmountContent","setTimeout","e","clearTimeout","_popperEl$value","_triggerEl$value","contains","target","activedPopper","find","some","isCursorOverlaps","x","y","onMouseenter","onOverlayClick","_props2$onOverlayClic","handleOnScroll","_props2$onScroll","_e$target","scrollTop","scrollHeight","debounceOnScrollBottom","debounce","onScrollToBottom","_props2$onScrollToBot","onScroll","content","hidePopup","hideEmptyPopup","includes","overlay","_withDirectives","_createVNode","_mergeProps","_defineProperty","overlayClassName","zIndex","visibility","isString","overlayInnerClassName","_vShow","Container","forwardRef","onContentMounted","timer","onResize","attach","default"],"mappings":"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"}