UNPKG

vue-cesium

Version:
1 lines 11.6 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/primitive-collections/polyline-collection/index.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, VNode, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollections } from '@vue-cesium/composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { modelMatrix, debugShowBoundingVolume, show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\nimport { VcPolylineProps } from '../polyline'\n\nconst polylineCollectionProps = {\n ...modelMatrix,\n ...debugShowBoundingVolume,\n ...show,\n ...enableMouseEvent,\n polylines: {\n type: Array as PropType<Array<VcPolylineProps>>,\n default: () => []\n }\n}\nexport default defineComponent({\n name: 'VcCollectionPolyline',\n props: polylineCollectionProps,\n emits: primitiveCollectionEmits,\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'PolylineCollection'\n const primitiveCollectionsState = usePrimitiveCollections(props, ctx, instance)\n\n if (primitiveCollectionsState === void 0) {\n return\n }\n // watcher\n instance.alreadyListening.push('polylines')\n let unwatchFns: Array<WatchStopHandle> = []\n unwatchFns.push(\n watch(\n () => cloneDeep(props.polylines),\n (newVal, oldVal) => {\n if (!instance.mounted) {\n return\n }\n const polylineCollection = instance.cesiumObject as Cesium.PolylineCollection\n\n if (newVal.length === oldVal.length) {\n // 视为修改操作\n // Treated as modified\n const modifies: Array<any> = []\n for (let i = 0; i < newVal.length; i++) {\n const options = newVal[i]\n const oldOptions = oldVal[i]\n\n if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n modifies.push({\n newOptions: options,\n oldOptions: oldOptions\n })\n }\n }\n\n modifies.forEach(modify => {\n const modifyPolyline = polylineCollection._polylines.find(v => v.id === modify.oldOptions.id)\n modifyPolyline &&\n Object.keys(modify.newOptions).forEach(prop => {\n if (modify.oldOptions[prop] !== modify.newOptions[prop]) {\n modifyPolyline[prop] = primitiveCollectionsState.transformProp(prop, modify.newOptions[prop])\n }\n })\n })\n } else {\n const addeds: any = differenceBy(newVal, oldVal, 'id')\n const deletes: any = differenceBy(oldVal, newVal, 'id')\n const deletePolylines: Array<Cesium.Polyline> = []\n for (let i = 0; i < deletes.length; i++) {\n const deletePolyline = polylineCollection._polylines.find(v => v.id === deletes[i].id)\n deletePolyline && deletePolylines.push(deletePolyline)\n }\n\n deletePolylines.forEach(v => {\n polylineCollection.remove(v)\n })\n\n addPolylines(polylineCollection, addeds)\n }\n },\n {\n deep: true\n }\n )\n )\n // methods\n const addPolylines = (polylineCollection: Cesium.PolylineCollection, polylines) => {\n for (let i = 0; i < polylines.length; i++) {\n const polylineOptions = polylines[i] as Cesium.Polyline\n polylineOptions.id = Cesium.defined(polylineOptions.id) ? polylineOptions.id : Cesium.createGuid()\n const polylineOptionsTransform = primitiveCollectionsState.transformProps(polylineOptions)\n const polyline = polylineCollection.add(polylineOptionsTransform)\n addCustomProperty(polyline, polylineOptionsTransform)\n }\n }\n instance.createCesiumObject = async () => {\n const options = primitiveCollectionsState.transformProps(props)\n const polylineCollection = new Cesium.PolylineCollection(options)\n\n addPolylines(polylineCollection, props.polylines)\n return polylineCollection\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n const name = instance.proxy?.$options.name || ''\n return () =>\n ctx.slots.default\n ? h(\n 'i',\n {\n class: kebabCase(name),\n style: { display: 'none !important' }\n },\n hSlot(ctx.slots.default)\n )\n : createCommentVNode(kebabCase(name))\n }\n})\n\nexport type VcCollectionPolylineProps = {\n /**\n * Determines if the polylines in the collection will be shown.\n * Default Value: true\n */\n show?: boolean\n /**\n * The 4x4 transformation matrix that transforms each polyline from model to world coordinates.\n */\n modelMatrix?: Cesium.Matrix4\n /**\n * For debugging only. Determines if this primitive's commands' bounding spheres are shown.\n * Default Value: false\n */\n debugShowBoundingVolume?: boolean\n /**\n * Specifies whether to respond to mouse pick events.\n * Default Value: true\n */\n enableMouseEvent?: boolean\n /**\n * Specify an array of polylines collections. The structure of the array object is the same as the attribute of the [`vc-polyline`](https://zouyaoji.top/vue-cesium/#/en-US/component/primitives/vc-collection-polyline#vcpolyline-props) component.\n */\n polylines?: Array<VcPolylineProps>\n /**\n * Triggers before the VcCollectionPolyline is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcCollectionPolyline 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 VcCollectionPolyline is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the mouse is pressed on this collection.\n */\n onMousedown?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse bounces up on this collection.\n */\n onMouseup?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse clicks on this collection.\n */\n onClick?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse clicks outside this collection.\n */\n onClickout?: (evt: VcPickEvent) => void\n /**\n * Triggers when the left mouse button double-clicks this collection.\n */\n onDblclick?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse moves on this collection.\n */\n onMousemove?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse moves over to this collection.\n */\n onMouseover?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse moves out of this collection.\n */\n onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcCollectionPolylineRef = VcComponentPublicInstance<VcCollectionPolylineProps>\n\nexport interface VcCollectionPolylineSlots {\n /**\n * Slot for vc-polyline.\n */\n default: () => VNode[]\n}\n"],"names":[],"mappings":"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"}