{"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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"}