{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-utils/index.ts"],"sourcesContent":["import { computed } from 'vue'\nimport L from 'leaflet'\nimport type { BaseMapTileLayerType } from '@map-sdk/components'\n\n// interface BaseMapTileLayerType {\n//   iconUrl?: string // 显示图标\n//   type: string // 类型\n//   label: string // 名称\n//   url: string // 瓦片地址\n//   id?: string | undefined\n//   minZoom?: number | undefined\n//   maxZoom?: number | undefined\n//   subdomains?: string | string[] | undefined\n//   errorTileUrl?: string | undefined\n//   checked?: boolean\n// }\n\nexport function useUtilsHooks() {\n  const isMobile = computed(() => {\n    const userAgent =\n      navigator.userAgent || navigator.vendor || (window as any).opera\n    return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(\n      userAgent\n    )\n  })\n\n  const getMapTitleLayer = (\n    map: any,\n    baseMapTitleLayers: BaseMapTileLayerType[]\n  ) => {\n    const mapTypes = map._options?.mapTypes\n    return (\n      (baseMapTitleLayers &&\n        baseMapTitleLayers.filter((item: BaseMapTileLayerType) =>\n          mapTypes?.includes(item.type)\n        )) ||\n      baseMapTitleLayers\n    )\n  }\n\n  /**\n   * 选择地图图层\n   * @param map 地图实力\n   * @param titleLayer 图层配置信息\n   * @param errorTitleLayer 图层异常加载新的图层地址\n   * @returns\n   */\n  const switchBaseMap = (\n    map: any,\n    titleLayer: BaseMapTileLayerType,\n    errorTitleLayer?: string\n  ) => {\n    if (!map) return\n    map.eachLayer((layer: any) => {\n      if (layer instanceof L.TileLayer) {\n        map.removeLayer(layer)\n      }\n    })\n    const { type } = titleLayer\n    const newBaseMap = L.tileLayer(titleLayer.url, {\n      maxZoom: 19,\n      ...titleLayer,\n    })\n    if (type === 'MT_SEA') {\n      map.setMaxZoom(18)\n    } else {\n      map.setMaxZoom(13)\n    }\n    if (errorTitleLayer) {\n      newBaseMap.on('tileerror', (e) => {\n        const tile = e.tile\n        const { x, y, z } = e.coords\n        // 清除失败的图块，避免显示空白或错误图标\n        tile.src = ''\n        // 尝试使用新的地址加载图块\n        tile.onload = L.Util.falseFn // 清除之前的onload监听器，避免重复触发\n        tile.onerror = L.Util.falseFn // 清除之前的onerror监听器，避免重复触发\n        tile.src = errorTitleLayer\n          .replace('{z}', `${z}`)\n          .replace('{x}', `${x}`)\n          .replace('{y}', `${y}`)\n      })\n    }\n    newBaseMap.addTo(map as any)\n    map.mapType = titleLayer.type\n    map.fire('baselayerchange', titleLayer)\n  }\n\n  return {\n    isMobile,\n    getMapTitleLayer,\n    switchBaseMap,\n  }\n}\n"],"names":["useUtilsHooks","isMobile","y","e","navigator","userAgent","vendor","window","opera","test","getMapTitleLayer","o","a","n","_options","mapTypes","filter","s","includes","type","switchBaseMap","eachLayer","r","t","TileLayer","removeLayer","tileLayer","url","maxZoom","setMaxZoom","on","i","tile","x","p","c","z","l","coords","src","onload","Util","falseFn","onerror","replace","addTo","mapType","fire"],"mappings":"sDAA6D,SAASA,IAAgB,MAAM,CAACC,SAASC,GAAE,KAAK,MAAMC,EAAEC,UAAUC,WAAWD,UAAUE,QAAQC,OAAOC,MAAM,MAAM,iEAAiEC,KAAKN,MAAKO,iBAAiB,CAACP,EAAEQ,KAAK,IAAIC,EAAE,MAAMC,EAAkB,OAAfD,EAAET,EAAEW,eAAgB,EAAOF,EAAEG,SAAS,OAAOJ,GAAGA,EAAEK,QAAOC,GAAM,MAAHJ,OAAQ,EAAOA,EAAEK,SAASD,EAAEE,SAAQR,GAAGS,cAAc,CAACjB,EAAEQ,EAAEE,KAAK,IAAIV,EAAE,OAAOA,EAAEkB,WAAUC,IAAIA,aAAaC,EAAEC,WAAWrB,EAAEsB,YAAYH,MAAK,MAAMH,KAAKP,GAAGD,EAAEM,EAAEM,EAAEG,UAAUf,EAAEgB,IAAI,CAACC,QAAQ,MAAMjB,IAAQ,WAAJC,EAAaT,EAAE0B,WAAW,IAAI1B,EAAE0B,WAAW,IAAIhB,GAAGI,EAAEa,GAAG,aAAYR,IAAI,MAAMS,EAAET,EAAEU,MAAMC,EAAEC,EAAEhC,EAAEiC,EAAEC,EAAEC,GAAGf,EAAEgB,OAAOP,EAAEQ,IAAI,GAAGR,EAAES,OAAOjB,EAAEkB,KAAKC,QAAQX,EAAEY,QAAQpB,EAAEkB,KAAKC,QAAQX,EAAEQ,IAAI1B,EAAE+B,QAAQ,MAAM,GAAGP,KAAKO,QAAQ,MAAM,GAAGV,KAAKU,QAAQ,MAAM,GAAGT,QAAOlB,EAAE4B,MAAM1C,GAAGA,EAAE2C,QAAQnC,EAAEQ,KAAKhB,EAAE4C,KAAK,kBAAkBpC,IAAI"}