{"version":3,"file":"dep-1cdd07f9.mjs","sources":["../../src/base-map/useLayerManager/useModelLayer.ts"],"sourcesContent":["import useLayerListeners from './useLayerListeners';\nimport { Ref, WatchStopHandle } from 'vue';\nimport omit from 'lodash/omit';\nimport { LAYER_CONFIG_OMIT_PROP } from '../constants';\n\nexport default function useModelLayer(mapInstance: LooseObject, layerInfo: Ref<MapLayer<ModelLayerConfig>>) {\n  if (!layerInfo.value || !layerInfo.value.config || !TMap.model?.GLTFModel) return;\n\n  const { id: layerId } = layerInfo.value;\n  const { src } = toRefs(reactive(layerInfo.value.config));\n  const options = omit(layerInfo.value.config, [...LAYER_CONFIG_OMIT_PROP]);\n\n  let unwatchList: WatchStopHandle[] | null = [];\n\n  if (!src.value) {\n    unwatchList.push(watch(() => layerInfo.value.config.src, () => {\n      unwatchList?.forEach(unwatch => unwatch());\n      unwatchList = null;\n      useModelLayer(mapInstance, layerInfo);\n    }));\n    return;\n  }\n\n  const modelLayer = new TMap.model.GLTFModel({\n    id: layerId,\n    map: mapInstance,\n    url: src.value,\n    ...options,\n    position: new TMap.LatLng(options.position?.lat, options.position?.lng),\n  });\n\n  Object.keys(options).forEach((key) => {\n    unwatchList?.push(watch(() => layerInfo.value.config[key], (newVal) => {\n      if (key === 'src') {\n        modelLayer?.unmount();\n        useModelLayer(mapInstance, layerInfo);\n      } else {\n        modelOptionsHandlers[key](newVal, modelLayer);\n      }\n    }, { deep: true }));\n  });\n\n  // 用户传入的事件回调在这里处理\n  unwatchList.push(watchEffect(() => {\n    useLayerListeners(modelLayer, [\n      { eventName: 'click', callbackList: layerInfo.value.config.onClick },\n      { eventName: 'loaded', callbackList: layerInfo.value.config.onLoaded },\n      { eventName: 'load_failed', callbackList: layerInfo.value.config.onLoadFailed },\n    ]);\n  }));\n\n  modelLayer.unmount = (): void => {\n    modelLayer?.destroy();\n    unwatchList?.forEach(unwatch => unwatch());\n    unwatchList = null;\n  };\n\n  return modelLayer;\n}\n\nconst modelOptionsHandlers = {\n  position(val: LatLng, layerInstance: LooseObject): void {\n    layerInstance.setPosition(new TMap.LatLng(val.lat, val.lng));\n  },\n  anchor(val: ModelLayerConfig['anchor'], layerInstance: LooseObject): void {\n    layerInstance.setAnchor(val);\n  },\n  rotation(val: ModelLayerConfig['rotation'], layerInstance: LooseObject): void {\n    layerInstance.setRotation(val);\n  },\n  scale(val: number, layerInstance: LooseObject): void {\n    layerInstance.setScale(val);\n  },\n};\n"],"names":["useModelLayer","mapInstance","layerInfo","value","config","TMap","model","GLTFModel","id","layerId","src","toRefs","reactive","options","omit","LAYER_CONFIG_OMIT_PROP","unwatchList","push","watch","forEach","unwatch","modelLayer","_objectSpread","map","url","position","LatLng","lat","lng","Object","keys","key","newVal","unmount","modelOptionsHandlers","deep","watchEffect","useLayerListeners","eventName","callbackList","onClick","onLoaded","onLoadFailed","destroy","val","layerInstance","setPosition","anchor","setAnchor","rotation","setRotation","scale","setScale"],"mappings":"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"}