{"version":3,"file":"apiLoader.mjs","sources":["../../../packages/use/apiLoader.ts"],"sourcesContent":["export const DEFAULT_CONFIG = {\r\n  v: \"4.0\",\r\n  tk: \"\",\r\n  plugins: []\r\n};\r\n\r\nexport const PLUGINS_URL = {\r\n  D3: [\r\n    \"https://cdn.bootcss.com/d3/3.5.17/d3.min.js\",\r\n    \"http://lbs.tianditu.gov.cn/api/js4.0/opensource/openlibrary/D3SvgOverlay.min.js\"\r\n  ],\r\n  CarTrack: [\r\n    \"https://cdn.bootcss.com/d3/3.5.17/d3.min.js\",\r\n    \"http://lbs.tianditu.gov.cn/api/js4.0/opensource/openlibrary/D3SvgOverlay.min.js\",\r\n    \"http://lbs.tianditu.gov.cn/api/js4.0/opensource/openlibrary/CarTrack.min.js\"\r\n  ],\r\n  HeatmapOverlay: [\"http://lbs.tianditu.gov.cn/api/js4.0/opensource/openlibrary/HeatmapOverlay.min.js\"],\r\n  BufferTool: [\r\n    \"https://cdn.bootcss.com/Turf.js/3.0.14/turf.js\",\r\n    \"http://lbs.tianditu.gov.cn/api/js4.0/opensource/openlibrary/BufferTool.min.js\"\r\n  ],\r\n  ImageOverLayer: [\"http://lbs.tianditu.gov.cn/api/js4.0/opensource/openlibrary/ImageOverlay.min.js\"]\r\n};\r\n\r\nexport interface LoadConfig {\r\n  v?: string;\r\n  tk?: string;\r\n  plugins?: (keyof typeof PLUGINS_URL)[];\r\n}\r\n\r\nlet isLoading = false;\r\nexport async function useApiLoader(config: LoadConfig = {}) {\r\n  if (isLoading) {\r\n    return new Promise(resolve => {\r\n      setTimeout(() => resolve(useApiLoader(config)));\r\n    });\r\n  } else if (globalThis.T) {\r\n    return;\r\n  } else {\r\n    isLoading = true;\r\n    const { v, tk, plugins } = { ...DEFAULT_CONFIG, ...config };\r\n    await loadScript(`https://api.tianditu.gov.cn/api?v=${v}&tk=${tk}`);\r\n    await Promise.all(\r\n      plugins\r\n        .map((name: keyof typeof PLUGINS_URL) => PLUGINS_URL[name])\r\n        .flat()\r\n        .map(url => loadScript(url))\r\n    );\r\n    isLoading = false;\r\n  }\r\n}\r\n\r\nfunction loadScript(url: string) {\r\n  return new Promise<void>(resolve => {\r\n    const script = globalThis.document?.createElement(\"script\");\r\n    if (!script) resolve();\r\n    script.src = url;\r\n    script.type = \"text/javascript\";\r\n    script.async = true;\r\n    script.defer = true;\r\n    script.onload = () => resolve();\r\n    script.onerror = () => resolve();\r\n    globalThis.document?.body.appendChild(script);\r\n  });\r\n}\r\n"],"names":["DEFAULT_CONFIG","PLUGINS_URL","isLoading","useApiLoader","config","resolve","v","tk","plugins","loadScript","name","url","_a","_b","script"],"mappings":"AAAO,MAAMA,IAAiB;AAAA,EAC5B,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,SAAS,CAAA;AACX,GAEaC,IAAc;AAAA,EACzB,IAAI;AAAA,IACF;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,gBAAgB,CAAC,mFAAmF;AAAA,EACpG,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAAA,EACA,gBAAgB,CAAC,iFAAiF;AACpG;AAQA,IAAIC,IAAY;AACM,eAAAC,EAAaC,IAAqB,IAAI;AAC1D,MAAIF;AACK,WAAA,IAAI,QAAQ,CAAWG,MAAA;AAC5B,iBAAW,MAAMA,EAAQF,EAAaC,CAAM,CAAC,CAAC;AAAA,IAAA,CAC/C;AACH,MAAW,WAAW;AACpB;AACK;AACO,IAAAF,IAAA;AACN,UAAA,EAAE,GAAAI,GAAG,IAAAC,GAAI,SAAAC,MAAY,EAAE,GAAGR,GAAgB,GAAGI,EAAO;AAC1D,UAAMK,EAAW,qCAAqCH,CAAC,OAAOC,CAAE,EAAE,GAClE,MAAM,QAAQ;AAAA,MACZC,EACG,IAAI,CAACE,MAAmCT,EAAYS,CAAI,CAAC,EACzD,KAAA,EACA,IAAI,CAAOC,MAAAF,EAAWE,CAAG,CAAC;AAAA,IAC/B,GACYT,IAAA;AAAA,EAAA;AAEhB;AAEA,SAASO,EAAWE,GAAa;AACxB,SAAA,IAAI,QAAc,CAAWN,MAAA;AArD/B,QAAAO,GAAAC;AAsDH,UAAMC,KAASF,IAAA,WAAW,aAAX,gBAAAA,EAAqB,cAAc;AAC9C,IAACE,KAAgBT,EAAA,GACrBS,EAAO,MAAMH,GACbG,EAAO,OAAO,mBACdA,EAAO,QAAQ,IACfA,EAAO,QAAQ,IACRA,EAAA,SAAS,MAAMT,EAAQ,GACvBS,EAAA,UAAU,MAAMT,EAAQ,IACpBQ,IAAA,WAAA,aAAA,QAAAA,EAAU,KAAK,YAAYC;AAAA,EAAM,CAC7C;AACH;"}