{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/ui/tooltip/index.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from 'vue'\nimport { h, defineComponent, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '@vue-cesium/composables/private/use-anchor'\nimport useScrollTarget from '@vue-cesium/composables/private/use-scroll-target'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '@vue-cesium/composables/private/use-model-toggle'\nimport usePortal from '@vue-cesium/composables/private/use-portal'\nimport useTransition, { useTransitionProps } from '@vue-cesium/composables/private/use-transition'\nimport useTick from '@vue-cesium/composables/private/use-tick'\nimport useTimeout from '@vue-cesium/composables/private/use-timeout'\n\nimport { getScrollTarget } from '@vue-cesium/utils/private/scroll'\nimport { getTouchTarget } from '@vue-cesium/utils/private/touch'\nimport { addEvt, cleanEvt } from '@vue-cesium/utils/private/event'\nimport { clearSelection } from '@vue-cesium/utils/private/selection'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { validatePosition, validateOffset, setPosition, parsePosition } from '@vue-cesium/utils/private/position-engine'\nimport { platform } from '@vue-cesium/utils/platform'\n\nexport const tooltipProps = {\n  ...useAnchorProps,\n  ...useModelToggleProps,\n  ...useTransitionProps,\n\n  maxHeight: {\n    type: String,\n    default: null\n  },\n  maxWidth: {\n    type: String,\n    default: null\n  },\n\n  transitionShow: {\n    type: String,\n    default: 'jump-down'\n  },\n  transitionHide: {\n    type: String,\n    default: 'jump-up'\n  },\n\n  anchor: {\n    type: String as PropType<\n      | 'top left'\n      | 'top middle'\n      | 'top right'\n      | 'top start'\n      | 'top end'\n      | 'center left'\n      | 'center middle'\n      | 'center right'\n      | 'center start'\n      | 'center end'\n      | 'bottom left'\n      | 'bottom middle'\n      | 'bottom right'\n      | 'bottom start'\n      | 'bottom end'\n    >,\n    default: 'bottom middle',\n    validator: validatePosition\n  },\n  self: {\n    type: String as PropType<\n      | 'top left'\n      | 'top middle'\n      | 'top right'\n      | 'top start'\n      | 'top end'\n      | 'center left'\n      | 'center middle'\n      | 'center right'\n      | 'center start'\n      | 'center end'\n      | 'bottom left'\n      | 'bottom middle'\n      | 'bottom right'\n      | 'bottom start'\n      | 'bottom end'\n    >,\n    default: 'top middle',\n    validator: validatePosition\n  },\n  offset: {\n    type: Array,\n    default: () => [14, 14],\n    validator: validateOffset\n  },\n\n  scrollTarget: String,\n\n  delay: {\n    type: Number,\n    default: 0\n  },\n\n  hideDelay: {\n    type: Number,\n    default: 0\n  },\n\n  persistent: {\n    type: Boolean\n  }\n}\n\nexport default defineComponent({\n  name: 'VcTooltip',\n\n  inheritAttrs: false,\n\n  props: tooltipProps,\n\n  emits: [...useModelToggleEmits],\n\n  setup(props, { slots, emit, attrs }) {\n    let unwatchPosition, observer\n    const vm = getCurrentInstance()\n\n    const innerRef = ref(null)\n    const showing = ref(false)\n\n    const anchorOrigin = computed(() => parsePosition(props.anchor, true))\n    const selfOrigin = computed(() => parsePosition(props.self, true))\n    const hideOnRouteChange = computed(() => props.persistent !== true)\n\n    const { registerTick, removeTick, prepareTick } = useTick()\n    const { registerTimeout, removeTimeout } = useTimeout()\n    const { transition, transitionStyle } = useTransition(props, showing)\n    const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n    const { anchorEl, canShow, anchorEvents } = useAnchor({ showing, configureAnchorEl, avoidEmit: undefined })\n\n    const { show, hide } = useModelToggle({\n      showing,\n      canShow,\n      handleShow,\n      handleHide,\n      hideOnRouteChange,\n      processOnMount: true\n    })\n\n    Object.assign(anchorEvents, { delayShow, delayHide })\n\n    const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent)\n\n    function handleShow(evt) {\n      removeTick()\n      removeTimeout()\n\n      showPortal()\n\n      registerTick(() => {\n        observer = new MutationObserver(() => updatePosition())\n        observer.observe(innerRef.value, { attributes: false, childList: true, characterData: true, subtree: true })\n        updatePosition()\n        configureScrollTarget()\n      })\n      prepareTick()\n\n      if (unwatchPosition === void 0) {\n        unwatchPosition = watch(() => props.self + '|' + props.anchor, updatePosition)\n      }\n\n      registerTimeout(() => {\n        // eslint-disable-next-line vue/require-explicit-emits\n        emit('show', evt)\n      }, props.transitionDuration)\n    }\n\n    function handleHide(evt) {\n      removeTick()\n      removeTimeout()\n\n      anchorCleanup()\n\n      registerTimeout(() => {\n        hidePortal()\n        // eslint-disable-next-line vue/require-explicit-emits\n        emit('hide', evt)\n      }, props.transitionDuration)\n    }\n\n    function anchorCleanup() {\n      if (observer !== void 0) {\n        observer.disconnect()\n        observer = void 0\n      }\n\n      if (unwatchPosition !== void 0) {\n        unwatchPosition()\n        unwatchPosition = void 0\n      }\n\n      unconfigureScrollTarget()\n      cleanEvt(anchorEvents, 'tooltipTemp')\n    }\n\n    function updatePosition() {\n      const el = innerRef.value\n\n      if (anchorEl.value === void 0 || !el) {\n        return\n      }\n\n      setPosition({\n        el,\n        offset: props.offset,\n        anchorEl: anchorEl.value,\n        anchorOrigin: anchorOrigin.value,\n        selfOrigin: selfOrigin.value,\n        maxHeight: props.maxHeight,\n        maxWidth: props.maxWidth\n      })\n    }\n\n    function delayShow(evt) {\n      if (platform().isPhone === true) {\n        clearSelection()\n        document.body.classList.add('non-selectable')\n\n        const target = getTouchTarget(anchorEl.value)\n        const evts = ['touchmove', 'touchcancel', 'touchend', 'click'].map(e => [target, e, '__delayHide', 'passiveCapture'])\n\n        addEvt(anchorEvents, 'tooltipTemp', evts)\n      }\n\n      registerTimeout(() => {\n        show(evt)\n      }, props.delay)\n    }\n\n    function delayHide(evt) {\n      removeTimeout()\n\n      if (platform().isPhone === true) {\n        cleanEvt(anchorEvents, 'tooltipTemp')\n        clearSelection()\n        // delay needed otherwise selection still occurs\n        setTimeout(() => {\n          document.body.classList.remove('non-selectable')\n        }, 10)\n      }\n\n      registerTimeout(() => {\n        hide(evt)\n      }, props.hideDelay)\n    }\n\n    function configureAnchorEl() {\n      if (props.noParentEvent === true || anchorEl.value === void 0) {\n        return\n      }\n\n      const evts =\n        platform().isPhone === true\n          ? [[anchorEl.value, 'touchstart', 'delayShow', 'passive']]\n          : [\n              [anchorEl.value, 'mouseenter', 'delayShow', 'passive'],\n              [anchorEl.value, 'mouseleave', 'delayHide', 'passive']\n            ]\n\n      addEvt(anchorEvents, 'anchor', evts)\n    }\n\n    function configureScrollTarget() {\n      if (anchorEl.value !== void 0 || props.scrollTarget !== void 0) {\n        localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n        const fn = props.noParentEvent === true ? updatePosition : hide\n\n        changeScrollEvent(localScrollTarget.value, fn)\n      }\n    }\n\n    function getTooltipContent() {\n      return showing.value === true\n        ? h(\n            'div',\n            {\n              ...attrs,\n              ref: innerRef,\n              class: ['vc-tooltip vc-tooltip--style vc-position-engine no-pointer-events', attrs.class],\n              style: transitionStyle.value,\n              role: 'complementary'\n            },\n            hSlot(slots.default)\n          )\n        : null\n    }\n\n    function renderPortalContent() {\n      return h(\n        Transition,\n        {\n          name: transition.value,\n          appear: true\n        },\n        getTooltipContent\n      )\n    }\n\n    onBeforeUnmount(anchorCleanup)\n\n    // expose public methods\n    Object.assign(vm?.proxy, { updatePosition })\n\n    return renderPortal\n  }\n})\n\n// export type VcTooltipProps = ExtractPropTypes<typeof tooltipProps>\n\nexport interface VcTooltipProps {\n  /**\n   * One of VueCesium's embedded transitions.\n   * Default value: jump-down\n   */\n  transitionShow?: string | undefined\n  /**\n   * One of VueCesium's embedded transitions.\n   * Default value: jump-up\n   */\n  transitionHide?: string | undefined\n  /**\n   * Transition duration (in milliseconds, without unit).\n   * Default value: 300\n   */\n  transitionDuration?: string | number | undefined\n  /**\n   * Model of the component defining shown/hidden state; Either use this property (along with a listener for 'update:model-value' event) OR use v-model directive.\n   */\n  modelValue?: boolean\n  /**\n   * The maximum height of the Tooltip; Size in CSS units, including unit name.\n   */\n  maxHeight?: string | undefined\n  /**\n   * The maximum width of the Tooltip; Size in CSS units, including unit name.\n   */\n  maxWidth?: string | undefined\n  /**\n   * Two values setting the starting position or anchor point of the Tooltip relative to its target.\n   * Default value: bottom middle\n   */\n  anchor?:\n    | 'top left'\n    | 'top middle'\n    | 'top right'\n    | 'top start'\n    | 'top end'\n    | 'center left'\n    | 'center middle'\n    | 'center right'\n    | 'center start'\n    | 'center end'\n    | 'bottom left'\n    | 'bottom middle'\n    | 'bottom right'\n    | 'bottom start'\n    | 'bottom end'\n    | undefined\n  /**\n   * Two values setting the Tooltip's own position relative to its target.\n   * Default value: top middle\n   */\n  self?:\n    | 'top left'\n    | 'top middle'\n    | 'top right'\n    | 'top start'\n    | 'top end'\n    | 'center left'\n    | 'center middle'\n    | 'center right'\n    | 'center start'\n    | 'center end'\n    | 'bottom left'\n    | 'bottom middle'\n    | 'bottom right'\n    | 'bottom start'\n    | 'bottom end'\n    | undefined\n  /**\n   * An array of two numbers to offset the Tooltip horizontally and vertically in pixels.\n   * Default value: [14, 14]\n   */\n  offset?: any[] | undefined\n  /**\n   * CSS selector or DOM element to be used as a custom scroll container instead of the auto detected one.\n   */\n  scrollTarget?: string | undefined\n  /**\n   * Configure a target element to trigger Tooltip toggle; 'true' means it enables the parent DOM element, 'false' means it disables attaching events to any DOM elements; By using a String (CSS selector) it attaches the events to the specified DOM element (if it exists).\n   * Default value: true\n   */\n  target?: boolean | string | undefined\n  /**\n   * Skips attaching events to the target DOM element (that trigger the element to get shown).\n   */\n  noParentEvent?: boolean | undefined\n  /**\n   * Configure Tooltip to appear with delay.\n   */\n  delay?: number | undefined\n  /**\n   * Configure Tooltip to disappear with delay.\n   */\n  hideDelay?: number | undefined\n  tip?: string | undefined\n  persistent?: boolean\n  contextMenu?: boolean\n  /**\n   * Emitted when showing/hidden state changes; Is also used by v-model.\n   * @param value New state (showing/hidden)\n   */\n  'onUpdate:modelValue'?: (value: boolean) => void\n  /**\n   * Emitted after component has triggered show().\n   * @param evt JS event object\n   */\n  onShow?: (evt: any) => void\n  /**\n   * Emitted when component triggers show() but before it finishes doing it.\n   * @param evt JS event object\n   */\n  onBeforeShow?: (evt: any) => void\n  /**\n   * Emitted after component has triggered hide().\n   * @param evt JS event object\n   */\n  onHide?: (evt: any) => void\n  /**\n   * Emitted when component triggers hide() but before it finishes doing it.\n   * @param evt JS event object\n   */\n  onBeforeHide?: (evt: any) => void\n}\n"],"names":[],"mappings":"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"}