UNPKG

vue-cesium

Version:
1 lines 22.3 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/zoom-control/index.ts"],"sourcesContent":["import { CSSProperties, Teleport, VNode } from 'vue'\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, createCommentVNode, h, reactive, watch } from 'vue'\nimport type {\n VcCamera,\n VcComponentInternalInstance,\n VcZoomEvt,\n VcBtnTooltipProps,\n VcReadyObject,\n VcComponentPublicInstance\n} from '@vue-cesium/utils/types'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { $, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { setViewerCamera } from '@vue-cesium/utils/cesium-helpers'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { defaultProps, defaultOptions } from './defaultProps'\nimport type { VcBtnRef } from '@vue-cesium/components/ui'\nimport { VcBtn, VcIcon, VcTooltip } from '@vue-cesium/components/ui'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport useZoomControl from './use-zoom-control'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n ...commonEmits,\n zoomEvt: (evt: VcZoomEvt) => true\n}\nexport const zoomControlProps = defaultProps\nexport default defineComponent({\n name: 'VcZoomControl',\n props: zoomControlProps,\n emits: emits,\n setup(props: VcZoomControlProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcZoomControl'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === undefined) {\n return\n }\n const { t } = useLocale()\n const { $services } = commonState\n const zoomControlState = useZoomControl(props, ctx, instance, $services)\n const positionState = usePosition(props, $services)\n const rootRef = ref<HTMLElement>(null)\n const zoomInRef = ref<VcBtnRef>(null)\n const zoomResetRef = ref<VcBtnRef>(null)\n const zoomOutRef = ref<VcBtnRef>(null)\n const parentInstance = getVcParentInstance(instance)\n const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n const canRender = ref(hasVcNavigation)\n const rootStyle = reactive<CSSProperties>({})\n\n // watch\n watch(\n () => props,\n val => {\n nextTick(() => {\n if (!instance.mounted) {\n return\n }\n updateRootStyle()\n })\n },\n {\n deep: true\n }\n )\n // computed\n const zoomOutOptions = computed(() => Object.assign({}, defaultOptions.zoomOutOptions, props.zoomOutOptions))\n const zoomInOptions = computed(() => Object.assign({}, defaultOptions.zoomInOptions, props.zoomInOptions))\n const zoomResetOptions = computed(() => Object.assign({}, defaultOptions.zoomResetOptions, props.zoomResetOptions))\n // methods\n instance.createCesiumObject = async () => {\n const { viewer } = $services\n if (props.overrideViewerCamera) {\n const resetView: VcCamera = props.defaultResetView\n setViewerCamera(viewer, resetView)\n }\n\n return rootRef\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 instance.unmount = async () => {\n canRender.value = false\n const { viewer } = $services\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'unmounted',\n target: $(rootRef)\n })\n\n return true\n }\n\n const updateRootStyle = () => {\n const css: CSSProperties = positionState.style.value\n rootStyle.left = css.left\n rootStyle.top = css.top\n rootStyle.transform = css.transform\n\n css.flexDirection = props.direction === 'vertical' ? 'column' : 'row'\n css.background = props.background\n css.borderRadius = props.borderRadius\n css.border = props.border\n\n if (!hasVcNavigation) {\n const zoomInTarget = $(zoomInRef)?.$el as HTMLElement\n const zoomResetTarget = $(zoomResetRef)?.$el as HTMLElement\n const zoomOutTarget = $(zoomOutRef)?.$el as HTMLElement\n let width = 0\n let height = 0\n\n if (zoomInTarget !== void 0) {\n const zoomInClientRect = zoomInTarget.getBoundingClientRect()\n if (props.direction === 'horizontal') {\n width += zoomInClientRect.width\n height = zoomInClientRect.height > height ? zoomInClientRect.height : height\n } else {\n height += zoomInClientRect.height\n width = zoomInClientRect.width > width ? zoomInClientRect.width : width\n }\n }\n\n if (zoomResetTarget !== void 0) {\n const zoomResetClientRect = zoomResetTarget.getBoundingClientRect()\n if (props.direction === 'horizontal') {\n width += zoomResetClientRect.width\n height = zoomResetClientRect.height > height ? zoomResetClientRect.height : height\n } else {\n height += zoomResetClientRect.height\n width = zoomResetClientRect.width > width ? zoomResetClientRect.width : width\n }\n }\n\n if (zoomOutTarget !== void 0) {\n const zoomOutClientRect = zoomOutTarget.getBoundingClientRect()\n if (props.direction === 'horizontal') {\n width += zoomOutClientRect.width\n height = zoomOutClientRect.height > height ? zoomOutClientRect.height : height\n } else {\n height += zoomOutClientRect.height\n width = zoomOutClientRect.width > width ? zoomOutClientRect.width : width\n }\n }\n\n css.width = `${width + 4}px`\n css.height = `${height + 4}px`\n\n if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\n const side = positionState.attach.value\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)\n }\n\n const getContent = (options: VcBtnTooltipProps, type) => {\n let btnRef\n let tooltipRef\n let tip\n let onClick\n if (type === 'zoomIn') {\n btnRef = zoomInRef\n tooltipRef = zoomControlState.zoomInTooltipRef\n tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomInTip')\n onClick = zoomControlState.zoomIn\n } else if (type === 'zoomOut') {\n btnRef = zoomOutRef\n tooltipRef = zoomControlState.zoomOutTooltipRef\n tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomOutTip')\n onClick = zoomControlState.zoomOut\n } else if (type === 'zoomReset') {\n btnRef = zoomResetRef\n tooltipRef = zoomControlState.resetTooltipRef\n tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomResetTip')\n onClick = zoomControlState.zoomReset\n }\n const inner: Array<VNode> = []\n\n inner.push(\n h(VcIcon, {\n name: options.icon,\n size: options.size\n })\n )\n inner.push(h('div', null, options.label))\n if (options.tooltip) {\n inner.push(\n h(\n VcTooltip,\n {\n ref: tooltipRef,\n ...(options.tooltip as any)\n },\n () => h('strong', null, tip)\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n const content = h(\n VcBtn,\n {\n class: `vc-${kebabCase(type)}`,\n ref: btnRef,\n size: options.size,\n flat: options.flat,\n stack: options.stack,\n round: options.round,\n dense: true,\n style: { color: options.color, background: options.background },\n onClick: onClick\n },\n () => hMergeSlot(ctx.slots.default, inner)\n )\n\n return content\n }\n\n Object.assign(instance.proxy, {\n zoomIn: (e?: MouseEvent) => zoomControlState.zoomIn(e),\n zoomOut: (e?: MouseEvent) => zoomControlState.zoomOut(e),\n zoomReset: (e?: MouseEvent) => zoomControlState.zoomReset(e)\n })\n\n return () => {\n if (canRender.value) {\n const children: Array<VNode> = []\n children.push(h('li', null, getContent(zoomInOptions.value, 'zoomIn')))\n if (props.enableResetButton) {\n children.push(h('li', null, getContent(zoomResetOptions.value, 'zoomReset')))\n } else {\n children.push(createCommentVNode('v-if'))\n }\n children.push(h('li', null, getContent(zoomOutOptions.value, 'zoomOut')))\n\n const renderContent = h(\n 'div',\n {\n ref: rootRef,\n class: `vc-zoom-control ${positionState.classes.value} ${props.customClass}`,\n style: rootStyle\n },\n h(\n 'ul',\n {\n class: 'vc-list'\n },\n children\n )\n )\n return !hasVcNavigation && props.teleportToViewer ? h(Teleport, { to: $services.viewer._element }, renderContent) : renderContent\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\nexport type VcZoomControlEmits = typeof emits\n\nexport type VcZoomControlProps = {\n /**\n * Specify the position of the VcZoomControl.\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 VcZoomControl horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify whether to enable the reset button.\n * Default value: true\n */\n enableResetButton?: boolean\n /**\n * Specify the zoom amount of zoom in and zoom out.\n * Default value: 2\n */\n zoomAmount?: number\n /**\n * Specify the time of the zoom-in and zoom-out process, in seconds.\n * Default value: 0.5\n */\n duration?: number\n /**\n * Specify the time to reset to the default camera position, in seconds.\n * Default value: 1.5\n */\n durationReset?: number\n /**\n * Specify the reset camera view.\n * Default value:\n * {\n * position: {\n * lng: 105,\n * lat: 30,\n * height: 19059568.5\n * }\n * }\n */\n defaultResetView?: VcCamera\n /**\n * Specify whether to override the camera attribute on the vc-viewer during initialization.\n * Default value: false\n */\n overrideViewerCamera?: boolean\n /**\n * Specifies the css background of the VcZoomControl.\n * Default value: #3f4854\n */\n background?: string\n /**\n * Specifies the css border of the VcZoomControl.\n * Default value: solid 1px rgba(255, 255, 255, 0.2)\n */\n border?: string\n /**\n * Specifies the css border radius of the VcZoomControl.\n * Default value: 100px\n */\n borderRadius?: string\n /**\n * Specify the direction of the VcZoomControl.\n * Default value: vertical\n */\n direction?: 'vertical' | 'horizontal'\n /**\n * Specify the zoom in parameters.\n */\n zoomInOptions?: VcBtnTooltipProps\n /**\n * Specify the zoom out parameters.\n */\n zoomOutOptions?: VcBtnTooltipProps\n /**\n * Specify the reset button parameters.\n */\n zoomResetOptions?: VcBtnTooltipProps\n /**\n * Specify the customClass of the vc-zoom-control.\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 VcZoomControl is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcZoomControl 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 VcZoomControl is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * \tTriggers when the VcZoomControl is operated.\n */\n onZoomEvt?: (evt: VcZoomEvt) => void\n}\n\nexport type VcZoomControlRef = VcComponentPublicInstance<VcZoomControlProps>\n"],"names":["_a"],"mappings":"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"}