mahal_map 1.3.5 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -114,6 +114,8 @@ declare class MahalMapDefaultMarker {
114
114
 
115
115
  declare class MahalMap {
116
116
  private static instance;
117
+ private isReady;
118
+ private readyCallbacks;
117
119
  private map;
118
120
  private maplibre;
119
121
  private camera;
@@ -122,6 +124,7 @@ declare class MahalMap {
122
124
  static create(options: IMahalMapOptions, maplibreObject?: {
123
125
  Map: typeof Map;
124
126
  } | typeof Map): MahalMap;
127
+ static onReady(callback: (map: Map) => void): void;
125
128
  static getInstance(): MahalMap;
126
129
  addMarker(marker: IMapMarker): any;
127
130
  init(map: Map): void;
package/dist/index.d.ts CHANGED
@@ -114,6 +114,8 @@ declare class MahalMapDefaultMarker {
114
114
 
115
115
  declare class MahalMap {
116
116
  private static instance;
117
+ private isReady;
118
+ private readyCallbacks;
117
119
  private map;
118
120
  private maplibre;
119
121
  private camera;
@@ -122,6 +124,7 @@ declare class MahalMap {
122
124
  static create(options: IMahalMapOptions, maplibreObject?: {
123
125
  Map: typeof Map;
124
126
  } | typeof Map): MahalMap;
127
+ static onReady(callback: (map: Map) => void): void;
125
128
  static getInstance(): MahalMap;
126
129
  addMarker(marker: IMapMarker): any;
127
130
  init(map: Map): void;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var a0_0x5f5a40=a0_0x108b;(function(_0x49a1d2,_0x322306){var _0x17ae2b=a0_0x108b,_0xe05830=_0x49a1d2();while(!![]){try{var _0x1aeccf=parseInt(_0x17ae2b(0x12f))/0x1+parseInt(_0x17ae2b(0x123))/0x2*(parseInt(_0x17ae2b(0x108))/0x3)+-parseInt(_0x17ae2b(0xdb))/0x4*(parseInt(_0x17ae2b(0x16f))/0x5)+parseInt(_0x17ae2b(0x16d))/0x6*(-parseInt(_0x17ae2b(0xd4))/0x7)+parseInt(_0x17ae2b(0x12e))/0x8*(-parseInt(_0x17ae2b(0x17c))/0x9)+parseInt(_0x17ae2b(0x151))/0xa*(-parseInt(_0x17ae2b(0xd2))/0xb)+parseInt(_0x17ae2b(0x15c))/0xc*(parseInt(_0x17ae2b(0x15a))/0xd);if(_0x1aeccf===_0x322306)break;else _0xe05830['push'](_0xe05830['shift']());}catch(_0x2b076a){_0xe05830['push'](_0xe05830['shift']());}}}(a0_0x3539,0xe5bae));function a0_0x108b(_0x54b600,_0x258c9e){var _0x3136b1=a0_0x3539();return a0_0x108b=function(_0x45202b,_0xb243a){_0x45202b=_0x45202b-0xc5;var _0x306b46=_0x3136b1[_0x45202b];return _0x306b46;},a0_0x108b(_0x54b600,_0x258c9e);}var D=Object[a0_0x5f5a40(0x179)],u=Object[a0_0x5f5a40(0x122)],F=Object[a0_0x5f5a40(0x163)],N=Object[a0_0x5f5a40(0x106)],O=Object['getPrototypeOf'],U=Object[a0_0x5f5a40(0x176)][a0_0x5f5a40(0x18e)],w=(_0x21054c,_0x58dba1)=>{var _0x3ae7a9=a0_0x5f5a40,_0x484c88={'bvLNy':function(_0x265cfe,_0x4ded42,_0x4c9ce8,_0x3f9e95){return _0x265cfe(_0x4ded42,_0x4c9ce8,_0x3f9e95);}};for(var _0x69c48b in _0x58dba1)_0x484c88[_0x3ae7a9(0x139)](u,_0x21054c,_0x69c48b,{'get':_0x58dba1[_0x69c48b],'enumerable':!0x0});},T=(_0x3df70d,_0x64d142,_0x323a20,_0x38537b)=>{var _0xc8e1bd=a0_0x5f5a40,_0x5b4fe0={'YKQtP':function(_0x3a021e,_0x517e14){return _0x3a021e==_0x517e14;},'lMAlV':function(_0x1d2652,_0x3d0300){return _0x1d2652(_0x3d0300);},'AeIJb':function(_0x1844a0,_0x5c1f11){return _0x1844a0!==_0x5c1f11;},'xCqbk':function(_0xf1f3a4,_0xf1e107,_0x352c3f,_0x453f56){return _0xf1f3a4(_0xf1e107,_0x352c3f,_0x453f56);},'UMRpQ':function(_0x46e640,_0x406b3a,_0x334478){return _0x46e640(_0x406b3a,_0x334478);}};if(_0x64d142&&typeof _0x64d142==_0xc8e1bd(0x15e)||_0x5b4fe0[_0xc8e1bd(0x136)](typeof _0x64d142,_0xc8e1bd(0x13f))){for(let _0x1149b3 of _0x5b4fe0[_0xc8e1bd(0xf4)](N,_0x64d142))!U['call'](_0x3df70d,_0x1149b3)&&_0x5b4fe0[_0xc8e1bd(0xcc)](_0x1149b3,_0x323a20)&&_0x5b4fe0[_0xc8e1bd(0x14f)](u,_0x3df70d,_0x1149b3,{'get':()=>_0x64d142[_0x1149b3],'enumerable':!(_0x38537b=_0x5b4fe0['UMRpQ'](F,_0x64d142,_0x1149b3))||_0x38537b[_0xc8e1bd(0x187)]});}return _0x3df70d;},$=(_0x29d0c1,_0x1b7ff3,_0x2addf2)=>(_0x2addf2=_0x29d0c1!=null?D(O(_0x29d0c1)):{},T(_0x1b7ff3||!_0x29d0c1||!_0x29d0c1['__esModule']?u(_0x2addf2,a0_0x5f5a40(0x17a),{'value':_0x29d0c1,'enumerable':!0x0}):_0x2addf2,_0x29d0c1)),Z=_0x11b3c3=>T(u({},a0_0x5f5a40(0x173),{'value':!0x0}),_0x11b3c3),V={};w(V,{'MahalMap':()=>g,'MahalMapDefaultMarker':()=>f,'Router':()=>_,'Search':()=>G,'keyUtils':()=>b}),module[a0_0x5f5a40(0x126)]=Z(V);var C=a0_0x5f5a40(0x103),v=a0_0x5f5a40(0x117),S='https://mtile.gram.tj/custom-styles/mapstyle.json',P=a0_0x5f5a40(0x154);function a0_0x3539(){var _0x1aad8d=['getElementsByTagName','TLUuN','cursor','mWRHn','aYOYS','wgCDO','length','color','NdIyC','#278960','IaXCf','xSxoE','props','gMdgG','toString','geometry','dark','kakcs','error','lMAlV','maplibre','maplibregl','map','resetNorth','apply','KzsxY','forEach','setBearing','routes','charCodeAt','zKldq','isDraggable','oOvZJ','{}.constructor(\x22return\x20this\x22)(\x20)','https://platform.mahal.tj/api/','getCoordinates','console','getOwnPropertyNames','GBcri','56112WnorZV','setPitch','Map','RPoxm','vFwvl','toqUw','dsBAL','XQyPF','QXISo','__proto__','geojson','request','log','options','rLsTo','https://mtile.gram.tj/custom-styles/dark-style.json','\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</g>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<path\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20d=\x22M25\x2051C27.7614\x2051\x2030\x2053.2386\x2030\x2056C30\x2058.7614\x2027.7614\x2061\x2025\x2061C22.2386\x2061\x2020\x2058.7614\x2020\x2056C20\x2053.2386\x2022.2386\x2051\x2025\x2051Z\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22','getMap','FxHXL','\x0a\x20\x20\x20\x20\x20\x20\x20\x20</g>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<defs>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<filter\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id=\x22filter0_d_367_31358\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x=\x220\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20y=\x220\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width=\x2250\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height=\x2255\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20filterUnits=\x22userSpaceOnUse\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color-interpolation-filters=\x22sRGB\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feFlood\x20flood-opacity=\x220\x22\x20result=\x22BackgroundImageFix\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feColorMatrix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in=\x22SourceAlpha\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22matrix\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20values=\x220\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x20127\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result=\x22hardAlpha\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feOffset\x20dy=\x222\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feGaussianBlur\x20stdDeviation=\x222\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feComposite\x20in2=\x22hardAlpha\x22\x20operator=\x22out\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feColorMatrix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22matrix\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20values=\x220\x200\x200\x200\x200.250234\x200\x200\x200\x200\x200.660089\x200\x200\x200\x200\x200.488619\x200\x200\x200\x200.24\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feBlend\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mode=\x22normal\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in2=\x22BackgroundImageFix\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result=\x22effect1_dropShadow_367_31358\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feBlend\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mode=\x22normal\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in=\x22SourceGraphic\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in2=\x22effect1_dropShadow_367_31358\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result=\x22shape\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</filter>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<clipPath\x20id=\x22clip0_367_31358\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<rect\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width=\x2222\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height=\x2222\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22white\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20transform=\x22translate(14\x2012)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</clipPath>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</defs>\x0a\x20\x20\x20\x20\x20\x20</svg>','dCypO','fill=\x22','kTEFO','setStyle','defaults','setZoom','defineProperty','2bzLpHt','ivuUh','cLqWf','exports','element','SvhZW','GYjAO','lWqMX','getPitch','saVuq','setLngLat','319000jwWjQl','306613peZGOt','getAnchor','jOXxp','Bearer\x20','WAugG','trace','use','YKQtP','script','get','bvLNy','remove','mYBXp','includes','gmqZk','zYXOm','function','coordinates','addTo','light','UeAJe','Aywbh','mpGLY','interceptors','vnJVp','easeTo','searchParams','Ошибка\x20при\x20поиске\x20адреса:','route','flyTo','rsaIF','Authorization','xCqbk','getCamera','56560uwBOVj','ENzmF','init','https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json','\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stroke=\x22white\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stroke-width=\x222\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<g\x20clip-path=\x22url(#clip0_367_31358)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20','NddEv','string','common','MFuNq','1160887oHCStW','warn','924DbQpSu','QvzlY','object','setCenter','zoom','camera','applyColorToCustomSvg','getOwnPropertyDescriptor','hXuhx','instance','theme','info','gAmLi','HNDoH','constructor','mahal_map.sdk.js','bpbvt','3314958OXriai','OgiCm','40585EukGzN','hSccv','headers','KTDOr','__esModule','tYwGB','fOnrU','prototype','AAeRq','AiYKE','create','default','aGxzy','351hpljdr','SixJP','anchor','yBxuc','QIXkO','ByxUP','data','QmcMs','hiToG','bind','ErlRb','enumerable','draggable','MFRJd','KAWHG','exception','CjOPw','reject','hasOwnProperty','[MahalMap\x20SDK]\x20MapLibre\x20GL\x20не\x20найден.\x20Передай\x20его\x20вторым\x20аргументом\x20или\x20подключи\x20через\x20script.','innerHTML','innerSvg','push','post','getElement','getBearing','QMvgO','createElement','[MahalMap\x20SDK]\x20Карта\x20ещё\x20не\x20создана','services/getAddress','services/getRoutes','replace','Marker','toggle3D','nFKdh','GVCuD','AeIJb','LNpaU','axios','destroy','UbcZh','aeHAH','2486osDjkH','center','21EiekEI','apikey','DfAlN','style','container','IRZEg','bQJLB','872JDXjZh','return\x20(function()\x20','Djnqr','status','src','HVdNt'];a0_0x3539=function(){return _0x1aad8d;};return a0_0x3539();}function k(_0x114a5b){var _0x3d1e1a=a0_0x5f5a40,_0x3e6f12={'ivuUh':function(_0x120307,_0x3f4c96){return _0x120307<_0x3f4c96;},'gmqZk':function(_0x3b79d2,_0xdc5340){return _0x3b79d2!==_0xdc5340;},'GYjAO':_0x3d1e1a(0x14d),'ENzmF':function(_0x5bc387,_0x498c4c){return _0x5bc387-_0x498c4c;},'vnJVp':function(_0x3d8cd2,_0x12abe8){return _0x3d8cd2<<_0x12abe8;},'hSccv':function(_0x1bd8bc,_0xae95a6){return _0x1bd8bc&_0xae95a6;},'HLfXR':function(_0x2d9edc,_0x3570d7){return _0x2d9edc>=_0x3570d7;},'IaXCf':function(_0x477bb7,_0xf7ad5e){return _0x477bb7&_0xf7ad5e;},'ByxUP':function(_0x445c97,_0x1fbfd2){return _0x445c97-_0x1fbfd2;},'QvzlY':function(_0x41ccf0,_0x2af81b){return _0x41ccf0>=_0x2af81b;},'SvhZW':function(_0x236188,_0x997ebb){return _0x236188&_0x997ebb;},'zKldq':function(_0x362310,_0x34fbf2){return _0x362310>>_0x34fbf2;},'RPoxm':function(_0x4f20f6,_0x3fc720){return _0x4f20f6*_0x3fc720;}};let _0xdde132=[],_0x14565d=0x0,_0x3d93f7=_0x114a5b[_0x3d1e1a(0xe7)],_0x4b38de=0x0,_0x3226a0=0x0;for(;_0x3e6f12[_0x3d1e1a(0x124)](_0x14565d,_0x3d93f7);){if(_0x3e6f12[_0x3d1e1a(0x13d)](_0x3e6f12[_0x3d1e1a(0x129)],_0x3e6f12['GYjAO']))this[_0x3d1e1a(0xf7)][_0x3d1e1a(0x14c)]({'speed':1.2,'curve':1.42,'essential':!0x0,..._0x11ad82});else{let _0x37cb70,_0xc1d3=0x0,_0x5671a0=0x0;do _0x37cb70=_0x3e6f12[_0x3d1e1a(0x152)](_0x114a5b['charCodeAt'](_0x14565d++),0x3f),_0x5671a0|=_0x3e6f12[_0x3d1e1a(0x147)](_0x3e6f12[_0x3d1e1a(0x170)](_0x37cb70,0x1f),_0xc1d3),_0xc1d3+=0x5;while(_0x3e6f12['HLfXR'](_0x37cb70,0x20));let _0x2b12f4=_0x3e6f12[_0x3d1e1a(0xeb)](_0x5671a0,0x1)?~(_0x5671a0>>0x1):_0x5671a0>>0x1;_0x4b38de+=_0x2b12f4,_0xc1d3=0x0,_0x5671a0=0x0;do _0x37cb70=_0x3e6f12[_0x3d1e1a(0x181)](_0x114a5b[_0x3d1e1a(0xfe)](_0x14565d++),0x3f),_0x5671a0|=_0x3e6f12[_0x3d1e1a(0x147)](_0x37cb70&0x1f,_0xc1d3),_0xc1d3+=0x5;while(_0x3e6f12[_0x3d1e1a(0x15d)](_0x37cb70,0x20));let _0x1e11e5=_0x3e6f12[_0x3d1e1a(0x128)](_0x5671a0,0x1)?~(_0x5671a0>>0x1):_0x3e6f12[_0x3d1e1a(0xff)](_0x5671a0,0x1);_0x3226a0+=_0x1e11e5,_0xdde132[_0x3d1e1a(0x192)]([_0x3e6f12[_0x3d1e1a(0x10b)](_0x3226a0,0.00001),_0x4b38de*0.00001]);}}return _0xdde132;}var h=class{constructor(_0x29e4ae){var _0x5a53e5=a0_0x5f5a40;this[_0x5a53e5(0xf7)]=_0x29e4ae;}['setZoom'](_0x5e1cbb,_0x4c6d1e=!0x0){var _0x26c5bc=a0_0x5f5a40;_0x4c6d1e?this[_0x26c5bc(0xf7)][_0x26c5bc(0x148)]({'zoom':_0x5e1cbb}):this[_0x26c5bc(0xf7)][_0x26c5bc(0x121)](_0x5e1cbb);}[a0_0x5f5a40(0xfc)](_0x6ac0e2,_0x48f3d5=!0x0){var _0x4dd881=a0_0x5f5a40;_0x48f3d5?this[_0x4dd881(0xf7)][_0x4dd881(0x148)]({'bearing':_0x6ac0e2}):this[_0x4dd881(0xf7)][_0x4dd881(0xfc)](_0x6ac0e2);}[a0_0x5f5a40(0x109)](_0x558136,_0x188660=!0x0){var _0x255ba4=a0_0x5f5a40;_0x188660?this[_0x255ba4(0xf7)][_0x255ba4(0x148)]({'pitch':_0x558136}):this[_0x255ba4(0xf7)][_0x255ba4(0x109)](_0x558136);}[a0_0x5f5a40(0xc9)](_0x2c7f56){var _0x383b3a=a0_0x5f5a40;this['map'][_0x383b3a(0x148)]({'pitch':_0x2c7f56?0x3c:0x0,'bearing':_0x2c7f56?this[_0x383b3a(0xf7)][_0x383b3a(0x195)]():0x0,'duration':0x320});}[a0_0x5f5a40(0xf8)](){var _0x5e8111=a0_0x5f5a40;this[_0x5e8111(0xf7)]['easeTo']({'bearing':0x0,'pitch':0x0,'duration':0x258});}[a0_0x5f5a40(0x14c)](_0x2891bb){var _0xb8c75a=a0_0x5f5a40;this['map'][_0xb8c75a(0x14c)]({'speed':1.2,'curve':1.42,'essential':!0x0,..._0x2891bb});}[a0_0x5f5a40(0x12b)](){var _0x164fec=a0_0x5f5a40;return this[_0x164fec(0xf7)][_0x164fec(0x12b)]();}},I=(_0x196563,_0x53ab6b)=>'<svg\x0a\x20\x20\x20\x20\x20\x20\x20\x20width=\x2250\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20height=\x2262\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20viewBox=\x220\x200\x2050\x2062\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22none\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<g\x20filter=\x22url(#filter0_d_367_31358)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill-rule=\x22evenodd\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20clip-rule=\x22evenodd\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20d=\x22M25\x202C36.598\x202\x2046\x2011.402\x2046\x2023C46\x2033.1603\x2038.7844\x2041.6353\x2029.198\x2043.5803L25.6524\x2048.6575C25.5788\x2048.7633\x2025.4812\x2048.8497\x2025.3676\x2048.9093C25.254\x2048.9689\x2025.128\x2049\x2025\x2049C24.872\x2049\x2024.746\x2048.9689\x2024.6324\x2048.9093C24.5188\x2048.8497\x2024.4212\x2048.7633\x2024.3476\x2048.6575L20.802\x2043.5803C11.2156\x2041.6353\x204\x2033.1603\x204\x2023C4\x2011.402\x2013.402\x202\x2025\x202Z\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22'+(_0x196563||a0_0x5f5a40(0xea))+a0_0x5f5a40(0x118)+(_0x196563||'#278960')+a0_0x5f5a40(0x155)+(_0x53ab6b??'')+a0_0x5f5a40(0x11b),f=class{constructor(_0x1a3cc4){var _0x1ddbd8=a0_0x5f5a40;this[_0x1ddbd8(0xed)]=_0x1a3cc4,this[_0x1ddbd8(0x127)]=this['createElement']();}[a0_0x5f5a40(0x197)](){var _0x42fc59=a0_0x5f5a40,_0x24a91d={'mYBXp':'pointer'};let _0xf6fdf0=document[_0x42fc59(0x197)]('div');_0xf6fdf0['style'][_0x42fc59(0xe3)]=_0x24a91d[_0x42fc59(0x13b)];let _0x4b9f97=this[_0x42fc59(0xed)]['svg']?this[_0x42fc59(0x162)](this[_0x42fc59(0xed)]['svg']):I(this[_0x42fc59(0xed)]['color']??_0x42fc59(0xea),this['props'][_0x42fc59(0x191)]);return _0xf6fdf0[_0x42fc59(0x190)]=_0x4b9f97,this['props'][_0x42fc59(0x188)]&&(_0xf6fdf0[_0x42fc59(0x188)]=!0x0),_0xf6fdf0;}[a0_0x5f5a40(0x162)](_0x130a86){var _0x5b44f9=a0_0x5f5a40;return this[_0x5b44f9(0xed)][_0x5b44f9(0xe8)]?_0x130a86[_0x5b44f9(0xc7)](/fill="[^"]*"/g,_0x5b44f9(0x11d)+this[_0x5b44f9(0xed)][_0x5b44f9(0xe8)]+'\x22'):_0x130a86;}[a0_0x5f5a40(0x194)](){var _0x5535d0=a0_0x5f5a40;return this[_0x5535d0(0x127)];}[a0_0x5f5a40(0x104)](){var _0x2b27ca=a0_0x5f5a40;return this['props'][_0x2b27ca(0x140)];}[a0_0x5f5a40(0x100)](){var _0x28d602=a0_0x5f5a40;return!!this[_0x28d602(0xed)]['draggable'];}[a0_0x5f5a40(0x130)](){var _0x1a5edb=a0_0x5f5a40,_0x5aaf05={'aGxzy':_0x1a5edb(0xd3)};return this[_0x1a5edb(0xed)][_0x1a5edb(0x17e)]||_0x5aaf05[_0x1a5edb(0x17b)];}};function A(_0x2e15af,_0xa9329e,_0x4dee81){var _0x4d0abe=a0_0x5f5a40,_0x33883a={'KzsxY':_0x4d0abe(0xd3)};return new _0x2e15af[(_0x4d0abe(0xc8))]({'element':_0x4dee81[_0x4d0abe(0x194)](),'draggable':_0x4dee81['isDraggable']?.()??!0x1,'anchor':_0x4dee81['getAnchor']?.()??_0x33883a[_0x4d0abe(0xfa)]})[_0x4d0abe(0x12d)](_0x4dee81[_0x4d0abe(0x104)]())[_0x4d0abe(0x141)](_0xa9329e);}var d={'dark':v,'light':S},n=class n{constructor(){}static[a0_0x5f5a40(0x179)](_0x5603bf,_0x485c1f){var _0x308878=a0_0x5f5a40,_0x563280={'KAWHG':_0x308878(0x18f),'bpbvt':function(_0x572306,_0x6f2d62){return _0x572306===_0x6f2d62;},'vFwvl':_0x308878(0xf7)};if(n[_0x308878(0x165)])return n[_0x308878(0x165)];let _0x48b4a4=window[_0x308878(0xf6)]||_0x485c1f;if(!_0x48b4a4)throw new Error(_0x563280[_0x308878(0x18a)]);let _0x50563d=_0x5603bf['autoAddVectorSource']?P:_0x5603bf['style']?_0x5603bf[_0x308878(0xd7)]:_0x563280[_0x308878(0x16c)](_0x5603bf[_0x308878(0x166)],_0x308878(0xf1))?d[_0x308878(0xf1)]:d[_0x308878(0x142)],_0x530a7f=new n();return _0x530a7f[_0x308878(0x115)]=_0x5603bf,_0x530a7f['maplibre']=_0x48b4a4,_0x530a7f[_0x308878(0xf7)]=new _0x48b4a4[(_0x308878(0x10a))]({'container':_0x5603bf[_0x308878(0xd8)]||_0x563280[_0x308878(0x10c)],'style':_0x50563d,'center':_0x5603bf[_0x308878(0xd3)]||[69.624024,40.279687],'zoom':_0x5603bf[_0x308878(0x160)]||0x5,'attributionControl':_0x5603bf['attributionControl']!==!0x1}),n[_0x308878(0x165)]=_0x530a7f,_0x530a7f;}static['getInstance'](){var _0x2f9a7b=a0_0x5f5a40,_0x31ee7d={'QXISo':_0x2f9a7b(0x198)};if(!n[_0x2f9a7b(0x165)])throw new Error(_0x31ee7d[_0x2f9a7b(0x110)]);return n[_0x2f9a7b(0x165)];}['addMarker'](_0x522877){var _0x574b05=a0_0x5f5a40,_0x22c20a={'wgCDO':function(_0x15029c,_0x365ad8,_0x5d8116,_0x29d7eb){return _0x15029c(_0x365ad8,_0x5d8116,_0x29d7eb);}};return _0x22c20a[_0x574b05(0xe6)](A,this[_0x574b05(0xf5)],this[_0x574b05(0xf7)],_0x522877);}[a0_0x5f5a40(0x153)](_0x4d31da){var _0x57819c=a0_0x5f5a40;this[_0x57819c(0xf7)]=_0x4d31da,this[_0x57819c(0x161)]=new h(_0x4d31da);}[a0_0x5f5a40(0x150)](){var _0x11fca3=a0_0x5f5a40;return this[_0x11fca3(0x161)];}[a0_0x5f5a40(0x119)](){return this['map'];}['setStyle'](_0x59e323){var _0x5ce3fc=a0_0x5f5a40,_0x42798e={'ErlRb':function(_0x4eb626,_0x18da16){return _0x4eb626===_0x18da16;}};this[_0x5ce3fc(0xf7)][_0x5ce3fc(0x11f)](_0x42798e[_0x5ce3fc(0x186)](_0x59e323,_0x5ce3fc(0xf1))?d[_0x5ce3fc(0xf1)]:d[_0x5ce3fc(0x142)]);}[a0_0x5f5a40(0x15f)](_0x52fb8d){var _0x47c076=a0_0x5f5a40;this[_0x47c076(0xf7)]['setCenter'](_0x52fb8d);}[a0_0x5f5a40(0x121)](_0x120f0e){var _0x41b760=a0_0x5f5a40;this[_0x41b760(0xf7)][_0x41b760(0x121)](_0x120f0e);}[a0_0x5f5a40(0xcf)](){var _0x55240b=a0_0x5f5a40;this[_0x55240b(0xf7)][_0x55240b(0x13a)](),n[_0x55240b(0x165)]=null;}};n[a0_0x5f5a40(0x165)]=null;var g=n,E=$(require(a0_0x5f5a40(0xce))),m=E['default'][a0_0x5f5a40(0x179)]({'baseURL':C});m[a0_0x5f5a40(0x146)][a0_0x5f5a40(0x113)][a0_0x5f5a40(0x135)](_0x217337=>_0x217337,_0x1bb7fd=>(_0x1bb7fd[a0_0x5f5a40(0x113)]?.[a0_0x5f5a40(0xde)]===0x191&&y(),Promise[a0_0x5f5a40(0x18d)](_0x1bb7fd)));var b={};w(b,{'clearKey':()=>y,'getApiKey':()=>c,'saveKey':()=>x});var M='';function x(_0x53bd88){var _0x4cd02b=a0_0x5f5a40;_0x53bd88!==''&&(M=_0x53bd88,m[_0x4cd02b(0x120)][_0x4cd02b(0x171)][_0x4cd02b(0x158)]['Authorization']=_0x4cd02b(0x132)+_0x53bd88);}function y(){var _0x59bfcc=a0_0x5f5a40,_0x11d0d9={'DfAlN':_0x59bfcc(0xe4),'MFuNq':function(_0x19b735,_0x597fdb){return _0x19b735!==_0x597fdb;},'tYwGB':'bFgaO','teWlu':_0x59bfcc(0xe0),'yBxuc':function(_0x405244,_0x21f186){return _0x405244-_0x21f186;},'TLUuN':function(_0x50a7c4,_0x85fd32){return _0x50a7c4<<_0x85fd32;},'bQJLB':function(_0x298be5,_0x4874ae){return _0x298be5>=_0x4874ae;},'OpgME':function(_0x129fe9,_0x507f36){return _0x129fe9>>_0x507f36;},'BVVem':function(_0x55d7ab,_0x2e5dd0){return _0x55d7ab*_0x2e5dd0;},'vmeto':function(_0x403561,_0x16cccc){return _0x403561(_0x16cccc);},'GZJfz':function(_0x207ce9,_0x412578){return _0x207ce9+_0x412578;},'saVuq':_0x59bfcc(0xdc),'UeAJe':_0x59bfcc(0x102),'gAmLi':_0x59bfcc(0x114),'RGYNk':_0x59bfcc(0x15b),'FxHXL':_0x59bfcc(0x167),'FpueJ':_0x59bfcc(0xf3),'KTDOr':_0x59bfcc(0x18b),'GBcri':'table','GVCuD':_0x59bfcc(0x134),'MFRJd':function(_0x29d98c,_0x3f18c6){return _0x29d98c<_0x3f18c6;},'LNpaU':function(_0x344d79){return _0x344d79();}},_0x48d710=(function(){var _0xd0f2b8={'QMvgO':function(_0x245cf8,_0x54fa70){return _0x245cf8<_0x54fa70;},'oOvZJ':function(_0x5bcf4a,_0x53f3d6){var _0x5414cc=a0_0x108b;return _0x11d0d9[_0x5414cc(0x17f)](_0x5bcf4a,_0x53f3d6);},'lWqMX':function(_0x4cfa7b,_0x5409d8){var _0x57d7a9=a0_0x108b;return _0x11d0d9[_0x57d7a9(0xe2)](_0x4cfa7b,_0x5409d8);},'jOXxp':function(_0x423653,_0xb26b2b){return _0x423653&_0xb26b2b;},'SixJP':function(_0x11b174,_0x386192){var _0x56d4b3=a0_0x108b;return _0x11d0d9[_0x56d4b3(0xda)](_0x11b174,_0x386192);},'NddEv':function(_0x1edb13,_0x33419b){return _0x11d0d9['OpgME'](_0x1edb13,_0x33419b);},'UbcZh':function(_0x442750,_0xbad8b5){return _0x11d0d9['bQJLB'](_0x442750,_0xbad8b5);},'toqUw':function(_0x2ad954,_0x5ecc28){return _0x11d0d9['BVVem'](_0x2ad954,_0x5ecc28);}},_0xbd30a=!![];return function(_0x2a4ef0,_0x442c3a){var _0x536f9a=a0_0x108b,_0x3f7f04={'rLsTo':_0x536f9a(0x11c),'FpycZ':_0x11d0d9[_0x536f9a(0xd6)]};if(_0x11d0d9[_0x536f9a(0x159)](_0x11d0d9[_0x536f9a(0x174)],_0x11d0d9['teWlu'])){var _0x582398=_0xbd30a?function(){var _0x2a1440=_0x536f9a;if(_0x442c3a){if(_0x3f7f04[_0x2a1440(0x116)]===_0x3f7f04['FpycZ']){var _0x7951ba=_0x2cd69b['apply'](_0x3a0756,arguments);return _0x3577ab=null,_0x7951ba;}else{var _0x47b9c4=_0x442c3a[_0x2a1440(0xf9)](_0x2a4ef0,arguments);return _0x442c3a=null,_0x47b9c4;}}}:function(){};return _0xbd30a=![],_0x582398;}else{let _0x2d33f2=[],_0x252fc3=0x0,_0x5b6021=_0x3a61c8[_0x536f9a(0xe7)],_0x520db6=0x0,_0x4e9da9=0x0;for(;_0xd0f2b8[_0x536f9a(0x196)](_0x252fc3,_0x5b6021);){let _0x5f08e0,_0x5edaf6=0x0,_0x285f6a=0x0;do _0x5f08e0=_0xd0f2b8['oOvZJ'](_0x4e571f[_0x536f9a(0xfe)](_0x252fc3++),0x3f),_0x285f6a|=_0xd0f2b8[_0x536f9a(0x12a)](_0xd0f2b8[_0x536f9a(0x131)](_0x5f08e0,0x1f),_0x5edaf6),_0x5edaf6+=0x5;while(_0xd0f2b8[_0x536f9a(0x17d)](_0x5f08e0,0x20));let _0x22657d=_0xd0f2b8['jOXxp'](_0x285f6a,0x1)?~_0xd0f2b8[_0x536f9a(0x156)](_0x285f6a,0x1):_0xd0f2b8[_0x536f9a(0x156)](_0x285f6a,0x1);_0x520db6+=_0x22657d,_0x5edaf6=0x0,_0x285f6a=0x0;do _0x5f08e0=_0xd0f2b8[_0x536f9a(0x101)](_0x4cda78['charCodeAt'](_0x252fc3++),0x3f),_0x285f6a|=_0xd0f2b8['lWqMX'](_0xd0f2b8['jOXxp'](_0x5f08e0,0x1f),_0x5edaf6),_0x5edaf6+=0x5;while(_0xd0f2b8[_0x536f9a(0xd0)](_0x5f08e0,0x20));let _0x48dd16=_0xd0f2b8[_0x536f9a(0x131)](_0x285f6a,0x1)?~(_0x285f6a>>0x1):_0xd0f2b8['NddEv'](_0x285f6a,0x1);_0x4e9da9+=_0x48dd16,_0x2d33f2[_0x536f9a(0x192)]([_0xd0f2b8[_0x536f9a(0x10d)](_0x4e9da9,0.00001),_0x520db6*0.00001]);}return _0x2d33f2;}};}()),_0x5e8f7f=_0x48d710(this,function(){var _0x244d95=_0x59bfcc,_0x1f6424={'fOnrU':function(_0x55f1ab,_0x3757fb){return _0x11d0d9['vmeto'](_0x55f1ab,_0x3757fb);},'kTEFO':function(_0x3d1a1b,_0x4e9fd7){return _0x11d0d9['GZJfz'](_0x3d1a1b,_0x4e9fd7);},'CjOPw':_0x11d0d9[_0x244d95(0x12c)],'xSxoE':_0x11d0d9[_0x244d95(0x143)]},_0x3d2d26=function(){var _0x443dd6=_0x244d95,_0x44240c;try{_0x44240c=_0x1f6424[_0x443dd6(0x175)](Function,_0x1f6424[_0x443dd6(0x11e)](_0x1f6424[_0x443dd6(0x11e)](_0x1f6424[_0x443dd6(0x18c)],_0x1f6424[_0x443dd6(0xec)]),');'))();}catch(_0x3510bf){_0x44240c=window;}return _0x44240c;},_0x5dd3fe=_0x3d2d26(),_0x5557f0=_0x5dd3fe['console']=_0x5dd3fe[_0x244d95(0x105)]||{},_0x4f381a=[_0x11d0d9[_0x244d95(0x168)],_0x11d0d9['RGYNk'],_0x11d0d9[_0x244d95(0x11a)],_0x11d0d9['FpueJ'],_0x11d0d9[_0x244d95(0x172)],_0x11d0d9[_0x244d95(0x107)],_0x11d0d9[_0x244d95(0xcb)]];for(var _0x5a4c44=0x0;_0x11d0d9[_0x244d95(0x189)](_0x5a4c44,_0x4f381a[_0x244d95(0xe7)]);_0x5a4c44++){var _0x23a700=_0x48d710[_0x244d95(0x16a)]['prototype']['bind'](_0x48d710),_0xa45900=_0x4f381a[_0x5a4c44],_0x18fe94=_0x5557f0[_0xa45900]||_0x23a700;_0x23a700[_0x244d95(0x111)]=_0x48d710['bind'](_0x48d710),_0x23a700[_0x244d95(0xef)]=_0x18fe94[_0x244d95(0xef)][_0x244d95(0x185)](_0x18fe94),_0x5557f0[_0xa45900]=_0x23a700;}});_0x11d0d9[_0x59bfcc(0xcd)](_0x5e8f7f),(M='',m[_0x59bfcc(0x120)][_0x59bfcc(0x171)][_0x59bfcc(0x158)][_0x59bfcc(0x14e)]='');}var c=()=>M;function L(_0x53dbdd,_0x559c36){var _0x2e31b0={'zYXOm':function(_0x202fe0,..._0x3e5967){return _0x202fe0(..._0x3e5967);},'OgiCm':function(_0x55ae13,_0x1fcdaa,_0x45c3bd){return _0x55ae13(_0x1fcdaa,_0x45c3bd);}};let _0xca6d62;return(..._0x2e6b23)=>(_0xca6d62&&clearTimeout(_0xca6d62),new Promise(_0x48cc6f=>{var _0x4f4d2e=a0_0x108b;_0xca6d62=_0x2e31b0[_0x4f4d2e(0x16e)](setTimeout,async()=>{var _0x76ef2=_0x4f4d2e,_0x41d095=await _0x2e31b0['zYXOm'](_0x53dbdd,..._0x2e6b23);_0x2e31b0[_0x76ef2(0x13e)](_0x48cc6f,_0x41d095);},_0x559c36);}));}var R=async _0x2b6b80=>{var _0x3c5110=a0_0x5f5a40,_0x19ca12={'kakcs':function(_0x5cf045,_0x56693c){return _0x5cf045!==_0x56693c;},'IRZEg':_0x3c5110(0xdd),'Hhzwa':_0x3c5110(0x178),'aeHAH':_0x3c5110(0xc5),'cLqWf':_0x3c5110(0x14a)};try{if(_0x19ca12[_0x3c5110(0xf2)](_0x19ca12[_0x3c5110(0xd9)],_0x19ca12['Hhzwa']))return(await m[_0x3c5110(0x193)](_0x19ca12[_0x3c5110(0xd1)],_0x2b6b80))[_0x3c5110(0x182)];else throw _0x47ca89;}catch(_0x3dc9de){throw console['error'](_0x19ca12[_0x3c5110(0x125)],_0x3dc9de),_0x3dc9de;}};async function H(_0xf90f5a,_0xdbe465,_0x847d5c){var _0x985bbc=a0_0x5f5a40,_0x5554f2={'lSrCs':function(_0x153c79){return _0x153c79();},'nFKdh':function(_0x5c13d9,_0x30e7be){return _0x5c13d9(_0x30e7be);}};let _0x3a9e81={'text':_0xf90f5a,'token':_0xdbe465||_0x5554f2['lSrCs'](c),..._0x847d5c};try{return await _0x5554f2[_0x985bbc(0xca)](R,_0x3a9e81);}catch(_0x4dbcdb){throw _0x4dbcdb;}}var X=L(H,0x1f4);async function G(_0x212e0a,_0x532f99,_0x467b92){var _0x3b06bd=a0_0x5f5a40,_0x39a8d5={'AAeRq':function(_0x43ac60,_0x3f709b,_0x5aba29,_0x59937c){return _0x43ac60(_0x3f709b,_0x5aba29,_0x59937c);}};return await _0x39a8d5[_0x3b06bd(0x177)](X,_0x212e0a,_0x532f99,_0x467b92);}var B=async(_0x31cc2d,_0x3edd9c)=>{var _0x34fe15=a0_0x5f5a40,_0x22431d={'HNDoH':function(_0x459dd7,_0x28edc6){return _0x459dd7+_0x28edc6;},'QmcMs':'return\x20(function()\x20','XQyPF':'{}.constructor(\x22return\x20this\x22)(\x20)','dsBAL':function(_0x2c5202,_0x1823f9){return _0x2c5202!==_0x1823f9;},'DgicI':_0x34fe15(0xe5),'hiToG':_0x34fe15(0x164),'WAugG':_0x34fe15(0xc6),'NdIyC':function(_0x12de2a){return _0x12de2a();}};try{if(_0x22431d[_0x34fe15(0x184)]===_0x22431d[_0x34fe15(0x184)]){let _0x56847a=[];return _0x31cc2d[_0x34fe15(0xfb)](_0x250988=>{var _0x274501=_0x34fe15;_0x22431d[_0x274501(0x10e)](_0x22431d['DgicI'],_0x274501(0xe5))?_0x24ac30=_0x235687(fpfzMv[_0x274501(0x169)](fpfzMv[_0x274501(0x183)],fpfzMv[_0x274501(0x10f)])+');')():_0x56847a['push']({'lng':_0x250988[0x0],'lat':_0x250988[0x1]});}),(await m['post'](_0x22431d[_0x34fe15(0x133)],{'points':_0x56847a,'token':_0x3edd9c||_0x22431d[_0x34fe15(0xe9)](c)}))['data'];}else{let _0x32d6f3=new _0x5b9bf9(_0x123715[_0x34fe15(0xdf)])[_0x34fe15(0x149)][_0x34fe15(0x138)](_0x34fe15(0xd5));if(_0x32d6f3)return _0x32d6f3;}}catch(_0x1783cf){throw console[_0x34fe15(0xf3)](_0x1783cf),_0x1783cf;}};async function _(_0x15b7a7,_0x1c2348,_0x20d6b0){var _0x2480a8=a0_0x5f5a40,_0x471fcc={'QIXkO':function(_0x261145,_0x131242,_0x3b5b60){return _0x261145(_0x131242,_0x3b5b60);}};try{let _0x20cd4a=await _0x471fcc[_0x2480a8(0x180)](B,_0x15b7a7,_0x20d6b0);return _0x20cd4a?.[_0x2480a8(0x182)]?_0x20cd4a['data'][_0x2480a8(0xf7)](_0x567996=>{var _0x120715=_0x2480a8;let _0x4dd0e9={..._0x567996};return _0x4dd0e9['route']?.['routes']?.['length']&&(_0x4dd0e9[_0x120715(0x14b)]['routes']=_0x4dd0e9[_0x120715(0x14b)][_0x120715(0xfd)][_0x120715(0xf7)](_0x36ab30=>({..._0x36ab30,'geometry':_0x1c2348==='geojson'&&typeof _0x36ab30['geometry']==_0x120715(0x157)?k(_0x36ab30[_0x120715(0xf0)]):_0x36ab30[_0x120715(0xf0)]}))),_0x4dd0e9;}):_0x20cd4a;}catch(_0x1c7681){throw _0x1c7681;}}function z(){var _0x2a9775=a0_0x5f5a40,_0x109540={'gMdgG':_0x2a9775(0x137),'mpGLY':'oOJGy','RofaN':_0x2a9775(0x144)};let _0x5eba6e=document[_0x2a9775(0xe1)](_0x109540[_0x2a9775(0xee)]);for(let _0x3d05b2 of _0x5eba6e)if(_0x3d05b2[_0x2a9775(0xdf)][_0x2a9775(0x13c)](_0x2a9775(0x16b))){if(_0x109540[_0x2a9775(0x145)]!==_0x109540['RofaN']){let _0x4d0790=new URL(_0x3d05b2[_0x2a9775(0xdf)])[_0x2a9775(0x149)]['get'](_0x2a9775(0xd5));if(_0x4d0790)return _0x4d0790;}else{let _0x1c16ae={..._0x1a1ca2};return _0x1c16ae[_0x2a9775(0x14b)]?.[_0x2a9775(0xfd)]?.['length']&&(_0x1c16ae[_0x2a9775(0x14b)][_0x2a9775(0xfd)]=_0x1c16ae[_0x2a9775(0x14b)]['routes'][_0x2a9775(0xf7)](_0x3da34f=>({..._0x3da34f,'geometry':_0x3fd943===_0x2a9775(0x112)&&typeof _0x3da34f['geometry']=='string'?_0x11c3ff(_0x3da34f[_0x2a9775(0xf0)]):_0x3da34f[_0x2a9775(0xf0)]}))),_0x1c16ae;}}return'';}x(z()),0x0&&(module['exports']={'MahalMap':MahalMap,'MahalMapDefaultMarker':MahalMapDefaultMarker,'Router':Router,'Search':Search,'keyUtils':keyUtils});
1
+ 'use strict';var a0_0x591421=a0_0x43b2;(function(_0x190796,_0x509c0b){var _0x1e4506=a0_0x43b2,_0x3224b9=_0x190796();while(!![]){try{var _0x1df4e3=parseInt(_0x1e4506(0x16d))/0x1+parseInt(_0x1e4506(0x171))/0x2*(-parseInt(_0x1e4506(0x140))/0x3)+parseInt(_0x1e4506(0x1c4))/0x4*(parseInt(_0x1e4506(0x15a))/0x5)+parseInt(_0x1e4506(0x190))/0x6+parseInt(_0x1e4506(0x1be))/0x7+parseInt(_0x1e4506(0x19b))/0x8*(parseInt(_0x1e4506(0x19d))/0x9)+parseInt(_0x1e4506(0x1bb))/0xa*(-parseInt(_0x1e4506(0x1c5))/0xb);if(_0x1df4e3===_0x509c0b)break;else _0x3224b9['push'](_0x3224b9['shift']());}catch(_0x4aa11a){_0x3224b9['push'](_0x3224b9['shift']());}}}(a0_0x2491,0xe1741));var j=Object['create'],h=Object[a0_0x591421(0x1b1)],F=Object['getOwnPropertyDescriptor'],N=Object[a0_0x591421(0x180)],O=Object[a0_0x591421(0x19e)],U=Object[a0_0x591421(0x18e)]['hasOwnProperty'],w=(_0x3aaa05,_0x1f1036)=>{var _0x11ceb5={'rMiht':function(_0x5a5281,_0x1e2eed,_0x1d2cad,_0x30a303){return _0x5a5281(_0x1e2eed,_0x1d2cad,_0x30a303);}};for(var _0x4a99e3 in _0x1f1036)_0x11ceb5['rMiht'](h,_0x3aaa05,_0x4a99e3,{'get':_0x1f1036[_0x4a99e3],'enumerable':!0x0});},C=(_0x14c3d2,_0x14695f,_0x45b90d,_0x54d738)=>{var _0x591f1a=a0_0x591421,_0x22d3b1={'bkwnl':function(_0x82fe7c,_0x599c41){return _0x82fe7c==_0x599c41;},'QkcdB':_0x591f1a(0x192),'gRwVh':function(_0x379947,_0x2988e1){return _0x379947==_0x2988e1;},'inZIC':_0x591f1a(0x194),'AcQXE':function(_0x56af49,_0x487126){return _0x56af49(_0x487126);},'spLwr':function(_0x5ea1de,_0x3315b8){return _0x5ea1de!==_0x3315b8;},'OwiSv':function(_0x3bca8a,_0x2ea76f,_0x279e4f,_0x3eac1b){return _0x3bca8a(_0x2ea76f,_0x279e4f,_0x3eac1b);},'rAIBl':function(_0x536bff,_0x2d0ee4,_0x2f6de1){return _0x536bff(_0x2d0ee4,_0x2f6de1);}};if(_0x14695f&&_0x22d3b1[_0x591f1a(0x16c)](typeof _0x14695f,_0x22d3b1[_0x591f1a(0x151)])||_0x22d3b1[_0x591f1a(0x1a6)](typeof _0x14695f,_0x22d3b1['inZIC'])){for(let _0x55f368 of _0x22d3b1[_0x591f1a(0x18c)](N,_0x14695f))!U[_0x591f1a(0x1b8)](_0x14c3d2,_0x55f368)&&_0x22d3b1[_0x591f1a(0x1d3)](_0x55f368,_0x45b90d)&&_0x22d3b1[_0x591f1a(0x182)](h,_0x14c3d2,_0x55f368,{'get':()=>_0x14695f[_0x55f368],'enumerable':!(_0x54d738=_0x22d3b1['rAIBl'](F,_0x14695f,_0x55f368))||_0x54d738[_0x591f1a(0x1d9)]});}return _0x14c3d2;},$=(_0x219f4c,_0x154644,_0x1247f9)=>(_0x1247f9=_0x219f4c!=null?j(O(_0x219f4c)):{},C(_0x154644||!_0x219f4c||!_0x219f4c[a0_0x591421(0x13b)]?h(_0x1247f9,a0_0x591421(0x1af),{'value':_0x219f4c,'enumerable':!0x0}):_0x1247f9,_0x219f4c)),Z=_0x5c2e0d=>C(h({},a0_0x591421(0x13b),{'value':!0x0}),_0x5c2e0d),V={};w(V,{'MahalMap':()=>g,'MahalMapDefaultMarker':()=>f,'Router':()=>K,'Search':()=>G,'keyUtils':()=>b}),module[a0_0x591421(0x12c)]=Z(V);var v=a0_0x591421(0x150),T=a0_0x591421(0x1aa),S=a0_0x591421(0x14a),k='https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json';function P(_0x1bbe68){var _0x24082a=a0_0x591421,_0x6372ee={'LyqSG':function(_0x190328,_0xa07dd5){return _0x190328<_0xa07dd5;},'MWmXe':function(_0x2ff4e8,_0x56fe2d){return _0x2ff4e8-_0x56fe2d;},'CqMgO':function(_0x5592d7,_0x4aa107){return _0x5592d7<<_0x4aa107;},'RnLhD':function(_0x3b05f1,_0x3409d9){return _0x3b05f1&_0x3409d9;},'Epadr':function(_0x44429c,_0x184fe3){return _0x44429c>>_0x184fe3;},'IhTzN':function(_0x2232ff,_0xcd246d){return _0x2232ff>>_0xcd246d;},'nyYPj':function(_0x1e603b,_0x429f12){return _0x1e603b&_0x429f12;},'YhYbc':function(_0x2e6a00,_0x163502){return _0x2e6a00>=_0x163502;},'omOJs':function(_0x1ddde8,_0x32fe41){return _0x1ddde8>>_0x32fe41;},'Pywue':function(_0xec4aef,_0xf1c43e){return _0xec4aef*_0xf1c43e;}};let _0x4d2b4d=[],_0x157246=0x0,_0x44f8cd=_0x1bbe68[_0x24082a(0x19a)],_0x30c242=0x0,_0x5f5aa2=0x0;for(;_0x6372ee[_0x24082a(0x15b)](_0x157246,_0x44f8cd);){let _0x3082be,_0x21bc39=0x0,_0x20aec8=0x0;do _0x3082be=_0x6372ee['MWmXe'](_0x1bbe68[_0x24082a(0x134)](_0x157246++),0x3f),_0x20aec8|=_0x6372ee['CqMgO'](_0x6372ee[_0x24082a(0x18f)](_0x3082be,0x1f),_0x21bc39),_0x21bc39+=0x5;while(_0x3082be>=0x20);let _0x83be20=_0x6372ee[_0x24082a(0x18f)](_0x20aec8,0x1)?~_0x6372ee['Epadr'](_0x20aec8,0x1):_0x6372ee[_0x24082a(0x126)](_0x20aec8,0x1);_0x30c242+=_0x83be20,_0x21bc39=0x0,_0x20aec8=0x0;do _0x3082be=_0x6372ee['MWmXe'](_0x1bbe68['charCodeAt'](_0x157246++),0x3f),_0x20aec8|=_0x6372ee[_0x24082a(0x14b)](_0x6372ee[_0x24082a(0x166)](_0x3082be,0x1f),_0x21bc39),_0x21bc39+=0x5;while(_0x6372ee['YhYbc'](_0x3082be,0x20));let _0x43160d=_0x6372ee[_0x24082a(0x18f)](_0x20aec8,0x1)?~_0x6372ee['omOJs'](_0x20aec8,0x1):_0x20aec8>>0x1;_0x5f5aa2+=_0x43160d,_0x4d2b4d['push']([_0x6372ee[_0x24082a(0x16b)](_0x5f5aa2,0.00001),_0x6372ee[_0x24082a(0x16b)](_0x30c242,0.00001)]);}return _0x4d2b4d;}var c=class{constructor(_0x100538){var _0x228ae0=a0_0x591421;this[_0x228ae0(0x12b)]=_0x100538;}['setZoom'](_0x322c94,_0x218bf0=!0x0){var _0x157522=a0_0x591421;_0x218bf0?this[_0x157522(0x12b)][_0x157522(0x186)]({'zoom':_0x322c94}):this[_0x157522(0x12b)][_0x157522(0x143)](_0x322c94);}[a0_0x591421(0x163)](_0x1f6b95,_0x2e5779=!0x0){var _0x395e0d=a0_0x591421;_0x2e5779?this[_0x395e0d(0x12b)][_0x395e0d(0x186)]({'bearing':_0x1f6b95}):this['map']['setBearing'](_0x1f6b95);}['setPitch'](_0x555e0c,_0x23ed92=!0x0){var _0x11f17d=a0_0x591421;_0x23ed92?this[_0x11f17d(0x12b)]['easeTo']({'pitch':_0x555e0c}):this['map'][_0x11f17d(0x15d)](_0x555e0c);}[a0_0x591421(0x198)](_0xaf3347){var _0x251f2=a0_0x591421;this[_0x251f2(0x12b)][_0x251f2(0x186)]({'pitch':_0xaf3347?0x3c:0x0,'bearing':_0xaf3347?this[_0x251f2(0x12b)][_0x251f2(0x164)]():0x0,'duration':0x320});}['resetNorth'](){var _0x4fc029=a0_0x591421;this[_0x4fc029(0x12b)][_0x4fc029(0x186)]({'bearing':0x0,'pitch':0x0,'duration':0x258});}[a0_0x591421(0x1cf)](_0x1b634d){var _0x511466=a0_0x591421;this[_0x511466(0x12b)]['flyTo']({'speed':1.2,'curve':1.42,'essential':!0x0,..._0x1b634d});}[a0_0x591421(0x17c)](){var _0x17c573=a0_0x591421;return this[_0x17c573(0x12b)][_0x17c573(0x17c)]();}},E=(_0x374ca1,_0x1eb701)=>a0_0x591421(0x142)+(_0x374ca1||a0_0x591421(0x195))+a0_0x591421(0x18d)+(_0x374ca1||'#278960')+a0_0x591421(0x1b4)+(_0x1eb701??'')+a0_0x591421(0x13e),f=class{constructor(_0x57a265){var _0x36761a=a0_0x591421;this['props']=_0x57a265,this['element']=this[_0x36761a(0x159)]();}['createElement'](){var _0x2bfd51=a0_0x591421,_0x3f6f43={'YDTFi':_0x2bfd51(0x17f),'beitg':function(_0x47cb5f,_0x4cc585,_0x3e76cf){return _0x47cb5f(_0x4cc585,_0x3e76cf);}};let _0x46d4dd=document['createElement'](_0x3f6f43['YDTFi']);_0x46d4dd[_0x2bfd51(0x191)][_0x2bfd51(0x1a1)]=_0x2bfd51(0x196);let _0x43f3d6=this[_0x2bfd51(0x15e)]['svg']?this[_0x2bfd51(0x1b2)](this[_0x2bfd51(0x15e)]['svg']):_0x3f6f43[_0x2bfd51(0x1c7)](E,this[_0x2bfd51(0x15e)]['color']??_0x2bfd51(0x195),this['props'][_0x2bfd51(0x133)]);return _0x46d4dd[_0x2bfd51(0x152)]=_0x43f3d6,this[_0x2bfd51(0x15e)][_0x2bfd51(0x1d8)]&&(_0x46d4dd[_0x2bfd51(0x1d8)]=!0x0),_0x46d4dd;}[a0_0x591421(0x1b2)](_0x3924c5){var _0x37ed86=a0_0x591421;return this[_0x37ed86(0x15e)]['color']?_0x3924c5[_0x37ed86(0x124)](/fill="[^"]*"/g,_0x37ed86(0x1a7)+this[_0x37ed86(0x15e)]['color']+'\x22'):_0x3924c5;}[a0_0x591421(0x162)](){var _0x5616de=a0_0x591421;return this[_0x5616de(0x1d0)];}[a0_0x591421(0x148)](){var _0x728145=a0_0x591421;return this[_0x728145(0x15e)][_0x728145(0x169)];}[a0_0x591421(0x161)](){var _0x439f0c=a0_0x591421;return!!this[_0x439f0c(0x15e)][_0x439f0c(0x1d8)];}[a0_0x591421(0x121)](){var _0x474f2f=a0_0x591421,_0x278bdc={'GYFBM':_0x474f2f(0x1ba)};return this['props'][_0x474f2f(0x12d)]||_0x278bdc[_0x474f2f(0x1b5)];}};function a0_0x43b2(_0x5a76fc,_0x2c313e){var _0xca3518=a0_0x2491();return a0_0x43b2=function(_0x5a1521,_0x2e4525){_0x5a1521=_0x5a1521-0x120;var _0x589a9f=_0xca3518[_0x5a1521];return _0x589a9f;},a0_0x43b2(_0x5a76fc,_0x2c313e);}function A(_0x464123,_0x4f6d61,_0x4c5ab1){var _0xa4fe7c=a0_0x591421,_0x118b57={'nQoLy':_0xa4fe7c(0x1ba)};return new _0x464123[(_0xa4fe7c(0x19c))]({'element':_0x4c5ab1[_0xa4fe7c(0x162)](),'draggable':_0x4c5ab1[_0xa4fe7c(0x161)]?.()??!0x1,'anchor':_0x4c5ab1[_0xa4fe7c(0x121)]?.()??_0x118b57[_0xa4fe7c(0x184)]})[_0xa4fe7c(0x131)](_0x4c5ab1[_0xa4fe7c(0x148)]())['addTo'](_0x4f6d61);}var d={'dark':T,'light':S},n=class n{constructor(){var _0x4fd6e3=a0_0x591421;this[_0x4fd6e3(0x135)]=!0x1,this['readyCallbacks']=[];}static[a0_0x591421(0x1ae)](_0x120116,_0xd92f6a){var _0xd0dda1=a0_0x591421,_0x1963c5={'AxGXI':_0xd0dda1(0x146),'mmdDK':function(_0x5e42a5,_0x1c157f){return _0x5e42a5===_0x1c157f;},'sGZBh':_0xd0dda1(0x17b),'lwjQT':_0xd0dda1(0x12b),'vwczs':function(_0x5806a9,_0x78acb9){return _0x5806a9!==_0x78acb9;},'gXBeB':_0xd0dda1(0x157)};if(n['instance'])return n[_0xd0dda1(0x141)];let _0x36622e=window[_0xd0dda1(0x13c)]||_0xd92f6a;if(!_0x36622e)throw new Error(_0x1963c5[_0xd0dda1(0x129)]);let _0x197c4b=_0x120116['autoAddVectorSource']?k:_0x120116[_0xd0dda1(0x191)]?_0x120116['style']:_0x1963c5[_0xd0dda1(0x1b0)](_0x120116[_0xd0dda1(0x1a5)],_0x1963c5['sGZBh'])?d['dark']:d[_0xd0dda1(0x128)],_0x510260=new n();return _0x510260[_0xd0dda1(0x123)]=_0x120116,_0x510260[_0xd0dda1(0x1c6)]=_0x36622e,_0x510260[_0xd0dda1(0x12b)]=new _0x36622e[(_0xd0dda1(0x1c3))]({'container':_0x120116[_0xd0dda1(0x189)]||_0x1963c5[_0xd0dda1(0x1d1)],'style':_0x197c4b,'center':_0x120116[_0xd0dda1(0x1ba)]||[69.624024,40.279687],'zoom':_0x120116['zoom']||0x5,'attributionControl':_0x1963c5['vwczs'](_0x120116[_0xd0dda1(0x1bf)],!0x1)}),_0x510260[_0xd0dda1(0x12b)]['on'](_0x1963c5[_0xd0dda1(0x1b7)],()=>{var _0x3e22ce=_0xd0dda1;_0x510260[_0x3e22ce(0x135)]=!0x0,_0x510260['camera']=new c(_0x510260['map']),_0x510260[_0x3e22ce(0x127)][_0x3e22ce(0x181)](_0x284c61=>_0x284c61(_0x510260[_0x3e22ce(0x12b)])),_0x510260['readyCallbacks']=[];}),n['instance']=_0x510260,_0x510260;}static[a0_0x591421(0x1ca)](_0x37b561){var _0x359d52=a0_0x591421,_0x3042d4={'JwerN':_0x359d52(0x1bd),'TLVrm':function(_0x45c59e,_0x1a351c){return _0x45c59e(_0x1a351c);}};let _0x2c65c2=n[_0x359d52(0x141)];if(!_0x2c65c2)throw new Error(_0x3042d4[_0x359d52(0x13f)]);_0x2c65c2['isReady']?_0x3042d4[_0x359d52(0x149)](_0x37b561,_0x2c65c2[_0x359d52(0x12b)]):_0x2c65c2['readyCallbacks'][_0x359d52(0x17d)](_0x37b561);}static['getInstance'](){var _0x3c6272=a0_0x591421,_0x380cfc={'aqnVA':'[MahalMap\x20SDK]\x20Карта\x20ещё\x20не\x20создана'};if(!n[_0x3c6272(0x141)])throw new Error(_0x380cfc[_0x3c6272(0x172)]);return n[_0x3c6272(0x141)];}[a0_0x591421(0x1bc)](_0x2cf5c5){var _0x2e517a=a0_0x591421,_0xdc3486={'hStDl':function(_0x27d666,_0x2bab23,_0x4825ca,_0x269c63){return _0x27d666(_0x2bab23,_0x4825ca,_0x269c63);}};return _0xdc3486[_0x2e517a(0x1c2)](A,this[_0x2e517a(0x1c6)],this[_0x2e517a(0x12b)],_0x2cf5c5);}['init'](_0x16ecf7){var _0x3db13c=a0_0x591421;this[_0x3db13c(0x12b)]=_0x16ecf7,this['camera']=new c(_0x16ecf7);}[a0_0x591421(0x1c8)](){var _0x1c4091=a0_0x591421;return this[_0x1c4091(0x14c)];}['getMap'](){var _0x220ccd=a0_0x591421;return this[_0x220ccd(0x12b)];}['setStyle'](_0x9af0b5){var _0x5e7e5a=a0_0x591421,_0x189355={'oInDv':function(_0x5870ee,_0x178e10){return _0x5870ee===_0x178e10;}};this[_0x5e7e5a(0x12b)][_0x5e7e5a(0x158)](_0x189355[_0x5e7e5a(0x18b)](_0x9af0b5,'dark')?d[_0x5e7e5a(0x17b)]:d[_0x5e7e5a(0x128)]);}[a0_0x591421(0x197)](_0x4a17e1){var _0x3b42a3=a0_0x591421;this[_0x3b42a3(0x12b)][_0x3b42a3(0x197)](_0x4a17e1);}[a0_0x591421(0x143)](_0x1db648){var _0x46a681=a0_0x591421;this[_0x46a681(0x12b)]['setZoom'](_0x1db648);}[a0_0x591421(0x16e)](){var _0x370863=a0_0x591421;this[_0x370863(0x12b)][_0x370863(0x12a)](),n['instance']=null;}};n['instance']=null;var g=n,I=$(require(a0_0x591421(0x160))),m=I[a0_0x591421(0x1af)]['create']({'baseURL':v});m[a0_0x591421(0x1cc)][a0_0x591421(0x1d7)][a0_0x591421(0x1a3)](_0x580b0b=>_0x580b0b,_0x116a81=>(_0x116a81['request']?.[a0_0x591421(0x145)]===0x191&&y(),Promise[a0_0x591421(0x174)](_0x116a81)));var b={};w(b,{'clearKey':()=>y,'getApiKey':()=>u,'saveKey':()=>x});var M='';function x(_0x3379d2){var _0x2352e7=a0_0x591421;_0x3379d2!==''&&(M=_0x3379d2,m['defaults'][_0x2352e7(0x1d6)][_0x2352e7(0x1d4)]['Authorization']=_0x2352e7(0x179)+_0x3379d2);}function y(){var _0x314202=a0_0x591421,_0xbf3c65={'HMklb':function(_0x1b1195,_0x36d5eb){return _0x1b1195+_0x36d5eb;},'ruRJl':'{}.constructor(\x22return\x20this\x22)(\x20)','kvyRH':_0x314202(0x1ad),'qtrxm':function(_0x275d59){return _0x275d59();},'EXxFT':_0x314202(0x165),'KElcO':_0x314202(0x1a0),'dHdnG':_0x314202(0x177),'phPoK':_0x314202(0x19f),'xsZhP':_0x314202(0x16a),'wbApT':function(_0x374bed,_0x54b14a){return _0x374bed<_0x54b14a;},'vgOkW':function(_0x502d1e,_0x326917,_0x494fba){return _0x502d1e(_0x326917,_0x494fba);}},_0x43bc6d=(function(){var _0x182c34=!![];return function(_0x13a4a9,_0x5d6295){var _0x587786=_0x182c34?function(){var _0xbfe303=a0_0x43b2;if(_0x5d6295){var _0x4c6634=_0x5d6295[_0xbfe303(0x176)](_0x13a4a9,arguments);return _0x5d6295=null,_0x4c6634;}}:function(){};return _0x182c34=![],_0x587786;};}()),_0x6a2823=_0xbf3c65[_0x314202(0x137)](_0x43bc6d,this,function(){var _0x59c119=_0x314202,_0x487b20=function(){var _0x4a5850=a0_0x43b2,_0x3206bc;try{_0x3206bc=Function(_0xbf3c65[_0x4a5850(0x1b3)](_0xbf3c65[_0x4a5850(0x1b3)](_0x4a5850(0x12e),_0xbf3c65[_0x4a5850(0x1d5)]),');'))();}catch(_0x5d0bdd){_0x4a5850(0x1ad)!==_0xbf3c65['kvyRH']?_0x3a2f93=_0x333c05:_0x3206bc=window;}return _0x3206bc;},_0x2307be=_0xbf3c65[_0x59c119(0x1ab)](_0x487b20),_0x113964=_0x2307be['console']=_0x2307be['console']||{},_0x2b44b9=[_0xbf3c65[_0x59c119(0x187)],_0xbf3c65['KElcO'],'info',_0xbf3c65[_0x59c119(0x13a)],_0xbf3c65[_0x59c119(0x1cb)],_0x59c119(0x14d),_0xbf3c65[_0x59c119(0x1ce)]];for(var _0x525317=0x0;_0xbf3c65[_0x59c119(0x168)](_0x525317,_0x2b44b9[_0x59c119(0x19a)]);_0x525317++){var _0xe07195=_0x43bc6d[_0x59c119(0x1d2)][_0x59c119(0x18e)][_0x59c119(0x1b6)](_0x43bc6d),_0x2d3965=_0x2b44b9[_0x525317],_0xc53273=_0x113964[_0x2d3965]||_0xe07195;_0xe07195[_0x59c119(0x1cd)]=_0x43bc6d['bind'](_0x43bc6d),_0xe07195[_0x59c119(0x17e)]=_0xc53273[_0x59c119(0x17e)][_0x59c119(0x1b6)](_0xc53273),_0x113964[_0x2d3965]=_0xe07195;}});_0xbf3c65[_0x314202(0x1ab)](_0x6a2823),(M='',m[_0x314202(0x167)][_0x314202(0x1d6)]['common'][_0x314202(0x156)]='');}var u=()=>M;function L(_0x190346,_0x5e3d8b){var _0x40b728={'YbvKE':function(_0x2862e0,..._0x41a736){return _0x2862e0(..._0x41a736);},'UJZgP':function(_0x8325db,_0x351d42){return _0x8325db(_0x351d42);},'mExDY':function(_0x3d4136,_0x1f32b2,_0x1c992){return _0x3d4136(_0x1f32b2,_0x1c992);}};let _0x538fc1;return(..._0x6728ce)=>(_0x538fc1&&clearTimeout(_0x538fc1),new Promise(_0x56e030=>{var _0x53d9de=a0_0x43b2;_0x538fc1=_0x40b728[_0x53d9de(0x18a)](setTimeout,async()=>{var _0x2a0102=_0x53d9de,_0x41e38f=await _0x40b728[_0x2a0102(0x1b9)](_0x190346,..._0x6728ce);_0x40b728[_0x2a0102(0x178)](_0x56e030,_0x41e38f);},_0x5e3d8b);}));}var R=async _0x12cc04=>{var _0x223deb=a0_0x591421,_0x5c2fa4={'ReAUj':_0x223deb(0x154)};try{return(await m['post'](_0x223deb(0x155),_0x12cc04))[_0x223deb(0x14f)];}catch(_0x14a758){throw console[_0x223deb(0x177)](_0x5c2fa4['ReAUj'],_0x14a758),_0x14a758;}};async function H(_0x2f0492,_0x16f5ca,_0x3f6b49){var _0x30e76f=a0_0x591421,_0x301337={'uozTs':function(_0x21f573){return _0x21f573();}};let _0x3198b6={'text':_0x2f0492,'token':_0x16f5ca||_0x301337[_0x30e76f(0x147)](u),..._0x3f6b49};try{return await R(_0x3198b6);}catch(_0x58ae18){throw _0x58ae18;}}var X=L(H,0x1f4);async function G(_0x3ea140,_0x2a6890,_0x5ab80d){return await X(_0x3ea140,_0x2a6890,_0x5ab80d);}var B=async(_0x4455ad,_0x579f1d)=>{var _0x14654a=a0_0x591421,_0x2873f3={'Dmyep':function(_0xda0271,_0x4bc69a){return _0xda0271===_0x4bc69a;},'cvanF':_0x14654a(0x173),'oJxBd':_0x14654a(0x185),'AtSYW':function(_0x4dd811){return _0x4dd811();}};try{let _0x34afa3=[];return _0x4455ad['forEach'](_0x325647=>{var _0x10b4bc=_0x14654a;_0x2873f3[_0x10b4bc(0x1c9)](_0x2873f3[_0x10b4bc(0x125)],_0x10b4bc(0x173))?_0x34afa3[_0x10b4bc(0x17d)]({'lng':_0x325647[0x0],'lat':_0x325647[0x1]}):(this[_0x10b4bc(0x15e)]=_0x84b5c9,this[_0x10b4bc(0x1d0)]=this[_0x10b4bc(0x159)]());}),(await m[_0x14654a(0x138)](_0x2873f3[_0x14654a(0x1c1)],{'points':_0x34afa3,'token':_0x579f1d||_0x2873f3[_0x14654a(0x183)](u)}))['data'];}catch(_0x1b832e){throw console['error'](_0x1b832e),_0x1b832e;}};function a0_0x2491(){var _0x262cd5=['request','draggable','enumerable','QTOOv','getAnchor','GWEDC','options','replace','cvanF','IhTzN','readyCallbacks','light','AxGXI','remove','map','exports','anchor','return\x20(function()\x20','routes','birlw','setLngLat','KPFzc','innerSvg','charCodeAt','isReady','route','vgOkW','post','getElementsByTagName','dHdnG','__esModule','maplibregl','searchParams','\x0a\x20\x20\x20\x20\x20\x20\x20\x20</g>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<defs>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<filter\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id=\x22filter0_d_367_31358\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20x=\x220\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20y=\x220\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width=\x2250\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height=\x2255\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20filterUnits=\x22userSpaceOnUse\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color-interpolation-filters=\x22sRGB\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feFlood\x20flood-opacity=\x220\x22\x20result=\x22BackgroundImageFix\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feColorMatrix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in=\x22SourceAlpha\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22matrix\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20values=\x220\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x200\x20127\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result=\x22hardAlpha\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feOffset\x20dy=\x222\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feGaussianBlur\x20stdDeviation=\x222\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feComposite\x20in2=\x22hardAlpha\x22\x20operator=\x22out\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feColorMatrix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22matrix\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20values=\x220\x200\x200\x200\x200.250234\x200\x200\x200\x200\x200.660089\x200\x200\x200\x200\x200.488619\x200\x200\x200\x200.24\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feBlend\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mode=\x22normal\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in2=\x22BackgroundImageFix\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result=\x22effect1_dropShadow_367_31358\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<feBlend\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20mode=\x22normal\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in=\x22SourceGraphic\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20in2=\x22effect1_dropShadow_367_31358\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result=\x22shape\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</filter>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<clipPath\x20id=\x22clip0_367_31358\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<rect\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width=\x2222\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height=\x2222\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22white\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20transform=\x22translate(14\x2012)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</clipPath>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</defs>\x0a\x20\x20\x20\x20\x20\x20</svg>','JwerN','1484886jtwZFi','instance','<svg\x0a\x20\x20\x20\x20\x20\x20\x20\x20width=\x2250\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20height=\x2262\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20viewBox=\x220\x200\x2050\x2062\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22none\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<g\x20filter=\x22url(#filter0_d_367_31358)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill-rule=\x22evenodd\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20clip-rule=\x22evenodd\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20d=\x22M25\x202C36.598\x202\x2046\x2011.402\x2046\x2023C46\x2033.1603\x2038.7844\x2041.6353\x2029.198\x2043.5803L25.6524\x2048.6575C25.5788\x2048.7633\x2025.4812\x2048.8497\x2025.3676\x2048.9093C25.254\x2048.9689\x2025.128\x2049\x2025\x2049C24.872\x2049\x2024.746\x2048.9689\x2024.6324\x2048.9093C24.5188\x2048.8497\x2024.4212\x2048.7633\x2024.3476\x2048.6575L20.802\x2043.5803C11.2156\x2041.6353\x204\x2033.1603\x204\x2023C4\x2011.402\x2013.402\x202\x2025\x202Z\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22','setZoom','iGUbv','status','[MahalMap\x20SDK]\x20MapLibre\x20GL\x20не\x20найден.\x20Передай\x20его\x20вторым\x20аргументом\x20или\x20подключи\x20через\x20script.','uozTs','getCoordinates','TLVrm','https://mtile.gram.tj/custom-styles/mapstyle.json','CqMgO','camera','table','mahal_map.sdk.js','data','https://platform.mahal.tj/api/','QkcdB','innerHTML','eTXRq','Ошибка\x20при\x20поиске\x20адреса:','services/getAddress','Authorization','load','setStyle','createElement','1585975KsjqPx','LyqSG','geojson','setPitch','props','XhIGi','axios','isDraggable','getElement','setBearing','getBearing','log','nyYPj','defaults','wbApT','coordinates','trace','Pywue','bkwnl','1614175YjARSX','destroy','geometry','src','2megzGM','aqnVA','BsbrO','reject','script','apply','error','UJZgP','Bearer\x20','nkyNp','dark','getPitch','push','toString','div','getOwnPropertyNames','forEach','OwiSv','AtSYW','nQoLy','services/getRoutes','easeTo','EXxFT','get','container','mExDY','oInDv','AcQXE','\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</g>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<path\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20d=\x22M25\x2051C27.7614\x2051\x2030\x2053.2386\x2030\x2056C30\x2058.7614\x2027.7614\x2061\x2025\x2061C22.2386\x2061\x2020\x2058.7614\x2020\x2056C20\x2053.2386\x2022.2386\x2051\x2025\x2051Z\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fill=\x22','prototype','RnLhD','10180506cbemsi','style','object','lZddK','function','#278960','pointer','setCenter','toggle3D','string','length','1288624ZEFGIL','Marker','9jggRvG','getPrototypeOf','exception','warn','cursor','MTZFK','use','includes','theme','gRwVh','fill=\x22','WFzWt','apikey','https://mtile.gram.tj/custom-styles/dark-style.json','qtrxm','UtVlk','ohAvA','create','default','mmdDK','defineProperty','applyColorToCustomSvg','HMklb','\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stroke=\x22white\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stroke-width=\x222\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<g\x20clip-path=\x22url(#clip0_367_31358)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20','GYFBM','bind','gXBeB','call','YbvKE','center','20ydIiRX','addMarker','[MahalMap\x20SDK]\x20Карта\x20ещё\x20не\x20создана','4333238ZhlDvA','attributionControl','fDhje','oJxBd','hStDl','Map','4vhBDjv','16443977esywzP','maplibre','beitg','getCamera','Dmyep','onReady','phPoK','interceptors','__proto__','xsZhP','flyTo','element','lwjQT','constructor','spLwr','common','ruRJl','headers'];a0_0x2491=function(){return _0x262cd5;};return a0_0x2491();}async function K(_0x4b2a0e,_0x3aeae5,_0x5e2f80){var _0x21575b=a0_0x591421,_0x2225a6={'QTOOv':function(_0x10e40a,_0x2b6ad9){return _0x10e40a!==_0x2b6ad9;},'nkyNp':function(_0x2a1bbc,_0x202601){return _0x2a1bbc!==_0x202601;},'KPFzc':_0x21575b(0x193),'fDhje':_0x21575b(0x1a2),'GWEDC':function(_0x3fb829,_0x152217){return _0x3fb829===_0x152217;},'UtVlk':_0x21575b(0x153),'gTAcX':function(_0x3eb399,_0xa22d97,_0x2eb748){return _0x3eb399(_0xa22d97,_0x2eb748);}};try{if(_0x2225a6[_0x21575b(0x122)](_0x2225a6[_0x21575b(0x1ac)],_0x21575b(0x153))){let _0x11990f=await _0x2225a6['gTAcX'](B,_0x4b2a0e,_0x5e2f80);return _0x11990f?.['data']?_0x11990f['data'][_0x21575b(0x12b)](_0x502bbe=>{var _0x203528=_0x21575b,_0x5dc89e={'iGUbv':function(_0x3dd908,_0x12198a){var _0x2b44a7=a0_0x43b2;return _0x2225a6[_0x2b44a7(0x120)](_0x3dd908,_0x12198a);}};if(_0x2225a6[_0x203528(0x17a)](_0x2225a6[_0x203528(0x132)],_0x2225a6[_0x203528(0x1c0)])){let _0x375705={..._0x502bbe};return _0x375705['route']?.[_0x203528(0x12f)]?.['length']&&(_0x375705['route'][_0x203528(0x12f)]=_0x375705[_0x203528(0x136)][_0x203528(0x12f)][_0x203528(0x12b)](_0x266ab2=>({..._0x266ab2,'geometry':_0x3aeae5===_0x203528(0x15c)&&typeof _0x266ab2[_0x203528(0x16f)]==_0x203528(0x199)?P(_0x266ab2[_0x203528(0x16f)]):_0x266ab2[_0x203528(0x16f)]}))),_0x375705;}else _0x5dc89e[_0x203528(0x144)](_0x439ee8,'')&&(_0x48270b=_0x4d8011,_0x2ac043[_0x203528(0x167)][_0x203528(0x1d6)][_0x203528(0x1d4)][_0x203528(0x156)]=_0x203528(0x179)+_0x3a3a79);}):_0x11990f;}else this[_0x21575b(0x12b)]=_0x5c789a,this[_0x21575b(0x14c)]=new _0x3d63b2(_0xd51713);}catch(_0x10d52d){throw _0x10d52d;}}function z(){var _0x11ba6d=a0_0x591421,_0xb335ba={'WFzWt':_0x11ba6d(0x175),'birlw':_0x11ba6d(0x14e),'XhIGi':_0x11ba6d(0x1a9)};let _0x5e6d36=document[_0x11ba6d(0x139)](_0xb335ba[_0x11ba6d(0x1a8)]);for(let _0x5794b2 of _0x5e6d36)if(_0x5794b2[_0x11ba6d(0x170)][_0x11ba6d(0x1a4)](_0xb335ba[_0x11ba6d(0x130)])){let _0x46c6c9=new URL(_0x5794b2[_0x11ba6d(0x170)])[_0x11ba6d(0x13d)][_0x11ba6d(0x188)](_0xb335ba[_0x11ba6d(0x15f)]);if(_0x46c6c9)return _0x46c6c9;}return'';}x(z()),0x0&&(module[a0_0x591421(0x12c)]={'MahalMap':MahalMap,'MahalMapDefaultMarker':MahalMapDefaultMarker,'Router':Router,'Search':Search,'keyUtils':keyUtils});
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/app/config/constants.ts","../src/app/config/geojson-polyline.ts","../src/lib/controller/camera/index.ts","../src/lib/controller/markers/defaultMarkerSvg.ts","../src/lib/controller/markers/MahalMapDefaultMarker.ts","../src/lib/map/adapters/marker.adapter.ts","../src/lib/map/MahalMap.ts","../src/app/lib/axios/api/axios.ts","../src/app/lib/saveKey/index.ts","../src/app/lib/saveKey/utils.ts","../src/app/lib/debounce/index.ts","../src/lib/search/api.ts","../src/lib/search/utils.ts","../src/lib/routing/api.ts","../src/lib/routing/utils.ts"],"sourcesContent":["// Lib\r\nimport { MahalMap } from \"@lib/map\";\r\nimport { Search } from \"@lib/search\";\r\nimport { Router } from \"@lib/routing\";\r\nimport { MahalMapDefaultMarker } from \"@lib/controller\";\r\n\r\n// utils\r\nimport * as keyUtils from \"@app/lib/saveKey\";\r\n\r\nexport { MahalMap, Search, Router, keyUtils, MahalMapDefaultMarker };\r\n\r\nfunction loadKeyFromScriptUrl() {\r\n const scripts = document.getElementsByTagName(\"script\");\r\n for (const script of scripts) {\r\n if (script.src.includes(\"mahal_map.sdk.js\")) {\r\n const url = new URL(script.src);\r\n const apikey = url.searchParams.get(\"apikey\");\r\n if (apikey) return apikey;\r\n }\r\n }\r\n return \"\";\r\n}\r\nkeyUtils.saveKey(loadKeyFromScriptUrl());\r\n","const BASE_URL = \"https://platform.mahal.tj/api/\";\r\nconst LATLNGREGEX =\r\n /^([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?)),\\s*([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?))$/;\r\nconst LNGLATREGEX =\r\n /^([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?)),\\s*([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?))$/;\r\n\r\nconst REGEX =\r\n /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\r\n\r\nconst DARK = \"https://mtile.gram.tj/custom-styles/dark-style.json\";\r\nconst LIGHT = \"https://mtile.gram.tj/custom-styles/mapstyle.json\";\r\nconst VECTOR =\r\n \"https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json\";\r\n\r\nexport { BASE_URL, LATLNGREGEX, LNGLATREGEX, REGEX, DARK, LIGHT, VECTOR };\r\n","function geojsonPolyline(encoded: string): number[][] {\r\n let points = [];\r\n let index = 0,\r\n len = encoded.length;\r\n let lat = 0,\r\n lng = 0;\r\n\r\n while (index < len) {\r\n let b,\r\n shift = 0,\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlat = result & 1 ? ~(result >> 1) : result >> 1;\r\n lat += dlat;\r\n\r\n shift = 0;\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlng = result & 1 ? ~(result >> 1) : result >> 1;\r\n lng += dlng;\r\n\r\n points.push([lng * 1e-5, lat * 1e-5]);\r\n }\r\n\r\n return points;\r\n}\r\n\r\nexport { geojsonPolyline };\r\n\r\n// Пример использования:\r\n\r\n// geojsonPolyline(\"yzocFzynhVq}@n}@o}@nzD\")\r\n\r\n// Вернёт массив вида [\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ].\r\n","import type { Map, FlyToOptions } from \"maplibre-gl\";\r\n\r\nexport class CameraController {\r\n constructor(private map: Map) {}\r\n\r\n setZoom(zoom: number, smooth = true) {\r\n if (smooth) {\r\n this.map.easeTo({ zoom });\r\n } else {\r\n this.map.setZoom(zoom);\r\n }\r\n }\r\n\r\n setBearing(bearing: number, smooth = true) {\r\n smooth ? this.map.easeTo({ bearing }) : this.map.setBearing(bearing);\r\n }\r\n\r\n setPitch(pitch: number, smooth = true) {\r\n smooth ? this.map.easeTo({ pitch }) : this.map.setPitch(pitch);\r\n }\r\n\r\n toggle3D(is3D: boolean) {\r\n this.map.easeTo({\r\n pitch: is3D ? 60 : 0,\r\n bearing: is3D ? this.map.getBearing() : 0,\r\n duration: 800,\r\n });\r\n }\r\n\r\n resetNorth() {\r\n this.map.easeTo({\r\n bearing: 0,\r\n pitch: 0,\r\n duration: 600,\r\n });\r\n }\r\n\r\n flyTo(options: FlyToOptions) {\r\n this.map.flyTo({\r\n speed: 1.2,\r\n curve: 1.42,\r\n essential: true,\r\n ...options,\r\n });\r\n }\r\n\r\n getPitch() {\r\n return this.map.getPitch();\r\n }\r\n}\r\n","const createDefaultMarkerSvg = (color: string, innerSvg?: string) => `<svg\r\n width=\"50\"\r\n height=\"62\"\r\n viewBox=\"0 0 50 62\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g filter=\"url(#filter0_d_367_31358)\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M25 2C36.598 2 46 11.402 46 23C46 33.1603 38.7844 41.6353 29.198 43.5803L25.6524 48.6575C25.5788 48.7633 25.4812 48.8497 25.3676 48.9093C25.254 48.9689 25.128 49 25 49C24.872 49 24.746 48.9689 24.6324 48.9093C24.5188 48.8497 24.4212 48.7633 24.3476 48.6575L20.802 43.5803C11.2156 41.6353 4 33.1603 4 23C4 11.402 13.402 2 25 2Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n />\r\n </g>\r\n <path\r\n d=\"M25 51C27.7614 51 30 53.2386 30 56C30 58.7614 27.7614 61 25 61C22.2386 61 20 58.7614 20 56C20 53.2386 22.2386 51 25 51Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <g clip-path=\"url(#clip0_367_31358)\">\r\n ${innerSvg ?? \"\"}\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_367_31358\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"50\"\r\n height=\"55\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feOffset dy=\"2\" />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.250234 0 0 0 0 0.660089 0 0 0 0 0.488619 0 0 0 0.24 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_367_31358\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_367_31358\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath id=\"clip0_367_31358\">\r\n <rect\r\n width=\"22\"\r\n height=\"22\"\r\n fill=\"white\"\r\n transform=\"translate(14 12)\"\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>`;\r\n\r\nexport { createDefaultMarkerSvg };\r\n","import { createDefaultMarkerSvg } from \"./defaultMarkerSvg\";\r\nimport type { MahalMapDefaultMarkerProps } from \"@app/types\";\r\n\r\nclass MahalMapDefaultMarker {\r\n private element: HTMLElement;\r\n\r\n constructor(private props: MahalMapDefaultMarkerProps) {\r\n this.element = this.createElement();\r\n }\r\n\r\n private createElement(): HTMLElement {\r\n const el = document.createElement(\"div\");\r\n el.style.cursor = \"pointer\";\r\n\r\n const svg = this.props.svg\r\n ? this.applyColorToCustomSvg(this.props.svg)\r\n : createDefaultMarkerSvg(\r\n this.props.color ?? \"#278960\",\r\n this.props.innerSvg,\r\n );\r\n\r\n el.innerHTML = svg;\r\n\r\n if (this.props.draggable) {\r\n el.draggable = true;\r\n }\r\n\r\n return el;\r\n }\r\n\r\n private applyColorToCustomSvg(svg: string): string {\r\n if (!this.props.color) return svg;\r\n return svg.replace(/fill=\"[^\"]*\"/g, `fill=\"${this.props.color}\"`);\r\n }\r\n\r\n getElement() {\r\n return this.element;\r\n }\r\n\r\n getCoordinates() {\r\n return this.props.coordinates;\r\n }\r\n\r\n isDraggable() {\r\n return !!this.props.draggable;\r\n }\r\n\r\n getAnchor() {\r\n return this.props.anchor || \"center\";\r\n }\r\n}\r\n\r\nexport { MahalMapDefaultMarker };\r\n","import type { Map } from \"maplibre-gl\";\r\nimport type { IMapMarker } from \"@app/types\";\r\n\r\nexport function addMarker(maplibregl: any, map: Map, marker: IMapMarker) {\r\n const mapMarker = new maplibregl.Marker({\r\n element: marker.getElement(),\r\n draggable: marker.isDraggable?.() ?? false,\r\n anchor: marker.getAnchor?.() ?? \"center\",\r\n })\r\n .setLngLat(marker.getCoordinates())\r\n .addTo(map);\r\n\r\n return mapMarker;\r\n}\r\n","import type { Map as MapType } from \"maplibre-gl\";\r\nimport { DARK, LIGHT, VECTOR } from \"@app/config\";\r\nimport { CameraController } from \"@lib/controller\";\r\n\r\nimport type { IMahalMapOptions, IMapMarker } from \"@app/types\";\r\n\r\n// Adapter\r\nimport { addMarker } from \"../map/adapters\";\r\n\r\nconst defaultStyles = { dark: DARK, light: LIGHT };\r\n\r\nexport class MahalMap {\r\n private static instance: MahalMap | null = null;\r\n\r\n private map!: MapType;\r\n private maplibre!: typeof import(\"maplibre-gl\");\r\n private camera!: CameraController;\r\n\r\n private options!: IMahalMapOptions;\r\n\r\n private constructor() {}\r\n\r\n static create(\r\n options: IMahalMapOptions,\r\n maplibreObject?: { Map: typeof MapType } | typeof MapType,\r\n ) {\r\n if (MahalMap.instance) return MahalMap.instance;\r\n\r\n const globalMaplibre = (window as any).maplibregl;\r\n const maplibre = globalMaplibre || maplibreObject;\r\n\r\n if (!maplibre) {\r\n throw new Error(\r\n \"[MahalMap SDK] MapLibre GL не найден. Передай его вторым аргументом или подключи через script.\",\r\n );\r\n }\r\n\r\n const finalStyle = options.autoAddVectorSource\r\n ? VECTOR\r\n : options.style\r\n ? options.style\r\n : options.theme === \"dark\"\r\n ? defaultStyles.dark\r\n : defaultStyles.light;\r\n\r\n const instance = new MahalMap();\r\n\r\n instance.options = options;\r\n instance.maplibre = maplibre;\r\n instance.map = new maplibre.Map({\r\n container: options.container || \"map\",\r\n style: finalStyle as string,\r\n center: options.center || [69.624024, 40.279687],\r\n zoom: options.zoom || 5,\r\n attributionControl: options.attributionControl !== false,\r\n });\r\n\r\n MahalMap.instance = instance;\r\n return instance;\r\n }\r\n\r\n static getInstance(): MahalMap {\r\n if (!MahalMap.instance) {\r\n throw new Error(\"[MahalMap SDK] Карта ещё не создана\");\r\n }\r\n return MahalMap.instance;\r\n }\r\n\r\n addMarker(marker: IMapMarker) {\r\n return addMarker(this.maplibre, this.map, marker);\r\n }\r\n init(map: MapType) {\r\n this.map = map;\r\n this.camera = new CameraController(map);\r\n }\r\n getCamera() {\r\n return this.camera;\r\n }\r\n\r\n getMap(): MapType {\r\n return this.map;\r\n }\r\n\r\n setStyle(theme: \"dark\" | \"light\") {\r\n this.map.setStyle(\r\n theme === \"dark\" ? defaultStyles.dark : defaultStyles.light,\r\n );\r\n }\r\n\r\n setCenter(center: [number, number]) {\r\n this.map.setCenter(center);\r\n }\r\n\r\n setZoom(zoom: number) {\r\n this.map.setZoom(zoom);\r\n }\r\n\r\n destroy() {\r\n this.map.remove();\r\n MahalMap.instance = null;\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport { BASE_URL } from \"@app/config/index\";\r\nimport { clearKey } from \"@app/lib\";\r\n\r\nexport const api = axios.create({\r\n baseURL: BASE_URL,\r\n});\r\n\r\napi.interceptors.request.use(\r\n (response) => response,\r\n (error) => {\r\n if (error.request?.status === 401) {\r\n clearKey();\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","export * from \"./utils\";\r\n","import { api } from \"@app/lib\";\r\n\r\nlet apiKey: string = \"\";\r\n\r\nfunction saveKey(param: string) {\r\n if (param === \"\") return;\r\n apiKey = param;\r\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${param}`;\r\n}\r\n\r\nfunction clearKey() {\r\n apiKey = \"\";\r\n api.defaults.headers.common[\"Authorization\"] = \"\";\r\n}\r\n\r\nconst getApiKey = () => apiKey;\r\n\r\nexport { saveKey, clearKey, getApiKey };\r\n","function debounce<F extends (...args: any[]) => Promise<any>>(\r\n fn: F,\r\n delay: number\r\n) {\r\n let timer: NodeJS.Timeout;\r\n\r\n return (...args: Parameters<F>): Promise<ReturnType<F>> => {\r\n if (timer) clearTimeout(timer);\r\n return new Promise((resolve) => {\r\n timer = setTimeout(async () => {\r\n const result = await fn(...args);\r\n resolve(result);\r\n }, delay);\r\n }) as Promise<ReturnType<F>>;\r\n };\r\n}\r\n\r\nexport { debounce };\r\n","import { api } from \"@app/lib\";\r\nimport type { ISearchParam, ISearch } from \"@app/types\";\r\n\r\nexport const searchPost = async (params: ISearchParam): Promise<ISearch[]> => {\r\n try {\r\n const response = await api.post(\"services/getAddress\", params);\r\n return response.data;\r\n } catch (error) {\r\n console.error(\"Ошибка при поиске адреса:\", error);\r\n throw error;\r\n }\r\n};\r\n","import { searchPost } from \"./api\";\r\nimport { IAdditionalParamType, ISearch, ISearchParam } from \"@app/types/index\";\r\nimport { debounce, getApiKey } from \"@app/lib\";\r\n// import { checkCoordinates } from \"@app/lib/index\";\r\n// import { REGEX } from \"@app/config\";\r\n\r\nasync function getSearch(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearch[]> {\r\n let searchData: ISearchParam = {\r\n text: param,\r\n token: token ? token : getApiKey(),\r\n ...additionalParam,\r\n };\r\n\r\n // if (param !== \"\") {\r\n // if (REGEX.test(param)) {\r\n // let coordinates = await checkCoordinates(param);\r\n // if (coordinates) {\r\n // searchData = {\r\n // lat: coordinates.lat ?? \"\",\r\n // lng: coordinates.lng ?? \"\",\r\n // };\r\n // }\r\n // } else {\r\n // searchData.text = param;\r\n // }\r\n // } else {\r\n // searchData.text = \"\";\r\n // }\r\n\r\n try {\r\n const res: ISearch[] = await searchPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nconst debouncedFn = debounce(getSearch, 500);\r\n\r\nasync function Search(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n) {\r\n return await debouncedFn(param, token, additionalParam);\r\n}\r\n\r\nexport { Search };\r\n","import { api, getApiKey } from \"@app/lib\";\r\n\r\nconst routingApi = async (param: number[][], token: string) => {\r\n try {\r\n const points: { lng: number; lat: number }[] = [];\r\n\r\n param.forEach((e) => {\r\n points.push({ lng: e[0], lat: e[1] });\r\n });\r\n const response = await api.post(\"services/getRoutes\", {\r\n points,\r\n token: token ? token : getApiKey(),\r\n });\r\n return response.data;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport { routingApi };\r\n","import { routingApi } from \"@lib/routing/api\";\r\nimport { geojsonPolyline } from \"@app/config/index\";\r\nimport type { IRoute } from \"@app/types/index\";\r\n\r\nasync function Router(\r\n param: number[][],\r\n typeData: string,\r\n token: string,\r\n): Promise<IRoute[]> {\r\n try {\r\n const res = await routingApi(param, token);\r\n\r\n if (!res?.data) return res;\r\n\r\n const data: IRoute[] = res.data;\r\n\r\n return data.map((route) => {\r\n const updated = { ...route };\r\n\r\n if (updated.route?.routes?.length) {\r\n updated.route.routes = updated.route.routes.map((r) => ({\r\n ...r,\r\n geometry:\r\n typeData === \"geojson\" && typeof r.geometry === \"string\"\r\n ? geojsonPolyline(r.geometry)\r\n : r.geometry,\r\n }));\r\n }\r\n\r\n return updated as IRoute;\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Router };\r\n"],"mappings":"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","names":["index_exports","__export","MahalMap","MahalMapDefaultMarker","Router","Search","saveKey_exports","__toCommonJS","BASE_URL","DARK","LIGHT","VECTOR","geojsonPolyline","encoded","points","index","len","lat","lng","b","shift","result","dlat","dlng","CameraController","map","zoom","smooth","bearing","pitch","is3D","options","createDefaultMarkerSvg","color","innerSvg","MahalMapDefaultMarker","props","el","svg","createDefaultMarkerSvg","addMarker","maplibregl","map","marker","defaultStyles","DARK","LIGHT","_MahalMap","options","maplibreObject","maplibre","finalStyle","VECTOR","instance","marker","addMarker","map","CameraController","theme","center","zoom","MahalMap","import_axios","api","axios","BASE_URL","response","error","clearKey","saveKey_exports","__export","clearKey","getApiKey","saveKey","apiKey","saveKey","param","api","clearKey","getApiKey","debounce","fn","delay","timer","args","resolve","result","searchPost","params","api","error","getSearch","param","token","additionalParam","searchData","getApiKey","searchPost","error","debouncedFn","debounce","Search","routingApi","param","token","points","e","api","getApiKey","err","Router","param","typeData","token","res","routingApi","route","updated","r","geojsonPolyline","error","loadKeyFromScriptUrl","scripts","script","apikey","saveKey"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/app/config/constants.ts","../src/app/config/geojson-polyline.ts","../src/lib/controller/camera/index.ts","../src/lib/controller/markers/defaultMarkerSvg.ts","../src/lib/controller/markers/MahalMapDefaultMarker.ts","../src/lib/map/adapters/marker.adapter.ts","../src/lib/map/MahalMap.ts","../src/app/lib/axios/api/axios.ts","../src/app/lib/saveKey/index.ts","../src/app/lib/saveKey/utils.ts","../src/app/lib/debounce/index.ts","../src/lib/search/api.ts","../src/lib/search/utils.ts","../src/lib/routing/api.ts","../src/lib/routing/utils.ts"],"sourcesContent":["// Lib\r\nimport { MahalMap } from \"@lib/map\";\r\nimport { Search } from \"@lib/search\";\r\nimport { Router } from \"@lib/routing\";\r\nimport { MahalMapDefaultMarker } from \"@lib/controller\";\r\n\r\n// utils\r\nimport * as keyUtils from \"@app/lib/saveKey\";\r\n\r\nexport { MahalMap, Search, Router, keyUtils, MahalMapDefaultMarker };\r\n\r\nfunction loadKeyFromScriptUrl() {\r\n const scripts = document.getElementsByTagName(\"script\");\r\n for (const script of scripts) {\r\n if (script.src.includes(\"mahal_map.sdk.js\")) {\r\n const url = new URL(script.src);\r\n const apikey = url.searchParams.get(\"apikey\");\r\n if (apikey) return apikey;\r\n }\r\n }\r\n return \"\";\r\n}\r\nkeyUtils.saveKey(loadKeyFromScriptUrl());\r\n","const BASE_URL = \"https://platform.mahal.tj/api/\";\r\nconst LATLNGREGEX =\r\n /^([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?)),\\s*([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?))$/;\r\nconst LNGLATREGEX =\r\n /^([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?)),\\s*([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?))$/;\r\n\r\nconst REGEX =\r\n /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\r\n\r\nconst DARK = \"https://mtile.gram.tj/custom-styles/dark-style.json\";\r\nconst LIGHT = \"https://mtile.gram.tj/custom-styles/mapstyle.json\";\r\nconst VECTOR =\r\n \"https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json\";\r\n\r\nexport { BASE_URL, LATLNGREGEX, LNGLATREGEX, REGEX, DARK, LIGHT, VECTOR };\r\n","function geojsonPolyline(encoded: string): number[][] {\r\n let points = [];\r\n let index = 0,\r\n len = encoded.length;\r\n let lat = 0,\r\n lng = 0;\r\n\r\n while (index < len) {\r\n let b,\r\n shift = 0,\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlat = result & 1 ? ~(result >> 1) : result >> 1;\r\n lat += dlat;\r\n\r\n shift = 0;\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlng = result & 1 ? ~(result >> 1) : result >> 1;\r\n lng += dlng;\r\n\r\n points.push([lng * 1e-5, lat * 1e-5]);\r\n }\r\n\r\n return points;\r\n}\r\n\r\nexport { geojsonPolyline };\r\n\r\n// Пример использования:\r\n\r\n// geojsonPolyline(\"yzocFzynhVq}@n}@o}@nzD\")\r\n\r\n// Вернёт массив вида [\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ].\r\n","import type { Map, FlyToOptions } from \"maplibre-gl\";\r\n\r\nexport class CameraController {\r\n constructor(private map: Map) {}\r\n\r\n setZoom(zoom: number, smooth = true) {\r\n if (smooth) {\r\n this.map.easeTo({ zoom });\r\n } else {\r\n this.map.setZoom(zoom);\r\n }\r\n }\r\n\r\n setBearing(bearing: number, smooth = true) {\r\n smooth ? this.map.easeTo({ bearing }) : this.map.setBearing(bearing);\r\n }\r\n\r\n setPitch(pitch: number, smooth = true) {\r\n smooth ? this.map.easeTo({ pitch }) : this.map.setPitch(pitch);\r\n }\r\n\r\n toggle3D(is3D: boolean) {\r\n this.map.easeTo({\r\n pitch: is3D ? 60 : 0,\r\n bearing: is3D ? this.map.getBearing() : 0,\r\n duration: 800,\r\n });\r\n }\r\n\r\n resetNorth() {\r\n this.map.easeTo({\r\n bearing: 0,\r\n pitch: 0,\r\n duration: 600,\r\n });\r\n }\r\n\r\n flyTo(options: FlyToOptions) {\r\n this.map.flyTo({\r\n speed: 1.2,\r\n curve: 1.42,\r\n essential: true,\r\n ...options,\r\n });\r\n }\r\n\r\n getPitch() {\r\n return this.map.getPitch();\r\n }\r\n}\r\n","const createDefaultMarkerSvg = (color: string, innerSvg?: string) => `<svg\r\n width=\"50\"\r\n height=\"62\"\r\n viewBox=\"0 0 50 62\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g filter=\"url(#filter0_d_367_31358)\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M25 2C36.598 2 46 11.402 46 23C46 33.1603 38.7844 41.6353 29.198 43.5803L25.6524 48.6575C25.5788 48.7633 25.4812 48.8497 25.3676 48.9093C25.254 48.9689 25.128 49 25 49C24.872 49 24.746 48.9689 24.6324 48.9093C24.5188 48.8497 24.4212 48.7633 24.3476 48.6575L20.802 43.5803C11.2156 41.6353 4 33.1603 4 23C4 11.402 13.402 2 25 2Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n />\r\n </g>\r\n <path\r\n d=\"M25 51C27.7614 51 30 53.2386 30 56C30 58.7614 27.7614 61 25 61C22.2386 61 20 58.7614 20 56C20 53.2386 22.2386 51 25 51Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <g clip-path=\"url(#clip0_367_31358)\">\r\n ${innerSvg ?? \"\"}\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_367_31358\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"50\"\r\n height=\"55\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feOffset dy=\"2\" />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.250234 0 0 0 0 0.660089 0 0 0 0 0.488619 0 0 0 0.24 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_367_31358\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_367_31358\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath id=\"clip0_367_31358\">\r\n <rect\r\n width=\"22\"\r\n height=\"22\"\r\n fill=\"white\"\r\n transform=\"translate(14 12)\"\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>`;\r\n\r\nexport { createDefaultMarkerSvg };\r\n","import { createDefaultMarkerSvg } from \"./defaultMarkerSvg\";\r\nimport type { MahalMapDefaultMarkerProps } from \"@app/types\";\r\n\r\nclass MahalMapDefaultMarker {\r\n private element: HTMLElement;\r\n\r\n constructor(private props: MahalMapDefaultMarkerProps) {\r\n this.element = this.createElement();\r\n }\r\n\r\n private createElement(): HTMLElement {\r\n const el = document.createElement(\"div\");\r\n el.style.cursor = \"pointer\";\r\n\r\n const svg = this.props.svg\r\n ? this.applyColorToCustomSvg(this.props.svg)\r\n : createDefaultMarkerSvg(\r\n this.props.color ?? \"#278960\",\r\n this.props.innerSvg,\r\n );\r\n\r\n el.innerHTML = svg;\r\n\r\n if (this.props.draggable) {\r\n el.draggable = true;\r\n }\r\n\r\n return el;\r\n }\r\n\r\n private applyColorToCustomSvg(svg: string): string {\r\n if (!this.props.color) return svg;\r\n return svg.replace(/fill=\"[^\"]*\"/g, `fill=\"${this.props.color}\"`);\r\n }\r\n\r\n getElement() {\r\n return this.element;\r\n }\r\n\r\n getCoordinates() {\r\n return this.props.coordinates;\r\n }\r\n\r\n isDraggable() {\r\n return !!this.props.draggable;\r\n }\r\n\r\n getAnchor() {\r\n return this.props.anchor || \"center\";\r\n }\r\n}\r\n\r\nexport { MahalMapDefaultMarker };\r\n","import type { Map } from \"maplibre-gl\";\r\nimport type { IMapMarker } from \"@app/types\";\r\n\r\nexport function addMarker(maplibregl: any, map: Map, marker: IMapMarker) {\r\n const mapMarker = new maplibregl.Marker({\r\n element: marker.getElement(),\r\n draggable: marker.isDraggable?.() ?? false,\r\n anchor: marker.getAnchor?.() ?? \"center\",\r\n })\r\n .setLngLat(marker.getCoordinates())\r\n .addTo(map);\r\n\r\n return mapMarker;\r\n}\r\n","import type { Map as MapType } from \"maplibre-gl\";\r\nimport { DARK, LIGHT, VECTOR } from \"@app/config\";\r\nimport { CameraController } from \"@lib/controller\";\r\n\r\nimport type { IMahalMapOptions, IMapMarker } from \"@app/types\";\r\n\r\n// Adapter\r\nimport { addMarker } from \"../map/adapters\";\r\n\r\nconst defaultStyles = { dark: DARK, light: LIGHT };\r\n\r\nexport class MahalMap {\r\n private static instance: MahalMap | null = null;\r\n\r\n private isReady = false;\r\n private readyCallbacks: Array<(map: MapType) => void> = [];\r\n\r\n private map!: MapType;\r\n private maplibre!: typeof import(\"maplibre-gl\");\r\n private camera!: CameraController;\r\n\r\n private options!: IMahalMapOptions;\r\n\r\n private constructor() {}\r\n\r\n static create(\r\n options: IMahalMapOptions,\r\n maplibreObject?: { Map: typeof MapType } | typeof MapType,\r\n ) {\r\n if (MahalMap.instance) return MahalMap.instance;\r\n\r\n const globalMaplibre = (window as any).maplibregl;\r\n const maplibre = globalMaplibre || maplibreObject;\r\n\r\n if (!maplibre) {\r\n throw new Error(\r\n \"[MahalMap SDK] MapLibre GL не найден. Передай его вторым аргументом или подключи через script.\",\r\n );\r\n }\r\n\r\n const finalStyle = options.autoAddVectorSource\r\n ? VECTOR\r\n : options.style\r\n ? options.style\r\n : options.theme === \"dark\"\r\n ? defaultStyles.dark\r\n : defaultStyles.light;\r\n\r\n const instance = new MahalMap();\r\n\r\n instance.options = options;\r\n instance.maplibre = maplibre;\r\n instance.map = new maplibre.Map({\r\n container: options.container || \"map\",\r\n style: finalStyle as string,\r\n center: options.center || [69.624024, 40.279687],\r\n zoom: options.zoom || 5,\r\n attributionControl: options.attributionControl !== false,\r\n });\r\n\r\n instance.map.on(\"load\", () => {\r\n instance.isReady = true;\r\n\r\n instance.camera = new CameraController(instance.map);\r\n\r\n instance.readyCallbacks.forEach((cb) => cb(instance.map));\r\n instance.readyCallbacks = [];\r\n });\r\n\r\n MahalMap.instance = instance;\r\n return instance;\r\n }\r\n\r\n static onReady(callback: (map: MapType) => void) {\r\n const instance = MahalMap.instance;\r\n\r\n if (!instance) {\r\n throw new Error(\"[MahalMap SDK] Карта ещё не создана\");\r\n }\r\n\r\n if (instance.isReady) {\r\n callback(instance.map);\r\n } else {\r\n instance.readyCallbacks.push(callback);\r\n }\r\n }\r\n\r\n static getInstance(): MahalMap {\r\n if (!MahalMap.instance) {\r\n throw new Error(\"[MahalMap SDK] Карта ещё не создана\");\r\n }\r\n return MahalMap.instance;\r\n }\r\n\r\n addMarker(marker: IMapMarker) {\r\n return addMarker(this.maplibre, this.map, marker);\r\n }\r\n init(map: MapType) {\r\n this.map = map;\r\n this.camera = new CameraController(map);\r\n }\r\n getCamera() {\r\n return this.camera;\r\n }\r\n\r\n getMap(): MapType {\r\n return this.map;\r\n }\r\n\r\n setStyle(theme: \"dark\" | \"light\") {\r\n this.map.setStyle(\r\n theme === \"dark\" ? defaultStyles.dark : defaultStyles.light,\r\n );\r\n }\r\n\r\n setCenter(center: [number, number]) {\r\n this.map.setCenter(center);\r\n }\r\n\r\n setZoom(zoom: number) {\r\n this.map.setZoom(zoom);\r\n }\r\n\r\n destroy() {\r\n this.map.remove();\r\n MahalMap.instance = null;\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport { BASE_URL } from \"@app/config/index\";\r\nimport { clearKey } from \"@app/lib\";\r\n\r\nexport const api = axios.create({\r\n baseURL: BASE_URL,\r\n});\r\n\r\napi.interceptors.request.use(\r\n (response) => response,\r\n (error) => {\r\n if (error.request?.status === 401) {\r\n clearKey();\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","export * from \"./utils\";\r\n","import { api } from \"@app/lib\";\r\n\r\nlet apiKey: string = \"\";\r\n\r\nfunction saveKey(param: string) {\r\n if (param === \"\") return;\r\n apiKey = param;\r\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${param}`;\r\n}\r\n\r\nfunction clearKey() {\r\n apiKey = \"\";\r\n api.defaults.headers.common[\"Authorization\"] = \"\";\r\n}\r\n\r\nconst getApiKey = () => apiKey;\r\n\r\nexport { saveKey, clearKey, getApiKey };\r\n","function debounce<F extends (...args: any[]) => Promise<any>>(\r\n fn: F,\r\n delay: number\r\n) {\r\n let timer: NodeJS.Timeout;\r\n\r\n return (...args: Parameters<F>): Promise<ReturnType<F>> => {\r\n if (timer) clearTimeout(timer);\r\n return new Promise((resolve) => {\r\n timer = setTimeout(async () => {\r\n const result = await fn(...args);\r\n resolve(result);\r\n }, delay);\r\n }) as Promise<ReturnType<F>>;\r\n };\r\n}\r\n\r\nexport { debounce };\r\n","import { api } from \"@app/lib\";\r\nimport type { ISearchParam, ISearch } from \"@app/types\";\r\n\r\nexport const searchPost = async (params: ISearchParam): Promise<ISearch[]> => {\r\n try {\r\n const response = await api.post(\"services/getAddress\", params);\r\n return response.data;\r\n } catch (error) {\r\n console.error(\"Ошибка при поиске адреса:\", error);\r\n throw error;\r\n }\r\n};\r\n","import { searchPost } from \"./api\";\r\nimport { IAdditionalParamType, ISearch, ISearchParam } from \"@app/types/index\";\r\nimport { debounce, getApiKey } from \"@app/lib\";\r\n// import { checkCoordinates } from \"@app/lib/index\";\r\n// import { REGEX } from \"@app/config\";\r\n\r\nasync function getSearch(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearch[]> {\r\n let searchData: ISearchParam = {\r\n text: param,\r\n token: token ? token : getApiKey(),\r\n ...additionalParam,\r\n };\r\n\r\n // if (param !== \"\") {\r\n // if (REGEX.test(param)) {\r\n // let coordinates = await checkCoordinates(param);\r\n // if (coordinates) {\r\n // searchData = {\r\n // lat: coordinates.lat ?? \"\",\r\n // lng: coordinates.lng ?? \"\",\r\n // };\r\n // }\r\n // } else {\r\n // searchData.text = param;\r\n // }\r\n // } else {\r\n // searchData.text = \"\";\r\n // }\r\n\r\n try {\r\n const res: ISearch[] = await searchPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nconst debouncedFn = debounce(getSearch, 500);\r\n\r\nasync function Search(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n) {\r\n return await debouncedFn(param, token, additionalParam);\r\n}\r\n\r\nexport { Search };\r\n","import { api, getApiKey } from \"@app/lib\";\r\n\r\nconst routingApi = async (param: number[][], token: string) => {\r\n try {\r\n const points: { lng: number; lat: number }[] = [];\r\n\r\n param.forEach((e) => {\r\n points.push({ lng: e[0], lat: e[1] });\r\n });\r\n const response = await api.post(\"services/getRoutes\", {\r\n points,\r\n token: token ? token : getApiKey(),\r\n });\r\n return response.data;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport { routingApi };\r\n","import { routingApi } from \"@lib/routing/api\";\r\nimport { geojsonPolyline } from \"@app/config/index\";\r\nimport type { IRoute } from \"@app/types/index\";\r\n\r\nasync function Router(\r\n param: number[][],\r\n typeData: string,\r\n token: string,\r\n): Promise<IRoute[]> {\r\n try {\r\n const res = await routingApi(param, token);\r\n\r\n if (!res?.data) return res;\r\n\r\n const data: IRoute[] = res.data;\r\n\r\n return data.map((route) => {\r\n const updated = { ...route };\r\n\r\n if (updated.route?.routes?.length) {\r\n updated.route.routes = updated.route.routes.map((r) => ({\r\n ...r,\r\n geometry:\r\n typeData === \"geojson\" && typeof r.geometry === \"string\"\r\n ? geojsonPolyline(r.geometry)\r\n : r.geometry,\r\n }));\r\n }\r\n\r\n return updated as IRoute;\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Router };\r\n"],"mappings":"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","names":["index_exports","__export","MahalMap","MahalMapDefaultMarker","Router","Search","saveKey_exports","__toCommonJS","BASE_URL","DARK","LIGHT","VECTOR","geojsonPolyline","encoded","points","index","len","lat","lng","b","shift","result","dlat","dlng","CameraController","map","zoom","smooth","bearing","pitch","is3D","options","createDefaultMarkerSvg","color","innerSvg","MahalMapDefaultMarker","props","el","svg","createDefaultMarkerSvg","addMarker","maplibregl","map","marker","defaultStyles","DARK","LIGHT","_MahalMap","options","maplibreObject","maplibre","finalStyle","VECTOR","instance","CameraController","cb","callback","marker","addMarker","map","theme","center","zoom","MahalMap","import_axios","api","axios","BASE_URL","response","error","clearKey","saveKey_exports","__export","clearKey","getApiKey","saveKey","apiKey","saveKey","param","api","clearKey","getApiKey","debounce","fn","delay","timer","args","resolve","result","searchPost","params","api","error","getSearch","param","token","additionalParam","searchData","getApiKey","searchPost","error","debouncedFn","debounce","Search","routingApi","param","token","points","e","api","getApiKey","err","Router","param","typeData","token","res","routingApi","route","updated","r","geojsonPolyline","error","loadKeyFromScriptUrl","scripts","script","apikey","saveKey"]}
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var R=Object.defineProperty;var G=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})};var x="https://platform.mahal.tj/api/";var b="https://mtile.gram.tj/custom-styles/dark-style.json",w="https://mtile.gram.tj/custom-styles/mapstyle.json",T="https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json";function C(r){let e=[],t=0,o=r.length,s=0,l=0;for(;t<o;){let a,i=0,p=0;do a=r.charCodeAt(t++)-63,p|=(a&31)<<i,i+=5;while(a>=32);let E=p&1?~(p>>1):p>>1;s+=E,i=0,p=0;do a=r.charCodeAt(t++)-63,p|=(a&31)<<i,i+=5;while(a>=32);let L=p&1?~(p>>1):p>>1;l+=L,e.push([l*1e-5,s*1e-5])}return e}var u=class{constructor(e){this.map=e}setZoom(e,t=!0){t?this.map.easeTo({zoom:e}):this.map.setZoom(e)}setBearing(e,t=!0){t?this.map.easeTo({bearing:e}):this.map.setBearing(e)}setPitch(e,t=!0){t?this.map.easeTo({pitch:e}):this.map.setPitch(e)}toggle3D(e){this.map.easeTo({pitch:e?60:0,bearing:e?this.map.getBearing():0,duration:800})}resetNorth(){this.map.easeTo({bearing:0,pitch:0,duration:600})}flyTo(e){this.map.flyTo({speed:1.2,curve:1.42,essential:!0,...e})}getPitch(){return this.map.getPitch()}};var v=(r,e)=>`<svg
1
+ var R=Object.defineProperty;var G=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})};var x="https://platform.mahal.tj/api/";var b="https://mtile.gram.tj/custom-styles/dark-style.json",w="https://mtile.gram.tj/custom-styles/mapstyle.json",C="https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json";function v(r){let e=[],t=0,o=r.length,s=0,l=0;for(;t<o;){let a,i=0,p=0;do a=r.charCodeAt(t++)-63,p|=(a&31)<<i,i+=5;while(a>=32);let I=p&1?~(p>>1):p>>1;s+=I,i=0,p=0;do a=r.charCodeAt(t++)-63,p|=(a&31)<<i,i+=5;while(a>=32);let L=p&1?~(p>>1):p>>1;l+=L,e.push([l*1e-5,s*1e-5])}return e}var c=class{constructor(e){this.map=e}setZoom(e,t=!0){t?this.map.easeTo({zoom:e}):this.map.setZoom(e)}setBearing(e,t=!0){t?this.map.easeTo({bearing:e}):this.map.setBearing(e)}setPitch(e,t=!0){t?this.map.easeTo({pitch:e}):this.map.setPitch(e)}toggle3D(e){this.map.easeTo({pitch:e?60:0,bearing:e?this.map.getBearing():0,duration:800})}resetNorth(){this.map.easeTo({bearing:0,pitch:0,duration:600})}flyTo(e){this.map.flyTo({speed:1.2,curve:1.42,essential:!0,...e})}getPitch(){return this.map.getPitch()}};var T=(r,e)=>`<svg
2
2
  width="50"
3
3
  height="62"
4
4
  viewBox="0 0 50 62"
@@ -67,5 +67,5 @@ var R=Object.defineProperty;var G=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumera
67
67
  />
68
68
  </clipPath>
69
69
  </defs>
70
- </svg>`;var f=class{constructor(e){this.props=e;this.element=this.createElement()}createElement(){let e=document.createElement("div");e.style.cursor="pointer";let t=this.props.svg?this.applyColorToCustomSvg(this.props.svg):v(this.props.color??"#278960",this.props.innerSvg);return e.innerHTML=t,this.props.draggable&&(e.draggable=!0),e}applyColorToCustomSvg(e){return this.props.color?e.replace(/fill="[^"]*"/g,`fill="${this.props.color}"`):e}getElement(){return this.element}getCoordinates(){return this.props.coordinates}isDraggable(){return!!this.props.draggable}getAnchor(){return this.props.anchor||"center"}};function S(r,e,t){return new r.Marker({element:t.getElement(),draggable:t.isDraggable?.()??!1,anchor:t.getAnchor?.()??"center"}).setLngLat(t.getCoordinates()).addTo(e)}var h={dark:b,light:w},n=class n{constructor(){}static create(e,t){if(n.instance)return n.instance;let s=window.maplibregl||t;if(!s)throw new Error("[MahalMap SDK] MapLibre GL \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D. \u041F\u0435\u0440\u0435\u0434\u0430\u0439 \u0435\u0433\u043E \u0432\u0442\u043E\u0440\u044B\u043C \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u043C \u0438\u043B\u0438 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438 \u0447\u0435\u0440\u0435\u0437 script.");let l=e.autoAddVectorSource?T:e.style?e.style:e.theme==="dark"?h.dark:h.light,a=new n;return a.options=e,a.maplibre=s,a.map=new s.Map({container:e.container||"map",style:l,center:e.center||[69.624024,40.279687],zoom:e.zoom||5,attributionControl:e.attributionControl!==!1}),n.instance=a,a}static getInstance(){if(!n.instance)throw new Error("[MahalMap SDK] \u041A\u0430\u0440\u0442\u0430 \u0435\u0449\u0451 \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u0430");return n.instance}addMarker(e){return S(this.maplibre,this.map,e)}init(e){this.map=e,this.camera=new u(e)}getCamera(){return this.camera}getMap(){return this.map}setStyle(e){this.map.setStyle(e==="dark"?h.dark:h.light)}setCenter(e){this.map.setCenter(e)}setZoom(e){this.map.setZoom(e)}destroy(){this.map.remove(),n.instance=null}};n.instance=null;var d=n;import B from"axios";var m=B.create({baseURL:x});m.interceptors.request.use(r=>r,r=>(r.request?.status===401&&g(),Promise.reject(r)));var P={};G(P,{clearKey:()=>g,getApiKey:()=>c,saveKey:()=>M});var y="";function M(r){r!==""&&(y=r,m.defaults.headers.common.Authorization=`Bearer ${r}`)}function g(){y="",m.defaults.headers.common.Authorization=""}var c=()=>y;function k(r,e){let t;return(...o)=>(t&&clearTimeout(t),new Promise(s=>{t=setTimeout(async()=>{let l=await r(...o);s(l)},e)}))}var I=async r=>{try{return(await m.post("services/getAddress",r)).data}catch(e){throw console.error("\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435 \u0430\u0434\u0440\u0435\u0441\u0430:",e),e}};async function _(r,e,t){let o={text:r,token:e||c(),...t};try{return await I(o)}catch(s){throw s}}var K=k(_,500);async function j(r,e,t){return await K(r,e,t)}var A=async(r,e)=>{try{let t=[];return r.forEach(s=>{t.push({lng:s[0],lat:s[1]})}),(await m.post("services/getRoutes",{points:t,token:e||c()})).data}catch(t){throw console.error(t),t}};async function D(r,e,t){try{let o=await A(r,t);return o?.data?o.data.map(l=>{let a={...l};return a.route?.routes?.length&&(a.route.routes=a.route.routes.map(i=>({...i,geometry:e==="geojson"&&typeof i.geometry=="string"?C(i.geometry):i.geometry}))),a}):o}catch(o){throw o}}function F(){let r=document.getElementsByTagName("script");for(let e of r)if(e.src.includes("mahal_map.sdk.js")){let o=new URL(e.src).searchParams.get("apikey");if(o)return o}return""}M(F());export{d as MahalMap,f as MahalMapDefaultMarker,D as Router,j as Search,P as keyUtils};
70
+ </svg>`;var f=class{constructor(e){this.props=e;this.element=this.createElement()}createElement(){let e=document.createElement("div");e.style.cursor="pointer";let t=this.props.svg?this.applyColorToCustomSvg(this.props.svg):T(this.props.color??"#278960",this.props.innerSvg);return e.innerHTML=t,this.props.draggable&&(e.draggable=!0),e}applyColorToCustomSvg(e){return this.props.color?e.replace(/fill="[^"]*"/g,`fill="${this.props.color}"`):e}getElement(){return this.element}getCoordinates(){return this.props.coordinates}isDraggable(){return!!this.props.draggable}getAnchor(){return this.props.anchor||"center"}};function S(r,e,t){return new r.Marker({element:t.getElement(),draggable:t.isDraggable?.()??!1,anchor:t.getAnchor?.()??"center"}).setLngLat(t.getCoordinates()).addTo(e)}var h={dark:b,light:w},n=class n{constructor(){this.isReady=!1;this.readyCallbacks=[]}static create(e,t){if(n.instance)return n.instance;let s=window.maplibregl||t;if(!s)throw new Error("[MahalMap SDK] MapLibre GL \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D. \u041F\u0435\u0440\u0435\u0434\u0430\u0439 \u0435\u0433\u043E \u0432\u0442\u043E\u0440\u044B\u043C \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u043C \u0438\u043B\u0438 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438 \u0447\u0435\u0440\u0435\u0437 script.");let l=e.autoAddVectorSource?C:e.style?e.style:e.theme==="dark"?h.dark:h.light,a=new n;return a.options=e,a.maplibre=s,a.map=new s.Map({container:e.container||"map",style:l,center:e.center||[69.624024,40.279687],zoom:e.zoom||5,attributionControl:e.attributionControl!==!1}),a.map.on("load",()=>{a.isReady=!0,a.camera=new c(a.map),a.readyCallbacks.forEach(i=>i(a.map)),a.readyCallbacks=[]}),n.instance=a,a}static onReady(e){let t=n.instance;if(!t)throw new Error("[MahalMap SDK] \u041A\u0430\u0440\u0442\u0430 \u0435\u0449\u0451 \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u0430");t.isReady?e(t.map):t.readyCallbacks.push(e)}static getInstance(){if(!n.instance)throw new Error("[MahalMap SDK] \u041A\u0430\u0440\u0442\u0430 \u0435\u0449\u0451 \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u0430");return n.instance}addMarker(e){return S(this.maplibre,this.map,e)}init(e){this.map=e,this.camera=new c(e)}getCamera(){return this.camera}getMap(){return this.map}setStyle(e){this.map.setStyle(e==="dark"?h.dark:h.light)}setCenter(e){this.map.setCenter(e)}setZoom(e){this.map.setZoom(e)}destroy(){this.map.remove(),n.instance=null}};n.instance=null;var d=n;import B from"axios";var m=B.create({baseURL:x});m.interceptors.request.use(r=>r,r=>(r.request?.status===401&&g(),Promise.reject(r)));var k={};G(k,{clearKey:()=>g,getApiKey:()=>u,saveKey:()=>M});var y="";function M(r){r!==""&&(y=r,m.defaults.headers.common.Authorization=`Bearer ${r}`)}function g(){y="",m.defaults.headers.common.Authorization=""}var u=()=>y;function P(r,e){let t;return(...o)=>(t&&clearTimeout(t),new Promise(s=>{t=setTimeout(async()=>{let l=await r(...o);s(l)},e)}))}var E=async r=>{try{return(await m.post("services/getAddress",r)).data}catch(e){throw console.error("\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043F\u043E\u0438\u0441\u043A\u0435 \u0430\u0434\u0440\u0435\u0441\u0430:",e),e}};async function K(r,e,t){let o={text:r,token:e||u(),...t};try{return await E(o)}catch(s){throw s}}var D=P(K,500);async function _(r,e,t){return await D(r,e,t)}var A=async(r,e)=>{try{let t=[];return r.forEach(s=>{t.push({lng:s[0],lat:s[1]})}),(await m.post("services/getRoutes",{points:t,token:e||u()})).data}catch(t){throw console.error(t),t}};async function j(r,e,t){try{let o=await A(r,t);return o?.data?o.data.map(l=>{let a={...l};return a.route?.routes?.length&&(a.route.routes=a.route.routes.map(i=>({...i,geometry:e==="geojson"&&typeof i.geometry=="string"?v(i.geometry):i.geometry}))),a}):o}catch(o){throw o}}function F(){let r=document.getElementsByTagName("script");for(let e of r)if(e.src.includes("mahal_map.sdk.js")){let o=new URL(e.src).searchParams.get("apikey");if(o)return o}return""}M(F());export{d as MahalMap,f as MahalMapDefaultMarker,j as Router,_ as Search,k as keyUtils};
71
71
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/app/config/constants.ts","../src/app/config/geojson-polyline.ts","../src/lib/controller/camera/index.ts","../src/lib/controller/markers/defaultMarkerSvg.ts","../src/lib/controller/markers/MahalMapDefaultMarker.ts","../src/lib/map/adapters/marker.adapter.ts","../src/lib/map/MahalMap.ts","../src/app/lib/axios/api/axios.ts","../src/app/lib/saveKey/index.ts","../src/app/lib/saveKey/utils.ts","../src/app/lib/debounce/index.ts","../src/lib/search/api.ts","../src/lib/search/utils.ts","../src/lib/routing/api.ts","../src/lib/routing/utils.ts","../src/index.ts"],"sourcesContent":["const BASE_URL = \"https://platform.mahal.tj/api/\";\r\nconst LATLNGREGEX =\r\n /^([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?)),\\s*([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?))$/;\r\nconst LNGLATREGEX =\r\n /^([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?)),\\s*([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?))$/;\r\n\r\nconst REGEX =\r\n /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\r\n\r\nconst DARK = \"https://mtile.gram.tj/custom-styles/dark-style.json\";\r\nconst LIGHT = \"https://mtile.gram.tj/custom-styles/mapstyle.json\";\r\nconst VECTOR =\r\n \"https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json\";\r\n\r\nexport { BASE_URL, LATLNGREGEX, LNGLATREGEX, REGEX, DARK, LIGHT, VECTOR };\r\n","function geojsonPolyline(encoded: string): number[][] {\r\n let points = [];\r\n let index = 0,\r\n len = encoded.length;\r\n let lat = 0,\r\n lng = 0;\r\n\r\n while (index < len) {\r\n let b,\r\n shift = 0,\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlat = result & 1 ? ~(result >> 1) : result >> 1;\r\n lat += dlat;\r\n\r\n shift = 0;\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlng = result & 1 ? ~(result >> 1) : result >> 1;\r\n lng += dlng;\r\n\r\n points.push([lng * 1e-5, lat * 1e-5]);\r\n }\r\n\r\n return points;\r\n}\r\n\r\nexport { geojsonPolyline };\r\n\r\n// Пример использования:\r\n\r\n// geojsonPolyline(\"yzocFzynhVq}@n}@o}@nzD\")\r\n\r\n// Вернёт массив вида [\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ].\r\n","import type { Map, FlyToOptions } from \"maplibre-gl\";\r\n\r\nexport class CameraController {\r\n constructor(private map: Map) {}\r\n\r\n setZoom(zoom: number, smooth = true) {\r\n if (smooth) {\r\n this.map.easeTo({ zoom });\r\n } else {\r\n this.map.setZoom(zoom);\r\n }\r\n }\r\n\r\n setBearing(bearing: number, smooth = true) {\r\n smooth ? this.map.easeTo({ bearing }) : this.map.setBearing(bearing);\r\n }\r\n\r\n setPitch(pitch: number, smooth = true) {\r\n smooth ? this.map.easeTo({ pitch }) : this.map.setPitch(pitch);\r\n }\r\n\r\n toggle3D(is3D: boolean) {\r\n this.map.easeTo({\r\n pitch: is3D ? 60 : 0,\r\n bearing: is3D ? this.map.getBearing() : 0,\r\n duration: 800,\r\n });\r\n }\r\n\r\n resetNorth() {\r\n this.map.easeTo({\r\n bearing: 0,\r\n pitch: 0,\r\n duration: 600,\r\n });\r\n }\r\n\r\n flyTo(options: FlyToOptions) {\r\n this.map.flyTo({\r\n speed: 1.2,\r\n curve: 1.42,\r\n essential: true,\r\n ...options,\r\n });\r\n }\r\n\r\n getPitch() {\r\n return this.map.getPitch();\r\n }\r\n}\r\n","const createDefaultMarkerSvg = (color: string, innerSvg?: string) => `<svg\r\n width=\"50\"\r\n height=\"62\"\r\n viewBox=\"0 0 50 62\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g filter=\"url(#filter0_d_367_31358)\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M25 2C36.598 2 46 11.402 46 23C46 33.1603 38.7844 41.6353 29.198 43.5803L25.6524 48.6575C25.5788 48.7633 25.4812 48.8497 25.3676 48.9093C25.254 48.9689 25.128 49 25 49C24.872 49 24.746 48.9689 24.6324 48.9093C24.5188 48.8497 24.4212 48.7633 24.3476 48.6575L20.802 43.5803C11.2156 41.6353 4 33.1603 4 23C4 11.402 13.402 2 25 2Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n />\r\n </g>\r\n <path\r\n d=\"M25 51C27.7614 51 30 53.2386 30 56C30 58.7614 27.7614 61 25 61C22.2386 61 20 58.7614 20 56C20 53.2386 22.2386 51 25 51Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <g clip-path=\"url(#clip0_367_31358)\">\r\n ${innerSvg ?? \"\"}\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_367_31358\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"50\"\r\n height=\"55\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feOffset dy=\"2\" />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.250234 0 0 0 0 0.660089 0 0 0 0 0.488619 0 0 0 0.24 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_367_31358\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_367_31358\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath id=\"clip0_367_31358\">\r\n <rect\r\n width=\"22\"\r\n height=\"22\"\r\n fill=\"white\"\r\n transform=\"translate(14 12)\"\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>`;\r\n\r\nexport { createDefaultMarkerSvg };\r\n","import { createDefaultMarkerSvg } from \"./defaultMarkerSvg\";\r\nimport type { MahalMapDefaultMarkerProps } from \"@app/types\";\r\n\r\nclass MahalMapDefaultMarker {\r\n private element: HTMLElement;\r\n\r\n constructor(private props: MahalMapDefaultMarkerProps) {\r\n this.element = this.createElement();\r\n }\r\n\r\n private createElement(): HTMLElement {\r\n const el = document.createElement(\"div\");\r\n el.style.cursor = \"pointer\";\r\n\r\n const svg = this.props.svg\r\n ? this.applyColorToCustomSvg(this.props.svg)\r\n : createDefaultMarkerSvg(\r\n this.props.color ?? \"#278960\",\r\n this.props.innerSvg,\r\n );\r\n\r\n el.innerHTML = svg;\r\n\r\n if (this.props.draggable) {\r\n el.draggable = true;\r\n }\r\n\r\n return el;\r\n }\r\n\r\n private applyColorToCustomSvg(svg: string): string {\r\n if (!this.props.color) return svg;\r\n return svg.replace(/fill=\"[^\"]*\"/g, `fill=\"${this.props.color}\"`);\r\n }\r\n\r\n getElement() {\r\n return this.element;\r\n }\r\n\r\n getCoordinates() {\r\n return this.props.coordinates;\r\n }\r\n\r\n isDraggable() {\r\n return !!this.props.draggable;\r\n }\r\n\r\n getAnchor() {\r\n return this.props.anchor || \"center\";\r\n }\r\n}\r\n\r\nexport { MahalMapDefaultMarker };\r\n","import type { Map } from \"maplibre-gl\";\r\nimport type { IMapMarker } from \"@app/types\";\r\n\r\nexport function addMarker(maplibregl: any, map: Map, marker: IMapMarker) {\r\n const mapMarker = new maplibregl.Marker({\r\n element: marker.getElement(),\r\n draggable: marker.isDraggable?.() ?? false,\r\n anchor: marker.getAnchor?.() ?? \"center\",\r\n })\r\n .setLngLat(marker.getCoordinates())\r\n .addTo(map);\r\n\r\n return mapMarker;\r\n}\r\n","import type { Map as MapType } from \"maplibre-gl\";\r\nimport { DARK, LIGHT, VECTOR } from \"@app/config\";\r\nimport { CameraController } from \"@lib/controller\";\r\n\r\nimport type { IMahalMapOptions, IMapMarker } from \"@app/types\";\r\n\r\n// Adapter\r\nimport { addMarker } from \"../map/adapters\";\r\n\r\nconst defaultStyles = { dark: DARK, light: LIGHT };\r\n\r\nexport class MahalMap {\r\n private static instance: MahalMap | null = null;\r\n\r\n private map!: MapType;\r\n private maplibre!: typeof import(\"maplibre-gl\");\r\n private camera!: CameraController;\r\n\r\n private options!: IMahalMapOptions;\r\n\r\n private constructor() {}\r\n\r\n static create(\r\n options: IMahalMapOptions,\r\n maplibreObject?: { Map: typeof MapType } | typeof MapType,\r\n ) {\r\n if (MahalMap.instance) return MahalMap.instance;\r\n\r\n const globalMaplibre = (window as any).maplibregl;\r\n const maplibre = globalMaplibre || maplibreObject;\r\n\r\n if (!maplibre) {\r\n throw new Error(\r\n \"[MahalMap SDK] MapLibre GL не найден. Передай его вторым аргументом или подключи через script.\",\r\n );\r\n }\r\n\r\n const finalStyle = options.autoAddVectorSource\r\n ? VECTOR\r\n : options.style\r\n ? options.style\r\n : options.theme === \"dark\"\r\n ? defaultStyles.dark\r\n : defaultStyles.light;\r\n\r\n const instance = new MahalMap();\r\n\r\n instance.options = options;\r\n instance.maplibre = maplibre;\r\n instance.map = new maplibre.Map({\r\n container: options.container || \"map\",\r\n style: finalStyle as string,\r\n center: options.center || [69.624024, 40.279687],\r\n zoom: options.zoom || 5,\r\n attributionControl: options.attributionControl !== false,\r\n });\r\n\r\n MahalMap.instance = instance;\r\n return instance;\r\n }\r\n\r\n static getInstance(): MahalMap {\r\n if (!MahalMap.instance) {\r\n throw new Error(\"[MahalMap SDK] Карта ещё не создана\");\r\n }\r\n return MahalMap.instance;\r\n }\r\n\r\n addMarker(marker: IMapMarker) {\r\n return addMarker(this.maplibre, this.map, marker);\r\n }\r\n init(map: MapType) {\r\n this.map = map;\r\n this.camera = new CameraController(map);\r\n }\r\n getCamera() {\r\n return this.camera;\r\n }\r\n\r\n getMap(): MapType {\r\n return this.map;\r\n }\r\n\r\n setStyle(theme: \"dark\" | \"light\") {\r\n this.map.setStyle(\r\n theme === \"dark\" ? defaultStyles.dark : defaultStyles.light,\r\n );\r\n }\r\n\r\n setCenter(center: [number, number]) {\r\n this.map.setCenter(center);\r\n }\r\n\r\n setZoom(zoom: number) {\r\n this.map.setZoom(zoom);\r\n }\r\n\r\n destroy() {\r\n this.map.remove();\r\n MahalMap.instance = null;\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport { BASE_URL } from \"@app/config/index\";\r\nimport { clearKey } from \"@app/lib\";\r\n\r\nexport const api = axios.create({\r\n baseURL: BASE_URL,\r\n});\r\n\r\napi.interceptors.request.use(\r\n (response) => response,\r\n (error) => {\r\n if (error.request?.status === 401) {\r\n clearKey();\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","export * from \"./utils\";\r\n","import { api } from \"@app/lib\";\r\n\r\nlet apiKey: string = \"\";\r\n\r\nfunction saveKey(param: string) {\r\n if (param === \"\") return;\r\n apiKey = param;\r\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${param}`;\r\n}\r\n\r\nfunction clearKey() {\r\n apiKey = \"\";\r\n api.defaults.headers.common[\"Authorization\"] = \"\";\r\n}\r\n\r\nconst getApiKey = () => apiKey;\r\n\r\nexport { saveKey, clearKey, getApiKey };\r\n","function debounce<F extends (...args: any[]) => Promise<any>>(\r\n fn: F,\r\n delay: number\r\n) {\r\n let timer: NodeJS.Timeout;\r\n\r\n return (...args: Parameters<F>): Promise<ReturnType<F>> => {\r\n if (timer) clearTimeout(timer);\r\n return new Promise((resolve) => {\r\n timer = setTimeout(async () => {\r\n const result = await fn(...args);\r\n resolve(result);\r\n }, delay);\r\n }) as Promise<ReturnType<F>>;\r\n };\r\n}\r\n\r\nexport { debounce };\r\n","import { api } from \"@app/lib\";\r\nimport type { ISearchParam, ISearch } from \"@app/types\";\r\n\r\nexport const searchPost = async (params: ISearchParam): Promise<ISearch[]> => {\r\n try {\r\n const response = await api.post(\"services/getAddress\", params);\r\n return response.data;\r\n } catch (error) {\r\n console.error(\"Ошибка при поиске адреса:\", error);\r\n throw error;\r\n }\r\n};\r\n","import { searchPost } from \"./api\";\r\nimport { IAdditionalParamType, ISearch, ISearchParam } from \"@app/types/index\";\r\nimport { debounce, getApiKey } from \"@app/lib\";\r\n// import { checkCoordinates } from \"@app/lib/index\";\r\n// import { REGEX } from \"@app/config\";\r\n\r\nasync function getSearch(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearch[]> {\r\n let searchData: ISearchParam = {\r\n text: param,\r\n token: token ? token : getApiKey(),\r\n ...additionalParam,\r\n };\r\n\r\n // if (param !== \"\") {\r\n // if (REGEX.test(param)) {\r\n // let coordinates = await checkCoordinates(param);\r\n // if (coordinates) {\r\n // searchData = {\r\n // lat: coordinates.lat ?? \"\",\r\n // lng: coordinates.lng ?? \"\",\r\n // };\r\n // }\r\n // } else {\r\n // searchData.text = param;\r\n // }\r\n // } else {\r\n // searchData.text = \"\";\r\n // }\r\n\r\n try {\r\n const res: ISearch[] = await searchPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nconst debouncedFn = debounce(getSearch, 500);\r\n\r\nasync function Search(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n) {\r\n return await debouncedFn(param, token, additionalParam);\r\n}\r\n\r\nexport { Search };\r\n","import { api, getApiKey } from \"@app/lib\";\r\n\r\nconst routingApi = async (param: number[][], token: string) => {\r\n try {\r\n const points: { lng: number; lat: number }[] = [];\r\n\r\n param.forEach((e) => {\r\n points.push({ lng: e[0], lat: e[1] });\r\n });\r\n const response = await api.post(\"services/getRoutes\", {\r\n points,\r\n token: token ? token : getApiKey(),\r\n });\r\n return response.data;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport { routingApi };\r\n","import { routingApi } from \"@lib/routing/api\";\r\nimport { geojsonPolyline } from \"@app/config/index\";\r\nimport type { IRoute } from \"@app/types/index\";\r\n\r\nasync function Router(\r\n param: number[][],\r\n typeData: string,\r\n token: string,\r\n): Promise<IRoute[]> {\r\n try {\r\n const res = await routingApi(param, token);\r\n\r\n if (!res?.data) return res;\r\n\r\n const data: IRoute[] = res.data;\r\n\r\n return data.map((route) => {\r\n const updated = { ...route };\r\n\r\n if (updated.route?.routes?.length) {\r\n updated.route.routes = updated.route.routes.map((r) => ({\r\n ...r,\r\n geometry:\r\n typeData === \"geojson\" && typeof r.geometry === \"string\"\r\n ? geojsonPolyline(r.geometry)\r\n : r.geometry,\r\n }));\r\n }\r\n\r\n return updated as IRoute;\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Router };\r\n","// Lib\r\nimport { MahalMap } from \"@lib/map\";\r\nimport { Search } from \"@lib/search\";\r\nimport { Router } from \"@lib/routing\";\r\nimport { MahalMapDefaultMarker } from \"@lib/controller\";\r\n\r\n// utils\r\nimport * as keyUtils from \"@app/lib/saveKey\";\r\n\r\nexport { MahalMap, Search, Router, keyUtils, MahalMapDefaultMarker };\r\n\r\nfunction loadKeyFromScriptUrl() {\r\n const scripts = document.getElementsByTagName(\"script\");\r\n for (const script of scripts) {\r\n if (script.src.includes(\"mahal_map.sdk.js\")) {\r\n const url = new URL(script.src);\r\n const apikey = url.searchParams.get(\"apikey\");\r\n if (apikey) return apikey;\r\n }\r\n }\r\n return \"\";\r\n}\r\nkeyUtils.saveKey(loadKeyFromScriptUrl());\r\n"],"mappings":"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","names":["BASE_URL","DARK","LIGHT","VECTOR","geojsonPolyline","encoded","points","index","len","lat","lng","b","shift","result","dlat","dlng","CameraController","map","zoom","smooth","bearing","pitch","is3D","options","createDefaultMarkerSvg","color","innerSvg","MahalMapDefaultMarker","props","el","svg","createDefaultMarkerSvg","addMarker","maplibregl","map","marker","defaultStyles","DARK","LIGHT","_MahalMap","options","maplibreObject","maplibre","finalStyle","VECTOR","instance","marker","addMarker","map","CameraController","theme","center","zoom","MahalMap","axios","api","axios","BASE_URL","response","error","clearKey","saveKey_exports","__export","clearKey","getApiKey","saveKey","apiKey","saveKey","param","api","clearKey","getApiKey","debounce","fn","delay","timer","args","resolve","result","searchPost","params","api","error","getSearch","param","token","additionalParam","searchData","getApiKey","searchPost","error","debouncedFn","debounce","Search","routingApi","param","token","points","e","api","getApiKey","err","Router","param","typeData","token","res","routingApi","route","updated","r","geojsonPolyline","error","loadKeyFromScriptUrl","scripts","script","apikey","saveKey"]}
1
+ {"version":3,"sources":["../src/app/config/constants.ts","../src/app/config/geojson-polyline.ts","../src/lib/controller/camera/index.ts","../src/lib/controller/markers/defaultMarkerSvg.ts","../src/lib/controller/markers/MahalMapDefaultMarker.ts","../src/lib/map/adapters/marker.adapter.ts","../src/lib/map/MahalMap.ts","../src/app/lib/axios/api/axios.ts","../src/app/lib/saveKey/index.ts","../src/app/lib/saveKey/utils.ts","../src/app/lib/debounce/index.ts","../src/lib/search/api.ts","../src/lib/search/utils.ts","../src/lib/routing/api.ts","../src/lib/routing/utils.ts","../src/index.ts"],"sourcesContent":["const BASE_URL = \"https://platform.mahal.tj/api/\";\r\nconst LATLNGREGEX =\r\n /^([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?)),\\s*([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?))$/;\r\nconst LNGLATREGEX =\r\n /^([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?)),\\s*([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?))$/;\r\n\r\nconst REGEX =\r\n /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\r\n\r\nconst DARK = \"https://mtile.gram.tj/custom-styles/dark-style.json\";\r\nconst LIGHT = \"https://mtile.gram.tj/custom-styles/mapstyle.json\";\r\nconst VECTOR =\r\n \"https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json\";\r\n\r\nexport { BASE_URL, LATLNGREGEX, LNGLATREGEX, REGEX, DARK, LIGHT, VECTOR };\r\n","function geojsonPolyline(encoded: string): number[][] {\r\n let points = [];\r\n let index = 0,\r\n len = encoded.length;\r\n let lat = 0,\r\n lng = 0;\r\n\r\n while (index < len) {\r\n let b,\r\n shift = 0,\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlat = result & 1 ? ~(result >> 1) : result >> 1;\r\n lat += dlat;\r\n\r\n shift = 0;\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlng = result & 1 ? ~(result >> 1) : result >> 1;\r\n lng += dlng;\r\n\r\n points.push([lng * 1e-5, lat * 1e-5]);\r\n }\r\n\r\n return points;\r\n}\r\n\r\nexport { geojsonPolyline };\r\n\r\n// Пример использования:\r\n\r\n// geojsonPolyline(\"yzocFzynhVq}@n}@o}@nzD\")\r\n\r\n// Вернёт массив вида [\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ].\r\n","import type { Map, FlyToOptions } from \"maplibre-gl\";\r\n\r\nexport class CameraController {\r\n constructor(private map: Map) {}\r\n\r\n setZoom(zoom: number, smooth = true) {\r\n if (smooth) {\r\n this.map.easeTo({ zoom });\r\n } else {\r\n this.map.setZoom(zoom);\r\n }\r\n }\r\n\r\n setBearing(bearing: number, smooth = true) {\r\n smooth ? this.map.easeTo({ bearing }) : this.map.setBearing(bearing);\r\n }\r\n\r\n setPitch(pitch: number, smooth = true) {\r\n smooth ? this.map.easeTo({ pitch }) : this.map.setPitch(pitch);\r\n }\r\n\r\n toggle3D(is3D: boolean) {\r\n this.map.easeTo({\r\n pitch: is3D ? 60 : 0,\r\n bearing: is3D ? this.map.getBearing() : 0,\r\n duration: 800,\r\n });\r\n }\r\n\r\n resetNorth() {\r\n this.map.easeTo({\r\n bearing: 0,\r\n pitch: 0,\r\n duration: 600,\r\n });\r\n }\r\n\r\n flyTo(options: FlyToOptions) {\r\n this.map.flyTo({\r\n speed: 1.2,\r\n curve: 1.42,\r\n essential: true,\r\n ...options,\r\n });\r\n }\r\n\r\n getPitch() {\r\n return this.map.getPitch();\r\n }\r\n}\r\n","const createDefaultMarkerSvg = (color: string, innerSvg?: string) => `<svg\r\n width=\"50\"\r\n height=\"62\"\r\n viewBox=\"0 0 50 62\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g filter=\"url(#filter0_d_367_31358)\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M25 2C36.598 2 46 11.402 46 23C46 33.1603 38.7844 41.6353 29.198 43.5803L25.6524 48.6575C25.5788 48.7633 25.4812 48.8497 25.3676 48.9093C25.254 48.9689 25.128 49 25 49C24.872 49 24.746 48.9689 24.6324 48.9093C24.5188 48.8497 24.4212 48.7633 24.3476 48.6575L20.802 43.5803C11.2156 41.6353 4 33.1603 4 23C4 11.402 13.402 2 25 2Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n />\r\n </g>\r\n <path\r\n d=\"M25 51C27.7614 51 30 53.2386 30 56C30 58.7614 27.7614 61 25 61C22.2386 61 20 58.7614 20 56C20 53.2386 22.2386 51 25 51Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <g clip-path=\"url(#clip0_367_31358)\">\r\n ${innerSvg ?? \"\"}\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_367_31358\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"50\"\r\n height=\"55\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feOffset dy=\"2\" />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.250234 0 0 0 0 0.660089 0 0 0 0 0.488619 0 0 0 0.24 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_367_31358\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_367_31358\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath id=\"clip0_367_31358\">\r\n <rect\r\n width=\"22\"\r\n height=\"22\"\r\n fill=\"white\"\r\n transform=\"translate(14 12)\"\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>`;\r\n\r\nexport { createDefaultMarkerSvg };\r\n","import { createDefaultMarkerSvg } from \"./defaultMarkerSvg\";\r\nimport type { MahalMapDefaultMarkerProps } from \"@app/types\";\r\n\r\nclass MahalMapDefaultMarker {\r\n private element: HTMLElement;\r\n\r\n constructor(private props: MahalMapDefaultMarkerProps) {\r\n this.element = this.createElement();\r\n }\r\n\r\n private createElement(): HTMLElement {\r\n const el = document.createElement(\"div\");\r\n el.style.cursor = \"pointer\";\r\n\r\n const svg = this.props.svg\r\n ? this.applyColorToCustomSvg(this.props.svg)\r\n : createDefaultMarkerSvg(\r\n this.props.color ?? \"#278960\",\r\n this.props.innerSvg,\r\n );\r\n\r\n el.innerHTML = svg;\r\n\r\n if (this.props.draggable) {\r\n el.draggable = true;\r\n }\r\n\r\n return el;\r\n }\r\n\r\n private applyColorToCustomSvg(svg: string): string {\r\n if (!this.props.color) return svg;\r\n return svg.replace(/fill=\"[^\"]*\"/g, `fill=\"${this.props.color}\"`);\r\n }\r\n\r\n getElement() {\r\n return this.element;\r\n }\r\n\r\n getCoordinates() {\r\n return this.props.coordinates;\r\n }\r\n\r\n isDraggable() {\r\n return !!this.props.draggable;\r\n }\r\n\r\n getAnchor() {\r\n return this.props.anchor || \"center\";\r\n }\r\n}\r\n\r\nexport { MahalMapDefaultMarker };\r\n","import type { Map } from \"maplibre-gl\";\r\nimport type { IMapMarker } from \"@app/types\";\r\n\r\nexport function addMarker(maplibregl: any, map: Map, marker: IMapMarker) {\r\n const mapMarker = new maplibregl.Marker({\r\n element: marker.getElement(),\r\n draggable: marker.isDraggable?.() ?? false,\r\n anchor: marker.getAnchor?.() ?? \"center\",\r\n })\r\n .setLngLat(marker.getCoordinates())\r\n .addTo(map);\r\n\r\n return mapMarker;\r\n}\r\n","import type { Map as MapType } from \"maplibre-gl\";\r\nimport { DARK, LIGHT, VECTOR } from \"@app/config\";\r\nimport { CameraController } from \"@lib/controller\";\r\n\r\nimport type { IMahalMapOptions, IMapMarker } from \"@app/types\";\r\n\r\n// Adapter\r\nimport { addMarker } from \"../map/adapters\";\r\n\r\nconst defaultStyles = { dark: DARK, light: LIGHT };\r\n\r\nexport class MahalMap {\r\n private static instance: MahalMap | null = null;\r\n\r\n private isReady = false;\r\n private readyCallbacks: Array<(map: MapType) => void> = [];\r\n\r\n private map!: MapType;\r\n private maplibre!: typeof import(\"maplibre-gl\");\r\n private camera!: CameraController;\r\n\r\n private options!: IMahalMapOptions;\r\n\r\n private constructor() {}\r\n\r\n static create(\r\n options: IMahalMapOptions,\r\n maplibreObject?: { Map: typeof MapType } | typeof MapType,\r\n ) {\r\n if (MahalMap.instance) return MahalMap.instance;\r\n\r\n const globalMaplibre = (window as any).maplibregl;\r\n const maplibre = globalMaplibre || maplibreObject;\r\n\r\n if (!maplibre) {\r\n throw new Error(\r\n \"[MahalMap SDK] MapLibre GL не найден. Передай его вторым аргументом или подключи через script.\",\r\n );\r\n }\r\n\r\n const finalStyle = options.autoAddVectorSource\r\n ? VECTOR\r\n : options.style\r\n ? options.style\r\n : options.theme === \"dark\"\r\n ? defaultStyles.dark\r\n : defaultStyles.light;\r\n\r\n const instance = new MahalMap();\r\n\r\n instance.options = options;\r\n instance.maplibre = maplibre;\r\n instance.map = new maplibre.Map({\r\n container: options.container || \"map\",\r\n style: finalStyle as string,\r\n center: options.center || [69.624024, 40.279687],\r\n zoom: options.zoom || 5,\r\n attributionControl: options.attributionControl !== false,\r\n });\r\n\r\n instance.map.on(\"load\", () => {\r\n instance.isReady = true;\r\n\r\n instance.camera = new CameraController(instance.map);\r\n\r\n instance.readyCallbacks.forEach((cb) => cb(instance.map));\r\n instance.readyCallbacks = [];\r\n });\r\n\r\n MahalMap.instance = instance;\r\n return instance;\r\n }\r\n\r\n static onReady(callback: (map: MapType) => void) {\r\n const instance = MahalMap.instance;\r\n\r\n if (!instance) {\r\n throw new Error(\"[MahalMap SDK] Карта ещё не создана\");\r\n }\r\n\r\n if (instance.isReady) {\r\n callback(instance.map);\r\n } else {\r\n instance.readyCallbacks.push(callback);\r\n }\r\n }\r\n\r\n static getInstance(): MahalMap {\r\n if (!MahalMap.instance) {\r\n throw new Error(\"[MahalMap SDK] Карта ещё не создана\");\r\n }\r\n return MahalMap.instance;\r\n }\r\n\r\n addMarker(marker: IMapMarker) {\r\n return addMarker(this.maplibre, this.map, marker);\r\n }\r\n init(map: MapType) {\r\n this.map = map;\r\n this.camera = new CameraController(map);\r\n }\r\n getCamera() {\r\n return this.camera;\r\n }\r\n\r\n getMap(): MapType {\r\n return this.map;\r\n }\r\n\r\n setStyle(theme: \"dark\" | \"light\") {\r\n this.map.setStyle(\r\n theme === \"dark\" ? defaultStyles.dark : defaultStyles.light,\r\n );\r\n }\r\n\r\n setCenter(center: [number, number]) {\r\n this.map.setCenter(center);\r\n }\r\n\r\n setZoom(zoom: number) {\r\n this.map.setZoom(zoom);\r\n }\r\n\r\n destroy() {\r\n this.map.remove();\r\n MahalMap.instance = null;\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport { BASE_URL } from \"@app/config/index\";\r\nimport { clearKey } from \"@app/lib\";\r\n\r\nexport const api = axios.create({\r\n baseURL: BASE_URL,\r\n});\r\n\r\napi.interceptors.request.use(\r\n (response) => response,\r\n (error) => {\r\n if (error.request?.status === 401) {\r\n clearKey();\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","export * from \"./utils\";\r\n","import { api } from \"@app/lib\";\r\n\r\nlet apiKey: string = \"\";\r\n\r\nfunction saveKey(param: string) {\r\n if (param === \"\") return;\r\n apiKey = param;\r\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${param}`;\r\n}\r\n\r\nfunction clearKey() {\r\n apiKey = \"\";\r\n api.defaults.headers.common[\"Authorization\"] = \"\";\r\n}\r\n\r\nconst getApiKey = () => apiKey;\r\n\r\nexport { saveKey, clearKey, getApiKey };\r\n","function debounce<F extends (...args: any[]) => Promise<any>>(\r\n fn: F,\r\n delay: number\r\n) {\r\n let timer: NodeJS.Timeout;\r\n\r\n return (...args: Parameters<F>): Promise<ReturnType<F>> => {\r\n if (timer) clearTimeout(timer);\r\n return new Promise((resolve) => {\r\n timer = setTimeout(async () => {\r\n const result = await fn(...args);\r\n resolve(result);\r\n }, delay);\r\n }) as Promise<ReturnType<F>>;\r\n };\r\n}\r\n\r\nexport { debounce };\r\n","import { api } from \"@app/lib\";\r\nimport type { ISearchParam, ISearch } from \"@app/types\";\r\n\r\nexport const searchPost = async (params: ISearchParam): Promise<ISearch[]> => {\r\n try {\r\n const response = await api.post(\"services/getAddress\", params);\r\n return response.data;\r\n } catch (error) {\r\n console.error(\"Ошибка при поиске адреса:\", error);\r\n throw error;\r\n }\r\n};\r\n","import { searchPost } from \"./api\";\r\nimport { IAdditionalParamType, ISearch, ISearchParam } from \"@app/types/index\";\r\nimport { debounce, getApiKey } from \"@app/lib\";\r\n// import { checkCoordinates } from \"@app/lib/index\";\r\n// import { REGEX } from \"@app/config\";\r\n\r\nasync function getSearch(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearch[]> {\r\n let searchData: ISearchParam = {\r\n text: param,\r\n token: token ? token : getApiKey(),\r\n ...additionalParam,\r\n };\r\n\r\n // if (param !== \"\") {\r\n // if (REGEX.test(param)) {\r\n // let coordinates = await checkCoordinates(param);\r\n // if (coordinates) {\r\n // searchData = {\r\n // lat: coordinates.lat ?? \"\",\r\n // lng: coordinates.lng ?? \"\",\r\n // };\r\n // }\r\n // } else {\r\n // searchData.text = param;\r\n // }\r\n // } else {\r\n // searchData.text = \"\";\r\n // }\r\n\r\n try {\r\n const res: ISearch[] = await searchPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nconst debouncedFn = debounce(getSearch, 500);\r\n\r\nasync function Search(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n) {\r\n return await debouncedFn(param, token, additionalParam);\r\n}\r\n\r\nexport { Search };\r\n","import { api, getApiKey } from \"@app/lib\";\r\n\r\nconst routingApi = async (param: number[][], token: string) => {\r\n try {\r\n const points: { lng: number; lat: number }[] = [];\r\n\r\n param.forEach((e) => {\r\n points.push({ lng: e[0], lat: e[1] });\r\n });\r\n const response = await api.post(\"services/getRoutes\", {\r\n points,\r\n token: token ? token : getApiKey(),\r\n });\r\n return response.data;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport { routingApi };\r\n","import { routingApi } from \"@lib/routing/api\";\r\nimport { geojsonPolyline } from \"@app/config/index\";\r\nimport type { IRoute } from \"@app/types/index\";\r\n\r\nasync function Router(\r\n param: number[][],\r\n typeData: string,\r\n token: string,\r\n): Promise<IRoute[]> {\r\n try {\r\n const res = await routingApi(param, token);\r\n\r\n if (!res?.data) return res;\r\n\r\n const data: IRoute[] = res.data;\r\n\r\n return data.map((route) => {\r\n const updated = { ...route };\r\n\r\n if (updated.route?.routes?.length) {\r\n updated.route.routes = updated.route.routes.map((r) => ({\r\n ...r,\r\n geometry:\r\n typeData === \"geojson\" && typeof r.geometry === \"string\"\r\n ? geojsonPolyline(r.geometry)\r\n : r.geometry,\r\n }));\r\n }\r\n\r\n return updated as IRoute;\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Router };\r\n","// Lib\r\nimport { MahalMap } from \"@lib/map\";\r\nimport { Search } from \"@lib/search\";\r\nimport { Router } from \"@lib/routing\";\r\nimport { MahalMapDefaultMarker } from \"@lib/controller\";\r\n\r\n// utils\r\nimport * as keyUtils from \"@app/lib/saveKey\";\r\n\r\nexport { MahalMap, Search, Router, keyUtils, MahalMapDefaultMarker };\r\n\r\nfunction loadKeyFromScriptUrl() {\r\n const scripts = document.getElementsByTagName(\"script\");\r\n for (const script of scripts) {\r\n if (script.src.includes(\"mahal_map.sdk.js\")) {\r\n const url = new URL(script.src);\r\n const apikey = url.searchParams.get(\"apikey\");\r\n if (apikey) return apikey;\r\n }\r\n }\r\n return \"\";\r\n}\r\nkeyUtils.saveKey(loadKeyFromScriptUrl());\r\n"],"mappings":"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","names":["BASE_URL","DARK","LIGHT","VECTOR","geojsonPolyline","encoded","points","index","len","lat","lng","b","shift","result","dlat","dlng","CameraController","map","zoom","smooth","bearing","pitch","is3D","options","createDefaultMarkerSvg","color","innerSvg","MahalMapDefaultMarker","props","el","svg","createDefaultMarkerSvg","addMarker","maplibregl","map","marker","defaultStyles","DARK","LIGHT","_MahalMap","options","maplibreObject","maplibre","finalStyle","VECTOR","instance","CameraController","cb","callback","marker","addMarker","map","theme","center","zoom","MahalMap","axios","api","axios","BASE_URL","response","error","clearKey","saveKey_exports","__export","clearKey","getApiKey","saveKey","apiKey","saveKey","param","api","clearKey","getApiKey","debounce","fn","delay","timer","args","resolve","result","searchPost","params","api","error","getSearch","param","token","additionalParam","searchData","getApiKey","searchPost","error","debouncedFn","debounce","Search","routingApi","param","token","points","e","api","getApiKey","err","Router","param","typeData","token","res","routingApi","route","updated","r","geojsonPolyline","error","loadKeyFromScriptUrl","scripts","script","apikey","saveKey"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mahal_map",
3
- "version": "1.3.5",
3
+ "version": "1.3.6",
4
4
  "description": "mahal_map",
5
5
  "keywords": [
6
6
  "map",