UNPKG

vue-cesium

Version:
1 lines 12.9 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/selection-indicator/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-09-25 16:19:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\selection-indicator\\index.ts\n */\nimport type { PropType, Ref } from 'vue'\nimport { useCommon } from '@vue-cesium/composables'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, h } from 'vue'\nimport useSelectionIndicatior from './use-selection-indicatior'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport type Feature from './Feature'\nimport type PickedFeatures from './PickedFeatures'\n\nexport const selectionIndicatorProps = {\n show: {\n type: Boolean,\n default: true\n },\n width: {\n type: Number,\n default: 50\n },\n height: {\n type: Number,\n default: 50\n },\n allowFeatureInfoRequests: {\n type: Boolean,\n default: true\n },\n includeImageryIds: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n excludeImageryIds: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n limit: {\n type: Number,\n default: 25\n }\n}\nconst emits = {\n ...commonEmits,\n pickEvt: (evt: Feature | Cesium.Entity) => true\n}\nexport default defineComponent({\n name: 'VcSelectionIndicator',\n props: selectionIndicatorProps,\n emits: emits,\n setup(props: VcSelectionIndicatorProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcSelectionIndicator'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { $services } = commonState\n\n let pickScreenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n const useSelectionIndicatiorState = useSelectionIndicatior(instance, props, $services)\n\n // methods\n instance.createCesiumObject = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element\n viewerElement.appendChild($(useSelectionIndicatiorState.rootRef))\n return $(useSelectionIndicatiorState.rootRef)\n }\n\n instance.mount = async () => {\n const { viewer } = $services\n const { ScreenSpaceEventHandler, ScreenSpaceEventType } = Cesium\n\n pickScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n pickScreenSpaceEventHandler.setInputAction(movement => {\n useSelectionIndicatiorState.pickFromScreenPosition(movement.position)\n }, ScreenSpaceEventType.LEFT_CLICK)\n\n viewer.scene.postRender.addEventListener(useSelectionIndicatiorState.onPostRender)\n\n return true\n }\n\n instance.unmount = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element\n viewerElement.contains($(useSelectionIndicatiorState.rootRef)) && viewerElement.removeChild($(useSelectionIndicatiorState.rootRef))\n\n viewer.scene.postRender.removeEventListener(useSelectionIndicatiorState.onPostRender)\n\n pickScreenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)\n pickScreenSpaceEventHandler.destroy()\n ;(pickScreenSpaceEventHandler as any) = undefined\n\n return true\n }\n\n return () => {\n return h(\n 'div',\n {\n ref: useSelectionIndicatiorState.rootRef,\n class: 'vc-selection-indicator',\n style: useSelectionIndicatiorState.rootStyle\n },\n h('img', {\n src: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHdpZHRoPSIxNzZweCIgaGVpZ2h0PSIxNzZweCIgdmlld0JveD0iMCAwIDE3NiAxNzYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c2tldGNoPSJodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2gvbnMiPg0KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggMy4xLjEgKDg3NjEpIC0gaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoIC0tPg0KICAgIDx0aXRsZT5Mb2NhdGlvblRhcmdldCArIFBhdGg8L3RpdGxlPg0KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPg0KICAgIDxkZWZzPg0KICAgICAgICA8ZmlsdGVyIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIyMDAlIiBoZWlnaHQ9IjIwMCUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0xIj4NCiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjAiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+DQogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+DQogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC41MjY0NDY0NDUgMCIgaW49InNoYWRvd0JsdXJPdXRlcjEiIHR5cGU9Im1hdHJpeCIgcmVzdWx0PSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4NCiAgICAgICAgICAgIDxmZU1lcmdlPg0KICAgICAgICAgICAgICAgIDxmZU1lcmdlTm9kZSBpbj0ic2hhZG93TWF0cml4T3V0ZXIxIj48L2ZlTWVyZ2VOb2RlPg0KICAgICAgICAgICAgICAgIDxmZU1lcmdlTm9kZSBpbj0iU291cmNlR3JhcGhpYyI+PC9mZU1lcmdlTm9kZT4NCiAgICAgICAgICAgIDwvZmVNZXJnZT4NCiAgICAgICAgPC9maWx0ZXI+DQogICAgICAgIDxmaWx0ZXIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjIwMCUiIGhlaWdodD0iMjAwJSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPg0KICAgICAgICAgICAgPGZlT2Zmc2V0IGR4PSIwIiBkeT0iMCIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4NCiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4NCiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjUyNjQ0NjQ0NSAwIiBpbj0ic2hhZG93Qmx1ck91dGVyMSIgdHlwZT0ibWF0cml4IiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZUNvbG9yTWF0cml4Pg0KICAgICAgICAgICAgPGZlTWVyZ2U+DQogICAgICAgICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVNZXJnZU5vZGU+DQogICAgICAgICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VHcmFwaGljIj48L2ZlTWVyZ2VOb2RlPg0KICAgICAgICAgICAgPC9mZU1lcmdlPg0KICAgICAgICA8L2ZpbHRlcj4NCiAgICA8L2RlZnM+DQogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+DQogICAgICAgIDxnIGlkPSJBcnRib2FyZC0xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxLjAwMDAwMCwgLTQ5OC4wMDAwMDApIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZT0iI0ZGRkZGRiI+DQogICAgICAgICAgICA8ZyBpZD0iTG9jYXRpb25UYXJnZXQtKy1QYXRoIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2OTkuMDAwMDAwLCA1MDYuMDAwMDAwKSI+DQogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgwLDE0NCBDMTE1LjM0NjIyNCwxNDQgMTQ0LDExNS4zNDYyMjQgMTQ0LDgwIEMxNDQsNDQuNjUzNzc2IDExNS4zNDYyMjQsMTYgODAsMTYgQzQ0LjY1Mzc3NiwxNiAxNiw0NC42NTM3NzYgMTYsODAgQzE2LDExNS4zNDYyMjQgNDQuNjUzNzc2LDE0NCA4MCwxNDQgWiBNMTYwLDgwIEwxNDQsODAgTTE2LDgwIEwwLDgwIE03OS42LC0wLjQgTDc5LjYsMTUuNiBNNzguOCwxNDQgTDc4LjgsMTYwIiBpZD0iTG9jYXRpb25UYXJnZXQiIHN0cm9rZS13aWR0aD0iNyIgZmlsdGVyPSJ1cmwoI2ZpbHRlci0xKSI+PC9wYXRoPg0KICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9IlBhdGgiIHN0cm9rZS13aWR0aD0iMiIgb3BhY2l0eT0iMC4yNTIyMTU0ODUiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIGN4PSI4MCIgY3k9IjgwIiByPSI2Ij48L2NpcmNsZT4NCiAgICAgICAgICAgIDwvZz4NCiAgICAgICAgPC9nPg0KICAgIDwvZz4NCjwvc3ZnPg==',\n width: props.width,\n height: props.height\n })\n )\n }\n }\n})\n\nexport type VcSelectionIndicatorEmits = typeof emits\nexport interface VcSelectionIndicatorProps {\n /**\n * Specify whether the selection indicator is visible.\n * Default value: true\n */\n show?: boolean\n /**\n * Specify the width of the selection indicator.\n * Default value: 50\n */\n width?: number\n /**\n * Specify the height of the selection indicator.\n * Default value: 50\n */\n height?: number\n /**\n * Asynchronously determines the imagery layer features that are intersected by a pick ray.\n * Default value: true\n */\n allowFeatureInfoRequests?: boolean\n /**\n * Specify that picking layers only work within the contained id array.\n */\n includeImageryIds?: string[]\n /**\n * Specify an array of ids to ignore when picking up an imagerylayer.\n */\n excludeImageryIds?: string[]\n /**\n * Specify the maximum number of picked objects.\n * Default value: 25\n */\n limit?: number\n /**\n * Triggers before the VcSelectionIndicator is loaded.\n * @param instance\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcSelectionIndicator 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 VcSelectionIndicator is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport interface VcSelectionIndicatorRef extends VcComponentPublicInstance<VcSelectionIndicatorProps> {\n /**\n * A function that converts the world position of an object to a screen space position.\n */\n computeScreenSpacePosition: (position: Cesium.Cartesian3, result: Cesium.Cartesian2) => Cesium.Cartesian2\n /**\n * Updates the view of the selection indicator to match the position and content properties of the view model. This function should be called as part of the render loop.\n */\n update: () => void\n /**\n * Animate the indicator to draw attention to the selection.\n */\n animateAppear: () => void\n /**\n * Animate the indicator to release the selection.\n */\n animateDepart: () => void\n /**\n * Get the picked features.\n */\n getPickedFeatures: () => PickedFeatures\n /**\n * Get or set the selected feature.\n */\n selectedFeature: Feature | Cesium.Entity\n /**\n * Gets or sets the world position of the object for which to display the selection indicator.\n */\n position: Ref<Cesium.Cartesian3>\n}\n"],"names":[],"mappings":"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"}