{"version":3,"file":"dep-fdf15a38.mjs","sources":["../../src/base-map/useLayerManager/useLabelLayer.ts"],"sourcesContent":["import useLayerListeners from './useLayerListeners';\nimport mapValues from 'lodash/mapValues';\nimport omit from 'lodash/omit';\nimport { Ref, WatchStopHandle } from 'vue';\nimport { LAYER_CONFIG_OMIT_PROP } from '../constants';\n\nexport default function useLabelLayer(mapInstance: LooseObject, layerInfo: Ref<MapLayer<LabelLayerConfig>>) {\n  if (!layerInfo.value || !layerInfo.value.config) return;\n\n  const { id: layerId } = layerInfo.value;\n  const { enableCollision } = toRefs(reactive(layerInfo.value.config));\n\n  let labelStyle;\n  let geometries;\n  let unwatchList: WatchStopHandle[] | null = [];\n\n  const labelLayer = new TMap.MultiLabel({\n    id: layerId,\n    enableCollision,\n    map: mapInstance,\n  });\n\n  unwatchList.push(watchEffect(() => {\n    const styleConfig = omit(layerInfo.value.config, LAYER_CONFIG_OMIT_PROP);\n    const styleOption = mapValues(styleConfig, val => toRaw(unref(val)));\n    labelStyle = new TMap.LabelStyle(styleOption);\n    if (labelLayer) labelLayer.setStyles({ labelStyle });\n  }));\n\n  unwatchList.push(watchEffect(() => {\n    if (!Array.isArray(layerInfo.value.config.data)) return;\n    try {\n      geometries = layerInfo.value.config.data.map((geometry: LabelGeometry, index: number) => {\n        const { id, position, rank, content } = geometry;\n        return {\n          id: id ? id : `${index}`,\n          position: new TMap.LatLng(position.lat, position.lng),\n          rank: rank ? rank : index,\n          content,\n          styleId: 'labelStyle',\n        };\n      });\n      if (labelLayer) labelLayer.setGeometries(geometries);\n    } catch (error) {\n      labelLayer?.setGeometries([]);\n    }\n  }));\n\n\n  // 用户传入的事件回调在这里处理\n  unwatchList.push(watchEffect(() => {\n    useLayerListeners(labelLayer, [\n      { eventName: 'click', callbackList: layerInfo.value.config.onClick },\n      { eventName: 'hover', callbackList: layerInfo.value.config.onHover },\n    ]);\n  }));\n\n  labelLayer.unmount = (): void => {\n    labelLayer?.destroy();\n    unwatchList?.forEach(unwatch => unwatch());\n    unwatchList = null;\n  };\n\n  return labelLayer;\n}\n"],"names":["useLabelLayer","mapInstance","layerInfo","value","config","id","layerId","enableCollision","toRefs","reactive","labelStyle","geometries","unwatchList","labelLayer","TMap","MultiLabel","map","push","watchEffect","styleConfig","omit","LAYER_CONFIG_OMIT_PROP","styleOption","mapValues","val","toRaw","unref","LabelStyle","setStyles","Array","isArray","data","geometry","index","position","rank","content","LatLng","lat","lng","styleId","setGeometries","error","useLayerListeners","eventName","callbackList","onClick","onHover","unmount","destroy","forEach","unwatch"],"mappings":";;;;;;AAIA,SAAAA,aAAA,CAAAC,WAAA,EAAAC,SAAA,EAAA;EACA,IAAA,CAAAA,SAAA,CAAAC,KAAA,IAAA,CAAAD,SAAA,CAAAC,KAAA,CAAAC,MAAA,EACA,OAAA;EACA,IAAA;AAAAC,IAAAA,EAAA,EAAAC,OAAAA;GAAAJ,GAAAA,SAAA,CAAAC,KAAA,CAAA;EACA,IAAA;AAAAI,IAAAA,eAAAA;GAAAC,GAAAA,MAAA,CAAAC,QAAA,CAAAP,SAAA,CAAAC,KAAA,CAAAC,MAAA,CAAA,CAAA,CAAA;AACA,EAAA,IAAAM,UAAA,CAAA;AACA,EAAA,IAAAC,UAAA,CAAA;EACA,IAAAC,WAAA,GAAA,EAAA,CAAA;AACA,EAAA,IAAAC,UAAA,GAAA,IAAAC,IAAA,CAAAC,UAAA,CAAA;AACAV,IAAAA,EAAA,EAAAC,OADA;IAEAC,eAFA;AAGAS,IAAAA,GAAA,EAAAf,WAAAA;AAHA,GAAA,CAAA,CAAA;AAKAW,EAAAA,WAAA,CAAAK,IAAA,CAAAC,WAAA,CAAA,MAAA;IACA,IAAAC,WAAA,GAAAC,MAAA,CAAAlB,SAAA,CAAAC,KAAA,CAAAC,MAAA,EAAAiB,sBAAA,CAAA,CAAA;AACA,IAAA,IAAAC,WAAA,GAAAC,WAAA,CAAAJ,WAAA,EAAAK,GAAA,IAAAC,KAAA,CAAAC,KAAA,CAAAF,GAAA,CAAA,CAAA,CAAA,CAAA;AACAd,IAAAA,UAAA,GAAA,IAAAI,IAAA,CAAAa,UAAA,CAAAL,WAAA,CAAA,CAAA;AACA,IAAA,IAAAT,UAAA,EACAA,UAAA,CAAAe,SAAA,CAAA;AAAAlB,MAAAA,UAAAA;KAAA,CAAA,CAAA;AACA,GANA,CAAA,CAAA,CAAA;AAOAE,EAAAA,WAAA,CAAAK,IAAA,CAAAC,WAAA,CAAA,MAAA;AACA,IAAA,IAAA,CAAAW,KAAA,CAAAC,OAAA,CAAA5B,SAAA,CAAAC,KAAA,CAAAC,MAAA,CAAA2B,IAAA,CAAA,EACA,OAAA;;IACA,IAAA;AACApB,MAAAA,UAAA,GAAAT,SAAA,CAAAC,KAAA,CAAAC,MAAA,CAAA2B,IAAA,CAAAf,GAAA,CAAA,CAAAgB,QAAA,EAAAC,KAAA,KAAA;QACA,IAAA;UAAA5B,EAAA;UAAA6B,QAAA;UAAAC,IAAA;AAAAC,UAAAA,OAAAA;AAAA,SAAA,GAAAJ,QAAA,CAAA;QACA,OAAA;AACA3B,UAAAA,EAAA,EAAAA,EAAA,GAAAA,EAAA,GAAA,EAAA,CAAA,MAAA,CAAA4B,KAAA,CADA;AAEAC,UAAAA,QAAA,EAAA,IAAApB,IAAA,CAAAuB,MAAA,CAAAH,QAAA,CAAAI,GAAA,EAAAJ,QAAA,CAAAK,GAAA,CAFA;AAGAJ,UAAAA,IAAA,EAAAA,IAAA,GAAAA,IAAA,GAAAF,KAHA;UAIAG,OAJA;AAKAI,UAAAA,OAAA,EAAA,YAAA;SALA,CAAA;AAOA,OATA,CAAA,CAAA;AAUA,MAAA,IAAA3B,UAAA,EACAA,UAAA,CAAA4B,aAAA,CAAA9B,UAAA,CAAA,CAAA;KAZA,CAaA,OAAA+B,KAAA,EAAA;MACA7B,UAAA,KAAA,IAAA,IAAAA,UAAA,KAAA,KAAA,CAAA,YAAAA,UAAA,CAAA4B,aAAA,CAAA,EAAA,CAAA,CAAA;AACA,KAAA;AACA,GAnBA,CAAA,CAAA,CAAA;AAoBA7B,EAAAA,WAAA,CAAAK,IAAA,CAAAC,WAAA,CAAA,MAAA;IACAyB,iBAAA,CAAA9B,UAAA,EAAA,CACA;AAAA+B,MAAAA,SAAA,EAAA,OAAA;AAAAC,MAAAA,YAAA,EAAA3C,SAAA,CAAAC,KAAA,CAAAC,MAAA,CAAA0C,OAAAA;AAAA,KADA,EAEA;AAAAF,MAAAA,SAAA,EAAA,OAAA;AAAAC,MAAAA,YAAA,EAAA3C,SAAA,CAAAC,KAAA,CAAAC,MAAA,CAAA2C,OAAAA;AAAA,KAFA,CAAA,CAAA,CAAA;AAIA,GALA,CAAA,CAAA,CAAA;;EAMAlC,UAAA,CAAAmC,OAAA,GAAA,MAAA;AAAA,IAAA,IAAA,YAAA,CAAA;;AACAnC,IAAAA,UAAA,SAAA,IAAAA,UAAA,WAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAA,CAAAoC,OAAA,EAAA,CAAA;IACA,CAAArC,YAAAA,GAAAA,WAAA,UAAA,IAAAsC,YAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAAA,OAAA,CAAAC,OAAA,IAAAA,OAAA,EAAA,CAAA,CAAA;AACAvC,IAAAA,WAAA,GAAA,IAAA,CAAA;GAHA,CAAA;;AAKA,EAAA,OAAAC,UAAA,CAAA;AACA;;;;"}