vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 20 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/ui/tooltip/index.ts"],"sourcesContent":["import type { ComponentPublicInstance, ExtractPropTypes, PropType, VNode } 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'\nimport { LooseDictionary } from '@vue-cesium/utils/types'\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: LooseDictionary) => void\n /**\n * Emitted when component triggers show() but before it finishes doing it\n * @param evt JS event object\n */\n onBeforeShow?: (evt: LooseDictionary) => void\n /**\n * Emitted after component has triggered hide()\n * @param evt JS event object\n */\n onHide?: (evt: LooseDictionary) => void\n /**\n * Emitted when component triggers hide() but before it finishes doing it\n * @param evt JS event object\n */\n onBeforeHide?: (evt: LooseDictionary) => void\n}\n\nexport interface VcTooltipSlots {\n /**\n * Default slot in the devland unslotted content of the component\n */\n default: () => VNode[]\n}\n\nexport interface VcTooltipRef extends ComponentPublicInstance<VcTooltipProps> {\n /**\n * Triggers component to show\n * @param evt JS event object\n */\n show: (evt?: LooseDictionary) => void\n /**\n * Triggers component to hide\n * @param evt JS event object\n */\n hide: (evt?: LooseDictionary) => void\n /**\n * Triggers component to toggle between show/hide\n * @param evt JS event object\n */\n toggle: (evt?: LooseDictionary) => void\n /**\n * There are some custom scenarios for which cannot automatically reposition the tooltip without significant performance drawbacks so the optimal solution is for you to call this method when you need it\n */\n updatePosition: () => void\n}\n"],"names":[],"mappings":"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"}