Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/landing/provider/map/src/ |
Upload File : |
import {Type} from 'main.core'; import {BaseProvider} from './base_provider'; import {GoogleMap} from './google_map'; import {YandexMap} from './yandex_map'; import 'ui.fonts.opensans'; import './css/style.css' export class Map { static +PROVIDERS = { google: GoogleMap, yandex: YandexMap, }; static +DEFAULT_PROVIDER = 'google'; static +DATA_ATTRIBUTE = 'mapProvider'; /** * If API not loaded already - create schedule * @type {{}} */ static scheduled = {}; constructor() { } /** * Create map provider for current node * @param node * @param options * @return {*} */ static create(node: HTMLElement, options: {}): BaseProvider { // handler for load api options.onApiLoaded = Map.onApiLoaded; // get provider code let providerCode = node.dataset[Map.DATA_ATTRIBUTE]; if ( !providerCode || Object.keys(Map.PROVIDERS).indexOf(providerCode) === -1 ) { providerCode = Map.DEFAULT_PROVIDER; } // init or set to schedule const provider = new (Map.PROVIDERS[providerCode])(options); if (provider.isApiLoaded()) { provider.init(); } else { if (!Type.isArray(Map.scheduled[provider.getCode()])) { Map.scheduled[provider.getCode()] = []; } Map.scheduled[provider.getCode()].push(provider); } return provider; } static onApiLoaded(providerCode: string) { if (Type.isArray(Map.scheduled[providerCode])) { Map.scheduled[providerCode].forEach(provider => { provider.init(); }); } } }