vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 19.5 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/print/index.ts"],"sourcesContent":["import { CSSProperties, Teleport, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, nextTick, ref, h, watch, reactive } from 'vue'\nimport type { VcPrintEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { captureScreenshot } from '@vue-cesium/utils/cesium-helpers'\nimport type { VcTooltipRef, VcBtnRef } from '@vue-cesium/components/ui'\nimport { VcBtn, VcTooltip, VcIcon, VcTooltipProps } from '@vue-cesium/components/ui'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport createPrintView from './createPrintView'\nimport defaultProps from './defaultProps'\nimport printWindow from './printWindow'\nimport { isPlainObject } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n ...commonEmits,\n printEvt: (evt: VcPrintEvt) => true\n}\n\nexport const printProps = defaultProps\nexport default defineComponent({\n name: 'VcPrint',\n props: printProps,\n emits: emits,\n setup(props: VcPrintProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcPrint'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { t } = useLocale()\n const { $services } = commonState\n const rootRef = ref<HTMLElement>(null)\n const tooltipRef = ref<VcTooltipRef>(null)\n const btnRef = ref<VcBtnRef>(null)\n const positionState = usePosition(props, $services)\n const creatingPrintView = ref(false)\n const parentInstance = getVcParentInstance(instance)\n const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n const canRender = ref(hasVcNavigation)\n const rootStyle = reactive<CSSProperties>({})\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 // methods\n instance.createCesiumObject = async () => {\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\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'unmounted',\n target: $(rootRef)\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 if (!hasVcNavigation) {\n const side = positionState.attach.value\n const btnTarget = $(btnRef)?.$el\n if (btnTarget !== void 0) {\n // const clientRect = btnTarget.getBoundingClientRect()\n // css.width = `${clientRect.width}px`\n // css.height = `${clientRect.height}px`\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 }\n\n Object.assign(rootStyle, css)\n }\n\n const onHandleClick = () => {\n $(tooltipRef)?.hide()\n\n const { viewer } = $services\n captureScreenshot(viewer).then(imgSrc => {\n if (props.downloadAutomatically) {\n const link = document.createElement('a')\n link.download = props.screenshotName || t('vc.navigation.print.screenshot')\n link.style.display = 'none'\n link.href = imgSrc\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n\n if (props.printAutomatically || props.showPrintView) {\n if (props.showPrintView) {\n showPrintView(imgSrc)\n } else if (props.printAutomatically) {\n print(imgSrc)\n }\n }\n\n const listener = getInstanceListener(instance, 'printEvt')\n listener &&\n ctx.emit('printEvt', {\n type: 'capture',\n image: imgSrc,\n status: 'end'\n })\n })\n }\n\n const print = image => {\n create(true, true, image)\n }\n\n const showPrintView = image => {\n create(false, false, image)\n }\n\n const create = (hidden, printAutomatically, image) => {\n creatingPrintView.value = true\n let iframe\n if (hidden) {\n iframe = document.createElement('iframe')\n document.body.appendChild(iframe)\n }\n\n const { viewer } = $services\n\n createPrintView({\n image,\n showCredit: props.showCredit,\n credits: getCredits(viewer),\n printWindow: iframe ? iframe.contentWindow : undefined,\n title: t('vc.navigation.print.printViewTitle'),\n readyCallback: windowToPrint => {\n if (printAutomatically) {\n printWindow(windowToPrint)\n .catch(e => {\n commonState.logger.warn(e)\n })\n .then(() => {\n if (iframe) {\n document.body.removeChild(iframe)\n }\n if (hidden) {\n creatingPrintView.value = false\n }\n })\n }\n },\n closeCallback: windowToPrint => {\n if (hidden) {\n creatingPrintView.value = false\n }\n }\n })\n\n if (!hidden) {\n creatingPrintView.value = false\n }\n }\n\n const getCredits = viewer => {\n const credits = viewer.scene.frameState.creditDisplay._currentFrameCredits.screenCredits.values.concat(\n viewer.scene.frameState.creditDisplay._currentFrameCredits.lightboxCredits.values\n )\n return credits.map(credit => credit.html)\n }\n\n const onTooltipBeforeShow = e => {\n if (creatingPrintView.value) {\n e.cancel = true\n }\n }\n\n return () => {\n if (canRender.value) {\n const inner: Array<VNode> = []\n inner.push(\n h(VcIcon, {\n name: props.icon,\n size: props.size\n })\n )\n\n inner.push(h('div', null, props.label))\n if (isPlainObject(props.tooltip)) {\n inner.push(\n h(\n VcTooltip,\n {\n ref: tooltipRef,\n onBeforeShow: onTooltipBeforeShow,\n ...props.tooltip\n },\n () => h('strong', null, (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.print.printTip'))\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n const child = [\n h(\n VcBtn,\n {\n ref: btnRef,\n size: props.size,\n disabled: creatingPrintView.value,\n flat: props.flat,\n stack: props.stack,\n round: props.round,\n style: { color: props.color, background: props.background },\n dense: true,\n onClick: onHandleClick\n },\n () => inner\n )\n ]\n\n const renderContent = h(\n 'div',\n {\n ref: rootRef,\n class: `vc-print ${positionState.classes.value} ${props.customClass}`,\n style: rootStyle\n },\n child\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 VcPrintEmits = typeof emits\nexport type VcPrintProps = {\n /**\n * Specify the position of the VcPrint.\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 VcPrint horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify whether to display the copyright information of the loaded data when printing pictures.\n * Default value: true\n */\n showCredit?: boolean\n /**\n * Specify whether to print automatically. Need to set showPrintView to false.\n * Default value: false\n */\n printAutomatically?: boolean\n /**\n * Specify whether to display the print preview.\n * Default value: true\n */\n showPrintView?: boolean\n /**\n * Specify whether to download the printed pictures.\n * Default value: false\n */\n downloadAutomatically?: boolean\n /**\n * Specify the icon of the VcPrint.\n * Default value: vc-icons-geolocation\n */\n icon?: string\n /**\n * Specify the size of the VcPrint.\n * Default value: 24px\n */\n size?: string\n /**\n * Specify the css color of the VcPrint.\n * Default value: #3f4854\n */\n color?: string\n /**\n * Specify the css background of the VcPrint.\n * Default value: #fff\n */\n background?: string\n /**\n * Makes a circle shaped VcPrint.\n */\n round?: boolean\n /**\n * Use 'flat' design.\n */\n flat?: boolean\n /**\n * The text that will be shown on the VcPrint.\n */\n label?: string\n /**\n * Stack icon and label vertically instead of on same line.\n */\n stack?: boolean\n /**\n * The tooltip parameter.\n */\n tooltip?: false | VcTooltipProps\n /**\n * The screenshot name.\n */\n screenshotName?: string\n /**\n * Specify the customClass of the vc-print.\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 VcPrint is loaded.\n * @param instance\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcPrint 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 VcPrint is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the print button is clicked.\n */\n onPrintEvt?: (evt: VcPrintEvt) => void\n}\n\nexport type VcPrintRef = VcComponentPublicInstance<VcPrintProps>\n"],"names":["defaultProps","_a"],"mappings":"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"}