UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 11 kB
{"version":3,"file":"use-anchor.mjs","sources":["../../../../../packages/composables/private/use-anchor.ts"],"sourcesContent":["import { ref, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { clearSelection } from 'casc-cesium-utils/private/selection'\nimport { addEvt, cleanEvt, prevent } from 'casc-cesium-utils/private/event'\nimport { getTouchTarget } from 'casc-cesium-utils/private/touch'\nimport { isKeyCode } from 'casc-cesium-utils/private/key-composition'\nimport { platform } from 'casc-cesium-utils/platform'\n\nexport const useAnchorProps = {\n target: {\n type: [Boolean, String],\n default: true\n },\n noParentEvent: Boolean,\n contextMenu: Boolean\n}\n\nexport default function ({\n showing,\n avoidEmit, // required for VcPopupProxy (true)\n configureAnchorEl // optional\n}) {\n const { props, proxy, emit } = getCurrentInstance()!\n\n const anchorEl = ref<HTMLElement>(null!)\n\n let touchTimer\n\n function canShow(evt) {\n // abort with no parent configured or on multi-touch\n return anchorEl.value === null ? false : evt === void 0 || evt.touches === void 0 || evt.touches.length <= 1\n }\n\n const anchorEvents: any = {}\n\n if (configureAnchorEl === void 0) {\n // default configureAnchorEl is designed for\n\n Object.assign(anchorEvents, {\n hide(evt) {\n ;(proxy as any).hide(evt)\n },\n\n toggle(evt) {\n ;(proxy as any).toggle(evt)\n },\n\n toggleKey(evt) {\n isKeyCode(evt, 13) === true && (proxy as any).toggle(evt)\n },\n\n contextClick(evt) {\n ;(proxy as any).hide(evt)\n nextTick(() => {\n ;(proxy as any).show(evt)\n })\n prevent(evt)\n },\n\n mobilePrevent: prevent,\n\n mobileTouch(evt) {\n anchorEvents.mobileCleanup(evt)\n\n if (canShow(evt) !== true) {\n return\n }\n\n ;(proxy as any).hide(evt)\n anchorEl.value?.classList.add('non-selectable')\n\n const target = getTouchTarget(evt.target)\n addEvt(anchorEvents, 'anchor', [\n [target, 'touchmove', 'mobileCleanup', 'passive'],\n [target, 'touchend', 'mobileCleanup', 'passive'],\n [target, 'touchcancel', 'mobileCleanup', 'passive'],\n [anchorEl.value, 'contextmenu', 'mobilePrevent', 'notPassive']\n ])\n\n touchTimer = setTimeout(() => {\n ;(proxy as any).show(evt)\n }, 300)\n },\n\n mobileCleanup(evt) {\n anchorEl.value.classList.remove('non-selectable')\n clearTimeout(touchTimer)\n\n if (showing.value === true && evt !== void 0) {\n clearSelection()\n }\n }\n })\n\n configureAnchorEl = function (context = props.contextMenu) {\n if (props.noParentEvent === true || anchorEl.value === null) {\n return\n }\n\n let evts\n\n if (context === true) {\n if (platform().isPhone === true) {\n evts = [[anchorEl.value, 'touchstart', 'mobileTouch', 'passive']]\n } else {\n evts = [\n [anchorEl.value, 'click', 'hide', 'passive'],\n [anchorEl.value, 'contextmenu', 'contextClick', 'notPassive']\n ]\n }\n } else {\n evts = [\n [anchorEl.value, 'click', 'toggle', 'passive'],\n [anchorEl.value, 'keyup', 'toggleKey', 'passive']\n ]\n }\n\n addEvt(anchorEvents, 'anchor', evts)\n }\n }\n\n function unconfigureAnchorEl() {\n cleanEvt(anchorEvents, 'anchor')\n }\n\n function setAnchorEl(el) {\n anchorEl.value = el\n while (anchorEl.value.classList.contains('vc-anchor--skip')) {\n ;(anchorEl.value as any) = anchorEl.value.parentNode\n }\n configureAnchorEl()\n }\n\n function pickAnchorEl() {\n if (props.target === false || props.target === '') {\n anchorEl.value = null!\n } else if (props.target === true) {\n setAnchorEl(proxy?.$el.parentNode)\n } else {\n let el = props.target as any\n\n if (typeof props.target === 'string') {\n try {\n el = document.querySelector(props.target)\n } catch (err) {\n el = void 0\n }\n }\n\n if (el !== void 0 && el !== null) {\n anchorEl.value = el.$el || el\n configureAnchorEl()\n } else {\n anchorEl.value = null!\n console.error(`Anchor: target \"${props.target}\" not found`)\n }\n }\n }\n\n watch(\n () => props.contextMenu,\n val => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n configureAnchorEl(val)\n }\n }\n )\n\n watch(\n () => props.target,\n () => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n }\n\n pickAnchorEl()\n }\n )\n\n watch(\n () => props.noParentEvent,\n val => {\n if (anchorEl.value !== null) {\n if (val === true) {\n unconfigureAnchorEl()\n } else {\n configureAnchorEl()\n }\n }\n }\n )\n\n onMounted(() => {\n pickAnchorEl()\n\n if (avoidEmit !== true && props.modelValue === true && anchorEl.value === null) {\n emit('update:modelValue', false)\n }\n })\n\n onBeforeUnmount(() => {\n clearTimeout(touchTimer)\n unconfigureAnchorEl()\n })\n\n return {\n anchorEl,\n canShow,\n anchorEvents\n }\n}\n"],"names":[],"mappings":"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"}