UNPKG

vue-cesium

Version:
1 lines 13.9 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/navigation-sm/index.ts"],"sourcesContent":["import type { CSSProperties, VNode, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, watch, nextTick, ref, reactive, h, createCommentVNode, computed } from 'vue'\nimport type { VcCompassEvt, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcZoomEvt } from '@vue-cesium/utils/types'\nimport usePosition, { positionProps } from '@vue-cesium/composables/private/use-position'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { useCommon } from '@vue-cesium/composables'\nimport VcCompassSm from './compass-sm'\nimport VcZoomControlSm from './zoom-control-sm'\nimport type { VcZoomControlSmProps, VcZoomControlSmRef } from './zoom-control-sm'\nimport type { VcCompassSmProps, VcCompassSmRef } from './compass-sm'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst compassOptsDefault = {\n enableCompassOuterRing: true,\n duration: 1.5,\n autoHidden: true,\n tooltip: {\n delay: 1000,\n anchor: 'bottom middle',\n offset: [0, 20],\n tip: void 0\n }\n}\n\nconst zoomOptsDefault = {\n autoHidden: true,\n tooltip: {\n delay: 1000,\n anchor: 'bottom middle',\n offset: [0, 20],\n tip: void 0\n }\n}\n\nexport const navigationSmProps = {\n ...positionProps,\n compassOpts: {\n type: [Boolean, Object] as PropType<false | VcCompassSmProps>,\n default: () => compassOptsDefault as VcCompassSmProps\n },\n zoomOpts: {\n type: [Boolean, Object] as PropType<false | VcZoomControlSmProps>,\n default: () => zoomOptsDefault as VcZoomControlSmProps\n }\n}\nconst emits = {\n ...commonEmits,\n zoomEvt: (evt: VcZoomEvt) => true,\n compassEvt: (evt: VcCompassEvt) => true\n}\nexport default defineComponent({\n name: 'VcNavigationSm',\n inheritAttrs: false,\n props: navigationSmProps,\n emits: emits,\n setup(props: VcNavigationSmProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcNavigationSm'\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n\n const canRender = ref(false)\n const { $services } = commonState\n const positionState = usePosition(props, $services)\n const rootRef = ref<HTMLElement>(null)\n const compassRef = ref<VcCompassSmRef>(null)\n const zoomControlRef = ref<VcZoomControlSmRef>(null)\n const rootStyle = reactive<CSSProperties>({})\n const { emit } = ctx\n // watch\n watch(\n () => props,\n () => {\n nextTick(() => {\n updateRootStyle()\n $(compassRef)?.reload()\n $(zoomControlRef)?.reload()\n })\n },\n {\n deep: true\n }\n )\n // computed\n const compassOptions = computed(() => Object.assign({}, compassOptsDefault, props.compassOpts))\n const zoomControlOptions = computed(() => Object.assign({}, zoomOptsDefault, props.zoomOpts))\n\n // methods\n const onCompassEvt = e => {\n const listener = getInstanceListener(instance, 'compassEvt')\n listener && emit('compassEvt', e)\n }\n const onZoomEvt = e => {\n const listener = getInstanceListener(instance, 'zoomEvt')\n listener && emit('zoomEvt', e)\n }\n\n instance.createCesiumObject = async () => {\n canRender.value = true\n const { viewer } = $services\n viewer.viewerWidgetResized?.addEventListener(onViewerWidgetResized)\n return new Promise((resolve, reject) => {\n nextTick(() => {\n const viewerElement = (viewer as any)._element\n viewerElement.appendChild($(rootRef))\n resolve($(rootRef))\n })\n })\n }\n\n instance.mount = async () => {\n updateRootStyle()\n const { viewer } = $services\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'mounted',\n target: $(rootRef)\n })\n return true\n }\n\n instance.unmount = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element\n viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n viewer.viewerWidgetResized?.removeEventListener(onViewerWidgetResized)\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'unmounted',\n target: $(rootRef)\n })\n return true\n }\n\n const onViewerWidgetResized = () => {\n nextTick(() => {\n updateRootStyle()\n })\n }\n\n const updateRootStyle = () => {\n const css: CSSProperties = positionState.style.value\n const side = positionState.attach.value\n rootStyle.left = css.left\n rootStyle.top = css.top\n rootStyle.transform = css.transform\n\n if ((side.bottom || side.top) && !side.left && !side.right) {\n css.left = '50%'\n css.transform = 'translate(-50%, 0)'\n }\n\n if ((side.left || side.right) && !side.top && !side.bottom) {\n css.top = '50%'\n css.transform = 'translate(0, -50%)'\n }\n\n Object.assign(rootStyle, css)\n }\n\n return () => {\n if (canRender.value) {\n let children: Array<VNode> = []\n children = hMergeSlot(ctx.slots.default, children)\n if (compassOptions.value && props.compassOpts !== false) {\n children.push(\n h(VcCompassSm, {\n ref: compassRef,\n onCompassEvt: onCompassEvt,\n ...compassOptions.value\n })\n )\n }\n if (zoomControlOptions.value && props.zoomOpts !== false) {\n children.push(\n h(VcZoomControlSm, {\n ref: zoomControlRef,\n onZoomEvt: onZoomEvt,\n ...zoomControlOptions.value\n })\n )\n }\n return h(\n 'div',\n {\n ref: rootRef,\n class: 'vc-navigation-sm ' + positionState.classes.value,\n style: rootStyle\n },\n children\n )\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\nexport type VcNavigationSmEmits = typeof emits\nexport type VcNavigationSmProps = {\n /**\n * Specify the position of the VcNavigationSm.\n * Default value: top-right\n */\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n /**\n * An array of two numbers to offset the VcNavigationSm horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify the compass options of the component. false means no display.\n */\n compassOpts?: false | VcCompassSmProps\n /**\n * Specify the zoom control options of the component. false means no display.\n */\n zoomOpts?: false | VcZoomControlSmProps\n /**\n * Triggers before the VcNavigationSm is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcNavigationSm is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the VcNavigationSm is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the zoom control is operated.\n */\n onZoomEvt?: (evt: VcZoomEvt) => void\n /**\n * Triggers when the compass control is operated.\n */\n onCompassEvt?: (evt: VcCompassEvt) => void\n}\n\nexport interface VcNavigationSmSlots {\n /**\n * Suggestion: VcCompassSm, VcZoomControlSm\n */\n default: () => VNode[]\n}\n\nexport type VcNavigationSmRef = VcComponentPublicInstance<VcNavigationSmProps>\n"],"names":["VcCompassSm","VcZoomControlSm"],"mappings":";;;;;;;;;;;AAaA,MAAM,kBAAqB,GAAA;AAAA,EACzB,sBAAwB,EAAA,IAAA;AAAA,EACxB,QAAU,EAAA,GAAA;AAAA,EACV,UAAY,EAAA,IAAA;AAAA,EACZ,OAAS,EAAA;AAAA,IACP,KAAO,EAAA,GAAA;AAAA,IACP,MAAQ,EAAA,eAAA;AAAA,IACR,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,IACd,GAAK,EAAA,KAAA,CAAA;AAAA,GACP;AACF,CAAA,CAAA;AAEA,MAAM,eAAkB,GAAA;AAAA,EACtB,UAAY,EAAA,IAAA;AAAA,EACZ,OAAS,EAAA;AAAA,IACP,KAAO,EAAA,GAAA;AAAA,IACP,MAAQ,EAAA,eAAA;AAAA,IACR,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,IACd,GAAK,EAAA,KAAA,CAAA;AAAA,GACP;AACF,CAAA,CAAA;AAEO,MAAM,iBAAoB,GAAA;AAAA,EAC/B,GAAG,aAAA;AAAA,EACH,WAAa,EAAA;AAAA,IACX,IAAA,EAAM,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,IACtB,SAAS,MAAM,kBAAA;AAAA,GACjB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAA,EAAM,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,IACtB,SAAS,MAAM,eAAA;AAAA,GACjB;AACF,EAAA;AACA,MAAM,KAAQ,GAAA;AAAA,EACZ,GAAG,WAAA;AAAA,EACH,OAAA,EAAS,CAAC,GAAmB,KAAA,IAAA;AAAA,EAC7B,UAAA,EAAY,CAAC,GAAsB,KAAA,IAAA;AACrC,CAAA,CAAA;AACA,mBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,gBAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA,iBAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA,CAAM,OAA4B,GAAK,EAAA;AAErC,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,IAAA,QAAA,CAAS,WAAc,GAAA,gBAAA,CAAA;AACvB,IAAA,MAAM,WAAc,GAAA,SAAA,CAAU,KAAO,EAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAClD,IAAA,IAAI,gBAAgB,KAAQ,CAAA,EAAA;AAC1B,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAC3B,IAAM,MAAA,EAAE,WAAc,GAAA,WAAA,CAAA;AACtB,IAAM,MAAA,aAAA,GAAgB,WAAY,CAAA,KAAA,EAAO,SAAS,CAAA,CAAA;AAClD,IAAM,MAAA,OAAA,GAAU,IAAiB,IAAI,CAAA,CAAA;AACrC,IAAM,MAAA,UAAA,GAAa,IAAoB,IAAI,CAAA,CAAA;AAC3C,IAAM,MAAA,cAAA,GAAiB,IAAwB,IAAI,CAAA,CAAA;AACnD,IAAM,MAAA,SAAA,GAAY,QAAwB,CAAA,EAAE,CAAA,CAAA;AAC5C,IAAM,MAAA,EAAE,MAAS,GAAA,GAAA,CAAA;AAEjB,IAAA,KAAA;AAAA,MACE,MAAM,KAAA;AAAA,MACN,MAAM;AACJ,QAAA,QAAA,CAAS,MAAM;AA7EvB,UAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA8EU,UAAgB,eAAA,EAAA,CAAA;AAChB,UAAE,CAAA,EAAA,GAAA,CAAA,CAAA,UAAU,MAAZ,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AACf,UAAE,CAAA,EAAA,GAAA,CAAA,CAAA,cAAc,MAAhB,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AAAA,SACpB,CAAA,CAAA;AAAA,OACH;AAAA,MACA;AAAA,QACE,IAAM,EAAA,IAAA;AAAA,OACR;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,cAAA,GAAiB,QAAS,CAAA,MAAM,MAAO,CAAA,MAAA,CAAO,EAAI,EAAA,kBAAA,EAAoB,KAAM,CAAA,WAAW,CAAC,CAAA,CAAA;AAC9F,IAAM,MAAA,kBAAA,GAAqB,QAAS,CAAA,MAAM,MAAO,CAAA,MAAA,CAAO,EAAI,EAAA,eAAA,EAAiB,KAAM,CAAA,QAAQ,CAAC,CAAA,CAAA;AAG5F,IAAA,MAAM,eAAe,CAAK,CAAA,KAAA;AACxB,MAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAA,CAAA;AAC3D,MAAY,QAAA,IAAA,IAAA,CAAK,cAAc,CAAC,CAAA,CAAA;AAAA,KAClC,CAAA;AACA,IAAA,MAAM,YAAY,CAAK,CAAA,KAAA;AACrB,MAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,SAAS,CAAA,CAAA;AACxD,MAAY,QAAA,IAAA,IAAA,CAAK,WAAW,CAAC,CAAA,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAA,QAAA,CAAS,qBAAqB,YAAY;AArG9C,MAAA,IAAA,EAAA,CAAA;AAsGM,MAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAO,CAAA,EAAA,GAAA,MAAA,CAAA,mBAAA,KAAP,mBAA4B,gBAAiB,CAAA,qBAAA,CAAA,CAAA;AAC7C,MAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,QAAA,QAAA,CAAS,MAAM;AACb,UAAA,MAAM,gBAAiB,MAAe,CAAA,QAAA,CAAA;AACtC,UAAc,aAAA,CAAA,WAAA,CAAY,CAAE,CAAA,OAAO,CAAC,CAAA,CAAA;AACpC,UAAQ,OAAA,CAAA,CAAA,CAAE,OAAO,CAAC,CAAA,CAAA;AAAA,SACnB,CAAA,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,QAAA,CAAS,QAAQ,YAAY;AAlHjC,MAAA,IAAA,EAAA,CAAA;AAmHM,MAAgB,eAAA,EAAA,CAAA;AAChB,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAO,CAAA,EAAA,GAAA,MAAA,CAAA,mBAAA,KAAP,mBAA4B,UAAW,CAAA;AAAA,QACrC,MAAM,QAAS,CAAA,WAAA;AAAA,QACf,MAAQ,EAAA,SAAA;AAAA,QACR,MAAA,EAAQ,EAAE,OAAO,CAAA;AAAA,OACnB,CAAA,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,QAAA,CAAS,UAAU,YAAY;AA7HnC,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA8HM,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,MAAM,gBAAiB,MAAe,CAAA,QAAA,CAAA;AACtC,MAAc,aAAA,CAAA,QAAA,CAAS,EAAE,OAAO,CAAC,KAAK,aAAc,CAAA,WAAA,CAAY,CAAE,CAAA,OAAO,CAAC,CAAA,CAAA;AAC1E,MAAO,CAAA,EAAA,GAAA,MAAA,CAAA,mBAAA,KAAP,mBAA4B,mBAAoB,CAAA,qBAAA,CAAA,CAAA;AAChD,MAAO,CAAA,EAAA,GAAA,MAAA,CAAA,mBAAA,KAAP,mBAA4B,UAAW,CAAA;AAAA,QACrC,MAAM,QAAS,CAAA,WAAA;AAAA,QACf,MAAQ,EAAA,WAAA;AAAA,QACR,MAAA,EAAQ,EAAE,OAAO,CAAA;AAAA,OACnB,CAAA,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,MAAM,wBAAwB,MAAM;AAClC,MAAA,QAAA,CAAS,MAAM;AACb,QAAgB,eAAA,EAAA,CAAA;AAAA,OACjB,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAM,MAAA,GAAA,GAAqB,cAAc,KAAM,CAAA,KAAA,CAAA;AAC/C,MAAM,MAAA,IAAA,GAAO,cAAc,MAAO,CAAA,KAAA,CAAA;AAClC,MAAA,SAAA,CAAU,OAAO,GAAI,CAAA,IAAA,CAAA;AACrB,MAAA,SAAA,CAAU,MAAM,GAAI,CAAA,GAAA,CAAA;AACpB,MAAA,SAAA,CAAU,YAAY,GAAI,CAAA,SAAA,CAAA;AAE1B,MAAK,IAAA,CAAA,IAAA,CAAK,UAAU,IAAK,CAAA,GAAA,KAAQ,CAAC,IAAK,CAAA,IAAA,IAAQ,CAAC,IAAA,CAAK,KAAO,EAAA;AAC1D,QAAA,GAAA,CAAI,IAAO,GAAA,KAAA,CAAA;AACX,QAAA,GAAA,CAAI,SAAY,GAAA,oBAAA,CAAA;AAAA,OAClB;AAEA,MAAK,IAAA,CAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,KAAU,CAAC,IAAK,CAAA,GAAA,IAAO,CAAC,IAAA,CAAK,MAAQ,EAAA;AAC1D,QAAA,GAAA,CAAI,GAAM,GAAA,KAAA,CAAA;AACV,QAAA,GAAA,CAAI,SAAY,GAAA,oBAAA,CAAA;AAAA,OAClB;AAEA,MAAO,MAAA,CAAA,MAAA,CAAO,WAAW,GAAG,CAAA,CAAA;AAAA,KAC9B,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,IAAI,WAAyB,EAAC,CAAA;AAC9B,QAAA,QAAA,GAAW,UAAW,CAAA,GAAA,CAAI,KAAM,CAAA,OAAA,EAAS,QAAQ,CAAA,CAAA;AACjD,QAAA,IAAI,cAAe,CAAA,KAAA,IAAS,KAAM,CAAA,WAAA,KAAgB,KAAO,EAAA;AACvD,UAAS,QAAA,CAAA,IAAA;AAAA,YACP,EAAEA,SAAa,EAAA;AAAA,cACb,GAAK,EAAA,UAAA;AAAA,cACL,YAAA;AAAA,cACA,GAAG,cAAe,CAAA,KAAA;AAAA,aACnB,CAAA;AAAA,WACH,CAAA;AAAA,SACF;AACA,QAAA,IAAI,kBAAmB,CAAA,KAAA,IAAS,KAAM,CAAA,QAAA,KAAa,KAAO,EAAA;AACxD,UAAS,QAAA,CAAA,IAAA;AAAA,YACP,EAAEC,aAAiB,EAAA;AAAA,cACjB,GAAK,EAAA,cAAA;AAAA,cACL,SAAA;AAAA,cACA,GAAG,kBAAmB,CAAA,KAAA;AAAA,aACvB,CAAA;AAAA,WACH,CAAA;AAAA,SACF;AACA,QAAO,OAAA,CAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,YACE,GAAK,EAAA,OAAA;AAAA,YACL,KAAA,EAAO,mBAAsB,GAAA,aAAA,CAAc,OAAQ,CAAA,KAAA;AAAA,YACnD,KAAO,EAAA,SAAA;AAAA,WACT;AAAA,UACA,QAAA;AAAA,SACF,CAAA;AAAA,OACK,MAAA;AACL,QAAA,OAAO,mBAAmB,MAAM,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}