@dspacev-bundle/vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 28.1 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/navigation/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-11-05 00:39:45\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\navigation\\index.ts\n */\nimport { VNode, CSSProperties, Teleport } from 'vue'\nimport { defineComponent, getCurrentInstance, watch, nextTick, ref, reactive, h, createCommentVNode, computed } from 'vue'\nimport type {\n VcCompassEvt,\n VcDistanceLegendEvt,\n VcLocationEvt,\n VcPrintEvt,\n VcStatusBarEvt,\n VcComponentInternalInstance,\n VcZoomEvt,\n VcReadyObject,\n VcComponentPublicInstance\n} from '@vue-cesium/utils/types'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { defaultProps, defaultOptions, VcNavigationOtherOpts } from './defaultProps'\nimport { useCommon } from '@vue-cesium/composables'\nimport VcDistanceLegend from '../distance-legend'\nimport VcStatusBar from '../status-bar'\nimport VcZoomControl from '../zoom-control'\nimport VcMyLocation from '../my-location'\nimport VcCompass from '../compass'\nimport VcPrint from '../print'\nimport type { VcPrintProps, VcPrintRef } from '../print'\nimport type { VcCompassProps, VcCompassRef } from '../compass'\nimport type { VcMyLocationProps, VcMyLocationRef } from '../my-location'\nimport type { VcZoomControlProps, VcZoomControlRef } from '../zoom-control'\nimport type { VcStatusBarRef } from '../status-bar'\nimport type { VcDistanceLegendRef } from '../distance-legend'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n ...commonEmits,\n zoomEvt: (evt: VcZoomEvt) => true,\n compassEvt: (evt: VcCompassEvt) => true,\n locationEvt: (evt: VcLocationEvt) => true,\n printEvt: (evt: VcPrintEvt) => true,\n statusBarEvt: (evt: VcStatusBarEvt) => true,\n distanceLegendEvt: (evt: VcDistanceLegendEvt) => true\n}\nexport const navigationProps = defaultProps\nexport default defineComponent({\n name: 'VcNavigation',\n inheritAttrs: false,\n props: navigationProps,\n emits: emits,\n setup(props: VcNavigationProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcNavigation'\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 positionStateOther = usePosition(props.otherOpts || { position: 'bottom-right' }, $services)\n const rootRef = ref<HTMLElement>(null)\n const secondRootRef = ref<HTMLElement>(null)\n const compassRef = ref<VcCompassRef>(null)\n const zoomControlRef = ref<VcZoomControlRef>(null)\n const printRef = ref<VcPrintRef>(null)\n const myLocationRef = ref<VcMyLocationRef>(null)\n const statusBarRef = ref<VcStatusBarRef>(null)\n const distanceLegendRef = ref<VcDistanceLegendRef>(null)\n const rootStyle = reactive<CSSProperties>({})\n const secondRootStyle = reactive<CSSProperties>({})\n const { emit } = ctx\n\n // watch\n watch(\n () => props,\n () => {\n nextTick(() => {\n updateRootStyle()\n $(compassRef)?.reload()\n $(zoomControlRef)?.reload()\n $(myLocationRef)?.reload()\n $(printRef)?.reload()\n $(statusBarRef)?.reload()\n $(distanceLegendRef)?.reload()\n })\n },\n {\n deep: true\n }\n )\n\n const compassOptions = computed(() => Object.assign({}, defaultOptions.compassOpts, props.compassOpts))\n const zoomControlOptions = computed<VcZoomControlProps>(() => Object.assign({}, defaultOptions.zoomOpts, props.zoomOpts))\n const printViewOptions = computed<VcPrintProps>(() => Object.assign({}, defaultOptions.printOpts, props.printOpts))\n const myLocationOptions = computed<false | VcMyLocationProps>(() => Object.assign({}, defaultOptions.locationOpts, props.locationOpts))\n const otherControlOptions = computed(() => Object.assign({}, defaultOptions.otherOpts, props.otherOpts))\n\n // methods\n const onCompassEvt = (evt: VcCompassEvt) => {\n const listener = getInstanceListener(instance, 'compassEvt')\n listener && emit('compassEvt', evt)\n }\n const onZoomEvt = (evt: VcZoomEvt) => {\n const listener = getInstanceListener(instance, 'zoomEvt')\n listener && emit('zoomEvt', evt)\n }\n const onPrintEvt = (evt: VcPrintEvt) => {\n const listener = getInstanceListener(instance, 'printEvt')\n listener && emit('printEvt', evt)\n }\n const onLocationEvt = (evt: VcLocationEvt) => {\n const listener = getInstanceListener(instance, 'locationEvt')\n listener && emit('locationEvt', evt)\n }\n const onStatusBarEvt = (evt: VcStatusBarEvt) => {\n const listener = getInstanceListener(instance, 'statusBarEvt')\n listener && emit('statusBarEvt', evt)\n }\n const onDistanceLegendEvt = (evt: VcDistanceLegendEvt) => {\n const listener = getInstanceListener(instance, 'distanceLegendEvt')\n listener && emit('distanceLegendEvt', evt)\n }\n\n instance.createCesiumObject = async () => {\n const { viewer } = $services\n viewer.viewerWidgetResized?.addEventListener(onViewerWidgetResized)\n return [rootRef, secondRootRef]\n }\n\n instance.mount = async () => {\n canRender.value = true\n nextTick(() => {\n updateRootStyle()\n })\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 canRender.value = false\n const { viewer } = $services\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 compassTarget = $(compassRef)?.$el as HTMLElement\n let height = 0\n let marginX = 0\n if (compassTarget !== void 0 && compassTarget.nodeName !== '#comment') {\n const margin = getComputedStyle(compassTarget.parentNode as Element).margin\n marginX = parseInt(margin)\n height += compassTarget.getBoundingClientRect().height + marginX * 2\n }\n const zoomControlTarget = $(zoomControlRef)?.$el as HTMLElement\n if (zoomControlTarget !== void 0 && zoomControlTarget.nodeName !== '#comment') {\n height += zoomControlTarget.getBoundingClientRect().height + marginX * 2\n }\n const printTarget = $(printRef)?.$el as HTMLElement\n if (printTarget !== void 0 && printTarget.nodeName !== '#comment') {\n height += printTarget.getBoundingClientRect().height + marginX * 2\n }\n const myLocationTarget = $(myLocationRef)?.$el as HTMLElement\n if (myLocationTarget !== void 0 && myLocationTarget.nodeName !== '#comment') {\n height += myLocationTarget.getBoundingClientRect().height + marginX * 2\n }\n\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 (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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\n Object.assign(rootStyle, css, { height: `${height}px` })\n\n const cssSecondRoot: CSSProperties = positionStateOther.style.value\n const sideSecondRoot = positionStateOther.attach.value\n secondRootStyle.left = cssSecondRoot.left\n secondRootStyle.top = cssSecondRoot.top\n secondRootStyle.transform = cssSecondRoot.transform\n\n if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\n if ((sideSecondRoot.bottom || sideSecondRoot.top) && !sideSecondRoot.left && !sideSecondRoot.right) {\n cssSecondRoot.left = '50%'\n cssSecondRoot.transform = 'translate(-50%, 0)'\n }\n\n if ((sideSecondRoot.left || sideSecondRoot.right) && !sideSecondRoot.top && !sideSecondRoot.bottom) {\n cssSecondRoot.top = '50%'\n cssSecondRoot.transform = 'translate(0, -50%)'\n }\n }\n\n let height2 = 0\n const statusBarRefTarget = $(statusBarRef)?.$el as HTMLElement\n if (statusBarRefTarget !== void 0 && statusBarRefTarget.nodeName !== '#comment') {\n height2 += statusBarRefTarget.getBoundingClientRect().height\n }\n Object.assign(secondRootStyle, cssSecondRoot, { height: `${height2}px` })\n }\n\n return () => {\n if (canRender.value) {\n const inner: VNode[] = []\n if (compassOptions.value && props.compassOpts !== false) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-navigation-control'\n },\n [\n h(VcCompass, {\n ref: compassRef,\n ...compassOptions.value,\n onCompassEvt\n })\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n if (zoomControlOptions.value && props.zoomOpts !== false) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-navigation-control'\n },\n [\n h(VcZoomControl, {\n ref: zoomControlRef,\n ...zoomControlOptions.value,\n onZoomEvt\n })\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n if (printViewOptions.value && props.printOpts !== false) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-navigation-control'\n },\n [\n h(VcPrint, {\n ref: printRef,\n ...printViewOptions.value,\n onPrintEvt\n })\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n if (myLocationOptions.value && props.locationOpts !== false) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-navigation-control'\n },\n [\n h(VcMyLocation, {\n ref: myLocationRef,\n ...myLocationOptions.value,\n onLocationEvt\n })\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n let children = [h('div', { class: 'vc-navigation-controls' }, inner)]\n children = hMergeSlot(ctx.slots.default, children)\n\n const root: VNode[] = []\n const renderNavigationContent = h(\n 'div',\n {\n ref: rootRef,\n class: `vc-navigation ${positionState.classes.value} ${props.customClass}`,\n style: rootStyle\n },\n children\n )\n\n if (props.teleportToViewer) {\n root.push(h(Teleport, { to: $services.viewer._element }, renderNavigationContent))\n } else {\n root.push(renderNavigationContent)\n }\n\n if (props.otherOpts !== false) {\n const renderOtherContent = h(\n 'div',\n {\n ref: secondRootRef,\n class: 'vc-location-other-controls ' + positionStateOther.classes.value,\n style: secondRootStyle\n },\n [\n h(VcStatusBar, {\n ref: statusBarRef,\n ...otherControlOptions.value.statusBarOpts,\n onStatusBarEvt\n }),\n h(VcDistanceLegend, {\n ref: distanceLegendRef,\n ...otherControlOptions.value.distancelegendOpts,\n onDistanceLegendEvt\n })\n ]\n )\n if (props.teleportToViewer) {\n root.push(h(Teleport, { to: $services.viewer._element }, renderOtherContent))\n } else {\n root.push(renderOtherContent)\n }\n }\n return root\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\nexport type VcNavigationEmits = typeof emits\nexport interface VcNavigationProps {\n /**\n * Specify the position of the VcNavigation.\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 VcNavigation 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 | VcCompassProps\n /**\n * Specify the zoom control options of the component. false means no display.\n */\n zoomOpts?: false | VcZoomControlProps\n /**\n * Specify the print button options of the component. false means no display.\n */\n printOpts?: false | VcPrintProps\n /**\n * Specify the location button options of the component. false means no display.\n */\n locationOpts?: false | VcMyLocationProps\n /**\n * Specify the other controls(status bar & distance legend) options of the component. false means no display.\n */\n otherOpts?: false | VcNavigationOtherOpts\n /**\n * Specify the customClass of the vc-navigation.\n */\n customClass?: string\n /**\n * Specify whether to add to the cesium-viewer node.\n * Default value: true\n */\n teleportToViewer?: boolean\n /**\n * Triggers before the VcNavigation is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcNavigation 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 VcNavigation 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 * Triggers when the positioning button is clicked.\n */\n onLocationEvt?: (evt: VcLocationEvt) => void\n /**\n * Triggers when the print button is clicked.\n */\n onPrintEvt?: (evt: VcPrintEvt) => void\n /**\n * Triggers when the information changed.\n */\n onStatusBarEvt?: (evt: VcStatusBarEvt) => void\n /**\n * Triggers when the distance scale changed.\n */\n onDistanceLegendEvt?: (evt: VcDistanceLegendEvt) => void\n}\n\nexport interface VcNavigationSlots {\n /**\n * Suggestion: VcCompass, VcZoomControl, VcPrint, VcMyLocation, VcStatusBar, VcDistanceLegend\n */\n default: () => VNode[]\n}\n\nexport type VcNavigationRef = VcComponentPublicInstance<VcNavigationProps>\n"],"names":["VcCompass","VcZoomControl","VcPrint","VcMyLocation","VcStatusBar","VcDistanceLegend"],"mappings":"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"}