{"version":3,"file":"controls.mjs","sources":["../../../../packages/map/use/controls.ts"],"sourcesContent":["import type { Emit, Props } from \"./\";\nimport { toBounds } from \"~/utils/converter\";\nimport type { ControlName, ControlOptions } from \"~/utils/types\";\n\nexport function useControls(props: Props, map: T.Map, emit: Emit) {\n  props.controls?.forEach((option: ControlName | ControlOptions) => {\n    if (typeof option === \"string\") {\n      addControlByName(option);\n    } else if (typeof option === \"object\") {\n      addControlByOption(option);\n    }\n  });\n\n  function addControlByName(option: ControlName) {\n    const controlName = option;\n    if (!T.Control[controlName]) {\n      setTimeout(() => addControlByName(option));\n      return;\n    }\n    const control = new T.Control[controlName]();\n    if (controlName === \"OverviewMap\") {\n      const c = control as T.ControlOverviewMap;\n      c.addEventListener(\"viewchange\", e => emit(\"viewchange\", e));\n    }\n    map.addControl(control);\n  }\n\n  function addControlByOption(option: ControlOptions) {\n    const controlName = option.name;\n    if (!T.Control[controlName]) {\n      setTimeout(() => addControlByOption(option));\n      return;\n    }\n    switch (controlName) {\n      case \"MapType\":\n        {\n          const mapTypes = option.mapTypes?.map(item => {\n            return {\n              ...item,\n              layer: window[item.layer]\n            };\n          });\n          const control = new T.Control.MapType(mapTypes);\n          if (option.position) {\n            control.setPosition(option.position);\n          }\n          map.addControl(control);\n        }\n        break;\n      case \"OverviewMap\":\n        {\n          const control = new T.Control.OverviewMap(option);\n          control.addEventListener(\"viewchange\", e => emit(\"viewchange\", e));\n          map.addControl(control);\n        }\n        break;\n      case \"Copyright\":\n        {\n          // 根据官网的示例，需要先初始化控件，再添加版权信息\n          const control = new T.Control.Copyright({ position: option.position || \"bottomleft\" });\n          map.addControl(control);\n          control.addCopyright({\n            ...option,\n            bounds: option.bounds?.length ? toBounds(option.bounds) : undefined\n          });\n        }\n        break;\n      default:\n        {\n          const control = new T.Control[controlName](option);\n          map.addControl(control);\n        }\n        break;\n    }\n  }\n}\n"],"names":["useControls","props","map","emit","_a","option","addControlByName","addControlByOption","controlName","control","mapTypes","item","e","_b","toBounds"],"mappings":";AAIgB,SAAAA,EAAYC,GAAcC,GAAYC,GAAY;;AAC1D,GAAAC,IAAAH,EAAA,aAAA,QAAAG,EAAU,QAAQ,CAACC,MAAyC;AAC5D,IAAA,OAAOA,KAAW,WACpBC,EAAiBD,CAAM,IACd,OAAOA,KAAW,YAC3BE,EAAmBF,CAAM;AAAA,EAC3B;AAGF,WAASC,EAAiBD,GAAqB;AAC7C,UAAMG,IAAcH;AACpB,QAAI,CAAC,EAAE,QAAQG,CAAW,GAAG;AAChB,iBAAA,MAAMF,EAAiBD,CAAM,CAAC;AACzC;AAAA,IAAA;AAEF,UAAMI,IAAU,IAAI,EAAE,QAAQD,CAAW,EAAE;AAC3C,IAAIA,MAAgB,iBACRC,EACR,iBAAiB,cAAc,CAAA,MAAKN,EAAK,cAAc,CAAC,CAAC,GAE7DD,EAAI,WAAWO,CAAO;AAAA,EAAA;AAGxB,WAASF,EAAmBF,GAAwB;;AAClD,UAAMG,IAAcH,EAAO;AAC3B,QAAI,CAAC,EAAE,QAAQG,CAAW,GAAG;AAChB,iBAAA,MAAMD,EAAmBF,CAAM,CAAC;AAC3C;AAAA,IAAA;AAEF,YAAQG,GAAa;AAAA,MACnB,KAAK;AACH;AACE,gBAAME,KAAWN,IAAAC,EAAO,aAAP,gBAAAD,EAAiB,IAAI,CAAQO,OACrC;AAAA,YACL,GAAGA;AAAA,YACH,OAAO,OAAOA,EAAK,KAAK;AAAA,UAC1B,KAEIF,IAAU,IAAI,EAAE,QAAQ,QAAQC,CAAQ;AAC9C,UAAIL,EAAO,YACDI,EAAA,YAAYJ,EAAO,QAAQ,GAErCH,EAAI,WAAWO,CAAO;AAAA,QAAA;AAExB;AAAA,MACF,KAAK;AACH;AACE,gBAAMA,IAAU,IAAI,EAAE,QAAQ,YAAYJ,CAAM;AAChD,UAAAI,EAAQ,iBAAiB,cAAc,CAAAG,MAAKT,EAAK,cAAcS,CAAC,CAAC,GACjEV,EAAI,WAAWO,CAAO;AAAA,QAAA;AAExB;AAAA,MACF,KAAK;AACH;AAEQ,gBAAAA,IAAU,IAAI,EAAE,QAAQ,UAAU,EAAE,UAAUJ,EAAO,YAAY,cAAc;AACrF,UAAAH,EAAI,WAAWO,CAAO,GACtBA,EAAQ,aAAa;AAAA,YACnB,GAAGJ;AAAA,YACH,SAAQQ,IAAAR,EAAO,WAAP,QAAAQ,EAAe,SAASC,EAAST,EAAO,MAAM,IAAI;AAAA,UAAA,CAC3D;AAAA,QAAA;AAEH;AAAA,MACF;AACE;AACE,gBAAMI,IAAU,IAAI,EAAE,QAAQD,CAAW,EAAEH,CAAM;AACjD,UAAAH,EAAI,WAAWO,CAAO;AAAA,QAAA;AAExB;AAAA,IAAA;AAAA,EACJ;AAEJ;"}