{"version":3,"file":"controls.mjs","sources":["../../../../packages/map/use/controls.ts"],"sourcesContent":["import type { Emit, Props } from \"./\";\r\nimport { toBounds } from \"~/utils/converter\";\r\nimport type { ControlName, ControlOptions } from \"~/utils/types\";\r\n\r\nexport function useControls(props: Props, map: T.Map, emit: Emit) {\r\n  props.controls?.forEach((option: ControlName | ControlOptions) => {\r\n    if (typeof option === \"string\") {\r\n      addControlByName(option);\r\n    } else if (typeof option === \"object\") {\r\n      addControlByOption(option);\r\n    }\r\n  });\r\n\r\n  function addControlByName(option: ControlName) {\r\n    const controlName = option;\r\n    if (!T.Control[controlName]) {\r\n      setTimeout(() => addControlByName(option));\r\n      return;\r\n    }\r\n    const control = new T.Control[controlName]();\r\n    if (controlName === \"OverviewMap\") {\r\n      const c = control as T.ControlOverviewMap;\r\n      c.addEventListener(\"viewchange\", e => emit(\"viewchange\", e));\r\n    }\r\n    map.addControl(control);\r\n  }\r\n\r\n  function addControlByOption(option: ControlOptions) {\r\n    const controlName = option.name;\r\n    if (!T.Control[controlName]) {\r\n      setTimeout(() => addControlByOption(option));\r\n      return;\r\n    }\r\n    switch (controlName) {\r\n      case \"MapType\":\r\n        {\r\n          const mapTypes = option.mapTypes?.map(item => {\r\n            return {\r\n              ...item,\r\n              layer: window[item.layer]\r\n            };\r\n          });\r\n          const control = new T.Control.MapType(mapTypes);\r\n          if (option.position) {\r\n            control.setPosition(option.position);\r\n          }\r\n          map.addControl(control);\r\n        }\r\n        break;\r\n      case \"OverviewMap\":\r\n        {\r\n          const control = new T.Control.OverviewMap(option);\r\n          control.addEventListener(\"viewchange\", e => emit(\"viewchange\", e));\r\n          map.addControl(control);\r\n        }\r\n        break;\r\n      case \"Copyright\":\r\n        {\r\n          // 根据官网的示例，需要先初始化控件，再添加版权信息\r\n          const control = new T.Control.Copyright({ position: option.position || \"bottomleft\" });\r\n          map.addControl(control);\r\n          control.addCopyright({\r\n            ...option,\r\n            bounds: option.bounds?.length ? toBounds(option.bounds) : undefined\r\n          });\r\n        }\r\n        break;\r\n      default:\r\n        {\r\n          const control = new T.Control[controlName](option);\r\n          map.addControl(control);\r\n        }\r\n        break;\r\n    }\r\n  }\r\n}\r\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;"}