yandex-map-react
Version:
Yandex map react
68 lines (51 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = loadApi;
var _fetchScript = require('./fetchScript');
var _fetchScript2 = _interopRequireDefault(_fetchScript);
var _configs = require('../../configs');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var loadPromise = void 0;
var enabledAPIParams = ['lang', 'apikey', 'coordorder', 'load', 'mode'];
var successCallbackName = '_$_api_success';
var errorCallbackName = '_$_api_error';
var defaultOptions = {
lang: 'ru_RU',
coordorder: 'latlong',
load: 'package.full',
mode: 'release',
ns: '',
onload: successCallbackName,
onerror: errorCallbackName
};
function generateURL(options) {
var params = Object.assign({}, defaultOptions);
Object.keys(options).filter(function (key) {
return enabledAPIParams.indexOf(key) !== -1;
}).forEach(function (key) {
params[key] = options[key];
});
var queryString = Object.keys(params).map(function (key) {
return key + '=' + params[key];
}).join('&');
return 'https://' + _configs.apiConfig.host + '/' + (options.version || _configs.apiConfig.version) + '/?' + queryString;
}
function loadApi(options) {
if (loadPromise) {
return loadPromise;
}
loadPromise = new Promise(function (resolve, reject) {
window[successCallbackName] = function (ymaps) {
resolve(ymaps);
window[successCallbackName] = null;
};
window[errorCallbackName] = function (error) {
reject(error);
window[errorCallbackName] = null;
};
(0, _fetchScript2.default)(generateURL(options));
});
return loadPromise;
}